面向对象与传统软件工程(原书第5版)
作者 : (美)Stephen R.Schach
译者 : 韩松 邓迎春 李萍
丛书名 : 计算机科学丛书
出版日期 : 2003-09-01
ISBN : 7-111-12477-4
定价 : 48.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 465
开本 : 16开
原书名 : Object-Oriented and Classical Software Engineering ,5e
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是一本经典的软件工程教科书,自1990年出版以来,这已是第5次修订出版(该书的原版影印版《面向对象与经典软件工程》也已由机械工业出版社出版)。全书共分两部分:第一部分介绍了以项目开发为基础的软件工程的理论基础;第二部分讲述了软件生命周期的各个阶段。
  本书内容全面,其突出特点是理论与实践相结合,以一个具体的案例详细说明了软件开发过程的每个阶段。大量的思考题繁简得当、由浅人深,既考察了学生的基础知识扎实程度,又锻炼了学生的实际应用能力。
  本书还提供了大量的参考资料,便于读者进一步深入阅读各个主题。

图书特色

本书是一部实用性很强的教学用书,被国外多所大学用作课堂教材。为了便于学生学习掌握,作者将本书内容分为两部分。第一部分给出了软件工程的理论基础,第二部分全面介绍了软件生命周期的各个阶段。第二部分的一个显著特点是通过案例研究来说明有关技术。在本书中,作者更详细地说明了如何完成案例研究,从而使学生能够更好地理解并实际运用所学知识。
大量的思考题要求学生对案例研究做出修改,让学生通过动手操作掌握知识。
  本书突出特点:
 ●不依赖开发语言介绍有关技术,并为案例研究提供了c++和Java源代码
 ●增加了极限编程和ISO/IEC 12207方面的最新内容
 ●涵盖600多篇参考材料,便于读者进一步阅读,其中包括许多新材料—
 ●思考题集内容广泛,其中包含练习,基于小组的学期项目,基于研究论文的问题以及一些基于案例研究的问题
 ●包括面向对象及传统范型,为学生们毕业后所面临的各种职业考验做准备
 ●在第二部分每一章的末尾,专门用一小节讨论了软件生命周期每个阶段所面临的挑战
  Stephen R.Schach 1972年获魏兹曼科学院物理学理科硕士学位,1973年获开普敦大学应用数学博士学位。1972—1983年间,
  在开普敦大学应用数学和计算机科学系任教.1983年以来在范德比尔特大学工作。
  作者在软件工程领域有广泛研究,特别是对软件维护与开放源码软件的实验分析有深入研究。
  作者曾写了多部有关软件工程、面向对象软件工程.面向对象系统分析与设计的教材,署名出版物(包括录像带)达100部之多。他还在国际上广泛讲授软件工程方面的课程,包括重用、CASE和面向对象范型等。

图书前言

本书的第4版是以两种版本发行的,一个版本的示例是用C++描述的,另一个版本的示例是用Java描述的。然而,从本质上来讲,软件工程是与程序语言无关的。在本书中,代码示例相对较少。因此,在这个版本中,我尽量除去那些与程序语言有关的细节,以确保代码示例对C++和Java用户都同样清晰适用。例如,C++的输出使用cout,而Java的输出使用Systen.out.println,这时我就使用伪码指令print表示输出(新的案例研究情况除外,在新的案例中,将分别给出用C++和Java实现的全部细节)。因此,本版可以认为是第4版两种版本
的结合。
  改进教学方法是第5版的重点。整本书中每章都充实了新的内容;另外,新的大纲和摘要对学生及其指导老师也有帮助。并且,本书还提供了许多附加材料,对怎样实行各种软件工程技术进行了说明,这一版中对案例研究的阐述比第4版更为详细。
  本书第4版有一章为“小组及其工具”。在这一版中,本书对此材料进行了更新,并将其分为两个部分,以便能更加集中地阐述各自蕴含的主题,这也是新教学方法的一方面。另外,第4章对开发小组进行了说明,第5章对软件工程师所使用的工具进行了说明。
  尽管大家一致认为面向对象范型比传统(结构化)范型要好,我的书跟以前一样,仍然既包括传统软件工程的材料,也包括面向对象软件工程的材料。我这样做可能会使某些读者感到奇怪,一个紧跟技术发展的软件工程教科书当然应该对面向对象范型进行描述,而最好将传统范型当作历史,作脚注说明即可。
  情况并不像大家想的那样。尽管人们对面向对象范型普遍持乐观态度,而且也有越来越多的证据表明其优于传统范型,但传统范型方面的材料仍然是必需的。这样做有3个理由。
