软件工程:面向对象和传统的方法(原书第8版)
作者 : (美)Stephen R.Schach 范德比尔特大学 著
译者 : 邓迎春 韩松 等译
丛书名 : 计算机科学丛书
出版日期 : 2011-12-08
ISBN : 978-7-111-36273-9
定价 : 65.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 396
开本 : 16
原书名 : Object-Oriented and Classical Software Engineering,8E
原出版社: McGraw-Hill
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是软件工程领域的经典著作,被加州大学伯克利分校等180多所美国高校选作教材。本书第8版继续保持了前七版的特色,采用传统方法与面向对象方法并重的方式,全面系统地介绍软件工程的理论与实践,并新增了第10章(第一部分的关键内容)和第18章(新兴技术)两章内容。全书分为两大部分,第一部分介绍软件工程概念,第二部分着重软件工程技术,教师可根据不同教学目的从任一部分开始讲授课程。
  本书是高等院校软件工程课程的理想教材,同时也是专业软件开发人员和管理者的理想参考书。

图书特色

软件工程
面向对象和传统的方法
(原书第8版)
Object-Oriented and Classical Software Engineering
Eighth Edition
(美)Stephen R. Schach 范德比尔特大学 著 邓迎春 韩松 等译
封底:
本书对软件工程的基础知识(包括面向对象和传统方法)进行了严谨和全面的介绍,是软件工程领域的经典著作。
全书共分两大部分:第一部分介绍基本的软件工程理论;第二部分讲述更实用的软件生命周期。作者采用这种独特的、极具可读性的组织方式,帮助学生和广大读者理解软件工程中的一些复杂概念。
最新版第8版对全书进行了整体更新,新增两章内容,分别概括介绍软件工程的关键知识点和近年涌现的新技术。
本版新增内容
第10章总结第一部分涉及的关键知识点,便于学生在做团队项目时参考使用;第18章介绍面向方面的技术、模型驱动技术、基于组件的技术、面向服务的技术、社交计算、Web工程、云技术、Web 3.0和模型检测等新技术。
扩展设计模式的相关材料,新增一个小的案例。
新增两个理论工具,即分治和关注分离。
新增100多道习题,并更新了大量参考文献。
作者简介
Stephen R. Schach 1972年获魏兹曼科学院物理学理科硕士学位,1973年获开普敦大学应用数学博士学位,目前是美国范德比尔特大学计算机科学和计算机工程名誉教授。他的研究兴趣主要集中在软件工程领域,特别是对软件维护与开源软件的实验分析有深入研究。他著有多部软件工程、面向对象系统分析与设计方面的教材。

图书前言

现在几乎每门计算机科学和计算机工程课都包含一个要求团队完成的软件开发项目。有时这个项目只持续一个学期(半年或三个月),但持续一年时间的团队软件开发项目越来越成为标准。
  理想情况下,每个学生在学完一门软件工程课程后才开始进入基于团队的项目(“两阶段课程”)。然而实际上许多学生在学习软件工程课的中途即启动项目,甚至在课程开始时就启动项目(“并行课程”)。
  下面将描述本书的结构,从中可以看出本书适用于上述两种情况。
第8版的结构
  本书包含两大部分:第二部分指导学生如何开发软件产品;第一部分为第二部分提供必要的理论支持。18章按如下结构组织:

第1章软件工程简介
第一部分第2章至第9章软件工程概念
第二部分第10章至第17章软件工程技术
第18章新兴技术

  第10章为新增章节,概要介绍了第一部分的关键内容。如果采用两阶段课程,可先讲授第一部分,然后讲授第二部分(可跳过第10章,因为第10章的内容在第一部分中已经深入讲解过)。对于并行课程,教师会先讲授第二部分(这样学生可以尽早启动项目),然后再讲授第一部分,第10章的内容可帮助学生在没有学习第一部分的情况下理解第二部分。
  后面的方法看起来不合常规:理论应在实践前学习,但事实上许多使用过本书第7版教材的教师在第一部分之前讲授第二部分的内容,他们这样做也收到了很好的效果。他们反映学生们在进行项目工作的过程中能够更好地理解第一部分的理论内容,也就是说,基于团队的项目工作使学生们更容易接受和理解软件工程基础的理论概念。
  具体而言,第8版的内容可按以下两种方式讲授:
