恰如其分的软件架构
正版图书 真实库存欢迎选购 套装图书先联系再下单 套装图书请先咨询客服再下单
¥
15.64
1.8折
¥
88
八品
库存3件
作者George Fairbanks
出版社华中科技大学出版社
ISBN9787560990750
出版时间2013-09
装帧平装
开本16开
定价88元
货号1672851536533377536
上书时间2024-10-29
商品详情
- 品相描述:八品
- 商品描述
-
前言
在我走上软件开发道路之初时,就希望能拥有这样一本书。在那时,介绍语言及面向对象编程的书籍可谓汗牛充栋,而关于设计的书却如凤毛麟角。了解C++语言的特性并不意味着你能设计出一个好的面向对象系统,熟知统一建模语言(UML),也未必能设计出一个好的系统架构。
本书不同于其他介绍软件架构的书籍,区别在于:
风险驱动的架构设计 当风险很小时,设计无须谨小慎微,但当风险威胁到项目的成功时,就没有任何借口进行草率的设计了。许多资历丰富的敏捷软件支持者都认为进行适度的预先设计是有裨益的,而本书则描述了一种恰如其分的架构设计方法。它避免了以“一招鲜,吃遍天”的方式来解决“焦油坑”问题,建议根据面临的风险来调整架构与设计的成本,摒弃仓促草率的做法,通过更为严谨的方式来调整大多数技术的精确度。
促进架构设计的民主化 你所在的团队可能拥有软件架构师——事实上,你可能正是其中一位。我认识的每一位架构师都希望所有开发者能够理解架构。他们抱怨开发者无法理解约束存在的原因,无法认识到表面看来细小的变化怎么会影响系统的属性。本书力求将架构与所有软件开发者联系起来。
积累陈述性知识 能够击中网球与知道为何能击中网球明显不同,心理学家将其分别称为过程性知识(procedural knowledge)与陈述性知识(declarative knowledge)。如果你已经善于设计和构建系统,你会用到本书提供的许多技术,但是,本书更要让你认识到你能做到的事情,并为这些概念命名。这些陈述性知识可以提高你指导其他开发者的能力。
强调工程实践 软件系统的设计者与构建者要做的事情很多,包括安排日程计划、协调资源的承诺及满足利益相关人的需求。诸多软件架构书籍业已涵盖了软件开发过程与组织结构。相对而言,本书将重心放在软件开发的技术部分,处理开发者要做的事情,以确保系统可以工作,即工程学的范畴。它为你展现了如何构建模型,如何分析架构,并在原则的指导下进行设计权衡。它还描述了软件设计者用来分析从中等到大型规模问题的技术,指出了在哪里才能学到专业技术的更多细节。因此,通观全书,软件工程师指的就是开发者,并没有将架构师从程序员中区分出来。
提供实践指导 本书提供了架构的实践方法。软件架构是一种软件设计,设计决策会影响到架构,反之亦然。最优秀的开发者所要做的事情就是深入那些障碍的细节,理解它们,再提炼出这些障碍的本质,从整体上将它们与架构相关联。书中采用的方式是,从架构到数据结构设计,描述具有不同抽象层级的模型,并遵循了这种向下深挖,继而向上提升的行为。
我的职业生涯源于我对如何构建软件系统的渴求。这种渴求引导我游走于学术研讨与行业软件开发之间。我拥有完整的计算机科学学位:学士、硕士及博士(获得卡耐基?梅隆大学软件工程学的博士学位)。我的论文专注于软件框架领域,因为它是许多开发者都要面临的问题。我开发了一种新的规格,称为设计片段(design fragment),它可以用来描述如何使用框架。同时,我还构建了一个基于Eclipse的工具,用于验证它们的使用是否正确。我非常荣幸能够得到David Garlan与Bill Scherlis的指导,并邀请到Jonathan Aldrich与Ralph Johnson成为论文的评审委员。
我受益于学术的精确与严密,但我的根还是在工程界。我作为软件开发者,参与了多个项目,包括:Nortel DMS-100中央办公电话交换机、驾驶模拟器的统计分析、时代华纳通信公司的IT应用系统、Eclipse IDE插件,还有我自己创建的网络初创公司开发的每一行代码。我作为一名业余的系统管理员捣鼓着自己的Linux机器,拥有一间闪烁着灯光、用电力供暖的小房间。
我在敏捷技术的早期就成为它的拥趸,1996年,我成功地鼓动我的部门将开发周期从6个月切换为2周,并在1998年开始测试先行的开发。
本书的主要读者是那些实践中的软件开发者。读者应该对基本的软件开发思想,包括面向对象软件开发、UML、用例与设计模式等有所了解。若能拥有实际的软件开发过程的经验,对阅读本书会更有帮助,因为本书的许多基本主张都基于这些常见的经验。若你看到开发者编写了太多的文档,又或者未经深思熟虑就急于编写代码,一定会认识到这种软件开发方式的谬误,需要寻找像本书提供的那些治病良方。本书同样可以作为大学高年级学生或研究生的教材。
对于不同的读者,这里提出了一些期望:
新手开发者或学生 如果你已经了解软件开发的基本机制,例如,编程语言和数据结构设计,理想情况下,已经学过通用的软件工程学课程,本书会为你介绍软件的特定模型,帮助你形成软件架构的概念模型。无须绘制大量图形、编写大量文档,这一模型就能帮助你从大型系统的混乱中走出来,理清思路。它还为你提供了诸如质量属性和架构风格等理念的初次体验。你可以学会如何从对小程序的理解,上升到对整个行业规模与质量的理解。它能加速你的成长,使你成为一位高效的、富有经验的开发者。
经验丰富的开发者 倘若你善于开发软件系统,可能会被频繁要求去指导别人。然而,你可能发现你所掌握的架构知识多少有些异于寻常,或许还使用了独一无二的图形标记或术语。本书将提高你指导他人的能力,理解为何你能够在别人苦苦挣扎的领域取得成功,并教给你标准的模型、标记与名称。
软件架构师 在你所在的软件组织中,一旦其他成员无法理解身为架构师的你究竟做了什么,以及为何要这样做,这个角色就会变得处境艰难。本书不仅教会你构建系统的技术,还提供了一些办法帮助你向团队解释你的工作内容与工作方式。或者,你甚至可以将本书分享给同事,使他们成为真正的团队伙伴,以便能够更好地完成工作。
学术研究人员 本书为软件架构领域做出了多个贡献。它引入了软件架构的风险驱动模型,这是一种决定为项目作出多少架构和设计工作的方法。它描述了三种架构方法:架构无关的设计、专注架构的设计与提升架构的设计。它还整合了软件架构的两种视角:功能视角与质量属性视角,从而形成一种单独的概念模型。本书还引入了架构明显的编程风格(architecturally-evident coding style)的理念,通过阅读源代码使架构显现。
导语摘要
《恰如其分的软件架构》的作者GeorgeFairbanks在探讨比较多种架构风格的差异和利弊的基础上,结合自己的工作经验,提炼出通过风险驱动的软件架构设计方法,旨在弥补敏捷开发方法在实际工程应用中的不足。本书将理论与实践相结合,不仅条理清晰地描述了设计软件架设的各种思路,而且详细介绍了经过实践检验的建模方法和架构分析技巧。
作者简介
George Fairbanks,在卡内基·梅隆大学获得软件工程专业博士学位,现任Rhino Research公司董事长。Rhino Research是一家专门提供软件开发培训及咨询的公司,总部设在美国科罗拉多州博尔德市。
张逸,ThoughtWorks高级咨询师,程 序员。InfoQ中文站编辑。著译作包括《软件设计精要与模式》《WCF服务编程》《Java设计模式》以及评注版《重构:改善既有代码的设计》。目前居住于成都。
倪健,eBaoTech应用架构师,程序员。著作包括《简单之美:软件开发实践者的思考》《IT项目管理那些事儿》(与人合著)。目前居住于上海。
目录
第1章 概述
1.1 分治、知识与抽象
1.2 软件架构的三个案例
1.3 反思
1.4 视角转换
1.5 架构师构建架构
1.6 风险驱动的软件架构
1.7 敏捷开发者的架构
1.8 关于本书
第2章 软件架构
2.1 何为软件架构?
2.2 软件架构为何重要
2.3 架构何时重要?
2.4 推定架构
2.5 如何运用软件架构?
2.6 架构无关的设计
2.7 专注架构的设计
2.8 提升架构的设计
2.9 大型组织中的架构
2.10 结论
2.11 延伸阅读
第3章 风险驱动模型
3.1 风险驱动模型是什么?
3.2 你现在采用风险驱动了吗?
3.3 风险
3.4 技术
3.5 选择技术的指导原则
3.6 何时停止
3.7 计划式设计与演进式设计
3.8 软件开发过程
3.9 理解过程变化
3.10 风险驱动模型与软件开发过程
3.11 应用于敏捷过程
3.12 风险与架构重构
3.13 风险驱动模型的替代方案
3.14 结论
3.15 延伸阅读
第4章 实例:家庭媒体播放器
4.1 团队沟通
4.2 COTS组件的集成
4.3 元数据一致性
4.4 结论
第5章 建模建议
5.1 专注于风险
5.2 理解你的架构
5.3 传播架构技能
5.4 作出合理的架构决策
5.5 避免预先大量设计
5.6 避免自顶向下设计
5.7 余下的挑战
5.8 特性和风险:一个故事
第6章 工程师使用模型
6.1 规模与复杂度需要抽象
6.2 抽象提供洞察力和解决手段
6.3 分析系统质量
6.4 模型忽略细节
6.5 模型能够增强推理
6.6 提问在前,建模在后
6.7 小结
6.8 延伸阅读
第7章 软件架构的概念模型
7.1 规范化模型结构
7.2 领域模型、设计模型和代码模型
7.3 指定与细化关系
7.4 主模型的视图
7.5 组织模型的其他方式
7.6 业务建模
7.7 UML的用法
7.8 小结
7.9 延伸阅读
第8章 领域模型
8.1 领域与架构的关系
8.2 信息模型
8.3 导航和不变量
8.4 快照
8.5 功能场景
8.6 小结
8.7 延伸阅读
第9章 设计模型
9.1 设计模型
9.2 边界模型
9.3 内部模型
9.4 质量属性
9.5 Yinzer系统的设计之旅
9.6 视图类型
9.7 动态架构模型
9.8 架构描述语言
9.9 小结
9.10 深入阅读
第10章 代码模型
10.1 模型-代码差异
10.2 一致性管理
10.3 架构明显的编码风格
10.4 在代码中表达设计意图
10.5 模型嵌入代码原理
10.6 表达什么
10.7 在代码中表达设计意图的模式
10.8 电子邮件处理系统预演
10.9 小结
第11章 封装和分割
11.1 多层级故事
11.2 层级和分割
11.3 分解策略
11.4 有效封装
11.5 创建封装接口
11.6 小结
11.7 深入阅读
第12章 模型元素
12.1 和部署相关的元素
12.2 组件
12.3 组件装配
12.4 连接器
12.5 设计决策
12.6 功能场景
12.7 (不变量(约束)
12.8 模块
12.9 端口
12.10 质量属性
12.11 质量属性场景
12.12 职责
12.13 权衡
12.14 小结
第13章 模型关系
13.1 投影(视图)关系
13.2 分割关系
13.3 组合关系
13.4 分类关系
13.5 泛化关系
13.6 指定关系
13.7 细化关系
13.8 绑定关系
13.9 依赖关系
13.10 使用关系
13.11 小结
13.12 深入阅读
第14章 架构风格
14.1 优势
14.2 柏拉图式风格对体验式风格
14.3 约束和以架构为中心的设计
14.4 模式对风格
14.5 风格目录
14.6 分层风格
14.7 大泥球风格
14.8 管道-过滤器风格
14.9 批量顺序处理风格
14.10 以模型为中心的风格
14.11 分发-订阅风格
14.12 客户端-服务器风格和多层
14.13 对等风格
14.14 map-reduce风格
14.15 镜像,支架和农场风格
14.16 小结
14.17 深入阅读
第15章 使用架构模型
15.1 理想的模型特性
15.2 和视图一起工作
15.3 改善视图质量
15.4 提高图的质量
15.5 测试和证明
15.6 分析架构模型
15.7 架构不匹配
15.8 选择你的抽象级别
15.9 规划用户界面
15.10 指定性模型对描述性模型
15.11 对现有系统进行建模
15.12 小结
15.13 深入阅读
第16章 结论
16.1 挑战
16.2 聚焦质量属性
16.3 解决问题,而不是仅仅对它们建模
16.4 使用导轨一样的约束
16.5 使用标准架构抽象
术语表
文献
索引
内容摘要
《恰如其分的软件架构》描述了一种恰如其分的架构设计方法。作者建议根据项目面临的风险来调整架构设计的成本,并从多个视角阐述了软件架构的建模过程和方法,包括用例模型、概念模型、域模型、设计模型和代码模型等。本书不仅介绍方法,而且还对方法和概念进行了归类和阐述,将软件架构设计融入开发实践中,与敏捷开发方法有机地结合在一起,适合普通程序员阅读。
主编推荐
《恰如其分的软件架构》的作者在探讨比较多种架构风格的差异和利弊的基础上,结合自己的工作经验,提炼出通过风险驱动的软件架构设计方法,旨在弥补敏捷开发方法在实际工程应用中的不足。本书将理论与实践相结合,不仅条理清晰地描述了设计软件架设的各种思路,而且详细介绍了经过实践检验的建模方法和架构分析技巧。
— 没有更多了 —
以下为对购买帮助不大的评价