首先,如果不能充分理解传统方法,以及传统方法与面向对象方法的区别,就不可能充分理解面向对象方法。
  本书既包括面向对象范型又包括传统范型的第二个原因是,技术的转换是一个缓慢的过程,大多数软件组织并没有使用面向对象范型,这样,许多使用本书的学生,将来很可能受雇于仍在使用传统软件工程方法的公司;甚至,即使某公司已经使用了面向对象方法进行软件开发,仍需要对那些已经开发好的软件进行维护,而这些软件原来并不是用面向对象方法开发的。因而,如果本书中不包括传统方法方面的内容,那么对使用本书的学生没有好处。
  本书包含两个范型的第三个原因是,某学生成为一个公司的雇员后,如果该公司正考虑向面向对象技术转换,那么该学生就可以建议公司考虑新方法的优点和缺点。所以,像在前一个版本中一样,本书对传统方法和面向对象方法进行比较、对照和分析。
  本书第4版是第一本使用统一建模语言(Unified Modeling Language,UML)的软件工程教科书。UML在本书第4版发行前刚刚开始使用,在短短的3年时间内,该语言形式上已经标准化,并获得了广泛使用。现在,如果某教科书没有使用UML对面向对象方法进行分析和设计,那么该书立刻会被淘汰。所以,我继续使用UML进行面向对象分析和面向对象设计,在任何使用图表对对象及其关系进行描述的地方也使用UML。
  第4版引入的另一个当时很新的主题是“设计模式(design pattern)”。像UML一样,设计模式现在已成为软件工程的主流。因此这里保留并加强了设计模式方面的内容。
  这一版的一个新主题是“极限编程(eXtreme Programming,XP)”。XP仍然是一个有争议的话题,但是我认为学生们需要对这个主题有一个大概的了解,这样他们就能够自己判断XP到底只是一种流行的时尚,还是真正是软件工程的一个突破。
  在以前的版本中,我强调了文档、维护、复用、可移植性、测试以及CASE工具的重要性。在这一版中,所有这些概念仍然具有同等的重要性。如果学生们对软件工程基础的重要性没有认识,那么教给他们最新的软件工程技术是没有用的。
  像在第4版中一样,这一版对面向对象方法的下述各个方面进行了专门阐述:面向对象软件生命周期模型,面向对象分析,面向对象设计,面向对象范型的管理含义,以及面向对象软件的测试和维护,其中也包括面向对象范型的度量(metric)。另外,书中有许多地方对对象进行了简短的引用,可能是一段,也可能仅有一句。引用对象的原因是,面向对象范型不仅仅与“每个阶段是怎样实施的”有关系,该方法还渗透到我们看待软件工程的方式上。对象技术贯穿本书始终。
  软件过程仍是整本书背后蕴含的基本概念。为了对过程进行控制,我们必须能够对项目中发生的事情进行测量。因此,本书仍会继续强调度量的重要性。在过程改进方面,对能力成熟度模型(Capability Maturity Model,CMM)和ISO/IECl5504(SPICE)方面的内容进行了更新,并添加了ISO/IECl2207方面的内容。
  像在第4版中一样,本书有600多个参考文献。我选择了一些前沿研究论文,以及一些经典的文章和书籍,这些文章和书籍的内容较新,并且与本书的主题有关。软件工程无疑是一个快速发展的领域,学生们需要知道最新成果,并且需要知道在哪些文章里能找到相关内容。与此同时,现在的前沿研究是建立在昨天的事实基础之上的,而且我认为如果有的观点在今天仍然像过去那样适用,那我们仍然可以引用它们。
  至于阅读本书的前提,假设读者应当对一门高级语言比较熟悉,像Pascal、C、C++、Ada、Basic、Cobol、Fortran或Java。另外,读者应当学习过数据结构方面的课程。
