软件工程:面向对象和传统的方法(原书第7版)
作者 : Stephen R. Schach
译者 : 邓迎春 韩松 徐天顺
丛书名 : 计算机科学丛书
出版日期 : 2007-08-30
ISBN : 7-111-21722-0
定价 : 48.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 385
开本 : 16开
原书名 : Object-Oriented Classical Software Engineering, Seventh Enition
原出版社: McGraw-Hill
属性分类: 教材
包含CD :
绝版 :
图书简介

本书对软件工程的基础知识(包括面向对象和传统方法)进行了严谨和全面的介绍,是软件工程领域的经典著作。
  第7版着重扩展了敏捷过程和开源软件的内容。此外,崭新的MSG基金案例研究取代了以前的Osbert Oglesby案例研究,新的案例研究突出统一过程的更多方面。
  本书共分两大部分:第一部分介绍基本的软件工程理论;第二部分讲述更实用的软件生命周期。作者采用这种独特的、极具可读性的组织方式,帮助学生和广大读者理解软件工程中一些复杂的概念。

本版新增内容:
  ●关于敏捷过程的全新介绍。将极限编程(XP)放在敏捷过程的更大语境中介绍。
  ●扩展了开放源码的相关介绍内容。全书(尤其是第2章和第4章)用很大篇幅介绍开源软件开发的相关内容。
  ●更多的习题。在每章中都添加了新习题。
  ●崭新的案例研究。根据评审人员和读者的反馈意见,新版在第10~15章中增加了一个全新的有关MSG基金案例研究,以说明软件开发的各种技术。这个案例研究主要针对学生或广大读者今后很可能会在现实生活中遇到的一个情况——住房抵押。这个新案例取代了前几版中的Osbert Oglesby案例,突出介绍了统一过程的更多方面。
  ●新增网上内容。配套网站www.mhhe.com/schach为采用本书作为教材的教师提供了教学幻灯片、习题解答以及学期项目和实例研究的C++和Java代码等教辅资源。

图书特色

图书前言

本书的第6版出版于2004年,与第5版有很大的不同。第6版中有一半以上的内容由新素材组成,大部分是有关统一过程的,并从一个更新的视角重写了从第5版中保留下来的主题。
  许多指导教师为第6版提供了反馈意见,他们认可我在第6版中所做的大幅修改,但建议第7版的目标应着眼于更新第6版,而不是再次做广泛的修改。另外,一些指导教师提出在本书的第二部分增加新的运行实例。
  因此,在第7版中有两类修改:
  对全书进行了整体更新。特别地,我在第2章和第4章专门扩充了敏捷过程和开源软件开发方面的内容。对参考文献也进行了更新,并且每章都有一些新的习题。
