软件工程导论教学大纲-章程.doc
《软件工程导论教学大纲-章程.doc》由会员分享,可在线阅读,更多相关《软件工程导论教学大纲-章程.doc(15页珍藏版)》请在冰点文库上搜索。
《软件工程导论》
教学大纲
安徽大学计算机科学与技术学院
2017年3月
《软件工程导论》教学大纲
课程编号:
ZJ36047
课程名称:
软件工程导论英文名称:
IntroductiontoSoftwareEngineering
学分/学时:
2/34课程性质:
学科平台课程
适用专业:
软件工程
先修课程:
计算机导论
开课单位:
计算机科学与技术学院
一、课程的教学目标与任务
《软件工程导论》课程是软件工程专业高等教育的专业基础课程和学科平台课程,是“科研训练计划”教育课程。
《软件工程导论》以科学技术方法论为逻辑起点,结合部分管理方面的基本理论,讲授软件工程与方法论的联系,从而提高软件的质量和生产率。
本课程以软件工程专业本科二年级学生为讲授对象,是集理论性与应用性为一体的学科。
设置本课程的目的是:
使学习者在全面了解软件工程发展历史、基本理论的基础上,系统掌握软件开发过程中的现代方法和管理手段,具备用工程化方法设计和构建规范软件的思想,从而为后续软件工程开发方法的系列课程奠定理论基础。
学习本课程的要求是:
学习者应深刻认识软件危机产生的原因,纠正对软件开发的错误认识,掌握软件工程科学方法论的基本概念和基本原理,初步具备作为专业人员组织软件开发和设计工作的能力。
为检验掌握软件开发应遵循的原则和编写文档的基本方法的程度,最后的考核是通过考试进行,同时以加深对课程内容的理解。
二、课程具体内容及基本要求
第一章软件工程的范畴 (2学时)
基本内容包括:
第一节历史方面
一、定义软件
(1)介绍软件的形式化定义。
结合经典教科书中关于软件的定义,介绍软件中所包含的三个要素:
①指令的集合;②数据结构;③软件描述信息。
(2)阐述非形式化定义中软件具有的特性。
对比其他人工产品的特性,总结软件所具有的三个特性。
二、软件工程的发展历程和应用领域
第二节经济方面
结合例子阐述经济学原则在软件生产方面的重要性。
第三节维护性方面
介绍软件生命周期模型和步骤,阐述维护工作在生命周期模型中的重要性和具体分类。
一、维护的传统和现代观点
二、交付后维护的重要性
第四节需求、分析和设计方面
通过解决错误的成本曲线说明提高需求、分析和设计技术的重要性。
第五节小组编程方面
阐述软件工程范畴中人的因素的重要性。
第六节为什么没有计划阶段
阐述为什么不存在独立的计划阶段,而是计划活动贯穿于软件生命周期的始终。
第七节为什么没有测试阶段
阐述为什么在产品实现后没有独立的测试阶段。
第八节为什么没有文档阶段
阐述为什么不应当有独立的文档阶段。
而是软件文档必须是完整、正确和最新的。
第九节面向对象范型
对比传统的开发范型阐述面向对象范型的特点和优点。
第十二节道德问题
说明软件工程师应该遵守的八个准则。
1.基本要求
通过本章的学习,明确软件工程的各个方面的含义,描述传统软件工程生命周期模型和面向对象范型,感受遵守道德规范的重要性。
2.重点、难点
重点:
(1)软件工程的定义;
(2)软件工程的传统范型;(3)软件工程的面向对象范型。
难点:
维护的传统和现代的观点。
3.作业及课外学习要求:
(1)为什么传统意义上的维护观点对于今天的软件产品不现实?
(2)“软件危机”一词于1976年提出,它是什么意思?
这个词现在还适用吗?
第二章软件工程的概念 (4学时)
基本内容包括:
第一节理论上的软件开发
对比软件开发在理论上和实践上的不同。
(一)软件专业人员在开发中会犯错。
(二)软件开发过程中客户的需求会发生变化。
第二、三、四节小型实例研究
(一)通过Winburg小型系统实例描述进化树生命周期模型,并对比瀑布生命周期模型。
(二)通过野鸭拖拉机公司小型实例研究说明公司业务需求发生变化的时候对软件开发过程所产生的危害。
第五节迭代和递增
描述迭代和递增两个概念。
(一)迭代是软件工程的一个固有特性。
软件开发的基本过程是迭代的,每个版本比前一个版本离目标更近一步。
(二)递增也是软件工程的一个固有特性。
软件开发过程需要逐步求精。
描述软件生命周期中的五个核心工作流。
第六节修订的Winburg小型实例研究
通过Winburg小型实例把进化树模型添加在迭代-递增模型之上,说明递增的含义。
第七节迭代和递增的风险和其他方面
阐述迭代-递增模型的优点和存在的风险。
第八节迭代和递增的控制
阐述为什么需要对迭代-递增模型进行控制。
第九节其他生命周期模型
描述编码-修补生命周期模型、瀑布生命周期模型、快速原型开发生命周期模型、开源生命周期模型、敏捷过程、螺旋生命周期模型,分别描述几种模型的特点和适用条件。
第十二节生命周期模型的比较
对比几种生命周期模型的优点和缺点。
1.基本要求
通过本章的学习,掌握各种不同的软件生命周期模型,能够针对某一具体项目选用合适的生命周期模型,对比和比较各种生命周期模型。
第二章计划4学时。
2.重点、难点
重点:
(1)迭代的定义;
(2)递增的定义;(3)生命周期模型。
难点:
迭代-递增生命周期模型。
3.作业及课外学习要求:
(1)描述什么情况下螺旋生命周期模型不适用?
(2)描述什么样的产品是螺旋生命周期模型的理想应用?
(3)在迭代-递增生命周期模型中如何使用逐步求精?
第三章软件过程 (4学时)
基本内容包括:
第一节统一过程
结合实例说明统一过程是一种自适应的方法学。
第二节面向对象范型内的迭代和递增
描述面向对象范型是一个迭代和递增的方法。
第三节需求流
阐述需求流的目标是让开发组织确定客户的需求。
(一)理解应用域。
(二)找出存在的限制条件。
(三)明确用户需求。
第四节分析流
描述分析流的目标是分析和提取需求。
分别对比传统分析方法和面向对象分析方法。
(一)传统分析:
结构化系统分析---基于流程建模DFD
(二)面向对象分析:
用例和类是基础。
抽象出实体类、边界类和控制类。
第五节设计流
描述设计流的目标是细化分析流的制品,指示产品如何做。
对比传统设计方法和面向对象设计方法。
(一)传统设计:
1、确定产品的内部结构,将产品分解成模块,进行接口设计。
2、实施详细设计,为每个模块选择相应的算法和数据结构。
(二)面向对象设计:
1、完成类图。
2、进行详细设计。
第六节实现流
描述实现流的目标是用选择的实现语言实现目标软件产品。
第七节测试流
描述在统一过程中,测试从始至终与其他工作流并行进行。
第八节交付后维护
描述交付后维护的主要工作和重要性。
第九节退役
描述在何种情况下软件到达退役的阶段。
第十节统一过程的各阶段
1、开始阶段(第一次递增)
2、细化阶段(第二次递增)
3、构件阶段(第三次递增)
4、转换阶段(第四次递增)
第十一节一维和二维生命周期模型
通过一维和二维模型的比较描述传统生命周期模型和统一过程模型的区别。
1.基本要求
通过本章的学习,掌握统一过程中的五个核心工作流和四个阶段,解释统一过程的工作流和阶段之间的差别,理解软件过程改进的重要性。
2.重点、难点
重点:
(1)统一过程的五个核心工作流;
(2)统一过程的四个阶段。
难点:
统一过程工作流与阶段之间的差别。
3.作业及课外学习要求:
(1)统一过程的“阶段”是什么意思?
(2)瀑布生命周期模型的缺点是交付后的产品可能不满足客户的需求。
统一过程是如何解决这个问题的?
第四章软件小组 (4学时)
基本内容包括:
第一节小组组织
阐述在软件开发中小组组织的重要性和主要方法。
第二节民主小组方法
描述民主小组组织的特点。
第三节传统的主程序员小组方法
描述传统的主程序小组的特点,通过《纽约时报》项目进行说明。
同时阐述其的不实用性。
第四节主程序员小组和民主小组之外的编程小组
通过描述主程序小组和民主小组的缺陷,阐述针对这些问题的组织方法。
第五节同步-稳定小组
描述微软公司所使用的同步-稳定小组方法的特点和优缺点。
第六节敏捷过程小组
描述敏捷过程小组方法的特点和优缺点。
第七节开源编程小组
描述开源编程小组方法的特点和优缺点。
第八节人员能力成熟度模型
介绍描述管理和开发人力资源框架的人员能力成熟度模型。
第九节选择合适的小组组织
对比不同小组组织方法的优缺点,阐述小组组织的原则。
1.基本要求
通过本章的学习,明确一个组织良好的软件小组的重要性,描述现代分级小组是如何组织的,分析各种不同小组组织的优缺点。
2.重点、难点
重点:
(1)民主小组方法;
(2)传统的主程序员小组方法。
难点:
分散决策形式下的技术管理沟通渠道。
3.作业及课外学习要求:
(1)要给一个零售公司开发电子商务网页,你如何组织小组?
(2)给项目选择生命周期模型如何影响小组组织的选择?
第五章软件工程工具 (4学时)
基本内容包括:
第一节逐步求精法
通过实例描述逐步求精法的特点。
第二节成本-效益分析法
描述如何用成本-效益分析法确定客户是否应当进行业务计算机化,如果确定使用计算机处理业务,应用何种方式来比较各种可选方案的成本和收益。
第三节分治
描述分析工具“分治”的特点和问题。
第四节关注分离
描述关注分离的概念。
第五节软件度量
描述软件开发中几种基本的度量方法。
第六节CASE
描述计算机辅助软件工程的概念。
第七节CASE的分类
第八节CASE的范围
第九节软件版本
描述交付后维护范围内的版本控制。
第十节配置控制
1.基本要求
通过本章的学习,掌握两种类型的开发工具:
理解(分析)工具、软件(CASE)工具。
2.重点、难点
重点:
(1)分析工具;
(2)CASE工具。
难点:
CASE分类。
3.作业及课外学习要求:
(1)关注分离是分治的一个特例吗?
(2)如果设计审查期间的检测错误率提高一倍,你将推断出什么?
第六章测试 (4学时)
基本内容包括:
第一节质量问题
描述软件质量保证中包含的概念。
第二节非执行测试
描述评审中走查和审查的概念。
第三节执行测试
描述执行测试的概念。
第四节应该测试什么
描述需要测试哪些行为特性。
第五节测试与正确性证明
通过实例描述正确性证明的过程。
第六节谁应当完成执行测试
阐述系统的执行测试必须由独立的SQA小组完成,而不是由程序员完成。
第七节测试什么时候停止
描述测试何时最终结束。
1.基本要求
通过本章的学习,掌握质量保证问题,掌握如何对制品进行基于非执行的测试,掌握基于执行的测试原则,了解需要测试什么。
2.重点、难点
重点:
(1)非执行测试;
(2)正确性测试。
难点:
正确性测试。
3.作业及课外学习要求:
(1)走查和审查之间有什么相似之处?
又有什么不同?
(2)正确性证明能够解决交付给客户的产品可能不是客户真正需要的这类问题吗?
请回答并解释原因。
第七章从模块到对象 (4学时)
基本内容包括:
第一节什么是模块
描述模块的概念。
第二、三节内聚、耦合
从模块内聚和模块耦合两方面分析了什么构成了良好设计的模块。
特别地,模块应具有高内聚和低耦合。
第四节数据封装
描述在数据封装中,一个模块包含一个数据结构和对这个数据结构进行的操作。
第五节抽象数据类型
描述抽象数据类型时一个数据类型,连同对这种类型的实例进行的操作。
第六节信息隐藏
描述信息隐藏在软件模块设计中的体现。
第七节对象
描述类是继承的一种抽象数据类型。
第八节继承、多态和动态绑定
描述继承、多态和动态绑定的概念。
第九节面向对象范型
介绍面向对象范型的特点和问题。
1.基本要求
通过本章的学习,掌握带有高内聚和低耦合的模块与类的概念,理解信息隐藏的必要性,掌握继承、多重性和动态绑定的软件工程含义,区分泛化、聚合和关联的不同
2.重点、难点
重点:
(1)内聚;
(2)耦合。
难点:
数据封装。
3.作业及课外学习要求:
(1)维护时内聚的影响是什么?
(2)请区分多态和动态绑定。
第八章可重用性和可移植性 (4学时)
基本内容包括:
第一节重用的概念
描述重用的概念。
第二节重用的障碍
描述重用可能会遇到的障碍和问题。
第三节重用实例研究
通过两个实例阐述如何成功地进行重用。
第四节对象和重用
分析面向对象范型对重用的影响。
第五节设计和实现期间的重用
描述在设计和实现期间包括框架、模式、软件体系结构以及基于组件的重用。
第六节其他设计模式
具体介绍一些常用的设计模式。
第七、八节设计模式的种类和优缺点
描述设计模式的分类和存在的优缺点。
第九节重用及互联网
介绍互联网对重用的影响。
第十节重用和交付后维护
介绍重用对交付后维护的影响
第十一节可移植性
介绍可移植性,由硬件、操作系统、数值计算软件或编译器引起的不兼容会牵制可移植性。
第十二节为什么需要可移植性
第十三节实现可移植性的技术
1.基本要求
通过本章的学习,理解重用的重要性和障碍,掌握各工作流期间获得重用的技术,掌握设计模式的概念,理解可移植性的重要性和障碍。
2.重点、难点
重点:
(1)重用;
(2)可移植性。
难点:
设计模式。
3.作业及课外学习要求:
(1)请详细解释可重用性与可移植性之间的区别。
(2)组件的重用会影响可移植性吗?
第九章计划和估算 (4学时)
基本内容包括:
第一节计划和软件过程
描述软件过程中计划的重要性。
第二节周期和成本估算
描述估算周期和成本的方法。
第三节软件项目管理计划的组成
描述软件项目管理计划的三个主要部分:
要做的工作、所用到的资源和实现项目所要花费的金钱。
第四、五节软件项目管理计划框架
介绍项目管理计划的IEEE标准1058【1998】。
第六节计划测试
介绍测试计划的内容。
第七节计划面向对象的项目
描述如何计划面向对象项目。
第八节培训需求
介绍培训需求对计划过程的影响。
1.基本要求
通过本章的学习,了解计划的重要性,掌握估算构建一个软件产品规模和成本的方法。
2.重点、难点
重点:
(1)周期估算;
(2)成本估算。
难点:
产品规模的度量。
3.作业及课外学习要求:
(1)为什么代码行(LOC或KDSI)尽管由缺点,还是作为产品规模的度量而广泛应用?
(2)为什么软件开发项目生成如此多的文档?
第十章第一部分的关键内容 (2学时)
基本内容包括:
第一节软件开发:
理论与实践
第二节迭代和递增
第三节统一过程
第四节工作流概述
第五节软件小组
第六节成本-效益分析法
第七节度量
第八节CASE
第九节版本和配置
第十节测试术语
第十一节执行测试和非执行测试
第十二节模块性
第十三节重用
第十四节软件项目管理计划
1.基本要求
通过本章的学习,回顾并总结第一至九章中的关键内容。
2.重点、难点
重点:
第1-9章重点。
难点:
第1-9章难点。
3.作业及课外学习要求:
(1)定义术语“软件制品”和“软件产品”。
(2)五个核心工作流中的每一个的目标是什么?
三、教学安排及方式
总学时34学时,其中:
讲授34学时。
周次
学时数
教学主要内容
教学环节
备注
1
2
第一章软件工程的范畴
讲授
2
2
第二章软件工程的概念
讲授
3-4
4
第三章软件过程
讲授
5-6
4
第四章软件小组
讲授
7-8
4
第五章软件工程工具
讲授
9-10
4
第六章测试
讲授
11-12
4
第七章从模块到对象
讲授
13-14
4
第八章可重用性和可移植性
讲授
15-16
4
第九章计划和估算
讲授
17
2
第十章第一部分的关键内容
讲授
注:
教学方式填写“讲授、实验或实践、上机、综合练习、多种形式”。
四、本课程对培养学生能力和素质的贡献点
通过期末笔试的考试来对学生专业核心知识掌握进行考核,即对“毕业要求1工程知识”、“毕业要求3设计/开发解决方案”、“毕业要求4研究”、“毕业要求5使用现代工具”、“毕业要求6工程与社会”和“毕业要求7环境与可持续发展”中的所以指标点的指标达成度进行评估,并了解本专业的前沿发展现状和趋势,对新知识、新技术有较敏锐的洞察能力。
五、考核及成绩评定方式
最终成绩由平时作业成绩和期末成绩等组合而成。
各部分所占比例如下:
平时作业成绩:
30%。
考虑出勤情况、课上回答问题情况和课后作业情况。
主要考核对每堂课知识点的复习、理解和掌握程度。
期末考试成绩:
70%。
通过期末考试主要考核软件工程知识的掌握程度。
书面考试形式。
题型为:
选择题、填空题、判断题、问答题和综合题等。
六、教材及参考书目
1.教材
《软件工程-实践者的研究方法(原书第7版·本科教学版)》,(美)普雷斯曼RogerS.Pressman(著),郑人杰等(译),机械工业出版社,2011年.
2.参考书目
(1)《软件工程导论》,张海藩,清华大学出版社,2008年.
(2)《软件工程实践教程》,陆惠恩,机械工业出版社,2006年.
(3)《Object-OrientedandClassicalSoftwareEngineering》,SSchach,McGraw-Hill出版社,2006年第七版.
(执笔人:
章程审核人:
)
2016年6月25日