课 程
名 称
软件工程基础
课 程
编 号
授 课 时 间
专 业 及
班 级
修课
人数
总 学 时 48+16 学 分 4
必 修 课
公共基础
( )
专业(学科)基础课
( √ )
专业课
( )课 程 类
型
选 修 课
专业限选课
( )
专业任选课
( )
全校任选课
( )
授课方式 理论课 ( √ ) 实践课 ( √ )
学 时 分 配 课 堂 讲 授 4 8 学 时 ; 实 践 环 节 1 6 学 时
考 核 方 式 考 试 ( √ ) 考 查( )
是否采用多媒体 是 是否采用双语 否
使 用 教 材 : ( 名 称 、 作 者 、 出 版 社 及 出 版 时 间 )
吕 云 翔 . 软 件 工 程 基 础 与 应 用 ( 微 课 版 ) [M] . 北 京 : 人 民 邮 电
出 版 社 , 2026
教 学 参 考 书 : ( 名 称 、 作 者 、 出 版 社 及 出 版 时 间 )
[1] 吕云翔,黎可为,张中基. 软件工程项目化教程[M]. 北京:清华大学出版
社,2023
[2] 吕云翔,赵天宇. UML 与 Rose 建模实用教程(第 2 版 附微课视频)[M].
北京:人民邮电出版社,2024
教 研 室
审 查 意
见
章节名称 第 1 章 软件与软件工程
课次 1(总第 1 次) 课时 2
授课形式 理论课■ 案例讨论课□ 实验课□ 习题课□ 其他□
教学目的
及要求
了解软件的概念、特点及主要分类
了解软件危机的表现及其产生原因
掌握软件工程的概念,以及软件工程的基本原则
了解软件开发的方法
了解与软件开发项目相关的常用工具
了解软件工程人员的职业道德
教学重点
教授软件开发的方法
教授软件工程人员的职业道德
教学难点 无
环节/时间 授课内容
教学方
法
课程导入
10 分钟
一. 软件
计算机软件是由专业人员开发并长期维护的软件
产品。完整的软件产品包括了在各种不同容量和体系
结构计算机上的可执行的程序,运行过程中产生的各
种结果,以及以硬拷贝和电子表格等多种方式存在的
软件文档。
二. 软件危机(略讲)
讲授
正式授课
80 分钟
三. 软件工程
1. 软件工程的概念
软件工程是以借鉴传统工程的原则、方法,以提高质
量、降低成本为目的,指导计算机软件开发和维护的
工程学科。
2. 软件工程研究的内容
(1)软件开发技术
(2)软件开发过程管理
3. 软件工程目标和原则
(1)用分阶段的生命周期计划进行严格的管理
(2)坚持进行阶段评审
(3)实行严格的版本控制
(4)采用现代程序设计技术
(5)软件工程结果应能清楚地审查
(6)开发小组的人员应该少而精
(7)承认不断改进软件工程实践的必要性
四. 软件开发方法
1. 基本的软件开发方法
(1)结构化方法:采用自顶向下、逐步求精的指导思
想,应用广泛,技术成熟
(2)面向数据结构方法:从目标系统的输入、输出数
据结构入手,导出程序框架结构,再补充其他细节,
就可得到完整的程序结构图
(3)面向对象方法:自底向上和自顶向下相结合,以
对象建模为基础,从而不仅考虑了输入、输出数据结
构,实际上也包括了所有对象的数据结构。
(4)形式化方法
2. 开源软件开发方法
3. 群体化软件开发方法
五.软件工程工具
结合表 1-1、表 1-2 讲解
六.软件工程人员的职业道德
(1)保护客户数据
(2)知识产权
(3)版权拥有权
(4)许可协议
(5)道德问题解决方案
(6)道德教育
七.”小型二手货交易平台案例介绍
讲授
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 2 章 软件过程
课次 1(总第 2 次) 课时 2
授课形式 理论课■ 案例讨论课□ 实验课□ 习题课□ 其他□
教学目的
及要求
掌握软件过程的定义和基本活动
熟悉软件生命周期及阶段任务
熟悉常用的几种软件过程模型
教学重点
生动形象的讲述软件生命周期,每阶段的任务,以及常用的
几种软件过程模型
教学难点 软件生命周期
环节/时间 授课内容 教学方法
课程导入
10 分钟
一. 软件过程概述
软件的诞生和生命周期是一个过程,即软件
过程。过程定义了运用方法的顺序、应该交付的
文档资料、为保证软件质量和协调变化所需要采
取的管理措施,以及标志软件开发各个阶段任务
完成的里程碑。
讲授
正式授课
80 分钟
二.软件生命周期
(1)软件生命周期的概念
软件产品的生命周期是指从设计该产品的
构想开始,到软件需求的确定、软件设计、软件
实现、产品测试与验收、产品发布、投入是用以
及产品版本的不断更新,到最终该产品被淘汰的
全过程。
(2)传统软件生命周期的各个阶段
①可行性研究
①需求分析
①软件设计
①编码
①软件测试
①软件维护
(3)软件过程模型
①瀑布模型:开发人员必须等前一阶段的任务
完成后,才能开始后一阶段的工作,并且前一阶
段的输出往往是后一阶段的输入(图 2-2)
①快速原型模型:在初步的需求分析之后,马
上向客户展示一个软件产品原型,对客户进行培
训,让客户试用,反复循环几次,直到客户确认
为止(图 2-3)
①增量模型:把待开发的软件系统模块化,将
每个模块作为一个增量组件,从而分批次地分析、
设计、编码和测试这些增量组件。(图 2-4)
①螺旋模型:用于风险较大的大型软件项目开
发,将瀑布模型与快速原型模型结合起来,并且
加入了这两种模型忽略了的风险分析(图 2-5)
①喷泉模型:分析模型和设计模型采用相同的
符号标示体系,各阶段之间没有明显的界限,而
且常常重复、迭代地进行(图 2-6)
①基于组件的开发模型:使用现有的组件以及
系统框架进行产品开发(图 2-7)
①统一软件开发过程模型:基于 UML 的一种
面向对象的软件开发模型,采用迭代和增量递进
的开发策略,并以用例驱动为特点,集中了多个
软件开发模型的优点(图 2-8)
(4)软件过程实例
略
讲授
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 3 章 敏捷软件开发
课次 1(总第 3 次) 课时 2
授课形式 理论课■ 案例讨论课□ 实验课□习题课□ 其他□
教学目的及
要求
了解“敏捷软件开发宣言”的 4 个价值观和 12 条原则
理解重要的敏捷软件开发实践,例如 Sprint、用户故事、
Backlog
理解面向敏捷软件开发的 Scrum、Kanban、XP 方法
理解敏捷软件开发和 DevOps 是一种理念,而 CI/CD 是实
现这两种理念的一种方法
教学重点
解释什么是敏捷软件开发
通过实际举例,让学生有对敏捷软件开发的整体观念
教学难点 敏捷软件开发的阐述
环节/时间 授课内容
教学方
法
课程导入
10 分钟
一. 敏捷软件开发方法
(1)4 个价值观:个体与交互高于过程和工具、
可运行软件高于详尽的文档、与客户协作高于
合同(契约)谈判、对变更及时响应高于遵循
计划
(2)12 条原则
讲授
正式授课
80 分钟
二. Scrum
1. 概述
Scrum 用不断迭代的框架方法来管理复杂产品
的开发,成为当前十分流行的敏捷管理方法。
1)3 种角色:产品经理、敏捷专家、Scrum 会议
2)Scrum 会议:整理产品需求清单、确定迭代规
划、梳理产品需求清单、每日站会、迭代演示、迭
代回顾
3)Scrum 项目所需的常用工件:Scrum 任务板、
用户故事、燃尽图(图 3-2)
2. Sprint
Sprint 是 Scrum 团队一起完成增量工作的实际
时间段
讲授
3. 每日站会
每天在同一时间和地点举行的超短会议,以保
持会议的简单性
4. 用户故事
用户故事是从用户的角度来描述用户渴望得到
的功能
(1)3 要素:角色、活动、商业价值
(2)3C 原则:卡片、交谈、确认
(3)INVEST 原则:独立性、可协商性、有价
值、可估算性、短小、可测试性
结合表 3-1、表 3-2、表 3-3 进行教授
5. Backing
Backlog 是 Scrum 中经过优先级排序的动态刷
新的产品需求清单,用来制订发布计划和迭代计划
6. 结对编程
结对编程,即两个程序员肩并肩地坐在同一台
计算机前合作编程,在一个程序员编程的同时,另
一个负责检查代码的正确性和可读性
三. 看板
1. 概述
看板作为可视化框架可以用于敏捷方法,能够
清晰地向团队成员展示整个项目进度
原则:可视化工作流程、限制 WIP、管理和改
进流程、制订明确的执行策略、持续改进
2. 看板和 Scrum 的区别
看板对团队的个人能力要求较高,更灵活,适
合新开发的产品,而 Scrum 适合成熟一些的产品和
团队,结合表 3-4 进行讲授
四.极限编程
极限编程是一种实践性较强的规范化的软件开
发方法,它强调用户需求和团队工作,结合图 3-4
教授。
(1)4 个价值观:交流、简单、反馈、勇气
(2)12 个核心实践
五.CI/CD
(1)概述
①持续集成(CI)
①持续交付(CD)
①持续测试
(2)CI/CD 管道
典型的 CI/CD 管道分为 4 个主要阶段:提
交、构建、测试和部署,结合表 3-5 讲授
(3)CI/CD 的优势
更快、更可靠的版本发布、更高的可见性、早
期错误检测、快速反馈循环、更快乐的开发和运维
团队
六.DevOps
1. DevOps 生命周期
策划、开发、集成、部署、运维、学习
2. DevOps 文化
3. DevOps 工具
七.敏捷软件开发、CI/CD 和 DevOps
八.敏捷软件开发实例
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 4 章 项目立项、可行性研究与项目开发计划
课次 1(总第 4 次) 课时 2
授课形式 理论课■ 案例讨论课□ 实验课□ 习题课□ 其他□
教学目的及
要求
了解可行性研究的目的、意义和内容
掌握可行性研究的主要步骤
了解项目开发计划的内容
教学重点 生动形象地讲述可行性研究的主要步骤
教学难点 可行性研究
环节/时间 授课内容
教学方
法
课程导入
10 分钟
引入项目的立项 讲授
正式授课
80 分钟
一. 项目立项概述
项目立项包括项目发起、项目论证、项目审核
和项目批准四个过程
二. 可行性研究的任务
可行性研究需要从多个方面进行评估,主要包
括战略可行性、操作可行性、计划可行性、技术可
行性、社会可行性、市场可行性、经济可行性和风
险可行性等
1. 计划可行性
主要研究待开发的系统的功能、性能和限制条
件,确定现有技术能否实现有关的解决方案,在现
有的资源条件下实现新系统的技术风险有多大
2. 操作可行性
3. 经济可行性
(1) 成本估算
讲授
① 代码行技术
① 任务分解技术
(2) 成本——效益分析
① 开发成本
① 运行费用
① 经济效益
(3) 货币的时间价值
(4) 投资回收期
(5) 纯收入
三.可行性研究的步骤
一个典型的可行性研究的步骤可以归结为以下
几步:明确系统的目标、分析研究现行系统、设计
新系统的高层逻辑模型、获得并比较可行的方案、
撰写可行性研究报告(图 4-1)
四.可行性研究实例
五.制订项目开发计划
项目开发计划主要包括:项目概述、实施计
划、人员组织及分工、交付期限
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 5 章 结构化分析(1)
课次 1(总第 5 次) 课时 2
授课形式 理论课■ 案例讨论课□ 实验课□ 习题课□ 其他□
教学目的及
要求
了解需求分析的任务和原则
熟悉进行需求分析的步骤和方法
了解需求管理
熟悉需求分析的常用方法
了解软件原型
教学重点 熟悉需求分析的步骤、方法
教学难点 需求分析、结构化分析
环节/时间 授课内容
教学
方法
课程导入
10 分钟
引入需求分析 讲授
正式授课
80 分钟
一. 需求分析
1. 需求分析的任务和原则
2. 需求分析的步骤
(1)需求获取
收集并明确用户需求,获取需求的方法有多种。
① 问卷调查
① 访谈
① 实地操作
① 建立原型
(2)分析建模
模型是为了理解事物而对事物做出的一种抽象,通
常由一组符号和组织这些符号的规则组成。
(3)需求描述
需求描述就是编制需求分析阶段的文档,一般包
括三个文档:系统定义文档(用户需求报告)、系统需
求文档(系统需求规格说明书)、软件需求文档(软件
需求规格说明书)(图 5-2)。
(4)需求验证与评审
3. 需求管理
有效需求管理的关键在于维护需求的明确阐述、
每种需求类型所使用的属性,以及与其他需求和其他
项目之间的可追踪。
4. 需求分析的常用方法
(1) 功能分解方法
(2) 结构化分析方法
(3) 信息建模方法
(4) 面向对象的分析方法
5. 软件原型
软件原型是指在项目的前期阶段,系统分析人员根
据对客户需求的理解和客户希望实现的结果,快速地给
出一个翔实的产品雏形
二. 结构化分析概述
1. 建立当前系统的“具体模型”
2. 抽象出当前系统的逻辑模型
3. 建立目标系统的逻辑模型
4. 考虑人机界面和其他一些问题
讲授
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 5 章 结构化分析(2)
课次 1(总第 6 次) 课时 2
授课形式 理论课■ 案例讨论课□ 实验课□ 习题课□ 其他□
教学目的及
要求
掌握结构化分析的几种常用建模方法
掌握结构化分析的几种图形工具
教学重点 掌握结构化分析
教学难点 结构化分析
环节/时间 授课内容
教学方
法
课程导入
10 分钟
回顾上节课需求分析内容 讲授
正式授课
80 分钟
三. 结构化分析方法
结构化分析实质上是一种创建模型的活动(图
5-6)
1. 功能建模
功能建模是用抽象模型的概念,按照软件内部
数据传递和变换的关系,自顶向下逐层分解,直到能
够构建满足功能要求的可实现的软件为止
(1) 数据流图的表示符号
4 种表示符号,外部实体、数据流、数据变换、
数据存储(表 5-1)
(2) 环境图
环境图仅包含一个数据处理过程,即要开发
的目标系统。环境图的作用是确定系统在其环境
中的位置,通过确定系统的输入和输出与外部实
体的关系确定其边界(图 5-7、图 5-8)
(3) 数据流图的分解
结合图 5-9、图 5-10、图 5-11 讲授分解的流
程
2. 数据建模
数据建模是在较高的抽象层次上对数据库结构
进行建模,数据模型用 E-R 图来描述
E-R 图以实体、关系和属性 3 个基本概念概括
数据的基本结构。实体是现实世界的事物,多用矩
形框表示。属性多用椭圆形表示,关系用菱形表示。
实体之间存在一对一、一对多、多对多三种关系类
型,结合图 5-12、图 5-13、图 5-14 中的具体例子进
行讲授
3. 行为建模
状态转换图是一种描述系统对内部或外部事件
响应的行为模型,描述系统状态、事件和事件引发
系统在状态之间的转换
(1) 状态及状态转换
状态是任何可以被观察到的系统行为模式,规
定了系统对事件的响应方式,结合图 5-15 进行状态
转换图的讲授
(2) 事件
事件是在某个特定时刻发生的事情,状态转换
通常是由事件触发的,在这种情况下应在表示状态
转换的箭头线上标出触发转换的事件表达式
讲授+ 演
示
(3) 例子
结合图 5-16 演示图书馆管理系统的例子
4. 数据字典
数据字典以一种系统化的方式定义在分析模型
中出现的数据对象及控制信息的特性,给出它们的
准确定义,包括数据流、数据存储、数据项、数据
加工,以及数据源点、数据汇点等(表 5-2)。
5. 加工规格说明
在对数据流图的分解中,位于最底层数据流图
的数据处理,称为基本加工,对于每一个基本加工
都需要进一步说明,称为加工规格说明,一般用结
构化语言、判定表和判定树来表述(结合图 5-17、
图 5-18 讲授)
四. 结构化分析的图形工具
图形工具包括层次方框图、Warnier 图和 IPO
图,结合图 5-19、图 5-20、图 5-21、图 5-22 讲授
五. 结构化分析实例
结合图 5-23、图 5-24、图 5-25、图 5-26 对培
训机构入学管理系统进行结构化分析和演示
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 6 章 结构化设计
课次 2(总第 1 次) 课时 4
授课形式 理论课■ 案例讨论课□ 实验课□ 习题课□ 其他□
教学目的
及要求
了解软件设计评判指标
了解软件设计中过程设计,接口设计,体系结构设计以及
数据设计四个过程
教学重点
如何实现体系结构设计
如何实现用户界面设计
如何实现数据设计和接口设计
教学难点
模块划分和接口定义
环节/时间 授课内容 教学方法
课程导入
20 分钟
设计是将用户需求转变为软件构建蓝图的过程,
在软件开发过程中处于核心地位。
一、评判设计优良的标准
软件设计追求使用抽象和逐步求精的方式实
现高内聚,低耦合的模块划分,并遵循信息隐藏
的原则,使已有设计能更灵活,更具有可复用性。
二、软件设计的分类
软件设计包括数据设计,体系结构设计,接口
设计,构件设计,部署设计五个部分。
讲授
正式授课
160 分钟
三、数据库结构设计
1、数据库概念结构设计具体介绍
数据库的概念结构描述了系统最基础的数据
结构,独立于特定的数据库系统。
2、数据库逻辑结构介绍
数据库的逻辑结构在概念结构的基础上进一
步接近具体实现,提供了比较接近数据库内部构
造的逻辑描述。
3、范式介绍
数据库设计中为避免异常和冗余应遵循的规
范,包括三类范式:
1)第一范式:所有关系中的每一个分量都必须
是不可分的数据项。第一范式是建立关系数据表
的最基本的要求。
2)第二范式:满足第一范式的条件,并且每个
非键属性都由整个键决定
3)第三范式:满足第二范式的条件,并且每个
非键属性不依赖于其他非键属性。
四、用户界面设计
1、目标用户群体分析
在功能设计之前必须明确软件所针对的主要
用户群体及其特征,符合用户特征的界面设计才
能带来良好的用户体验
2、设计应规范,可用,易用
设计应遵循平台的设计规范;设计的界面对用
户来说应易于使用。
3、界面应简洁,清晰,一致,并具有容错
用户界面设计应考虑功能重要性,采用层次化
设计突出重要功能,避免罗列堆叠。界面之间应
该具有一致的风格,应用应对用户操作具有容错
性。
五、体系结构设计
1、面向数据流的设计
根据应用中数据流通的途径对应用的系统结
构进行划分与建模。
2、面向数据结构的设计
根据数据结构设计程序处理过程的方法,也就
是面向数据结构的设计方法按输入、输出以及计
算机内部存储信息的数据结构进行软件结构设
计。
六、接口设计
1、介绍外部接口,内部接口概念
本系统和外界所有接口的安排,包括软件和硬
件之间的接口、本系统和支持软件之间的接口关
讲授
系。
正式授课
160 分钟
2、用户接口设计理念
1)三条“黄金原则”
将控制权交给用户;减少用户的记忆负担;
界面保持一致
2)界面设计过程
界面设计是一个迭代的活动,包括以下六点
核心活动:创建系统功能的外部模型;确定为
完成此系统功能,人和计算机应分别完成的任
务;考虑界面设计中的典型问题;借助 CASE
工具构造界面原型;实现设计模型;评估界面
质量。
界面设计过程中设计四个模型:设计模型;
用户模型;系统假想;系统映像。
3)界面设计问题
系统设计时应考虑:系统响应时间;用户求
助机制;出错信息;键盘命令等四个问题。
4)UX 设计与 UI 设计
UX(用户体验设计)与具体的视觉或模型无
关,着眼于宏观方面整个服务流程,致力于提
高用户与企业各方面互动质量,创造可用、高
效、相关、简单、全方位的愉悦体验。
UI(用户界面设计)决定产品的视觉外观,
确保产品的用户界面尽可能直观。
讲授
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 7 章 面向对象方法与 UML
课次 3(总第 3 次) 课时 6
授课形式 理论课■ 案例讨论课□ 实验课□ 习题课□ 其他□
教学目的
及要求
掌握面向对象的基本概念
理解面向对象软件工程的特征与优势
掌握面向对象的实施步骤
了解统一建模语言 UML
熟悉 UML 的九种图
教学重点
面向对象设计思想的培养
UML 的理解与掌握
教学难点
掌握面向对象设计思想
环节/时间 授课内容 教学方法
课程导入
30 分钟
一、面向对象的基本概念
1、面向对象是指:按照人们认识客观世界的系
统思维方式,采用基于对象的概念建立模型,模
拟客观世界分析、设计、实现软件的办法。
面向对象涉及的概念包括:
对象:现实世界中各种各样的实体具有自己的
属性和行为
类:具有相似内部状态和运动规律的实体的集
合与抽象。
消息:对象之间相互联系和相互作用的方式
类具有以下七点特性:抽象、继承、封装、多
态、重写、包、包的接口类。
讲授
正式授课
240 分钟
二、统一建模语言 UML
1、UML 简述
UML 是一种通用的可视化建模语言,用来描
述、可视化、构造、和文档化软件密集型系统的
各种工作。
2、UML 特点
1)统一标准:UML 提供了标准的面向对象的模
型元素的定义和表示方法,并已经成为 OMG 的
标准
2)面向对象:UML 提供了表述模型元素的图形
与方法
3)可视化,表达能力强大:系统的逻辑模型或
实现模型都可以用相应的图形清晰表示。
4)独立于过程:UML 是系统建模语言,独立于
开发过程
5)容易掌握与使用
6)与现有开发语言(如 JAVA,C++等)良好结
合
3、UML 的图
1)用例图
对系统提供的功能的描述
2)静态图
描述系统的静态结构,包括类图、对象图、包
讲授
正式授课
240 分钟
图。
3)行为图
描述系统的动态模型和组成对象之间的交互
关系。其中的状态图描述类的对象的有可能的状
态以及事件发生时状态的转移条件。
4)交互图
交互图描述对象之间的交互关系。其中顺序图
描述对象之间的动态合作关系,协作图描述对象
之间的协作关系。
5)实现图
实现图提供关于系统实现方面的信息。其中构
建图描述代码构建的物理结构以及构建之间的
依赖关系。部署图用于定义系统中软硬件的物理
体系结构。
三、静态建模机制
UML 的静态建模机制包括用例图、类图、对
象图、包图等。
1、用例图
用例图从用户的角度描述系统的功能,由用例,
参与者,以及他们的关系连线组成。此图从用户
角度描述系统的行为,使用人型符号表示参与者
并唯一命名,使用椭圆形表示用例,参与者和用
例之间使用带箭头的实线连接。
用例之间有三种关系:
1)包含关系
提取出多个用例的共同特征,用例包含其公有
特征
2)拓展关系
用例的异常行为和分支可作为拓展用例
3)泛化关系
2、类图和对象图
类图使用类描述系统的结构,展示了系统中类
的静态结构,即类与类之间的相互关系。
对象图是类图的实例,它展示了系统在某一时
刻的快照。
类与类之间的关系有关联、依赖、泛化、实现
等。
3、包图
包图是用于描述模型中的包和其所包含元素
的组织方式的图。包图通过对途中的各个包元素
以及包之间关系的描述,展示出系统的模块,以
及模块之间的依赖关系
讲授
正式授课
240 分钟
四、动态建模机制
系统中的对象在执行期间的不同时间点如何
通信以及通信结果如何,这就是系统的动态行为
1、顺序图
表示完成某项行为的对象和这些对象之间传
递消息的时间顺序。顺序图由对象、生命线、控
制焦点、消息等组成。
2、协作图
用于显示系统的动作协作,类似于顺序图中的
交互片段,但协作图也显示对象之间的关系。
3、状态图
描述对象对外部对象响应的历史状态序列,即
描述对象所有可能的状态,以及那些事件将导致
状态的变化。
4、活动图
活动图中的活动是展示整个计算步骤的控制
流(及其操作)的节点和流的图。
五、描述物理架构
1、架构图
架构图根据系统的代码构建显示系统代码的
物理结构。其中的构建可以是源代码构建、二进
制构建或可执行构建。
2、部署图
部署图用于显示系统中硬件和软件的物理结
构,可以显示实际中的计算机和设备,以及它们
之间的互联关系。
讲授
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 8 章 面向对象分析
课次 3(总第 6 次) 课时 6
授课形式 理论课■ 案例讨论课□ 实验课□ 习题课□ 其他□
教学目的
及要求
理解面向对象分析的过程和原则
掌握面向对象建模的三种模型
教学重点
对象模型的建立
动态模型的建立
功能模型的建立
教学难点
面向对象设计思想的理解
环节/时间 授课内容 教学方法
课程导入
30 分钟
一、面向对象分析方法
1、面向对象分析过程
面向对象分析主要以用例模型为基础。开发人
员在原始需求的基础上,通过构建用例模型从而
得到系统的需求,在通过对用例模型的完善来改
善需求。
1)确定系统的外部参与人员
2)确定系统的用例
3)划分目标系统中的类与对象
4)识别对象之间的动态交互行为
5)将需求分析的结构用多种模型图表示出来
2、面向对象分析原则
1)定义有实际意义的对象
2)模型的描述要规范、准确
3)共享性
4)封装性
讲授
正式授课
240 分钟
二、建立对象模型
对象模型描述了现实世界中的“类与对象”以及
他们之间的关系,表示了目标系统的静态数据结
构。在面向对象的分析中,一般都是先建立对象
模型,然后在建立动态模型和功能模型。对象模
型为建立动态模型和功能模型提供了实质性的
框架
1、对象模型的组成层次
1)主体层
用于划分主题,主题是将一组具有较强联系的
类组织在一起形成的类的聚合,具有以下三个特
点:主题是类的聚合,但主题自身不是一个类;
主体内部的类之间往往有内部联系;主题的划分
没有固定的规则
主题的划分有以下两种方式:自底向上的划分
方式和自顶向下的划分方式。
主题图:主题的划分结果可以形成一个完整的
类图和一个主题图。
2)类与对象层
建立对象模型首先需要确定所选的对象与类
候选的类与对象包括:可感知的物理实体;人
或组织的角色;应该记忆的事件;两个或多个事
件的相互作用;需要说明的概念;
筛选候选对象与类的标准有:冗余,无关,笼
统,属性,操作,实现六点。
3)结构层
确定类与类之间的结构关系(如继承
4)属性层
确定应用的属性,属性的确定既与问题域有关,
也和目标系统的人物有关。应该只考虑有具体应
用直接相关的属性。
表示属性的启发性准则如下:每个类至少需要
一个属性;属性取值必须适合类的所有实例;出
现在泛化关系中的类所继承的属性必须与泛化
关系一致;类的导出属性应当略去;应将描述类
的外部不可见状态的属性删去。
5)服务层
确定类中需要定义的服务。
三、建立动态模型
对象模型建立后,就需考察对象和关系的动态
变化情况,即建立动态模型。
讲授
正式授课
240 分钟
1、编写脚本
脚本描述用户与目标系统之间的一个或多个
典型的交互过程,以便对目标系统的行为有更具
体的认识。
2、设计用户界面
确定用户界面的信息交换方式,快速建立用户
界面原型,供用户评价和修改。
3、画 UML 顺序图或活动图
4、画状态图
四、建立功能模型
功能模型表明了系统中数据之间的依赖关系,
以及有关的数据处理功能,它由一系列流程图组
成。建立功能模型的步骤如下:
1、确定输入和输出值
2、画数据流图
3、定义服务
讲授
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 9 章 面向对象设计
课次 3(总第 1 次) 课时 6
授课形式 理论课■ 案例讨论课■ 实验课□ 习题课□ 其他□
教学目的
及要求
了解面向对象设计与结构化设计的不同
理解面向对象设计与面向对象分析的关系
理解面向对象设计的过程、原则和启发规则
熟悉面向对象系统分解方法
熟悉面向对象问题域、人机交互、任务管理和数据管理
各子系统的设计方法
掌握对象设计的方法
教学重点
一. 面向对象设计的过程和原则
1. 设计过程
1)建立软件体系结构环境图。描述各系统的关系、接口等
2)软件体系结构设计。自顶向下等方式设计
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. 任务管理子系统设计
1)确定事件驱动型任务
2)确定时钟驱动型任务
3)确定优先任务和关键任务
4)确定协调任务
5)审查每个任务
6)确定资源需求
7)定义任务
4. 数据管理子系统设计
1)设计数据格式。先设计第一范式,建立相应文件;再转化
成第三范式,建立关系数据库;最后扩展关系数据库途径,
建立面向对象数据库管理系统。
2)设计服务。设计对象的存储、检索等服务。
3)使用面向对象数据库进行数据管理设计。如存储、管理持
久对象等。
三、对象设计
1. 设计类中的服务
1)从各类模型中确定服务
2)设计相应的算法和数据结构,定义内部类和方法
2. 设计类的关联
1)单向关联实现。单指针引用
2)双向关联实现。双指针引用或正向查找或新建独立关联对
象
3)链属性实现。
3. 对象设计优化
1)确定优先级
2)数据访问效率优化
(1)冗余关联提高访问效率
(2)查询次序调整
(3)保留派生属性
3)调整继承关系
(1)具体到抽象再到具体
(2)修改类定义以提高继承程度
(3)利用组合关系实现行为共享
教学难点 对象设计的方法和实例应用
环节/时间 授课内容 教学方法
课程导入
10 分钟
面向对象设计的概念、意义 讲授
正式授课
80 分钟
一. 面向对象设计的过程和原则
二. 系统设计
讲授
正式授课
90 分钟
三. 对象设计 讲授
讨论课
90 分钟
“小型二手货交易平台软件设计说明书中分析讨
论系统设计、对象设计等
讨论
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 10 章 软件实现
课次 1(总第 4 次) 课时 4
授课形式 理论课■ 案例讨论课■ 实验课□ 习题课□ 其他□
教学目的
及要求
了解编程语言的发展与分类
了解选择编程语言时所需考虑的因素
掌握良好的编程风格与编码规范
熟悉面向对象实现
了解代码重用
了解分析和评价代码的质量
教学重点
一、编程语言
1. 编程语言发展和分类
1)机器语言
2)汇编语言
3)高级语言
4)超高级语言
了解流行语言 C、Python、Java、C++、C#、JavaScript、PHP
的特征和应用
2. 选择编程语言需考虑的因素
1)项目的应用范围
2)用户的需求
3)使用的软件开发工具
4)开发人员的喜好和能力
5)软件的可移植性要求
6)算法和数据结构的复杂性
7)平台支持
二、编码风格和规范
1. 版权和版本声明
1)版权信息
2)文件名称、标识符、摘要
3)当前版本号、作者/修改者、完成日期
4)版本历史信息
2. 程序版式
如缩进、空格、空行、代码行最大长度等规则,增加代码可读性。
3. 注释
注释一般位于:
1)版本、版权声明
2)函数接口说明
3)重要代码行或段落揭示
注释规则:
1)尽量精简
2)准确、易懂,不能有二义性
3)注释放在被描述的代码上方或右方
4)代码较长时在段落结束处加注释
4. 命名规则
1)按照标识符的实际意义命名
2)标识符尽可能短
3)命名与开发工具或操作系统的风格保持一致
4)变量名不要过于相似
5)注释解释变量命名
6)不要出现仅靠大小写区分的标识符
7)尽量避免出现数字编号
5. 数据说明
1)按照一定次序,如数据类型,说明类内数据
2)说明同一语句中的相同类型变量时,按字母序排列
3)添加必要注释说明复杂数据结构
6. 语句构造
1)不同语句分行写
2)合理利用缩进体现层次结构
3)复杂运算式中使用括号清晰表达运算顺序
4)经常使用的代码段独立封装成函数或过程
5)避免使用 goto 语句
6)避免使用多层嵌套
7)避免使用复杂的判定条件
7. 输入输出
1)对输入数据施行严格的数据检查,及时识别错误和异常
2)简化输入的步骤、操作
3)输入格式限制不要太严格
4)允许默认输入
5)交互式输入中要给予用户正确的提示
6)对输出数据添加注释
7)输出数据遵循一定的格式
8. 效率
主要取决于使用的算法和数据结构,代码可由编译器优化。
1)减少循环嵌套的层数
2)循环结构改为嵌套结构
3)简化算术和逻辑表达式,少用混合数据类型的运算
4)避免使用多维数组和复杂的表
三、面向对象实现
面向对象方法的优点是通过重用提高软件的效率。因此,应该
优先选用能够最完善、准确地表达问题域语言的面向对象语言。
类的实现为核心问题,主要涉及的技术有:类的封装和信息隐
藏、类继承、多态和重载、模板、持久保存对象、参数化类和异
常处理等。
四、 代码重用
重用方式:
1)源代码剪贴
2)源代码包含
3)继承
开源代码重用,优点是缩减开发成本,提高开发效率;缺点一
是开源许可证容易侵权,二是重用的代码难以及时更新,有安全
风险。
五、分析和评价代码质量
1. 可读性
2. 可扩展性
3. 灵活性
4. 简洁性
5. 可重用性
6. 可测试性
7. 可维护性
教学难点 面向对象具体实现
环节/时间 授课内容
教学方
法
课程导入
20 分钟
编程语言的介绍和选择
一. 编程语言的发展(略讲)
二. 流行编程语言各自的特点和选择语言时所考虑的
因素
讲授
正式授课
100 分钟
三. 编码风格和规范(略讲)
四. 面向对象实现(对照 P259 的具体实例讲解)
五. 代码重用
六. 代码质量分析和评价
讲授
实验课
60 分钟
P269
使用 Visual Studio Code 实现”小型二手货交易平台的
“用户登陆”模块
实验
思考题
和作业
本章习题
扩展阅读 无
章节名称 第 11 章 软件测试
课次 3(总第 5 次) 课时 6
授课形式 理论课■ 案例讨论课■ 实验课□ 习题课□ 其他□
教学目的
及要求
掌握软件测试的原则
了解软件测试的常用模型
了解软件测试的分类
了解测试用例和测试用例设计方法
掌握等价类划分法;熟悉黑盒测试的其他方法
掌握逻辑覆盖法;熟悉白盒测试的其他方法
掌握软件测试的一般,以及每个阶段测试的关注点
了解回归测试、面向对象测试和自动化测试
熟悉软件调试
教学重点
一、软件测试的基本概念
软件测试是软件开发过程中的重要阶段,用来保证软件产品的
稳定性、安全性、一致性、完全性等要求,从而保证软件质量,
软件测试工作应该贯穿整个开发过程。
1. 基本原则
1)完全测试是不可能的
2)测试中存在风险和缺陷
3)软件测试只能表明缺陷的存在,不能证明没有其他方面的缺陷
4)潜在的错误数和发现的错误数成正比
5)让不同测试人员参与测试
6)开发小组和测试小组分立
7)尽早不断测试,让测试工作贯穿开发过程
8)设计测试用例时要包括输入数据和预期的输出结果两个部分,
输入数据还应该包括非法情况
9)集中测试容易出错或是出错较多的模块
10)长期保留所有的测试用例,方便回归测试
2. 测试模型
1)V 模型。在编码后才进行测试工作,无法及时纠正错误
2)W 模型。测试与各个设计过程同步进行,局限是测试不能跨
阶段
3)H 模型。测试活动独立,与其他流程并行。
二、软件测试分类
1. 按测试阶段分为单元、集成、系统、验收测试
2. 按是否运行程序分为静态测试和动态测试
3. ...
三、测试用例
为节省时间、资源,提高测试效率,应该挑选有代表性的或特殊
性的测试数据进行测试。
1. 测试用例设计
1)边界值分析
2)等价类划分
3)错误推测
4)检查测试用例对程序的逻辑覆盖度
5)因果图法
2. 测试用例场景
描述每个经过测试用例可能的路径
四、软件测试方法
静态测试主要为人工审查代码,检测有效但是对测试人员要求
高。动态测试需要实际运行程序,主要分为白盒和黑盒测试
1. 黑盒测试
1)等价类划分法。将输入根据不同条件划分为若干子集,只取各
个子集中的部分输入测试。
2)边界值分析法。取输入范围的边界值以及边界附近的值进行测
试。
3)错误推测法。主要靠直觉和经验,选择程序中可能的错误和容
易发生错误的特殊情况。
4)因果图法和决策表法。考虑不同输入条件的组合,条件之间的
制约关系,条件与结果之间的逻辑关系。先根据程序规格说明书
划定可能的原因、结果,画出相应的因果图,再转化为决策表,
根据决策表的不同条件组合设计测试用例。
5)场景法。对于有各种中间状态、事件的软件,可以根据程序执
行的基本流和各个备选流,生成不同的场景,对每个流程场景设
计相应的测试用例。
2. 白盒测试
一般来说,采取先静态后动态的方式,先进行代码检查和静态
结构分析,再进行覆盖测试。覆盖测试是重点,应尽可能提高覆
盖率。不同测试阶段测试重点不同,需要白盒黑盒相结合进行测
试。
1)代码检查法。根据设计文档和一般编码原则检查代码。
2)静态结构分析。分析源代码的内部结构,各模块的逻辑关系,
如控制流分析、数据流分析、信息流分析、接口分析、表达式分
析等,进而找出错误。
3)程序插桩技术。往被测试程序中插入输出等操作来了解变量、
语句的执行情况,从而查出错误。
4)逻辑覆盖法和基本路径法。根据程序的流程图,设计测试用例,
以覆盖所有的执行路径或语句。
五、分阶段测试
1. 单元测试
2. 集成测试
3. 系统测试
4. 验收测试
5. 回归测试
六、面向对象测试
教学难点 白盒、黑盒测试方法,面向对象测试
环节/时间 授课内容 教学方法
课程导入
10 分钟
软件测试的概念、基本原则和模型(略讲) 讲授
正式授课
80 分钟
一. 黑盒测试方法
二. 白盒测试方法
三. 黑盒、白盒对比,结合使用
讲授
正式授课
90 分钟
四. 分阶段测试
五. 面向对象测试(结合 P306 实例) 讲授
实验
90 分钟
P320
使用 Visual Studio Code 对”小型二手货交易平台
的“用户登录”模块进行单元测试
实验
思考题和
作业
本章习题
扩展阅读 无
章节名称 第 12 章 软件维护与软件工程管理
课次 2(总第 8 次) 课时 4
授课形式 理论课■ 案例讨论课□ 实验课□习题课□ 其他□
教学目的及
要求
熟悉软件维护的基本概念
了解软件估算的概念、方法、原则与技巧
掌握制订软件开发进度计划的方法
了解软件开发人员组织的形式
了解软件开发风险管理的概念
了解软件质量保证的措施
了解软件配置管理的相关概念
熟悉软件工程标准与软件文档的概念
熟悉软件过程能力成熟度模型
了解软件项目管理的相关内容
教学重点
一、软件维护
软件维护是软件产品交付并投入使用后,为弥补软件测试阶
段未发现的缺陷,改进软件产品的性能,补充软件产品的新功
能等所进行的修改软件的过程。通常软件维护周期和费用都很
大。
1. 软件部署与交付。需要完成软件的安装部署、验收测试、交
付验收结果,然后对用户进行必要的培训,交付相关文档,再
进入维护阶段。
2. 软件维护过程。
1)建立维护机构
2)用户提出维护申请并提交维护申请报告
3)维护人员确认维护类型并实话相应的维护工作
4)整理维护记录并对维护工作进行评审
5)对维护工作进行评价
3. 软件维护分类
1)纠错性维护
2)适应性维护
3)完善性维护
4)预防性维护
4. 软件的可维护性
影响因素有可理解性、可测试性和可修改性等。
提升方法:
1)明确软件质量目标和优先级,重点保证主要影响的质量因
素
2)建立完整文档
3)采用行进的维护工具和技术
4)注重可维护性的评审环节
5. 软件维护副作用
1)代码修改产生新错误
2)修改数据产生不兼容等错误
3)文档更新不及时导致用户和维护人员不便
6. 自动化运维
7. 软件再工程
1)重构。对源代码和数据修改,使其便于理解或维护。
2)正向工程。改造原软件,加入新功能和改善整体性能。
3)逆向工程。对源代码进行抽象分析,导出更高层次的表达。
二、软件估算
主要估算软件的规模、所需工作量、成本、时间等。
1. 估算方法
1)功能点估算
2)代码行估算
3)构造性成本模型(COCOMO)估算
4)软件方程式估算
5)类比估算
6)工作任务分解(WBS)估算
7)专家评估法
8)PERT 估算法
9)综合估算法
2. 估算原则
1)估算尽量文档化
2)估算要辅助决策
3)考虑潜在风险
4)...
三、软件开发进度计划
1. Gantt 图。显示行动时间规划
2. PERT 图。给出任务时间规划和任务之间的关系
四、软件开发人员组织
1. 民主制程序员。完全平等,平行交流
2. 主程序员。主程序员作为中心与其他所有程序员交流,负责
体系结构设计和关键部分设计
3. 现代程序员组。“主程序员”由技术负责人和行政负责人担任。
五、软件开发风险管理
1. 软件开发风险
1)纯粹风险和投机风险
2)自然和人为风险
3)可预测和不可管理的风险
4)局部和总体风险
2. 软件开发风险管理
建立并不断更新风险清单。
1)风险识别。包括风险判定、风险分析和风险优先级
2)风险控制。包括制订风险管理计划、风险监控和风险化解
六、软件质量保证
软件质量有功能性、可靠性、可用性、效率、可维护性、可
移植性等特性。
软件质量保证措施:
1)非执行测试的软件评审
2)执行测试,如白盒、黑盒测试
3)程序正确性证明
七、软件配置管理
1. 软件配置管理术语
2. 软件配置管理过程
1)标识配置项
2)进行配置控制
3)记录配置状态
4)执行配置审计
3. 软件配置管理角色划分
八、软件工程标准与软件文档
1. 软件标准。包括过程标准、产品标准、专业标准与记法标准
等。
2. 软件文档。主要分为用户文档、开发文档与管理文档。
九、软件过程能力成熟度模型
从管理学角度,对软件开发和维护的全过程进行监控和研究,
使其科学化、标准化,合理地实现预定目标。
十、软件项目管理
侧重于对软件风险、配置和变更的管理
1)启动过程
2)计划过程
3)执行过程
4)控制过程
5)收尾过程
教学难点 软件开发风险管理
环节/时间 授课内容
教学方
法
课程导入
10 分钟
软件维护和管理的意义 讲授
正式授课
80 分钟
一. 软件维护
二. 软件估算
三. 软件开发进度计划
四. 软件开发人员组织(略讲)
五. 软件开发风险管理
讲授
正式授课
90 分钟
六. 软件质量保证
七. 软件配置管理
八. 软件标准(略讲)与软件文档
九. 软件过程成熟度模型(略讲)
十. 软件项目管理(略讲)
讲授
思考题
和作业
本章习题
扩展阅读 无