前 言 软件工程是高等学校计算机科学与技术、软件工程等专业的一门重要的专业基础课程。它支撑着软件产业和信息产业的发展,为成功开发高质量软件起着重要作用。 为满足人们对软件的高需求、培养优秀的软件工程师,帮助读者更好地理解和应用软件工程的理论知识,掌握实际开发技能和开发能力,我们编写了本书,旨在利用知识图谱帮助读者全面构建软件工程的知识框架,掌握软件工程核心原理和内容,并为读者提供理论与实践相结合的方法和技术,使读者能够深入理解软件工程的各个领域,从而具备一定的开发能力。 本书的特色是将理论与案例结合,以“大学生在线学习系统”这一完整项目案例贯穿全书。本书不仅覆盖了传统软件工程的基础知识,还引入了敏捷过程、面向服务思想、微服务、人工智能等现代软件工程的新理念、新方法、新技术和新工具,旨在引导读者适应不断变化的软件行业。 本书共10章。第1章概括地介绍了软件工程的基本概念,包括软件、软件危机、软件工程及发展、软件生存周期与常用模型。第2~8章按软件生存周期的顺序,介绍了各阶段的任务、过程、方法、技术和工具,其中,第2章重点介绍了可行性分析,以及使用系统流程图和数据流图分别描绘系统的物理模型与逻辑模型;第3章介绍了需求分析与建模,包括需求分析过程、需求获取方法、结构化和面向对象的分析建模方法、工具,SOA、微服务、人工智能等新方法在需求分析中的应用;第4章和第5章是软件设计的理论,详细介绍了软件概要设计和详细设计的任务内容、原理、过程、工具、方法、原则、优化和文档,也包括面向服务、微服务、人工智能大模型等在软件设计中的应用;第6章是关于系统实现的知识,重点介绍了程序编码和风格;第7章介绍了软件测试,包括单元测试、集成测试、白盒测试、黑盒测试等测试过程和方法,以及自动化测试和人工智能下的测试;第8章介绍了软件维护,包括维护过程、策略与方法。第9章介绍了成本管理、进度管理、配置管理、风险管理、过程管理等软件项目管理的概念、原理、方法与技术。第10章为综合性实践项目案例,旨在提高读者工程实践与管理的 能力。 李莉编写了本书的第3、4章和第10章的10.2节、10.3节,并负责全书的统稿;李琰编写了第1、2、5章和第10章的10.1节;刘志光编写了第6、7章和第10章的10.6节、10.7节;乔璐编写了第8、9章和第10章的10.4节、10.5节。本书在编写过程中得到了清华大学出版社的大力支持,在此表示衷心感谢。 编写过程中,编者尽可能地保持内容的客观性和实用性,强调软件工程的实践训练,希望通过真实的案例和具有启发性的问题,引导读者思考并实践软件工程的各方面。 本书适合作为高等学校计算机科学、软件工程等专业的教材或教学参考书,也可供软件开发人员参考使用。希望通过本书的学习,读者能够掌握软件工程的基本原理和技术,了解如何应用这些原理解决实际问题,以及如何以有效的方式管理软件开发过程。 本书配有教学资源,读者可从清华大学出版社网站免费下载。 由于编者水平有限,书中难免存在错误和疏漏之处,敬请广大读者批评指正。 编 者 2024年12月