我用MSG基金实例研究替代Osbert Oglesby实例研究,来阐述第10~15章中的软件开发技术。
  第6版保留下来的特性
 统一过程仍是面向对象软件开发方法的首选。因此,贯穿全书的仍是统一过程的理论和实践。
 第1章深入分析面向对象范型的优势。
 在第2章,尽可能早地引入反复递增生命周期模型。进一步地,与前面的所有版本一样,对其他的生命周期模型进行描述、比较和对比。
 在第3章(“软件过程”)中,介绍工作流(活动)和统一过程的各个阶段,并解释二维生命周期模型的需求。
 第4章(“软件小组”)讨论组织软件小组的多种方式,包括开发敏捷过程的小组和开发源码公开软件的小组。
 第5章(“软件工程工具”)包含一些CASE工具中重要的类的信息。
 第6章(“测试”)中着重讨论连续测试的重要性。
 对象仍旧是第7章(“从模块到对象”)关注的焦点。
 关于互操作性的内容,在第6版中从第8章(“可重用性和可移植性”)中删除,在本版中仍没有可替代的材料。在第4版和第5版中,这些部分在出版书籍所需的6个月中便毫无希望地落伍了。以我的观点看,这个领域变化得太快,以致于无法包含在课本中,希望在软件工程课程中包含互操作性内容的指导教师应该从互联网中获取实时更新的材料。
 软件项目管理计划的新IEEE标准在第9章(“计划和估算”)中再次提供。
 第10章(“需求”)、第12章(“面向对象分析”)和第13章(“设计”)大都致力于阐述统一过程的工作流(活动)。基于显然的理由,第11章(“传统的分析”)中除了实例研究外,没有进行修改。
 第14章(“实现”)中的内容明确区分实现和集成。
 第15章重点描述交付后维护的重要性。
 第16章为准备在软件业中就业的学生提供了UML方面的额外材料。这一章特别适用于采用本书作为两学期软件工程课程系列教材的指导教师们。在第二个学期,除了开发基于小组的学期项目或顶石(capstone)项目以外,学生还可以获得UML的额外知识。
 与以前一样,有两个运行实例研究。使用统一过程开发的MSG基金实例研究和电梯问题实例研究。同往常一样,Java和C++实现在www.mhhe.com/schach在线可用。
 除了使用这两个运行实例研究阐述完整的生命周期外,还通过七个小实例研究来突出专门的主题,例如移动目标问题、逐步求精和交付后维护。
 在先前的所有版本中,我强调文档、维护、重用、可移植性、测试和CASE工具的重要性。在本版中,所有这些概念都无疑将受到同等程度的重视。如果学生不理解这些软件工程基础的重要性,教授学生们最新的思想就没有什么用处了。
 如同第6版,对以下几方面给予特殊的重视:面向对象生命周期模型、面向对象分析、面向对象设计、面向对象范型的管理含义、面向对象软件的测试和维护,其中还包括面向对象范型的度量。此外,对对象作了许多更简明的注解,有的是一个段落,有的只是一句话。这样做的原因是,面向对象范型不仅与各种阶段如何执行有关,也影响着我们思考软件工程的方式。对象技术再次贯穿本书始终。
 软件过程仍然是整体贯穿本书的一个概念。为了控制这个过程,我们必须能够测量项目中发生了什么。相应地,保留对度量的强调。考虑到软件过程的进展情况,保留有关能力成熟度模型(CMM)、ISO/IEC 15504(SPICE)以及ISO/IEC 12207,在有关小组的章节中加入人员能力成熟度模型(P-CMM)。
 本书仍然与计算机语言无关,少量代码实例用C++或Java表示,而且我尽量减少与语言有关的细节,确保代码实例对于C++和Java用户同样清晰。例如,不使用cout表示C++的输出,也没有使用System.out.println表示Java的输出,而使用伪码指令print。(一种例外情况是新的实例研究,其完整的实现细节用C++和Java同时给出。)
 像在第6版中一样,本书包含600多个参考文献。我选择了当前的研究文章和一些仍保持有关最新信息的经典的文章和书籍。毫无疑问,软件工程是一个快速发展的领域,学生需要知道最新的成果以及在哪些文献里可以找到它们。与此同时,今天的前沿研究是在昨天的事实基础上进行的,没有理由将一篇较早的参考文献排除在外,如果它的思想在今天如最初一样仍在应用着。
 作为先决条件,假设读者对诸如C、C++、Ada或Java的一种高级编程语言很熟悉,另外,读者应学习过数据结构。
  为什么仍然包括经典范型
  现在几乎一致认为面向对象范型比经典范型优越。但是,我感觉试图完全不提及经典范型是不明智的。
  首先,没有完全理解经典范型,而且不知道它与面向对象方法的区别,就不可能明白为什么面向对象技术比经典技术优越。例如,面向对象范型使用一个反复递增的生命周期模型。要说明为什么需要这样一个生命周期模型,最根本的是解释在经典的如瀑布模型这样的生命周期模型和面向对象的反复递增生命周期模型之间的区别。因此,在本书中包含了有关经典范型的材料,使学生们能够清楚地把握经典范型和面向对象范型之间的不同。
  在书中包含两种范型的第二个理由是,技术的转变是一个缓慢的过程。要不是经受不住千年虫(Y2K)问题的影响从而加速了向面向对象范型的转变,大多数软件组织至今还不会采纳面向对象范型。因此,有可能使用本书的许多学生将会受雇于仍然使用经典软件工程技术的组织。进一步说,即使一个组织使用面向对象方法开发新的软件,现有的软件仍将得到维护,并且这个延续下来的软件不是面向对象的。因此,排除经典内容对于许多使用这本教材的学生将是不合适的。
  包括两种范型的第三个理由是,一个受雇于正考虑向面向对象技术转变的组织的学生,将能够对该组织就新的范型的长处和短处提出自己的忠告。因此,如同前一版中一样,对经典和面向对象方法进行了比较、对照和分析。
  第7版是如何安排的
  就像本书第6版一样,第7版是为传统的一学期的和新的、现在流行的两学期的软件工程课程而编写的。在传统的一学期(或1/4学年)课程中,教师不得不把理论部分内容一带而过,以便尽早提供给学生们进行学期设计所必需的知识和技能。这样的匆忙安排,使学生们能够及早开始学期设计,从而得以在学期结束前完成设计。为了满足一个学期的基于设计的软件工程课程的要求,本书的第二部分涵盖了按工作流进行的软件生命周期,第一部分包含了理解第二部分所需的理论知识。例如,第一部分向读者介绍CASE、量度和测试;第二部分的每一章都有一节讲述该工作流的CASE工具,一节讲述该工作流的量度,还有一节讲述在该工作流期间的测试。第一部分编写得简短一些,以便教师能够在一学期里较早开始第二部分内容的讲授。而且,第一部分的最后两章(第8章和第9章)可以拖后讲,留待与第二部分同时讲授。这样,本课程可以在尽早的时候开始进行学期设计。
  我们再来看两学期的软件工程课程。越来越多的计算机科学和计算机工程系认识到毕业生绝大多数将找到软件工程师的工作。因而,许多学院和大学采用连续两学期(或两个1/4学年)的软件工程课程安排。第一学期课程中理论内容占多数(但也总有少部分的某种设计实践内容)。第二学期课程主要由以小组为基础的学期设计为主,通常是一个前沿课题。当学期设计安排在第二学期课程内时,指导教师就没有必要匆忙开始第二部分内容了。
  因此,使用本书第7版教一学期(或1/4学年)课程的教师需要讲解第1~7章的大部分,然后开始第二部分(第10~16章)。第8章和第9章可以与第二部分并行讲授,或者在课程结束前,学生们正在进行学期设计时讲授。当教师进行连续两学期的课程讲授时,应当顺序讲授本书的各章。通过本学期的学习,同学们可以完全准备好进行第二个学期的基于小组的学期设计了。
  为了确保同学们能够真正理解第二部分一些关键的软件工程技术,每项技术都出现两次。首先,当介绍一项技术的时候,先通过电梯问题来讲解它。电梯问题对于读者难易比较适中,它能够使读者明白,应用于某个完整问题的技术有许多精妙之处,足以凸显所讲授技术的优点和缺点。然后,给出与该项技术有关的MSG基金实例研究的相关部分。这个详细解决方案为每一项技术提供了第二种阐述。
  习题集
  与以前的版本一样,本书有5种类型的习题。首先,在第10、12和13章结束时有运行着的面向对象分析和设计项目。包含这些项目是因为,学习如何进行需求、分析和设计工作流的唯一途径来自于广泛的实习经历。
  第二,每一章结尾包含一些意在突出重点的练习。这些练习是独立的,全部练习的技术信息都可以在本书中找到。
  第三,有一个软件学期设计项目。该设计需要由最少三人组成的小组协作完成,而不是通过常规的电话协商完成。学期设计项目由15个独立的组件组成,每个组件都附在相应的一章之后。例如,“设计”是第13章的题目,因此在该章中此学期设计的这个组件与软件设计有关。通过将一个大的项目分解为小的、明确定义的几个部分,教师能够更密切地掌控班上的学习进度。学期设计项目是这样一种结构:指导教师能够自由将这15个组件应用于任何其他所选择的项目。
  本书是为研究生和大学高年级学生而编写的,第4种类型的习题是根据软件工程文献中的研究报告拟制的。在每一章都选择了一篇重要的文章,尽可能选择一篇与面向对象软件工程有关的文章。要求学生阅读该篇文章并回答与其内容有关的一个问题。当然,教师可以自由安排任何其他研究文献,在每一章后的“进一步阅读指导”中包含各种相关论文。
  第5种类型的习题与实例研究有关。这类习题首先在第3版中引入,是响应许多教师的要求加入的。教师们感觉:学生们通过修改一个现成的产品而不是从头开发一个新的产品可以学到更多的东西。业界的许多高级软件工程师同意这个观点。基于此,给出实例研究的每一章有需要学生在某种程度上修改该实例的问题。例如,在某一章中,要求学生使用一项与该实例研究中使用的不同的设计技术重新设计该实例。在另一章中,要求学生回答以不同的顺序执行面向对象分析的步骤会产生什么不同的效果。为了使学生易于修改实例研究的源代码,在万维网上提供这些源代码,网址见:www.mhhe.com/ schach。
  该网址还提供给教师一个完整的PowerPoint讲稿笔记和包括学期项目在内的所有习题的详解。
  有关UML的材料
  本书实际使用统一建模语言(UML)。如果学生没有UML的前期知识,可以用两种方式教授这部分。我倾向于在需要时才教授UML,也就是说,每个UML概念只在需要它之前讲解。下表描述了本书使用的UML结构所在的章节。
  结构介绍对应的UML范型的章节范型的章节类图、注解、继承(泛化)、聚合、关联、导航三角形77节用例1043节用例图、用例描述107节固定形式121节状态图126节交互图(序列图、协作图)1215节另一方面,第16章介绍UML,包括本书当前及以后所需的材料。第16章可以在任何时间讲授,它不需要依赖前面的第15章。第16章涵盖的主题如下表所示。结构介绍对应的UML范型的章节类图、聚合、多态、组合、泛化、关联162节注解163节用例图164节固定形式165节交互图166节状态图167节活动图168节包169节组件图1610节配置图1611节致谢
  我非常感谢前面6版书的审阅者所给予的建设性批评和许多有帮助的建议,他们是 :
  此外,还要特别感谢本版书的审阅者,他们是:
  我对发给我有关第6版的电子邮件的全世界的众多教师表示感谢,尤其感谢他们发来建议、评论和批评意见。特别地,我要感谢Michael Haugrud教授(明尼苏达州立大学Moorhead)提出对Winburg小型实例研究的改进建议。对于本版,我同样希望能得到教师们的反馈意见,我的电子邮件地址为  srs@vuse.vanderbilt.edu。
  学生们也继续对我有很大帮助。我要再次感谢范德比尔特(Vanderbilt)大学我的学生在课内和课外提出的颇有争议的问题和建设性的建议。我也非常感谢世界各地的学生们发给我有关第6版问题和评论的电子邮件,特别的感谢送给德国Erlangen大学的学生Benjamin Polak,他对电梯问题实例研究提出了改进建议。与前面的版本一样,我也恳切地希望得到学生们对本版的反馈意见。
  我衷心地感谢曾为本书以前版本做出贡献的三个人:首先是Kris Irwin再一次提供了学期项目的完整题解,包括Java和C++两种语言的实现;其次是Jeff Gray完成了MSG基金实例研究;然后是Lauren Ryder再次作为教师解题手册的合作者并制作了PowerPoint幻灯片。
  现在我要转向McGraw Hill。我的出版商Alan Apt和执行编辑Rebecca Olson为整个项目提供了帮助和指导。感谢Lucy Mullins编辑提出了许多有益的建议。我与市场经理Michael Weitz、媒介经理Christina Nelson、产品监制Kara Kudronowicz和校对Carrie Barker一起工作很愉快。本书漂亮的封面由Michelle Whitaker和Christopher Reese设计,我衷心感谢他们。最后,我特别希望能够感谢产品经理Lora Kalb,感谢她无尽的帮助和始终将此项目列入日程,她始终具有前瞻性。
  一如既往,我乐于与交互排版公司(Interactive Composition Corporation)非常胜任的排版人员们一同工作,我还要感谢ICC项目经理Deepti Hingle。
  最后,和以往一样,我感谢我的妻子Sharon一直支持我。与我以前的所有书情况一样,我极力确保尽家庭义务优于写作,然而当最后期限临近时,这有时是不可能的。在这种时候,她总是理解我,为此我特别感激她。
  我愿把我的第13本专著献给我的爱孙Jackson。

  Stephen R. Schach

