第一部分 软件工程导论
我在本书这部分的目标是对软件工程做一般性的概述,这部分的章节内容将会贯穿着一学期的软件工程课程。我在这一部分中介绍了软件工程的重要概念(比如软件过程和敏捷方法),描述了基本的软件开发活动(从需求规格说明到系统演化)。
第 1 章是一个一般性的概述,介绍了专业软件工程并且定义了一些软件工程的概念。我也就软件工程中的职业道德方面的问题进行了简要的讨论。对软件工程师来说,认真思考所从事的工作的深远影响是很重要的。这一章还介绍了本书中所使用的 4 个案例研究,分别是:管理接受心理健康问题治疗的病人纪录的信息系统(Mentcare),便携式胰岛素泵控制系统,野外气象站嵌入式系统和数字化学习环境(iLearn)。
第 2 章和第 3 章介绍了软件工程过程和敏捷开发。第 2 章介绍了软件过程模型,例如瀑布模型以及在这些过程中我所讨论的基本活动。第 3 章补充了一个关于软件工程中敏捷开发方法的讨论,并在上一个版本的基础上做了全面的修改,主要关注使用 Scrum 的敏捷开发以及对于敏捷实践的讨论(例如,用于需求定义的故事以及测试驱动开发)。
这部分的其它章节是对第 2 章中所介绍的软件过程活动的深入阐述。第 4 章介绍需求过程这一十分重要的话题,其中定义了系统应该做什么的需求。第 5 章介绍如何使用 UML 对系统进行建模,主要关注使用用例图、类图、时序图和状态图来构建软件系统模型。在第 6 章中,我对软件体系结构的重要性进行了讨论,并介绍了如何在软件设计中使用体系结构模型。
第 7 章介绍面向对象的设计和设计模式的使用。我也介绍了重要的实现问题--复用、配置管理、宿主机-目标机开发,并且讨论了开源开发。第 8 章聚焦软件测试(从系统开发时的单元测试到软件的发布测试)。我也讨论了软件测试驱动开发的使用,这是在敏捷方法中率先使用的一种方法,现在已经得到广泛应用。最后,第 9 章中我简要介绍了软件演化问题,包括演化过程、软件维护和遗留系统管理。