[软件工程]教学大纲

软件工程

一、 说明

(一) 课程性质

《软件工程》课程是计算机科学与技术专业必修的一门专业课程。为了摆脱软件危机的困扰,一门研究软件开发与维护的普遍原理和技术的工程学科——软件工程学从60年代末期开始迅速发展起来了,现在它已经成为计算机科学技术的一个重要分支,一个异常活跃的研究领域。严格遵循软件工程方法论可以大大提高软件开发的成功率,能够显著减少软件开发和维护中的问题。软件工程学(通常简称软件工程)研究的范围非常广泛,包括技术方法、工具和管理等许多方面,软件工程又是一门迅速发展的新兴学科,新的技术方法和工具不断涌现,真可谓五花八门层出不穷。本课程将着重从实用角度讲述软件工程的基本原理、概念和技术方法,同时也尽量注意课程的全面性和系统性。使学生学完本课程之后既能对实际的软件开发工作有所帮助,又能为今后深入研究这门学科奠定良好的基础。

本课程应以高级算法语言、数据结构、算法设计等课程为基础。除此,要求学生有一定的编程能力或经验。

(二) 教学目的

本课程的目的是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。

本课程的具体任务是:

1. 概括介绍软件工程学产生的历史背景以及它的基本原理、概念和方法。

2. 按软件生存周期的顺序介绍各个阶段的任务、过程、方法和工具。

3. 讨论软件工程的管理技术。

(三) 教学内容

正文共13章,第一章概括介绍软件工程学产生的历史背景以及它的基本原理、概念和方法。第二章到第八章按软件生存周期的顺序介绍各个阶段的任务、过程、方法和工具。第九章到第十二章对面向对象的方法作了全面、系统、深入的介绍,强调了软件工程与人工智能的相互结合、互相促进的发展趋势。第十三章着重讨论软件工程的管理技术。

(四) 教学时数

课堂教学:36学时 实验教学:36学时 总学时:36+36/2=54(学时)

(五) 教学方式

以讲授法为主,结合讨论法和案例分析法。

二、 本文

理论部分

第一章 软件危机与软件工程

教学要点:

什么是软件工程学、软件工程的基本原理、软件工程学所面临的问题、软件工程的现状及其发展前景等问题。

教学时数:

2学时

第一节 软件危机

1、 什么是软件危机

2、 产生软件危机的原因

3、 解决软件危机的途径

第二节 软件工程

1、 软件工程的基本原理

2、 软件工程的传统途径

3、 生命周期各个阶段的基本任务

4、 瀑布模型

第三节 技术审查和管理复审

1、 进行审查和复审的必要性

2、 技术审查的标准和方法

教学要求:

了解软件危机产生的原因及解决软件危机的途径;掌握软件工程的基本原理和生命周期法;了解技术审查和管理复审的相关内容。

考核要求:

领会软件工程的基本原理及生命周期方法学,要求学生明确本课程研究的范围及其所涉及到的领域,从而对软件工程学有一个初步而全面的认识。

1、 领会软件危机的定义;

2、 掌握软件工程的基本原理及生命周期各个阶段的基本任务。

第二章 可行性研究

教学要点:

可行性研究的必要性,以及它的基本任务和步骤,用于可行性研究的具体方法和工具。

教学时数:

4学时

教学内容:

第一节 可行性研究的任务

第二节 可行性研究的步骤

1、 复查系统规模和目标

2、 研究目前正在使用的系统

3、 导出新系统的高层逻辑模型

4、 重新定义问题

5、 导出和评价供选择的方法

6、 推荐行动方针

7、 草拟开发计划

8、 书写文档提交审查

第三节 系统流程图

1、 符号

2、 例子

3、 分层

第四节 数据流图

1、 符号

2、 例子

4、 用途

第五节 数据字典

1、 数据字典的内容

2、 定义数据的方法

3、 数据字典的用途

4、 数据字典的实现

第六节 成本效益分析

1、 成本估计

2、 成本效益分析的方法

教学要求:

了解可行性分析的任务;掌握可行性研究的步骤;能够应用系统流程图、数据流图及数据字典;了解成本效益分析。

考核要求:

领会可行性研究的必要性,以及它的基本任务和基本步骤,在此基础上再进一步学习具体方法和工具。

1、 领会可行性研究的必要性;

2、 综合应用系统流程图;

3、 综合应用数据流图。

第三章 需求分析

教学要点:

需求分析的任务与步骤、需求分析方法与工具、需求分析说明与评审。

教学时数:

4学时

教学内容:

第一节 需求分析的任务

1、 确定对系统的综合要求

2、 分析系统的数据要求

3、 导出系统的逻辑模型

4、 修正系统的开发计划

5、 开发原型系统

第二节 分析过程

1、 沿数据流图回溯

2、 用户复查

3、 细化数据流图

4、 修正开发计划

5、 书写文档

6、 审查和复审

第三节 概念模型和规范化

1、 ER模型

2、 范式

第四节 图形工具

1、 层次方框图

2、 Warnier图

第五节 验证软件需求

1、 从哪些方面验证软件需求的正确性

2、 验证软件需求的方法

3、 用于需求分析的软件工具

4、 超高级语言和第四代语言

教学要求:

理解需求分析的任务;掌握分析过程和概念模型;会应用图形工具。

考核要求:

领会需求分析的方法,理解需求分析的任务和原则,熟练应用需求分析的工具。

1、 领会需求分析的任务;

2、 综合应用概念模型;

3、 综合应用层次方框图。

第四章 总体设计

教学要点:

软件设计的目标和任务,软件设计概念及原理,模块的独立性,启发式规则,结构化设计方法。 教学时数:

4学时

教学内容:

第一节 总体设计的过程

1、 设想供选择的方案

2、 选取合理的方案

3、 推荐最佳方案

4、 功能分解

5、 设计软件结构

6、 数据库设计

7、 制定测试计划

8、 书写文档

9、 审查和复审

第二节 软件设计的概念和原理

1、 模块化

