软件工程:实践者的研究方法(原书第6版·本科教学版)
作者 : Roger S. Pressman
译者 : 郑人杰 马素霞 白晓颖 等
丛书名 : 计算机科学丛书
出版日期 : 2008-06-30
ISBN : 7-111-23443-2
定价 : 49.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 426
开本 : 16开
原书名 : Software Engineering:A Practitioner ′s Approach (Sixth Edition)
原出版社: McGraw-Hill
属性分类: 教材
包含CD :
绝版 :
图书简介

Roger Pressman编写的这部翔实而全面的软件工程指南,广泛适合软件工程专业的学生及投身软件工程实践或需要参与这种实践的软件开发人员和管理人员。
  ——《IEEE Software》

  这是一本经典的现代教材,叙述清晰而又有权威性。本书包含大量插图、例子、习题和参考资料……如果读者心存疑问:“软件工程是什么?它现在在哪里?”那么最好阅读这本书。
  ——《ACM Computing Reviews》

  作为一名软件工程实践者,我发现此书是无价的。对于我做过的所有项目,本书都有重大的参考价值。 
  ——摘自Amazon.com的评论

  20多年以来,《软件工程:实践者的研究方法》一书是最受学生和行业专业人员欢迎的软件工程指南。它在全面而系统、概括而清晰地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评,在国际软件工程界享有无可质疑的权威地位。
  本书基于该书第6版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更加适合作为国内高校计算机及相关专业本科生的软件工程课程教材。

图书特色

图书前言

