面向对象与传统软件工程:统一过程的理论和实践(原书第6版)
作者 : Stephen R.Schach
译者 : 韩松 邓迎春
丛书名 : 计算机科学丛书
出版日期 : 2006-02-22
ISBN : 7-111-17963-3
定价 : 55.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 424
开本 : 16开
原书名 : Object-Oriented & Classical Software Engineering
原出版社: McGraw-Hill
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是软件工程领域的经典著作,被国外多所大学选用为教材,至今已是第6版。从Java到面向对象,再到统一过程的软件开发方法,面对软件工程发展中的重大方法上的改变,本书作者都以严谨的态度对其软件工程专著进行修订,使软件工程在理论上与新的方法和实践更加紧密结合。
  全书共分两部分:第一部分介绍了软件工程的理论基础;第二部分讲述了软件生命周期的各个阶段。采用这种独特的、极具可读性的组织方式,学生可以更加系统地学习软件工程。

本书特点
  ●包含两个大型的运行实例,使学生能更好地学习和实践书中的内容。
  ●全面包含统一过程的内容,并用专门的一章来介绍UML,帮助学生提前应对软件业的职场考验。
  ●增加新的分析和设计项目,鼓励学生通过动手来掌握知识。
  ●囊括600多条参考材料,其中包括许多新材料,便于读者进一步阅读。
  ●配套站点www.mhhe.com/schach包含习题解答、教学幻灯片、大型实例的完整实现等。

图书特色

图书前言

自从3年前本书第5版出版以来,统一过程(Unified Process)已经得到广泛认可,被选为面向对象软件开发的方法。统一过程基于Booch的方法、对象体(Objectory)以及OMT,这三个较早的面向对象方法的提出者们现在已不再支持它们。因此,第6版新增的主要特性是采纳了统一过程。特别地,书中使用统一过程开发了两个运行实例研究,因此学生们既是统一过程的理论学习者,也是该理论的实践者。


第6版的其他关键特色
  第1章经过了全面的修订。特别是增强了面向对象范型(paradigm)的内容,并进行了深入的分析。此外,书中引入了新的可维护性的定义,它们被ISO、IEC、IEEE和EIA所采纳。
  第2章和第3章的顺序互换了,这样可以尽早介绍进化树生命周期模型和迭代-递增生命周期模型。但是,我仍然像本书的前几版一样,给出了大量其他的生命周期模型,并对它们进行了比较和对照。
  在第3章“软件过程”中,介绍了工作流(活动)和统一过程的各个阶段,还解释了对二维生命周期模型的需求。
  第4章~第9章都进行了更新。例如,第8章中介绍了基于组件(component)的软件工程,第9章中给出了软件项目管理计划的新的IEEE标准。符合该新标准的一个计划的例子见附录F。
  有关互操作的内容已从第8章中删掉了。在第4版和第5版中,这部分内容在该书出版后不久都不可避免地过时了。在我看来,这个领域进展太快了,无法包含在一本教材中;想要了解这方面内容的教师应当从因特网上获取最新的材料。
  第10章“需求”、第12章“面向对象分析”和第13章“设计”经过较大的修改,在其中加入了统一过程的工作流(活动)。出于众所周知的原因,第11章“传统的分析”未做改变。
  有关实现和集成(integration)(第5版的第14章和第15章)的内容已经融入了新的第14章,但是,在实现和集成之间仍然有一个明显的区分。
  第15章现在是关于交付后维护的。
  第16章是全新的一章。第4版是第一本利用统一建模语言(Unified Modeling Language,UML)的软件工程教科书,UML是在该版书出版前不久推出的。在时隔3年之后,UML已经成为正式的标准并广为使用,因此在第5版中,我继续利用UML描述面向对象分析和面向对象设计,并用示意图描绘对象和它们之间的关系。在第4版和第5版中,我加入了大量有关UML的内容,以使学生们能够做完全部的练习,并进行基于小组的学期设计项目。然而,UML现在通常是软件工程的一个组成部分(特别是统一过程的一个组成部分),因此,我加入了最后一章,“UML的进一步讨论”。第16章的目的是提供有关UML的更多材料,为学生们就职于软件行业做进一步的准备。这一章对于使用本书作为连续两学期软件工程课程的教
