《软件工程:理论与实践(第2版)》是普通高等教育“十一五”国家级规划教材,第1版是教育部新世纪网络课程建设工程“软件工程网络课程”子课题的配套教材。新版在继承第1版的“内容先进、注重实践、案例导向”特点的基础上,根据软件工程的最新发展进行了较大幅度的调整。教材内容涵盖ACM/IEEE制定的“软件工程教育知识体系”和教育部计算机专业教学指导委员会制定的《计算机专业规范》中对软件工程课程的要求,提供了更加丰富的案例,力求保证内容的科学性和先进性,并突出软件工程的实践性。
全书共13章。内容包括软件工程概述、软件需求工程、软件设计、面向对象方法基础、统一建模语言UML、软件实现、软件复用与构件技术、软件测试、软件维护、软件工具与集成化环境、软件项目管理、软件能力成熟度模型CMM。
随书附赠光盘一张,包含教材配套的电子教案和教材中部分习题的参考答案。
《软件工程:理论与实践(第2版)》可作为高等院校计算机及相关专业软件工程课程的教材或教学参考书,也可供广大工程技术人员参考使用。
软件工程:构建未来世界的蓝图 这是一本关于如何构建未来世界的书。它不是一本关于如何编写代码的书,也不是一本关于如何设计数据库的书。这本书是关于如何思考、规划和组织,以确保我们能够成功地将伟大的想法转化为可靠、高效且真正有用的软件。 想象一下,您站在一片尚未开垦的土地前,心中充满了宏伟的建筑蓝图,您希望在此之上建造一座能够服务无数人的城市。您会怎么做?您不会立刻拿起铁锹开始挖地基,您会先进行详细的勘探,了解土壤的性质,规划道路的走向,设计供水和供电系统,甚至考虑未来的扩建和维护。您会招募工程师、建筑师、规划师,明确每个人的职责和协作方式。您会制定严格的施工计划,层层把关,确保每一个环节都准确无误。 软件开发,尤其是那些规模庞大、复杂度高、需要长期维护的软件,其过程与建造一座宏伟的城市有着惊人的相似之处。而这本书,正是您手中那份详尽而可信赖的“城市规划蓝图”。 我们不会教您如何挥舞“代码的锤子”,但我们会教会您如何设计这座“软件之城”的每一个细节: 需求是土壤的分析: 在开始建造之前,我们需要深入了解用户真正需要什么。这不仅仅是简单地收集“功能列表”,而是要理解用户的痛点、期望和工作流程。本书将带领您掌握各种技术,从用户访谈到原型设计,从用例分析到领域建模,让您能够精准地捕捉到“土地”的特性,理解“客户”的需求,确保我们建造的是他们真正需要的“居所”。我们将探讨如何区分“必须拥有”和“锦上添花”的需求,以及如何在需求变更的浪潮中保持方向。 设计是城市的规划: 一旦我们理解了需求,就需要将其转化为一个清晰、可执行的蓝图。这包括定义软件的整体架构,选择合适的技术栈,设计数据的存储和流动方式,以及规划模块之间的交互。本书将深入探讨各种设计原则和模式,例如模块化、抽象、封装、继承等,这些都是构建高质量软件的基石。您将学习如何设计出既能满足当前需求,又具有良好扩展性和可维护性的系统,就像您会为城市预留未来的发展空间一样。我们将分析不同的架构风格,从单体应用到微服务,帮助您在不同的场景下做出最佳选择。 开发是建筑的施工: 将设计转化为可运行的代码,是软件开发的核心过程。然而,即使是最简单的功能,也需要遵循严谨的步骤。本书将侧重于如何规范和优化这个“施工”过程。您将了解编码标准、版本控制的必要性,以及单元测试、集成测试等质量保障机制的重要性。我们将探讨如何高效地组织团队,进行代码审查,以及如何自动化构建和部署流程,确保“建筑”能够稳步、高质量地推进。 测试是质量的验收: 就像我们在房屋建造完成后会进行各种验收一样,软件也需要经过严格的测试才能交付。本书将详细介绍各种测试方法,包括单元测试、集成测试、系统测试、用户验收测试等。您将学习如何设计有效的测试用例,如何利用自动化工具来提高测试效率,以及如何从测试结果中发现并解决潜在问题,确保交付的“软件之城”坚固可靠,没有“漏雨”或“电路故障”。 部署与维护是城市的运营: 软件交付并不是终点,而是新的开始。它需要被部署到生产环境中,并且在整个生命周期中进行持续的监控、更新和维护。本书将探讨如何进行平稳的部署,如何建立有效的监控体系,以及如何应对突发问题和进行未来的功能升级。您将了解持续集成/持续交付(CI/CD)的重要性,以及如何通过良好的文档和知识管理来确保软件的长期健康运行,就像城市需要持续的市政维护和管理一样。 这本书更是一本关于“团队协作”的指南。 软件开发往往不是一个人的战斗,而是一个团队共同努力的结果。本书将帮助您理解如何组建高效的团队,如何进行有效的沟通和协作,如何分配任务,以及如何管理项目进度。您将学习敏捷开发方法,理解 Scrum、Kanban 等流程如何帮助团队更灵活、更快速地响应变化。 它也是一本关于“持续改进”的哲学。 软件工程并非一成不变的教条,而是一个不断演进的领域。本书将鼓励您批判性地思考,学习新的技术和方法,并不断反思和优化自己的工作流程。您将认识到,真正的软件工程师不仅仅是技术的实践者,更是问题的解决者和不断学习的探索者。 这本书将为您提供一套系统化的思维框架,帮助您理解软件开发的全局,从最初的概念萌芽,到最终的产品交付和长期运营。它将帮助您培养一种严谨、务实、精益求精的工作态度,让您能够自信地驾驭复杂性,驾驭变化,最终构建出真正有价值、能够影响世界的软件。 无论您是初入软件开发的门槛,还是已经在行业中摸索多年,这本书都将为您提供宝贵的洞察和实用的指导,帮助您提升专业技能,成为一名更加出色的“软件城市”的缔造者。它将带领您穿越代码的迷雾,抵达项目成功的彼岸。