作者简介

Stephen R. Schach:Stephen R. Schach:  1972年获魏兹曼科学院物理学理科硕士学位,1973年获开普敦大学应用数学博士学位。Schach在软件工程领域有广泛研究,特别是对软件维护与开放源代码软件的实验分析有深入研究。他著有多部有关软件工程、面向对象软件工程、面向对象系统分析与设计的教材,署名出版物 (包括录像带) 达100部之多。他还在国际上广泛讲授软件工程方面的课程,包括重用、CASE和面向对象范型等。

译者简介

邓迎春 韩松 徐天顺:暂无简介

译者序

这是本书的第7版,也是我们第3次翻译本书。我们想先谈三点感想。
  一是惊奇。一本书出到第7版(也许还会继续)并不多见。这说明本书具有长久的生命力,用软件工程的话说,就是生命周期长。有了老师、学生、工程师和评论者的期待,才有了这本书的不断再版。
  二是敬佩。从第1版到第7版,虽然作者一直围绕着软件工程基础与原理的核心讲述,但针对应用新方法和新技术的取舍方面变化非常大,特别是为适应软件工程新的发展方向而对全书结构进行了相当大的调整。软件工程是一个发展变化很快,同时面向基础和应用的学科,作者以其敏捷的反应、深刻的洞察和准确的把握,始终使本书成为软件界有影响和有实用价值的著作。
  三是愉快。我们再次翻译本书,感觉像和老朋友再次重逢一样,既亲切又欣喜地看到老朋友的一些变化。我们在翻译过程中直接感受到作者直白易懂、贴近学生的讲述方式,以及作者为跟踪本学科最新的变化和发展所做的一次次修改,这一切使得这本经典的教科书日臻完美,翻译的过程也变得令人愉快。
  关于本书的主要特点和新版增加的内容,作者已经在前言中做了详细说明,在此不再赘述。我们只想强调本书最近几版的最大特点,那就是:理论结合应用、讲述深入浅出、内容广泛新颖。毫无疑问,本书既是一本适合大学高年级学生和研究生学习的经典教材,又是一本适合软件开发的管理者和工程师阅读的实用技术参考书。
  本书主要由邓迎春、韩松、徐天顺翻译。参加本书翻译工作的还有李萍、傅兵、赵玉亮、王国文、杜长任等,在此对他们的工作表示感谢。此外,感谢出版社编辑多次具体的指导和帮助。
  由于译者水平和时间限制,译文难免有不足之处,希望广大读者不吝指正。

  韩松
  2007年3月于北京