第5版内容安排
  与第4版一样,第5版用于传统的软件工程课程。在传统的一学期课程(或1季度学期)中,教师需要讲完课程的理论内容,尽快为学生提供完成学期项目所需的知识和技巧。学生们需要完成课程学习,以便可以尽早开始着手学期项目,从而能够在学期结束时及时将项目完成。为了配合学期的、以项目开发为基础的软件工程课程,本书的第二部分讲述了软件生命周期的不同阶段;而第一部分则包含了理解第二部分所必需的理论知识。例如,第一部分向读者介绍了CASE、度量和测试;第二部分的每一章都有一节是关于那个阶段的CASE工具的,有
一节是关于那个阶段的度量的,还包含关于该阶段的测试。第一部分内容较少,这样教师可以在一学期中尽早开始讲述第二部分内容。此外,第一部分的最后两章(第8章和第9章)也可以推迟到与第二部分一同讲解,这样学生就可以尽早开发学期项目了。
  我们发现,越来越多的计算机科学和工程系的毕业生,都成了软件工程师。因此,许多学院和大学设置了更多的软件工程课程。前一部分课程主要是理论内容(但几乎总有某种类型的一个小项目);后一部分课程主要是由一个以团队为基础开发的大的学期项目组成,该项目常常是一个能出成就的项目。当学期项目处在第二部分课程中时,教师就不需要那么匆忙往前赶了。
  因此,课时少的教师先讲本书的第1—7章,接着开始讲授第二部分(第10—16章);第8章和第9章可与第二部分同时讲授,或是留到最后去讲。当课时多时,可按顺序对本书各章节进行讲授;本书讲授完时,班级学生已经为下学期的团队学期项目作好准备了。
  为了保证学生能真正理解本书第二部分的关键软件工程技术时,每一项关键技术都出现两次。首先,每当引入一种新技术时,都通过电梯问题对其进行说明。电梯问题的规模很合适,它能使读者明白一种技术是如何应用于一个完整的问题的,并且它还精细到足以指出所讲授技术的优缺点。然后,在每一章要结束的时候,都给出相关的新的案例研究。这种详细的解决办法,再次对软件技术进行了阐述。
思考题集
  与本书前面的版本一样,有4种类型的问题。首先,在每章的最后有几个练习,它们的目的是强调本章的关键内容。这些练习是完备的,与练习有关的所有技术信息都能在本书找到。
  第二,有一个软件学期项目。设计的项目能让学生以3人小组工作的方式解决(3个人是不能在通常电话上同时交换意见的最少团队成员数目)。学期项目包括16个独立的部分,每个部分都与相应的章节有关。例如,第13章的主题是设计,所以该章中的学期项目就与软件设计有关。通过将一个大项目分解成较小的、明确定义的小块,教师就能够更好地监督班级的进度。学期项目的结构使得教师能够将软件工程的16个组成部分自由地应用到所选择的任何项目中去。
  由于本书是为研究生和高年级的本科生写的,所以第3类问题是以软件工程文献著作中的研究论文为基础的。在每一章中都选择了一篇重要的论文,本书尽可能选择了面向对象软件工程方面的论文,要求学生阅读相关论文,并提出与论文内容有关的问题。当然,教师也可以布置任何其他研究论文。每章最后一节是“进一步阅读指导”,其中包含了范围广泛的各种有关论文。
  第4类问题与案例研究有关,这类问题首先是在第3版中引入的,当时是为了响应一些教师的看法。这些教师认为让学生对现有的产品进行修改,比重新开发新产品更能学到东西。
