软件工程:实践者的研究方法(原书第8版)
作者 : [美]罗杰 S.普莱斯曼(Roger S. Pressman) 布鲁斯 R. 马克西姆(Bruce R. Maxim) 著
译者 : 郑人杰 马素霞 等译
丛书名 : 计算机科学丛书
出版日期 : 2016-11-02
ISBN : 978-7-111-54897-3
定价 : 99.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 686
开本 : 16
原书名 : Software Engineering: A Practitioner's Approach, Eighth Edition
原出版社: McGraw-Hill
属性分类: 教材
包含CD :
绝版 :
图书简介

本书的各个版本一直都是软件专业人士熟悉的读物,在国际软件工程界享有无可质疑的权威地位。它在全面而系统、概括而清晰地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。此外,本书在给出传统的、对学科发展具有深刻影响的方法时,又适当地介绍了当前正在发展的、具有生命力的新技术。

图书特色

本书是软件工程领域的经典权威著作,自第1版出版至今,30多年来在软件工程界产生了巨大而深远的影响。第8版在继承之前版本风格与优势的基础上,不仅更新了全书内容,而且优化了篇章结构。本书共五个部分,涵盖软件过程、建模、质量管理、项目管理等主题,对概念、原则、方法和工具的介绍细致、清晰且实用。此外,书中提供了丰富的辅助阅读资源并配有网络资源(www.mhhe.com/pressman)。

重点与更新。突出软件质量管理的相关内容,同时加强了软件过程部分。与时俱进的内容包括移动App开发、软件系统安全性和软件工程对人员的要求。
组织与结构。每章开篇给出“要点浏览”和“关键概念”,最后给出“小结”“习题与思考题”以及“扩展阅读与信息资源”,章中贯穿的辅助阅读信息包括SafeHome对话框、软件工具、引述、关键点、网络资源等。
教学与自学。新的篇章结构更便于教师针对不同课程选取素材,同时,全面的知识点和丰富的扩展资源不仅易于初学者掌握基础理论,而且可供有兴趣的读者进行深入研究。

罗杰 S. 普莱斯曼(Roger S. Pressman) 软件工程界国际知名的顾问和作家,作为工程师、经理人、教授、演讲家和企业家奋战在这一领域已余40年。现任一家咨询公司的总裁,致力于协助企业建立有效的软件工程实践。还是一家创业公司的创始人,专注于为特斯拉Model S系列电动车生产定制产品。
布鲁斯 R. 马克西姆(Bruce R. Maxim) 曾任软件工程师、项目经理、教授、作家和咨询师,研究兴趣涉及软件工程、人机交互、游戏设计及教育等领域,曾任某游戏开发公司的首席技术官。现任密歇根大学迪尔伯恩分校副教授,为该校工程与计算机科学学院建立了游戏实验室。

图书前言