图书目录

出版者的话
专家指导委员会
译者序
前言
第一部分软件工程概述
第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4CASE
55CASE的分类
56CASE的范围
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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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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41访谈
1042其他技术
1043用例
105初始需求
106对应用领域的初始理解: MSG基金
实例研究
107初始业务模型: MSG基金实例
研究
108初始需求: MSG基金实例研究
109继续需求流: MSG基金实例研究
1010修订需求:MSG基金实例研究
1011测试流: MSG基金实例研究
1012传统的需求阶段
1013快速原型开发
1014人的因素
1015重用快速原型
1016需求流的CASE工具
1017需求流的度量
1018需求流面临的挑战
本章回顾
进一步阅读指导
习题
参考文献
第11章传统的分析
111规格说明文档
112非形式化规格说明
113结构化系统分析
114结构化系统分析: MSG基金实例
研究
115其他半形式化技术
116建造实体-关系模型
117有穷状态机
118Petri网
119Z
1191Z: 电梯问题实例研究
1192Z的分析
1110其他的形式化技术
1111传统分析技术的比较
1112在传统分析阶段测试
1113传统分析阶段的CASE工具
1114传统分析阶段的度量
1115软件项目管理计划: MSG基金
实例研究
1116传统分析阶段面临的挑战
本章回顾
进一步阅读指导
习题
参考文献
第12章面向对象分析
121分析流
122抽取实体类
123面向对象分析: 电梯问题实例研究
124功能建模: 电梯问题实例研究
125实体类建模: 电梯问题实例研究
1251名词抽取
1252CRC卡片
126动态建模: 电梯问题实例研究
127测试流: 面向对象分析
128抽取边界类和控制类
129初始功能模型: MSG基金实例
研究
1210初始类图: MSG基金实例研究
1211初始动态模型: MSG基金实例
研究
1212修订实体类: MSG基金实例研究
1213抽取边界类: MSG基金实例研究
1214抽取控制类:MSG基金实例研究
1215用例实现:MSG基金实例研究