师特别有用。在第二学期,除了开发基于小组的学期设计项目或一个毕业课题项目之外,学生能够获得额外的有关UML的知识,它们已超出本书的范围。
  除了两个运行实例研究之外——它们用于说明完整的生命周期,本书还使用7个小型实例研究强调特定主题,如移动目标问题、渐进精化以及交付后维护。
  有关极限编程(extreme programming,XP)的内容做了扩充。此外,现在在敏捷编程的范围内描述XP。XP仍然是充满争议的,但我感到学生们需要理解这个话题,这样,他们可以自己判断是否XP只是目前的一个时尚,还是软件工程中一个真正的巨大突破。


从第5版中保留的特色
  这一版保留了第5版中的全部主要特色。
 在先前的所有版本中,我强调文档、维护、重用、可移植性、测试和CASE工具的重要性。在这一版中,所有这些概念都依然被着重强调。如果学生不理解软件工程这些基础的重要性,教授他们最新的思想就没有用处。
 如同第5版一样,本书对以下几方面给予了特殊的重视:面向对象生命周期模型
、面向对象分析、面向对象设计、面向对象范型管理的含义、面向对象软件的测试和维护。其中还包括了面向对象范型的度量。此外,对对象做了许多简明的注解,有的长达一个段落,有的甚至只是一句话。这样做是因为面向对象范型不仅与各种阶段是如何执行的有关,也与它是如何渗透到我们思考软件工程的方式之中有关。对象技术再次贯穿本书始终。
 软件过程仍然是贯穿本书的一个整体概念。为了控制这个过程,我们必须能够测
量项目中发生了什么。相应地,保留了对度量的强调。考虑到软件过程的进展情况,保留了有关能力成熟度模型(CMM)、ISO/IEC 15504(SPICE)以及ISO/IEC 12207的内容,在有关软件小组的章节中加入了人员能力成熟度模型(PCMM)。
 本书仍然是与计算机语言无关的,少量代码实例是用C++或Java表示的,而且我尽量减少与语言有关的一些细节,确保代码实例对于C++和Java用户同样清晰。例如,我没有使用cout表示C++的输出,也没有使用SystemoutprintIn表示Java的输出,我使用了伪码指令print。(一个例外是新的实例研究,在这里完整的实现细节是同时用C++和Java给出的。)
 同以前一样,本书有两个运行实例研究。一个是来自第4版的Osbert Oglesby实例研究,一个是电梯问题实例研究(来自前一版),已经用统一过程对它们进行了重新开发。同样,Java和C++实现都可在线从wwwmhhe com/engcs/compsci/schach处得到。
 像在第5版中一样,本书包含600多个参考文献。我选择了目前的研究文章,也
选择了一些仍保持新意和用途的经典的文章和书籍。毫无疑问,软件工程是一个快速发展的领域,学生们因此需要知道最新的成果以及在哪些文献里可以找到它们。与此同时,今天的前沿研究是在昨天的事实基础上进行的,我们没有理由将一个较早的参考文献排除在外,如果它的思想在今天如它最初一样仍是在应用着的话。
 作为一个先决条件,我们假设读者熟悉一种高级编程语言,如C、C++、Ada或Java。 此外,读者最好应上过“数据结构”这门课。

