《架构之美》本书围绕5个主题领域来组织本书的内容:概述、企业应用、系统、最终用户应用和编程语言。本书让最优秀的设计师和架构师来描述他们选择的软件架构,剥开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维护、可移植和优雅。

  好的架构师首先关注的并不是系统的功能而是系统需要满足的品质,它指明了功能以何种方式交付才能被系统的利益相关者普遍接受,系统的结果包含了这些stakeholders的既定利益。成功的架构师的两项重要实践是:让利益相关者参与和同时关注系统的功能的品质和功能。

  架构是系统设计的一部分,它突出了某些细节,并通过抽象省略掉了另一些细节。软件系统的架构包括行为上的和结构上的。外部行为描述展示了软件如何与用户、其他设备和外部设备进行交互,也就是需求。结构描述展示了软件如何被划分为多个部分,以及这些部分的关系。

  架构的设计受到许多因素的制约,架构是好是坏并没有统一的标准。这取决于人们对软件的需求、软件被构建和运行的环境,以及软件团队本身的特点等等因素。评价软件好坏有很多指标,例如性能、安全、可伸展性等等。一般来说,这些指标是很难全部满足的,试图改进其中一个往往会对其他指标产生负面影响。所以从某种意义上来说,软件架构是折中的游戏。对于一组功能需求和品质需求,没有唯一的正确架构。

  《架构之美》没有太多空洞的概念和论述,而是抛砖引玉地展示多个实际的项目。通过对它们架构利弊的分析,以及相关的思考,给读者提供了有益的启发。在这里我简单介绍几个其中的例子。

  引用William J. Mitchell为此书所写的文章:“好的建筑师不是通过随意的、蛮力的方式来构造他们的设计,他们肯定会避免笨拙的做法。”“在漂亮的建筑作品所表现出来的不同和复杂性背后,你通常会发现一些关于功能组织和规范秩序的简单而优雅的原则。发现这些原则需要思考,而思考正是建筑的快乐和经验的关键部分。”

  “如果你能弄明白这些原则,就可以通过某种标准编程语言中同样优雅的几行代码构造出这些作品的模型;但如果你弄不明白这些原则,那么肯定要编写更长的、不包含那么多深刻见解的代码。”

  “建筑师会仰慕那些应用了简单优雅原则来实现许多复杂性的架构之美。类似地,软件架构师和程序员也会仰慕那些清晰而准确执行了许多复杂任务的代码之美。科学家会仰慕那些描述了各种不同现象的简单法则之美和它们的解释能力。”  

  架构之美在于其简洁深刻地描述和解决现实的软件设计问题,无论是它为软件开发人员减少的麻烦,还是本身形式上的和谐和整齐,都足以让人赏心悦目。

转载于:https://www.cnblogs.com/mengqimoli/p/6412992.html

