一、使用说明
(一)课程性质
《软件工程》是一门为计算机科学与技术专业开设的专门介绍软件开发思想、方法、技术、管理和应用的专业基础课程。
(二)教学目的
通过本课程的学习,旨在使学生树立良好的软件开发理念,建立正确的、符合工程规范的、系统化的软件工程思想,训练软件分析的思维能力,掌握软件系统的各种开发方法,提高软件设计水平,为以后的软件开发打下良好的基础。
(三)教学时数
课堂教学51学时,机动3学时。
(四)教学方法
采用课堂讲授、多媒体课件为主,课外做开发一个小型软件系统作业的实践活动为辅的教学方法。
(五)面向专业
本课程面向计算机科学与技术专业的本科专业。
二、教学内容
第一章 软件工程引论
(一)教学目的与要求
通过本章的学习,了解软件、软件危机和软件工程的有关概念。
(二)教学内容
主要内容:软件和软件工程的有关概念以及软件工程的基本理论。
教学重点:软件定义和软件产品特点;软件危机和解决软件危机的途径;软件工程定义和基本原则。
教学难点:软件工程的基本原则。
第一节 软件产品的概念与特征
一、软件产品的概念与分类
二、软件产品的特征
三、软件发展的阶段划分
2
第二节 软件危机
一、软件危机及其表现
二、产生软件危机的原因
三、解决软件危机的途径
第三节 软件工程的产生及其发展
一、软件工程的产生
1、软件工程过程的定义
2、软件工程的三要素
3、软件工程工具
二、软件工程的基本原则
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3
1.5学时。
第二章 软件工程过程模型
(一)教学目的与要求
通过本章的学习,了解软件和软件工程过程的有关概念,掌握软件工程过程、软件生命周期及其模型等内容。
(二)教学内容
主要内容:软件工程过程的概念、软件工程过程模型及软件工程过程技术和软件重用的基本理论。
教学重点:软件工程过程模型及技术。
教学难点:软件重用。
第一节 软件工程的技术基础
一、软件工程技术基础的构成
二、软件工程各技术层次的内容
第二节 软件工程过程
4
一、软件工程过程的基本活动
二、软件工程过程的特征
第三节 软件过程模型
一、过程模型的概念
二、过程的四个阶段
第四节 线形顺序模型
一、线形顺序模型的基本活动
二、线形顺序模型的优缺点
第五节 原型模型
一、原型模型概述
二、使用原型模型的前提
第六节 快速应用开发模型
一、快速应用开发模型概述
5
二、快速应用开发模型的优点
第七节 演化软件过程模型
一、增量模型
二、螺旋模型
第八节 软件重用技术
一、软件重用的概念
二、软件重用的三个层次
三、基于软件重用的框架模型
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
2学时。
第三章 系统工程基础与可行性研究
6
(一)教学目的与要求
通过本章的学习,了解可行性研究的目的任务,掌握可行性研究的方法和技术。
(二)教学内容
主要内容:系统需求识别的目标、过程,可行性研究的目的、任务、步骤,可行性研究的成本/效益分析的方法和系统体系结构建模、方案制定与评价。
教学重点:可行性研究的目的、任务、步骤,可行性研究的成本/效益分析的方法和系统体系结构建模、方案制定与评价。
教学难点:可行性研究的成本/效益分析的方法和系统体系结构建模。
第一节 基于计算机的系统
一、基于计算机系统的系统概述
二、计算机系统工程
1、硬件和硬件工程
2、软件和软件工程
3、人机交互工程
7
4、数据库和数据库工程
第二节 系统需求识别
一、系统分析的目标
二、系统分析过程
第三节 可行性研究与分析
一、可行性研究的目的、任务和步骤
1、目的
2、任务
3、步骤
二、效益度量方法
三、成本-效益分析
四、技术分析
五、方案制定和评估
8
第四节 系统体系结构建模
一、建立系统结构流程图
二、系统结构流程图的符号
三、系统结构流程图的画法和示例
第五节 系统定义与评审
一、系统定义文档的内容
二、系统定义评审
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
2.5学时。
第四章 系统需求分析
(一)教学目的与要求
9
通过本章的学习,要求学生了解需求分析的目的、任务、步骤和方法,掌握原型化方法的有关内容,重点掌握需求分析的方法、步骤、需求分析的工具以及需求分析文档的书写和验证。
(二)教学内容
主要内容:系统需求分析的目的、任务、步骤、方法和需求分析使用的工具。
教学重点:需求分析的步骤、方法和需求分析的工具。
教学难点:数据流图的细化和系统逻辑模型的导出。
第一节 需求分析的任务、步骤和原则
一、需求分析的必要性和特点
1、必要性
2、特点
二、需求分析的任务
1、确定系统的功能性需求
2、确定系统的非功能性需求
10
三、需求分析的步骤
1、通过调查研究获取用户需求
2、确定系统的真正需求
3、描述需求,建立系统的逻辑模型
4、书写需求文档,进行需求复审
四、需求分析的原则
1、能够将复杂问题的功能分解和逐层细化
2、表达和理解问题的数据域和功能域
3、建立模型
第二节 数据建模
一、实体模型
1、概述
2、实体模型中的基本符号
11
3、建立实体模型
二、层次方框图
1、作用
2、图形符号
3、示例
三、Warnier图
1、作用
2、图形符号
3、示例
第三节 功能建模
一、功能建模的工具—数据流图
1、作用
2、图形符号
12
二、数据流图的建立方法
1、建立顶层的数据流图
2、分层细化
三、建立数据流图的原则
第四节 行为建模
一、状态迁移图
1、作用
2、图形符号
3、状态迁移图的细化
3、示例
二、Petri网(选讲)
1、Petri网的概念
2、Petri网的基本符号和示例
13
第五节 数据字典
一、数据字典的基本符号
1、数据字典的作用
2、数据字典的基本符号
二、数据字典中的条目和说明格式1、数据流条目
2、数据项条目
3、数据文件条目
4、数据加工条目
三、加工逻辑的描述
1、结构化语言
2、判定表
3、判定树
14
四、数据字典个建立
1、建立的方法
2、建立的原则
第六节 结构化需求分析技术
一、结构化分析的优点
二、结构化分析的基本思想
1、基本手段—分解和抽象
2、基本思想—自顶向下、逐层分解
3、基本工具
第七节 需求验证
一、需求分析的文档
1、描述需求分析的工具
2、需求分析的文档
15
二、需求分析的验证
1、验证的必要性
2、验证的四个方面
三、需求分析的复审
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3学时。
第五章 软件概要(总体)设计
(一)教学目的与要求
通过本章的学习,要求学生了解总体设计的目的、任务、步骤,掌握总体设计的图形工具,重点掌握软件设计的概念和原理、面向数据流和数据结构的设计方法以及总体设计的文档的书写。
(二)教学内容
16
主要内容:总体设计的目的、任务、步骤和软件设计的一般原理,以及总体设计的图形工具、面向数据流和数据结构的设计方法。
教学重点:软件设计的、原理和规则;总体设计的图形工具;面向数据流的设计方法。
教学难点:面向数据流设计方法中的事物流和变换流的识别以及映射成软件结构的方法。
第一节 软件设计的概念和原理
一、抽象和细化
二、信息隐蔽和局部化
三、模块化设计
1、模块和模块化
2、如何使模块独立
3、模块独立的标准:耦合和内聚
第二节 体系结构设计概述
一、体系结构设计的任务
17
1、软件体系结构设计
2、数据结构和数据库设计
3、系统可靠性和安全性设计
4、编写文档和参加复审
二、体系结构设计采用的工具
1、HIOP图
2、结构图
三、体系结构设计的原则
四、体系结构设计说明书
第三节 面向数据流的体系结构设计方法
一、数据流的类型
1、事物流
2、变换流
18
3、混合流
二、设计方法
1、设计步骤
2、变换流设计
3、事物流设计
4、混合流设计
5、设计优化
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
2学时。
第六章 系统详细设计
(一)教学目的与要求
19
通过本章的学习,要求学生了解详细设计的目标、任务,掌握详细设计的原则和方法、描述算法的图形工具和详细设计的文档。
(二)教学内容
主要内容:详细设计的目标、任务、原则和方法,以及详细设计中用于算法描述的图形工具、面向数据结构的设计方法和详细设计的文档。
教学重点:结构化程序设计;算法设计的图形工具;面向数据结构设计方法。
教学难点:面向数据结构设计方法中的模块映射方法。
第一节 详细设计概述
一、详细设计的目标和任务
二、详细设计采用的工具
1、程序流程图
2、结构流程图(盒图)
3、PAD图
4、结构化语言
20
三、详细设计的原则
四、详细设计说明书
第二节 面向数据流的详细设计方法
一、面向数据流方法的关键技术
二、面向数据流方法的缺点
第三节 面向数据结构的详细设计方法
一、面向数据结构设计方法概述
二、Jackson设计方法
1、Jackson图
2、改进的Jackson图
3、Jackson设计方法
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
21
(四)教学时数
2学时。
第七章 编码设计
(一)教学目的与要求
通过本章的学习,要求学生了解编码设计的目的、任务,掌握选择语言的原则,编码的风格及软件效率,软件复杂度的度量方法。
(二)教学内容
主要内容:编码设计的目的、任务、编码语言的选择、编码设计的风格和编码的容错技术。
教学重点:编码语言及其选择;程序设计的风格和效率;软件复杂度的度量方法。
教学难点:软件复杂度的度量方法。
第一节 程序设计语言
一、程序设计语言的分类
二、程序设计语言的特性
22
三、程序设计语言的选择
第二节 编码风格及软件效率
一、编码风格
1、内部文档
2、标识符的命名及说明
3、语句的构造及书写
4、输入/输出
二、软件效率
1、用于提高运行速度的指导原则
2、用于优化存储空间使用的指导原则
第三节 程序复杂度的概念及度量方法
一、程序图
二、程序复杂度的度量方法
23
1、环形复杂度的度量方法
2、文本复杂度的度量方法
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
2学时。
第八章 软件测试
(一)教学目的与要求
通过本章的学习,要求学生了解软件测试的目的和任务,重点掌握软件测试的方法、策略和技术,以及软件测试的文档的编制。
(二)教学内容
主要内容:软件测试的目的、原则、策略和软件测试的方法。
教学重点:测试用例的设计技术。
教学难点:测试用例的设计。
24
第一节 软件测试基础
一、软件测试的概念、目的和原则
1、软件测试的概念
2、软件测试的目的
3、软件测试的基本原则
二、软件测试的过程
三、软件测试的技术
1、静态分析技术
2、动态测试技术
第二节 一、白盒测试概念
二、白盒测试的测试用例设计
1、语句覆盖
25
白盒测试技术 2、判断覆盖
3、条件覆盖
4、判断/条件覆盖
5、条件组合覆盖
6、点覆盖
7、边覆盖
8、路径覆盖
三、穷尽测试
第三节一、黑盒测试概念
二、黑盒测试的测试用例设计
1、等价类划分
2、边界值分析
黑盒测试技术
26
3、因果图法
4、错误推测法
第四节 软件测试计划和测试分析报告
一、软件测试计划的内容
二、软件测试分析报告的内容
第五节一、单元测试
1、单元测试的内容
2、单元测试的步骤
二、集成测试
1、非渐增式测试
2、渐增式测试
三、确认测试
软件测试策略
27
1、确认测试标准
2、软件配置审查
3、α和β测试
四、系统测试
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3学时。
第九章 软件维护
(一)教学目的与要求
通过本章的学习,要求学生了解软件维护的目的和任务,掌握提高软件可维护的方法、技术和文档的编制。
(二)教学内容
主要内容:软件维护的概念、特点和方法。
28
教学重点:软件的可维护性和维护的方法。
教学难点:决定软件可靠性的因素和软件维护的方法及技术。
第一节 软件维护的概念
一、软件维护的定义
二、维护的种类
三、维护的特点
第二节 软件可维护性
一、决定软件可维护性的因素
二、文档
三、可维护性复审
第三节 软件维护的过程
一、维护的组织
1、长期维护小组
29
2、临时维护小组
二、维护报告
三、维护的事件流
四、保存维护记录
五、评价维护活动
一、库存目录分析
二、文档重构
三、逆向工程
四、代码重构
五、数据重构
六、正向工程
(三)教学形式与方法第五节
逆向工程和再生工程
30
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3学时。
第十章 面向对象方法引论
(一)教学目的与要求
通过本章的学习,要求学生了解传统方法的缺陷,面向对象方法的由来和发展;掌握面向对象方法的基本概念,重点掌握面向对象方法的三个模型的建立方法。
(二)教学内容
主要内容:面向对象方法的发展历史、基本概念、以及面向对象的建模。
教学重点:面向对象方法的基本概念;对象模型、动态模型和功能模型的概念。
教学难点:对象模型、动态模型和功能模型的概念。
第一节 软件工程新途径
一、面向对象的思想
二、面向对象的基本概念
31
第二节 面向对象建模
一、建模与模型
二、面向对象模型
一、类-&-对象的表示符号
二、结构的表示符号
三、主题
四、关联与链属性
五、服务与消息连接
六、对象模型举例
一、事件
二、状态
第三节 对象模型
第四节 动态模型
32
三、行为
四、脚本
五、事件跟踪图
六、状态图
第五节 功能模型
一、功能模型的概念
二、三个模型之间的关系
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3学时。
第十一章 面向对象分析
(一)教学目的与要求
33
通过本章的学习,要求学生了解面向对象分析的目的,掌握面向对象分析的基本概念和步骤,重点掌握面向对象分析的方法和技术。
(二)教学内容
主要内容:面向对象分析的目的、步骤、分析的方法和技术。
教学重点:对象模型、动态模型和功能模型的构建。
教学难点:三个模型构建的方法。
第一节 面向对象分析的过程
一、面向对象分析过程概述
二、实例需求文档
三、面向对象分析的三个模型与五个层次
第二节 建立对象模型
一、确定类与对象
二、确定关联
三、确定属性
34
四、确定主题
五、识别结构
六、优化对象模型
一、编写脚本
二、事件跟踪图
三、状态图
四、优化动态模型
一、基本系统模型
二、细化数据流图
三、功能描述
第三节 建立动态模型
第四节 建立功能模型
第五节 定义服务
35
一、访问对象属性的操作
二、来自事件驱动的操作
三、处理对应的操作
四、消除冗余操作
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3学时。
第十二章 面向对象设计
(一)教学目的与要求
通过本章的学习,要求学生了解面向对象设计的目的,掌握面向对象设计的基本原则,重点掌握面向对象设计的方法、原理和技术。
(二)教学内容
主要内容:面向对象设计的目的、原则、内容和任务。
36
教学重点:面向对象设计的基本原则、启发式规则;面向对象设计的任务。
教学难点:面向对象设计任务的类中提供的服务的设计和关联的设计。
第一节 面向对象设计的准则
一、设计准则
1、模块化
2、抽象化
3、信息隐蔽
4、弱耦合
5、强内聚
6、可复用性
二、设计策略
1、设计结果应清晰易懂
2、一般-特殊结构的深度应适当
37
3、设计简单的类
4、设计简单的协议
5、设计简单的服务
6、减少设计变动
三、系统分解与组织
1、面向对象设计的五个层次四个部分
2、子系统间的交互方式
3、系统组织
4、设计系统的拓扑结构
第二节 问题域子系统设计
一、调整需求
二、重用现有的类
三、组合问题域类
38
四、增添一般化类以便建立协议
五、简化继承
六、设计实例
第三节 一、设计准则
二、设计策略
第四节 一、分析并发性
二、设计任务管理子系统
第五节 一、选择数据存储管理模式
1、文件管理系统
2、关系数据库管理系统
人机交互子系统设计
任务管理子系统设计
数据管理子系统设计
39
3、面向对象数据库管理系统
二、设计数据管理子系统
1、设计数据格式
2、设计相应的服务
3、设计实例
一、设计服务
1、确定类中的应有服务
2、设计实现服务的方法
二、设计关联
1、关联的遍历
2、单向关联的实现
3、双向关联的实现
第六节服务与管理设计40
4、链属性的实现
第七节 面向对象设计的优化
一、确定优先级
二、提高效率的技术
三、调整继承关系
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
6学时。
第十三章 面向对象的实现
(一)教学目的与要求
通过本章的学习,要求学生了解面向对象实现的目的和面向程序设计语言的特点,掌握选择面向对象程序设计语言的基本原则,面向对象程序设计的风格和面向对象的测试技术。重点掌握面向对象实现的方法和技术。
41
(二)教学内容
主要内容:面向对象实现的目的,面向对象的程序设计语言,面向对象程序设计风格和面向对象程序设计的测试。
教学重点:面向对象实现的方法和技术。
教学难点:面向对象的测试。
第一节 面向对象的程序设计语言
一、面向对象程序设计语言优点
1、一致的表示方法
2、可重用性
3、可维护性
二、面向对象程序设计语言的技术特点
1、支持类与对象概念的机制
2、实现整体-部分结构的机制
3、实现一般特殊机构的机制
42
4、实现属性和服务的机制
5、类型检查
6、类库
7、效率
8、永久保存对象
9、类模板
10、开发环境
三、选择面向对象语言
1、未来能否占主导地位
2、可重用性
3、类库和开发环境
第二节 一、提高可重用性
面向对象实现的特征
43
1、可重用的概念
2、提高可重用性的方法
二、提高可扩充性
三、提高健壮性
第三节 面向对象测试
一、面向对象软件的单元测试
二、面向对象软件的集成测试
1、传统测试中的技术
2、面向对象的特有技术
三、面向对象软件的确认测试与系统测试
1、确认测试
2、系统测试
四、设计测试用例
44
1、面向对象概念对测试用例设计的影响
2、测试用例的设计
第四节 组建技术简介
一、组件的概念及特点
1、组件的概念
2、组件的特点
二、组件分类及开发技术
1、组件分类
2、组件开发技术
三、组件开发原则与组件管理
1、组件开发原则
2、组件管理
四、应有组建技术开放应用系统
45
1、推荐模型开发
2、应用组建技术开发应用系统
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3学时。
第十四章 软件工程项目管理基础
(一)教学目的与要求
通过本章的学习,了解软件项目管理的概念,掌握软件项目管理的内容和方法。
(二)教学内容
主要内容:软件项目管理的概念,人员管理、问题管理和过程管理的内容和方法。
教学重点:人员管理、问题管理和过程管理的内容和方法。
教学难点:人员管理、问题管理和过程管理的方法。
46
第一节 项目管理的范围
一、项目管理的三个P
二、管理三个P的原因
一、项目参与者
二、项目负责人
三、项目组的组织结构
1、常见的组织形式
2、四种“范型”
四、小组内的协调和通信一、问题的定义
二、问题管理的内容
第二节 人员角色管理
第三节 问题管理
47
1、问题界定
2、问题分解
第四节 过程管理
一、过程的概念
二、过程选择的原则
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
2学时。
第十五章 软件度量
(一)教学目的与要求
通过本章的学习,了解软件度量的必要性,掌握软件度量和评价软件质量的相关概念,重点掌握软件度量和提高软件质量的方法和技术。
(二)教学内容
48
主要内容:软件度量的概念,软件度量的模式,软件质量的度量和软件过程中度量数据的集成等内容。
教学重点:软件度量评价技术,软件质量的度量技术。
教学难点:软件过程中度量数据的集成技术。
第一节 软件度量
一、直接度量
二、间接度量
三、软件度量的内涵及种类
第二节 面向规模的度量
第三节 面向功能的度量
第四节 软件质量的度量
一、影响软件质量的因素
二、软件质量度量
第五节 在软件过程中集成度量数据
49
一、建立基线
二、度量数据的收集、计算和评价
1、收集过程
2、度量数据的计算和评价
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3学时。
第十六章 软件计划
(一)教学目的与要求
通过本章的学习,要求学生了解软件项目计划的基本知识,了解度量工作量和度量基线的作用与意义,学会估算项目规模、工作量与成本等要素的方法和技术。
(二)教学内容
主要内容:软件范围的界定,软件资源需求,项目估算,软件计划的结构与求精,计
50
划的跟踪、度量和控制。
教学重点:估算项目规模、工作量和成本等要素的技术。
教学难点:项目估算模型。
第一节 软件范围界定
一、软件范围界定的概念和内容
二、软件范围界定的例子
第二节 资源需求
第三节 项目估算
一、基于问题分解的估算
二、基于过程分解的估算
三、经验估算模型
四、COCOMO模型
五、自动估算工具
51
第四节 软件项目计划的结构
第五节 项目计划的分解求精
一、任务的确定与并发处理
二、制定明细的开发进度计划
第六节 计划跟踪监督
第七节 计划执行情况的度量与计划调控
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3学时。
第十七章 软件质量保证
(一)教学目的与要求
通过本章的学习,要求学生了解了解软件质量的概念,掌握度量和评价软件质量的相关概念,重点掌握提高软件质量的方法和技术。
52
(二)教学内容
主要内容:软件质量与SQA,软件复审和正式的技术复审,基于统计的质量保证,软件可靠性和SQA计划。
教学重点:软件质量与SQA、软件复审和软件可靠性等软件质量的度量和评价技术。
教学难点:软件可靠性评价技术。
第一节 软件质量与SQA
一、软件质量
二、SQA活动
第二节 软件复审
一、软件复审
二、软件缺陷对成本的影响
三、缺陷的放大和消除
第三节 正式的技术复审
一、复审会议的组织
53
二、复审报告和记录保存
三、复审指南
第四节 基于统计的质量保证
第五节 软件可靠性
一、可靠性和可用性
二、平均无故障运行时间的估算
1、植入故障法
2、分别测试法
第六节 SQA计划
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3学时。
54
第十八章 软件配置管理
(一)教学目的与要求
通过本章的学习,要求学生了解软件配置管理的概念,掌握软件配置管理过程,重点掌握基线、版本和变更控制的方法与技术。
(二)教学内容
主要内容:软件配置管理的任务和SCM过程,版本和变更控制,配置审核与状态报告。
教学重点:软件配置管理的SCM过程,版本和变更控制以及配置审核。
教学难点:基线及其产生方法。
第一节 软件配置管理的任务
一、基线
二、软件配置项
第二节 SCM过程
第三节 软件配置中对象的标识
55
第四节 版本控制
第五节 变更控制
第六节 配置审核与状态报告
一、配置审核
二、配置状态报告
(三)教学形式与方法
本章采用课堂讲授和多媒体课件的方式进行教学。
(四)教学时数
3学时。
三、考核方式
本课程采用平时考查、期中考试和期末笔试等考核方式。
四、教材选用
1、张海藩:《软件工程导论(第四版)》,清华大学出版社,2003年12月第4版。
56
2、李代平:《软件工程》,冶金工业出版社,2002年8月第1版。
57
因篇幅问题不能全部显示,请点此查看更多更全内容