软件工程课程教学大纲 Software Engineering 课程编号:1613116 课程类别:专业课 适用专业:农学(农业信息技术) 先修课程:高等数学、计算机应用基础、C及C+语言与程序设计 后续课程:Visual Basic的程序设计 总学分:30学分 教学目的与要求:通过本课程的教学,使学生了解传统的结构分析方法和正在发展的面向对象的开 发方法学,理解从可行性论证直到软件维护各阶段的内容:了解软件生命周期中各个阶段软件开发 技术、较好地掌握软件工程中基本概念、基本方法、基本原理:了解程序设计与程序测试及维护在 整个软件开发中所占的比例,掌握软件项目工作量及进度阶段分布的计算方法:通过案例分析,掌 握开发 一般软件方法及技术, 为以后生产开发大型复杂软件打下良好基础。 教学内容与学时安排 学时分配 序号 章名 讲 实 上 讨 习 其 授 机 4 1 软件工程引论 2 2 2 软件工程管理技术 可行性研究 4 4 4 需求分析和规范 7 2 5 总体设计 6 6 6 详细设计 5 5 7 程序设计 2 2 8 测试 6 9 面向对象方法学引论 3 3 10 面向对象的系统分析 3 3 11 面向对象的系统设计 3 12 面向对象系统的测试 2 第一章软件工程引论 (2学时) 1、教学基本要求 (1)了解软件的特征,理解软件的生命周期法: 1
1 软件工程课程教学大纲 Software Engineering 课程编号:1613116 课程类别:专业课 适用专业:农学(农业信息技术) 先修课程:高等数学、计算机应用基础、C 及 C++语言与程序设计 后续课程:Visual Basic 的程序设计 总 学 分:3.0 学分 教学目的与要求:通过本课程的教学,使学生了解传统的结构分析方法和正在发展的面向对象的开 发方法学,理解从可行性论证直到软件维护各阶段的内容;了解软件生命周期中各个阶段软件开发 技术、较好地掌握软件工程中基本概念、基本方法、基本原理;了解程序设计与程序测试及维护在 整个软件开发中所占的比例,掌握软件项目工作量及进度阶段分布的计算方法;通过案例分析,掌 握开发一般软件方法及技术,为以后生产开发大型复杂软件打下良好基础。 教学内容与学时安排 序号 章 名 学时分配 讲 授 实 验 上 机 讨 论 习 题 其 它 小 计 1 软件工程引论 2 2 2 软件工程管理技术 5 5 3 可行性研究 4 4 4 需求分析和规范 7 7 5 总体设计 6 6 6 详细设计 5 5 7 程序设计 2 2 8 测试 6 6 9 面向对象方法学引论 3 3 10 面向对象的系统分析 3 3 11 面向对象的系统设计 3 3 12 面向对象系统的测试 2 2 第一章 软件工程引论 (2 学时) 1、教学基本要求 (1)了解软件的特征,理解软件的生命周期法;
(2)掌握常用的过程模型 2、教学基本内容 第一节软件困境 一、软件的特征 二、软件开发问题 第二节软件工程 一、软件的生命周期法 二、两种软件开发范例 三、软件开发的过程模型 第三节某些广泛使用的过程模型 一、瀑布模型 二、迅速原型模型 三、增量模型 第二章软件工程管理技术 (5学时) 1、教学基本要求 (1)了解软件质量保证与正式技术审查: (2)理解软件特征量的概念和应用: (3)掌握软件规模的估计及方法,软件工作量估计、软件项目的调度技术 2、教学基本内容 第一节软件特征量 度量、特征量和指示器 面向尺寸的特征量 三、面向功能的特征量 #基木的功能点度量:扩东的功能点度量 四、联系两种特征量方法 第二节软件规模估计 一、问题的叙述 二、基于L0C的估计 三、基于FP的估计 ◆使用粗略估计方法:#使用分析模型方法。 第三节软件工作量的估计
2 (2)掌握常用的过程模型。 2、教学基本内容 第一节 软件困境 一、软件的特征 二、软件开发问题 第二节 软件工程 一、软件的生命周期法 二、两种软件开发范例 三、软件开发的过程模型 第三节 某些广泛使用的过程模型 一、瀑布模型 二、迅速原型模型 三、增量模型 第二章 软件工程管理技术 (5 学时) 1、教学基本要求 (1)了解软件质量保证与正式技术审查; (2)理解软件特征量的概念和应用; (3)掌握软件规模的估计及方法,软件工作量估计、软件项目的调度技术。 2、教学基本内容 第一节 软件特征量 一、度量、特征量和指示器 二、面向尺寸的特征量 三、面向功能的特征量 *#基本的功能点度量;扩充的功能点度量。 四、联系两种特征量方法 第二节 软件规模估计 一、问题的叙述 二、基于 LOC 的估计 三、基于 FP 的估计 *使用粗略估计方法;#使用分析模型方法。 第三节 软件工作量的估计
一、参数方程方法 静态变量模型:◆动态多变模型。 一、G0C0M0模型 ◆基本COCOMO模型: #中级COCOMO模型。 第四节软件项目的调度 一、使用C0C0M0模型确定项目进度 ·项目开发期限估算:◆工作量与进度的阶段分布:#插值法。 二、项目调度技术 时间条图:#工程网络图 第五节人员组织 一、各阶段的项目活动分布 二、项目的组织机构 广义软件项目组织图:幸组织图的制作准则。 第六节软件质量管理 一、软件质量保证 软件质量保证活动:软件市查 二、正式技术审查 审查会议:审查的指导原则 三、统计质量保证 第三章可行性研究 (4学时) 1、教学基本要求 (1)了解可行性研究的基础、任务与步骤: (2)理解最有效成本解与最大可行解的概念与应用 (3)掌握应用净资金现值方法进行成本/效益分析技术 2、教学基本内容 第一节可行性研究的基础 范围与目标叙述。 第二节可行性研究的任务 一、技术可行性 二、经济可行性 三、操作可行性 四、调度可行性 第三节成本/效益分析 3
3 一、参数方程方法 静态变量模型;*动态多变模型。 二、COCOMO 模型 *基本 COCOMO 模型;#中级 COCOMO 模型。 第四节 软件项目的调度 一、使用 COCOMO 模型确定项目进度 *项目开发期限估算;*工作量与进度的阶段分布;#插值法。 二、项目调度技术 时间条图;*#工程网络图。 第五节 人员组织 一、各阶段的项目活动分布 二、项目的组织机构 广义软件项目组织图;*组织图的制作准则。 第六节 软件质量管理 一、软件质量保证 软件质量保证活动;软件审查。 二、正式技术审查 审查会议;审查的指导原则。 三、统计质量保证 第三章 可行性研究 (4 学时) 1、教学基本要求 (1)了解可行性研究的基础、任务与步骤; (2)理解最有效成本解与最大可行解的概念与应用; (3)掌握应用净资金现值方法进行成本/效益分析技术。 2、教学基本内容 第一节 可行性研究的基础 范围与目标叙述。 第二节 可行性研究的任务 一、技术可行性 二、经济可行性 三、操作可行性 四、调度可行性 第三节 成本/效益分析
一、系统的开发成本与运营成本 系统的开发成本;系统的运营成本。 二、来自计算机系统的效益 次性效盗:运营效益 三、成本/效益分析方法 *回收分析:*#净资金现值分析方法。 第四节可行性研究的步骤 确定新系统的规模与目标 二、研究现行系统 ·系统模型:综述现行系统:研究现存系统的方法。 三、导出新系统的物理模型 四、导出实现方案与洗搔最优方案 导出实现方案:◆选择最优系统方案:选择最优方案实例 五、进行成本/效益分析 六、制订开发计划 七、书写文档 第四章需求分析和规范 (7学时) 1、教学基本要求 (1)了解用户需求分析的任务和方法,形式化规范技术及用户需求规范的评审等: (2)理解有限状态机、Peti网等: (3)掌握数据流程图,数据字典,判定表与判定树等。 2、教学基本内容 第一节用户需求分析的任务 一、确定新系统的综合要求 新系统的功能要求与边界确定:◆系统的性能要求:系统的环境要求:扩充与升级要求。 二、分析现行系统 现行 系统的功能需求:现行系统的行为需求:系统的数据需求:现行系统的查询需求。 三、导出新系统的模型 四、修订开发计划 五、开发软件模型系统 第二节需求规范 一、规范的原则与表达方式要求 二、需求规范内容 第三节数据流程图
4 一、系统的开发成本与运营成本 系统的开发成本;系统的运营成本。 二、来自计算机系统的效益 一次性效益;运营效益。 三、成本/效益分析方法 *回收分析;*#净资金现值分析方法。 第四节 可行性研究的步骤 一、确定新系统的规模与目标 二、研究现行系统 *系统模型;综述现行系统;研究现存系统的方法。 三、导出新系统的物理模型 四、导出实现方案与选择最优方案 导出实现方案;*选择最优系统方案;选择最优方案实例。 五、进行成本/效益分析 六、制订开发计划 七、书写文档 第四章 需求分析和规范 (7 学时) 1、教学基本要求 (1)了解用户需求分析的任务和方法,形式化规范技术及用户需求规范的评审等; (2)理解有限状态机、Petri 网等; (3)掌握数据流程图,数据字典,判定表与判定树等。 2、教学基本内容 第一节 用户需求分析的任务 一、确定新系统的综合要求 新系统的功能要求与边界确定;*系统的性能要求;系统的环境要求;扩充与升级要求。 二、分析现行系统 现行系统的功能需求;现行系统的行为需求;系统的数据需求;现行系统的查询需求。 三、导出新系统的模型 四、修订开发计划 五、开发软件模型系统 第二节 需求规范 一、规范的原则与表达方式要求 二、需求规范内容 第三节 数据流程图
一、数据流程图的概念 ◆数据流程图中的符号:*#数据流程图的概念与案例:数据流程图绘制的有关规定。 第四节数据字典 数据元素的定义 二、数据流的定义 三、数据存贮的定义 四、处理定义 五、对实现计算机数据字典的要求 第五节判定表与判定树 一、判定表 #判定表的构造:*判定表的变种:判定表的优缺点。 二、判定树 判定树的构造与优缺点。 第六节有限状态机 一、有限状态机的概念 幸有限状态机的概念:有限状态机的表示 二、有限状态机应用案例 第七节Petri网 一、Petri网的概念 二、Petri网的应用 第八节形式化规范技术 一、序列及有关的数学符号 二、形式方法中的一些概念 第九节用户需求规范的评审 包括宏观级评审和细节级评审。 第五章总体设计 (6学时) 1、教学基本要求 (1)了解总体设计特征量的概念和方法,系统结构设计的方法: (2)理解软件结构的设计方法及程序结构的优化设计: (3)掌握模块化原理、内聚和耦合及总体设计的图形工具等。 2、教学基本内容 第一节总体设计的概念与原则
5 一、数据流程图的概念 *数据流程图中的符号;*#数据流程图的概念与案例;数据流程图绘制的有关规定。 第四节 数据字典 一、数据元素的定义 二、数据流的定义 三、数据存贮的定义 四、处理定义 五、对实现计算机数据字典的要求 第五节 判定表与判定树 一、判定表 *#判定表的构造;*判定表的变种;*判定表的优缺点。 二、判定树 *判定树的构造与优缺点。 第六节 有限状态机 一、有限状态机的概念 *有限状态机的概念;有限状态机的表示。 二、有限状态机应用案例 第七节 Petri 网 一、Petri 网的概念 二、Petri 网的应用 第八节 形式化规范技术 一、序列及有关的数学符号 二、形式方法中的一些概念 第九节 用户需求规范的评审 包括宏观级评审和细节级评审。 第五章 总体设计 (6 学时) 1、教学基本要求 (1)了解总体设计特征量的概念和方法,系统结构设计的方法; (2)理解软件结构的设计方法及程序结构的优化设计; (3)掌握模块化原理、内聚和耦合及总体设计的图形工具等。 2、教学基本内容 第一节 总体设计的概念与原则
一、总体设计中的程序结构 软件的层次结构:*结构的划分。 二、总体设计中的数据结构 普通的数据结构: 数据库的结构。 三、总体设计的指导原 第二节模块化原理 一、模块化的概念 软件系统的划分。 二、模块化设计 三、耦合 *耦合的概念:样耦合的分类:耦合的应用。 四、内聚 ◆内聚的概念 :#内聚的分类:·内聚的应用准则:内聚分类的判定 五、模块化设计的经验规则 第三节图形工具 一、层次图 一、结构图 三、HIPO图 第四节软件结构的设计方法 一、变换流与事务流 变换流:*事务流 二、变换流到程序结构的变换 变换的步骤 三、事务流到程序结构的变换 四、设计的后处理与体系结构的优化 第五节程序结构的优化设计 一、最小和原理的应用 二、程序结构平衡 第六节大型软件系统设计中的可集成性问题 开发大型软件应用注意的一些关键环节。 第六章详细设计 (5学时) 1、教学基本要求 (1)了解人一机接口设计的指导原则,字符型接口设计格式与图形接口设计特点: (2)理解图形逻辑图的使用,结构程序设计的概念与技术: 6
6 一、总体设计中的程序结构 软件的层次结构;*结构的划分。 二、总体设计中的数据结构 普通的数据结构;*数据库的结构。 三、总体设计的指导原则 第二节 模块化原理 一、模块化的概念 *模块;软件系统的划分。 二、模块化设计 三、耦合 *耦合的概念;*#耦合的分类;*耦合的应用。 四、内聚 *内聚的概念;*#内聚的分类;*内聚的应用准则;内聚分类的判定。 五、模块化设计的经验规则 第三节 图形工具 一、层次图 二、结构图 三、HIPO 图 第四节 软件结构的设计方法 一、变换流与事务流 *变换流;*事务流。 二、变换流到程序结构的变换 *变换的步骤。 三、事务流到程序结构的变换 四、设计的后处理与体系结构的优化 第五节 程序结构的优化设计 一、最小和原理的应用 二、程序结构平衡 第六节 大型软件系统设计中的可集成性问题 开发大型软件应用注意的一些关键环节。 第六章 详细设计 (5 学时) 1、教学基本要求 (1)了解人-机接口设计的指导原则,字符型接口设计格式与图形接口设计特点; (2)理解图形逻辑图的使用,结构程序设计的概念与技术;
(3)掌握使用图形逻辑图进行模块逻辑开发,非结构程序转换为结构程序的技术。 2、教学基本内容 第一节数据设计 一、数据库的物理设计 二、数据结构设计 第二节人一机接口的设计 一、人一机接口设计的一般性原则 影响人一机接口设计的因素:·人一机接口设计的一般性指导原则。 二、字符型接口 输入屏幕设计:输出屏幕设计。 三、图形接口 窗口上的区域:构成窗口的部件:图形接口能给出的更多信息。 第三节模块逻辑的设计 一、 图形罗铝图的符号 顶序符号: 元条件选择:多元条件选择:循环调用结构。 二、模块逻辑的精炼过程 第四节表示程序逻辑的工具 一、程序流程图 二、过程描述语言 三、盒式图 第五节结构程序设计 一、非结物化的程序 二、结 结构程序的概念:结构程序案例。 三、非结构程序转换成结构程序 ◆程序结构定理:非结构程序案例:*#转换方式。 第六节详细设计的特征量 一、接口设计的特征量 ◆安排适度量:生成任务描述:计算LA一优化的安排。 二、程序复杂性度量 环形复杂性度量 第七章程序设计 (2学时) 1、教学基本要求
7 (3)掌握使用图形逻辑图进行模块逻辑开发,非结构程序转换为结构程序的技术。 2、教学基本内容 第一节 数据设计 一、数据库的物理设计 二、数据结构设计 第二节 人-机接口的设计 一、人-机接口设计的一般性原则 影响人-机接口设计的因素;*人-机接口设计的一般性指导原则。 二、字符型接口 输入屏幕设计;输出屏幕设计。 三、图形接口 窗口上的区域;构成窗口的部件;图形接口能给出的更多信息。 第三节 模块逻辑的设计 一、图形逻辑图的符号 顺序符号;二元条件选择;多元条件选择;循环调用结构。 二、模块逻辑的精炼过程 第四节 表示程序逻辑的工具 一、程序流程图 二、过程描述语言 三、盒式图 第五节 结构程序设计 一、非结构化的程序 二、结构程序设计 *结构程序的概念;结构程序案例。 三、非结构程序转换成结构程序 *程序结构定理;非结构程序案例;*#转换方式。 第六节 详细设计的特征量 一、接口设计的特征量 *安排适度量;生成任务描述;计算 LA-优化的安排。 二、程序复杂性度量 *环形复杂性度量。 第七章 程序设计 (2 学时) 1、教学基本要求
(1)了解程序设计语言的选择,反缺陷程序设计,理解程序设计风格 (2)掌握程序语句的处理方法。 2、教学基本内容 第一节程序设计语言 一、广泛应用的程序设计语言 二、程序设计语言的选择 生产率因素:软件的应用领域:程序员的知识与用户的要求:CASE工具支持。 第二节程序设计风格 程序的内部文档 二、程序的标识符应表明相应的意义 三、程序清单的安排 语句序列:率循环语句:率条件选择语句。 四、程序中语句 第三节反缺陷程序设计 一、关于反缺陷的争论 二、程序需要校验的方面 三、反缺陷程序设计技术 第八章测试 (6学时) 1、教学基本要求 (1)了解集成测试的特征量及调试过程,理解测试安全的设计与运用: (2)掌握白盒测试、黑盒测试、单元测试及集成测试的概念。 2、教学基本内容 第一节白盒测试 一、基本途径测试 ◆独立途径:导出测试案例。 二、条件测试 三、数据流测试 四、循环测试 简单循环:嵌套循环:级联循环。 第二节黑盒测试 一、等价类划分 概念:◆划分原则
8 (1)了解程序设计语言的选择,反缺陷程序设计,理解程序设计风格; (2)掌握程序语句的处理方法。 2、教学基本内容 第一节 程序设计语言 一、广泛应用的程序设计语言 二、程序设计语言的选择 生产率因素;软件的应用领域;程序员的知识与用户的要求;CASE 工具支持。 第二节 程序设计风格 一、程序的内部文档 二、程序的标识符应表明相应的意义 三、程序清单的安排 *语句序列;*循环语句;*条件选择语句。 四、程序中语句 第三节 反缺陷程序设计 一、关于反缺陷的争论 二、程序需要校验的方面 三、反缺陷程序设计技术 第八章 测试 (6 学时) 1、教学基本要求 (1)了解集成测试的特征量及调试过程,理解测试安全的设计与运用; (2)掌握白盒测试、黑盒测试、单元测试及集成测试的概念。 2、教学基本内容 第一节 白盒测试 一、基本途径测试 *独立途径;导出测试案例。 二、条件测试 三、数据流测试 四、循环测试 简单循环;嵌套循环;级联循环。 第二节 黑盒测试 一、等价类划分 概念;*划分原则
二、边界值分析 第三节单元测试 单元测试的考志 *模块测试环境:#测试环境的实现。 第四节集成测试 自顶向下集成测试 集成测试的过程: *自顶向下测试的优点:*自顶向下集成测试的缺点。 二、自底向上集成测试 三、自顶向下和自底向上结合的集成测试 四、回归测试 第五节调试 一、程序中错误的类型 算法错误:算法实现错误:系统错误:键入错误。 二、调试方法 三、调试策路 第六节集成测试的特征量 一、程序中错误总量的估算 ◆错误植入法:错误标记法。 二、程序的可靠性 平均无故暗时间 三、零缺陷试验技术 第九章面向对象方法学引论 (3学时) 1、教学基本要求 (1)了解面向对象的程序设计的特性,理解面向对象的分析: (2)掌握面向对象的概念与应用,面向对象的系统设计。 2、教学基本内容 第一节传统方法学的缺点 开发困难:维护困难。 第二节面向对象的概念 一、对象 *对象:标识符:*类:实例:例化
9 二、边界值分析 第三节 单元测试 一、单元测试的考虑 二、单元测试的过程 *模块测试环境;#测试环境的实现。 第四节 集成测试 一、自顶向下集成测试 *集成测试的过程;*自顶向下测试的优点;*自顶向下集成测试的缺点。 二、自底向上集成测试 三、自顶向下和自底向上结合的集成测试 四、回归测试 第五节 调试 一、程序中错误的类型 算法错误;算法实现错误;系统错误;键入错误。 二、调试方法 三、调试策略 第六节 集成测试的特征量 一、程序中错误总量的估算 *错误植入法;错误标记法。 二、程序的可靠性 *平均无故障时间。 三、零缺陷试验技术 第九章 面向对象方法学引论 (3 学时) 1、教学基本要求 (1)了解面向对象的程序设计的特性,理解面向对象的分析; (2)掌握面向对象的概念与应用,面向对象的系统设计。 2、教学基本内容 第一节 传统方法学的缺点 开发困难;维护困难。 第二节 面向对象的概念 一、对象 *对象;标识符;*类;实例;例化
二、对象间关系 概化一特化关系:整体一部分关系:对象的相互作用关系:关联关系。 第三节面向对象的程序设计 一、面向对象程序设计的风格 二、面向对象程序的特性 ◆封装性:*继承性:*多态性。 第四节面向对象的系统分析和设计 一、面向对象的分析(O0A) 标识类和对象:规定属性:定义操作。 二、面向对象的设计(000) ◆面向对象的系统设计:设计考虑。 第十章面向对象的系统分析 (3学时) 1、教学基本要求 (1)了解领域分析过程,00分析过程等,理解系统和子系统及对象联系模型: (2)掌握类一责任一协作者模型。 2、教学基本内容 第一节领域分析 一、再使用和领域分析 二、领域分析过程 第二节00分析模型的一般过程和部件 般的开发过程:一般部件 第三节OOA过程 一、使用案例 角色:幸使用案例:使用案例框图。 二、类一责任一协作者模型 类:责任:协作者。 三、定义结构和层次 四、定义系统和子系统 五、对象联系模型 *相互作用类型的对象联系:事务类型的对象关系。 第四节对象行为模型 一、对象的服务
10 二、对象间关系 概化-特化关系;整体-部分关系;对象的相互作用关系;关联关系。 第三节 面向对象的程序设计 一、面向对象程序设计的风格 二、面向对象程序的特性 *封装性;*继承性;*多态性。 第四节 面向对象的系统分析和设计 一、面向对象的分析(OOA) 标识类和对象;规定属性;定义操作。 二、面向对象的设计(OOD) *面向对象的系统设计;设计考虑。 第十章 面向对象的系统分析 (3学时) 1、教学基本要求 (1)了解领域分析过程,OO 分析过程等,理解系统和子系统及对象联系模型; (2)掌握类-责任-协作者模型。 2、教学基本内容 第一节 领域分析 一、再使用和领域分析 二、领域分析过程 第二节 OO 分析模型的一般过程和部件 一般的开发过程;一般部件。 第三节 OOA 过程 一、使用案例 角色;*使用案例;使用案例框图。 二、类-责任-协作者模型 *类;责任;协作者。 三、定义结构和层次 四、定义系统和子系统 五、对象联系模型 *相互作用类型的对象联系;事务类型的对象关系。 第四节 对象行为模型 一、对象的服务