架构之美随笔一------论架构

  翻开这本书之前对架构的理解是很模糊的,之前总是听老师再说架构什么的自己其实一直都不理解何为架构。在书本的开头作者就明确的告诉我们架构是什么?架构是架构师洞见一个待开发系统的内在的结构、规律、原则和逻辑的过程,而不是一个已经完整显示出来的,可以画出图纸的结果。优秀的架构师可以将自己放在系统中去的,在清晰地理解了系统之后,简洁地描述出构建好的体统架构。当架构师拿出他所描述的“作品”的时候,事实上架构这一过程就已经结束了。

  好的系统架构展示了架构完整性。也就是说,它来自于一组设计规则,这组规则有助于减少复杂性,并可以用于指导详细设计和系统验证。设计规则可能包含特定的抽象,这些抽象总是以同样的方式使用,诸如虚拟设备等。这些规则可能表现为一种模式,如管道和过滤器。在最理想的情况下,存在一些可以用于验证的规则,如“在设备失效时,所有某一类的虚拟设备都可以用任何其他同类的虚拟设备代替”,或“所有竞争同一资源的进程必须具有相同的调度优先级”。

  当代的架构师可能会说,待构建的对象或系统必须具有以下特征:

  • 具备客户要求的功能。
  • 能够在要求的工期内安全地构建。
  • 性能足够好。
  • 可靠性。
  • 可用的,并且使用时不会造成伤害。
  • 安全的。
  • 成本是可以接受的。
  • 符合法规标准。
  • 将超越前人以及竞争者

  软件开发项目需要一些人在软件构建时扮演架构师的角色,就像构建或修复建筑时传统的建筑师的角色一样。但是,对于软件系统来说,从来就弄不清楚哪些决定属于架构师的职责范围,哪些决定要留给实现者。定义架构师在软件项目中做什么,比建筑时的类似定义更困难,原因有三个因素:缺少传统、产品无形性和系统复杂性。好的架构师通常来自更好的架构师的现场指导。原因之一可能是有一些关注点几乎在所有项目中都会出现。架构师在项目过程中需要考虑的其实有很多诸如:

  • 功能性(产品向它的用户提供哪些功能?)
  • 可变性(软件将来可能需要哪些改变?哪些改变不太可能发生,不需要特别容易进行这些改变?)
  • 性能(产品将达到怎样的性能?)
  • 容量(多少用户将并发使用该系统?该系统将为多少用户保存数据?)
  • 生态系统(在部署的生态环境中,该系统将与其他系统进行哪些交互?)
  • 模块化(如何将编写软件的任务分解为工作指派(模块),特别是这些模块可以独立地开发,并能够准确而容易地满足彼此的需要?)

  因而架构不易,需要我们在实际的实验和项目中不断的总结和理解,软件架构还是需要多看,多学习了解其它的系统是怎么做的,有哪些可用的组件,对各种方法有思考有借鉴,最终形成自己的想法才是干货。工作和学习当中,还是要多花时间进行思考和设计,不要太急于动手了。

时间: 2024-08-24 07:29:36

架构之美随笔一------论架构的相关文章

架构之美随笔四------最终用户应用架构

这一部分内容作者分为了两个部分来进行描述,通过对GNU Emacs滋长的特性分析以及KDE社区是如何发展ThreadWeaver和Akonadi项目和他们的形成来让我们领略到最终用户应用架构的内涵. 第十一章 GNU Emacs:滋长的特性是其优势 Emacs是由Richard Stallman用Lisp语言编写的唯一的一种优美的计算机编程语言.它很庞大,而且只能编辑纯ASCII的文本文件,也就是说,没有字体.不能加粗.无法加下划线等......Emacs对许多广泛接受的.有用的.有价值的软件工

架构之美阅读笔记01

初识架构,什么是架构,架构美在何处?不同领域的设计师对架构的理解大相径庭:软件架构师对一个好的架构的要求诸如对用户友好,响应及时,易维护,没有重大错误,易安装,可靠性高,可通过标准的方式同其他系统通信等等特点.通过进一步深入了解,更加深了对架构和架构之美的了解. "建造的艺术或科学,特别是设计和建造人类使用的建筑时的艺术或实践,同时考虑到美学因素和实用因素."架构是提供一种特定的方式来解决共同的问题,这种方式具有实用性和美学性:架构是美观.坚固.实用三个方面的平衡配合.好的系统架构展示

《架构之美》阅读笔记一