1两阶段课程
第1章(软件工程简介)
第一部分第2章至第9章(软件工程概念)
第二部分第10章至第17章(软件工程技术)
第18章(新兴技术)
然后学生在接下来的学期(半年或三个月)里开展基于团队的项目
2并行课程
第1章(软件工程简介)
第10章(第一部分的关键内容)
学生现在开始进行基于团队的项目,与第二部分内容的学习并行
第二部分第11章至第17章(软件工程技术)
第一部分第2章至第9章(软件工程概念)
第18章(新兴技术)
第8版的新特性
  1)对本书全面进行了更新。
  2)增加了两章。如前面所述,一个新增章是第10章——第一部分的关键内容概述,这样学生可与软件工程课程并行地开始基于团队的项目。另一个新增章是第18章,概述了10个新兴技术,包括:
   面向层面技术;
   模型驱动技术;
   基于组件技术;
   面向服务技术;
   社交计算;
   Web工程;
   云技术;
   Web 30;
   计算机安全;
   模型检查。
  3)第8章扩充了设计模式方面的内容,包括新扩充了一个小型实例研究。
  4)第5章增加了两个理论工具:分治和关注分离。
  5)第13章中电梯问题的面向对象分析体现了现代分布式的分散结构。
  6)围绕当前研究的重点,广泛更新了参考文献。
  7)新增了100多道习题。
  8)新增了一些“如果你想知道”内容。
继承第7版的特性
   统一过程仍是面向对象软件开发方法的首选。因此,贯穿全书的仍是统一过程的理论和实践。
   第1章深入分析面向对象范型的优势。
   在第2章,尽可能早地引入迭代-递增生命周期模型。进一步地,与前面的所有版本一样,对其他的生命周期模型进行描述、比较和对比,并特别关注敏捷过程。
   在第3章(“软件过程”)中,介绍工作流(活动)和统一过程的各个阶段,并解释二维生命周期模型的需求。
   第4章(“软件小组”)讨论组织软件小组的多种方式,包括开发敏捷过程的小组和开发开源软件的小组。
   第5章(“软件工程工具”)包含一些CASE工具中重要的类的信息。
   第6章(“测试”)着重讨论连续测试的重要性。
   对象仍旧是第7章(“从模块到对象”)关注的焦点。
   设计模式仍是第8章(“可重用性和可移植性”)的核心。
   软件项目管理计划的IEEE标准在第9章(“计划和估算”)中再次提供。
   第11章(“需求”)、第13章(“面向对象分析”)和第14章(“设计”)大都致力于阐述统一过程的工作流(活动)。基于显然的理由,第12章(“传统的分析”)大体没有进行修改。
   第15章(“实现”)中的内容明确区分实现和集成。
   第16章重点描述交付后维护的重要性。
   第17章为准备在软件业中就业的学生提供了UML方面的额外材料。这一章特别适用于采用本书作为两学期软件工程课程系列教材的指导教师们。在第二个学期,除了开发基于小组的学期项目或顶石(capstone)项目以外,学生还可以获得UML的额外知识。
 与以前一样,有两个运行实例研究,即使用统一过程开发的MSG基金实例研究和电梯问题实例研究。同往常一样,Java和C++实现在wwwmhhecom/schach在线可用。
 除了使用这两个运行实例研究阐述完整的生命周期外,还通过8个小实例研究来突出专门的主题,例如移动目标问题、逐步求精、设计模式和交付后维护。
 在先前的所有版本中,我强调文档、维护、重用、可移植性、测试和CASE工具的重要性。在本版中,所有这些概念都无疑受到同等程度的重视。如果学生不理解这些软件工程基础知识的重要性,教授学生们最新的思想就没有什么用处了。
 如同第7版,对以下几方面给予特殊的重视:面向对象生命周期模型、面向对象分析、面向对象设计、面向对象范型的管理含义、面向对象软件的测试和维护,其中还包括面向对象范型的度量。此外,对对象作了许多更简明的注解,有的是一个段落,有的只是一句话。这样做的原因是,面向对象范型不仅与各种阶段如何执行有关,也影响着我们思考软件工程的方式。对象技术再次贯穿本书始终。
 软件过程仍然是整体贯穿本书的一个概念。为了控制这个过程,我们必须能够测量项目中发生了什么。相应地,继续保留对度量的强调。关于过程改进,保留有关能力成熟度模型(CMM)、ISO/IEC 15504(SPICE)以及ISO/IEC 12207内容。
 本书仍然与计算机语言无关,少量代码实例用C++或Java表示,而且我尽量减少与语言有关的细节,确保代码实例对于C++和Java用户同样清晰。例如,不使用cout表示C++的输出,也没有使用System.out.println表示Java的输出,而使用伪码指令print。(一种例外情况是新的实例研究,其完整的实现细节用C++和Java同时给出。)
 像在第7版中一样,本书包含600多个参考文献。我选择了当前的研究文章以及一些仍保持有关最新信息的经典的文章和书籍。毫无疑问,软件工程是一个快速发展的领域,学生需要知道最新的成果以及在哪些文献里可以找到它们。与此同时,今天的前沿研究是在昨天的事实基础上进行的,没有理由将一篇较早的参考文献排除在外,如果它的思想在今天如最初一样仍在应用着。
 本书假设读者对诸如C、C#、C++或Java的一种高级编程语言很熟悉,另外,读者应学习过数据结构。