12151Estimate Funds Avaibuble for Week用例
12152Manage an Asset用例
12153Update Estimated Annual
Operating Expenses用例
12154Produce a Report用例
1216类图递增: MSG基金实例研究
1217测试流: MSG基金实例研究
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面向对象设计: MSG基金实例研究
139设计流
1310测试流: 设计
1311测试流: MSG基金实例研究
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实现流:MSG基金实例研究
149测试流: 实现
1410测试用例选择
14101规格说明测试与代码测试
14102规格说明测试的可行性
14103代码测试的可行性
1411黑盒单元测试技术
14111等价测试和边界值分析
14112功能测试
1412黑盒测试用例: MSG基金实例
研究
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测试流: MSG基金实例研究
1424实现的CASE工具
14241软件开发全过程的CASE
工具
14242集成化开发环境
14243商业应用环境
14244公共工具基础结构
14245环境的潜在问题
1425测试流的CASE工具
1426实现流的度量
1427实现流面临的挑战
本章回顾
进一步阅读指导
习题
参考文献
第15章交付后维护
151开发与维护
152为什么交付后维护是必要的
153对交付后维护程序员的要求是什么
154交付后维护小型实例研究
155交付后维护的管理
1551缺陷报告
1552批准对产品的修改
1553确保可维护性
1554迭代维护造成的问题
156面向对象软件的维护
157交付后维护技能与开发技能
158逆向工程
159交付后维护期间的测试
1510交付后维护的CASE工具
1511交付后维护的度量
1512交付后维护:MSG基金实例研究
1513交付后维护面临的挑战
本章小结
进一步阅读指导
习题
参考文献
第16章UML的进一步讨论
161UML不是一种方法
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12UML图回顾
1613UML和迭代
本章回顾
进一步阅读指导
习题
参考文献
附录
附录A学期项目: Osric的办公室
用具和装饰
附录B软件工程资源
附录C需求流: MSG基金实例研究
附录D结构化系统分析: MSG基金
实例研究
附录E分析流: MSG基金实例研究
附录F软件项目管理计划: MSG基金
实例研究
附录G设计流: MSG基金实例研究
附录H实现流: MSG基金实例
研究(C++版)
附录I实现流: MSG基金实例
研究(Java版)
附录J测试流: MSG基金实例研究

教学资源推荐
作者: 梅宏 王千祥
作者: 韩万江 姜立新 等编著 宋茂强 审
参考读物推荐
作者: [法]穆拉德·沙巴纳·奥萨拉赫(Mourad Chabane Oussalah) 编著
作者: (美)Donald G. Firesmith 著