成功的计算机软件能够很好地满足使用者的要求,能在相当长的时间内无故障地运行,能够非常好用,也容易修改;这样的软件能够也确实会把事情办好。反之,有问题的软件无法让用户满意,容易出错,难于修改,甚至很难使用;这样的软件将会也确实会把事情办糟。我们希望开发出好的软件,把事情办好,避免那些隐藏在背后的糟糕的事情发生。为了获得成功,在设计和开发软件时,我们需要有规范,需要有工程化的方法。
  在本书第1版问世以来的25年中,软件工程已经从少数倡导者提出的一些朦胧概念发展成为一门正规的工程学科。如今,软件工程已被公认为是一个值得深入研究、认真学习和热烈讨论的课题。在整个行业中软件工程师已经代替了程序员成为人们优先选择的工作岗位。软件过程模型、软件工程方法和软件工具已在广阔的行业应用领域得到成功的采用。
  尽管管理人员和工作在第一线的专业人员都承认,需要有更为规范化的软件方法,但他们却始终在争论着应该采取什么样的规范。许多个人和公司至今仍在杂乱无章地开发着自己的软件,甚至即使他们正在开发的系统服务于目前最为先进的技术,也仍然如此。许多专业人员和学生并不了解现代方法。于是造成了严重的后果,以至所开发的软件质量很差,糟糕的事情时有发生。此外,有关软件工程方法性质的争论一直持续进行着。软件工程的重要地位问题已成为研究课题。人们对待软件工程的态度已有所改变,研究工作已取得了进展,不过要成为一个完全成熟的学科还有大量的工作要做。
  本书第6版希望成为推动工程学科走向成熟的入门读物。和前五版一样,第6版对学生和专业人员同样具有很强的吸引力。本书既是软件行业专业人员的工作指南,同时也是大学高年级学生以及一年级研究生的综合性参考书。
  第6版包含很多新的内容,它绝不是前一版的简单更新。这一版做了不少修订,结构上也有调整,更加强调一些新的和重要的软件工程过程和实践。此外,我们专门为本书开辟了一个网站(www.mhhe.com/pressman),其中提供的“支持系统”(见图0-1)包含了为学生、教师和专业人员提供的大量专业资源,从而丰富和充实了本书的内容。(访问原书网站可能无法获取有些配套资源,需要这些配套资源的教师可联系麦格劳-希尔教育出版公司北京办事处,联系方式参见书后的“教学服务沟通表”。—编者注)
  第6版共32章,分为五个部分。这样就把全书分为五个主题,从而有助于教师解决无法在一个学期内讲完书中全部材料的问题。
  ·第一部分 软件过程,给出了软件过程的不同论点,考虑到所有重要的过程模型,涉及传统过程和敏捷过程在指导思想上的争论。
  ·第二部分 软件工程实践,给出了分析、设计和测试方法,其中突出讨论了面向对象技术和UML建模。鉴于面向对象方法目前在行业中已被广泛采用,原来第5版中第四部分的内容(面向对象软件工程)现已全部纳入到这里了。
  ·第三部分 应用Web工程,提供了Web应用系统的分析、设计和测试的全面工程方法。
  ·第四部分 管理软件项目,给出的是与计划、管理和控制软件项目的人员有关的问题。
  ·第五部分 软件工程高级课题,涉及形式化方法、净室软件工程、基于构件的软件工程、再工程以及未来的发展趋势等问题。
  第6版除了对前一版本做了许多更新和重要修改外,还特别增加了120多个框。主要分为以下4种:
  ·让读者跟随一个虚构的项目组,跟随他们的工作进程开发一个计算机应用系统。
  ·对选择的题目提供补充的讨论。
  ·概述反映某些软件工程活动工作流的任务集。
  ·推荐与特定章节相关的自动化工具。
  第6版分为五部分,这样方便教师根据时间和学习要求安排讲课内容。在一个学期内可进行一个部分,也可进行多个部分。例如“方法课”可能只强调第一和第二部分;而Web开发课会强调第一和第三部分;管理课应把重点放在第一和第四部分。第6版内容这样组织,其意图在于给教师提供多种教学安排的选择。但无论如何选择,第6版的内容都可获得“支持系统”的补充支持(参见图0-1):
  图0-1  本书第6版的支持系统
  为学生提供的资源
  提供种类繁多、内容丰富的材料供学生学习。包括:在线学习中心可提供学习指南、实习测验以及Web资源(包括软件工程检查单、一套不断演化的微型工具、完整的案例研究以及工作产品模板)。此外,还有900多种网上参考资料可供学生更深入地探讨软件工程问题。
  为教师提供的资源
  本书第6版为教师提供了广泛的资源,包括综合性在线教师指南(可下载)、教学补充材料、700多幅供讲课用的PowerPoint幻灯片、试题库及试卷模板。此外,参考文献指明了500多篇软件工程的研究论文(分专题组织,且可下载),在讲授高级软件工程课程时可作为专题讨论课使用。在教师指南中,对各种类型的软件工程课程的教学提出了建议,介绍了与课程配合开展的软件项目以及许多有用的教学辅助工具。
  为专业人员提供的资源
  有许多资源可供工业界的专业人员(也包括学校师生)使用,包括软件工程文档及其他工作产品的纲要和模板、一套有用的软件工程检查单、CASE工具目录、综合性Web资源,并且还提供了根据具体任务划分的软件工程过程的“通用过程模型”。
  本书第6版配有在线支持系统,这样既保证了使用上的灵活性,又保证了内容上的足够深度。这一点是任何单本教科书无法比拟的。
  致谢
  本书六个版本的出版工作是我一生中持续最久的技术项目。甚至在书稿完成后,我仍然不断地从一些技术文献中提取信息并加以吸收和组织。正是这个原因,我十分感谢这些书籍、文章(包括发表在硬拷贝和电子媒体上)的作者,在过去的25年中是他们给了我不少见解和想法。
  特别感谢渥太华(Ottawa)大学的Tim Lethbridge,他非常仔细地审核了第6版,并帮助我开发了UML及OCL实例,还开发了与本书配套的综合案例研究,他的支持和建议非常有价值。特别感谢密歇根大学迪尔本分校(Michigan-Dearborn)的Bruce Maxim,他帮助我开发了与本书配套的Web站点,Bruce负责大部分教学内容。最后,我想感谢第6版的所有评审人员,他们的深入见解和批评非常宝贵:
  使用本书早期版本的工业界的专业人员、大学教授及学生塑造了本书第6版的内容,他们花费了很多时间提出建议、批评和想法,在此向他们表示感谢。另外,还要感谢许多工业界的客户,他们教给我的比我能够教给他们的更多。
随着本书版本的更新,我的儿子Mathew和Michael已经长大成人。他们在现实生活中的成熟、品质和成功给了我灵感,没有什么比这更让我感到自豪的了。最后,感谢我的妻子Barbara鼓励我继续出版本书的下一个版本。

  Roger S. Pressman