为什么仍然包括了传统范型
  当我开始编写第6版时,我决定摒弃谈论传统(结构化的)范型。毕竟,现在大家几乎一致认为面向对象范型比传统范型优越。但是,不久我就发现,试图完全不提及传统范型肯定是不明智的。
  首先,若没有完全理解传统范型而且不知道它与面向对象方法的区别,就不可能明白为什么面向对象技术比传统技术优越。例如,面向对象范型使用迭代-递增的生命周期模型,要解释为什么需要这样一个生命周期模型,最根本的是要详细解释在经典的如瀑布模型这样的生命周期模型和面向对象的迭代-递增生命周期模型之间的区别。因此,本书中也包含了有关传统范型的材料,以使学生能够清楚把握传统范型和面向对象范型之间的不同。
  我在书中包含两种范型的第二个原因是:技术的转变是一个缓慢的过程。要不是经受不住千年虫(Y2K)问题的影响从而加速了向面向对象范型的转变,大多数软件组织至今还不会采纳面向对象范型。因此,使用本书的许多学生有可能会受雇于那些仍然使用传统软件工程技术的组织。进一步说,即使一些技术组织使用面向对象方法开发新的软件,但现有软件仍需要维护,而这个延续下来的软件不是面向对象的。因此,排除传统内容对于许多使用这本教材的学生并不合适。
  包括两种范型的第三个原因是:受雇于一个正考虑向面向对象技术转变的组织的学生,将能够对该组织认识新范型的长处和短处提出自己的忠告。因此,如同前一版中一样,对传统和面向对象方法进行了比较、对照和分析。


第6版是如何安排的
  就像本书第5版一样,第6版是为传统的一学期和新的两学期软件工程课程而编写的。在传统的一学期(或1/4学年)课程中,教师不得不把理论部分内容匆忙一带而过,以便尽早提供给学生们进行学期设计所必需的知识和技能。为使学生们能够及早开始学期设计,从而得以在学期结束前完成设计,这样的匆忙安排是必要的。为了满足一个学期的基于设计的软件工程课程的要求,本书的第二部分涵盖了按工作流进行的软件生命周期,第一部分包含了理解第二部分所需的理论知识。例如,第一部分介绍了CASE、度量和测试;第二部分的每一章都有一节讲述了该工作流的CASE工具,有一节讲述了该工作流的度量,有一节讲述了在该工作流期间的测试。第一部分编写得简短一些,以便教师能够在一学期里较早开始第二部分内容的讲授。而且,第一部分的最后两章(第8章和第9章)可以留待与第二部分同时讲。这样,本课程可以在尽早的时候开始进行学期设计。
  我们再来看看两学期软件工程课程。越来越多的计算机科学和计算机工程系认识到它们的毕业生绝大多数将找软件工程师的工作,因而,许多学院和大学采用了一个连续两学期(或两个1/4学年)的软件工程课程安排。第一学期课程理论内容占多数(但也有少部分的某种设计实践内容)。第二学期课程主要是以小组为基础的学期设计,通常它是一个前沿课题。当学期设计安排在第二学期课程内时,指导教师就没有必要匆忙开始第二部分内容了。
  因此,使用本教材教一学期(或1/4学年)课程的教师需要讲解第1~7章的大部分,然后开始第二部分(第10~16章)。第8章和第9章可以与第二部分并行讲授,或者在课程结束前当学生们正在进行学期设计时讲授。当教师进行连续两个学期的课程讲授时,应当顺序讲授本书的各章,通过第一学期的学习,同学们就可以完全准备好进行第二学期的基于小组的学期设计了。
  为了确保同学们能够真正理解第二部分一些关键的软件工程技术,每项技术都出现两次。首先,当介绍一项技术的时候,先通过电梯问题来讲解它。电梯问题的难易比较适中,它能够使读者明白应用于计算问题的那项技术,它有许多精妙之处来强调正被讲授的那项技术的优缺点。然后,给出与该项技术有关的Osbert Oglesby实例研究的相关部分。这个详细解决方案从另一个角度阐述了每一项技术。