许多计算机行业的高级软件工程师很赞同教师们的这种观点。所以,在有案例研究内容的每一章中,至少有3个问题要求学生对案例研究做出某种修改。例如,有的章可能是要求学生们用一种跟原来不同的设计技术对该案例进行重新设计;而有的章,则可能要求学生回答,如果用不同的顺序执行面向对象分析的步骤,那么会产生什么效果。为了使案例研究源代码的修改更容易,可到站点http://www.nhhe.com/engcs/compsci/schach查询,该网站有本书所有插图的电子文件,以及完整的课件PowerPoint。
  本书还备有《教师参考答案手册》,它包括所有练习的详细答案,也包括学期项目的详细答案。可从McGraw—Hill出版公司得到《教师参考答案手册》。

译者简介

韩松 邓迎春 李萍:暂无简介

译者序

今天软件在信息社会中无处不在,它已经渗透到自然科学和社会科学的各学科,渗透到各种工程技术领域乃至人类生活的各个方面。软件工程是关于软件开发全过程的一门科学,它不仅为软件专业技术人员所必需,也对软件管理者的工作有很大的指导作用。
  软件工程现已步人成熟期,它在软件开发和管理过程中的重要性已为人们所共识。目前,软件工程领域仍不断有各种新技术和新方法出现,当务之急是把软件工程技术与软件生产实践紧密地结合起来,深入应用在软件生产的各个环节。在我国加入世界贸易组织的今天,软件生产与国际接轨,软件管理走向国际化、科学化的道路势在必行。因此,迫切需要IT界人士熟练掌握软件工程方面的知识和方法。
  本书有两个主要特点:
  其一,本书是一本面向本科生的教材,它概括了整个学科的各个方面。全文剪裁合理,深入浅出,显示出作者深厚的教学功底。不仅于此,它还对该学科的新技术、新方法及其应用做了深入介绍,同时为读者进一步研究提供了指导和帮助。本书还非常适合软件管理人员以及其他汀业人员阅读。
  其二,本书很好地把握了传统软件工程内容与面向对象内容的平衡,尤其是它真正突出了面向对象的内容,这是迄今为止软件工程书籍中少见的。面向对象软件工程无疑是当今软件工程的主流。
  本书由韩松组织翻译,其中第1、2、15、16章及词汇表由李萍翻译,第3、4、5、6、7、8、9章及附录由邓迎春翻译,第10、11、12、13、14章由韩松翻译,最后由韩松校对并审核全书。在这里还向参加部分章节翻译及录人工作的谢远达、李志刚、邱宏、马继峰、徐燕、张小明、傅兵、宋子林、赵宁等表示感谢。
  本书翻译中难免有所差错,翻译不当之处欢迎广大读者批评指正。
  译 者
  2003年3月

图书目录