为什么仍然包括经典范型
  现在几乎一致认为面向对象范型比经典范型优越。
  相应地,许多选用了本书第7版的教师只选择该书中面向对象方面的内容进行讲授。然而,当问起这些教师们的意见时,教师们指出,他们更倾向于选择包含有经典范型内容的教材。
  原因在于,尽管越来越多的教师只“讲授”面向对象范型,但他们仍旧愿意在课堂上“提到”经典范型;许多面向对象技术难以理解,除非学生们对演化出这些面向对象技术的经典技术有一些认识。例如,如果学生对实体关系建模有所了解,即使是肤浅的了解,也会更容易理解实体类建模。类似地,对有穷状态机的简要介绍会使教师更容易讲授状态图。因此,我在第8版中保留了经典方面的内容,这样教师们在教学中就有可用的经典材料。
习题集
  与第7版一样,本书有5种类型的习题。首先,在第11、13和14章结束时有运行着的面向对象分析和设计项目。之所以包含这些项目,是因为学习如何执行需求、分析和设计工作流的唯一途径来自于广泛的实践。
  第二,每一章结尾包含一些意在突出重点的练习。这些练习是独立的,全部练习的技术信息都可以在本书中找到。
  第三,有一个软件学期设计项目。该设计需要由最少三人组成的小组协作完成,而不是通过常规的电话协商完成。学期设计项目由15个独立的组件组成,每个组件都附在相应的章后。例如,“设计”是第14章的主题,因此在该章中学期设计的组件与软件设计有关。通过将一个大的项目分解为小的、明确定义的几个部分,教师能够更密切地掌控班上的学习进度。学期设计项目是这样一种结构:指导教师能够自由地将这15个组件应用于任何其他项目。
  本书是为研究生和高年级本科生而编写的,第4种类型的习题是根据软件工程文献中的研究报告拟制的。在每一章都选择了一篇重要的文章,尽可能选择一篇与面向对象软件工程有关的文章。要求学生阅读该篇文章并回答与其内容有关的一个问题。当然,教师可以自由安排任何其他研究文献,在每一章后的“进一步阅读指导”中包含各种相关论文。
  第5种类型的习题与实例研究有关。这类习题首先在第3版中引入,是应许多教师的要求加入的。教师们感觉:学生们通过修改一个现成的产品而不是从头开发一个新的产品可以学到更多的东西。业界的许多高级软件工程师同意这个观点。基于此,给出实例研究的每一章有需要学生在某种程度上修改该实例的问题。例如,在某一章中,要求学生使用一项与该实例研究中使用的不同的设计技术重新设计该实例。在另一章中,要求学生回答以不同的顺序执行面向对象分析的步骤会产生什么不同的效果。为了使学生易于修改实例研究的源代码,在万维网上提供这些源代码,网址是:wwwmhhecom/ schach。
  该网站还提供给教师一个完整的电子课件和包括学期项目在内的所有习题的详解。
