本书系统地介绍了软件工程的概念、原理、方法、技术、标准和相关法律法规。全书共十章,以软件生存周期为主线,对软件工程有关的分析、设计、验证、维护和管理等方面内容作了详尽阐述,突出结构化技术、面向对象技术和组件技术在软件开发过程中的运用,强调软件产品质量和软件过程质量的分析和保证。本书最后简要介绍了软件工程标准化和软件知识产权的有关内容及其对软件工程的影响。
本书包括了软件生存期过程、用例建模、面向对象软件设计模式和模型/视图/控制器框架等相关内容的介绍。并且,为方便读者理解与应用设计模式和模型/视图/控制器框架,本书附录中给出了简明、完整的程序代码。
本书内容新颖,讲述力求理论联系实际、深入浅出、循序渐进。每章均附有习题。
本书主要用作高等院校计算机科学与技术专业本科学生的“软件开发技术”课程或研究生“软件工程”课程的教材,也可作为其他相关专业的教学用书,或作为从事软件开发的科技人员的参考书、培训教材等。
第1章 绪论
1.1 软件工程的产生
1.2 软件工程的研究对象与基本原理
1.3 软件开发方法
1.4 软件工程工具和环境
1.5 软件生存期过程
1.6 软件工程常用生存周期模型
1.7 软件工程的并行工程
1.8 小结
第2章 需求分析
2.1 需求分析的目标
2.2 可行性分析
2.3 需求收集
2.4 需求规格说明
2.5 数据流建模
2.6 实体-关系建模
2.7 系统行为建模
2.8 IDEFO功能建模
2.9 IDEF1X数据建模
2.10 用例建模
2.11 面向对象建模
2.12 统一建模语言UML
2.13 小结
第3章 概要设计
3.1 概要设计的任务和过程
3.2 软件设计基本原则
3.3 而向数据流图的设计方法
3.4 面向对象软件设计方法
3.5 面向对象软件设计模式
3.6 模型-视图-控制器框架
3.7 小结
第4章 详细设计
4.1 详细设计的目标与任务
4.2 结构化程序的详细设计技术与工具
4.3 Jackson程序设计方法
4.4 Warnier程序设计方法
4.5 面向对象程序的详细设计
4.6 基于组件的程序设计方法
4.7 小结
第5章 软件验证技术
5.1 软件测试基础
5.2 代码复审
5.3 白盒测试
5.4 黑盒测试
5.5 单元测试
5.6 集成测试
5.7 确认测试
5.8 系统测试
5.9 程序正确性证明
5.10 调试
5.11 小结
第6章 软件质量和软件质量保证体系
6.1 软件质量
6.2 软件复杂性分析
6.3 软件可靠性分析
6.4 ISO 9000软件质量体系
6.5 软件配置管理
6.6 软件过程能力成熟度模型简介
6.7 小结
第7章 软件维护技术
7.1 软件维护的基本概念
7.2 软件维护过程
7.3 软件可维护性
7.4 软件再工程技术
7.5 小结
第8章 软件项目计划
8.1 成本估计
8.2 效益分析
8.3 风险分析
8.4 进度安排
8.5 项目组织与计划
8.6 小结
第9章 软件工程标准化与文档写作
9.1 软件工程标准
9.2 软件文档编写步骤
9.3 软件文档的主要内容及写作要求
9.4 软件文档的管理
9.5 小结
第10章 软件知识产权保护与道德规范
10.1 知识产权
10.2 软件著作权
10.3 软件著作权登记
10.4 软件商业秘密
10.5 软件工程师职业道德规范
10.6 小结
附录A COM开发实例
附录B 设计模式实例
附发C 中英文术语对照表
参考文献
从软件工程概念正式提出至今,已经经历了将近40年的发展,取得了大量的理论和应用研究成果,形成和促进了软件产业的飞速发展,在社会生活中扮演着愈来愈重要的角色。正是由于学术界和产业界的不懈努力,软件工程正逐步发展成为一门成熟的专业学科。本教材正是为了适应软件工程高等教育的需要,组织具有多年软件工程教学和实践经验的教师编写而成。
本书系统地介绍了软件工程的有关概念、原理、方法、技术、标准和相关法律法规,其目标是使学生理解软件生存周期模型的相关概念和软件工程基本原理,掌握构造软件系统的相关方法、技术和标准(规范),了解“软件工程师”的职业行为准则。本课程是一门工程类课程,实践性很强,学生在学习时除了对概念、原理等的理解之外,更应结合实际,注重方法、技术等的理解和运用。
软件工程近年来发展非常迅速,对于并行工程、UML建模语言、三层应用体系结构、CORBA/COM/DCOM等组件技术、软件复用技术、CMM模型等较新的理论与技术,本书均做了详细介绍。在介绍新概念、新方法、新技术时,本书力争与已有的内容相融合,一方面可以加深理解,另一方面可使本书的所有内容形成一个统一的整体。同时,本书为了突出表现软件工程的工程性,还详细介绍了计划、分析、设计、质量保证、标准(规范)和知识产权保护等内容,但并没有介绍相关的编程技术,我们认为读者在学习“程序设计语言”等课程时已经掌握了这些技术。
全书共分10章。第1章简述了软件工程的产生、软件工程学的研究对象与原则、软件开发方法、软件工程的生存周期模型以及软件工程发展的新方向。第2章阐述了软件需求分析的任务和要求、可行性研究的任务以及系统建模方法。第3—5章叙述了软件开发阶段的任务、过程、方法和技术。第6章介绍了软件质量的概念、分析技术和质量保证体系等。第7章着重讨论了软件维护阶段的活动、提高软件可维护性的策略等。第8~9章主要介绍了软件工程的相关管理技术。第10章简要介绍了软件的法律保护和职业道德规范。如果教学时间有限,可以只讲授第1—5章和第7、8章,其内容依然是完整的。为了便于学生的学习,每章均附有相当数量的练习。
为了适应软件开发的发展趋势,书中包含了对软件生存期过程、用例建模、面向对象软件设计模式和模型视图/控制器框架等内容的介绍。并且,为方便读者理解和应用设计模式及模型/视图/控制器框架,本书附录中给出了简明、完整的示意性程序代码。
本书由中南大学信息科学与工程学院的博士生导师陈松乔教授组织编著和定稿,前4章的大部分内容由王国军编著,其余各章节由任胜兵编著。
由于作者水平所限,加之时间仓促,书中错误和不当之处仍在所难免,还望各位读者进一步批评指正。