2、 抽象

3、 信息隐蔽和局部化

4、 模块独立

第三节 启发式规则

1、 改进软件结构提高模块独立性

2、 模块规模应该适中

3、 深度、宽度、扇出、扇入都应适当

4、 模块的作用域应该在控制域之内

5、 力争降低模块接口的复杂程度

6、 设计单入口单出口的模块

7、 模块功能应该可以预测

第四节 图形工具

1、 层次图和HIPO图

第五节 面向数据流的设计方法

1、 概念

2、 变换分析

3、 事务分析

4、 设计优化

教学要求:

理解总体设计的过程;掌握软件设计的概念和原理;理解启发式规则;会应用图形工具和面向数据流的方法解决实际问题。

考核要求:

领会软件设计的概念与原则、概要设计的步骤、方法,应用概要设计文档与评审。

1、 领会软件设计的概念及原理;

2、 综合应用启发式规则;

3、 应用图形工具进行系统设计;

4、 掌握变换分析及事务分析,了解变换分析和事务分析的区别。

第五章 详细设计

教学要点:

详细设计的任务、详细设计的原则详细设计的方法、程序流程图PFC、N-S图、PAD图、HIPO图、过程设计语言PDL、详细设计方法的选择。

教学时数:

2学时

教学内容:

第二节 结构程序设计

第三节 详细设计的工具

1、 程序流程图

2、 盒图(N-S图)

3、 PAD图

4、 判定表

5、 判定树

6、 过程设计语言(PDL)

7、 模块开发文件夹

第四节 Jackson程序设计方法

1、 Jackson图

2、 改进的Jackson图

3、 Jackson方法

第五节 Warnier程序设计方法

1、 Warnier方法

2、 Warnier方法的辅助技术

第六节 程序复杂程度的定量度量

1、 McCabe方法

2、 Halstead方法

教学要求:

熟练掌握结构程序设计;会应用详细设计的工具;理解并能区分Jackson、Warnier等程序设计方法;了解程序复杂程度的定量度量。

领会详细设计方法,综合应用详细设计的工具。

1、 熟练应用程序流程图进行系统设计;

2、 综合应用PAD图及N-S图进行系统设计;

3、 应用判定表、判定树进行系统设计。

第六章 编 码

教学要点:

程序设计语言分类、程序设计语言特点、程序设计语言的选择,编程风格,编程效率,编程安全。

教学时数:

2学时

教学内容:

第一节 程序设计语言

1、 程序设计语言分类

2、 程序设计语言的特点

3、 选择一种语言

第二节 程序设计途径

1、 写程序的分格

2、 程序设计方法论

3、 程序设计自动化

4、 程序设计工具

教学要求:

能熟练掌握和应用一门程序设计语言。

考核要求:

领会程序设计的途径。

1、 领会程序的风格并能在开发过程中熟练应用;

2、 领会程序设计的途径。

第七章 测 试

教学要点:

测试的概念、测试的原则、测试的方法,软件测试技术,软件测试过程、软件测试步骤、单元测试、综合测试、确认测试、系统测试 、纠错技术、软件测试计划与测试分析报告。如何运用黑盒法或白盒法来设计测试用例。

教学时数:

2学时

教学内容:

第一节 基本概念

1、软件测试的目标

2、黑盒测试和白盒测试

3、 软件测试的步骤

4、 测试阶段的信息流

第二节 单元测试

1、单元测试考虑

第三节 集成测试

1、自顶向下结合

2、自底向上结合

3、不同集成测试策略的比较

第四节 验收测试

1、验收测试的范围

2、软件配置复查

第五节 设计测试方案

1、 逻辑覆盖

2、 等价划分

3、 边界值分析

4、 错误推测

5、 实用测试策略

第六节 调试

1、 调试技术

2、 调试策略

第七节 软件可靠性

1、 基本概念

2、 估算平均无鼓掌时间的方法

3、 程序正确性证明

第八节 日历预测法

1、 测试完成率模型

2、 错误发现率模型

3、 使用日历预测法的步骤

第九节 自动测试工具

1、 测试程序生成程序

2、 动态分析程序

3、 静态分析程序

4、 文件比较程序

教学要求:

掌握软件测试的基本概念;会应用软件测试的方法;能综合应用测试方法设计测试方案;掌握调试技术和调试策略;理解软件可靠性的重要性;了解日历预测法和自动测试工具。

考核要求:

要求学生明确模块测试、组装测试、确认测试分别针对着编码、概要设计、需求分析等不同阶段上的测试,能够运用黑箱法或白箱法设计测试试用例,并能编制出反映测试结果的测试或测试分析报告。

1、 领会软件测试的目标;

2、 熟练应用单元测试进行软件测试;

3、 综合应用集成测试进行软件测试;

4、 能综合应用各种测试方案;

5、 了解调试技术以及自动测试工具。

第八章 维 护

教学要点:

软件维护的定义、分类、特点、 软件维护步骤及组织、软件的可维护性。

2学时

教学内容:

第一节 软件维护的定义

第二节 维护的特点

1、 结构化维护与非结构化维护的对比

2、 维护的代价

3、 维护的问题

第三节 维护的过程

1、 维护组织

2、 维护报告

3、 维护的事件流

4、 保存维护记录

5、 评价维护活动

第四节 可维护性

1、 决定软件可维护性的因素

2、 文档

3、 可维护性复查

教学要求:

掌握软件维护的定义;能够区分结构化维护和非结构化维护;了解维护过程;理解可维护性的重要性。

考核要求:

领会软件质量保证的概念、策略和方法,软件评审或测试的方法和步骤,软件维护过程。

1、 领会软件维护的定义;

2、 领会维护的各个过程。

第九章 面向对象方法学引论

教学要点:

传统方法学存在的问题,面向对象方法学的优点,以及对象模型、动态模型、功能模型的基本概念.

教学时数:

2学时

教学内容:

第一节 传统方法学的缺点

1、 存在的问题

2、 出现问题的原因