有关UML的材料
  本书实际使用统一建模语言(UML)。如果学生没有UML的前期知识,可以用两种方式教授这部分。我倾向于在需要时才教授UML,也就是说,每个UML概念只在需要它之前讲解。下表描述了本书使用的UML结构所在的章节。
结构 介绍对应的UML图的章节
类图、注解、继承(泛化)、聚合、关联、导航三角形 77节
用例 1143节
用例图、用例描述 117节
构造型 131节
状态图 136节
交互图(顺序图、通信图) 1315节
  另一方面,第17章介绍UML,包括本书当前及以后所需的材料。第17章可以在任何时间讲授,它不需要依赖前16章。第17章涵盖的主题如下表所示。
结构 介绍对应的UML图的章节
类图、聚合、多重性、组合、泛化、关联 172节
注解 173节
用例图 174节
构造型 175节
交互图 176节
状态图 177节
活动图 178节
包 179节
组件图 1710节
部署图 1711节
在线资源
  本教材的支持网站:wwwmhhecom/schach上有供学生使用的MSG实例研究的Java和C++实现和源代码,以及供教师使用的课件、所有练习和学期项目的详解及图库。有关具体的细节请联络销售代表麦格劳-希尔教育出版公司服务热线:8008101936。Email:instructorchina@mcgrawhillcom。——编辑注 。
致谢
  我非常感谢前面7版书的审阅者,他们给予了建设性意见和许多有帮助的建议。特别感谢本版书的审阅者,他们是:

  关于出版商McGrawHill,我特别感谢样本编辑Kevin Campbell和设计师Brenda Rolwes,我还特别感谢Montage工作室的Melissa Welch,她将悉尼港大桥夜景图片转化为极美的封面。
  还要感谢Jean Naudé(Vaal University of Technology, Secunda Campus)与我合作完成教师用的题解手册,特别是Jean提供了学期项目的详细解答,包括它的Java和C++实现。在编写题解手册的过程中,Jean提出了大量建设性建议来完善本书,对此我深表谢意。
  最后,我感谢我的妻子Sharon一如既往地支持和鼓励我。与我以前所有书的情况一样,我尽力使尽家庭义务优先于写作,然而当最后期限临近时,这总是不可能的。在这种时候,Sharon总是理解我,为此我特别感激她。
  我愿把我的这第15本专著献给我的爱孙Jackson和Mikaela。
Stephen R Schach

上架指导

计算机\软件工程

封底文字

同影印书。书号:ISBN 978-7-111-34196-3

译者简介

邓迎春 韩松 等译:暂无简介

译者序

