本章介绍软件工程课程教学的相关背景,包括计算机软件应用及其发生的变化,业界对软件工程人才的需求及要求,分析软件工程课程的特点,阐述本课程教学的目标、内容及要求。本章在学习软件工程相关基础知识的同时,要求学习现代软件工程开发的主流工具和平台,掌握基于Git的分布式版本管理和协同式软件开发技术、代码标注技术,以及群体化学习平台。
本章聚焦于程序和软件二个概念,从程序概念入手,引申出软件概念,分析程序和软件二者之间的区别和联系,阐明软件的特点和质量要求,讨论开源软件及其应用价值,指出当前软件特征出现的一些新变化以及这些变化对软件开发带来的新挑战。
本章聚焦于软件工程概念,阐述其产生的背景和原因,介绍其思想、构成、目标和原则,分析软件工程的发展历程及取得的主要成果,讨论软件工程教育问题。
本章介绍软件开发过程模型的概念,阐述常见的软件开发过程模型如瀑布、迭代、原型、增量、螺旋、UP等,并分析它们各自的特点,介绍敏捷软件开发方法、群体化开发方法等,分析这些开发方法的特点及其相关的技术手段。
本章聚焦于软件需求工程,介绍软件需求的概念、类别、特点和质量要求,需求工程的任务、过程和原则;在此基础上阐述二个经典的需求工程方法学:结构化需求分析方法学和面向对象需求分析方法学;最后介绍需求工程的CASE工具、软件制品输出及软件需求管理。
本章聚焦于获取软件需求的工作,介绍软件需求从何而来,获取软件需求的任务、方式、过程和策略;结合具体的案例详细阐述了获取软件需求的方法,最后介绍了软件需求确认及质量保证。
本章聚焦于分析软件需求的工作,介绍该项工作的原因、任务和过程,描述支持软件需求表示的UML模型及表示方法;详细阐述软件需求的重要性,包括分析和确定软件需求的优先级、理解和掌握软件需求的过程、步骤、方法和策略、文档化软件需求、确认和验证软件需求。
本节聚焦于软件设计,介绍软件设计的概念、类别和质量要求,软件设计工作的任务、过程和原则,在此基础上介绍二个经典的软件设计方法学:结构化软件设计方法学和面向对象软件设计方法学;最后介绍软件设计的CASE工具、输出、评审及管理。
本章聚焦于软件体系结构设计,介绍软件体系结构的概念和风格;软件体系结构设计的任务、过程和重要性;软件体系结构模型及表示方法;软件体系结构设计的详细过程和策略;最后介绍软件体系结构设计的文档化及评审。
本章聚焦于用户界面设计,介绍何为用户界面,用户界面包含哪些设计要素,用户界面设计的任务和表示方法;以图形化用户界面设计为例,结合具体的应用案例,介绍用户界面设计的过程和原则;用户界面设计的输出及评审。
本章聚焦于软件详细设计,介绍详细设计的任务、过程和原则,基于UML的详细设计模型表示方法,面向对象软件设计原则和设计模式,以及用例设计、类设计、数据设计、子系统/软构件设计等具体的详细设计内容,软件详细设计的文档化和评审。
本节聚焦于软件实现,介绍软件实现的概念、过程、原则和质量要求,支持软件实现的程序设计语言,在此基础上介绍如何编写高质量的代码,最后介绍支持软件实现的CASE工具。
本节聚焦于编写代码,介绍编写代码的任务,基于软件设计编写代码的策略和方法,基于代码片段的软件重用和基于群智知识的编程问题解决,最后介绍软件调试的有关策略和方法。
本章聚焦于软件测试,介绍软件测试的概念、思想和原理,阐述软件测试的过程和原则,详细介绍软件测试技术,以及软件测试计划的制定和实施。
本章聚焦于软件部署,介绍软件系统的运行环境,软件部署的方式和方法。
本章聚焦于软件维护和演化,介绍软件维护和演化的概念,阐述软件维护的特点和演化的法则;讨论软件维护所导致的软件内部逻辑老化问题;介绍软件维护的技术和过程、软件可维护性的概念;最后阐明软件维护的输出。
本章聚焦于软件项目管理,介绍软件项目管理的对象和内容,软件度量、测量和估算的概念、方法及应用,软件项目计划制定和表示的方法,软件项目跟踪的方法和步骤,软件配置管理的过程和计划,软件风险管理的模式和方法,软件质量保证的方法和计划等。