软件工程导论教学大纲-章程Word格式文档下载.doc
《软件工程导论教学大纲-章程Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《软件工程导论教学大纲-章程Word格式文档下载.doc(15页珍藏版)》请在冰豆网上搜索。
![软件工程导论教学大纲-章程Word格式文档下载.doc](https://file1.bdocx.com/fileroot1/2022-10/26/4728fabe-db5b-43bb-b483-0c07c5a493d6/4728fabe-db5b-43bb-b483-0c07c5a493d61.gif)
本课程以软件工程专业本科二年级学生为讲授对象,是集理论性与应用性为一体的学科。
设置本课程的目的是:
使学习者在全面了解软件工程发展历史、基本理论的基础上,系统掌握软件开发过程中的现代方法和管理手段,具备用工程化方法设计和构建规范软件的思想,从而为后续软件工程开发方法的系列课程奠定理论基础。
学习本课程的要求是:
学习者应深刻认识软件危机产生的原因,纠正对软件开发的错误认识,掌握软件工程科学方法论的基本概念和基本原理,初步具备作为专业人员组织软件开发和设计工作的能力。
为检验掌握软件开发应遵循的原则和编写文档的基本方法的程度,最后的考核是通过考试进行,同时以加深对课程内容的理解。
二、课程具体内容及基本要求
第一章软件工程的范畴 (2学时)
基本内容包括:
第一节历史方面
一、定义软件
(1)介绍软件的形式化定义。
结合经典教科书中关于软件的定义,介绍软件中所包含的三个要素:
①指令的集合;
②数据结构;
③软件描述信息。
(2)阐述非形式化定义中软件具有的特性。
对比其他人工产品的特性,总结软件所具有的三个特性。
二、软件工程的发展历程和应用领域
第二节经济方面
结合例子阐述经济学原则在软件生产方面的重要性。
第三节维护性方面
介绍软件生命周期模型和步骤,阐述维护工作在生命周期模型中的重要性和具体分类。
一、维护的传统和现代观点
二、交付后维护的重要性
第四节需求、分析和设计方面
通过解决错误的成本曲线说明提高需求、分析和设计技术的重要性。
第五节小组编程方面
阐述软件工程范畴中人的因素的重要性。
第六节为什么没有计划阶段
阐述为什么不存在独立的计划阶段,而是计划活动贯穿于软件生命周期的始终。
第七节为什么没有测试阶段
阐述为什么在产品实现后没有独立的测试阶段。
第八节为什么没有文档阶段
阐述为什么不应当有独立的文档阶段。
而是软件文档必须是完整、正确和最新的。
第九节面向对象范型
对比传统的开发范型阐述面向对象范型的特点和优点。
第十二节道德问题
说明软件工程师应该遵守的八个准则。
1.基本要求
通过本章的学习,明确软件工程的各个方面的含义,描述传统软件工程生命周期模型和面向对象范型,感受遵守道德规范的重要性。
2.重点、难点
重点:
(1)软件工程的定义;
(2)软件工程的传统范型;
(3)软件工程的面向对象范型。
难点:
维护的传统和现代的观点。
3.作业及课外学习要求:
(1)为什么传统意义上的维护观点对于今天的软件产品不现实?
(2)“软件危机”一词于1976年提出,它是什么意思?
这个词现在还适用吗?
第二章软件工程的概念 (4学时)
第一节理论上的软件开发
对比软件开发在理论上和实践上的不同。
(一)软件专业人员在开发中会犯错。
(二)软件开发过程中客户的需求会发生变化。
第二、三、四节小型实例研究
(一)通过Winburg小型系统实例描述进化树生命周期模型,并对比瀑布生命周期模型。
(二)通过野鸭拖拉机公司小型实例研究说明公司业务需求发生变化的时候对软件开发过程所产生的危害。
第五节迭代和递增
描述迭代和递增两个概念。
(一)迭代是软件工程的一个固有特性。
软件开发的基本过程是迭代的,每个版本比前一个版本离目标更近一步。
(二)递增也是软件工程的一个固有特性。
软件开发过程需要逐步求精。
描述软件生命周期中的五个核心工作流。
第六节修订的Winburg小型实例研究
通过Winburg小型实例把进化树模型添加在迭代-递增模型之上,说明递增的含义。
第七节迭代和递增的风险和其他方面
阐述迭代-递增模型的优点和存在的风险。
第八节迭代和递增的控制
阐述为什么需要对迭代-递增模型进行控制。
第九节其他生命周期模型
描述编码-修补生命周期模型、瀑布生命周期模型、快速原型开发生命周期模型、开源生命周期模型、敏捷过程、螺旋生命周期模型,分别描述几种模型的特点和适用条件。
第十二节生命周期模型的比较
对比几种生命周期模型的优点和缺点。
通过本章的学习,掌握各种不同的软件生命周期模型,能够针对某一具体项目选用合适的生命周期模型,对比和比较各种生命周期模型。
第二章计划4学时。
(1)迭代的定义;
(2)递增的定义;
(3)生命周期模型。
迭代-递增生命周期模型。
(1)描述什么情况下螺旋生命周期模型不适用?
(2)描述什么样的产品是螺旋生命周期模型的理想应用?
(3)在迭代-递增生命周期模型中如何使用逐步求精?
第三章软件过程 (4学时)
第一节统一过程
结合实例说明统一过程是一种自适应的方法学。
第二节面向对象范型内的迭代和递增
描述面向对象范型是一个迭代和递增的方法。
第三节需求流
阐述需求流的目标是让开发组织确定客户的需求。
(一)理解应用域。
(二)找出存在的限制条件。
(三)明确用户需求。
第四节分析流
描述分析流的目标是分析和提取需求。
分别对比传统分析方法和面向对象分析方法。
(一)传统分析:
结构化系统分析---基于流程建模DFD
(二)面向对象分析:
用例和类是基础。
抽象出实体类、边界类和控制类。
第五节设计流
描述设计流的目标是细化分析流的制品,指示产品如何做。
对比传统设计方法和面向对象设计方法。
(一)传统设计:
1、确定产品的内部结构,将产品分解成模块,进行接口设计。
2、实施详细设计,为每个模块选择相应的算法和数据结构。
(二)面向对象设计:
1、完成类图。
2、进行详细设计。
第六节实现流
描述实现流的目标是用选择的实现语言实现目标软件产品。
第七节测试流
描述在统一过程中,测试从始至终与其他工作流并行进行。
第八节交付后维护
描述交付后维护的主要工作和重要性。
第九节退役
描述在何种情况下软件到达退役的阶段。
第十节统一过程的各阶段
1、开始阶段(第一次递增)
2、细化阶段(第二次递增)
3、构件阶段(第三次递增)
4、转换阶段(第四次递增)
第十一节一维和二维生命周期模型
通过一维和二维模型的比较描述传统生命周期模型和统一过程模型的区别。
通过本章的学习,掌握统一过程中的五个核心工作流和四个阶段,解释统一过程的工作流和阶段之间的差别,理解软件过程改进的重要性。
(1)统一过程的五个核心工作流;
(2)统一过程的四个阶段。
统一过程工作流与阶段之间的差别。
(1)统一过程的“阶段”是什么意思?
(2)瀑布生命周期模型的缺点是交付后的产品可能不满足客户的需求。
统一过程是如何解决这个问题的?
第四章软件小组 (4学时)
第一节小组组织
阐述在软件开发中小组组织的重要性和主要方法。
第二节民主小组方法
描述民主小组组织的特点。
第三节传统的主程序员小组方法
描述传统的主程序小组的特点,通过《纽约时报》项目进行说明。
同时阐述其的不实用性。
第四节主程序员小组和民主小组之外的编程小组
通过描述主程序小组和民主小组的缺陷,阐述针对这些问题的组织方法。
第五节同步-稳定小组
描述微软公司所使用的同步-稳定小组方法的特点和优缺点。
第六节敏捷过程小组
描述敏捷过程小组方法的特点和优缺点。
第七节开源编程小组
描述开源编程小组方法的特点和优缺点。
第八节人员能力成熟度模型
介绍描述管理和开发人力资源框架的人员能力成熟度模型。
第九节选择合适的小组组织
对比不同小组组织方法的优缺点,阐述小组组织的原则。
通过本章的学习,明确一个组织良好的软件小组的重要性,描述现代分级小组是如何组织的,分析各种不同小组组织的优缺点。
(1)民主小组方法;
(2)传统的主程序员小组方法。
分散决策形式下的技术管理沟通渠道。
(1)要给一个零售公司开发电子商务网页,你如何组织小组?
(2)给项目选择生命周期模型如何影响小组组织的选择?
第五章软件工程工具 (4学时)
第一节逐步求精法
通过实例描述逐步求精法的特点。
第二节成本-效益分析法
描述如何用成本-效益分析法确定客户是否应当进行业务计算机化,如果确定使用计算机处理业务,应用何种方式来比较各种可选方案的成本和收益。
第三节分治
描述分析工具“分治”的特点和问题。
第四节关注分离
描述关注分离的概念。
第五节软件度量
描述软件开发中几种基本的度量方法。
第六节CASE
描述计算机辅助软件工程的概念。
第七节CASE的分类
第八节CASE的范围
第九节软件版本
描述交付后维护范围内的版本控制。
第十节配置控制
通过本章的学习,掌握两种类型的开发工具:
理解(分析)工具、软件(CASE)工具。
(1)分析工具;
(2)CASE工具。
CASE分类。
(1)关注分离是分治的一个特例吗?
(2)如果设计审查期间的检测错误率提高一倍,你将推断出什么?
第六章测试 (4学时)
第一节质量问题
描述软件质量保证中包含的概念。
第二节非执行测试
描述评审中走查和审查的概念。
第三节执行测试
描述执行测试的概念。
第四节应该测试什么
描述需要测试哪些行为特性。
第五节测试与正确性证明
通过实例描述正确性证明的过程。
第六节谁应当完成执行测试
阐述系统的执行测试必须由独立的SQA小组完成,而不是由程序员完成。
第七节测试什么时候停止
描述测试何时最终结束。
通过本章的学习,掌握质量保证问题,掌握如何对制品进行基于非执行的测试,掌握基于执行的测试原则,了解需要测试什么。
(1)非执行测试;
(2)正确性测试。
正确性测试。
(1)走查和审查之间有什么相似之处?
又有什么不同?
(2)正确性证明能够解决交付给客户的产品可能不是客户真正需要的这类问题吗?
请回答并解释原因。
第七章从模块到对象 (4学时)
第一节什么是模块
描述模块的概念。
第二、三节内聚、耦合
从模块内聚和模块耦合两方面分析了什么构成了良好设计的模块。
特别地,模块应具有高内聚和低耦合。
第四节数据封装