第二节 软件工程的新途径

1、 快速原型法

2、 面向对象方法学

3、 两种新途径的结合

第三节 基本概念

1、 对象

2、 其他概念

第四节 面向对象建模

第五节 对象模型

2、 表示结构的图形符号

3、 例子

第六节 动态模型

1、 术语

2、 表示方法

3、 例子

第七节 功能模型

1、 表示方法

2、 与其他两种模型的关系

教学要求:

了解传统方法学和软件工程的新途径;掌握基本概念;掌握对象模型、动态模型、功能模型的表示方法以及三种模型的区别和联系。

考核要求:

领会面向对象方法学的基本概念

1、 领会传统方法的缺点;

2、 领会快速原型法和面向对象方法的相关概念;

3、 领会对象模型、动态模型、功能模型的概念。

第十章 面向对象分析

教学要点:

面向对象分析过程中的三个子模型和五个层次,对象模型、动态模型、功能模型的建立,以及服务的定义。

教学时数:

4学时

教学内容:

第一节 面向对象分析的基本过程

1、 概念

2、 三个子模型与五个层次

第二节 需求分析

1、 书写要点

2、 例子

第三节 建立对象模型

1、 确定类——对象

2、 确定关联

3、 划分主题

4、 确定属性

5、 识别继承关系

6、 反复修改

第四节 建立动态模型

1、 编写脚本

2、 设想用户界面

3、 画事件跟踪图

4、 画状态图

5、 审查动态模型

1、 画出基本系统模型图

2、 画出功能级数据流图

3、 描述处理框功能

第六节 定义服务

1、 常规行为

2、 从事件导出的操作

3、 与数据流图中处理框对应的操作

4、 利用继承减少冗余操作

教学要求:

掌握面向对象分析的基本过程;掌握需求分析的方法;会实际应用建立对象模型、建立动态模型、建立功能模型;掌握定义服务。

考核要求:

综合应用对象模型、动态模型、功能模型进行面向对象的建模。

1、 领会三个子模型和五个层次;

2、 综合应用对象模型进行系统开发;

3、 综合应用动态模型进行系统开发;

4、 熟练应用功能模型进行系统开发。

第十一章 面向对象设计

教学要点:

模块化、抽象、信息隐藏、弱耦合、强耦合、可重用的概念,系统分解以及各个子系统的设计。 教学时数:

4学时

教学内容:

第一节 面向对象设计的准则

1、模块化

2、抽象

3、信息隐藏

4、弱耦合

5、 强耦合

6、可重用

第二节 启发规则

1、 设计结果应该清晰易懂

2、 一般—特殊结构的深度应适当

3、 设计简单的类

4、 使用简单的协议

5、 使用简单的服务

6、 把设计变动减至最小

第三节 软件重用

1、 概念

2、 软件重用的效果

3、 软件重用技术

4、 类构件

第四节 系统分解

2、 组织系统的两种方案 3、 设计系统的拓扑结构 第五节 设计问题域子系统

1、调整需求 2、重用已有的类

3、 把问题域类组合在一起 4、 增添一般化类以建立协议 5、 调整继承层次 6、 ATM系统之例

第六节 设计人-机交互子系统

1、 设计人-机交互界面的准则 2、设计人-机交互子系统的策略 第七节 设计任务管理子系统

1、分析并发性

2、设计任务管理子系统 第八节 设计数据管理子系统

1、选择数据存储管理模式 2、 设计数据管理子系统 3、 例子

第九节 设计类中的服务

1、 确定类中应有的服务 2、 设计实现服务的方法 第十节 设计关联

1、关联的遍历 2、实现单向关联 3、实现双向关联 4、 链属性的实现 第十一节 设计优化

1、 确定优先级

2、 提高效率的几项技术 3、 调整继承关系 教学要求:

掌握软件维护的定义 考核要求:

领会模块化、抽象、信息隐藏、弱耦合、强耦合、可重用的概念。 1、 领会面向对象设计的准则;

2、 领会启发式规则以及软件重用的定义; 3、 熟练掌握各个子系统的设计方法。

第十二章 面向对象实现

教学要点:

面向对象的语言以及程序设计的风格。 教学时数:

2学时 教学内容:

第一节 程序设计语言

1、 对象的语言与非面向对象的语言 2、 面向对象语言的技术特点 3、 选择面向对象语言 第二节 程序设计分格

1、 提高可重用性 2、 提高可扩充性 3、 提高健壮性 第三节 面向对象测试 教学要求:

了解面向对象的程序设计语言;理解程序设计风格;掌握面向对象的测试。 考核要求:

领会面向对象的语言以及程序设计的风格。 1、 领会程序设计语言及其风格; 2、 领会对象测试的概念。

第十三章 管理技术

教学要点:

了解成本估计、进度计划、人员组织、质量保证以及项目计划。 教学时数:

2学时 教学内容:

第一节 成本估计

1、 参数方程 2、 标准值法

3、 COCOMO模型 第二节 进度计划

1、 Gantt图(横道图) 2、工程网络 3、 估算进度 4、 关键路径 5、 机动时间 第三节 人员组织

1、 程序设计小组的组织 2、 主程序组 第四节 质量保证

1、 软件质量 2、 质量保证 第五节 项目计划

1、 项目计划的内容 2、 项目报告 3、 变动控制

第六节 软件管理工具 教学要求:

理解成本估计的重要性;了解进度计划;了解人员组织、质量保证、项目计划以及软件管理工

具。

考核要求:

领会管理技术在软件工程中的重要性,并能应用一些软件管理技术进行软件开发。 1、领会成本估计、进度计划及人员组织; 2、领会质量保证、项目计划的概念;

3、综合应用软件管理工具进行软件的管理。

实验部分

(一)基本要求

《软件工程》是计算机应用专业教学计划中一门综合性和实践性很强的核心课程,主要内容包

括软件工程概述、可行性分析、需求分析、总体设计、详细设计、面向对象分析与设计、编码、软件质量与质量保证、项目计划与管理。