习题集
  前几版有四种类型的习题。本版有五种类型的习题。第一,新类型的习题是在第10、12和13章末给出的面向对象分析和设计项目。包含这些项目是因为,若要学习如何执行需求、分析和设计工作流,惟一的途径是进行大量的实习。
  第二,每一章结尾包含一些意在突出重点的练习。这些练习是独立的,全部练习的技术信息都可以在本书中找到。
  第三,有一个软件学期设计项目。它设计成由三个人组成的小组协作完成,而不是通过常规的电话协商完成,三个人是最少的小组成员数。学期设计项目由16个独立的组件组成,每个组件都附在相应的一章之后。例如,设计是第13章的主题,因此在该章中此学期设计的组件与软件设计有关。通过将一个大的项目分解为小的、明确定义的几个部分,教师能够更密切地掌控学生的学习进度。学期设计项目的结构很灵活,指导教师能够自由地将这16个组件应用于任何其他的项目。
  由于本书是为研究生和大学高年级学生编写的,第四种类型的习题是根据软件工程文献中的研究报告拟制的。在每一章中,都选择了一篇重要的文章,尽可能选择一篇与面向对象软件工程有关的文章。要求学生阅读该文章并回答与它的内容有关的一个问题。当然,教师可以自由安排任何其他研究文献,在每一章后的“进一步阅读”部分中包含了各种相关论文。
  第五种类型的习题与Osbert Oglesby实例研究有关。这类习题首先在第3版中引入,它是为响应许多教师的要求而加入的,教师们感觉到:学生通过修改一个现成的产品而不是凑合着开发一个新产品可以学到更多的东西。业界的许多高级软件工程师同意这个观点。基于此,给出实例研究的每一章至少有3个问题需要学生在某种程度上修改该实例。例如,在某一章中,要求学生使用一项与该实例研究中不同的设计技术重新设计该实例。在另一章中,要求回答以不同的顺序执行面向对象分析的步骤会产生什么不同的效果。为了方便修改实例研究的源代码,我们在万维网上提供了这些源代码,网址见:wwwmhhecom/engcs/compsci/schach。该网址上还有一个完整的PowerPoint课件。
  “教师答案手册”(Instructor's Solution Manual)中包含了所有习题以及学期项目的详细答案。“教师答案手册”可从McGrawHill出版公司得到。


致谢

非常感谢前5版书的审阅者所给予的建设性批评和良好建议,他们是:

〖TP1A1,+35.6mm。111.9mm(,3),BP#〗

〖TP1A2,+165.1mm。126.2mm(,3),BP#〗


此外,还要特别感谢这一版书的审阅者,他们是:

〖TP1A3,+17.5mm。105.1mm(,3),BP#〗

〖TP1A4,+35.6mm。105mm(,3),BP#〗


  上述审阅者,无一例外地都对本书做出了很大的贡献。尽管如此,我还是要特别感谢DePaul大学的Owen Lavin先生,他提出的许多建议对于改进本书帮助极大。
  我要衷心感谢三位先生,他们也对本书的较早版本做出了贡献。第一,Jeff Grey实现了Osbert Oglesby实例研究。第二,Kris Irwin提供了一个完整的学期设计的解决方案,包括用C++和Java将其实现。第三,我的女儿Lauren又一次成为我的“教师答案手册”的合作者,并且她完成了PowerPoint幻灯片的制作。
  现在该轮到出版商McGrawHill了。如往常一样,我最深切地感谢我的出版人Betsy Jones和策划编辑Emily Lupash,他们自始至终对我提供了帮助和指导。我要感谢排版编辑Gnomi Schrift Gouldin,他又一次向我提出了许多得以实施的建议。与市场经理Dawn Bercier、兼职的高级设计Michelle Whitaker以及媒体项目经理Audrey Reiter一同工作是一件令人高兴的事。最后,我非常希望感谢高级项目经理Jane Mohr,她提供了数不尽的帮助和支持。她解决起问题来总是得心应手。
  一如既往地,我乐于与Interactive Composition公司的排版人员们一同工作。Amy Rose是一位非常有能力的项目经理。
  我还想感谢来自世界各地的许多教师们,他们就第5版的内容给我发来电子邮件。我十分感谢他们的建议、意见和批评。我也期望着收到教师们有关这一版的意见反馈。我的email 地址是srs@vusevanderbiltedu。
  学生也是非常有帮助的。我感谢我在Vanderbilt大学的学生们,他们在课堂内外提出了无数的问题和意见。特别地,我想对最近在Vanderbilt大学上我的“统一过程”研究生课程的下列学生表示感谢:Paul Bielaczyc, Zhihong Ding, Shaivya Easwaren, Kenon Ewing, Sarita Gupta, Julia Irani, Andrews Jebasingh, Pavil Jose, Anantha Nar ayanan, Joshua Phillips, Adam Loeb Small, Larry Thomas, Haripriya Venkatesan, Bin Zhou。我真的对他们的真知和创见表示谢意。
  我也对来自世界各地的学生们的有启发性的问题和建设性的建议表示感谢,与前几版一样,我时刻期待着他们关于这一版的反馈。
  最后,同往常一样,我感谢我的家人给予我的持续不断的支持。当我早先开始写书时,我不得不在我年幼的孩子和我当下的著书项目之间分配有限的自由时间。现在我的孩子已经长大成人了,他们同我一起在为我的著作忙碌着,写作已经成为我们家庭的活动。请再次允许我把这本书献给我亲爱的妻子Sharon和我亲爱的孩子,David和Lauren。

Stephen RSchach

封底文字

译者简介

韩松 邓迎春:暂无简介

译者序

Stephen R.Schach先生所著的软件工程书籍是这一领域的经典著作,本书已是第6版。从Java到面向对象,再到统一过程的软件开发方法,每次面对软件工程发展中的重大方法上的改变,作者都以严谨的态度对其软件工程专著进行新的修改和补充,使软件工程在理论上与新的方法和实践更加紧密结合。
  为了适应面向对象方法的深化与统一软件开发过程的广泛采用,本书第6版对第5版做了较为全面的修改,重新编写和调整的内容占一半以上。可以说,本书是软件工程专著中最能反映该学科领域最新变化的一本。
  本书有两个主要特点:
  其一,本书将当前流行的面向对象内容与传统软件工程很好地融合在一起,尤其突出了面向对象和UML方面的内容。这在同类书藉中实为少见,由此也显得弥足珍贵。
  其二,本书包含了两个贯穿全文的极具代表性的运行实例,作者借助实例细致而巧妙地演示了各种相关概念,使得整个学习过程水到渠成。
  本书主要由韩松和邓迎春翻译,其中第1~8章由韩松翻译,余下部分由邓迎春翻译。最后由韩松校对并审核全书。其他参加翻译和录入工作的同志还有赵玉亮、徐燕、张小明、傅兵、王勇、徐志东、刘云杭等,在此对他们的工作表示感谢。此外,感谢出版社编辑的大量具体指导和耐心细致的帮助,他们对保证本书的翻译质量以及尽快出版做出了很大贡献。同时也感谢我们的家人对我们的支持。
  本书翻译中难免有差错,有不当之处欢迎广大读者批评指正。

韩 松
2005年11月

推荐序

图书目录

第一部分 软件工程概述
第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2 Winburg小型实例研究
 23 Winburg小型实例研究心得
 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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 选择合适的小组组织
 本章回顾
 进一步阅读
 习题
 参考文献
第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 面向对象范型
 本章回顾
 进一步阅读
 习题
 参考文献
第8章 可重用性和可移植性
 81 重用的概念
 82 重用的障碍
 83 重用实例研究
  831 Raytheon导弹系统部
  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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 可移植的数据
 本章回顾
 进一步阅读
 习题
 参考文献
第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 IEEE 软件项目管理计划
 96 计划测试
 97 计划面向对象的项目
 98 培训需求
 99 文档标准
 910 用于计划和估算的CASE工具
 911 测试软件项目管理计划
 本章回顾
 进一步阅读
 习题
 参考文献

第二部分 软件生命周期的各个阶段
第10章 需求
 101 确定客户需要什么
 102 需求阶段概述
 103 理解应用域
 104 商业模型
  1041 访谈
  1042 其他技术
  1043 用例
 105 初始需求
 106 对应用领域的初始理解: Osbert Oglesby实例研究
 107 初始商业模型: Osbert Oglesby实例研究
 108 初始需求: Osbert Oglesby实例研究
 109 继续需求阶段: Osbert Oglesby实例研究
 1010 测试阶段: Osbert Oglesby实例研究
 1011 传统的需求阶段
 1012 快速原型开发
 1013 人的因素
 1014 重用快速原型
 1015 需求流的CASE工具
 1016 需求阶段的度量
 1017 需求阶段面临的挑战
 本章回顾
 进一步阅读
 习题
 参考文献
第11章 传统的分析
 111 规格说明文档
 112 非形式化规格说明
 113 结构化系统分析
 114 结构化系统分析: Osbert Oglesby实例研究
 115 其他半形式化技术
 116 建造实体-关系模型
 117 有穷状态机
 118 Petri网
 119 Z
  1191 Z: 电梯问题实例研究
  1192 Z的分析
 1110 其他的形式化技术
 1111 传统分析技术的比较
 1112 在传统分析阶段测试
 1113 传统分析阶段的CASE工具
 1114 传统分析阶段的度量
 1115 软件项目管理计划: Osbert Oglesby实例研究
 1116 传统分析阶段面临的挑战
 本章回顾
 进一步阅读
 习题
 参考文献
第12章 面向对象分析
 121 分析流
 122 抽象实体类
 123 面向对象分析: 电梯问题实例研究
 124 功能建模: 电梯问题实例研究
 125 实体类建模: 电梯问题实例研究
  1251 名词抽象
  1252 CRC卡片
 126 动态建模: 电梯问题实例研究
 127 测试流: 面向对象分析
 128 抽象边界类和控制类
 129 初始功能模型: Osbert Oglesby实例研究
 1210 初始类图: Osbert Oglesby实例研究
 1211 初始动态模型: Osbert Oglesby实例研究
 1212 抽象边界类: Osbert Oglesby实例研究
 1213 抽象控制类: Osbert Oglesby实例研究
 1214 求精用例: Osbert Oglesby实例研究
 1215 用例实现: Osbert Oglesby实例研究
  12151 Buy a Masterpiece用例
  12152 Buy a Masterwork用例
  12153 Buy Other Painting用例
  12154 其余5个用例
 1216 类图递增: Osbert Oglesby实例研究
 1217 测试流: Osbert Oglesby实例研究
 1218 统一过程中的规格说明文档
 1219 关于动作者和用例更详细的内容
 1220 用于面向对象分析阶段的CASE工具
 1221 面向对象分析阶段所面临的问题
 本章回顾
 进一步阅读
 习题
 参考文献
第13章 设计
 131 设计和抽象
 132 面向操作设计
 133 数据流分析
  1331 小型实例研究: 字数统计
  1332 数据流分析扩展
 134 事务分析
 135 面向数据设计
 136 面向对象设计
 137 面向对象设计: 电梯问题实例研究
 138 面向对象设计: Osbert Oglesby实例研究
 139 设计流
 1310 测试流: 设计
 1311 测试流: Osbert Oglesby实例研究
 1312 详细设计的形式化技术
 1313 实时设计技术
 1314 设计阶段的CASE工具
 1315 设计阶段的度量
 1316 设计阶段面临的挑战
 本章回顾
 进一步阅读
 习题
 参考文献
第14章 实现
 141 编程语言的选择
 142 第四代语言
 143 良好的编程实践
  1431 使用一致和有意义的变量名
  1432 自文档代码的问题
  1433 使用参数
  1434 为增加可读性的代码编排
  1435 嵌套的if语句
 144 编码标准
 145 代码重用
 146 集成
  1461 自顶向下的集成
  1462 自底向上的集成
  1463 三明治集成
  1464 面向对象产品的集成
  1465 集成的管理
 147 实现阶段
 148 实现阶段: Osbert Oglesby实例研究
 149 测试阶段: 实现
 1410 测试用例选择
  14101 规格说明测试与代码测试
  14102 规格说明测试的可行性
  14103 代码测试的可行性
 1411 黑盒单元测试技术
  14111 等价测试和边界值测试
  14112 功能测试
 1412 黑盒测试用例: Osbert Oglesby实例研究
 1413 玻璃盒单元测试技术
  14131 结构测试: 语句、 分支和路径覆盖
  14132 复杂性度量
 1414 代码走查和审查
 1415 单元测试技术的比较
 1416 净室
 1417 测试对象时潜在的问题
 1418 单元测试的管理方面
 1419 何时该重写而不是调试一个代码模块
 1420 集成测试
 1421 产品测试
 1422 验收测试
 1423 测试流: Osbert Oglesby实例研究
 1424 实现的CASE工具
  14241 软件开发全过程的CASE工具
  14242 集成化开发环境
  14243 商业应用软件开发环境
  14244 公共工具基础结构
  14245 开发环境的潜在问题
 1425 实现流的度量
 1426 实现流面临的挑战
 本章回顾
 进一步阅读
 习题
 参考文献
第15章 交付后维护
 151 为什么交付后维护是必要的
 152 对交付后维护程序员的要求是什么
 153 交付后维护小型实例研究
 154 交付后维护的管理
  1541 缺陷报告
  1542 批准对产品的修改
  1543 确保可维护性
  1544 反复维护造成的问题
 155 面向对象软件的维护
 156 交付后维护技能与开发技能
 157 逆向工程
 158 交付后维护阶段的测试
 159 交付后维护的CASE工具
 1510 交付后维护的度量
 1511 交付后维护: Osbert Oglesby实例研究
 1512 交付后维护阶段面临的挑战
 本章小结
 进一步阅读
 习题
 参考文献
第16章 UML的进一步讨论
 161 UML不是一种方法
 162 类图
  1621 聚合
  1622 多态
  1623 组合
  1624 泛化
  1625 关联
 163 注解
 164 用例图
 165 模板
 166 交互图
 167 状态图
 168 活动图
 169 包
 1610 组件图
 1611 配置图
 1612 UML图回顾
 1613 UML和迭代
 本章回顾
 进一步阅读
 习题
 参考文献

附  录
附录A 学期项目: Amlet沙漠中Ophelia的Oasis
附录B 软件工程资源
附录C 需求流: OsbertOglesby实例研究
附录D 结构化系统分析: Osbert Oglesby实例研究
附录E 分析流: Osbert Oglesby实例研究
附录F 软件项目管理计划: OsbertOglesby实例研究
附录G 设计流: Osbert Oglesby实例研究
附录H 实现流: Osbert Oglesby实例研究(C++版本)
附录I 实现流: Osbert Oglesby实例研究(Java版本)
附录J 测试流: Osbert Oglesby实例研究

教学资源推荐
作者: [美]保罗·阿曼(Paul Ammann);杰夫·奥法特(Jeff Offutt) 著
作者: Leszek A.Maciaszek Bruc Lee Liong
作者: 韩万江 姜立新 编著
参考读物推荐
作者: 美国太阳微系统公司
作者: (美)Capers Jones(法)Olivier Bonsignour 著
作者: (美)Cem Kaner,Jack Falk,Hung Q.Nguyen
作者: (印)Gopalaswamy Ramesh