本书是普通高等教育“十一五”国家级规划教材,第1版是教育部新世纪网络课程建设工程“软件工程网络课程”子课题的配套教材。新版在继承第1版的“内容先进、注重实践、案例导向”特点的基础上,根据软件工程的最新发展进行了较大幅度的调整。教材内容涵盖ACM/IEEE制定的“软件工程教育知识体系”和教育部计算机专业教学指导委员会制定的《计算机专业规范》中对软件工程课程的要求,提供了更加丰富的案例,力求保证内容的科学性和先进性,并突出软件工程的实践性。 全书共13章。内容包括软件工程概述、软件需求工程、软件设计、面向对象方法基础、统一建模语言UML、软件实现、软件复用与构件技术、软件测试、软件维护、软件工具与集成化环境、软件项目管理、软件能力成熟度模型CMM。 随书附赠光盘一张,包含教材配套的电子教案和教材中部分习题的参考答案。 本书可作为高等院校计算机及相关专业软件工程课程的教材或教学参考书,也可供广大工程技术人员参考使用。
### 软件工程——理论与实践的知识点详解
#### 一、软件工程概述
- **定义**: 软件工程是一门研究用工程化方法构建和维护有效、实用和高质量软件的学科。
- **核心目标**: 在限定的时间和预算内,通过工程化的管理方法,确保软件产品的质量和效率。
#### 二、软件生命周期模型
- **瀑布模型**:
- **特点**: 将软件生命周期划分为需求分析、设计、编码、测试和维护等阶段。
- **优点**: 简单明了,易于理解和操作。
- **缺点**: 不灵活,一旦进入下一个阶段就很难回头修改上一阶段的工作。
- **增量模型**:
- **特点**: 分阶段交付软件产品,每一阶段都是对前一阶段产品的改进。
- **优点**: 更灵活,能够及时响应用户需求的变化。
- **缺点**: 需要有良好的架构设计,以支持后续的增量开发。
- **螺旋模型**:
- **特点**: 结合了瀑布模型的基本成分(需求分析、设计、实施、验证)和原型模型的迭代特征,增加了风险分析环节。
- **优点**: 能够较好地应对需求不确定性较高的项目,有助于控制风险。
- **缺点**: 模型较为复杂,成本较高。
- **喷泉模型**:
- **特点**: 主要适用于面向对象的开发项目,强调迭代和无间隙的流程。
- **优点**: 支持软件重用和并行开发。
- **缺点**: 对项目的组织和管理要求较高。
#### 三、软件需求工程
- **定义**: 定义和理解软件系统的功能、性能、接口、约束等需求的过程。
- **重要性**: 正确的需求分析是整个项目成功的关键。
- **活动**: 需求获取、需求分析、需求规格说明、需求验证。
#### 四、软件设计
- **定义**: 根据需求规格说明书设计软件的体系结构、模块、接口和数据结构的过程。
- **层次**: 架构设计、概要设计、详细设计。
- **原则**: 模块化、信息隐藏、抽象。
#### 五、面向对象方法基础
- **基本概念**: 类、对象、封装、继承、多态。
- **优势**: 提高代码的重用性、可维护性和扩展性。
- **应用**: UML(统一建模语言)等工具和技术。
#### 六、统一建模语言UML
- **定义**: 是一种图形化语言,用于描述面向对象系统的静态结构和动态行为。
- **组成**: 视图、图表、元素、关系。
- **应用场景**: 软件设计、系统分析、需求捕获、系统重构等。
#### 七、软件实现
- **定义**: 实现软件设计的过程,通常涉及编程、测试等活动。
- **工具**: 编译器、解释器、调试器等。
- **方法**: 敏捷开发、极限编程等。
#### 八、软件复用与构件技术
- **定义**: 复用现有的软件组件来构建新的软件系统。
- **优势**: 加快开发进度,提高软件质量。
- **技术**: 组件、框架、中间件等。
#### 九、软件测试
- **定义**: 通过执行软件来评估软件的质量和验证软件是否满足需求规格说明的过程。
- **类型**: 单元测试、集成测试、系统测试、验收测试等。
- **方法**: 黑盒测试、白盒测试等。
#### 十、软件维护
- **定义**: 在软件交付之后进行的修改,以修复错误、改进性能或适应新环境。
- **类型**: 校正性维护、适应性维护、完善性维护等。
- **挑战**: 文档缺失、代码复杂性高等。
#### 十一、软件工具与集成化环境
- **定义**: 用于辅助软件开发、维护和支持的各种工具和环境。
- **分类**: 编辑器、编译器、版本控制系统、集成开发环境等。
- **作用**: 提高开发效率和软件质量。
#### 十二、软件项目管理
- **定义**: 计划、组织、领导和控制软件开发过程的各项活动。
- **内容**: 项目规划、资源配置、风险管理、质量管理等。
- **工具**: 甘特图、PERT图等。
#### 十三、软件能力成熟度模型CMM
- **定义**: 一种衡量软件开发过程成熟度和评估软件开发能力的方法。
- **级别**: 初始级、可重复级、已定义级、已管理级、优化级。
- **目的**: 提升软件开发过程的标准化程度,提高软件质量。
#### 结语
本教材不仅全面涵盖了软件工程的基础理论和实践技能,还结合了最新的技术和方法论,旨在培养学生的软件工程思维能力和实际操作能力。通过对这些知识点的学习,学生可以深入了解软件工程领域的各个方面,为未来从事软件开发及相关领域的工作打下坚实的基础。