软件工程是一种采用工程化方法构建和维护有效的、实用的、高质量的软件的技术与方法。在互联网和人工智能等技术的影响下,软件工程正在经历一场深刻的变革,呈现出敏捷化、智能化和全球化的发展趋势。本书从软件工程的本质出发,详细介绍了软件过程、软件工程技术和软件工程管理,同时介绍了智能软件工程和群体软件工程等新技术和新方法,是一本内容全面、实践性强、紧跟学术和实践前沿的系统性图书,适合作为本科生和研究生“软件工程”“高级软件工程”“软件过程”“软件项目管理”等课程的教材,同时对从事软件开发、运维和管理的各类技术人员也有非常好的借鉴作用。
和其他软件工程相关书籍相比,本书具有以下特点:
(1)覆盖SWEBOK第4版的核心知识域
IEEE正在制定国际标准的软件工程知识体系(Software Engineering Body Of Knowledge, SWEBOK)第4版,SWEBOK第4版目前已进入公共评审阶段,计划2023年推出。本书覆盖SWEBOK第4版的核心知识域,包括软件需求、软件架构、软件设计、软件构造、软件测试、软件工程运营、软件维护、软件配置管理、软件工程管理、软件工程模型与方法、软件工程过程、软件质量和软件工程职业实践。
(2)突出了软件工程的敏捷化、开发与运维一体化、智能化
为适应当前软件工程的过程和方法上的特点,本书弱化和减少了以瀑布模型为代表的软件开发模型和结构化开发方法学的知识点,强化了敏捷软件开发和面向对象的开发方法学;增加了开发与运维一体化(DevOps)和持续集成与持续交付;展望了智能软件工程和开源等群体软件工程的新技术和新方向。
(3)案例贯穿软件工程核心环节
软件工程是一门工程学科,实践非常重要,因此本书引入了软件工程的最佳实践(best practice),并以一个汽车4S店业务管理系统为案例,阐述了软件工程从需求、设计、测试到管理等的核心环节,帮助学生扎实掌握基础知识,培养学生解决实际问题的能力。除此之外,我们强调在学习软件工程的过程中要进行大作业的演练。
全书分为四篇——软件工程概述、软件工程技术、软件工程管理和软件工程新进展,共16章。第一篇讲述软件工程的概念和软件过程;第二篇讲述从需求、设计、编码、测试到运维的软件工程技术实践和面向对象的分析与设计方法;第三篇讲述软件工程管理的重要知识域,包括软件项目管理和规划、软件质量管理、软件风险管理、软件度量、个体和团队管理;第四篇讲述软件工程的两项新进展——智能软件工程和群体软件工程。
本书除了以下说明的章节之外,均由沈备军执笔完成。本书的合著者万成城副教授编写了第8章和第15章;陈昊鹏副教授编写了第5章和第6章;陈雨亭副教授编写了第3章。
本书在编写过程中得到了上海交通大学智能软件工程实验室顾小东老师和同学们的大力支持,在此向他们表示衷心的感谢。还要感谢上海交通大学软件学院和计算机系的领导和老师们对我们的指导与帮助。本书内容覆盖广泛,除了作者自身的研究成果和实践经验以外,参考了大量公开发表的文献,故同时向这些作者表示感谢。
由于作者水平有限,书中难免存在不足和不当之处,恳请广大读者指正。
作者
2023年3月