图书序言

Pressman博士的《软件工程:实践者的研究方法》一直是软件工程领域的经典教材,其第6版更融合了现代软件工程的概念和技术,内容几乎覆盖了软件工程领域所有知识点,是该领域初学者、研究者、实践者共同认可的权威著作。国内部分高校一直沿用其各个版本的教材作为软件工程专业课程的教材。
  随着双语教学在全国高校的推广普及,越来越多的高校希望使用这本经典而权威的著作作为教材。但同时大多数高校本科生的英语阅读能力有待逐步提高,原著900多页的容量使得大多数学生望而生畏。
  为了帮助更多学生更好地接受英文原版教材,机械工业出版社特推出此改编删减版,其目的是使改编版的内容更符合普通高校本科生的课程大纲,让本科生可以在一学期内掌握软件工程的最核心基础内容。
  与原版相比,改编版的改动内容如下:
  首先,本科软件工程教学大纲主要涵盖软件工程的基本方法以及部分管理方面的基础理论,故改编版只保留原著第1、2、4部分,而删去适用于研究生课程的第3部分(Web工程)和第5部分(高级课题)。同时删去的还有原著第22.2.6节,Web工程的质量,以及原著第27.4节,Web工程的配置管理。
  其次,根据往届学生的反映,我们认识到,对于完全没有大型系统开发经验的本科生而言,软件产品度量和统计数据分析等工作的内容和意义是难以真正体会的,没有必要做十分深入的讲解,只需要介绍基本概念。因此,我们删除了原著第15.3~15.7节(软件工程各阶段的产品度量)、第22.4~22.6节(过程和项目的度量中比较细节的部分)、第23.9~23.10节(特殊评估工具等)。
  此外,下列章节中还做了少量裁减:
  1. 第1章:裁减第1.6节以减少学生必须阅读的篇幅。
  2. 第2章:裁减第2.5和2.6节属于研究生课程中的高级内容。
  3. 第5章:该章只是引言,其核心内容将在后面的章节中逐一展开介绍。为减少学生必须阅读的篇幅,该章被整体删除。
  4. 第7章:裁减第7.6~7.8节属于研究生课程中的高级内容。
  5. 第14章:裁减第14.4.4、14.6.1、14.6.4、14.7.6、14.10和14.11节属于研究生课程中的高级内容。
  经过压缩,原著900余页的篇幅被大幅压缩到500页以内。由于我们只是就知识点做了裁减,对于保留部分并未删减其原著的语言和案例,所以应该对原著的写作风格没有造成明显的破坏。鉴于改编者的经验和学识有限,对于裁减内容的取舍或存在欠妥之处,欢迎广大读者批评指正。
  陈越
  2007年底于浙江大学

作者简介

Roger S. Pressman:Roger S. Pressman: 是软件过程改进和软件工程技术领域知名的权威。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终投身于软件工程领域。 Pressman博士曾经以软件产业专业技术人员和管理人员的身份从事先进工程、制造领域的CAD/CAM系统的开发。他也做过科学和系统程序设计方面的工作。 在获得美国康涅狄格大学工程学博士学位后,Pressman博士进入学术界成为布里奇波特(Bridgeport)大学计算机工程系的Bullard副教授,同时担任该校CAD/CAM中心主任。 现在,Pressman博士是R. S. Pressman & Associates,Inc.的总裁,该公司专门从事软件工程方法的咨询和培训业务。作为公司的主要咨询专家,他设计和开发了一套完整的软件工程录像课程“Essential Software Engineering”以及软件过程改进的指导系统“Process Advisor”。这两项产品已为世界上数千家公司采用。最近,他与印度QAI公司合作,开发网上软件工程教学系统“eSchool”。 Pressman博士撰写了许多论文,是多种行业期刊的固定撰稿人,并著有6本技术书。除本书之外,还有: * 《A Manager誷 Guide to Software Engineering》(McGraw-Hill) 该书曾获奖。 * 《Making Software Engineering Happen》(Prentice-Hall) 这是涉及软件过程改进的关键管理问题的第一本书。 * 《Software Shock》(Dorset House) 该书论述软件及其对商业和社会的影响。 Pressman博士曾任多种行业杂志的编委,并多年来一直担任《IEEE Software》杂志Manager专栏的编辑。 Pressman博士是知名的演讲者,曾在许多行业会议上作重要讲话,他还是美国计算机协会(ACM)、美国电气与电子工程师协会(IEEE)等组织的成员。 Pressman博士和他的妻子Barbara住在南佛罗里达。他热爱体育运动,擅长网球和高尔夫球。还曾写过两部小说:《The Aymara Bridge》和《The Puppeteer》。