根据培养基层应用型人才的需要,本实验课程的目的与任务是使学生通过对本实验课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。

(二)项目总表

注:

项目类别:基础性、综合性、设计性 项目类型:必做实验、选做实验

(三)实验内容

实验一 问题定义

内容: 对系统的实际用户和使用部门负责人进行访问调查,扼要的写出对问题的理解。 目的: 通过讨论澄清含糊不清的问题,改正不正确的理解。 要求: 写出一份合理的书面文档。

主要仪器设备及耗材:实际的案例,计算机,纸张等。

实验二 可行性研究

内容: 通过用数据流图表示导出系统的高层逻辑模型,并在此基础上建立更准确、更具体的确定工程规模和目标。

目的: 准确的估计系统的成本和效益。

要求: 学会绘制系统流图、数据流图、编写数据字典,并写出一份合理的可行性研究报告。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验三 需求分析

内容: 应用数据流图、数据字典和简要的算法表示系统的逻辑模型。 目的: 生成经过用户确认的系统逻辑模型。

要求: 学会建立ER模型和规范化,掌握层次方框图、Warnier图、IPO图等图形工具,并写出一份合理的需求分析报告。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验四 总体设计

内容: 寻找实现目标系统的各个不同的方案。 目的: 生成经过用户确认的系统逻辑模型。

要求: 学会绘制系统流图,数据流图,编写数据字典,并写出一份合理的需求分析报告。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验五 详细设计

内容: 设计出程序的详细规格说明。

目的: 确定怎样具体的实现所要求的目标系统,除了应该保证程序的可靠性之外,编写出来的程序可读性好,容易理解,容易测试和和容易修改、维护是详细设计阶段的重要目的。

要求: 选择合适的详细设计工具(程序流程图、盒图、PAD图、HIPO图、判定表、判定树和PDL语言等),使用面向数据结构的设计方法(例如Jackson方法和Warnier方法)进行详细设计,用模块开发文件夹的形式组织管理与一个模块有关的全部文档。 主要仪器设备及耗材:实际的案例,计算机,纸张等。

实验六 编码和单元设计

内容: 选用合适的开发工具编写正确的容易理解、容易维护的程序模块。 目的: 编写具有可靠性强、可理解性好、可修改性强、可测试性好的代码。

要求: 使用自底向上或自顶向下的程序设计方法学开发,并实现具体的程序代码,注意程序的书写风格。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验七 综合测试

内容: 进行软件的测试和调试,判断其可靠性。

目的: 通过各类型的测试及相应的调试使软件达到预定的要求(发现错误并改正)。

要求: 应该用正式的文档资料把测试计划、详细设计方案以及实际测试结果保存下来,写出详细的测试报告。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验八 软件维护

内容: 通过四类维护活动(改正性维护、适应性维护、完善性维护、预防性维护)对软件进行维护。

目的: 通过各种必要的维护活动使系统持久的满足用户的需求。 要求: 记录每一次维护情况,作为正式的文档资料加以保存。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验九 面向对象设计

内容: 应用面向对象设计方法学进行系统设计。

目的: 掌握面向对象建模、面向对象分析、面向对象设计、面向对象实现。 要求: 绘制出对象模型,写出实验报告。

主要仪器设备及耗材:实际的案例,计算机,纸张等。

(四)考核要求

能够用软件工程的思想综合应用所学的知识内容完成每个实验 ,按实验要求完成相应的文档资料。

三、参考书目

1、张海藩,《软件工程导轮》,清华大学出版社,1998年1月第三版; 2、郑人杰,《实用软件工程》(第二版),清华大学出版社; 3、周之英,《现代软件工程》,科学出版社; 4、刘超编,《可视化面向对象建模技术--标准建模语言UML》,北航出版,1999年7月第一版。

本课程使用教具和现代教育技术指导性意见

本课程概念较多,因此教学形式以讲授方式为主。为加强和落实动手能力的培养,每章课后应安排作业,作业应让学生尽可能在CASE环境下进行。对课程中关键性概念、设计思想方面的问题可辅以课堂讨论的形式。如条件许可,应利用网络技术进行授课、答疑和讨论。

软件工程

一、 说明

(一) 课程性质

《软件工程》课程是计算机科学与技术专业必修的一门专业课程。为了摆脱软件危机的困扰,一门研究软件开发与维护的普遍原理和技术的工程学科——软件工程学从60年代末期开始迅速发展起来了,现在它已经成为计算机科学技术的一个重要分支,一个异常活跃的研究领域。严格遵循软件工程方法论可以大大提高软件开发的成功率,能够显著减少软件开发和维护中的问题。软件工程学(通常简称软件工程)研究的范围非常广泛,包括技术方法、工具和管理等许多方面,软件工程又是一门迅速发展的新兴学科,新的技术方法和工具不断涌现,真可谓五花八门层出不穷。本课程将着重从实用角度讲述软件工程的基本原理、概念和技术方法,同时也尽量注意课程的全面性和系统性。使学生学完本课程之后既能对实际的软件开发工作有所帮助,又能为今后深入研究这门学科奠定良好的基础。

本课程应以高级算法语言、数据结构、算法设计等课程为基础。除此,要求学生有一定的编程能力或经验。

(二) 教学目的

本课程的目的是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。

本课程的具体任务是:

1. 概括介绍软件工程学产生的历史背景以及它的基本原理、概念和方法。

2. 按软件生存周期的顺序介绍各个阶段的任务、过程、方法和工具。

3. 讨论软件工程的管理技术。

(三) 教学内容

正文共13章,第一章概括介绍软件工程学产生的历史背景以及它的基本原理、概念和方法。第二章到第八章按软件生存周期的顺序介绍各个阶段的任务、过程、方法和工具。第九章到第十二章对面向对象的方法作了全面、系统、深入的介绍,强调了软件工程与人工智能的相互结合、互相促进的发展趋势。第十三章着重讨论软件工程的管理技术。

(四) 教学时数

