《软件工程》教学大纲
课程名称:
软件工程
课程编号:
436406
适用专业:
软件工程
课程类别:
专业任选课
课程学分:
3
总学时:
48
其中:理论学时
32
实验学时
16
先修课程:
C语言程序设计、面向对象程序设计、数据结构、数据库原理
一、课程的性质、目的与任务
《软件工程》是计算机各专业本科生的一门综合性与实践性很强的核心课程,在软件工程学科人才培养体系中占有重要的地位。软件开发是建立计算机应用系统的重要环节,人们通过软件工程学把软件开发纳入工程化的轨道,而软件工程学是用以指导软件人员进行软件的开发、维护和管理的科学。主要内容包括可行性分析、需求分析、概要设计、详细设计、面向对象分析与设计、编码、软件质量、项目计划与管理、软件维护等内容。
通过本课程的学习,要求学生达到:
1.掌握软件工程的基本概念和基础理论知识;
2.熟练地运用各种实用开发方法和基本技术方法从事各种类型软件项目的工程化开发;
3.了解软件工程各领域的发展动向,成为具有独立工作能力的高素质高水平的软件人才。
二、课程教学基本内容与要求
第一章 软件工程学概述
(一)基本教学内容
1.1 软件危机
1.2 软件工程
1.3 软件生命周期
1.4 软件过程
(二)基本要求
教学目的:通过本章的学习,了解和掌握软件工程的基本概念(如软件和软件工程的定义、等),软件危机的表现形式、产生的原因及消除的途径,软件工程的基本原理、方法学,软件的生存期,几种主要的软件开发模型等。
教学重点:软件工程的概念、消除软件危机的途径 。
教学难点:软件工程危机起因。
第二章 可行性研究
(一)基本教学内容
2.1 可行性研究的任务
2.5 数据字典
2.6 成本/效益分析
2.7 可行性研究报告
(二)基本要求
教学目的:深刻理解可行性研究的必要性,掌握可行性研究的任务、过程、成本效益分析以及可行性研究报告的主要内容;掌握系统流程图、数据流程图、数据字典概念以及项目开发计划的基本内容。
教学重点:可行性研究的目的、基本分析步骤及基本分析工具。
教学难点:可行性研究的基本工具(流程图、数据字典等)。
第三章 需求分析
(一)基本教学内容
3.1 需求分析的任务
3.2 与用户沟通获取需求的方法
3.3 分析建模与规格说明
3.4 数据规范化
3.5 验证软件需求
(二)基本要求
教学目的:掌握需求分析的任务,需求获取的方法、分析建模与需求规格说明,掌握数据建模的实体联系图、数据规范化,掌握描述系统行为模型的状态转换图,掌握层次方框图、Warnier图、IPO(HIPO)图。掌握验证软件需求的必要性、方法。
教学重点:需求分析的概念、需求分析的基本步骤与开展需求分析所使用的基本方法。教学难点:需求分析的重要性、需求分析的基本方法。
第四章 形式化说明技术(选讲)
(一)基本教学内容
4.1 概述
4.2 有穷状态机
4.3 Petri网
4.4 Z语言
(二)基本要求
教学目的:掌握形式化方法的概念、优点和应用准则,初步掌握有穷状态机、Petri网、Z语言的概念和使用。
教学重点:掌握形式化方法的概念、优点和应用准则,初步掌握有穷状态机、Petri网、Z语言的概念和使用。
教学难点:形式化方法的具体应用方法。
第五章 总体设计
(一)基本教学内容
5.1 设计过程
5.2 设计原理
5.3 启发规则
5.4 描绘软件结构的图形工具
5.5 面向数据流的设计方法
(二)基本要求
教学目的:了解软件总体设计的目的、任务,掌握软件总体设计的过程、设计原理和启发规则,掌握描述软件结构的工具以及面向数据流的设计方法。能够将具体的数据流图的转换为软件的结构图,即变换分析技术和事务分析技术。
教学重点:总体设计的主要内容、模块化的设计思想及开展总体设计的基本方法和常用工具。
教学难点:总体设计的基本方法与常用工具方法。
第六章 详细设计
(一)基本教学内容
6.1 结构程序设计
6.2 人机界面设计
6.3 过程设计的工具
6.4 面向数据结构的设计方法
6.5 程序复杂程度的定量度量
(二)基本要求
教学目的:了解软件详细设计阶段的目的、任务和结构化程序设计的概念,掌握人机界面设计的方法、过程设计的工具以及面向数据结构的设计方法,了解程序复杂程度的定量度量。
教学重点:详细设计的任务、设计方法的应用。
教学难点:详细设计的设计方法及其应用、程序复杂程度的定量度量。
第七章 实现
(一)基本教学内容
7.1 编码
7.2 软件测试基础
7.3 单元测试
7.4 集成测试
7.5 确认测试
7.6 白盒测试技术
7.7 黑盒测试技术
7.8 调试
7.9 软件可靠性
(二)基本要求
教学目的:了解如何选择程序设计语言,培养良好的编码风格,掌握软件测试的目标、准则、方法和步骤,掌握单元测试、集成测试、确认测试的方法步骤,掌握白盒测试和黑盒测试技术的概念、方法,掌握调试过程与途径,了解软件可靠性的概念及其计算方法。能够按照测试的原则和技术,分析确定高效的测试用例。
教学重点:程序设计语言与程序设计途径、软件测试方法。
教学难点:程序设计途径、黑盒测试、白盒测试。
第八章 维护
(一)基本教学内容
8.1 软件维护的定义
8.2 软件维护的特点
8.3 软件维护过程
8.4 软件的可维护性
8.5 预防性维护
8.6 软件再工程过程
(二)基本要求
教学目的:了解软件维护的定义,掌握软件维护的特点和过程,软件的可维护性的定义及提高可维护性的方法。掌握预防性维护和软件再工程过程的概念、方法。
教学重点:软件维护的基本概念及维护过程、软件的可维护性的度量方法。
教学难点:软件的可维护性的度量方法和软件再工程过程。
第九章 面向对象方法学引论
(一)基本教学内容
9.1 面向对象方法学概述
9.2 面向对象的概念
9.3 面向对象建模
9.4 对象模型
9.5 动态模型
9.6 功能模型
9.7 3种模型之间的关系
(二)基本要求
教学目的:了解面向对象方法学的要点和优点,掌握面向对象的概念、建模,掌握对象模型、动态模型、功能模型以及三种模型的关系。
教学重点:面向对象的基本概念、面向对象建模及三种模型形式。
教学难点:建立对象模型、动态模型、功能模型的方法、三种模型之间的相互关系。
第十章 面向对象分析(选讲)
(一)基本教学内容
10.1 面向对象分析的基本过程
10.2 需求陈述
10.3 建立对象模型
10.4 建立动态模型
10.5 建立功能模型
10.6 定义服务
(二)基本要求
教学目的:掌握面向对象分析的过程、需求陈述,能够根据具体问题建立对象模型、动态模型、功能模型以及确定对象的服务。
教学重点:面向对象分析的基本过程、需求陈述的方法、面向对象分析中建立三种模型的具体方法。
教学难点:需求陈述、面向对象分析中建立三种模型的具体方法。
第十一章 面向对象设计(选讲)
(一)基本教学内容
11.1 面向对象设计的准则
11.2 启发规则
11.3 软件重用
11.4 系统分解
11.5 设计问题域子系统
11.6 设计人机交互子系统
11.7 设计任务管理子系统
11.8 设计数据管理子系统
11.9 设计类中的服务
11.10 设计关联
11.11 设计优化
(二)基本要求
教学目的:了解面向对象设计的准则和启发规则,掌握软件重用的概念和方法,掌握系统分解的方法,掌握设计问题域子系统、设计人机交互子系统、设计任务管理子系统、设计数据管理子系统、设计类中的服务、设计关联以及设计优化的方法。
教学重点:面向对象设计的准则、面向对象各子系统设计方法及过程,类的设计方法。
教学难点:面向对象设计准则的运用、类的设计方法、设计优化的具体运用。
第十二章 面向对象实现(选讲)
(一)基本教学内容
12.1 程序设计语言
12.2 程序设计风格
12.3 测试策略
12.4 设计测试用例
(二)基本要求
教学目的:掌握面向对象语言的特点以及如何选择面向对象的开发工具,养成良好的程序设计风格,掌握面向对象的软件测试的特点和策略,能够设计测试用例。
教学重点:测试的基本概念、测试方案的设计、软件可靠性的概念。
教学难点:测试方案的设计、软件可靠性的概念。
第十三章 软件项目管理
(一)基本教学内容
13.1 估算软件规模
13.2 工作量估算
13.3 进度计划
13.4 人员组织
13.5 质量保证
13.6 软件配置管理
13.7 能力成熟度模型
(二)基本要求
教学目的:掌握估算软件规模和工作量的技术,能够根据项目制定合理的进度计划,掌握团队组织的基本方法,了解软件的质量指标并掌握软件质量保证的措施,掌握软件配置管理,了解能力成熟度模型。
教学重点:估算软件规模、估算软件开发工作量、制定进度计划的方法;人员组织、质量保证、软件配置管理的基本概念。
教学难点:估算软件开发工作量、制定进度计划的方法、能力成熟度模型的基本概念。
三、课程各章节学时分配
序号
内容
理论学时
实验学时
1
软件危机与软件工程
2
0
2
可行性研究
4
2
3
需求分析
4
4
4
总体设计
4
2
5
详细设计
4
4
6
实现
6
4
7
维护
2
0
8
面向对象方法学引论
2
0
9
软件项目管理
4
0
合计
32
16
四、本课程课外学习与修学指导
针对《软件工程》的课程特点,为加强实践环节,提高学生学习的主动性,可将学生分组进行项目实践,提高学生的团队合作能力。让学生利用课外时间相对独立完成一个模拟的科研项目,这些项目都是从实际项目中提炼出来的,具有典型性、客观性和启发性,教师采用点拔方式或共同探究的方式进行指导。项目完成后,教师要求学生写专题论文,启发他们的思维,表达他们的见解,鼓励学生在本课程的学习中学会联系相关课程(如网络、数据结构、数据库等)的知识去思考和解决问题。
五、本课程考核方式及成绩评定标准
考核方式:闭卷考试
成绩评定方法:本课程的考核是平时成绩、实验成绩和期终考试成绩相结合。具体比例为:上课出勤、作业占20%,实验占20%,期末考试成绩占60%。
其中期未考试总分100分,基础题占50%,中等难度题占35%,较难题占15%。考试题型主要有:选择题、填空题、判断题、简答题、分析题、设计题等。
六、教材及参考书
教材:张海藩编著,软件工程导论(第5版).北京:清华大学出版社,2008
主要参考书:
[1]郑人杰等著《实用软件工程》:清华大学出版社,1997,2
[2]史济民著《软件工程原理、方法与应用》:高等教育出版社,2003,12
[3]殷人昆等译《实用面向对象软件工程教程》:电子工业出版社,1998.6
[4]张海藩著《软件工程导论学习辅导》:清华大学出版社,2003
大纲撰写人:唐海波、颜富强
大纲审阅人:罗如为
教学副主任:易叶青
编写日期:2012.6