作为译者,我有过一种疑问:为什么国外有些图书经常多次再版?除了由于该书本身经典并广受欢迎之外,是否体现了国外出版行业的成熟的商业运作呢?但在本书第8版的翻译过程中,我又有了新的体会,那就是:它是知识与技术不断更新发展的需要以及作者时刻保持创新思维活力的体现。
  虽然面向对象越来越显示出重要地位,但作者根据教学经验,仍然保持了第7版传统方法和面向对象方法并重的特点,这为学生理解和教师讲授面向对象内容打下了很好的基础。本书作者考虑到目前教学过程中基于团队完成的软件开发项目,从一学期或三个月越来越倾向于持续一年时间,因而必须对软件工程教材结构做出相应的调整。作者从软件工程概念讲解和技术描述两个方面进行了调整,以适应教师安排不同时长的开发项目实践的需要。为此,第8版在第7版的基础上进行了全面的更新。这一方面体现在对多个章节进行了大量的改写,更新了100多道习题,对软件工程实践项目进行了全新替换;另一方面,增加了第10章来概述软件工程概念的关键内容,从而便于学生与软件工程课程并行地开始基于团队的项目。此外,针对与软件工程有关的计算机科学与技术的最新进展,新增了第18章,概述了10项新兴技术(具体内容见“前言”)。
  作为一本软件工程的经典教材,通过结构变化和内容更新以及最新技术的介绍,呈现在读者面前的该书第8版堪称完美。通过深入浅出的讲述,以及理论与实践内容的合理安排,本书既成为大学高年级本科生和研究生的经典教材,又非常适合软件开发的管理者和工程师阅读。
  本书主要由邓迎春、韩松翻译,参加本书翻译工作的还有王国文、杜长任、兰峰、刘文权、杨旭、李萍、赵玉亮、张志乾、程红、孙文中等。
  由于译者水平和时间限制,译文难免有不足之处,希望广大读者不吝指正。
韩松
2011年10月于北京

图书目录