课堂教学:36学时 实验教学:36学时 总学时:36+36/2=54(学时)

(五) 教学方式

以讲授法为主,结合讨论法和案例分析法。

二、 本文

理论部分

第一章 软件危机与软件工程

教学要点:

什么是软件工程学、软件工程的基本原理、软件工程学所面临的问题、软件工程的现状及其发展前景等问题。

教学时数:

2学时

第一节 软件危机

1、 什么是软件危机

2、 产生软件危机的原因

3、 解决软件危机的途径

第二节 软件工程

1、 软件工程的基本原理

2、 软件工程的传统途径

3、 生命周期各个阶段的基本任务

4、 瀑布模型

第三节 技术审查和管理复审

1、 进行审查和复审的必要性

2、 技术审查的标准和方法

教学要求:

了解软件危机产生的原因及解决软件危机的途径;掌握软件工程的基本原理和生命周期法;了解技术审查和管理复审的相关内容。

考核要求:

领会软件工程的基本原理及生命周期方法学,要求学生明确本课程研究的范围及其所涉及到的领域,从而对软件工程学有一个初步而全面的认识。

1、 领会软件危机的定义;

2、 掌握软件工程的基本原理及生命周期各个阶段的基本任务。

第二章 可行性研究

教学要点:

可行性研究的必要性,以及它的基本任务和步骤,用于可行性研究的具体方法和工具。

教学时数:

4学时

教学内容:

第一节 可行性研究的任务

第二节 可行性研究的步骤

1、 复查系统规模和目标

2、 研究目前正在使用的系统

3、 导出新系统的高层逻辑模型

4、 重新定义问题

5、 导出和评价供选择的方法

6、 推荐行动方针

7、 草拟开发计划

8、 书写文档提交审查

第三节 系统流程图

1、 符号

2、 例子

3、 分层

第四节 数据流图

1、 符号

2、 例子

4、 用途

第五节 数据字典

1、 数据字典的内容

2、 定义数据的方法

3、 数据字典的用途

4、 数据字典的实现

第六节 成本效益分析

1、 成本估计

2、 成本效益分析的方法

教学要求:

了解可行性分析的任务;掌握可行性研究的步骤;能够应用系统流程图、数据流图及数据字典;了解成本效益分析。

考核要求:

领会可行性研究的必要性,以及它的基本任务和基本步骤,在此基础上再进一步学习具体方法和工具。

1、 领会可行性研究的必要性;

2、 综合应用系统流程图;

3、 综合应用数据流图。

第三章 需求分析

教学要点:

需求分析的任务与步骤、需求分析方法与工具、需求分析说明与评审。

教学时数:

4学时

教学内容:

第一节 需求分析的任务

1、 确定对系统的综合要求

2、 分析系统的数据要求

3、 导出系统的逻辑模型

4、 修正系统的开发计划

5、 开发原型系统

第二节 分析过程

1、 沿数据流图回溯

2、 用户复查

3、 细化数据流图

4、 修正开发计划

5、 书写文档

6、 审查和复审

第三节 概念模型和规范化

1、 ER模型

2、 范式

第四节 图形工具

1、 层次方框图

2、 Warnier图

第五节 验证软件需求

1、 从哪些方面验证软件需求的正确性

2、 验证软件需求的方法

3、 用于需求分析的软件工具

4、 超高级语言和第四代语言

教学要求:

理解需求分析的任务;掌握分析过程和概念模型;会应用图形工具。

考核要求:

领会需求分析的方法,理解需求分析的任务和原则,熟练应用需求分析的工具。

1、 领会需求分析的任务;

2、 综合应用概念模型;

3、 综合应用层次方框图。

第四章 总体设计

教学要点:

软件设计的目标和任务,软件设计概念及原理,模块的独立性,启发式规则,结构化设计方法。 教学时数:

4学时

教学内容:

第一节 总体设计的过程

1、 设想供选择的方案

2、 选取合理的方案

3、 推荐最佳方案

4、 功能分解

5、 设计软件结构

6、 数据库设计

7、 制定测试计划

8、 书写文档

9、 审查和复审

第二节 软件设计的概念和原理

1、 模块化

2、 抽象

3、 信息隐蔽和局部化

4、 模块独立

第三节 启发式规则

1、 改进软件结构提高模块独立性

2、 模块规模应该适中

3、 深度、宽度、扇出、扇入都应适当

4、 模块的作用域应该在控制域之内

5、 力争降低模块接口的复杂程度

6、 设计单入口单出口的模块

7、 模块功能应该可以预测

第四节 图形工具

1、 层次图和HIPO图

第五节 面向数据流的设计方法

1、 概念

2、 变换分析

3、 事务分析

4、 设计优化

教学要求:

理解总体设计的过程;掌握软件设计的概念和原理;理解启发式规则;会应用图形工具和面向数据流的方法解决实际问题。

考核要求:

领会软件设计的概念与原则、概要设计的步骤、方法,应用概要设计文档与评审。

1、 领会软件设计的概念及原理;

2、 综合应用启发式规则;

3、 应用图形工具进行系统设计;

4、 掌握变换分析及事务分析,了解变换分析和事务分析的区别。

第五章 详细设计

教学要点:

详细设计的任务、详细设计的原则详细设计的方法、程序流程图PFC、N-S图、PAD图、HIPO图、过程设计语言PDL、详细设计方法的选择。

教学时数:

2学时

教学内容:

第二节 结构程序设计

第三节 详细设计的工具

1、 程序流程图

2、 盒图(N-S图)

3、 PAD图

4、 判定表

5、 判定树

6、 过程设计语言(PDL)

7、 模块开发文件夹

第四节 Jackson程序设计方法

1、 Jackson图

2、 改进的Jackson图

3、 Jackson方法

第五节 Warnier程序设计方法

1、 Warnier方法

2、 Warnier方法的辅助技术

第六节 程序复杂程度的定量度量

1、 McCabe方法

2、 Halstead方法

教学要求:

熟练掌握结构程序设计;会应用详细设计的工具;理解并能区分Jackson、Warnier等程序设计方法;了解程序复杂程度的定量度量。

领会详细设计方法,综合应用详细设计的工具。

1、 熟练应用程序流程图进行系统设计;

2、 综合应用PAD图及N-S图进行系统设计;

3、 应用判定表、判定树进行系统设计。

第六章 编 码

教学要点:

程序设计语言分类、程序设计语言特点、程序设计语言的选择,编程风格,编程效率,编程安全。

教学时数:

2学时

教学内容:

第一节 程序设计语言

1、 程序设计语言分类

2、 程序设计语言的特点

3、 选择一种语言

第二节 程序设计途径

1、 写程序的分格

2、 程序设计方法论

3、 程序设计自动化

4、 程序设计工具

教学要求:

能熟练掌握和应用一门程序设计语言。

考核要求:

领会程序设计的途径。

1、 领会程序的风格并能在开发过程中熟练应用;

2、 领会程序设计的途径。

第七章 测 试

教学要点:

测试的概念、测试的原则、测试的方法,软件测试技术,软件测试过程、软件测试步骤、单元测试、综合测试、确认测试、系统测试 、纠错技术、软件测试计划与测试分析报告。如何运用黑盒法或白盒法来设计测试用例。

教学时数:

2学时

教学内容:

第一节 基本概念

1、软件测试的目标

2、黑盒测试和白盒测试

3、 软件测试的步骤

4、 测试阶段的信息流

第二节 单元测试

1、单元测试考虑

第三节 集成测试

1、自顶向下结合

2、自底向上结合

3、不同集成测试策略的比较

第四节 验收测试

1、验收测试的范围

2、软件配置复查

第五节 设计测试方案

1、 逻辑覆盖

2、 等价划分

3、 边界值分析

4、 错误推测

5、 实用测试策略

第六节 调试

1、 调试技术

2、 调试策略

第七节 软件可靠性

1、 基本概念

2、 估算平均无鼓掌时间的方法

3、 程序正确性证明

第八节 日历预测法

1、 测试完成率模型

2、 错误发现率模型

3、 使用日历预测法的步骤

第九节 自动测试工具

1、 测试程序生成程序

2、 动态分析程序

3、 静态分析程序

4、 文件比较程序

教学要求:

掌握软件测试的基本概念;会应用软件测试的方法;能综合应用测试方法设计测试方案;掌握调试技术和调试策略;理解软件可靠性的重要性;了解日历预测法和自动测试工具。

考核要求:

要求学生明确模块测试、组装测试、确认测试分别针对着编码、概要设计、需求分析等不同阶段上的测试,能够运用黑箱法或白箱法设计测试试用例,并能编制出反映测试结果的测试或测试分析报告。

1、 领会软件测试的目标;

2、 熟练应用单元测试进行软件测试;

3、 综合应用集成测试进行软件测试;

4、 能综合应用各种测试方案;

5、 了解调试技术以及自动测试工具。

第八章 维 护

教学要点:

软件维护的定义、分类、特点、 软件维护步骤及组织、软件的可维护性。

2学时

教学内容:

第一节 软件维护的定义

第二节 维护的特点

1、 结构化维护与非结构化维护的对比

2、 维护的代价

3、 维护的问题

第三节 维护的过程

1、 维护组织

2、 维护报告

3、 维护的事件流

4、 保存维护记录

5、 评价维护活动

第四节 可维护性

1、 决定软件可维护性的因素

2、 文档

3、 可维护性复查

教学要求:

掌握软件维护的定义;能够区分结构化维护和非结构化维护;了解维护过程;理解可维护性的重要性。

考核要求:

领会软件质量保证的概念、策略和方法,软件评审或测试的方法和步骤,软件维护过程。

1、 领会软件维护的定义;

2、 领会维护的各个过程。

第九章 面向对象方法学引论

教学要点:

传统方法学存在的问题,面向对象方法学的优点,以及对象模型、动态模型、功能模型的基本概念.

教学时数:

2学时

教学内容:

第一节 传统方法学的缺点

1、 存在的问题

2、 出现问题的原因

第二节 软件工程的新途径

1、 快速原型法

2、 面向对象方法学

3、 两种新途径的结合

第三节 基本概念

1、 对象

2、 其他概念

第四节 面向对象建模

第五节 对象模型

2、 表示结构的图形符号

3、 例子

第六节 动态模型

1、 术语

2、 表示方法

3、 例子

第七节 功能模型

1、 表示方法

2、 与其他两种模型的关系

教学要求:

了解传统方法学和软件工程的新途径;掌握基本概念;掌握对象模型、动态模型、功能模型的表示方法以及三种模型的区别和联系。

考核要求:

领会面向对象方法学的基本概念

1、 领会传统方法的缺点;

2、 领会快速原型法和面向对象方法的相关概念;

3、 领会对象模型、动态模型、功能模型的概念。

第十章 面向对象分析

教学要点:

面向对象分析过程中的三个子模型和五个层次,对象模型、动态模型、功能模型的建立,以及服务的定义。

教学时数:

4学时

教学内容:

第一节 面向对象分析的基本过程

1、 概念

2、 三个子模型与五个层次

第二节 需求分析

1、 书写要点

2、 例子

第三节 建立对象模型

1、 确定类——对象

2、 确定关联

3、 划分主题

4、 确定属性

5、 识别继承关系

6、 反复修改

第四节 建立动态模型

1、 编写脚本

2、 设想用户界面

3、 画事件跟踪图

4、 画状态图

5、 审查动态模型

1、 画出基本系统模型图

2、 画出功能级数据流图

3、 描述处理框功能

第六节 定义服务

1、 常规行为

2、 从事件导出的操作

3、 与数据流图中处理框对应的操作

4、 利用继承减少冗余操作

教学要求:

掌握面向对象分析的基本过程;掌握需求分析的方法;会实际应用建立对象模型、建立动态模型、建立功能模型;掌握定义服务。

考核要求:

综合应用对象模型、动态模型、功能模型进行面向对象的建模。

1、 领会三个子模型和五个层次;

2、 综合应用对象模型进行系统开发;

3、 综合应用动态模型进行系统开发;

4、 熟练应用功能模型进行系统开发。

第十一章 面向对象设计

教学要点:

模块化、抽象、信息隐藏、弱耦合、强耦合、可重用的概念,系统分解以及各个子系统的设计。 教学时数:

4学时

教学内容:

第一节 面向对象设计的准则

1、模块化

2、抽象

3、信息隐藏

4、弱耦合

5、 强耦合

6、可重用

第二节 启发规则

1、 设计结果应该清晰易懂

2、 一般—特殊结构的深度应适当

3、 设计简单的类

4、 使用简单的协议

5、 使用简单的服务

6、 把设计变动减至最小

第三节 软件重用

1、 概念

2、 软件重用的效果

3、 软件重用技术

4、 类构件

第四节 系统分解

2、 组织系统的两种方案 3、 设计系统的拓扑结构 第五节 设计问题域子系统

1、调整需求 2、重用已有的类

3、 把问题域类组合在一起 4、 增添一般化类以建立协议 5、 调整继承层次 6、 ATM系统之例

第六节 设计人-机交互子系统

1、 设计人-机交互界面的准则 2、设计人-机交互子系统的策略 第七节 设计任务管理子系统

1、分析并发性

2、设计任务管理子系统 第八节 设计数据管理子系统

1、选择数据存储管理模式 2、 设计数据管理子系统 3、 例子

第九节 设计类中的服务

1、 确定类中应有的服务 2、 设计实现服务的方法 第十节 设计关联

1、关联的遍历 2、实现单向关联 3、实现双向关联 4、 链属性的实现 第十一节 设计优化

1、 确定优先级

2、 提高效率的几项技术 3、 调整继承关系 教学要求:

掌握软件维护的定义 考核要求:

领会模块化、抽象、信息隐藏、弱耦合、强耦合、可重用的概念。 1、 领会面向对象设计的准则;

2、 领会启发式规则以及软件重用的定义; 3、 熟练掌握各个子系统的设计方法。

第十二章 面向对象实现

教学要点:

面向对象的语言以及程序设计的风格。 教学时数:

2学时 教学内容:

第一节 程序设计语言

1、 对象的语言与非面向对象的语言 2、 面向对象语言的技术特点 3、 选择面向对象语言 第二节 程序设计分格

1、 提高可重用性 2、 提高可扩充性 3、 提高健壮性 第三节 面向对象测试 教学要求:

了解面向对象的程序设计语言;理解程序设计风格;掌握面向对象的测试。 考核要求:

领会面向对象的语言以及程序设计的风格。 1、 领会程序设计语言及其风格; 2、 领会对象测试的概念。

第十三章 管理技术

教学要点:

了解成本估计、进度计划、人员组织、质量保证以及项目计划。 教学时数:

2学时 教学内容:

第一节 成本估计

1、 参数方程 2、 标准值法

3、 COCOMO模型 第二节 进度计划

1、 Gantt图(横道图) 2、工程网络 3、 估算进度 4、 关键路径 5、 机动时间 第三节 人员组织

1、 程序设计小组的组织 2、 主程序组 第四节 质量保证

1、 软件质量 2、 质量保证 第五节 项目计划

1、 项目计划的内容 2、 项目报告 3、 变动控制

第六节 软件管理工具 教学要求:

理解成本估计的重要性;了解进度计划;了解人员组织、质量保证、项目计划以及软件管理工

具。

考核要求:

领会管理技术在软件工程中的重要性,并能应用一些软件管理技术进行软件开发。 1、领会成本估计、进度计划及人员组织; 2、领会质量保证、项目计划的概念;

3、综合应用软件管理工具进行软件的管理。

实验部分

(一)基本要求

《软件工程》是计算机应用专业教学计划中一门综合性和实践性很强的核心课程,主要内容包

括软件工程概述、可行性分析、需求分析、总体设计、详细设计、面向对象分析与设计、编码、软件质量与质量保证、项目计划与管理。

根据培养基层应用型人才的需要,本实验课程的目的与任务是使学生通过对本实验课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。

(二)项目总表

注:

项目类别:基础性、综合性、设计性 项目类型:必做实验、选做实验

(三)实验内容

实验一 问题定义

内容: 对系统的实际用户和使用部门负责人进行访问调查,扼要的写出对问题的理解。 目的: 通过讨论澄清含糊不清的问题,改正不正确的理解。 要求: 写出一份合理的书面文档。

主要仪器设备及耗材:实际的案例,计算机,纸张等。

实验二 可行性研究

内容: 通过用数据流图表示导出系统的高层逻辑模型,并在此基础上建立更准确、更具体的确定工程规模和目标。

目的: 准确的估计系统的成本和效益。

要求: 学会绘制系统流图、数据流图、编写数据字典,并写出一份合理的可行性研究报告。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验三 需求分析

内容: 应用数据流图、数据字典和简要的算法表示系统的逻辑模型。 目的: 生成经过用户确认的系统逻辑模型。

要求: 学会建立ER模型和规范化,掌握层次方框图、Warnier图、IPO图等图形工具,并写出一份合理的需求分析报告。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验四 总体设计

内容: 寻找实现目标系统的各个不同的方案。 目的: 生成经过用户确认的系统逻辑模型。

要求: 学会绘制系统流图,数据流图,编写数据字典,并写出一份合理的需求分析报告。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验五 详细设计

内容: 设计出程序的详细规格说明。

目的: 确定怎样具体的实现所要求的目标系统,除了应该保证程序的可靠性之外,编写出来的程序可读性好,容易理解,容易测试和和容易修改、维护是详细设计阶段的重要目的。