如果有这样一款计算机软件,它能满足用户的需求,能在相当长的时间内无故障地运行,修改起来轻松便捷,使用起来更是得心应手,那么,这款软件必定是成功的,它切实改善了我们的生活。但是,如果有这样一款软件,它令用户失望,错误频出,修改起来困难重重,使用起来更是举步维艰,那么,这必定是一款失败的软件,它使我们的生活一团糟。谁都希望开发出优秀的软件,为我们的生活带来便利,而不是把自己陷入失败的深渊。要想使软件获得成功,在设计和构建软件时就需要有规范,需要采用工程化的方法。
自本书第1版问世以来的近35年中,软件工程已经从少数倡导者提出的一些朦胧概念发展成为一门正规的工程学科,已被公认为是一个值得深入研究、认真学习和热烈讨论的课题。在整个行业中,软件工程师已经代替程序员成为人们优先选择的工作岗位,软件过程模型、软件工程方法和软件工具都已在全行业的所有环节成功采用。
尽管管理人员和一线专业人员都承认需要有更为规范的软件方法,但他们却始终在争论应该采用什么样的规范。有许多个人和公司至今仍在杂乱无章地开发着自己的软件,甚至即使他们正在开发的系统要服务于当今最为先进的技术,状况也仍是如此。许多专业人员和学生并不了解现代方法,这导致他们所开发的软件质量很差,因而造成了严重的后果。此外,有关软件工程方法真实本质的争论一直持续进行着。软件工程的地位问题已成为一门对比研究课题。人们对软件工程的态度已经有所改善,研究工作已取得了进展,不过要成为一门完全成熟的学科,我们还有大量的工作要做。
我们希望本书能够成为引导读者进入正在走向成熟的软件工程学科的入门读物,和以前的7个版本一样,第8版对学生和专业人员同样具有很强的吸引力。它既是软件专业人员的工作指南,也是高年级本科生和一年级研究生的综合性参考书。
第8版中包含了许多新的内容,它绝不只是前一版的简单更新。这一版不仅对内容做了适当的修改,而且调整了全书的结构,以改进教学顺序;同时更加强调一些新的和重要的软件工程过程和软件工程实践知识。此外,本书进一步加强了“支持系统”,为学生、教师和专业人员提供了更为丰富的知识资源。读者可访问专门为本书建立的网站(www.mhhe.com/pressman)查阅这些信息。
篇章结构
本书共39章,分为五个部分。这种划分有利于那些无法在一个学期内讲完全书内容的教师灵活安排教学。
第一部分“软件过程”给出了有关软件过程的各种不同观点,讨论了所有重要的过程模型,还涉及惯用过程和敏捷过程在指导思想上的分歧。第二部分“建模”给出了分析方法和设计方法,重点讲解面向对象方法和UML建模,同时也介绍了基于模式的设计以及基于WebApp和移动App的设计。第三部分“质量管理”介绍了有关质量管理的概念、规程、技术和方法,使得软件团队能够很好地评估软件质量,评审软件工程工作产品,实施软件质量保证规程,并正确地运用有效的测试策略和战术。此外,这一部分还讨论了形式化建模和验证方法。第四部分“管理软件项目”介绍了与计划、管理和控制软件开发项目的人员有关的问题。第五部分“软件工程高级课题”讨论了软件过程改进和软件工程的发展趋势。
第8版沿用了前面几个版本的做法,在各章中都提供了大量的辅助阅读信息,包括一个虚拟软件团队在工作中遇到困难时展开的对话,还包括对各章相关知识给出的补充方法和工具。
第8版中五个部分的划分有利于教师根据学时和教学要求安排课堂内容。在一个学期内可以安排一个部分的内容,也可以安排多个部分的内容。软件工程概论课程可以从五个部分中选择若干章作为教材。侧重分析和设计的软件工程课程可以从第一部分和第二部分中选取素材。面向测试的软件工程课程则可以从第一部分和第三部分中选取素材,还应加上第二部分中的一些内容。侧重管理的课程应突出第一部分和第四部分的内容。我们用上述方式组织第8版的内容,意在给教师提供多种教学安排的选择。但无论如何选择这些内容,都可以从“支持系统”中获得补充资源。
相关资源
学生资源
本书为学生提供的各种学习资料包括:在线学习中心提供的各章学习指南,实践测验,题解以及多种在线资源(软件工程检查单、一套正在演化的微型工具、综合案例研究和工作产品模板等)。此外,1000多种网络参考文献可供学生更深入地探究软件工程问题,还有500多篇可下载的参考文献,这些都为读者提供了关于高级软件工程课题的更为详尽的信息。
教师资源
本书为教师提供的各种教学资料包括:在线(也可下载)教师指南,由700多个PPT组成的教辅资源和试题库。当然,学生资源(如微型工具、网络参考文献及可下载参考文献)和专业人员资源也可供教师使用。
在本书的教师指南中,我们为各种类型的软件工程课程提出了建议,介绍了与课程配合开展的软件项目、部分问题的题解和许多有用的教学辅助工具。
专业人员资源
本书为产业界专业人员(也包括在校学生)提供的各种资料包括:软件工程文档和其他工作产品的大纲和模板,一套有用的软件工程检查单,软件工程工具目录,综合性网络资料以及用于软件工程过程具体任务划分的“通用过程模型”。
由于有了在线支持系统的配合,使得本书既有内容上的深度,又有一定的灵活性,这些优势是传统的教科书所无法比拟的。
布鲁斯·马克西姆(Bruce Maxim)为这一版贡献了新的力量,他不仅具备丰富的软件工程知识,还带来了新的内容和洞见,这些对于读者来说将是十分宝贵的。
致谢
我们要特别感谢渥太华大学的Tim Lethbridge,他帮助我们开发了UML和OCL的案例,以及配合本书内容的其他案例研究。Colby学院的Dale Skrien开发了附录1的UML教辅资源。他们的帮助和意见都是十分宝贵的。此外也感谢高级软件工程师Austin Krauss,他提供了关于视频游戏产业软件开发的宝贵意见。同时,要对为第8版评审做出贡献的几位教授表示感谢,他们是佛罗里达大学的Manuel E. Bermudez、堪萨斯州立大学的Scott DeLoach、密歇根州立大学的Alex Liu和犹他州立大学的Dean Mathias。正是他们的详尽而真诚的评审意见帮助了我们,使得本书更加完善。
特别感谢
十分高兴有机会与罗杰合作,参与本书第8版的撰写工作。在此期间我的儿子Benjamin推出了他的第一款移动App,我的女儿Katherine开始了她的室内设计生涯。我十分高兴地看到他们已经长大成人。同时非常感谢妻子Norma,她热情地支持我,使我能够将所有空闲时间都投入本书的写作。
布鲁斯R. 马克西姆(Bruce R. Maxim)
随着本书各版本的不断推出,我的两个儿子Mathew和Michael也逐渐从小男孩成长为男子汉。他们在生活中的成熟、品格和成功鼓舞着我,没有什么比这更让我自豪了。他们现在也已经有了自己的孩子——Maya和 Lily,这两个女孩已经是移动计算时代新智能设备方面的奇才。最后要感谢妻子Barbara,她宽容我花费如此多的时间在办公室工作,并且还鼓励我继续写作本书的下一个版本。
罗杰 S.普莱斯曼(Roger S. Pressman)

上架指导

计算机\软件工程

封底文字

本书是软件工程领域的经典权威著作,自第1版出版至今,30多年来在软件工程界产生了巨大而深远的影响。第8版在继承之前版本风格与优势的基础上,不仅更新了全书内容,而且优化了篇章结构。本书共五个部分,涵盖软件过程、建模、质量管理、项目管理等主题,对概念、原则、方法和工具的介绍细致、清晰且实用。此外,书中提供了丰富的辅助阅读资源并配有网络资源(www.mhhe.com/pressman)。

本书特色
·重点与更新。突出软件质量管理的相关内容,同时加强了软件过程部分。与时俱进的内容包括移动App开发、软件系统安全性和软件工程对人员的要求。
·组织与结构。每章开篇给出“要点浏览”和“关键概念”,最后给出“小结”“习题与思考题”以及“扩展阅读与信息资源”,章中贯穿的辅助阅读信息包括SafeHome对话框、软件工具、引述、关键点、网络资源等。
·教学与自学。新的篇章结构更便于教师针对不同课程选取素材,同时,全面的知识点和丰富的扩展资源不仅易于初学者掌握基础理论,而且可供有兴趣的读者进行深入研究。

作者简介