第一部分 软件工程介绍
第1章 软件工程的范畴
1.1 历史方面
1.2 经济方面
1.3 维护性方面
1.4 规格说明和设计阶段
1.5 小组编程方面
1.6 面向对象范型
1.7 术语
本章回顾
进一步阅读指导
思考题
参考文献
第2章 软件过程
2.1 客户、开发人员和用户
2.2 需求阶段
2.2.1 需求阶段测试
2.2.2 需求阶段文档
2.3 规格说明阶段
2.3.1 规格说明阶段测试
2.3.2 规格说明阶段文档
2. 4 设计阶段
2.4.1 设计阶段测试
2.4.2 设计阶段文档
2.5 实现阶段
2.5.1 实现阶段测试
2.5.2 实现阶段文档
2.6 集成阶段
2.6.1 集成阶段测试
2.6.2 集成阶段文档
2.7 维护阶段
2.7.1 维护阶段测试
2.7.2 维护阶段文档
2.8 退役
2.9 软件生产中存在的问题:本质的和偶发的
2.9.1 复杂性
2.9.2 一致性
2.9.3 可变性
2.9.4 不可见性
2.9.5 没有银弹吗
2.10 改进软件过程
2.11 能力成熟度模型
2.12 软件过程改进方面的其他努力
2.13 软件过程改进的成本和效益
本章回顾
进一步阅读指导
思考题
参考文献
第3章 软件生命周期模型
3.1 建造-修补模型
3.2 瀑布模型
3.3 快速原型开发模型
3.4 增量模型
3.5 极限编程
3.6 同步-稳定模型
3.7 螺旋模型
3. 8 面向对象的生命周期模型
3.9 生命周期模型的比较
本章回顾
进一步阅读指导
思考题
参考文献
第4章 软件小组
4.1 小组组织
4.2 民主小组方法
4.3 传统的主程序员小组方法
4.3.1 纽约时报项目
4.3.2 传统的主程序员小组方法
的不实用性
4.4 超越主程序员小组和民主小组
4.5 同步-稳定小组
4.6 极限编程小组
本章回顾
进一步阅读指导
思考题
参考文献
第5章 软件工程工具
5.1 逐步求精法
逐步求精法示例
5.2 成本-效益分析法
5.3 软件度量
5.4 CASE
5.5 CASE的分类
5.6 CASE的范围
5.7 软件版本
5.7.1 修订版
5.7.2 变种版
5.8 配置控制
5.8.1 产品维护期间的配置控制
5.8.2 基线
5.8.3 产品开发过程中的配置控制
5.9 建造工具
5.10 使用CASE技术提高生产率
本章回顾
进一步阅读指导
思考题
参考文献
第6章 测试
6.1 质量问题
6.1.1 软件质量保证
6.1.2 管理独立
6.2 非执行测试
6.2.1 走查
6.2.2 管理走查
6.2.3 审查
6.2.4 审查与走查的对比
6.2.5 评审的长处和短处
6.2.6 评审的度量
6.3 执行测试
6.4 应该测试什么
6.4.1 实用性
6.4.2 可靠性
6.4.3 健壮性
6.4.4 性能
6.4.5 正确性
6.5 测试与正确性证明
6.5.1 正确性证明的例子
6.5.2 正确性证明案例研究
6.5.3 正确性证明和软件工程
6.6 谁来完成执行测试
6.7 何时停止测试
本章回顾
进一步阅读指导
思考题
参考文献
第7章 从模块到对象
7.1 什么是模块
7.2 内聚
7.2.1 偶然性内聚
7.2.2 逻辑性内聚
7.2.3 时间性内聚
7.2.4 过程性内聚
7.2.5 通信性内聚
7.2.6 功能性内聚
7.2.7 信息性内聚
7.2.8 内聚示例
7.3 耦合
7.3.1 内容耦合
7.3.2 共用耦合
7.3.3 控制耦合
7.3.4 印记耦合
7.3.5 数据耦合
7.3.6 耦合示例
7.3.7 耦合的重要性
7.4 数据封装
7.4.1 数据封装和产品开发
7.4.2 数据封装和产品维护
7.5 抽象数据类型
7.6 信息隐藏
7.7 对象
7.8 继承、多态和动态绑定
7.9 对象的内聚和耦合
7.10 面向对象范型
本章回顾
进一步阅读指导
思考题
参考文献
第8章 可复用性、可移植性和互操作性
8.1 复用的概念
8.2 复用的障碍
8.3 复用案例研究
8.3.1 Raytheon导弹系统部
8.3.2 东芝软件工厂
8.3.3 NASA软件
8.3.4 GTE数据服务
8.3.5 惠普公司
8.3.6 欧洲航天局
8.4 对象和复用
8.5 设计和实现阶段的复用
8.5.1 设计复用
8.5.2 应用框架
8.5.3 设计模式
8.5.4 软件体系结构
8.6 复用和维护
8.7 可移植性
8.7.1 硬件的不兼容性
8.7.2 操作系统的不兼容性
8.7.3 数值计算软件的不兼容性
8.7.4 编译器的不兼容性
8.8 为什么需要可移植性
8.9 实现可移植性的技术
8.9.1 可移植的系统软件
8.9.2 可移植的应用软件
8.9.3 可移植的数据
8.10 互操作性
8.10.1 COM
8.10.2 CORBA
8.10.3 COM和ODRBA的比较
8.11 互操作性的未来趋势
本章回顾
进一步阅读指导
思考题
参考文献
第9章 计划和估算
9.1 计划和软件过程
9.2 周期和成本估算
9.2.1 产品规模的度量
9.2.2 成本估算的技术
9.2.3 中间COCOMO
9.2.4 COCOMO II
9.2.5 跟踪周期和成本估算
9.3 软件项目管理计划的组成
9.4 软件项目管理计划框架
9.5 1EEE软件项目管理计划
9.6 测试计划
9.7 计划面向对象的项目
9.8 培训需求
9.9 文档标准
9.10 用于计划和估算的CASE工具
9.11 测试软件项目管理计划
本章回顾
进一步阅读指导
思考题
参考文献
第二部分 软件生命周期的各个阶段
第10章 需求阶段
10.1 需求获取
10.1.1 访谈
10.1.2 情景
10.1.3 其他需求获取技术
10.2 需求分析
10.3 快速原型开发
10.4 人的因素
10.5 作为一种规格说明技术的快速原型开发
10.6 复用快速原型
10.7 快速原型开发模型的管理含意
10.8 快速原型开发的试验
10.9 需求获取和需求分析技术
10.10 在需求分析阶段测试
10.11 需求阶段的CASE工具
10.12 需求阶段的度量
10.13 面向对象的需求
10.14 "空中美食"案例研究:需求阶段
10.15 "空中美食"案例研究:快速原型
10.16 需求阶段面临的挑战
本章回顾
进一步阅读指导
思考题
参考文献
第11章 规格说明阶段
11.1 规格说明文档
11.2 非形式化规格说明案例研究:文本处理
11.3 结构化系统分析Sally的软件商店
11.4 其他半形式化的技术
11.5 建造实体-关系模型
11.6 有限状态机电梯问题:有限状态机
11.7 Petri网
11.8 Z规格说明语言
11.8.1 电梯问题:Z规格说明
11.8.2 Z的分析
11.9 其他形式化技术
11.10 规格说明技术的比较
11.11 在规格说明阶段测试
11.12 规格说明阶段的CASE工具
11.13 规格说明阶段的度量
11.14 "空中美食"案例研究:结构化系统分析
11.15 "空中美食"案例研究:软件项目管理计划
11.16 规格说明阶段面临的挑战
本章回顾
进一步阅读指导
思考题
参考文献
第12章 面向对象分析阶段
12.1 面向对象分析
12.2 电梯问题:面向对象分析
12.3 用例建模
12.4 类建模
12.4.1 名词提取
12.4.2 CRC卡片
12.5 动态建模
12.6 在面向对象分析阶段测试
12.7 面向对象分析阶段的CASE工具
12.8 "空中美食"案例研究:面向对象分析
12.9 面向对象分析阶段面临的挑战
本章回顾
进一步阅读指导
思考题
参考文献
第13章 设计阶段
13.1 设计和抽取
13.2 面向行为设计
13.3 数据流分析
13.3.1 数据流分析示例
13.3.2 扩展
13.4 事务分析
13.5 面向数据设计
13.6 面向对象设计
13.7 电梯问题:面向对象设计
13.8 详细设计的形式化技术
13.9 实时设计技术
13. 10 设计期间的测试
13.11 设计阶段的CASE工具
13.12 设计阶段的度量
13.13 "空中美食"案例研究:
面向对象设计
13.14 设计阶段面临的挑战
本章回顾
进一步阅读指导
思考题
参考文献
第14章 实现阶段
14.1 编程语言的选择
14.2 第四代语言
14.3 良好的编程习惯
14.4 编码标准
14.5 模块复用
14.6 模块测试用例选择
14.6.1 规格说明测试与代码测试
14.6.2 规格说明测试的可行性
14.6.3 代码测试的可行性
14.7 黑盒模块测试技术
14.7.1 等价测试和边界值测试
14.7.2 功能测试
14.8 玻璃盒模块测试技术
14.8.1 结构测试:语句覆盖、分支覆盖以及路径覆盖
14.8.2 复杂性度量
14.9 代码走查和审查
14.10 模块测试技术的比较
14.11 净室
14.12 测试对象时潜在的问题
14.13 模块测试的管理方面
14.14 何时该重写而不是调试一个模块
14.15 实现阶段的CASE工具
14.16 "空中美食"案例研究:黑盒测试用例
14.17 实现阶段面临的挑战
本章回顾
进一步阅读指导
思考题
参考文献
第15章 实现与集成阶段
15.1 实现与集成介绍
15.1.1 自顶向下的实现与集成
15.1.2 自底向上的实现与集成
15.1.3 三明治式实现与集成
15.1.4 面向对象产品的实现与集成
15.1.5 实现与集成阶段的管理问题
15.2 实现与集成期间的测试
15.3 图形用户界面的集成测试
15.4 产品测试
15.5 验收测试
15.6 实现与集成阶段的CASE工具
15.7 软件开发全过程的CASE工具
15.8 集成化开发环境
15.9 商业应用软件开发环境
15.10 公共工具基础结构
15.11 开发环境的潜在问题
15.12 实现与集成阶段的度量
15.13 "空中美食"案例研究:
实现与集成阶段
15.14 实现与集成阶段面临的挑战
本章回顾
进一步阅读指导
思考题
参考文献
第16章 维护阶段
16.1 维护的必要性
16.2 对维护程序员的要求
16.3 维护工作案例研究
16.4 维护管理
16.4.1 错误报告
16.4.2 批准对产品的修改
16.4.3 确保软件的可维护性
16.4.4 反复维护造成的问题
16.5 面向对象软件的维护
16.6 维护技能与开发技能
16.7 逆向工程
16.8 维护阶段的测试
16.9维护阶段的CASE工具
16.10 维护阶段的度量
16.11 "空中美食"案例研究:维护阶段
16.12 维护阶段面临的挑战
本章小结  一-
进一步阅读指导
思考题
参考文献
附  录
附录A Broadlands地区儿童医院
附录B 软件工程资料
附录C "空中美食"案例研究:
C快速原型
附录D "空中美食"案例研究:
Java快速原型
附录E "空中美食"案例研究:
结构化系统分析
附录F "空中美食"案例研究:
软件项目管理计划
附录G "空中美食"案例研究:
面向对象的分析
附录H "空中美食"案例研究:
C++实现的设计
附录I "空中美食"案例研究:
Java实现的设计
附录J "空中美食"案例研究:
黑盒测试用例
附录K "空中美食"案例研究:
C++源代码
附录L "空中美食"案例研究:
Java源代码
参考文献
索引

教学资源推荐
作者: (德)Klaus Pohl 著
作者: 李龙澍 郑诚 主编 杨为民 李学俊 程凡 姚晟 编著
作者: (美)Philippe Kruchten
作者: Georges G. Merx;Ronald J. Norman
参考读物推荐
作者: [英]马丁·福勒(Martin Fowler) 著
作者: (美)Stephen H.Kan