恰如其分的软件架构 [Just Enough Software Architecture]

恰如其分的软件架构 [Just Enough Software Architecture] 下载 mobi epub pdf 电子书 2024


简体网页||繁体网页
[美] George Fairbanks 著,张逸,倪健 译



点击这里下载
    


想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

发表于2024-11-24

类似图书 点击查看全场最低价

图书介绍

出版社: 华中科技大学出版社
ISBN:9787560990750
版次:1
商品编码:11306502
包装:平装
外文名称:Just Enough Software Architecture
开本:16开
出版时间:2013-09-01
用纸:胶版纸
页数:376
正文语种:中文


相关图书





图书描述

编辑推荐

  《恰如其分的软件架构》的作者在探讨比较多种架构风格的差异和利弊的基础上,结合自己的工作经验,提炼出通过风险驱动的软件架构设计方法,旨在弥补敏捷开发方法在实际工程应用中的不足。本书将理论与实践相结合,不仅条理清晰地描述了设计软件架设的各种思路,而且详细介绍了经过实践检验的建模方法和架构分析技巧。

内容简介

  《恰如其分的软件架构》描述了一种恰如其分的架构设计方法。作者建议根据项目面临的风险来调整架构设计的成本,并从多个视角阐述了软件架构的建模过程和方法,包括用例模型、概念模型、域模型、设计模型和代码模型等。本书不仅介绍方法,而且还对方法和概念进行了归类和阐述,将软件架构设计融入开发实践中,与敏捷开发方法有机地结合在一起,适合普通程序员阅读。

作者简介

  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 使用标准架构抽象
术语表
文献
索引







精彩书摘

  9.6视图类型
  对所有的视图做一次回顾,就可以看到它们的组织方式中有一定的模式。有些视图,相互之间可以很容易地进行验证,而另一些则无法做到。例如,Yinzer系统的功能场景视图和组件装配视图,相互之间是可以验证的,甚至可以想象,即使将这两个视图合并为一个单一视图也并不太难。
  很多视图都难以和源代码视图进行对应,比方说,实例对象或实例组件的视图。为了与源代码视图对应,可能不得不遍历源代码,然后在脑子里想象,哪些组件实例将会出现在运行时,又将会运行在什么样的结构之上。换句话说,如果你一只手上有源代码,一只手上有组件装配视图,要想确定代码能不能在运行期创建出组件实例的结构,还是要费一番工夫的。与此同时,功能场景视图和组件装配视图可以轻松对应,但是,要想对应模块视图和运行时视图,看上去也不太容易。把容易对应的视图进行分组,这应该是你最想做的事情。
  9.6.1视图类型定义
  分组是通过视图类型来完成的。视图类型是一组或一类可以轻松相互对应的视图(Clementsetal.,20lo)。不同视图类型的视图是不能对应的。在软件架构中,视图类型Ⅲ可以应用于任何设计模型和代码模型,包括项层的边界模型,以及嵌套的内部模型或边界模型。
  不幸的是,无法轻易地对应软件系统的每一个视图。很显然,从某些意义上来说,所有的视图都必须是可以对应的(即使只是在你的头脑中),因为,所构建的系统应该符合所有的视图。关于对应视图,最好是多看看别人的设计,而不仅仅只看自己的,看看要在他们的视图之间找到缺陷和不一致有多难。
  9.6。2标准架构视图类型
  软件架构中有三个标准视图类型:模块视图类型、运行时视图类型及部署视图类型。模块视图类型(moduleviewtype)包含了可以在编译时看到的元素视图,包括像源代码和配置文件这样的制品。组件类型、连接器类型及端口类型的定义也是在模块视图类型中,此外,还有类和接口的定义。
  ......

前言/序言

  在我走上软件开发道路之初时,就希望能拥有这样一本书。在那时,介绍语言及面向对象编程的书籍可谓汗牛充栋,而关于设计的书却如凤毛麟角。了解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)的理念,通过阅读源代码使架构显现。
恰如其分的软件架构 [Just Enough Software Architecture] 下载 mobi epub pdf txt 电子书 格式

恰如其分的软件架构 [Just Enough Software Architecture] mobi 下载 pdf 下载 pub 下载 txt 电子书 下载 2024

恰如其分的软件架构 [Just Enough Software Architecture] 下载 mobi pdf epub txt 电子书 格式 2024

恰如其分的软件架构 [Just Enough Software Architecture] 下载 mobi epub pdf 电子书
想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

用户评价

评分

好的需要很好的需要很好的需要很好的需要很好

评分

理念新颖,对于软件和项目的描述非常到位.

评分

买了不少书,回头客好好看看

评分

书非常好,评价不错,非常期待。

评分

此用户未填写评价内容

评分

评分

挺好的

评分

作为教学参考书,还是可以的

评分

东西很好,对学习很有帮助。

类似图书 点击查看全场最低价

恰如其分的软件架构 [Just Enough Software Architecture] mobi epub pdf txt 电子书 格式下载 2024


分享链接








相关图书


本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

友情链接

© 2024 book.teaonline.club All Rights Reserved. 图书大百科 版权所有