[美]罗杰 S.普莱斯曼(Roger S. Pressman) 布鲁斯 R. 马克西姆(Bruce R. Maxim) 著:【加照片,同48950】
罗杰 S. 普莱斯曼(Roger S. Pressman)
软件工程界国际知名的顾问和作家,作为工程师、经理人、教授、演讲家和企业家奋战在这一领域已余40年。现任一家咨询公司的总裁,致力于协助企业建立有效的软件工程实践。还是一家创业公司的创始人,专注于为特斯拉Model S系列电动车生产定制产品。

布鲁斯 R. 马克西姆(Bruce R. Maxim)
曾任软件工程师、项目经理、教授、作家和咨询师,研究兴趣涉及软件工程、人机交互、游戏设计及教育等领域,曾任某游戏开发公司的首席技术官。现任密歇根大学迪尔伯恩分校副教授,为该校工程与计算机科学学院建立了游戏实验室。

译者简介

郑人杰 马素霞 等译:暂无简介

译者序

本书是国际知名软件工程专家罗杰 S. 普莱斯曼(Roger S. Pressman)的最新著作。自35年前第1版问世以来,这本书在软件工程界产生了巨大而深远的影响。其权威性是无可置疑的,在培养软件工程专业人才方面所起的作用也是显而易见的。在这一版中,新加入的布鲁斯(Bruce)作为第二作者参与了本书的编写工作。
我自20世纪80年代中期开始从事高校软件工程方面的教学与科研工作,多年来,这本书的各个版本一直是我的重要参考书,它给了我许多启发和帮助,我也曾多次向许多业界好友和学生推荐此书。
如今基于计算机的系统已经广泛而深入地渗透到经济、国防和人们日常生活的各个领域,特别是在互联网的推动下,不仅许多行业得以改进和更新,而且产生了一批新的行业,展现了全新的业态。我们必须意识到,在计算机不断向社会的深度和广度层面发展的过程中,软件始终处在系统的核心地位,起着中枢和灵魂的作用,而且这种作用正日益突出。因此,如何为现代化系统配备合格和优良的软件也就更加受到人们的广泛关注。
本书系统地论证了软件工程领域的基本知识和最新研究成果,包括新的概念、原则、技术、方法和工具。同时书中还为读者提供了进一步学习和研究的线索,包括许多可供利用的网上资料和信息。与第7版相比,本版继承了一些优点,同时也做了一些改动、扩充和更新。
本书特点
1. 全书内容分为五个部分,共39章,还包括三个附录。五个部分的内容分别为软件过程、建模、质量管理、管理软件项目以及软件工程高级课题。
2. 本书继承了前一版的特色,突出了软件质量管理的内容,同时也加强了软件过程部分。此外,增加的内容还包括:软件工程工作对人员的要求;近年来软件产业发展中出现的新课题——移动App和软件系统安全性。
3. 仍然在各章的开头给出“要点浏览”(包括概念、人员、重要性、步骤、工作产品和质量保证措施)以及“关键概念”(全章内容的关键词)。
4. 仍然在各章的末尾给出“小结”“习题与思考题”以及“扩展阅读与信息资源”,这些都非常适合有兴趣、有需要的读者沿着所提供的线索开展进一步的学习和研究。
5. 仍然保留了本书历次版本在各章中为读者提供的多种形式的辅助阅读信息,可以说这是本书的一个突出特点。这些信息从形式上分为两类:一类是采用通栏形式的说明框,包括要点浏览、信息栏、软件工具和SafeHome对话框等;另一类是居于页面右侧的说明框,包括关键概念、引述、建议、关键点、提问和网络资源。这些说明框非常有益于读者理解和进一步探索相关内容。
读者对象
本书仍然面向三类读者,即高校学生(特别是研究生)、教师和专业软件技术人员。总体而言,本书适合作为高校计算机或信息技术相关专业的教学用书,特别适合为软件工程课程提供教学服务。
对于采用本书作为教材的教师,在此提供几点建议:
1. 由于学时所限,不可能将本书的全部内容纳入教学,因此从中选取适合的部分是必然的。可以对软件管理部分做一些压缩,但即使如此,我认为也不可把有关管理的内容完全删除。
2. 近年来软件工程领域出现了许多新技术和新方法,作者已将其及时引入书中。但请教师注意,对于初学者来说,牢固地掌握基本概念、基本技能和方法仍然十分重要。
译者说明
参与本书翻译工作的译者以华北电力大学和清华大学的教师为主,也有少数软件企业和中国软件行业协会的研究人员。他们是:马素霞(第1~4章、22~25章、28章及附录1~3)、宋兰(第7~11章及29章)、石敏(第12、13章)、周长玉(第14、15章)、吴爽(第16~18章)、韩新启(第19~21章)、王海青(第30章及35~39章)、王素琴(第31~34章)。此外,刘瑾完成了第5、6章的翻译工作。我负责第26、27章以及前言和作者简介部分。在翻译过程中,我们得到了华北电力大学控制与计算机工程学院洪海、熊里、赵敏、李树超、高晶晶、吕骁同学的帮助,在此对他们的辛勤劳动表示感谢。我对全部译稿、马素霞教授对大部分译稿做了仔细审核与修改,并更正了原书中个别的错漏之处。
本书英文版有900多页,翻译工作量巨大,而译者均有繁重的本职工作,时间并不宽松,因此译文中难免有不当之处,敬请读者见谅并不吝指正。
总之,这是一本非常优秀的软件工程读物,本人十分高兴地向国内读者推荐。我们相信,认真阅读它,定会使你获益匪浅。

郑人杰
2016年7月

图书目录