对于我们学习软件工程的学生来说,怎样来设计软件是一个非常重要的问题,通过阅读<架构之美>这本书,了解到了什么是架构,什么样的架构能够使软件更加的合理. 架构是系统设计的一部分,它突出了某些细节,并通过抽象省略掉了另一些细节.软件系统的架构包括行为上的和结构上的.外部行为描述展示了软件如何与用户.其他设备和外部设备进行交互,也就是需求.结构描述展示了软件如何被划分为多个部分,以及这些部分的关系. 在大多数人的谈论中,架构是一个目标产物,而作为架构师的责任就是去生产它.所以无论如何,架构是可以&q

架构之美阅读笔记之五

今天我学习的是架构之美的第五章--面向资源的架构:在web中.这一章,作者讲述说明了,企业中聚焦信息的架构展示了雨web一样的特点:伸缩性,弹性,架构歉意策略,信息驱动和访问控制等. Web服务的目标是提供建立可复用的业务服务基础的架构,希望能在不影响客户的情况下在各个地方以不同的编程语言异步地访问所有的功能,但是为了实现这个目标所用的技术组合使人感到迷惑,而且没有真正解决实际中组织机构的架构所面临的问题,,出现了一些服务恶化的问题. 面向资源的架构的标识是向命名的资源发起逻辑请求的过程,这些请

《架构之美》阅读笔记四

今天我阅读了<架构之美>第五章面向资源的架构在web中,这一章讲到现在我们过分强调了软件和服务,而却忽视了数据,现在大多数组织机构更容易在web上找到信息,而不是在他们自己的系统中.web在很大程度上是因为它增大了信息共享的可能性,同时也降低了门槛. 面向资源的架构的标识是向命名的资源发起逻辑请求的过程.这种请求由某种引擎解释,转成该资源的物理表现形式,面向资源的架构方法很优雅的实现了一些折中,一方面,对于传统的方法来说,这些方法可能看起来有些奇怪,而且没有尝试过.另一方面,它代表了人们设想和

架构之美读后感

<架构之美>读后感 唐凯风 2014301500366 架构是系统设计的一部分,它突出了某些细节,并通过抽象省略掉了另一些细节.软件系统的架构包括行为上的和结构上的.外部行为描述展示了软件如何与用户.其他设备和外部设备进行交互,也就是需求.结构描述展示了软件如何被划分为多个部分,以及这些部分的关系. 架构的设计受到许多因素的制约,架构是好是坏并没有统一的标准.这取决于人们对软件的需求.软件被构建和运行的环境,以及软件团队本身的特点等等因素.评价软件好坏有很多指标,例如性能.安全.可伸展性等等.

架构之美阅读笔记之三

今天我学习的是架构之美的第三章--伸缩性架构设计.这一张也是涉及到了第二部分,企业级用用架构.首先我们要引出,伸缩性架构设计,也就是为什么要伸缩性的架构.主要原因是,我们在设计系统架构Ⅹ,要确保系统在伸缩时的弹性.为了适应使用软件架构的不同应用程序,使用该架构的程序员等,软件系统架构必须要具有伸缩性. 要是系统架构是伸缩性的,则系统应该是分布式的,并发的.就像书中讲到的Darkstar项目,由于在线人数,不同时间等的影响,游戏的负载情况也会不同,服务器的数量,连接方式,为了应对这些不同的情况,也

《架构之美》阅读笔记02

第二部分(企业级应用架构):        第3章[伸缩性架构设计]:        从本部分开始,本书就开始介绍不同的架构设计.本章介绍的是伸缩型架构设计,使用的是Darkstar项目来举例.Darkstar是一个游戏虚拟项目,根据本类通常的实际情况,数据服务器通常需要拥有伸缩性,由于人数.时间.热度等多方面的影响,游戏的负载会实时变化,游戏的服务器的数量.连接方式也就需要根据此来变化,以应对不同的需要.游戏的性能最本质的原因来自于架构及其实现,优化整体架构是实现高性能不可获取的关键步骤.通过

《架构之美》这本书的翻译版就是彻头彻尾的垃圾

上周手贱,入了<架构之美>的翻译版,花了我1.5只大虾币,今天用香皂好好洗了洗手准备瞻仰来着,看了一段序就把我雷倒了. 摘取一句大家瞻仰一下: 每个事实应该是单一的.不可分解的单元(我不理解什么是事实,我从来也没有见过,什么是不可分解的单元?单元好吗?) 其他的就不说了,我已经没有勇气读不下去了,感觉话都读不通顺了,老师教育我们说翻译要遵循“信.达.雅”的原则,咱是程序员,不是读名著,这些要求有些高,但至少句子要通顺吧,约定的术语要有吧,不要老是找些外行指导内行,几位翻译者的学历和经历都很NB