《软件工程(原书第10版)》是系统介绍软件工程理论的经典教材,共包含四个部分:第1部分(第1~9章)是对软件工程的一般性介绍,介绍了软件工程的一些重要概念(如软件过程和敏捷方法),描述了基本的软件开发活动(从需求规格说明一直到系统演化);第二部分(第10~14章)关注软件系统可依赖性和信息安全等重要话题;第三部分(第15~21章)介绍更高级的软件工程话题;第四部分(第22~25章)关注技术管理问题。
《软件工程(原书第10版)》适合作为软件和系统工程专业本科生或研究生教材,同时也是软件工程师难得的参考书。
软件工程在过去50年之中取得了令人瞩目的进展。我们的社会已经无法在缺少大型专业化软件系统的情况下正常运转了。国家的公用事业和基础设施(如能源、通信、交通)全都依赖于复杂且可靠的计算机系统。软件使得我们可以探索空间,创造万维网这一人类历史上最重要的信息系统。智能手机和平板电脑无处不在,而为这些设备开发软件的整个“应用开发产业”已经在过去几年中悄然形成。
人类现在正面临着一系列迫切的挑战——气候变化和极端天气、自然资源的减少、需要为更多的人口提供食物和住房、国际恐怖主义的威胁,以及为老年人提供令人满意的生活。我们需要新技术来帮助我们应对这些挑战,可以肯定的是软件将在这些技术中扮演核心角色。因此,软件工程对于我们在这个星球上的未来极其重要。我们必须继续培养软件工程师并推动软件工程学科的持续发展,从而满足开发更多的软件系统以及创造我们所需要的越来越复杂的未来系统的需要。
当然,软件项目还存在很多问题。系统仍然有时会延迟交付并且成本超支。我们正在创造越来越复杂的软件系统之系统(software systems of systems),在这条道路上遇到各种困难也是不足为奇的。然而,我们不应该让这些问题掩盖软件工程领域已经取得的巨大成就,以及所形成的各种令人印象深刻的软件工程方法和技术。
本书的不同版本已经有超过30年的历史,而这一版同样遵循了本书第1版中所建立的基本原则:
1.按照工业界实践介绍软件工程,不对任何特定的方法(例如敏捷开发、形式化方法)持倾向性态度。在现实中,工业界往往将各种技术(例如敏捷以及基于计划的开发)混合在一起使用,这一点也在本书中有所反映。
2.根据我所知道的以及所理解的知识介绍软件工程。很多人建议我增加并详细介绍其他相关话题,例如开源软件开发、UML的使用以及移动软件工程等,但是我对这些领域的了解并不多,我个人的工作主要是在系统可靠性和系统工程方面,这一点在我为本书所选择的高级专题中有所反映。
我认为现代软件工程的关键问题是管理复杂性,将敏捷和其他方法结合起来,并确保我们的系统安全以及有韧性。这些问题是我在这一版中修改和新增内容的主要因素。