出版者的话
译者序
前言
作者简介
第1章 软件的本质  1
1.1 软件的本质  3
1.1.1 定义软件  3
1.1.2 软件应用领域  4
1.1.3 遗留软件  5
1.2 软件的变更本质  6
1.2.1 WebApp  6
1.2.2 移动 App  7
1.2.3 云计算  7
1.2.4 产品线软件  8
1.3 小结  8
习题与思考题  8
扩展阅读与信息资源  9
第2章 软件工程  10
2.1 定义软件工程学科  11
2.2 软件过程  11
2.2.1 过程框架  12
2.2.2 普适性活动  12
2.2.3 过程的适应性调整  13
2.3 软件工程实践  13
2.3.1 实践的精髓  14
2.3.2 通用原则  14
2.4 软件开发神话  16
2.5 这一切是如何开始的  18
2.6 小结  19
习题与思考题  19
扩展阅读与信息资源  19
第一部分 软件过程
第3章 软件过程结构  22
3.1 通用过程模型  23
3.2 定义框架活动  24
3.3 明确任务集  24
3.4 过程模式  25
3.5 过程评估与改进  27
3.6 小结  28
习题与思考题  28
扩展阅读与信息资源  28
第4章 过程模型  29
4.1 惯用过程模型  30
4.1.1 瀑布模型  30
4.1.2 增量过程模型  32
4.1.3 演化过程模型  32
4.1.4 并发模型  36
4.1.5 演化过程的最终评述  37
4.2 专用过程模型  38
4.2.1 基于构件的开发  38
4.2.2 形式化方法模型  39
4.2.3 面向方面的软件开发  39
4.3 统一过程  40
4.3.1 统一过程的简史  41
4.3.2 统一过程的阶段  41
4.4 个人过程模型和团队过程模型  42
4.4.1 个人软件过程  42
4.4.2 团队软件过程  43
4.5 过程技术  44
4.6 产品和过程  45
4.7 小结  46
习题与思考题  46
扩展阅读与信息资源  47
第5章 敏捷开发  48
5.1 什么是敏捷  49
5.2 敏捷及变更成本  50
5.3 什么是敏捷过程  50
5.3.1 敏捷原则  51
5.3.2 敏捷开发战略  52
5.4 极限编程  52
5.4.1 极限编程过程  52
5.4.2 工业极限编程  54
5.5 其他敏捷过程模型  56
5.5.1 Scrum  56
5.5.2 动态系统开发方法  57
5.5.3 敏捷建模  58
5.5.4 敏捷统一过程  59
5.6 敏捷过程工具集  60
5.7 小结  61
习题与思考题  61
扩展阅读与信息资源  62
第6章 软件工程的人员方面  64
6.1 软件工程师的特质  64
6.2 软件工程心理学  65
6.3 软件团队  66
6.4 团队结构  67
6.5 敏捷团队  68
6.5.1 通用敏捷团队  68
6.5.2 XP团队  69
6.6 社交媒体的影响  70
6.7 软件工程中云的应用  71
6.8 协作工具  71
6.9 全球化团队  72
6.10 小结  73
习题与思考题  73
扩展阅读与信息资源  74
第二部分 建模
第7章 指导实践的原则  76
7.1 软件工程知识  77
7.2 核心原则  77
7.2.1 指导过程的原则  78
7.2.2 指导实践的原则  78
7.3 指导每个框架活动的原则  80
7.3.1 沟通原则  80
7.3.2 策划原则  81
7.3.3 建模原则  83
7.3.4 构建原则  87
7.3.5 部署原则  89
7.4 工作实践  90
7.5 小结  91
习题与思考题  92
扩展阅读与信息资源  92
第8章 理解需求  94
8.1 需求工程  95
8.2 建立根基  100
8.2.1 确认利益相关者  100
8.2.2 识别多重观点  100
8.2.3 协同合作  101
8.2.4 首次提问  101
8.2.5 非功能需求  102
8.2.6 可追溯性  102
8.3 获取需求  103
8.3.1 协作收集需求  103
8.3.2 质量功能部署  105
8.3.3 使用场景  106
8.3.4 获取工作产品  106
8.3.5 敏捷需求获取  107
8.3.6 面向服务的方法  107
8.4 开发用例  107
8.5 构建分析模型  111
8.5.1 分析模型的元素  112
8.5.2 分析模式  114
8.5.3 敏捷需求工程  114
8.5.4 自适应系统的需求  114
8.6 协商需求  115
8.7 需求监控  116
8.8 确认需求  117
8.9 避免常见错误  117
8.10 小结  118
习题与思考题  118
扩展阅读与信息资源  119
第9章 需求建模:基于场景的
方法  121
9.1 需求分析  122
9.1.1 总体目标和原理  122
9.1.2 分析的经验原则  123
9.1.3 域分析  123
9.1.4 需求建模的方法  125
9.2 基于场景建模  126
9.2.1 创建初始用例  126
9.2.2 细化初始用例  128
9.2.3 编写正式用例  129
9.3 补充用例的UML模型  131
9.3.1 开发活动图  131
9.3.2 泳道图  132
9.4 小结  133
习题与思考题  133
扩展阅读与信息资源  133
第10章 需求建模:基于类的方法  135
10.1 识别分析类  135
10.2 描述属性  138
10.3 定义操作  138
10.4 类–职责–协作者建模  140
10.5 关联和依赖  145
10.6 分析包  145
10.7 小结  146
习题与思考题  146
扩展阅读与信息资源  146
第11章 需求建模:行为、模式和Web /移动App  148
11.1 生成行为模型  148
11.2 识别用例事件  149
11.3 状态表达  149
11.4 需求建模的模式  152
11.4.1 发现分析模式  152
11.4.2 需求模式举例:执行器–传感器  153
11.5 Web /移动App的需求建模  156
11.5.1 多少分析才够用  156
11.5.2 需求建模的输入  157
11.5.3 需求建模的输出  157
11.5.4 内容模型  158
11.5.5 WebApp和移动App的交互模型  159
11.5.6 功能模型  159
11.5.7 WebApp的配置模型  160
11.5.8 导航建模  161
11.6 小结  161
习题与思考题  162
扩展阅读与信息资源  162
第12章 设计概念  163
12.1 软件工程中的设计  164
12.2 设计过程  166
12.2.1 软件质量指导原则和属性  166
12.2.2 软件设计的演化  168
12.3 设计概念  169
12.3.1 抽象  169
12.3.2 体系结构  169
12.3.3 模式  170
12.3.4 关注点分离  170
12.3.5 模块化  171
12.3.6 信息隐蔽  171
12.3.7 功能独立  172
12.3.8 求精  172
12.3.9 方面  173
12.3.10 重构  173
12.3.11 面向对象的设计概念  174
12.3.12 设计类  174
12.3.13 依赖倒置  176
12.3.14 测试设计  177
12.4 设计模型  177
12.4.1 数据设计元素  178
12.4.2 体系结构设计元素  178
12.4.3 接口设计元素  179
12.4.4 构件级设计元素  180
12.4.5 部署级设计元素  181
12.5 小结  181
习题与思考题  182
扩展阅读与信息资源  183
第13章 体系结构设计  184
13.1 软件体系结构  185
13.1.1 什么是体系结构  185
13.1.2 体系结构为什么重要  186
13.1.3 体系结构描述  186
13.1.4 体系结构决策  187
13.2 体系结构类型  188
13.3 体系结构风格  188
13.3.1 体系结构风格的简单分类  189
13.3.2 体系结构模式  191
13.3.3 组织和求精  192
13.4 体系结构考虑要素  192
13.5 体系结构决策  194
13.6 体系结构设计  194
13.6.1 系统环境的表示  195
13.6.2 定义原型  195
13.6.3 将体系结构细化为构件  196
13.6.4 描述系统实例  197
13.6.5 WebApp的体系结构设计  198
13.6.6 移动App的体系结构设计  198
13.7 评估候选的体系结构设计  199
13.7.1 体系结构描述语言  200
13.7.2 体系结构评审  201
13.8 经验学习  201
13.9 基于模式的体系结构评审  202
13.10 体系结构一致性检查  203
13.11 敏捷性与体系结构  203
13.12 小结  204
习题与思考题  205
扩展阅读与信息资源  205
第14章 构件级设计  207
14.1 什么是构件  208
14.1.1 面向对象的观点  208
14.1.2 传统的观点  209
14.1.3 过程相关的观点  211
14.2 设计基于类的构件  212
14.2.1 基本设计原则  212
14.2.2 构件级设计指导方针  214
14.2.3 内聚性  215
14.2.4 耦合性  216
14.3 实施构件级设计  217
14.4 WebApp的构件级设计  222
14.4.1 构件级内容设计  222
14.4.2 构件级功能设计  222
14.5 移动App的构件级设计  222
14.6 设计传统构件  223
14.7 基于构件的开发  223
14.7.1 领域工程  223
14.7.2 构件的合格性检验、适应性修改与组合  224
14.7.3 体系结构不匹配  225
14.7.4 复用的分析与设计  226
14.7.5 构件的分类与检索  226
14.8 小结  227
习题与思考题  228
扩展阅读与信息资源  228
第15章 用户界面设计  230
15.1 黄金规则  231
15.1.1 把控制权交给用户  231
15.1.2 减轻用户的记忆负担  232
15.1.3 保持界面一致  233
15.2 用户界面的分析和设计  234
15.2.1 用户界面分析和设计模型  234
15.2.2 过程  235
15.3 界面分析  236
15.3.1 用户分析  236
15.3.2 任务分析和建模  237
15.3.3 显示内容分析  240
15.3.4 工作环境分析  240
15.4 界面设计步骤  241
15.4.1 应用界面设计步骤  241
15.4.2 用户界面设计模式  243
15.4.3 设计问题  243
15.5 WebApp和移动App的界面设计  245
15.5.1 界面设计原则与指导方针  245
15.5.2 WebApp和移动App的界面设计工作流  248
15.6 设计评估  249
15.7 小结  250
习题与思考题  250
扩展阅读与信息资源  251
第16章 基于模式的设计  253
16.1 设计模式  254
16.1.1 模式的种类  255
16.1.2 框架  256
16.1.3 描述模式  257
16.1.4 模式语言和模式库  258
16.2 基于模式的软件设计  258
16.2.1 不同环境下基于模式的设计  258
16.2.2 用模式思考  259
16.2.3 设计任务  260
16.2.4 建立模式组织表  260
16.2.5 常见设计错误  261
16.3 体系结构模式  262
16.4 构件级设计模式  263
16.5 用户界面设计模式  264
16.6 WebApp设计模式  266
16.6.1 设计焦点  266
16.6.2 设计粒度  266
16.7 移动App模式  267
16.8 小结  268
习题与思考题  268
扩展阅读与信息资源  269
第17章 WebApp设计  271
17.1 WebApp设计质量  272
17.2 设计目标  273
17.3 WebApp设计金字塔  274
17.4 WebApp界面设计  274
17.5 美学设计  275
17.5.1 布局问题  276
17.5.2 平面设计问题  276
17.6 内容设计  277
17.6.1 内容对象  277
17.6.2 内容设计问题  278
17.7 体系结构设计  278
17.7.1 内容体系结构  279
17.7.2 WebApp体系结构  280
17.8 导航设计  281
17.8.1 导航语义  281
17.8.2 导航语法  283
17.9 构件级设计  283
17.10 小结  283
习题与思考题  284
扩展阅读与信息资源  284
第18章 移动App设计  286
18.1 挑战  287
18.1.1 开发因素  287
18.1.2 技术因素  288
18.2 开发移动App  289
18.2.1 移动App质量  290
18.2.2 用户界面设计  291
18.2.3 环境感知App  292
18.2.4 经验教训  293
18.3 移动App设计的最佳实践  294
18.4 移动开发环境  295
18.5 云  297
18.6 传统软件工程的适用性  298
18.7 小结  298
习题与思考题  299
扩展阅读与信息资源  299
第三部分 质量管理
第19章 质量概念  302
19.1 什么是质量  303
19.2 软件质量  304
19.2.1 Garvin的质量维度  304
19.2.2 McCall的质量因素  305
19.2.3 ISO 9126质量因素  306
19.2.4 定向质量因素  306
19.2.5 过渡到量化观点  307
19.3 软件质量困境  308
19.3.1 “足够好”的软件  308
19.3.2 质量的成本  309
19.3.3 风险  311
19.3.4 疏忽和责任  311
19.3.5 质量和安全  312
19.3.6 管理活动的影响  312
19.4 实现软件质量  313
19.4.1 软件工程方法  313
19.4.2 项目管理技术  313
19.4.3 质量控制  313
19.4.4 质量保证  313
19.5 小结  314
习题与思考题  314
扩展阅读与信息资源  314
第20章 评审技术  316
20.1 软件缺陷对成本的影响  317
20.2 缺陷的放大和消除  318
20.3 评审度量及其应用  319
20.3.1 分析度量数据  320
20.3.2 评审的成本效益  320
20.4 评审的正式程度  321
20.5 非正式评审  322
20.6 正式技术评审  323
20.6.1 评审会议  324
20.6.2 评审报告和记录保存  324
20.6.3 评审指导原则  325
20.6.4 样本驱动评审  326
20.7 产品完成后评估  327
20.8 小结  327
习题与思考题  327
扩展阅读与信息资源  328
第21章 软件质量保证  329
21.1 背景问题  330
21.2 软件质量保证的要素  330
21.3 软件质量保证的过程和产品特性  332
21.4 软件质量保证的任务、目标和度量  332
21.4.1 软件质量保证的任务  332
21.4.2 目标、属性和度量  333
21.5 软件质量保证的形式化方法  334
21.6 统计软件质量保证  335
21.6.1 一个普通的例子  335
21.6.2 软件工程中的六西格玛  336
21.7 软件可靠性  337
21.7.1 可靠性和可用性的测量  337
21.7.2 软件安全  338
21.8 ISO 9000质量标准  339
21.9 软件质量保证计划  340
21.10 小结  341
习题与思考题  341
扩展阅读与信息资源  341
第22章 软件测试策略  343
22.1 软件测试的策略性方法  344
22.1.1 验证与确认  344
22.1.2 软件测试组织  345
22.1.3 软件测试策略——宏观  346
22.1.4 测试完成的标准  347
22.2 策略问题  348
22.3 传统软件的测试策略  348
22.3.1 单元测试  348
22.3.2 集成测试  350
22.4 面向对象软件的测试策略  354
22.4.1 面向对象环境中的单元测试  354
22.4.2 面向对象环境中的集成测试  354
22.5 WebApp的测试策略  355
22.6 移动App的测试策略  355
22.7 确认测试  356
22.7.1 确认测试准则  356
22.7.2 配置评审  356
22.7.3 α测试和β测试  356
22.8 系统测试  358
22.8.1 恢复测试  358
22.8.2 安全测试  358
22.8.3 压力测试  358
22.8.4 性能测试  359
22.8.5 部署测试  359
22.9 调试技巧  360
22.9.1 调试过程  360
22.9.2 心理因素  361
22.9.3 调试策略  362
22.9.4 纠正错误  363
22.10 小结  363
习题与思考题  364
扩展阅读与信息资源  364
第23章 测试传统的应用软件  366
23.1 软件测试基础  367
23.2 测试的内部视角和外部视角  368
23.3 白盒测试  369
23.4 基本路径测试  369
23.4.1 流图表示  369
23.4.2 独立程序路径  371
23.4.3 生成测试用例  372
23.4.4 图矩阵  374
23.5 控制结构测试  375
23.6 黑盒测试  376
23.6.1 基于图的测试方法  376
23.6.2 等价类划分  378
23.6.3 边界值分析  378
23.6.4 正交数组测试  379
23.7 基于模型的测试  381
23.8 文档测试和帮助设施测试  381
23.9 实时系统的测试  382
23.10 软件测试模式  383
23.11 小结  384
习题与思考题  384
扩展阅读与信息资源  385
第24章 测试面向对象的应用  386
24.1 扩展测试的视野  387
24.2 测试OOA和OOD模型  387
24.2.1 OOA和OOD模型的正确性  388
24.2.2 面向对象模型的一致性  388
24.3 面向对象测试策略  389
24.3.1 面向对象环境中的单元测试  389
24.3.2 面向对象环境中的集成测试  390
24.3.3 面向对象环境中的确认测试  390
24.4 面向对象测试方法  390
24.4.1 面向对象概念的测试用例设计含义  391
24.4.2 传统测试用例设计方法的可应用性  391
24.4.3 基于故障的测试  391
24.4.4 基于场景的测试设计  392
24.5 类级可应用的测试方法  392
24.5.1 面向对象类的随机测试  392
24.5.2 类级的划分测试  393
24.6 类间测试用例设计  394
24.6.1 多类测试  394
24.6.2 从行为模型导出的测试  395
24.7 小结  396
习题与思考题  396
扩展阅读与信息资源  397
第25章 测试WebApp  398
25.1 WebApp的测试概念  398
25.1.1 质量维度  399
25.1.2 WebApp环境中的错误  399
25.1.3 测试策略  400
25.1.4 测试计划  400
25.2 测试过程概述  401
25.3 内容测试  402
25.3.1 内容测试的目标  402
25.3.2 数据库测试  403
25.4 用户界面测试  404
25.4.1 界面测试策略  404
25.4.2 测试界面机制  405
25.4.3 测试界面语义  406
25.4.4 可用性测试  406
25.4.5 兼容性测试  408
25.5 构件级测试  409
25.6 导航测试  409
25.6.1 测试导航语法  409
25.6.2 测试导航语义   410
25.7 配置测试  411
25.7.1 服务器端问题  411
25.7.2 客户端问题  411
25.8 安全性测试  412
25.9 性能测试  413
25.9.1 性能测试的目标  413
25.9.2 负载测试  414
25.9.3 压力测试  414
25.10 小结  415
习题与思考题  416
扩展阅读与信息资源  417
第26章 测试移动App  418
26.1 测试准则  419
26.2 测试策略  420
26.2.1 传统方法适用吗  420
26.2.2 对自动化的要求  421
26.2.3 建立测试矩阵  422
26.2.4 压力测试  422
26.2.5 生产环境中的测试  423
26.3 与用户交互的各种情况  424
26.3.1 手语测试  425
26.3.2 语音输入和识别  425
26.3.3 虚拟键盘输入  425
26.3.4 警报和异常条件  426
26.4 跨界测试  426
26.5 实时测试问题  427
26.6 测试工具和环境  427
26.7 小结  428
习题与思考题  429
扩展阅读与信息资源  430
第27章 安全性工程  431
27.1 安全性需求分析  432
27.2 网络世界中的安全性与保密性  433
27.2.1 社交媒体  433
27.2.2 移动App  434
27.2.3 云计算  434
27.2.4 物联网  434
27.3 安全性工程分析  434
27.3.1 安全性需求获取  435
27.3.2 安全性建模  435
27.3.3 测度设计  436
27.3.4 正确性检查  436
27.4 安全性保证  437
27.4.1 安全性保证过程  437
27.4.2 组织和管理  438
27.5 安全性风险分析  438
27.6 传统软件工程活动的作用  440
27.7 可信性系统验证  441
27.8 小结  442
习题与思考题  443
扩展阅读与信息资源  443
第28章 形式化建模与验证  445
28.1 净室策略  446
28.2 功能规格说明  447
28.2.1 黑盒规格说明  448
28.2.2 状态盒规格说明  449
28.2.3 清晰盒规格说明  449
28.3 净室设计  449
28.3.1 设计细化  450
28.3.2 设计验证  450
28.4 净室测试  451
28.4.1 统计使用测试  451
28.4.2 认证  452
28.5 重新思考形式化方法  453
28.6 形式化方法的概念  454
28.7 其他争论  457
28.8 小结  457
习题与思考题  458
扩展阅读与信息资源  459
第29章 软件配置管理  460
29.1 软件配置管理概述  461
29.1.1 SCM场景  461
29.1.2 配置管理系统的元素  462
29.1.3 基线  463
29.1.4 软件配置项  464
29.1.5 依赖性和变更管理  464
29.2 SCM中心存储库  465
29.2.1 一般特征和内容  465
29.2.2 SCM特征  466
29.3 SCM过程  466
29.3.1 软件配置中的对象标识  467
29.3.2 版本控制  468
29.3.3 变更控制  469
29.3.4 影响管理  471
29.3.5 配置审核  472
29.3.6 状态报告  472
29.4 WebApp和移动App的配置管理  473
29.4.1 主要问题  473
29.4.2 配置对象  474
29.4.3 内容管理  475
29.4.4 变更管理  477
29.4.5 版本控制  479
29.4.6 审核和报告  479
29.5 小结  480
习题与思考题  481
扩展阅读与信息资源  481
第30章 产品度量  483
30.1 产品度量框架  484
30.1.1 测度、度量和指标  484
30.1.2 产品度量的挑战  484
30.1.3 测量原则  485
30.1.4 面向目标的软件测量  485
30.1.5 有效软件度量的属性  486
30.2 需求模型的度量  487
30.2.1 基于功能的度量  487
30.2.2 规格说明质量的度量  490
30.3 设计模型的度量  491
30.3.1 体系结构设计的度量  491
30.3.2 面向对象设计的度量  493
30.3.3 面向类的度量——CK度量集  493
30.3.4 面向类的度量——MOOD度量集  495
30.3.5 Lorenz和Kidd提出的面向对象的度量  496
30.3.6 构件级设计的度量  496
30.3.7 面向操作的度量  496
30.3.8 用户界面设计的度量  497
30.4 WebApp和移动App的设计度量  497
30.5 源代码的度量  499
30.6 测试的度量  500
30.6.1 用于测试的Halstead度量  500
30.6.2 面向对象测试的度量  500
30.7 维护的度量  501
30.8 小结  502
习题与思考题  503
扩展阅读与信息资源  503
第四部分 管理软件项目
第31章 项目管理概念  506
31.1 管理涉及的范围  507
31.1.1 人员  507
31.1.2 产品  507
31.1.3 过程  508
31.1.4 项目  508
31.2 人员  508
31.2.1 利益相关者  508
31.2.2 团队负责人  509
31.2.3 软件团队  509
31.2.4 敏捷团队  511
31.2.5 协调和沟通问题  512
31.3 产品  513
31.3.1 软件范围  513
31.3.2 问题分解  513
31.4 过程  514
31.4.1 合并产品和过程  514
31.4.2 过程分解  515
31.5 项目  516
31.6 W5HH原则  516
31.7 关键实践  517
31.8 小结  518
习题与思考题  518
扩展阅读与信息资源  519
第32章 过程度量与项目度量  521
32.1 过程领域和项目领域中的度量  522
32.1.1 过程度量和软件过程改进  522
32.1.2 项目度量  524
32.2 软件测量  525
32.2.1 面向规模的度量  526
32.2.2 面向功能的度量  527
32.2.3 调和代码行度量和功能点度量  527
32.2.4 面向对象的度量  528
32.2.5 面向用例的度量  529
32.2.6 WebApp项目的度量  530
32.3 软件质量的度量  531
32.3.1 测量质量  531
32.3.2 缺陷排除效率  532
32.4 在软件过程中集成度量  533
32.4.1 支持软件度量的论点  534
32.4.2 建立基线  534
32.4.3 度量收集、计算和评估  534
32.5 小型组织的度量  535
32.6 制定软件度量大纲  536
32.7 小结  537
习题与思考题  537
扩展阅读与信息资源  538
第33章 软件项目估算  540
33.1 对估算的观察  541
33.2 项目计划过程  542
33.3 软件范围和可行性  542
33.4 资源  543
33.4.1 人力资源  544
33.4.2 可复用软件资源  544
33.4.3 环境资源  544
33.5 软件项目估算  544
33.6 分解技术  545
33.6.1 软件规模估算  545
33.6.2 基于问题的估算  546
33.6.3 基于LOC估算的实例  547
33.6.4 基于FP估算的实例  548
33.6.5 基于过程的估算  549
33.6.6 基于过程估算的实例  550
33.6.7 基于用例的估算  550
33.6.8 基于用例点估算的实例  551
33.6.9 调和不同的估算方法  552
33.7 经验估算模型  553
33.7.1 估算模型的结构  553
33.7.2 COCOMOⅡ模型  553
33.7.3 软件方程  553
33.8 面向对象项目的估算  554
33.9 特殊的估算技术  555
33.9.1 敏捷开发的估算  555
33.9.2 WebApp项目的估算  555
33.10 自行开发或购买的决策  556
33.10.1 创建决策树  557
33.10.2 外包  558
33.11 小结  559
习题与思考题  559
扩展阅读与信息资源  560
第34章 项目进度安排  561
34.1 基本概念  562
34.2 项目进度安排概述  563
34.2.1 基本原则  564
34.2.2 人员与工作量之间的关系  565
34.2.3 工作量分配  566
34.3 为软件项目定义任务集  567
34.3.1 任务集举例  567
34.3.2 主要任务的细化  568
34.4 定义任务网络  568
34.5 进度安排  569
34.5.1 时序图  570
34.5.2 跟踪进度  570
34.5.3 跟踪面向对象项目的进展  572
34.5.4 WebApp和移动App项目的进度安排  573
34.6 挣值分析  575
34.7 小结  576
习题与思考题  577
扩展阅读与信息资源  578
第35章 风险管理  579
35.1 被动风险策略和主动风险策略  580
35.2 软件风险  580
35.3 风险识别  581
35.3.1 评估整体项目风险  582
35.3.2 风险因素和驱动因子  583
35.4 风险预测  584
35.4.1 建立风险表  584
35.4.2 评估风险影响  585
35.5 风险细化  587
35.6 风险缓解、监测和管理  587
35.7 RMMM计划  589
35.8 小结  590
习题与思考题  590
扩展阅读与信息资源  591
第36章 维护与再工程  593
36.1 软件维护  594
36.2 软件可支持性  595
36.3 再工程  596
36.4 业务过程再工程  596
36.4.1 业务过程  596
36.4.2 BPR模型  597
36.5 软件再工程  598
36.5.1 软件再工程过程模型  598
36.5.2 软件再工程活动  599
36.6 逆向工程  600
36.6.1 理解数据的逆向工程  601
36.6.2 理解处理的逆向工程  602
36.6.3 用户界面的逆向工程  602
36.7 重构  603
36.7.1 代码重构  603
36.7.2 数据重构  604
36.8 正向工程   604
36.8.1 客户/服务器体系结构的正向工程  605
36.8.2 面向对象体系结构的正向工程  606
36.9 再工程经济学  606
36.10 小结  607
习题与思考题  607
扩展阅读与信息资源  608
第五部分 软件工程高级课题
第37章 软件过程改进  612
37.1 什么是SPI  613
37.1.1 SPI的方法  613
37.1.2 成熟度模型  614
37.1.3 SPI适合每个人吗  615
37.2 SPI过程  615
37.2.1 评估和差距分析  616
37.2.2 教育和培训  617
37.2.3 选择和合理性判定  617
37.2.4 设置/迁移  618
37.2.5 评价  618
37.2.6 SPI的风险管理  618
37.3 CMMI  619
37.4 人员CMM  622
37.5 其他SPI框架  622
37.6 SPI的投资收益率  624
37.7 SPI趋势  624
37.8 小结  625
习题与思考题  626
扩展阅读与信息资源  626
第38章 软件工程的新趋势  627
38.1 技术演变  628
38.2 关于纯粹工程学科的展望  629
38.3 观察软件工程的发展趋势  629
38.4 识别“软趋势”  630
38.4.1 管理复杂性  631
38.4.2 开放世界软件  632
38.4.3 意外需求  632
38.4.4 人才技能结合  633
38.4.5 软件构造块  633
38.4.6 对“价值”认识的转变  634
38.4.7 开源  634
38.5 技术方向  634
38.5.1 过程趋势  634
38.5.2 巨大的挑战  635
38.5.3 协同开发  636
38.5.4 需求工程  636
38.5.5 模型驱动的软件开发  637
38.5.6 后现代设计  637
38.5.7 测试驱动的开发  638
38.6 相关工具的趋势  639
38.7 小结  640
习题与思考题  640
扩展阅读与信息资源  640
第39章 结束语  642
39.1 再论软件的重要性  643
39.2 人员及其构造系统的方式  643
39.3 表示信息的新模式  644
39.4 远景  645
39.5 软件工程师的责任  646
39.6 写在最后  647
索引  648
在线资源
附录1 UML 简介
附录2 面向对象概念
附录3 形式化方法
参考文献

教学资源推荐
作者: Srinivasan Desikan;Gopalaswamy Ramesh
作者: 窦万峰 主编 宋效东 史玉梅 李东振 赵菁 等参编
作者: 麻志毅
参考读物推荐