本书是一本Web工程著作,全面、系统地阐述了当前Web工程技术的各个方面,概括性地对基于Web的系统和应用的工程化实践过程进行了全面的介绍。主要内容包括:概述、Web工程过程、沟通、计划、建模活动、WebApp分析建模、交互设计、信息设计、功能设计、构建和部署、设计模式、技术和工具、测试、变更管理和内容管理,以及WebApp的发展趋势。本书贯穿了一个应用实例,并以轻松诙趣的方式展现相关内容。
Web工程 实践者的研究方法
在开始计划写这本书的时候,我们曾担心它会淹没在数以百计(不!是数以千计)的相关书籍中,已经有大量关于“Web设计”、HTML、Java、XML的技术书,以及构建成功的基于Web的系统和应用(WebApp)必须要理解的无数的技术书籍。奇怪的是,我们发现一个至关重要的主题(其他的技术都被应用的过程)被覆盖得相对较少。我们称这个过程为Web工程(Web engineering),同时我们相信应用这个技术更可能构建出满足用户需要并给他们客户的业务或者组织带来真正收益的WebApp。
强调WebApp会是现实中所有的业务和组织成功的关键已经是陈词滥调。然而,很多的WebApp仍然是这样构建的:基本不考虑问题分析、有效的设计、可靠的测试以及变更管理的基本原则。所带来的后果就是,很多WebApp无法满足最终用户的需要和委托给开发者的业务目标。
现在,为了应对下一代的基于Web的系统和应用所提出的挑战,我们要从守旧的方法转变到Web工程。这个行业正向更加实效的Web工程过程(展示出敏捷性和适应性)的方向发展。同时,这个过程必须要传递一个学科方法的完整性。
本书面世了,它全面展示了工程化的基于Web的系统和应用的实践过程。为了在这个全新的工程学科中引导读者,其内容是以一种非正式的、会话的风格,以问答的形式进行展示。
在全书中,我们强调一个敏捷的过程和一些已经在行业应用中证明过的简单而实用的方法。同时,我们有意较少涉及基于Web的特定的工具和技术。这不是因为我们认为它们不重要,而是因为已经有了数以千计的强调它们的书籍、文献和网上资源,而它们几乎都没有用联系的观点来看待Web工程。因此,我们自然把重点放在Web工程上。我们的目的就是提供一本可供实践者、大学生或者研究生使用的书。
Web工程过程强调一种敏捷方法,并展示一些简单而有效的方法,以获取和分析问题需求,设计一个有效的解决方案,然后构建和测试一个高质量的WebApp。但是,这个过程不仅仅是关于技术的。我们还将呈现一些已经被证实的用于项目管理、变更和内容管理以及质量保证的技术。在全书中,我们用一个精心设计的案例来展开叙述我们介绍的方法和技术。Web站点wwwSafeHomeAssuredcom对这个案例补充了一些深入的细节,同时还提供了其他额外信息。
本书受益于许多讨论构建高质量的WebApp的准则和技术的出版物和Web资源。我们对本书中引用到的原始资料的作者以及在过去的几年中对我们的想法进行指导的数以百计的同行和作者表示衷心的感谢。同时,要特别感谢Didar Zowghi、Norazlin Yusop、Xiaoying Kong和Rechatrin Tongrungrojana。
在全书中,一些引用的文本、图片以及SafeHome这个案例来自于Roger Pressman的《Software Engineering: A Practitioners Approach》(sixth edition)。我们经过允许直接使用或加以改造,以满足特定Web工程师的需求。
该书由机械工业出版社引进出版,中文书名为《软件工程:实践者的研究方法》(原书第6版),书号为7111194004。——编辑注
我们两个作者的家庭都有4个成员,在此我们想对他们在这件事情上做出的努力表示感谢。我们杰出的妻子(Barbara和Catherine)忍受了为出版一本书所花费的大量用于写、修订和四处奔波的时间。Roger的儿子(Mathew和Michael)已经长大了,有他们自己的事情要做,并且每天都要使用因特网和Web。David的儿子(Oliver和Dominic)很年轻,都有他们自己的未来,同时他们将来的职业生涯中会有相当长的一部分时间能见证未来网络的发展。我们希望本书所展现的思想可以对他们的职业成长有所帮助。
Roger Pressman
美国佛罗里达州贝卡拉顿市
David Lowe
澳大利亚悉尼
计算机\网络
本书采用一个完整的案例研究,以整个Web应用系统开发的生命周期为主线,全面、系统地阐述了基于Web的工程化系统和应用的实践过程的各个方面。书中提供了大量对话说明案例,生动翔实,便于加深理解书中所述的理论及其运用。
主要特点:
* 全书贯穿一个应用实例。
* 强调以敏捷的过程和系统地使用一些已经在行业应用中证实的简单而实用的方法。
* 平衡概念、工具、技术、应用以及Web工程的各部分等各方面内容所占的比例。
霍秋艳 闫兵 陈静玉 等译:暂无简介
作为一本Web工程著作,本书全面、系统地阐述了当前Web工程技术的各个方面,并清晰地对基于Web的系统和应用的工程化实践过程进行了全面介绍。本书的问世,将对这个全新的工程学科产生重要的影响。
Web工程是一门新兴学科,综合讲述的相关书籍寥若晨星。本书的焦点是Web工程,告诉我们关于基于Web的系统和应用的工程化实践过程,强调一个敏捷过程和一些已在行业应用中被证明过的简单而实用的方法。对于基于Web的特定工具和技术的讲解相对较少,因为已有数以千计的强调各种特定工具和技术的书籍、文献和基于Web的资源,但它们几乎都没有用联系的观点来看待Web工程。
本书是Web工程学科的及时雨,是一本非常好的Web工程读物,认真阅读它会使你受益匪浅。自本书原版面世以来,我就是它的忠实读者,它是我从事“Web工程”课程教学的重要参考书。在此,郑重推荐给读者。
本书的特点如下:
强调敏捷的过程和一些已经在行业应用中证实的简单而实用的方法。
各章后面提供了相应的参考文献信息。
全书贯穿了一个应用实例(基于Web的住宅安全系统——SafeHomeAssuredcom),并以对话的形式逐步展开这一开发过程,使本书更具有可读性,引发读者的阅读兴趣。
以非正式的会话的风格,以回答问题的形式展现内容。
本书在前言中指出了其目的是提供一本可供实践者、大学生或者研究生使用的书。除此之外,教师可以把本书作为“Web工程”课程的教材。在作为教材时,可能还需要自行补充一些材料:习题和课程实习。对于教师或者有一定Web应用开发经验的研究生和专业人员,本书提供了全面的、丰富的、代表当前发展水平的Web工程知识。
参加本书翻译工作的主要有:闫兵(第1~10章、第13~14章)、王蕾(第11~12章)、陈威(第16~17章)完成了翻译初稿。本人完成了第15章的翻译,并对全部译稿做了仔细的审核与大量的修改,闫兵和陈静玉对全部译稿也进行了仔细的审核。
尽管本书的翻译工作历时超过半年,但仍然感觉时间太紧,而且Web工程作为一门新的学科,很多概念和术语的翻译还很不成熟。限于译者水平,我们对内容的理解和中文表达难免有不当之处,在此敬请读者批评指正。
霍秋艳
2009年10月
出版者的话
译者序
前言
第1章基于Web的系统
11网络
12Web应用
121一个学习案例
122WebApp就是计算机软件吗
123WebApp的属性有别于传统软件的属性吗
124在WebApp演变的过程中会涉及哪些范畴
13WebApp——一种哲学的观点
参考文献
第2章Web工程
21什么是Web工程
211敏捷意味着什么
212什么是WebE框架
213适应框架时应该遵循哪些原则
214旧方法有什么价值吗
22Web工程的组件
221软件工程如何发挥作用
222为什么WebE过程的敏捷性如此重要
223过程框架内有哪些WebE方法
224工具和技术不就是Web工程的一切吗
23Web工程的最佳实践
24本章小结
参考文献
第3章Web工程过程
31定义框架
32增量过程流
321框架活动是如何进行的
322框架如何进行精化
33WebE框架的一般动作和任务
331沟通活动应当如何进行精化
332制定一个增量计划需要哪些任务
333什么是建模
334可以应用哪些分析建模任务
335设计模型的要素有哪些
336可以应用哪些设计建模任务
337应用哪些构建任务
338WebApp增量如何进行部署
34保护活动
341WebE团队如何管理变更
342如何保证增量的质量
343如何管理风险
344如何管理工作
35本章小结
参考文献
第4章沟通
41沟通活动
42规划
421应当和谁沟通
422可以使用哪些技术进行沟通
423不会有不同的视角吗
424应该问什么问题
425如何促进协作
43提取需求
431在提取需求的会话之前做什么
432利益相关者如何进行准备
433提取会话中执行哪些任务
434WebApp的用户种类
435如何识别内容和功能需求
436如何将约束和性能问题分离
437什么是使用场景
438什么是用例
439如何创建用例
44确认WebApp增量
45协商
46本章小结
参考文献
第5章计划
51理解范围
511有哪些相关的沟通工作产品
512如需要更多的细节来理解增量会怎么样呢
513你的理解中仍然存在不足怎么办
52精化框架活动
521需要哪些动作和任务
522生产哪些工作产品
523评估质量的恰当方法
524如何管理变更
53组建一个WebE团队
531如何识别一个优秀的WebE团队
532团队为什么没有凝聚力,怎么改善
533WebE团队可以管理自身吗
534如何组建一个成功的团队
535一个好的团队负责人有哪些特征
54管理风险
541如何识别风险
542如何评估风险
543如何开发应急计划
55开发进度表
551什么是宏观进度安排
552什么是增量进度安排
553如何估算工作量和时间
554如何描述任务之间的相互依赖关系
56管理质量
561团队可以使用哪些质量保证机制
562什么是结对走查方法
563什么是团队走查方法
564WebApp存在质量标准吗
57管理变更
571如何评估变更的重要性和影响
572何时推迟做出变更
573所有的相关工作产品都应当做出变更吗
58跟踪项目
581进度问题有什么宏观指标吗
582可以使用哪些标准来跟踪进度
59外包WebE工作
591如何启动外包项目
592如何选择候选外包供应商
593如何评估报价的合理性和估算的可靠性
594需要什么程度的项目管理
595如何评估进度并管理范围
510本章小结
参考文献
第6章建模活动
61建模的概念
611如何评判一个模型的有用性
612模型可以用于理解业务限制吗
62创建的模型
621过程告诉了我们关于建模的哪些信息
622WebApp告诉了我们关于建模的哪些信息
63建模框架
631对Web来说,有建模框架吗
632建模如何与WebE过程关联
64建模语言
641应当具备哪些建模功能的能力
642应当具备哪些建模信息内容的能力
643在建模语言中,应当有哪些通用能力
65已有的建模方法
66本章小结
参考文献
第7章WebApp分析建模
71理解在WebE中的分析
711分析到什么程度才是足够的
712可以使用原型进行分析吗
713分析和设计不同吗
72对WebApp进行分析建模
721分析建模的输入是什么
722分析的输出是什么
723应当执行哪些分析任务
724可以使用哪些工具来建模
725如何确定建模是否必要以及哪种方法最好呢
73理解用户
731为什么有必要重返用户等级
732不加修改地应用使用场景吗
74内容模型
741内容模型的结构元素有哪些
742什么是信息交换,如何进行表示
743如何确定内容对象
744有描述内容之间的联系和层次的简单方法吗
745如何为WebApp选择和表示分析类
75交互模型
751用例从什么地方开始起作用
752什么是序列图,何时进行开发
753状态图如何描述WebApp的行为
754是否真的需要用例、序列图和状态图
755为什么创建一个界面原型是很明智的
76功能模型
77配置模型
78关系-导航分析
781如何建立内容对象和功能之间的关系
782如何分析导航需求
79本章小结
参考文献
第8章WebApp的设计
81对WebApp进行设计
811WebApp设计者需要知道什么
812什么是逻辑设计
813什么是物理设计
814设计完成后生成哪些信息
82设计目标
83设计和WebApp的质量
831用户如何理解质量
832有以用户为中心的模型吗
833什么是质量框架
834有评估内容质量的方法吗
835有质量检查表吗
84设计过程
841WebApp设计的元素有哪些
842设计过程的特征有哪些
843对设计活动而言,一个增量的WebE过程意味着什么
85概念架构的初始设计
86技术架构的初始设计
87本章小结
参考文献
第9章交互设计
91界面设计原则和指导准则
911设计有效界面的原则
912有哪些实用的设计指导原则
92界面设计工作流
93界面设计的前期工作
931如何理解WebApp用户的特征
932如何详细描述已经识别的内容对象
933用户完成哪些任务
934如何详细描述已经确定的任务
935如何为不同角色的不同用户进行设计
936内容如何集成到界面描述之中
94界面设计步骤
941如何布局界面对象和动作
942如何设计界面导航机制
943为什么界面的一致性如此重要
95美学设计
951如何创建令人愉悦的布局
952什么是好的图形设计
96可用性
97设计问题
971哪些因素影响响应时间,怎么改进
972如何设计“帮助”设施
973界面应当如何处理错误
974什么是“可访问性”?如何应用于界面设计中
975什么是“国际化”?如何应用到WebApp中
98本章小结
99参考文献
第10章信息设计
101信息架构
1011什么是信息架构
1012信息架构的元素有哪些
1013好的信息架构有什么特征
1014如何开发信息架构
102组织内容
103设计信息空间
1031有哪些可能的信息结构
1032什么可以产生好的结构
104蓝图:为结构添加细节
105访问信息
1051如何确保用户可以理解上下文并且不会迷路
1052如何帮助用户在信息结构内移动
1053实现搜索机制的指导准则
1054搜索机制会产生问题吗
106线框模型
107导航设计:创建详细的结构
1071信息设计和导航设计模型是如何演化的
1072RMM模型如何用于导航设计
1073如何使用WebML创建导航设计
1074可能创建链接了内容和功能的模型吗
1075Web自身的结构有影响吗
108总结设计过程
109本章小结
参考文献
第11章功能设计
111WebApp功能
112WebApp功能的性质
1121功能示例
1122功能分类
1123信息和功能总是可区分的吗
113设计过程中的功能设计
1131功能设计过程包含哪些要素
1132需要多少功能设计
1133SafeHomeAssuredcom的初始功能设计应该如何进行
114功能架构
1141功能架构是什么样的
1142如何开发功能架构
1143处理异常的功能如何开发
1144在功能设计时可以使用架构模式吗
115详细功能设计
1151WAE建模如何用于详细设计中
1152WebML为什么适合于工作流建模
116状态建模
117本章小结
参考文献
第12章构建和部署
121WebE过程中的构建和部署
1211构建和部署之间的相互作用是什么
1212部署环境扮演什么角色
122构建
1221有通用的构建任务吗
1222什么是重构?如何应用它
123构建的原则和概念
124部署
1241是否存在通用的部署任务
1242指导WebE团队的部署原则
1243如何使用版本控制和CMS
125构建和组件的使用
1251什么是通用组件
1252如何定义面向对象组件
1253如何定义传统组件
1254好组件有哪些特征
126组件级设计指导准则
127组件的设计步骤
128本章小结
参考文献
第13章设计模式
131模式:理解概念
1311什么是模式
1312模式怎么描述
132WebApp模式:设计焦点和粒度
1321如何使用设计焦点来确定模式
1322粒度为什么是模式的一个重要特征
133模式仓库
1331什么是模式库
1332Web工程师可参考哪些模式资源
1333WebE团队能够创建自己的模式集吗
1334如何发现和使用模式
134模式示例
1341有可能定义解决业务层问题的模式吗
1342因为交互很普遍,就必然有很多交互模式吗
1343有哪些可用的导航模式
1344内容和表示模式适合使用的地方
135本章小结
参考文献
第14章技术和工具
141常见问题
1411分而治之如何影响工具和技术
1412选用哪种技术——开源还是私有
1413WebE技术应用种类的影响
142实现工具和技术
1421什么是应用框架
1422如何应用内容管理系统和版本控制技术
1423WebApp怎样提供搜索能力
143开发工具和技术
1431怎样获得有助于建模活动的工具
1432专门针对WebApp的测试工具
1433支持WebE过程管理的工具
144本章小结
参考文献
第15章WebApp测试
151测试概念
1511什么是质量维度
1512WebApp环境中发生什么类型的错误
1513应该应用什么测试策略
1514多少测试计划是必需的
152测试过程概述
153内容测试
1531内容测试的目标是什么
1532数据库测试如何用于验证内容
154用户界面测试
1541界面测试策略
1542如何测试界面机制
1543如何测试界面语义
155可用性测试
156兼容性测试
157组件级测试
158导航测试
1581如何测试导航语法
1582如何测试导航语义
159配置测试
1591如何测试服务器端
1592如何测试客户端
1510安全性和性能测试
15101如何确定WebApp是安全的
15102如何测试WebApp的性能
15103性能测试的目标是什么
15104负载测试如何评估性能
15105压力测试如何评估性能
1511本章小结
参考文献
第16章变更管理和内容管理
161变更
1611变更的属性有哪些
1612为什么需要变更
1613WebApp的哪些元素变更了
162Web工程的变更管理
1621为什么需要管理变更
1622应该如何识别将要发生变更的对象
1623如何控制将要发生的变更
1624如何管理一个WebApp或其组件的不同版本
1625WebE团队如何确保一个变更恰当地实现了
1626如何让利益相关者知道实施的变更
163内容管理
1631如何使用内容管理系统
1632CMS的主要元素有哪些
164CMS的实现标准
1641数量如何影响内容管理
1642内容创作者的人数会影响CMS吗
1643变更量如何影响变更管理的正式性
1644发布量如何影响内容管理的正式性
165本章小结
参考文献
第17章未来趋势
171Web和WebApp具有不断变化的特征
1711基于Web的内容和功能的交付会如何变化
1712WebApp将如何变化
1713为了适应这些变化,Web工程师必须做些什么
1714Web可以作为应用软件的平台吗
1715未来的Web会是一个操作系统吗
1716语义Web将如何改变事物
172演化中的Web技术和Web 20
1721什么是Web 20
1722哪些技术支持Web 20
1723在技术演化中应该考虑哪些关键问题
1724Web 20将会如何发展
173对于未来的观点
174Web工程的变化特性
参考文献