《架构之美》阅读笔记06相关推荐

  1. 《软件需求十步走》读书笔记02

    在学了大概一个月的<软件需求>的课程后,我理解的软件需求就是从用户了解到的想要软件有什么功能,通过需求分析人员分析整理出来用户的哪些需求可以实现,哪些是无法实现的.最近通过读<软件需 ...

  2. 《软件需求十步走》阅读笔记06

    开发因需求而来,需求开发以需求规划的成果为主要依据.软件需求开发首先要做的是获取需求,得到目标,系统关联情况以及用例的分析:其次是需求分析,软件系统的可行性,用户接口,系统功能,数据,优先级等在这些需 ...

  3. 《软件需求十步走》阅读笔记5

    第五篇介绍的是需求工程的开发篇,需求的思路,获取,分析,编写,认证是这一部分的关键. 需求开发的思路和过程 需求开发工作是"以技术为核心.以业务为辅助"作为指导思想,以要说清楚软件 ...

  4. 《软件需求十步走》阅读笔记一

    新一代软件需求工程由需求规划.需求开发.需求管理三个分项工程构成. 软件需求的业务活动由需求规划的业务研究.应用建模.系统规划.分析计算.报告编制.规划评审6项业务活动和需求开发的需求获取.需求分析. ...

  5. 阅读笔记:软件需求十步走(三)

    软件需求的验证工作的目的是保证需求分析成果的完整性和正确性,保证软件开发后的软件产品是用户所需要的.软件需求验证的工作的重要性是在于发现修复需求分析中存在的问题.软件需求验证的主要工作是自我验证,用户 ...

  6. 《软件需求最佳实践》——阅读笔记一

    <软件需求最佳实践>--阅读笔记一 首先对SERU模型的四个字母再做一个说明 S:Subject Area,表示子问题域,其核心思想是要通过业务来分解系统,尽量保证业务独立和低耦合. E: ...

  7. 《软件需求最佳实践》阅读笔记01

    1.写一份软件规格需求说明书,我们的需求说明书是要给谁看的,谁又会看那一部分呢?这两个问题是实实在在的,的确如此,苦逼的程序员紧赶慢赶起早贪黑的写了厚厚一摞的文档,恭恭敬敬的交到经理面前,但是经理会认 ...

  8. 《软件需求最佳实践》阅读笔记02

    第4章 需求定义的最佳实践 需求定义,顾名思义,就是要确定项目的宏观需求.换句话说,就是定义项目的业务需求,就是明确项目的目的和范围. 需求定义的时机,应该是项目启动时要解决的问题,也就是在项目立项是 ...

  9. 浪潮之巅阅读笔记06

    浪潮之巅阅读笔记06 发布日期:2017.6.16 第一章 帝国的余辉(AT&T) 贪婪,短视是帝国 (AT&T) 轰然倒塌的根源. 第二章 蓝色巨人( IBM ) 保守的改革者. 专 ...

  10. 软件需求分析--三步走

    软件项目如何进行需求分析,要解决这个问题,我们要分三步走 第一步:通过什么方式去了解需求 了解需求的方式有好几种: (1)直接与客户交谈.如果分析人员生有足球评论员的那张"大嘴", ...

最新文章

  1. 题目 1093:【蓝桥杯】【入门题】字符逆序
  2. MPB:生态环境中心韩丽丽等-土壤病毒组富集及DNA提取
  3. 谷歌发布TensorFlow,用于测试人工智能模型的隐私保护
  4. DataGridView中获取与设置当前选中行以及SelectedRows和CurrentRow注意区分
  5. BAdI to control ALV grid display
  6. 一场赛跑引起的并发知识
  7. express-cli入门_使用Express.js入门
  8. 在Debian64环境下源码安装newLisp v10.6.0
  9. 求不小于N且二进制串包含K个1的最小的数字
  10. Linux系统TTY串口驱动实例详解
  11. php获取客户端IP和php获取服务器端IP
  12. 计算机无法启动打印服务,Win7无法启动print spooler服务报错1068怎么办?
  13. Arduino - 看门狗定时器(WDT:Watch Dog Timer)
  14. 设计模式——使用TypeScript实现代理模式
  15. 详解 .Net6 Minimal API 的使用方式
  16. 微型计算机的 I3 I5是,i3和i5性能差多少?i3和i5处理器的区别 (全文)
  17. CodeMirror 基础配置指南
  18. 基于启发式蝙蝠算法、粒子群算法、花轮询算法和布谷鸟搜索算法的换热器PI控制器优化(Matlab代码实现)
  19. Psychopy | 第4期:实验数据的收集与处理
  20. 【红宝书】OpenGL Demo code编译与运行

热门文章

  1. SQLi LABS Less-6 报错注入+布尔盲注
  2. Python群机器人发送城市天气情况
  3. liquibase mysql_Liquibase MySQL:语法错误附近'????????????????'
  4. SQL Server使用sp_rename重命名约束注意事项
  5. 【UI】为项目添加类似于淘宝筛选列表勾选的ui-choose
  6. 一个MySQL 5.7 分区表性能下降的案例分析
  7. jquery 搜索框自动提示
  8. Centos安装php提示virtual memory exhausted: Cannot allocate memory
  9. 【工具】FormatUtil.ava 常用工具类
  10. netback于kthread遇到cpu affinity问题