出版者的话
译者序
前言
第1章软件工程的范畴
11历史方面
12经济方面
13维护性方面
131维护的传统和现代观点
132交付后维护的重要性
14需求、分析和设计方面
15小组编程方面
16为什么没有计划阶段
17为什么没有测试阶段
18为什么没有文档阶段
19面向对象范型
110正确看待面向对象范型
111术语
112道德问题
本章回顾
进一步阅读指导
习题
第一部分软件工程概念
第2章软件生命周期模型
21理论上的软件开发
22Winburg小型实例研究
23Winburg小型实例研究心得
24野鸭拖拉机公司小型实例研究
25迭代和递增
26修订的Winburg小型实例研究
27迭代和递增的风险和其他方面
28迭代和递增的控制
29其他生命周期模型
291编码-修补生命周期模型
292瀑布生命周期模型
293快速原型开发生命周期模型
294开源生命周期模型
295敏捷过程
296同步-稳定生命周期模型
297螺旋生命周期模型
210生命周期模型的比较
本章回顾
进一步阅读指导
习题
第3章软件过程
31统一过程
32面向对象范型内的迭代和递增
33需求流
34分析流
35设计流
36实现流
37测试流
371需求制品
372分析制品
373设计制品
374实现制品
38交付后维护
39退役
310统一过程的各阶段
3101开始阶段
3102细化阶段
3103构建阶段
3104转换阶段
311一维与二维生命周期模型
312改进软件过程
313能力成熟度模型
314软件过程改进方面的其他努力
315软件过程改进的代价和收益
本章回顾
进一步阅读指导
习题
第4章软件小组
41小组组织
42民主小组方法
43传统的主程序员小组方法
431《纽约时报》项目
432传统的主程序员小组方法的不实用性
44主程序员小组和民主小组之外的编程小组
45同步-稳定小组
46敏捷过程小组
47开源编程小组
48人员能力成熟度模型
49选择合适的小组组织
本章回顾
进一步阅读指导
习题
第5章软件工程工具
51逐步求精法
52成本-效益分析法
53分治
54关注分离
55软件度量
56CASE
57CASE的分类
58CASE的范围
59软件版本
591修订版
592变种版
510配置控制
5101交付后维护期间的配置控制
5102基准
5103产品开发过程中的配置控制
511建造工具
512使用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面向对象范型
本章回顾
进一步阅读指导
习题
第8章可重用性和可移植性
81重用的概念
82重用的障碍
83重用实例研究
831Raytheon导弹系统部
832欧洲航天局
84对象和重用
85设计和实现期间的重用
851设计重用
852应用框架
853设计模式
854软件体系结构
855基于组件的软件工程
86其他设计模式
861FLIC小型实例研究
862适配器设计模式
863桥设计模式
864迭代器设计模式
865抽象工厂设计模式
87设计模式的种类
88设计模式的优缺点
89重用及互联网
810重用和交付后维护
811可移植性
8111硬件的不兼容性
8112操作系统的不兼容性
8113数值计算软件的不兼容性
8114编译器的不兼容性
812为什么需要可移植性
813实现可移植性的技术
8131可移植的系统软件
8132可移植的应用软件
8133可移植的数据
8134模型驱动结构
本章回顾
进一步阅读指导
习题
第9章计划和估算
91计划和软件过程
92周期和成本估算
921产品规模的度量
922成本估算技术
923中间COCOMO
924COCOMO II
925跟踪周期和成本估算
93软件项目管理计划的组成
94软件项目管理计划框架
95IEEE 软件项目管理计划
96计划测试
97计划面向对象的项目
98培训需求
99文档标准
910用于计划和估算的CASE工具
911测试软件项目管理计划
本章回顾
进一步阅读指导
习题
第二部分软件生命周期的工作流
第10章第一部分的关键内容
101软件开发:理论与实践
102迭代和递增
103统一过程
104工作流概述
105软件小组
106成本-效益分析法
107度量
108CASE
109版本和配置
1010测试术语
1011执行测试和非执行测试
1012模块性
1013重用
1014软件项目管理计划
本章回顾
习题
第11章需求
111确定客户需要什么
112需求流概述
113理解应用域
114业务模型
1141访谈
1142其他技术
1143用例
115初始需求
116对应用域的初始理解:MSG基金实例研究
117初始业务模型:MSG基金实例研究
118初始需求:MSG基金实例研究
119继续需求流:MSG基金实例研究
1110修订需求:MSG基金实例研究
1111测试流:MSG基金实例研究
1112传统的需求阶段
1113快速原型开发
1114人的因素
1115重用快速原型
1116需求流的CASE工具
1117需求流的度量
1118需求流面临的挑战
本章回顾
进一步阅读指导
习题
第12章传统的分析
121规格说明文档
122非形式化规格说明
123结构化系统分析
124结构化系统分析:MSG基金实例研究
125其他半形式化技术
126建造实体-关系模型
127有穷状态机
128Petri网
129Z
1291Z:电梯问题实例研究
1292Z的分析
1210其他的形式化技术
1211传统分析技术的比较
1212在传统分析阶段测试
1213传统分析阶段的CASE工具
1214传统分析阶段的度量
1215软件项目管理计划:MSG基金实例研究
1216传统分析阶段面临的挑战
本章回顾
进一步阅读指导
习题
第13章面向对象分析
131分析流
132抽取实体类
133面向对象分析:电梯问题实例研究
134功能建模:电梯问题实例研究
135实体类建模:电梯问题实例研究
1351名词抽取
1352CRC卡片
136动态建模:电梯问题实例研究
137测试流:面向对象分析
138抽取边界类和控制类
139初始功能模型:MSG基金实例研究
1310初始类图:MSG基金实例研究
1311初始动态模型:MSG基金实例研究
1312修订实体类:MSG基金实例研究
1313抽取边界类:MSG基金实例研究
1314抽取控制类:MSG基金实例研究
1315用例实现:MSG基金实例研究
13151Estimate Funds Available for Week用例
13152Manage an Asset用例
13153Update Estimated Annual Operating Expenses用例
13154Produce a Report用例
1316类图递增:MSG基金实例研究
1317测试流:MSG基金实例研究
1318统一过程中的规格说明文档
1319关于参与者和用例更详细的内容
1320面向对象分析流的CASE工具
1321面向对象分析流的度量
1322面向对象分析流面临的挑战
本章回顾
进一步阅读指导
习题
第14章设计
141设计和抽象
142面向操作设计
143数据流分析
1431小型实例研究:字数统计
1432数据流分析扩展
144事务分析
145面向数据设计
146面向对象设计
147面向对象设计:电梯问题实例研究
148面向对象设计:MSG基金实例研究
149设计流
1410测试流:设计
1411测试流:MSG基金实例研究
1412详细设计的形式化技术
1413实时设计技术
1414设计的CASE工具
1415设计的度量
1416设计流面临的挑战
本章回顾
进一步阅读指导
习题
第15章实现
151编程语言的选择
152第四代语言
153良好的编程实践
1531使用一致和有意义的变量名
1532自文档代码的问题
1533使用参数
1534为增加可读性的代码编排
1535嵌套的if语句
154编码标准
155代码重用
156集成
1561自顶向下的集成
1562自底向上的集成
1563三明治集成
1564面向对象产品的集成
1565集成的管理
157实现流
158实现流:MSG基金实例研究
159测试流:实现
1510测试用例选择
15101规格说明测试与代码测试
15102规格说明测试的可行性
15103代码测试的可行性
1511黑盒单元测试技术
15111等价测试和边界值分析
15112功能测试
1512黑盒测试用例:MSG基金实例研究
1513玻璃盒单元测试技术
15131结构测试:语句、分支和路径覆盖
15132复杂性度量
1514代码走查和审查
1515单元测试技术的比较
1516净室
1517测试对象时潜在的问题
1518单元测试的管理方面
1519何时该重实现而不是调试代码制品
1520集成测试
1521产品测试
1522验收测试
1523测试流:MSG基金实例研究
1524实现的CASE工具
15241软件开发全过程的CASE工具
15242集成化开发环境
15243商业应用环境
15244公共工具基础结构
15245环境的潜在问题
1525测试流的CASE工具
1526实现流的度量
1527实现流面临的挑战
本章回顾
进一步阅读指导
习题
第16章交付后维护
161开发与维护
162为什么交付后维护是必要的
163对交付后维护程序员的要求是什么
164交付后维护小型实例研究
165交付后维护的管理
1651缺陷报告
1652批准对产品的修改
1653确保可维护性
1654迭代维护造成的问题
166面向对象软件的维护
167交付后维护技能与开发技能
168逆向工程
169交付后维护期间的测试
1610交付后维护的CASE工具
1611交付后维护的度量
1612交付后维护:MSG基金实例研究
1613交付后维护面临的挑战
本章回顾
进一步阅读指导
习题
第17章UML的进一步讨论
171UML不是一种方法
172类图
1721聚合
1722多重性
1723组合
1724泛化
1725关联
173注解
174用例图
175构造型
176交互图
177状态图
178活动图
179包
1710组件图
1711部署图
1712UML图回顾
1713UML和迭代
本章回顾
进一步阅读指导
习题
第18章新兴技术
181面向层面技术
182模型驱动技术
183基于组件技术
184面向服务技术
185面向服务技术和基于组件技术的比较
186社交计算
187Web工程
188云技术
189Web 30
1810计算机安全
1811模型检查
1812目前和未来
本章回顾
进一步阅读指导
附录
附录A学期项目:巧克力爱好者匿名
附录B软件工程资源
附录C需求流:MSG基金实例研究
附录D结构化系统分析:MSG基金实例研究
附录E分析流:MSG基金实例研究
附录F软件项目管理计划:MSG基金实例研究
附录G设计流:MSG基金实例研究
附录H实现流:MSG基金实例研究(C++版)
附录I实现流:MSG基金实例研究(Java版)
附录J测试流:MSG基金实例研究

教学资源推荐
作者: [美]约翰 W. 萨茨辛格(John W. Satzinger) 罗伯特 B. 杰克逊(Robert B. Jackson) 史蒂芬 D. 伯德(Stephen D. Burd)著
作者: 李龙 李向函 冯海宁 李向平 等编著
作者: (美)Ivar Jacobson, Pan-Wei Ng, Paul E. McMahon, Ian Spence, Svante Lidman 著
参考读物推荐
作者: 黄勇 雷辉 徐潇 杨雪敏 著
作者: Ashok Iyengar, Vinod Jessani, Michele Chilanti
作者: (美)John McGarry,David Card,Cheryl Jones等