架构之美第四章-架构与美
人们在生活和工作中发现美并创造美,软件开发和架构设计也不例外。
架构之美体现了关注点的分离与结合。在软件设计中,设计师需要考虑多方面的关注点。漂亮的架构设计让这些关注点尽可能分离,然后以最简单的机制结合在一起,从而得到高内聚、低耦合的系统。例如在Darkstar项目中,架构师们考虑的重点就是如何将多人在线游戏的游戏逻辑与系统的可伸缩性分离开来,让游戏的开发者只要遵守少量的规则,就能够像编写单机游戏一样编写大规模多人在线游戏。又如REST架构风格,体现了对资源命名、请求处理和资源物理表现形式的关注点分离。资源的名称与请求资源时服务器的处理方式无关,请求者无需知道服务器端采取的技术,并且请求者本来就不关心服务器端的处理技术。资源的物理表示形式可以通过内容协商来决定,使系统可以支持多种物理表示形式,并可以方便地扩展。
架构之美注重表达的简洁性。“Don’t Repeat Yourself”,好的架构致力于消除各种类型的信息重复。从结构化程序设计中的子程序和函数,到面向对象程序设计中的继承,无不体现了对表达简洁性的特殊偏爱。在敏捷方法学中,消除重复则是重构的主要目的之
一。爱因斯坦说:“让它尽可能简单,但不要过于简单。”我们需要考虑所有必须考虑的关注点,然后用简洁漂亮的架构体现我们的关注。同时,简洁的架构之美也降低了软件的总体成本,从这个意义上说,“简洁性”又可以称为“经济性”。
架构之美需要解决实际问题,它既是艺术,也是生活。软件像建筑一样,它的美不能脱离它的实用价值。Bjarne Stroustrup说,人类文明运行于软件之上。每一个软件都有自己的架构,这些架构有的很美,有的不太美。从艺术的角度来说,美是创造矛盾并解决矛盾。架构的多关注点和表达简洁性就是一种矛盾,美丽的架构提供了这一矛盾的解决 方法,让我们的内心产生一种愉快的感觉。
架构之美需要经过专业的学习才能更好地欣赏和创造。和所有的艺术之美一样,不是说不经过专业学习就不能欣赏,但是经过了专业的学习,就能更好地欣赏这种美的种种精妙之处。如果想要创造出这种美,那就必然要经过长期的专业学习。架构之美经过时间打磨。像Facebook面向数据的Web服务、FQL和FML架构,是在对应不同实际需求的过程中逐渐发展起来。在应用程序架构形成的过程中,设计者不断面对新的关注点需求,不断对已有的架构进行修改,并发展出新的架构组件。这就是所谓的“演进式架构”。只有变化是永恒不变的。在架构设计初期,设计者会将一些关注点有意推迟到将来考虑,例如持久和并发。对于这些暂不考虑的关注点,设计者对它们的实现方式尽可能不做任何假定,从而保留更多的可能性,让不同关注点之间的耦合尽可能小。架构之美没有定法。虽然有一些法则可供我们参考,却没有非如此不可的。《金刚经》云:“一切贤圣,皆以无为法而有差别。”
架构之美第四章-架构与美相关推荐
- 【系统架构设计师】第四章 计算机网络
[系统架构设计师]第四章 计算机网络 文章目录 [系统架构设计师]第四章 计算机网络 一.TCP/IP 协议族 二.网络规划与设计 三.网络存储 四.IPv6 五.网络接入技术 六.综合布线 七.物联 ...
- Flink运行时架构 完整使用 (第四章)
Flink运行时架构 完整使用 一.系统架构 1.整体构成 2.作业管理器(JobManager) 1. JobMaster 2. 资源管理器(ResourceManager) 3. 分发器(Disp ...
- 第十四章 架构师领导艺术(待续)
关注人而不是产品 转载于:https://www.cnblogs.com/hzzjj/p/9825808.html
- AI - 深度学习之美十四章-概念摘要(8~14)
原文链接:https://yq.aliyun.com/topic/111 本文是对原文内容中部分概念的摘取记录,可能有轻微改动,但不影响原文表达. 08 - BP算法双向传,链式求导最缠绵 反向传播( ...
- AI - 深度学习之美十四章-概念摘要(1~7)
原文链接:https://yq.aliyun.com/topic/111 本文是对原文内容中部分概念的摘取记录,可能有轻微改动,但不影响原文表达. 01 - 一入侯门"深"似海,深 ...
- 走向.NET架构设计—第四章—业务层分层架构(后篇)
走向.NET架构设计-第四章-业务层分层架构(后篇) 前言: 在上一篇文章中,我们讨论了组织业务逻辑的模式:Transaction Script和Active Record,Domain Model. ...
- 系统架构师学习笔记_第十四章_连载
第十四章 基于ODP的架构师实践 14.1 基于ODP的架构开发过程 系统架构 反映了功能在系统系统构件中的 分布.基础设施相关技术.架构设计模式 等,它包含了架构的 原则 和 方法.构件关系 与 ...
- 走向.NET架构设计—第四章—业务层分层架构(前篇)
走向.NET架构设计-第四章-业务层分层架构(前篇) 前言:在任何一个项目中业务层毫无疑问是最重要的层,所以在设计的过程中,如何组织业务层是至关重要的.本章的讨论将会涉及Flower的架构模式一书中的 ...
- 走向.NET架构设计—第四章—业务层分层架构(中篇)
走向.NET架构设计-第四章-业务层分层架构(中篇) 前言: 在上一篇文章中,我们讨论了两种组织业务逻辑的模式:Transaction Script和Active Record.在本篇中开始讲述Dom ...
- 软件架构师 第一部分 基础篇 第四章 识别架构特性
识别架构特性是创建架构或确定现有架构有效性的第一步. 为给定的问题或应用程序识别正确的架构特性(" -ilities"),不仅要求架构师理解领域问题,而且还与问题域相关利益者合作, ...
最新文章
- 必须掌握的八个【cmd 命令行】[转]
- Linux_系统破坏性修复实验
- JavaScript面试系列:JavaScript设计模式之桥接模式和懒加载
- WPF-003 popup实现下拉列表的问题
- Debian下IPv6设定主地址 Set primary IPv6 address under Debian Linux
- 第五周项目2-对象作为数据成员
- bzoj 1084 DP
- GC算法-分代垃圾回收
- 【Flink】Flink 反压机制 导致checkpoint 失败
- 【idea】 Unsupported class file major version 57
- 【图像加密】基于matlab Logistic混沌图像加密与解密【含Matlab源码 1216期】
- 俄羅斯大神 Ratiborus 的推特
- 铁威马NAS搭建邮件服务器教程
- python快速实现简易超级玛丽小游戏
- 云计算进入深水区 青云QingCloud做行业云是认真的
- 蓝奏云(Lanzou网盘下载链接无法打开的解决方法
- 【苹果群发】苹果推iMessage接口筛选应用程序利用密钥箱生成CSR文书
- 职业规划(三)-----策略篇 (公司)
- 嵌入式开发用到的一些工具
- 解锁 2022 Google 游戏开发者峰会 | 打造高质量的游戏体验
热门文章
- css 标签上 title 和 alt 的区别
- linux常用运行库,软件常用运行库-软件常用运行库scku下载 v3.1.0.0官方版--pc6下载站...
- 西南科技大学 SWUST OJ系统942: 逆置顺序表
- eplan2.6安装教程
- 【Hadoop】Hadoop组件 -之 HDFS组件
- 从图书馆进入网络刷题练习与考试平台
- html 自动阅读,自动阅读软件脚本
- 2021-08-13
- dmx512 java_DMX512控制协议及其实现
- LCD1602中文资料