译者简介

郑人杰 马素霞 白晓颖 等:暂无简介

译者序

作为一部软件工程著作,本书全面、系统地阐述了当前软件工程技术的各个层面。它概括而清晰地介绍了有关的概念、原则、技术、方法和工具。自从20多年前第1版问世以来,它在国际软件工程界发挥了巨大而深远的影响,从而树立了无可质疑的权威形象。
  从第1版开始,我一直是本书的忠实读者,它是我在教学工作中的一本重要参考教材,也是我的良师益友。
  软件工程是一门工程学科,它告诉我们如何规范化地开发软件。事实一再表明,不规范的软件是不可用、不易修改的软件。本人从20世纪80年代中期开始承担软件工程课的教学任务,深知这门专业课的重要性及教学的难点。如果询问从大学计算机专业毕业多年的从事实际工作的专业人员,在大学哪门课最为实用,许多人会毫不犹豫地回答:是软件工程课。其实,软件工程课不只在计算机行业有用,非计算机专业的学生也会对这门课很有兴趣。十几年前,我所工作的清华大学要求我面向非计算机专业的理工科研究生开设软件工程选修课,结果报名十分踊跃,竟出现700人同堂听课的场面。据学校研究生处称,如果不具备软件工程的概念和知识,这些来自各专业的研究生在各自的研究项目中所开发的软件,往往会因为极不规范而难以理解。对导师来说,整个研究课题前后工作无法很好地衔接,也很难交流。
  本书从1982年第1版开始就为我国软件界密切关注,国内至少已出版了第2版、第5版的中译本,对国内大学的软件工程课程产生了巨大的影响。
  第6版的特点
  1. 在第5版的基础上做了大量的充实和更新,例如,突出了软件过程,增加了敏捷开发方法。
  2. 除各章后面提供了大量供进一步阅读的参考文献信息外,针对不同的读者(学生、教师和专业人员)提供了各种形式的材料,范围广泛,内容丰富,且使用方便。
  3. 为了方便阅读和理解,除在各章开头给出全章内容简介和关键词外,在文中穿插了许多内容不同的解释框。而且全书贯穿了一个应用实例(住宅安全系统—SafeHome),以对话形式逐步展开这一软件的开发过程,从而提高了严肃的技术书籍的可读性,极大地引发了读者的阅读兴趣。
  读者对象
  本书前言中已明确指出了三类主要读者,即高校学生、教师和专业技术人员,总体上该书是为教学服务的。教师如果以本书为教材,面对的又是软件工程的初学者,可能需要自行补充一些具体的材料,让学生在本书内容的基础上掌握一些具体的、实用的、操作性更强的工作步骤。当然这可以结合习题或实习,在课内讲解,也可作为指定的补充读物,由学生自学掌握。对于教师自己,或具有一定软件工程基础的研究生和软件专业人员,本书给你的是全面、丰富、代表当前发展水平的软件工程知识。
  参加本书翻译工作的主要有清华大学计算机系和华北电力大学计算机系的教师,包括马素霞、白晓颖、董渊、赵冲冲、张志强、戴桂兰、王素琴、谢萍、贾克等。在翻译过程中,得到清华大学计算机系栗宏、谢继辉,软件学院马秋霞、程明、李海庆、邬双,华北电力大学计算机系周莉梅、杜江的帮助,内蒙古大学的郇失宇老师仔细审阅了第4~5章,在此对他(她)们的辛勤劳动表示感谢。本人将大部分译稿、马素霞教授将后半部分译稿做了仔细审核与修改。尽管翻译工作历时一年,在大家非全时投入又不能集中工作的情况下仍感到时间紧张,某些部分仍不够理想。限于水平,对内容的理解和中文表达难免有不当之处,在此敬请读者批评指正。又,原书中存在的个别问题(包括错、漏及不妥之处)均在译者注中指出。
