(一)课程性质与任务
《软件工程概论》是计算机科学与技术专业的基础必修课程。它是在具有一定程序设计语言的基础上,系统学习软件开发过程的原理、方法与技术的一门综合性很强的专业基础课。本课程重点讲授软件工程的原理、方法与应用。课程内容的理论性、技术性、实践性都比较强,因此,传授软件工程原理、方法与技术的同时,应注重设计技能与实践能力的训练。
(二)课程教学目标
1.知识目标
从软件工程的基本原理与方法着手,对软件工程过程的各个步骤进行讲解,包括详细的概括与分析、先进的设计、开发技术与管理方法,对软件生存期的整个过程进行控制和管理。让学生全面理解软件作为一种产品,在开发的各个阶段都是受控制的,必须将软件工程的思想贯穿开发过程的始终,以保证软件产品的质量和可靠性。为今后从事软件项目工作与科研开发打下坚实的基础。
2.能力目标
使学生具有分析软件开发过程整体流程的能力,具备软件开发需求、设计和实现的能力。提高学生动手实践、理论联系实际以及协同创新的能力,同时也为本专业后续课程的学习打下基础。
3.素质目标
使学生建立面向对象分析与设计的能力,同时能够很好的理解软件开发过程,在开发过程中应用所学的软件工程知识和技术。具有良好的专业意识、创新意识与团队合作精神,善于了解计算机发展的动态和新技术。
(三)参考学时
本课程课堂教学64学时,实验0学时,共64学时。
(四)课程学分
3学分
(五)课程内容和要求
序号 教学项目 教学内容与教学要求 活动设计建议 参考课时 序号 教学项目 教学内容与教学要求 软件的特征,软件危机,软件工程的概念及产生软件危机的原因,软件生命周期中各阶段的基本任务,软件工程中的五种软件开发模式。 掌握软件的特点,软件生产发展的三个阶段,各阶段的特点,软件危机的产生及其表现形式,初步了解软件的生存周期模型,理解软件工程的定义及特点,软件生存期各阶段的特点和内容,深刻理解软件活动设计建议 (1)案例引领教学。 (2)注重介绍软件工程特性。 (3)着重让学生理解软件工程学。 参考课时 1 软件工程学概述 4 2 3 4 危机产生的原因,掌握软件生命周期中各阶段的基本任务。 软件的可行性分析,软件计划及成本估算,可行性分析的基础和主要任务,可行性研究的方法和步骤。 可行性研深刻理解可行性研究的必要性,掌握可究 行性研究的任务及可行性研究的具体步骤,了解系统流程图的作用及符号表示,掌握数据流图的画法及数据字典的编写。 需求分析的任务和步骤,结构化分析方法及原型化分析方法,结构化分析方法的指导原则,数据流图、数据词典和加工说明等描述手段,需求分析文档建立和复审需求分析 的方式。 深刻理解需要分析阶段的概念及任务,熟练掌握数据流图的细化方法,掌握常用图形工具的使用方法。 非形式化方法的缺点,形式化方法的优点和应用形式化方法的准则,有穷状态机,形式化说Petri网和Z语言。 明技术 要求了解形式化方法和非形式化方法的优缺点,了解有穷状态机、Petri网和Z语言的使用方法。 (1)注重介绍数据流图。 (2)着重让学生理解可行性研究。 2 (1)注重需求分析和结构化分析方法。 (2)着重让学生理解数据流图的细化方法。 (1)注重理解非形式化方法。 (2)着重让学生理解有穷自动机。 6 4 序号 教学项目 教学内容与教学要求 活动设计建议 (1)注重理解结构化方法的设计理念。 (2)着重让学生理解耦合性和内聚性。 参考课时 5 6 结构化设计方法,面向数据结构的设计方法,结构设计的目标和任务,结构化设计的概念和原理,结构化设计的步骤以及相关方法。。 要求了解总体设计的过程,深刻理解软件总体设计的基本任务,软件设计的基本原总体设计 理,理解模块化,抽象,信息隐蔽,模块独立性等概念,明确度量模块独立性的校准---耦合性及内聚性,熟练掌握结构化设计方法,能划分数据流的类型,将其能换成软件结构图,并能根据优化准则将其优化。 详细设计方法采用的结构化程序设计的思想和原理,常用的算法过程的描述工具,算法的复杂性评价问题。 要求明确详细设计阶段的主要任务,掌握算法复杂性的度量方法,能熟练的使用详细设计描述工具来设计模块中的算法及程详细设计 序的逻辑结构,理解Jackson方法的概念及程序复杂度的度量方法,学会使用Jackson方法设计输入输出数据结构和程序结构。 6 (1)注重理解算法的相关概念。 (2)着重让学生理解Jacson的数据流方法。 6 7 实现 程序设计语言的概念以及编码应当遵循的原则,编码设计的目标与任务,编码使用的程序设计语言的特性以及程序设计风格的重要性,软件测试的概念与主要任务,软件的排错技术和软件可靠性的评测方法,软件测试的目标、原则以及测试方案的建立和测试过程,测试实例的构造方法。 了解几种常见的程序设计语言的特点,领会程序设计中应注意的问题,注意培养良好的编程风格,掌握测试阶段的内容,测试方法及测试步骤,深刻理解测试过程中单元测试,集成测试,验收测试的任务及使用的方法,深刻理解白盒,黑盒测试技术,能针对某一问题采用白盒法或黑盒法进行测试用例的设计,掌握调试程序的方法。 (1)注重理解程序设计语言。 (2)着重让学生理解程序设计语言和相关软件的测试方法。 6 序号 教学项目 教学内容与教学要求 软件维护的类型、软件的可维护性以及软件的维护方法,软件维护的目标与任务,软件维护的特殊性以及软件维护的管理流程。 了解软件维护的各种困难,软件维护的特点,软件维护的文档,理解软件维护的内容,维护任务的实施,深刻理解如何提高软件的维护性。 面向对象的概念,包括对象和类、对象的属性和操作,以及对象之间的关系,面向对象程序设计的特性,如封装、继承和多态性,面向对象的建模,包括对象模型、动态模型和功能模型的概念。 深刻理解对象、类、类的层次结构、方法和消息的实质以及对象之间的关系,深刻理解面向对象程序设计的特性,深刻理解面向对象建模的概念。 面向对象分析的基本过程,建立对象模型、动态模型和功能模型的方法,确定对象、确定属性、定义操作、对象间通信。 理解对象分析的基本过程,深刻理解对象模型、动态模型、功能模型的元素、结构和构造方法,掌握画对象图、画状态图、画数据流程图;确定对象类、确定关联、确定属性,识别继承。 面向对象设计的准则,面向对象设计所用启发性规则、软件重用、系统分解等方法,设计问题域、人机交互、管理等子系统,设计优化。 掌握面向对象设计的准则,掌握面向对象设计所用启发性规则、软件重用、系统分解等方法,了解设计问题域、人机交互、管理等子系统;设计优化。 面向对象程序设计语言,面向对象程序设计风格,面向对象测试。 了解面向对象程序设计风格,了解面向对象测试。 活动设计建议 (1)注重理解程序设计的维护。 (2)着重让学生理解维护的重要性。 参考课时 8 维护 3 9 面向对象方法学引论 (1)注重理解面向对象思想。 (2)着重让学生理解对象、类等面向对象概念。 3 10 面向对象分析 (1)注重理解面向对象的分析方法。 (2)着重让学生理解对象模型、动态模型等模型概念。 (1)注重理解面向对象的相关过程、步骤。 (2)着重让学生理解启发式规则和软件重用等概念。 (1)注重理解面向对象语言。 (2)着重让学生理解面向对象语言的编程方法。 5 11 面向对象设计 6 12 面向对象实现 5 序号 教学项目 教学内容与教学要求 软件开发成本结算,软件项目进度安排,软件项目计划内容,软件质量的定义、质量保证。 了解软件开发成本结算,了解软件项目进度安排,了解软件项目计划内容,了解软件质量的定义、质量保证的基本概念。 结合软件工程学科的最新发展,以专题形式介绍软件工程的前沿技术,涉及形式化方法、模型驱动的软件开发、基于构件的软件开发、软件过程改进等方面。 了解软件工程领域的前沿技术和最新发展状况。 活动设计建议 (1)注重理解软件开发过程。 (2)着重让学生理解软件项目进度和控制概念。 (1)注重理解软件工程领域的新概念和技术。 参考课时 13 软件项目管理 5 软件工程14 的最新进展 3 (六)教学建议
1.教学方法
利用多媒体、课程网站、BB教学平台、视频动画演示等相结合的立体化教学手段,根据因材施教的原则,在传统的课堂教学中,引入灵活的互动式、启发式和引导式教学方法,充分激发学生求知的潜能和学习的主体作用。培养学生的学习兴趣和实践动手能力,从而激发创造力,从实践环节上保证课程体系的完整性。
2.评价方法
本课程为考试课。期末笔试占总成绩的70%,平时作业、课堂表现占总成绩的30%。笔试和作业成绩都合格才能获得学分。
3.教学条件
多媒体教室,满足课堂教学与实践教学的需求。 4.教材编选 4.教材编选
(1) 教材:张海潘等著《软件工程导论》,清华大学出版社,2013年10月。 该教材全面系统地讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。本书正文共13章,第1章是概述,第2~8章顺序讲述软件生命周期各阶段的任务、过程、结构化方法和工具,第9~12章分别讲述面向对象方法学引论、面向对象分析、面向对象设计和面向对象实现,第13章介绍软件项目管理。附录讲述了用面向对象方法开发软件的过程,对读者深入理解软
件工程学很有帮助,也是上机实习的好材料。
(2) 参考教材:
《软件工程》清华大学出版社2010叶俊民主编
《实用软件工程》清华大学出版社2006陆惠恩张成姝主编
《实用软件工程》清华大学出版社 1997 郑人杰殷人昆陶永雷主编 《软件工程——原理、方法与应用》水利水电出版社 2005 肖孟强主编 《面向对象与传统软件工程》机械工业出版社 2003 Stephen R.Schach著,韩松译
《UML用户指南》机械工业出版社2002 GBooch
等著,邵维忠等译
因篇幅问题不能全部显示,请点此查看更多更全内容