前言 成功的计算机软件系统必定是一方面满足用户需求且使用起来得心应手,另一方面能在相当长的时间内无故障运行且容易维护。这样的计算机软件系统必须依照规范、采用工程化方法进行开发与运维。软件工程(Software Engineering)是一门指导计算机软件系统开发和维护的工程学科,主要研究如何应用软件开发的科学理论和工程技术来指导大型软件系统的开发,是涉及计算机科学、工程科学、管理科学、数学等领域的一门综合性的交叉学科。 软件系统开发覆盖软件的问题定义、需求分析、总体设计、详细设计、编码实现、测试等软件开发的各方面。通过软件工程课程学习,可以提高软件开发、测试、维护的效率,降低软件开发成本,保证软件可靠性和安全性。为了国家级一流课程建设与教学的需要,完善软件工程国家级线上线下混合式一流课程教材内容,出版本书。 本书期望达到如下目的。 (1) 为学生提供系统化的软件工程知识框架,帮助其理解软件工程的基本概念、原理,为学生提供实用软件开发技能,培养其高效率开发高质量软件的能力,提高其在就业市场上的竞争力。 (2) 以软件系统开发过程这一复杂工程问题为例,明确该过程中采用的技术方法,包括软件工程在内的专业知识,体现计算机专业课程系统化的同时,培养学生运用专业技术方法分析与解决复杂软件工程问题的能力。 (3) 提升软件开发人员的系统分析设计能力和工程实践能力,培养学生的技术创新能力,使其能够在软件开发过程中提出新的思路和解决方案,创新计算机类人才培养体系改革,培育关键基础软件的后备人才。 (4) 在软件系统开发过程中,促进软件开发团队成员间的交流和合作,使其能够更好地协作和沟通,培养团队精神和团体创新能力。 纵览软件工程已出版教材,编写本书还为了体现如下3方面的特色。 (1) 本书以软件开发过程中的各个活动为主线,不仅强调软件工程内容的整体性,并且通过先行课和后续课凸显软件工程专业知识的系统性。 (2) 本书以面向对象软件工程为主线,介绍面向对象过程模型、面向对象需求分析、面向对象软件设计、面向对象测试等;同时,在技术与工具方面,则以面向对象的UML建模为主。 (3) 在研讨软件工程理论、技术方法与工具的基础上,以实际开发的软件系统“智能居家养老平台”为案例,串联并阐述本书的各部分内容。本书第1、2和14章由张晓龙编著,第3、4和11章由高峰编著,第5~8章由刘茂福编著,第9和10章由王磊与刘茂福共同编著,第12和13章由王磊与高峰共同编著,全书由刘茂福和张晓龙统稿。 在本书的成稿过程中得到了清华大学出版社和龙启铭编辑的鼎力协助。此外,本书引用了一些专家学者的研究成果,在此一并表示感谢。 编者 2024年1月