本书是1997年出版的高等学校规划教材《软件工程》的修订版。全书共5篇10章,系统地介绍了软件、软件工程与软件工程模式,软件开发方法,质量与质量保证,计划与管理,工具与环境等最新内容。各章附有习题。
读者将从本书中纵览软件工程发展的全貌,了解和掌握软件工程各领域重要的原理、方法、技术、应用和关系,为研究软件工程的理论和从事软件工程实践,以及更深入地学习打下良好的基础。
第1篇软件、软件工程与软件工程模式
第1章软件和软件工程
1.1软件
1.1.1软件的含义
1.1.2软件的特点
1.1.3软件的种类
1.1.4软件危机
1.2软件工程
1.2.1软件工程的定义
1.2.2软件工程的发展和问题
第2章软件工程模式
2.1瀑布模型
2.2原型开发模型
2.3螺旋模型
2。4四代技术
2.5混合模型
2。6面向对象生存期模型
2.7统一的软件开发过程
2.7.1用例驱动
2.7.2以体系结构为中心
2.7.3迭代和增量开发
2.8基于构件的软件开发
2.8.1软件构件技术
2.8.2软件体系结构
2.8.3领域工程
2.8.4再生工程
2.8.5开放系统技术
2.8.6软件开发过程
2.8.7CASE技术
2.8.8非技术因素
第2篇软件开发方法
第3章结构化开发方法
3.1需求与需求分析
3.1.1分析任务和分析员
3.1.2问题域
3.1.3沟通技术
3.1.4分析原理
3.1.5规格说明
3.1.6规格说明评审
3.2结构化分析
3.2.1基本符号及其扩充
3.2.2结构化分析方法
3.2.3数据字典
3.3设计原理
3.3.1软件设计的重要性
3.3.2设计过程
3.3.3设计基本原理
3.3.4模块化设计
3.3.5数据设计
3.3.6体系结构设计
3.3.7过程设计
’3.3.8设计规格说明
3.4面向数据流的设计
3.4.1结构图
3.4.2数据流的类型
3.4.3从数据流图到程序结构图的转换
3.4.4设计步骤
3.4.5设计的后处理
3.5面向数据结构的设计
3.5.1Jackson的结构图解和图解逻辑
3.5.2Warnier-Orr图
3.5.3Jackson开发方法
3.5.4Warnier-Orr开发方法
3.6原型开发
3.6.1原型的定义
3.6.2原型开发的应用
3.6.3原型开发的分类
3.6.4原型开发的活动
3.6.5原型开发的技术
第4章面向对象开发方法
4.1面向对象分析与设计
4.1.1面向对象方法的基本概念和特征
4.1.2面向对象分析
4.1.3面向对象设计
4.2Booch的面向对象方法
4.2.1方法
4.2.2步骤
4.3OMT对象建模技术
4.3.1OMT方法使用三种模型
4.3.2设计过程的三个步骤
4.4统一的建模语言UML
4.4.1UML的主要特点
4.4.2UML的结构
4.4.3UML的模型图
·4.4.4系统体系结构
4.5Rational统一过程
4.5.1动态结构
4.5.2静态结构
4.5.3以体系结构为中心的过程
4.5.4用例驱动的过程
4.5.5过程工作流
4.6实例:课程登记系统
4.6.1问题描述
4.6.2分析
4.6.3设计
第5章形式化开发方法
5.1Petri网
5.1.1Petri网的定义
5.1.2Petri网的基本原理
5.1.3建模实例
5.1.4特性分析
5.1.5Petri网的特性分析方法
5.1.6改进Petri网及其应用
5.1.?时间网和随机网
5.1.8面向对象程序设计方法
5.1.9实例:应用Petri网实现资源共享
5.2时态逻辑
5.2.1线性时态逻辑
5.2.2计算树逻辑
5.3Z方法
5.3.1模式的基本概念
5.3.2模式运算
5.3.3模式复合
5.3.4操作模式
5.3.5实例:图书馆数据库管理
第3篇质量与质量保证
第6章软件质量与质量保证
6.1软件质量
6.1.1软件质量定义
6.1.2软件质量因素
6.2软件质量保证
6.2.1质量保证策略
6.2.2软件质量保证活动
6.3技术方法的选用
6.3.1采用或不采用软件工程方法
6.3.2开发过程的选用
6.3.3开发方法、语言和工具的选用
6.4正式技术评审的实施
6.4.1软件缺陷的费用影响
6.4.2缺陷的扩大和排除
6.4.3正式技术评审
6.5标准的执行
6.5.11SO/IEC的软件工程标准体系结构框架
6.5.21SO/IEC12207和ISO/IECTR15504
6.5.31SO9000-—3
6.5.4CMM
6.6修改的控制
6.6.1软件配置管理
6.6.2墓线
6。6.3标识
6.6.4修改控制
6.6.5配置审计
6.6.6状态报告
6.7度量
6.7.1传统软件的量度
6.7.2面向对象软件的量度
6.8SQA小组的活动
6.9实例:重大失控项目的经验与教训
6.9.1可预测的和意外的失控
6.9.24个项目失控案例
第7章软件测试
7.1结构化软件测试
7.1.1软件测试的目标
7.1.2软件测试的原则
7.1.3测试用例设计
7.1.4软件测试的过程和步骤
7.1.5纠错技术
7.200软件测试
7.2.1评审(OOA和OOD)
7.2.2测试
7.2.3测试用例设计
7.3实例:微软测试工作简介
7.3.1微软开发团队
7.3.2对软件测试的理解
7.3.3关于Bug
7.3.4软件测试方法和辅助工具
7.3.5相关测试文档
7.3.6如何与项目经理和开发人员沟通
第8章软件维护
8.1软件维护的分类
8.2软件维护的特点
8.2.1软件工程与软件维护的关系
8.2。2维护费用
8.2.3维护中的问题
8.3软件的可维护性
8.3.1控制因素
8.3.2定量度量
8.3.3评审
8.4软件的维护任务
8.4.1维护机构
8.4.2编写报告
8.4.3维护流程
8.4.4记录保存
8.4.5评价
8.5软件维护的副作用
8.5.1修改代码的副作用
8.5.2修改数据的副作用
8.5.3修改文档的副作用
8.6维护“奇异码”
8.7预防性维护
第4篇计划与管理
第9章软件开发计划与管理
9.1软件的目的和工作范围
9.2资源
9.2.1人力资源
9.2.2可重用软件资源
9.2.3环境资源
9.3成本估算
9.3.1成本估算方法
9.3.2经验成本估算模型
9.3.3软件生产率数据
9.3.4基于代码行(LOC)的成本估算方法
9.3.5基于过程的成本估算方法
9.4风险分析与管理
9.4.1软件风险
9.4.2风险识别
9.4.3风险设计
9.4.4风险评价
9.4.5风险的缓解、监控和管理
9.5进度安排与跟踪
9.5.1交付日期的确定
9.5.2进度安排的基本原则
9.5.3软件工作的特殊性
9.5.4工作量分配
9.5.5进度安排
9.5.6时间表和项目表
9.5.7进度跟踪
9.6软件项目组
9.7项目计划
第5篇工具与环境
第10章软件开发工具与环境
10.1软件开发工具
10.2软件开发环境
10.2.1按解决的问题分类
10.2.2按现有软件开发环境的演化趋向分类
10.2.3按集成化程度分类
10.3计算机辅助软件工程
10.3.11-CASE集成方式
10.3.21-CASE框架结构
10.3.31-CASE中心库
10.4实例:Ada编程支持环境
参考文献
在经济全球化、网络化和服务化的今天,计算(机)学科、教育、产业和市场都有了很大的发展。
IEEE-CS/ACM于2001年12月15日在总结ComputingCurriculal991的基础上推出了ComputingCurricula 2001,并把软件工程作为计算(机)学科的4个子学科中的一个。IEEE和CMU/SEI在计算(机)科学的基础上,拟订出软件工程知识体,以适应计算(机)教育、企业和职业发展的需要。
目前,软件工程更加成熟。软件开发已从面向过程、面向对象发展到基于构件和Web服务,软件形式化开发重新提到了合适的位置。软件质量和质量保证已从以检测为重点发展到对开发过程每项活动的每个任务的质量控制,特别是对面向用户的产品设计(源头)的质量控制。国际标准化组织ISO为软件工程制定了ISO/IECl2207(softwarelifecycleprocesses)和
ISO/IECTR 15504(softwareprocessassessment),以及相关部分的子标准近40项。软件开发管理已经不是单纯的项目、成本和进度管理,而是发展到对软件开发过程、质量、配置和风险的管理。对开发组织和团队的成员,不仅重视他们的数理和技术功底及编程能力,还强调他们的沟通技能、团队精神和发展潜力。
现在已经有不少公司在实践的基础上总结出一批好的经验。如微软解决方案框架MSF和运营框架MOF、Rational统一建模过程RUP、Borland软件管理战略ALM,以及Kent极限编程XP等。
软件工程在国内外已成为一门重要的热门职业,各种教育、培训、认证和注册机构为不同层次的软件技术人员和管理人员进行培训、注册和发放资格证书等。2002年,我国决定成立35所示范性软件学院,培养高层次实用型、复合型和具有国际竞争力的软件技术和管理人才。2004年,又决定成立35所示范性软件职业技术学院,培养软件“蓝领”。
在这样的大背景下,我们从去年年初开始对1997年出版的《软件工程》一书进行修版工作。
本书把原书8篇20章调整为5篇10章:
第1篇 软件、软件工程与软件工程模式
第l章 软件和软件工程
第2章 软件工程模式
第2篇 软件开发方法
第3章 结构化开发方法
第4章 面向对象开发方法
第5章 形式化开发方法
第3篇 质量与质量保证
第6章 软件质量与质量保证
第7章 软件测试
第8章 软件维护
第4篇 计划与管理
第9章 软件开发计划与管理
第5篇 工具与环境
第10章 软件开发工具与环境
这样,从总体上看重点更加明确。在内容上除第3章、第8章、第lo章基本没有改动以外,其他各章全部重写,内容得到了充实。一些重要章节增加了实例介绍。
本书是高校研究生、本科生、高职高专学生和在职专业人员学习软件工程的教材。可以全学,也可以根据读者所学专业和要求的不同,选学其中部分章节。
在本书编写过程中,原书作者姚淑珍与吴芸都因工作繁重,没能参加。但她们都对本书的修版提出了宝贵的意见,姚淑珍教授还对本书进行了最后的评审。
为了加强本书形式化开发部分内容的写作,有幸请到了桂林电子工业学院古天龙教授加盟本书的修版,还请北京大学袁崇义教授对形式化开发方法这一章的内容进行了专门评审,提出了许多好的修改意见。
在确定本书修版大纲的讨论中,编委会的张吉锋教授、龚天富教授、朱家铿教授和袁开榜教授等都提出了宝贵意见。在具体修版过程中,北京航空航天大学麦中凡教授、谭火彬老师和 桂林电子工业学院董荣胜副教授,以及北京航空航天大学软件学院的许多老师,包括教育部驻北京航空航天大学全国软件学院院长联席会秘书处负责人李璞处长和武晓乐老师也提出不少好的意见。另外,余慧珠、王春梅、雷珊文和杨松柏等老师还帮助做了许多具体工作,在此一并向他们表示衷心的感谢。
由于水平和时间的限制,书中肯定会有许多不足之处,请各位读者批评指正,欢迎随时反馈用书信息。