要求: 选择合适的详细设计工具(程序流程图、盒图、PAD图、HIPO图、判定表、判定树和PDL语言等),使用面向数据结构的设计方法(例如Jackson方法和Warnier方法)进行详细设计,用模块开发文件夹的形式组织管理与一个模块有关的全部文档。 主要仪器设备及耗材:实际的案例,计算机,纸张等。

实验六 编码和单元设计

内容: 选用合适的开发工具编写正确的容易理解、容易维护的程序模块。 目的: 编写具有可靠性强、可理解性好、可修改性强、可测试性好的代码。

要求: 使用自底向上或自顶向下的程序设计方法学开发,并实现具体的程序代码,注意程序的书写风格。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验七 综合测试

内容: 进行软件的测试和调试,判断其可靠性。

目的: 通过各类型的测试及相应的调试使软件达到预定的要求(发现错误并改正)。

要求: 应该用正式的文档资料把测试计划、详细设计方案以及实际测试结果保存下来,写出详细的测试报告。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验八 软件维护

内容: 通过四类维护活动(改正性维护、适应性维护、完善性维护、预防性维护)对软件进行维护。

目的: 通过各种必要的维护活动使系统持久的满足用户的需求。 要求: 记录每一次维护情况,作为正式的文档资料加以保存。

主要仪器设备及耗材:实际的案例,计算机,纸张等。 实验九 面向对象设计

内容: 应用面向对象设计方法学进行系统设计。

目的: 掌握面向对象建模、面向对象分析、面向对象设计、面向对象实现。 要求: 绘制出对象模型,写出实验报告。

主要仪器设备及耗材:实际的案例,计算机,纸张等。

(四)考核要求

能够用软件工程的思想综合应用所学的知识内容完成每个实验 ,按实验要求完成相应的文档资料。

三、参考书目

1、张海藩,《软件工程导轮》,清华大学出版社,1998年1月第三版; 2、郑人杰,《实用软件工程》(第二版),清华大学出版社; 3、周之英,《现代软件工程》,科学出版社; 4、刘超编,《可视化面向对象建模技术--标准建模语言UML》,北航出版,1999年7月第一版。

本课程使用教具和现代教育技术指导性意见

本课程概念较多,因此教学形式以讲授方式为主。为加强和落实动手能力的培养,每章课后应安排作业,作业应让学生尽可能在CASE环境下进行。对课程中关键性概念、设计思想方面的问题可辅以课堂讨论的形式。如条件许可,应利用网络技术进行授课、答疑和讨论。


相关内容

  • [软件工程]课程教学存在的问题与思考
  • 摘要:"软件工程"主要介绍软件工程的基本原理.开发方法和开发工具,通过本课程的学习,使学生了解和初步掌握开发一个软件项目所使用的方法和工具,以及"软件工程"的发展过程和发展趋势,为进行软件开发打下一个良好的基础.本文分析了高校<软件工程>课程教学中 ...

  • 工程造价工程造价概论教学大纲
  • 工程造价概论课程教学大纲 课程名称:工程造价概论 课程类型:专业基础课 总学时数:24 学 分:1.5 先修课程:无 开课单位:土木工程学院 适用专业:工程造价专业 一.课程的性质.目的和任务 本课程是工程造价专业的必修课程.是一门安排在大一的教育启蒙课程其内容涉及与工程造价相关的多方面知识.课程教 ...

  • 中小学教学软件审查标准
  • 中小学教学软件审查标准 中国教育部 1997年11月印发 一, 教学性要求(55分) 使用教学数件的目的在於改善教学活动的环境和过程, 调动学生学习的积极 性, 提高教学质量和水平. 因此, 其目标, 内容和过程应符合规定要求. (一) 教学目标(15分) 1. 教学软件的教学目标应在其文档中明确说 ...

  • 园林工程教学大纲
  • <园林工程施工与管理>教学大纲 课程名称:园林工程施工与管理 计划总学时:62 实践学时:28 适用专业:园林专业 制 订 人:果蔬花卉教研组 制订时间:2011.4 一.课程性质.任务 本课程是园林专业主要专业课程之一:是园林专业中以工程为基础而运用于园林建设的专业课程. 本课程的任务 ...

  • 项目驱动软件测试实验教学改革的意义与方案探讨
  • 摘要:随着软件工程复杂度不断的上升,软件工程质量要求不断提高.传统的软件测试课程的教学已经不能满足时代发展的需要.从传统的软件测试实验教学出发,针对已存在的问题和实验教学的总体目标要求,探讨以项目驱动的软件测试实验教学改革意义与方案.以合理的课程体系分布,适当的实验内容的分布,满足人才培养方案的要求 ...

  • 市政工程计量与计价课标
  • <市政工程计量与计价>学习领域(课程)标准 1 课程基本信息 课程名称:市政工程计量与计价 课程类别:核心学习领域的专业课 课程编码: 教学时数:36 适用专业:工程造价专业 修课方式:选修 2 课程的性质和任务 2.1 课程性质 <市政工程计量与计价>课程是高职高专工程造价 ...

  • [土木工程材料]课程教学心得
  • 重庆科杖李沈母报(社会科学版) 2007年 刊 增 Jour al of Chongqing Universit of Science and Technology(Social Sciences Edition) 2007 Supplement n y <土 木 工 程 U 料 > 课 ...

  • 1软件测试技术课程标准
  • "软件测试"课程标准 招生对象: 高中毕业生及同等学力者 教学时数: 72H 学历层次: 高职 修业年限: 全日制三年 适用专业: 软件技术专业 一.课程概述 1.课程定位 软件测试课程是软件技术专业的一门专业核心课程,随着目前对软件产品质量的日益关注,软件测试在整个软件开发过程 ...

  • 工程造价专业人才培养方案
  • 达州职业技术学院 专业人才培养方案 专业名称: 工程造价技术 专业代码: 560502 所属系别: 建筑工程系 专业带头(负责)人: 邓太平 教学系主任: 王 彦 二〇一四 年 三月 二十二日 一.专业建设指导委员会 二.招生对象与学制 1.招生对象:普通高中毕业生.对口高职毕业生 2.学制:三年 ...