架构设计
软件程序架构设计
星火燎猿
我们只用技术说话 眼界决定境界,定位决定地位! 留言私信直接说问题,不要问在不在,我看到了会第一时间回复。
展开
-
架构师必看-架构之美第15章伸缩性架构设计
3.1 简介 在设计系统架构时,一个比较有趣的问题就是确保系统在伸缩时的弹性。随着越来越多的系统运行在网络上或在互联网上提供访问,伸缩性正变得越来越重要。对于这样的系统,如果你希望误差的范围在几个数量级以内,那么容量规划的想法显然是荒谬的。如果你架起一个网站,然后它火了,你可能会突然发现有几百万的用户访问你的站点。同样容易出现的情况是,你架起了一个网站,却发现没有人感兴趣,你投入原创 2012-07-02 15:39:11 · 11500 阅读 · 0 评论 -
架构师必看-架构之美第14章-两个系统的故事:设计之城(一)
形式永远服从功能。 —Louis Henry Sullivan “设计之城”软件项目表面上与“混乱大都市”非常相似。它也是用C++写的消费音频产品,运行在Linux操作系统上。但是,它的构建方式有很大不同,所以内部结构也非常不同。原创 2012-06-30 14:12:00 · 10784 阅读 · 0 评论 -
架构师必看-架构之美第14章-两个系统的故事:混乱大都市(一)
你们修筑、修筑,预备道路,将绊脚石从我百姓的路中除掉。 —《以赛亚书》第57章14节 我们要看的第一个软件系统名为“混乱大都市”。它是我喜欢回顾的一个系统—既不是因为它很好,也不是因为它让参与开发的人感到舒服,而是因为当我第一次参与它的开发时,它教给了我有价值的软件开发经验。原创 2012-06-30 11:22:07 · 12262 阅读 · 0 评论 -
架构师必看-架构之美第14章-两个系统的故事:现代软件神话(一)
架构是一种很浪费空间的艺术。 —Philip Johnson 软件系统就像一座由建筑和后面的路构成的城市—由公路和旅馆构成的错综复杂的网络。在繁忙的城市里发生着许多事情,控制流不断产生,它们的生命在城市中交织在一起,然后死亡。丰富的数据积聚在一起、存储起来,然后销毁。有各式各样的建筑:有的高大美丽,有的低矮实用,还有的坍塌原创 2012-06-30 10:37:52 · 8416 阅读 · 0 评论 -
架构之美第十三章-美丽的架构
所有前面的方法都有助于我们判断一个架构是否“足够好”—也就是说,是否有可能指导开发者和测试者构建一个系统,并满足系统的利益相关人的功能和质量关注点。在我们每天使用的系统中存在着许多好的架构。 但是,超越足够好的架构是怎样的呢?如果有一个“软件架构名人堂”,那会怎样?哪些架构会陈列在这个艺术馆的墙上?这个想法可能没有你想象的那么遥远—在软件产品线领域,这样的“名人堂”的确存在。(注1原创 2012-06-29 10:33:11 · 2794 阅读 · 0 评论 -
架构之美第十二章-好的架构
我们曾提到,架构师玩的是折中的游戏。对于一组给定的功能需求和品质需求,没有唯一的正确架构和唯一的“正确答案”。我们从经验中得知,应该对架构进行评估,确定它是否满足其需求,然后再投入资金来构建、测试和部署这个系统。评估试图回答前面小节中讨论的一个或多个一般关注点问题,或回答特定系统的具体关注问题。 架构评估有两种常见的方式(Clements、Kazman和Klein 2002)。原创 2012-06-29 10:07:55 · 2299 阅读 · 0 评论 -
架构之美第十一章-架构结构
那么,好的架构师如何来处理这些关注点?我们曾经提到过,需要将系统组织成一些结构,每种结构都定义了特定类型的组件之间的具体关系。架构师的主要关注点就是对系统进行组织,让每种结构有助于解答一个关注点所定义的问题。关键的结构决定将产品划分为组件,并定义了这些组件之间的关系(Bass、Clements和Kazman 2003; Booch、Rumbaugh和Jacobson 1999; IEEE 2000原创 2012-06-29 09:55:36 · 2170 阅读 · 0 评论 -
架构之美第十章-创建软件架构
到目前为止,我们已经讨论了一般意义上的架构,并分析了软件架构与其他领域的架构之间有何相似与差异。接下来我们将注意力转到“如何”设计软件架构。当架构师创建软件系统的架构时,她应该关注什么? 软件架构师的首要关注点不是系统的功能。 这是正确的—软件架构师的首要关注点不是系统的功能。 例如,如果我们请你来设计一个“基于Web的应用”,你首先问我们原创 2012-06-28 09:55:42 · 1729 阅读 · 0 评论 -
架构之美第九章-架构与设计
架构是系统设计的一部分,它突出了某些细节,并通过抽象省略掉另一些细节。所以,架构是设计的一个子集。关注实现系统组件的开发者可能不会特别关心所有组件如何装配在一起,而是主要关注少数组件的设计和开发,包括他们必须遵守的架构约束和可以应用的规则。因此,开发者和架构师面对的是系统设计的不同方面。 如果说架构关注的是组件之间的关系和系统组件外部可见的属性,那么设计还要关注这些组件的内部原创 2012-06-28 09:09:10 · 1350 阅读 · 0 评论 -
架构之美第八章-软件架构的含义
如果认为“架构”是一个简单的实体,能够用一份文档或一张图纸来描述,那就错了。架构师必须做出许多设计决定。要想有用,这些决定必须用文档记录下来,这样就能够进行复审、讨论、修改和批准,然后作为后续决定和构建时的约束。对于软件系统,这些设计决定包括行为上的和结构上的。 外部行为描述展示了产品如何与它的用户、其他系统和外部设备进行交互,这应该表现为需求。结构描述展示了产品如何划分为多原创 2012-06-28 09:04:44 · 1847 阅读 · 0 评论 -
架构之美第七章-软件架构师的角色
软件开发项目需要一些人在软件构建时扮演架构师的角色,就像构建或修复建筑时传统的建筑师的角色一样。但是,对于软件系统来说,从来就弄不清楚哪些决定属于架构师的职责范围,哪些决定要留给实现者。定义架构师在软件项目中做什么,比建筑师的类似定义更困难, 原因有3 个因素: 缺少传统、产品无形性和系统复杂性。( 参见Grinter[1999],其中描述了软件架构师如何在一个大型软件开发组织中实现她的职原创 2012-06-28 08:56:48 · 7071 阅读 · 0 评论 -
架构之美第六章-建筑师的角色
在设计、构建和修复建筑时,我们指定关键的设计师为“建筑师(architects)”,并赋予他们广泛的职责。建筑师准备建筑最初的草图,展示外观和内部布局,与客户讨论这些草图,直至所有相关方都达成一致意见,认为展示的就是他们想要的。这些草图是抽象:它们关注建筑中某些方面的适当细节,而忽略其他的内容。 当客户和建筑师在这些抽象上达成一致意见之后,建筑师会准备或监督准备更为详细的图纸,原创 2012-06-28 08:48:32 · 1556 阅读 · 0 评论 -
架构之美第一章-如何看到一滴水的美丽
【一】架构是一个过程,而非一个结果。【二】在大多数人的谈论中,架构是一个目标产物,而作为架构师的责任就是去生产它。所以无论如何,架构是可以“做”出来的,而且也应该有一些“做”的方法、技术、技巧。有人问过我:架构的最主要产出是什么?我的答案是:图。这里面有两层含义:一层含义是如同建筑师描绘的蓝图一样,用于引导实施者;另一层含义是架构师头脑中清晰的目标系统。如果架构师头脑中原创 2012-06-27 15:03:36 · 2585 阅读 · 0 评论 -
架构之美第二章-美丽架构的含义
古人形容美女之美:“⋯⋯增之一分则太长,减之一分则太短⋯⋯”,深刻地揭示了“恰到好处”的美丽含义。当我拿到《架构之美》书稿时,我发现美丽的含义如此相似。 美丽至简。美丽的架构应尽可能简单,但不要过于简单。书中通过多种例子表达了这个最基本的道理。我见过很多大型的软件架构,从大型的电信网络管理系统,到大规模应用的互联网架构,以及企业级的ERP软件,系统总是遵循从无到有,从简单到原创 2012-06-27 15:33:39 · 2017 阅读 · 0 评论 -
架构之美第三章-美丽架构之道
我无法给架构下一个简单的定义,因为任何定义都会束缚你对架构的无限想象。不可否认,架构师早已出现在人类几千年前的各项生产活动中,比如建筑、音乐。而在计算机软件及Web领域,架构的设计直接影响着系统的生产,比如开发过程和效率、代码和组件复用性等,同时也影响着系统的可用性、可伸缩性、性能、容量可预测性等。 关注架构之美。美丽的架构同样无法定义,可它却一定是自然的、简单的、可复用的原创 2012-06-27 15:37:30 · 1707 阅读 · 1 评论 -
架构之美第四章-架构与美
人们在生活和工作中发现美并创造美,软件开发和架构设计也不例外。 架构之美体现了关注点的分离与结合。在软件设计中,设计师需要考虑多方面的关注点。漂亮的架构设计让这些关注点尽可能分离,然后以最简单的机制结合在一起,从而得到高内聚、低耦合的系统。例如在Darkstar项目中,架构师们考虑的重点就是如何将多人在线游戏的游戏逻辑与系统的可伸缩性分离开来,让游戏的开发者只要遵守少量的规则,就原创 2012-06-27 15:46:00 · 2034 阅读 · 0 评论 -
架构之美第五章-架构概述
建筑师、音乐家、作家、计算机设计师、网络设计师和软件开发者都在使用“架构”这个术语,其他人也用(你有没有听说过“食物架构”?),然而不同的用法其结果也不同。建筑与交响乐完全不同,但都有架构。而且,所有的架构师都在谈论他们工作中的美,以及因此而导致的结果。建筑师可能会说,一座建筑应该提供适合工作或生活的环境,而且它应该看起来很美。音乐家可能会说,音乐应该能演奏,包含能够辨明的主题,而且它应该听起来很原创 2012-06-27 16:12:17 · 1776 阅读 · 0 评论