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

