软件工程:共同演进的方法介绍(2012年秋)主编:田文洪副主编:王玉林,李凡,周俊临参编:段贵多,蓝天,孙夏爽,钟元椋,景晨,胡金安,董旭,王浩严软件工程(仅供电子科技大学计算机学院内部教学使用) ‐II‐ 前言“软件工程”是高等院校计算机教学计划中的一门核心课程,主要内容包括软件工程背景介绍,软件过程模型,软件需求分析,软件设计,软件编码规范,软件测试,软件项目管理,软件项目度量,软件风险管理,软件质量管理等内容。为突出理论与实践紧密结合的特点以及配合“卓越工程师计划”,本书采用理论与实践紧密结合的共同演进方法进行介绍,既介绍了传统软件生命周期过程中的主要内容,又介绍了现代软件工程中比较新颖的技术方法,包括新的过程模型、软件作为一种服务、新的并行分布式编程模型等近年来新兴的方法和技术。本教材涵盖IEEE和ACM联合研究项目——SWEBOK(工程知识体系)包含的10个知识领域的主要内容,主要介绍软件工程的背景知识、软件过程模型、需求分析、需求建模、设计工程、体系结构设计、编码和新的技术趋势需求、测试技术与策略、项目管理概要、风险分析与管理、软件质量管理等内容。同时适应卓越工程师培养计划的需求,通过理论与实践(实际项目)的紧密结合介绍,使得学生在学习的过程中了解和掌握软件工程的基本概念、原理和方法,并能应用到实际项目中去。本教材基于作者多年来教学实践与改革的经验,特别是收集了学生的反馈,结合目前软件工程教材的优点并考虑到学生的学习特点而编著。主要特色包括以下几个方面:(1)增强理论与实践相结合:案例贯穿全教材。教学案例源于已实际开发的项目,从教学一开始直至结束,所有概念、方法都会应用于这些教学案例中。随着案例项目的进展分析,完成全部教学内容。这种方法国外相当流行,这种方法的确可以在培养学生分析解决问题的能力上发挥更大作用,因而值得研究和发扬;(2)突出组织逻辑和增加趣味性:目前的国内教材和选用的国外经典教材,用于本科教学后,学生的普遍反映还是概念原理介绍过多,内容组织的逻辑思路不是很明晰,介绍的内容非常技术性。我们希望针对学生的反馈在新编教材中进行改进。(3)增加软件产业热门和急需的技术知识:适当介绍软件产业热门和急需的软件/平台作为服务等知识,开阔学生的视野并为他们就业做好准备。本书将阐释:软件工程的发展背景和发展趋势如何?IEEE和ACM软件知识体系建议的软件工程的主要内容有哪些?软件工程的核心内容是什么?经典的软件工程流程包含哪些主要环节?软件工程的主要理论与实践如何结合?如何建立一个全局的需求分析、设计、测试与维护的软件工程观?常用的软件开发工具和编码规范有哪些?本书主要内容包括软件工程简介(第1章),过程模型(第2章),软件需求(第3章),软件设计工程(第4章),软件生产率和工作量度量(第5章),软件质量管理(第6章),测试方法(第7章),测试策略(第8章),软件维护(第9章),软件项目管理(第10章),软件风险分析和管理(第11章),软件工程开发工具(第12章)。本书适合高年级本科学生和低年级研究生作为教材使用,同时也可作为研究人员的参考指南。本书的编写获得985高校基金资助和”卓越工程师计划”资助。本书由田文洪主编,王玉林、李凡、周俊临为副主编,参加本书编写工作的还有:段贵多,蓝天,孙夏爽、胡金安、董旭、钟元椋、景晨、王浩严。本书是编辑组成员对以上内容大软件工程(仅供电子科技大学计算机学院内部教学使用) ‐III‐ 量理论知识与实践经验的积累结果,因时间仓促,可能存在不妥之处,欢迎指正,请发邮件至:SE_Coevolutionary@gmail.com。软件工程(仅供电子科技大学计算机学院内部教学使用) ‐IV‐ 目录 第一章软件工程的简介..............................................................................................................1 1.1软件工程的简要介绍...............................................................................................................1 1.1.11945年之前:探索阶段.................................................................................................1 1.1.21945~1965年:起源时代.............................................................................................2 1.1.31965~1985年:软件危机时代.....................................................................................2 1.1.41985~1989年:没有灵丹妙药.......................................................................................3 1.1.51990~1999年:互联网的盛行.....................................................................................3 1.1.62000年至今:轻量级方法.............................................................................................3 1.1.7软件工程的当前趋势.....................................................................................................4 1.1.8今天的软件工程............................................................................................................4 1.2软件...........................................................................................................................................4 1.2.1软件的正式定义............................................................................................................4 1.2.2软件的特点....................................................................................................................5 1.3软件工程的重要性....................................................................................................................6 1.3.1软件危机........................................................................................................................7 1.3.2对于软件和软件工程的观点.........................................................................................7 1.3.3软件工程的正式定义.....................................................................................................7 1.4软件工程主要的关注领域和目标...........................................................................................8 1.5软件工程的7个原则...............................................................................................................8 1.6软件工程中的主要课题...........................................................................................................9 1.7.与其它原则之间的联系.......................................................................................................12 1.8一些对软件工程的误解.........................................................................................................12 1.9软件工程职业道德和责任规范.............................................................................................13 1.10本章总结..............................................................................................................................14 第2章过程模型...........................................................................................................................20 2.1概述........................................................................................................................................21 2.2什么是软件过程?...................................................................................................................22 2.3成熟度模型.............................................................................................................................22 2.4软件过程模型........