总之,这是一本非常优秀的软件工程读物,本人也十分高兴地向读者推荐,认真阅读它将会使你受益匪浅。

  郑人杰
  2006年元旦

图书目录

出版者的话
改编者序
译者序
译者简介
原著前言
本书使用说明

第1章 软件工程介绍 1
1.1 软件角色的演化 2
1.2 软件 4
1.3 软件特性的变化 6
1.4 遗留软件 7
1.4.1 遗留软件的质量 8
1.4.2 软件演化 8
1.5 软件神话 9
1.6 小结 11
参考文献 11
习题与思考题 12
推荐读物与阅读信息 12
第一部分 软 件 过 程
第2章 过程综述 16
2.1 软件工程:一种层次化技术 17
2.2 过程框架 18
2.3 能力成熟度模型集成 22
2.4 过程模式 25
2.5 过程技术 27
2.6 产品与过程 28
2.7 小结 29
参考文献 29
习题与思考题 30
推荐读物与阅读信息 30
第3章 过程模型 32
3.1 惯例过程模型 33
3.2 瀑布模型 33
3.3 增量过程模型 34
3.3.1 增量模型 34
3.3.2 RAD模型 35
3.4 演化过程模型 36
3.4.1 原型开发 37
3.4.2 螺旋模型 39
3.4.3 协同开发模型 40
3.4.4 演化过程模型的最终评述 41
3.5 专用过程模型 42
3.5.1 基于构件的开发 42
3.5.2 形式化方法模型 43
3.5.3 面向方面的软件开发 43
3.6 统一过程 45
3.6.1 简史 45
3.6.2 统一过程的阶段 46
3.6.3 统一过程工作产品 47
3.7 小结 48
参考文献 49
习题与思考题 50
推荐读物与阅读信息 50
第4章 敏捷视角下的过程 52
4.1 敏捷是什么 53
4.2 敏捷过程是什么 54
4.2.1 敏捷开发的立场 55
4.2.2 人的因素 55
4.3 敏捷过程模型 56
4.3.1 极限编程 57
4.3.2 自适应软件开发 60
4.3.3 动态系统开发方法 62
4.3.4 Scrum 62
4.3.5 Crystal 64
4.3.6 特征驱动开发 64
4.3.7 敏捷建模 65
4.4 小结 67
参考文献 67
习题与思考题 68
推荐读物与阅读信息 69
第二部分 软件工程实践
第5章 系统工程 72
5.1 基于计算机的系统 73
5.2 系统工程层次结构 74
5.2.1 系统建模 75
5.2.2 系统仿真 76
5.3 业务过程工程概述 77
5.4 产品工程概述 78
5.5 系统建模 80
5.5.1 Hatley-Pirbhai建模 80
5.5.2 UML系统建模 82
5.6 小结 84
参考文献 85
习题与思考题 85
推荐读物与阅读信息 86
第6章 需求工程 87
6.1 连接设计和构造的桥梁 88
6.2 需求工程任务 88
6.2.1 起始 89
6.2.2 导出 89
6.2.3 精化 90
6.2.4 协商 90
6.2.5 规格说明 90
6.2.6 确认 91
6.2.7 需求管理 91
6.3 启动需求工程过程 93
6.3.1 确认共利益者 93
6.3.2 识别多种观点 93
6.3.3 协同合作 94
6.3.4 首次提问 94
6.4 导出需求 95
6.4.1 协同需求收集 95
6.4.2 质量功能部署 98
6.4.3 用户场景 99
6.4.4 导出工作产品 100
6.5 开发用例 100
6.6 小结 104
参考文献 104
习题与思考题 105
推荐读物与阅读信息 106
第7章 构建分析模型 107
7.1 需求分析 108
7.1.1 整体目标和原理 108
7.1.2 分析的经验原则 109
7.1.3 域分析 109
7.2 分析建模的方法 110
7.3 数据建模概念 111
7.3.1 数据对象 111
7.3.2 数据属性 111
7.3.3 关系 112
7.3.4 基数和形态 113
7.4 面向对象的分析 114
7.5 基于场景建模 115
7.5.1 编写用例 115
7.5.2 开发活动图 120
7.5.3 泳道图 121
7.6 面向流的建模 121
7.6.1 创建数据流模型 122
7.6.2 创建控制流模型 124
7.6.3 控制规格说明 125
7.6.4 处理规格说明 126
7.7 基于类的建模 127
7.7.1 识别分析类 128
7.7.2 描述属性 130
7.7.3 定义操作 130
7.7.4 CRC建模 132
7.7.5 关联和依赖 137
7.7.6 分析包 138
7.8 生成行为模型 139
7.8.1 识别用例事件 139
7.8.2 状态表现 139
7.9 小结 142
参考文献 143
习题与思考题 143
推荐读物与阅读信息 144
第8章 设计工程 146
8.1 软件工程中的设计 147
8.2 设计过程和设计质量 148
8.3 设计概念 151
8.3.1 抽象 151
8.3.2 体系结构 151
8.3.3 模式 152
8.3.4 模块化 152
8.3.5 信息隐蔽 153
8.3.6 功能独立 154
8.3.7 求精 154
8.3.8 重构 155
8.3.9 设计类 156
8.4 设计模型 158
8.4.1 数据设计元素 158
8.4.2 体系结构设计元素 159
8.4.3 接口设计元素 159
8.4.4 构件级设计元素 160
8.4.5 部署级设计元素 161
8.5 基于模式的软件设计 162
8.5.1 描述设计模式 162
8.5.2 在设计中使用模式 163
8.5.3 框架 163
8.6 小结 164
参考文献 164
习题与思考题 165
推荐读物与阅读信息 165
第9章 进行体系结构设计 167
9.1 软件体系结构 168
9.1.1 什么是体系结构 168
9.1.2 为什么体系结构如此重要 169
9.2 数据设计 169
9.2.1 体系结构级的数据设计 169
9.2.2 构件级的数据设计 170
9.3 体系结构风格和模式 171
9.3.1 体系结构风格的简单分类 171
9.3.2 体系结构模式 174
9.3.3 组织和求精 175
9.4 体系结构设计 176
9.4.1 系统的环境表示 176
9.4.2 定义原始模型 177
9.4.3 将体系结构精化为构件 178
9.4.4 描述系统实例 179
9.5 评估可选的体系结构设计 180
9.5.1 体系结构权衡分析方法 180
9.5.2 体系结构复杂性 182
9.5.3 体系结构描述语言 182
9.6 映射数据流到软件体系结构 183
9.6.1 变换流 183
9.6.2 事务流 183
9.6.3 变换映射 183
9.6.4 事务映射 189
9.6.5 精化体系结构设计 192
9.7 小结 192
参考文献 193
习题与思考题 193
推荐读物与阅读信息 194
第10章 构件级设计建模 196
10.1 什么是构件 197
10.1.1 面向对象的观点 197
10.1.2 传统观点 198
10.1.3 过程相关的观点 200
10.2 设计基于类的构件 201
10.2.1 基本设计原则 201
10.2.2 构件级设计指导方针 204
10.2.3 内聚性 204
10.2.4 耦合性 206
10.3 实施构件级设计 208
10.4 对象约束语言 212
10.5 设计传统构件 214
10.5.1 图形化设计表示 214
10.5.2 表格式设计表示 215
10.5.3 程序设计语言 216
10.5.4 设计表示方法的比较 217
10.6 小结 218
参考文献 218
习题与思考题 219
推荐读物与阅读信息 219
第11章 完成用户界面设计 221
11.1 黄金规则 222
11.1.1 置用户于控制之下 222
11.1.2 减轻用户的记忆负担 223
11.1.3 保持界面一致 224
11.2 用户界面的分析与设计 225
11.2.1 用户界面分析和设计模型 225
11.2.2 用户界面分析和设计过程 226
11.3 界面分析 228
11.3.1 用户分析 228
11.3.2 任务分析和建模 229
11.3.3 显示内容分析 233
11.3.4 工作环境分析 233
11.4 界面设计步骤 234
11.4.1 应用界面设计步骤 234
11.4.2 用户界面设计模式 236
11.4.3 设计问题 237
11.5 设计评估 240
11.6 小结 241
参考文献 242
习题与思考题 242
推荐读物与阅读信息 243
第12章 软件测试策略 244
12.1 软件测试的策略性方法 245
12.1.1 验证与确认 245
12.1.2 软件测试的组织 246
12.1.3 传统软件体系结构的测试策略 247
12.1.4 面向对象软件体系结构的测试
策略 248
12.1.5 测试完成的标准 249
12.2 策略问题 249
12.3 传统软件的测试策略 250
12.3.1 单元测试 250
12.3.2 集成测试 252
12.4 面向对象软件的测试策略 257
12.4.1 面向对象环境中的单元测试 257
12.4.2 面向对象环境中的集成测试 257
12.5 确认测试 258
12.5.1 确认测试准则 258
12.5.2 配置评审 258
12.5.3 a测试与b测试 258
12.6 系统测试 260
12.6.1 恢复测试 260
12.6.2 安全测试 260
12.6.3 压力测试 261
12.6.4 性能测试 261
12.7 调试技巧 262
12.7.1 调试过程 262
12.7.2 心理因素 263
12.7.3 调试策略 264
12.7.4 错误改正 266
12.8 小结 266
参考文献 266
习题与思考题 267
推荐读物与阅读信息 268
第13章 测试战术 269
13.1 软件测试基础 270
13.2 黑盒测试与白盒测试 271
13.3 白盒测试 272
13.4 基本路径测试 272
13.4.1 流图表示 272
13.4.2 独立程序路径 274
13.4.3 导出测试用例 275
13.5 控制结构测试 277
13.5.1 条件测试 277
13.5.2 数据流测试 277
13.5.3 循环测试 278
13.6 黑盒测试 279
13.6.1 等价划分 279
13.6.2 边界值分析 280
13.7 面向对象测试方法 281
13.7.1 面向对象概念的测试用例设计
的含义 281
13.7.2 传统测试用例设计方法的可
应用性 282
13.7.3 基于故障的测试 282
13.7.4 测试用例与类层次 282
13.7.5 基于场景的测试 283
13.8 类级可应用的测试方法 284
13.8.1 面向对象的随机测试 284
13.8.2 类级的划分测试 285
13.9 类间测试用例设计 286
13.9.1 多类测试 286
13.9.2 从行为模型中导出的测试 287
13.10 小结 288
参考文献 289
习题与思考题 289
推荐读物与阅读信息 290
第14章 产品度量 292
14.1 软件质量 293
14.1.1 McCall的质量因素 293
14.1.2 ISO 9126质量因素 294
14.1.3 向量化视图变迁 295
14.2 产品度量框架 295
14.2.1 测度、度量和指标 295
14.2.2 产品度量的挑战 296
14.2.3 测量原则 296
14.2.4 面向目标的软件测量 297
14.2.5 有效软件度量的属性 298
14.2.6 产品度量全景 298
14.3 小结 300
参考文献 300
习题与思考题 300
推荐读物与阅读信息 300
第三部分 管理软件项目
第15章 项目管理 304
15.1 管理涉及的范围 305
15.1.1 人员 305
15.1.2 产品 305
15.1.3 过程 306
15.1.4 项目 306
15.2 人员 306
15.2.1 共利益者 307
15.2.2 团队负责人 307
15.2.3 软件团队 308
15.2.4 敏捷团队 310
15.2.5 协调和通信问题 311
15.3 产品 312
15.3.1 软件范围 312
15.3.2 问题分解 312
15.4 过程 313
15.4.1 合并产品和过程 313
15.4.2 过程分解 314
15.5 项目 315
15.6 W5HH原则 316
15.7 关键实践 317
15.8 小结 317
参考文献 318
习题与思考题 318
推荐读物与阅读信息 319
第16章 过程和项目度量 321
16.1 过程领域和项目领域中的度量 322
16.1.1 过程度量和软件过程改进 322
16.1.2 项目度量 323
16.2 软件测量 325
16.2.1 面向规模的度量 325
16.2.2 面向功能的度量 326
16.2.3 调和代码行和功能点的度量
方法 327
16.2.4 面向对象的度量 328
16.2.5 面向用例的度量 329
16.3 软件质量度量 330
16.3.1 测量质量 330
16.3.2 缺陷排除效率 331
16.4 小结 332
参考文献 333
习题与思考题 333
推荐读物与阅读信息 334
第17章 估算 335
17.1 对估算的观察 336
17.2 项目策划过程 336
17.3 软件范围和可行性 337
17.4 资源 338
17.4.1 人力资源 338
17.4.2 可复用软件资源 339
17.4.3 环境资源 339
17.5 软件项目估算 340
17.6 分解技术 340
17.6.1 软件规模估算 341
17.6.2 基于问题的估算 341
17.6.3 基于LOC估算的实例 342
17.6.4 基于FP估算的实例 344
17.6.5 基于过程的估算 345
17.6.6 基于过程估算的实例 346
17.6.7 基于用例的估算 346
17.6.8 基于用例的估算实例 347
17.6.9 调和不同的估算方法 348
17.7 经验估算模型 349
17.7.1 估算模型的结构 349
17.7.2 COCOMO II模型 350
17.7.3 软件方程式 351
17.8 面向对象项目的估算 352
17.9 小结 352
参考文献 353
习题与思考题 353
推荐读物与阅读信息 354
第18章 项目进度安排 355
18.1 基本概念 356
18.2 项目进度安排 357
18.2.1 基本原则 358
18.2.2 人员与工作量之间的关系 359
18.2.3 工作量分配 360
18.3 为软件项目定义任务集 361
18.3.1 任务集举例 361
18.3.2 主要任务的求精 362
18.4 定义任务网络 363
18.5 进度安排 363
18.5.1 时序图 365
18.5.2 跟踪进度 366
18.5.3 跟踪OO项目的进展 367
18.6 获得值分析 368
18.7 小结 369
参考文献 370
习题与思考题 370
推荐读物与阅读信息 371
第19章 风险管理 372
19.1 被动风险策略和主动风险策略 373
19.2 软件风险 373
19.3 风险识别 374
19.3.1 评估整体项目风险 375
19.3.2 风险因素和驱动因子 376
19.4 风险预测 377
19.4.1 建立风险表 377
19.4.2 评估风险影响 378
19.5 风险求精 380
19.6 风险缓解、监测和管理 381
19.7 RMMM计划 382
19.8 小结 384
参考文献 384
习题与思考题 384
推荐读物与阅读信息 385
第20章 质量管理 387
20.1 质量概念 388
20.1.1 质量 388
20.1.2 质量控制 389
20.1.3 质量保证 389
20.1.4 质量成本 389
20.2 软件质量保证 390
20.2.1 背景 391
20.2.2 SQA活动 391
20.3 软件评审 392
20.3.1 软件缺陷对成本的影响 393
20.3.2 缺陷放大和消除 393
20.4 正式技术评审 395
20.4.1 评审会议 395
20.4.2 评审报告和记录保存 396
20.4.3 评审指导原则 396
20.4.4 样本驱动评审 397
20.5 SQA的形式化方法 399
20.6 基于统计的软件质量保证 399
20.6.1 一个普通的例子 399
20.6.2 软件工程中的六西格玛 400
20.7 软件可靠性 401
20.7.1 可靠性和可用性的测量 401
20.7.2 软件安全 402
20.8 ISO 9000质量标准 403
20.9 SQA计划 404
20.10 小结 405
参考文献 406
习题与思考题 407
推荐读物与阅读信息 407
第21章 变更管理 409
21.1 软件配置管理 410
21.1.1 SCM场景 410
21.1.2 配置管理系统元素 411
21.1.3 基线 411
21.1.4 软件配置项 412
21.2 SCM中心存储库 413
21.2.1 中心存储库的作用 414
21.2.2 一般特征和内容 414
21.2.3 SCM特征 414
21.3 SCM过程 416
21.3.1 软件配置中对象的标识 416
21.3.2 版本控制 417
21.3.3 变更控制 418
21.3.4 配置审核 421
21.3.5 状态报告 422
21.4 小结 422
参考文献 423
习题与思考题 424
推荐读物与阅读信息 424

教学资源推荐
作者: 黄松 洪宇 郑长友 朱卫星 编著
作者: 赵翀 孙宁 编著 贲可荣 主审
参考读物推荐
作者: (美)Ken Howard Barry Rogers 著
作者: Dennis M.Ahern, Aaron Clouse, Richard Turnet
作者: (美)Kent Beck; Cynthia Andres 著