《软件工程基础教案 吕云翔 第1--13章 软件与软件工程--- 软件维护与软件工程管理.docx》由会员分享,可在线阅读,更多相关《软件工程基础教案 吕云翔 第1--13章 软件与软件工程--- 软件维护与软件工程管理.docx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、程称 课名软件工程基础程号 课编授课时间专业及 班级修课 人数总学时48+32学分4课程类 型必修课公共基础()专业(学科)基础课 (V )专业课 ()选修课专业限选课()专业任选课 ()全校任选课 ()授课方式理论课(V )实践课(V )学时分配课堂讲授48学时;实践环节 32 学时考核方式考试(J )考查()是否采用多媒体是是否采用双语否使用教材:(名称、作者、出版社及出版时间)吕云翔.软件工程基础(题库+微课视频版)M.北京:清华 大学出版社,2022教学参考书:(名称、作者、出版社及出版时间)1 . Roger S. Pressman, Bruce R. Maxim .软件工程:实践者
2、的研究方 法(原书 第9版),王林章,等译M.北京:机械工业出版社,20212 . Ian Sommerville .软件工程(原书第10版),彭鑫,等译M.北京:机械工业 出版社,20183 .吕云翔,赵天宇.UML面向对象分析、建模与设计(第2版)-微课视频版 M.北京:清华大学出版社,20214 .吕云翔,黎可为,张中基.软件工程项目化教程M.北京:清华大学出版 社,2023教研室 审查意 见(2)成本一一效益分析开发成本运行费用经济效益(3)货币的时间价值(4)投资回收期(5)纯收入三.可行性研究的步骤一个典型的可行性研究的步骤可以归结为以下 几步:明确系统的目标、分析研究现行系统、设
3、计 新系统的高层逻辑模型、获得并比较可行的方案、 撰写可行性研究报告(图4-1) 四.可行性研究实例 五.制订项目开发计划项目开发计划主要包括:项目概述、实施计 戈1、人员组织及分工、交付期限思考题 和作业P71习题、P72习题扩展阅读无章节名称第5章结构化分析(1)课次1 (总第5次)课时2授课形式理论课案例讨论课口实验课口习题课口其他口教学目的及 要求 了解需求分析的任务和原则熟悉进行需求分析的步骤和方法 了解需求管理 熟悉需求分析的常用方法 了解软件原型教学重点熟悉需求分析的步骤、方法教学难点需求分析、结构化分析环节/时间授课内容教学 方法课程导入10分钟引入需求分析讲授正式授课 80分
4、钟一.需求分析1 .需求分析的任务和原则2 .需求分析的步骤(1)需求获取收集并明确用户需求,获取需求的方法有多种。问卷调查访谈实地操作建立原型(2)分析建模模型是为了理解事物而对事物做出的一种抽象,通 常由一组符号和组织这些符号的规则组成。(3)需求描述需求描述就是编制需求分析阶段的文档,一般包 括三个文档:系统定义文档(用户需求报告)、系统需 求文档(系统需求规格说明书)、软件需求文档(软件 需求规格说明书)(图5-2)。(4)需求验证与评审3 .需求管理有效需求管理的关键在于维护需求的明确阐述、 每种需求类型所使用的属性,以及与其他需求和其他 项目之间的可追踪。4 .需求分析的常用方法(
5、1)功能分解方法(2)结构化分析方法(3)信息建模方法(4)面向对象的分析方法5 .软件原型软件原型是指在项目的前期阶段,系统分析人员根 据对客户需求的理解和客户希望实现的结果,快速地给 出一个翔实的产品雏形二.结构化分析概述1 .建立当前系统的“具体模型”2 .抽象出当前系统的逻辑模型3 .建立目标系统的逻辑模型4 .考虑人机界面和其他一些问题讲授思考题 和作业无扩展阅读无章节名称第5章结构化分析(2)课次1 (总第6次)课时2授课形式理论课案例讨论课口实验课口习题课口其他口教学目的及 要求掌握结构化分析的几种常用建模方法掌握结构化分析的几种图形工具教学重点掌握结构化分析教学难点结构化分析环
6、节/时间授课内容教学方 法课程导入10分钟回顾上节课需求分析内容讲授三.结构化分析方法结构化分析实质上是一种创建模型的活动(图 5-6)1 .功能建模功能建模是用抽象模型的概念,按照软件内部 数据传递和变换的关系,自顶向下逐层分解,直到能 够构建满足功能要求的可实现的软件为止(1)数据流图的表示符号4种表示符号,外部实体、数据流、数据变换、数据存储(表5-1)(2)环境图环境图仅包含一个数据处理过程,即要开发 的目标系统。环境图的作用是确定系统在其环境 中的位置,通过确定系统的输入和输出与外部实 体的关系确定其边界(图5-7、图5-8)(3)数据流图的分解结合图5-9、图5-10、图5-11讲
7、授分解的流 程2 .数据建模数据建模是在较高的抽象层次上对数据库结构 进行建模,数据模型用E-R图来描述正式授课80分钟E-R图以实体、关系和属性3个基本概念概括 讲授+演 数据的基本结构。实体是现实世界的事物,多用矩 示 形框表示。属性多用椭圆形表示,关系用菱形表示。 实体之间存在一对一、一对多、多对多三种关系类 型,结合图5-12、图5-13、图5-14中的具体例子进 行讲授 3 .行为建模状态转换图是一种描述系统对内部或外部事件 响应的行为模型,描述系统状态、事件和事件引发 系统在状态之间的转换(1)状态及状态转换状态是任何可以被观察到的系统行为模式,规 定了系统对事件的响应方式,结合图
8、5-15进行状态 转换图的讲授(2)事件事件是在某个特定时刻发生的事情,状态转换 通常是由事件触发的,在这种情况下应在表示状态 转换的箭头线上标出触发转换的事件表达式(3)例子结合图5-16演示图书馆管理系统的例子4 .数据字典数据字典以一种系统化的方式定义在分析模型 中出现的数据对象及控制信息的特性,给出它们的准确定义,包括数据流、数据存储、数据项、数据 加工,以及数据源点、数据汇点等(表5-2)。5.加工规格说明在对数据流图的分解中,位于最底层数据流图 的数据处理,称为基本加工,对于每一个基本加工 都需要进一步说明,称为加工规格说明,一般用结 构化语言、判定表和判定树来表述(结合图5-17
9、、 图5-18讲授)四.结构化分析的图形工具图形工具包括层次方框图、Warnier图和IPO 图,结合图5-19、图5-20、图5-21、图5-22讲授 五.结构化分析实例结合图5-23、图5-24、图5-25、图5-26对培 训机构入学管理系统进行结构化分析和演示思考题 和作业P97习题、P98习题、P99习题扩展阅读无课次2 (总第1次)课时4授课形式理论课案例讨论课口实验课口习题课口其他口教学目的 及要求 了解软件设计评判指标 了解软件设计中过程设计,接口设计,体系结构设计以及 数据设计四个过程教学重点 如何实现体系结构设计 如何实现用户界面设计 如何实现数据设计和接口设计教学难点模块划
10、分和接口定义环节/时间授课内容教学方法课程导入 20分钟设计是将用户需求转变为软件构建蓝图的过程, 在软件开发过程中处于核心地位。一、评判设计优良的标准软件设计追求使用抽象和逐步求精的方式实 现高内聚,低耦合的模块划分,并遵循信息隐藏 的原则,使已有设计能更灵活,更具有可复用性。 二、软件设计的分类软件设计包括数据设计,体系结构设计,接口 设计,构件设计,部署设计五个部分。讲授章节名称第6章结构化设计三、数据库结构设计1、数据库概念结构设计具体介绍数据库的概念结构描述了系统最基础的数据 结构,独立于特定的数据库系统。2、数据库逻辑结构介绍数据库的逻辑结构在概念结构的基础上进一 步接近具体实现,
11、提供了比较接近数据库内部构 造的逻辑描述。3、范式介绍数据库设计中为避免异常和冗余应遵循的规 范,包括三类范式:1)第一范式:所有关系中的每一个分量都必须 是不可分的数据项。第一范式是建立关系数据表 的最基本的要求。2)第二范式:满足第一范式的条件,并且每个非 键属性都由整个键决定3)第三范式:满足第二范式的条件,并且每个非 键属性不依赖于其他非键属性。四、用户界面设计1、目标用户群体分析讲授在功能设计之前必须明确软件所针对的主要 正式授课 用户群体及其特征,符合用户特征的界面设计才 160分钟能带来良好的用户体验2、设计应规范,可用,易用设计应遵循平台的设计规范;设计的界面对用 户来说应易于
12、使用。3、界面应简洁,清晰,一致,并具有容错用户界面设计应考虑功能重要性,采用层次化 设计突出重要功能,避免罗列堆叠。界面之间应 该具有一致的风格,应用应对用户操作具有容错 性。五、体系结构设计1、面向数据流的设计根据应用中数据流通的途径对应用的系统结 构进行划分与建模。2、面向数据结构的设计根据数据结构设计程序处理过程的方法,也就 是面向数据结构的设计方法按输入、输出以及计 算机内部存储信息的数据结构进行软件结构设 计。六、接口设计1、介绍外部接口,内部接口概念本系统和外界所有接口的安排,包括软件和硬 件之间的接口、本系统和支持软件之间的接口关系。正式授课 160分钟2、用户接口设计理念1)
13、三条“黄金原则”将控制权交给用户;减少用户的记忆负担; 界面保持一致2)界面设计过程界面设计是一个迭代的活动,包括以下六点 核心活动:创建系统功能的外部模型;确定为 完成此系统功能,人和计算机应分别完成的任 务;考虑界面设计中的典型问题;借助CASE 工具构造界面原型;实现设计模型;评估界面 质量。界面设计过程中设计四个模型:设计模型; 用户模型;系统假想;系统映像。3)界面设计问题系统设计时应考虑:系统响应时间;用户求 助机制;出错信息;键盘命令等四个问题。4) UX设计与UI设计UX (用户体验设计)与具体的视觉或模型无 关,着眼于宏观方面整个服务流程,致力于提 高用户与企业各方面互动质量
14、,创造可用、高 效、相关、简单、全方位的愉悦体验。UI (用户界面设计)决定产品的视觉外观, 确保产品的用户界面尽可能直观。讲授思考题 和作业什么是模块、模块化?软件设计为什么要模块化?为什么说“高内聚、低耦合”的设计有利于提高系统的独立 性?扩展阅读余春龙.软件架构设计:大型网站技术架构与业务架构融合之 道.电子工业出版社,2019课次1 (总第1次)课时2授课形式理论课案例讨论课口实验课口习题课口其他口教学目的 及要求 了解软件的概念、特点及主要分类 了解软件危机的表现及其产生原因 掌握软件工程的概念,以及软件工程的基本原则 了解软件开发的方法 了解与软件开发项目相关的常用工具 了解软件工
15、程人员的职业道德教学重点教授软件开发的方法教授软件工程人员的职业道德教学难点无环节/时间授课内容教学方 法课程导入 10分钟一.软件计算机软件是由专业人员开发并长期维护的软件 产品。完整的软件产品包括了在各种不同容量和体系 结构计算机上的可执行的程序,运行过程中产生的各 种结果,以及以硬拷贝和电子表格等多种方式存在的 软件文档。二.软件危机(略讲)讲授章节名称第1章软件与软件工程章节名称第7章面向对象方法与UML课次3(总第3次)课时6授课形式理论课案例讨论课口实验课口习题课口其他口教学目的 及要求 掌握面向对象的基本概念 理解面向对象软件工程的特征与优势 掌握面向对象的实施步骤 了解统一建模
16、语言UML 熟悉UML的九种图教学重点 面向对象设计思想的培养 UML的理解与掌握教学难点掌握面向对象设计思想环节/时间授课内容教学方法课程导入 30分钟一、面向对象的基本概念1、面向对象是指:按照人们认识客观世界的系统 思维方式,采用基于对象的概念建立模型,模拟 客观世界分析、设计、实现软件的办法。面向对象涉及的概念包括:对象:现实世界中各种各样的实体具有自己的 属性和行为类:具有相似内部状态和运动规律的实体的集 合与抽象。消息:对象之间相互联系和相互作用的方式类具有以下七点特性:抽象、继承、封装、多 态、重写、包、包的接口类。讲授二、统一建模语言UML1、UML简述UML是一种通用的可视化
17、建模语言,用来描 述、可视化、构造、和文档化软件密集型系统的 各种工作。2、UML特点1)统一标准:UML提供了标准的面向对象的模 型元素的定义和表示方法,并已经成为OMG的 标准正式授课240分钟2)面向对象:UML提供了表述模型元素的图形 与方法讲授3)可视化,表达能力强大:系统的逻辑模型或实 现模型都可以用相应的图形清晰表示。4)独立于过程:UML是系统建模语言,独立于 开发过程5)容易掌握与使用6)与现有开发语言(如JAVA, C+等)良好结 合3、UML的图1)用例图对系统提供的功能的描述2)静态图描述系统的静态结构,包括类图、对象图、包图。3)行为图描述系统的动态模型和组成对象之间
18、的交互 关系。其中的状态图描述类的对象的有可能的状 态以及事件发生时状态的转移条件。4)交互图交互图描述对象之间的交互关系。其中顺序图 描述对象之间的动态合作关系,协作图描述对象 之间的协作关系。5)实现图实现图提供关于系统实现方面的信息。其中构 建图描述代码构建的物理结构以及构建之间的 依赖关系。部署图用于定义系统中软硬件的物理 体系结构。三、静态建模机制UML的静态建模机制包括用例图、类图、对象 图、包图等。1、用例图讲授用例图从用户的角度描述系统的功能,由用 例,参与者,以及他们的关系连线组成。此图从 正式授课 用户角度描述系统的行为,使用人型符号表示参 240分钟 与者并唯一命名,使用
19、椭圆形表示用例,参与者 和用例之间使用带箭头的实线连接。用例之间有三种关系:1)包含关系提取出多个用例的共同特征,用例包含其公有 特征2)拓展关系用例的异常行为和分支可作为拓展用例3)泛化关系2、类图和对象图类图使用类描述系统的结构,展示了系统中类 的静态结构,即类与类之间的相互关系。对象图是类图的实例,它展示了系统在某一时 刻的快照。类与类之间的关系有关联、依赖、泛化、实现 等。3、包图包图是用于描述模型中的包和其所包含元素 的组织方式的图。包图通过对途中的各个包元素 以及包之间关系的描述,展示出系统的模块,以 及模块之间的依赖关系正式授课 240分钟四、动态建模机制系统中的对象在执行期间的
20、不同时间点如何 通信以及通信结果如何,这就是系统的动态行为 1、顺序图表示完成某项行为的对象和这些对象之间传 递消息的时间顺序。顺序图由对象、生命线、控 制焦点、消息等组成。2、协作图用于显示系统的动作协作,类似于顺序图中的 交互片段,但协作图也显示对象之间的关系。3、状态图描述对象对外部对象响应的历史状态序列,即 描述对象所后可能的状态,以及那些事件将导致 状态的变化。4、活动图活动图中的活动是展示整个计算步骤的控制 流(及其操作)的节点和流的图。五、描述物理架构1、架构图架构图根据系统的代码构建显示系统代码的 物理结构。其中的构建可以是源代码构建、二进 制构建或可执行构建。2、部署图部署图
21、用于显示系统中硬件和软件的物理结 构,可以显示实际中的计算机和设备,以及它们 之间的互联关系。讲授思考题 和作业为什么面向对象能更真实地反映客观世界?与传统的软件工程相比,面向对象的软件工程方法有什么优 点?扩展阅读Larman.UML和模式应用.机械工业出版社.2006章节名称第8章面向对象分析课次3 (总第6次)课时6授课形式理论课案例讨论课口实验课口习题课口其他口教学目的 及要求 理解面向对象分析的过程和原则掌握面向对象建模的三种模型教学重点对象模型的建立动态模型的建立功能模型的建立教学难点面向对象设计思想的理解环节/时间授课内容教学方法课程导入 30分钟一、面向对象分析方法1、面向对象
22、分析过程面向对象分析主要以用例模型为基础。开发人 员在原始需求的基础上,通过构建用例模型从而 得到系统的需求,在通过对用例模型的完善来改 善需求。1)确定系统的外部参与人员2)确定系统的用例3)划分目标系统中的类与对象4)识别对象之间的动态交互行为5)将需求分析的结构用多种模型图表示出来2、面向对象分析原则1)定义有实际意义的对象2)模型的描述要规范、准确3)共享性4)封装性讲授二、建立对象模型对象模型描述了现实世界中的“类与对象”以 及他们之间的关系,表示了目标系统的静态数据 结构。在面向对象的分析中,一般都是先建立对 象模型,然后在建立动态模型和功能模型。对象 模型为建立动态模型和功能模型
23、提供了实质性 的框架1、对象模型的组成层次1)主体层用于划分主题,主题是将一组具有较强联系的 类组织在一起形成的类的聚合,具有以下三个特 点:主题是类的聚合,但主题自身不是一个类; 主体内部的类之间往往有内部联系;主题的划分 没有固定的规则主题的划分有以下两种方式:自底向上的划分 方式和自顶向下的划分方式。主题图:主题的划分结果可以形成一个完整的 类图和一个主题图。2)类与对象层建立对象模型首先需要确定所选的对象与类讲授正式授课候选的类与对象包括:可感知的物理实体;人240分钟 或组织的角色;应该记忆的事件;两个或多个事 件的相互作用;需要说明的概念;筛选候选对象与类的标准有:冗余,无关,笼
24、统,属性,操作,实现六点。3 )确定类与类之间的结构关系(如继承4)属性层确定应用的属性,属性的确定既与问题域有 关,也和目标系统的人物有关。应该只考虑有具 体应用直接相关的属性。表示属性的启发性准则如下:每个类至少需要 一个属性;属性取值必须适合类的所有实例;出 现在泛化关系中的类所继承的属性必须与泛化 关系一致;类的导出属性应当略去;应将描述类 的外部不可见状态的属性删去。5)服务层确定类中需要定义的服务。三、建立动态模型对象模型建立后,就需考察对象和关系的动态 变化情况,即建立动态模型。正式授课 240分钟1、编写脚本脚本描述用户与目标系统之间的一个或多个 典型的交互过程,以便对目标系统
25、的行为有更具 体的认识。2、设计用户界面确定用户界面的信息交换方式,快速建立用户 界面原型,供用户评价和修改。3、画UML顺序图或活动图4、画状态图四、建立功能模型功能模型表明了系统中数据之间的依赖关系, 以及有关的数据处理功能,它由一系列流程图组 成。建立功能模型的步骤如下:1、确定输入和输出值2、画数据流图3、定义服务讲授思考题 和作业请简述面向对象分析的远程 请简述面向对象分析的过程扩展阅读Grady Booch.面向对象分析与设计.电子工业出版社.2016课次1 (总第9次)课时2授课形式理论课案例讨论课口实验课口习题课口其他口教学目的 及要求 了解软件体系结构的定义和建模方法 熟悉典
26、型的软件体系结构风格 了解软件的质量属性 了解分布式系统结构 了解体系结构框架 了解软件系统的设计模式教学重点软件体系结构了解设计模式介绍教学难点理解和运用设计模式进行设计环节/时间授课内容教学方法课程导入10分钟一、软件体系结构的概念体系结构相当于一个系统的整体框架的草图, 描述系统组成的估价。软件体系结构对于一个软 件系统来说具有至关重要的作用。软件体系结构包括:软件的组成元素;这些元 素的外部可见特性;这些元素之间的相互关系。讲授章节名称第9章软件体系结构和设计模式二、典型的软件体系结构风格1、数据流风格数据到达时被激活处理工作,无数据时不工 作。2、调用/返回风格各个构件通过调用其他构
27、件和获得返回参数 来进行交流。3、独立构件风格通过对事件的发布和注册实现关联4、虚拟机风格创建了一种虚拟的环境,将用户与底层平台隔 离开来,或将高层抽象和底层实现隔离开来。5、仓库风格由表示当前数据状态的中心数据结构和一组 对中心数据进行操作的独立构建组成。三、分布式系统结构正式授课80分钟1、多处理器体系结构讲授系统同时运行许多进程,这些进程分布在不同 的处理器上。2、客户机/服务器体系结构1)服务器负责给其子系统提供服务2)客户机通常是独立的子系统,通过向服务器 请求约定的资源获取数据3)网络连接服务器和客户机3、分布式对象体系结构去掉客户机和服务器之间的差异,用分布式对 象体系结构来设计
28、系统。以降低服务器负荷,共 享网络资源;平衡分配计算任务到不同的主机, 从而提高系统的协同处理能力4、对等端体系结构所有分部的对等端根据需要既可以充当服务 器,又能充当客户机。5、代理用于构建包含隔离组件的软件系统,软件通过 远程服务进行交互。代理者负责协调通信。正式授课 80分钟四、软件系统的设计模式模式,就是指解决一类相似问题的方法论。1、工厂模式通过创建对象而不直接实例化对象的过程,使 得程序在判定给定条件的情况下更加灵活的创 建对象。2、桥接模式将不同的内容框架用抽象类定义,将变化的内 容用具体的子类分别实现。并且,将类的抽象与 实现分离,从而使两端都可以独立变化。3、策略模式把一系列
29、的算法封装为具有共同接口的类,将 算法的使用和算法本身分离讲授思考题 和作业软件体系结构的作用体现在哪些方面? 良好的软件体系结构设计有什么好处?扩展阅读刘伟.设计模式.清华大学出版社.2011正式授课 80分钟三.软件工程1 .软件工程的概念软件工程是以借鉴传统工程的原则、方法,以提高质 量、降低成本为目的,指导计算机软件开发和维护的工 程学科。2 .软件工程研究的内容(1)软件开发技术(2)软件开发过程管理3 .软件工程目标和原则(1)用分阶段的生命周期计划进行严格的管理(2)坚持进行阶段评审(3)实行严格的版本控制(4)采用现代程序设计技术(5)软件工程结果应能清楚地审查(6)开发小组的
30、人员应该少而精(7)承认不断改进软件工程实践的必要性四.软件开发方法1 .基本的软件开发方法(1)结构化方法:采用自顶向下、逐步求精的指导思 想,应用广泛,技术成熟(2)面向数据结构方法:从目标系统的输入、输出数 据结构入手,导出程序框架结构,再补充其他细节,就 可得到完整的程序结构图(3)面向对象方法:自底向上和自顶向下相结合,以 对象建模为基础,从而不仅考虑了输入、输出数据结 构,实际上也包括了所有对象的数据结构。(4)形式化方法2 .开源软件开发方法3 .群体化软件开发方法五.软件工程工具结合表1-1、表1-2讲解六.软件工程人员的职业道德(1)保护客户数据(2)知识产权(3)版权拥有权
31、(4)许可协议(5)道德问题解决方案(6)道德教育七.“小型网上书店系统”案例介绍讲授思考题 和作业P20习题、P21习题扩展阅读无章节名称第10章面向对象设计课次3 (总第1次)课时6授课形式理论课案例讨论课实验课口习题课口其他口教学目的 及要求 了解面向对象设计与结构化设计的不同 理解面向对象设计与面向对象分析的关系 理解面向对象设计的过程、原则和启发规则 熟悉面向对象系统分解方法 熟悉面向对象问题域、人机交互、任务管理和数据管理各 子系统的设计方法 掌握对象设计的方法教学重点一.面向对象设计的过程和原则1 .设计过程1)建立软件体系结构环境图。描述各系统的关系、接口等2)软件体系结构设计
32、。自顶向下等方式设计3)设计各个子系统。问题域子系统、人机交互子系统、任务 管理子系统和数据管理子系统4)对象设计及优化。细化对象类、接口与继承关系2 .设计原则1)模块化2)抽象化3)信息隐藏4)低耦合5)高内聚6)复用性3 .启发规则1)设计结果清晰易懂2)类深度适当3)尽量设计简单类4)使用简单的协议5)使用简单的操作6)降低设计变动概率二.系统设计1 .问题域子系统设计1)调整需求2)重用已有的类3)将问题域类组合在一起4)增添一般化类以建立公共协议接口5)调整继承层次2 .人机交互子系统设计1)安全/登录窗口。2)设置窗口。3)业务功能窗口4)对各类信息的报告3 .任务管理子系统设计
33、1)确定事件驱动型任务2)确定时钟驱动型任务3)确定优先任务和关键任务4)确定协调任务5)审查每个任务6)确定资源需求7)定义任务4.数据管理子系统设计1)设计数据格式。先设计第一范式,建立相应文件;再转化 成第三范式,建立关系数据库;最后扩展关系数据库途径,建 立面向对象数据库管理系统。2)设计服务。设计对象的存储、检索等服务。3)使用面向对象数据库进行数据管理设计。如存储、管理持 久对象等。三、对象设计1 .设计类中的服务1)从各类模型中确定服务2)设计相应的算法和数据结构,定义内部类和方法2 .设计类的关联1)单向关联实现。单指针引用2)双向关联实现。双指针引用或正向查找或新建独立关联对
34、 象3)链属性实现。3.对象设计优化1)确定优先级2)数据访问效率优化(1)冗余关联提高访问效率(2)查询次序调整(3)保留派生属性3)调整继承关系(1)具体到抽象再到具体(2)修改类定义以提高继承程度(3)利用组合关系实现行为共享教学难点对象设计的方法和实例应用环节/时间授课内容教学方法课程导入 10分钟面向对象设计的概念、意义讲授正式授课 80分钟一.面向对象设计的过程和原则二.系统设计讲授正式授课 90分钟三.对象设计讲授讨论课 90分钟“小型网上书店系统”软件设计说明书中分析 讨论系统设计、对象设计等讨论思考题 和作业P241习题扩展阅读Freeman, E. and Robson,
35、E. Head First Design Patterns M. 2020章节名称第11章软件实现课次1 (总第4次)课时2授课形式理论课案例讨论课实验课口习题课口其他口教学目的 及要求 了解编程语言的发展与分类 了解选择编程语言时所需考虑的因素 掌握良好的编程风格与编码规范 熟悉面向对象实现 了解代码重用 了解分析和评价代码的质量教学重点一、编程语言1.编程语言发展和分类1)机器语言2)汇编语言3)高级语言4)超高级语言了解流行语言 C、Python Java、C+、C#、JavaScript PHP 的 特征和应用2.选择编程语言需考虑的因素1)项目的应用范围2)用户的需求3)使用的软件开
36、发工具4)开发人员的喜好和能力5)软件的可移植性要求6)算法和数据结构的复杂性7)平台支持二、编码风格和规范1 .版权和版本声明1)版权信息2)文件名称、标识符、摘要3)当前版本号、作者/修改者、完成日期4)版本历史信息2 .程序版式如缩进、空格、空行、代码行最大长度等规则,增加代码可读性。3 .注释注释一般位于:1)版本、版权声明2)函数接口说明3)重要代码行或段落揭示注释规则:1)尽量精简2)准确、易懂,不能有二义性3)注释放在被描述的代码上方或右方4)代码较长时在段落结束处加注释4 .命名规则1)按照标识符的实际意义命名2)标识符尽可能短3)命名与开发工具或操作系统的风格保持一致4)变量
37、名不要过于相似5)注释解释变量命名6)不要出现仅靠大小写区分的标识符7)尽量避免出现数字编号5 .数据说明1)按照一定次序,如数据类型,说明类内数据2)说明同一语句中的相同类型变量时,按字母序排列3)添加必要注释说明复杂数据结构6 .语句构造1)不同语句分行写2)合理利用缩进体现层次结构3)复杂运算式中使用括号清晰表达运算顺序4)经常使用的代码段独立封装成函数或过程5)避免使用goto语句6)避免使用多层嵌套7)避免使用复杂的判定条件7 .输入输出1)对输入数据施行严格的数据检查,及时识别错误和异常2)简化输入的步骤、操作3)输入格式限制不要太严格4)允许默认输入5)交互式输入中要给予用户正确
38、的提示6)对输出数据添加注释7)输出数据遵循一定的格式8 .效率主要取决于使用的算法和数据结构,代码可由编译器优化。1)减少循环嵌套的层数2)循环结构改为嵌套结构3)简化算术和逻辑表达式,少用混合数据类型的运算4)避免使用多维数组和复杂的表三、面向对象实现面向对象方法的优点是通过重用提高软件的效率。因此,应该 优先选用能够最完善、准确地表达问题域语言的面向对象语言。类的实现为核心问题,主要涉及的技术有:类的封装和信息隐 藏、类继承、多态和重载、模板、持久保存对象、参数化类和异 常处理等。四、代码重用重用方式:1)源代码剪贴2)源代码包含3)继承开源代码重用,优点是缩减开发成本,提高开发效率;缺
39、点一 是开源许可证容易侵权,二是重用的代码难以及时更新,有安全 风险。五、分析和评价代码质量1 .可读性2 .可扩展性3 .灵活性4 .简洁性5 .可重用性6 .可测试性7 .可维护性教学难点面向对象具体实现环节/时间授课内容教学方 法课程导入10分钟编程语言的介绍和选择一.编程语言的发展(略讲)二.流行编程语言各自的特点和选择语言时所考虑的 因素讲授正式授课 50分钟三.编码风格和规范(略讲)四.面向对象实现(对照P259的具体实例讲解)五.代码重用六.代码质量分析和评价讲授实验课30分钟P269使用Visual Studio Code实现“小型网上书店系统”的 “用户登陆”模块实验思考题
40、和作业P269习题扩展阅读无章节名称第12章软件测试课次3 (总第5次)课时6授课形式理论课案例讨论课实验课口习题课口其他口教学目的 及要求 掌握软件测试的原则 了解软件测试的常用模型 了解软件测试的分类 了解测试用例和测试用例设计方法 掌握等价类划分法;熟悉黑盒测试的其他方法 掌握逻辑覆盖法;熟悉白盒测试的其他方法 掌握软件测试的一般,以及每个阶段测试的关注点 了解回归测试、面向对象测试和自动化测试熟悉软件调试教学重点一、软件测试的基本概念软件测试是软件开发过程中的重要阶段,用来保证软件产品的 稳定性、安全性、一致性、完全性等要求,从而保证软件质量, 软件测试工作应该贯穿整个开发过程。1.基
41、本原则1)完全测试是不可能的2)测试中存在风险和缺陷3)软件测试只能表明缺陷的存在,不能证明没有其他方面的缺陷4)潜在的错误数和发现的错误数成正比5)让不同测试人员参与测试6)开发小组和测试小组分立7)尽早不断测试,让测试工作贯穿开发过程8)设计测试用例时要包括输入数据和预期的输出结果两个部分,输入数据还应该包括非法情况9)集中测试容易出错或是出错较多的模块10)长期保留所有的测试用例,方便回归测试2.测试模型1) V模型。在编码后才进行测试工作,无法及时纠正错误2) W模型。测试与各个设计过程同步进行,局限是测试不能跨阶 段3) H模型。测试活动独立,与其他流程并行。二、软件测试分类1 .按
42、测试阶段分为单元、集成、系统、验收测试2 .按是否运行程序分为静态测试和动态测试3.三、测试用例为节省时间、资源,提高测试效率,应该挑选有代表性的或特殊 性的测试数据进行测试。9 .测试用例设计1)边界值分析2)等价类划分3)错误推测4)检查测试用例对程序的逻辑覆盖度5)因果图法10 测试用例场景描述每个经过测试用例可能的路径四、软件测试方法静态测试主要为人工审查代码,检测有效但是对测试人员要求 高。动态测试需要实际运行程序,主要分为白盒和黑盒测试 1.黑盒测试1)等价类划分法。将输入根据不同条件划分为若干子集,只取各 个子集中的部分输入测试。2)边界值分析法。取输入范围的边界值以及边界附近的
43、值进行测 试。3)错误推测法。主要靠直觉和经验,选择程序中可能的错误和容 易发生错误的特殊情况。4)因果图法和决策表法。考虑不同输入条件的组合,条件之间的 制约关系,条件与结果之间的逻辑关系。先根据程序规格说明书 划定可能的原因、结果,画出相应的因果图,再转化为决策表, 根据决策表的不同条件组合设计测试用例。5)场景法。对于有各种中间状态、事件的软件,可以根据程序执 行的基本流和各个备选流,生成不同的场景,对每个流程场景设 计相应的测试用例。11 白盒测试一般来说,采取先静态后动态的方式,先进行代码检查和静态 结构分析,再进行覆盖测试。覆盖测试是重点,应尽可能提高覆 盖率。不同测试阶段测试重点不同,需要白盒黑盒相结合进行测 试。1)代码检查法。根据设计文档和一般编码原则检查代码。2)静态结构分析。分析源代码的内部结构,各模块的逻辑关系, 如控制流分析、数据流分析、信息流分析、接口分析、表达式分 析等,进而找出错误。3)程序插桩技术。往被测试程序中插入输出等操作来了解变量、 语句的执行情况,从而查出错误。4)逻辑覆盖法和基本路径法。根据程序的流程图,设计测试用例, 以覆盖所有的执行路径或语句。五、分阶段测试1 .单元测试2 .集成测试3 .系统测试4 .验收测试5 .回归测试六、面向对象测试教学难点白盒、黑盒测试方法,面向对象测试环节/