
编辑推荐
《软件工程:实践者的研究方法(原书第8版)》适合作为软件工程相关专业高年级本科生和研究生教材,也可供软件专业技术人员和管理人员阅读参考。
作者简介
作者简介Software Engineering: A Practitioner’s Approach, Eighth Edition罗杰 S. 普莱斯曼(Roger S. Pressman)普莱斯曼是软件工程领域国际知名的顾问和作家。40多年来,他作为工程师、经理人、教授、作家、咨询师和企业家始终奋战在这一领域。
普莱斯曼博士现任一家咨询公司(R. S. Pressman Associates, Inc.)的总裁,该公司致力于协助企业建立有效的软件工程实践。这些年来,他已经开发了一套用于改进软件工程实践的技术和工具。他还是一家创业公司(Teslaccessories,LLC)的创始人,这家制造公司专门为特斯拉Model S系列电动车生产定制产品。
普莱斯曼博士是9本书的作者,其中包括两本小说。他还写了许多技术和管理方面的文章。他曾任《IEEE Software》和《The Cutter IT Journal》等行业杂志的编委,以及《IEEE Software》杂志“Manager”专栏的编辑。
普莱斯曼博士还是著名的演讲家,曾在许多重要的行业会议上做主题演讲,在国际软件工程会议和一些行业会议上做辅导讲座,并且一直是ACM(美国计算机协会)、IEEE(美国电气与电子工程师协会)以及Tau Beta Pi、Phi Kappa Phi、Eta Kappa Nu和Pi Tau Sigma等组织的成员。
布鲁斯 R. 马克西姆(Bruce R. Maxim)马克西姆博士30多年来曾任软件工程师、项目经理、教授、作家和咨询师。他的研究兴趣涉及软件工程、人机交互、游戏设计、社交媒体、人工智能以及计算机科学教育等领域。
马克西姆博士现任密歇根大学迪尔伯恩分校计算机与信息科学系副教授,他曾为该校工程与计算机科学学院建立游戏实验室。他曾经发表多篇有关计算机算法动画、游戏开发以及工程教育方面的论文。他还是畅销的计算机科学导论课本的作者之一。在密歇根大学工作期间,马克西姆博士曾监管了几百个产业界软件开发项目。
马克西姆博士的专业经验包括在医学院管理研究信息系统,为某医学校区指导计算教学,并承担统计程序员的工作。他还曾担任某游戏开发公司的首席技术官。
马克西姆博士是若干著名教学奖以及某著名社团组织服务奖的获得者。他还是Sigma Xi、Upsilon Pi Epsilon、Pi Mu Epsilon、ACM、IEEE、美国工程教育协会、女工程师协会以及国际游戏开发者联盟等社会组织的成员。
目录
出版者的话
译者序
前言
作者简介
第1章 软件的本质1
1.1 软件的本质3
1.1.1 定义软件3
1.1.2 软件应用领域4
1.1.3 遗留软件5
1.2 软件的变更本质6
1.2.1 WebApp6
1.2.2 移动App7
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 Scrum56
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/移动App148
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 开发移动App289
18.2.1 移动App质量290
18.2.2 用户界面设计291
18.2.3 环境感知App292
18.2.4 经验教训293
18.3 移动App设计的最佳实践294
18.4 移动开发环境295
18.5 云297
18.6 传统软件工程的适用性298
18.7 小结298
习题与思考题299
扩展阅读与信息资源299
……
第三部分 质量管理
第四部分 管理软件项目
第五部分 软件工程高级课题
索引648
在线资源
附录1 UML简介
附录2 面向对象概念
附录3 形式化方法
参考文献
序言
译者序
Software Engineering: A Practitioner’s Approach, Eighth Edition
本书是国际知名软件工程专家罗杰 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月
文摘
版权页:
插图:
《软件工程:实践者的研究方法(原书第8版)》适合作为软件工程相关专业高年级本科生和研究生教材,也可供软件专业技术人员和管理人员阅读参考。
作者简介
作者简介Software Engineering: A Practitioner’s Approach, Eighth Edition罗杰 S. 普莱斯曼(Roger S. Pressman)普莱斯曼是软件工程领域国际知名的顾问和作家。40多年来,他作为工程师、经理人、教授、作家、咨询师和企业家始终奋战在这一领域。
普莱斯曼博士现任一家咨询公司(R. S. Pressman Associates, Inc.)的总裁,该公司致力于协助企业建立有效的软件工程实践。这些年来,他已经开发了一套用于改进软件工程实践的技术和工具。他还是一家创业公司(Teslaccessories,LLC)的创始人,这家制造公司专门为特斯拉Model S系列电动车生产定制产品。
普莱斯曼博士是9本书的作者,其中包括两本小说。他还写了许多技术和管理方面的文章。他曾任《IEEE Software》和《The Cutter IT Journal》等行业杂志的编委,以及《IEEE Software》杂志“Manager”专栏的编辑。
普莱斯曼博士还是著名的演讲家,曾在许多重要的行业会议上做主题演讲,在国际软件工程会议和一些行业会议上做辅导讲座,并且一直是ACM(美国计算机协会)、IEEE(美国电气与电子工程师协会)以及Tau Beta Pi、Phi Kappa Phi、Eta Kappa Nu和Pi Tau Sigma等组织的成员。
布鲁斯 R. 马克西姆(Bruce R. Maxim)马克西姆博士30多年来曾任软件工程师、项目经理、教授、作家和咨询师。他的研究兴趣涉及软件工程、人机交互、游戏设计、社交媒体、人工智能以及计算机科学教育等领域。
马克西姆博士现任密歇根大学迪尔伯恩分校计算机与信息科学系副教授,他曾为该校工程与计算机科学学院建立游戏实验室。他曾经发表多篇有关计算机算法动画、游戏开发以及工程教育方面的论文。他还是畅销的计算机科学导论课本的作者之一。在密歇根大学工作期间,马克西姆博士曾监管了几百个产业界软件开发项目。
马克西姆博士的专业经验包括在医学院管理研究信息系统,为某医学校区指导计算教学,并承担统计程序员的工作。他还曾担任某游戏开发公司的首席技术官。
马克西姆博士是若干著名教学奖以及某著名社团组织服务奖的获得者。他还是Sigma Xi、Upsilon Pi Epsilon、Pi Mu Epsilon、ACM、IEEE、美国工程教育协会、女工程师协会以及国际游戏开发者联盟等社会组织的成员。
目录
出版者的话
译者序
前言
作者简介
第1章 软件的本质1
1.1 软件的本质3
1.1.1 定义软件3
1.1.2 软件应用领域4
1.1.3 遗留软件5
1.2 软件的变更本质6
1.2.1 WebApp6
1.2.2 移动App7
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 Scrum56
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/移动App148
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 开发移动App289
18.2.1 移动App质量290
18.2.2 用户界面设计291
18.2.3 环境感知App292
18.2.4 经验教训293
18.3 移动App设计的最佳实践294
18.4 移动开发环境295
18.5 云297
18.6 传统软件工程的适用性298
18.7 小结298
习题与思考题299
扩展阅读与信息资源299
……
第三部分 质量管理
第四部分 管理软件项目
第五部分 软件工程高级课题
索引648
在线资源
附录1 UML简介
附录2 面向对象概念
附录3 形式化方法
参考文献
序言
译者序
Software Engineering: A Practitioner’s Approach, Eighth Edition
本书是国际知名软件工程专家罗杰 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月
文摘
版权页:
插图:
ISBN | 9787111548973 |
---|---|
出版社 | 机械工业出版社 |
作者 | 罗杰 S.普莱斯曼 (Roger S.Pressman) |
尺寸 | 16 |