本内容摘录自《架构整洁之道》
1.程序员的三个层次
1.1 普通程序员
可以编写代码,让代码运行起来。
1.2 工程师
可以编写高效、快速、易读、易扩展、易维护、易重用代码,有‘洁癖’、有工匠精神。
1.3 架构师
可以根据业务提出‘最优’的平衡方案,可以设计更轻便、更高级、更灵活系统。高智商、经验足,不怕困难的工程师。
架构师的高级领悟:简单VS简陋、平衡VS妥协、迭代VS半成品
分离控制与逻辑:控制就是之非业务流程代码(多线程,异步等),逻辑就是之业务代码。
1.4 架构师格言
- 莎士比亚
人类的欲望是无止境的,行为却不得不遵从现实的限制。
架构亦如此:架构设计不得不考虑现实的成本与收益,考虑机器的内存与CPU等。
- Grady Booch
软件架构是系统设计过程中重要设计决定的集合,可以通过变更成本来衡量每个设计决定的
重要程度。
- Brian Foote 和 Jsoeph Yoder
如果你觉得好的架构成本太高,那你可以试试选择差的架构加上返工重来的成本。
-Ralph Johnson
所谓软件架构,就是希望再项目一开始就能作对,但却不一定能够做到时做的对的决策的集合。
-Tom Bilb
软件架构是一个猜想,只有通过实际实现和测量才能验证。
-Robert C.Martin
走快的唯一方法是先走好。
2.设计与架构
“架构”(Architecture)往往使用与"高层级"讨论中,这种讨论一般会把“底层级”实现细节排除在外。“设计”(Design)往往用来指代具体的系统底层组织结构和实现细节。
底层设计细节和高层架构信息是不可分割的。他们组合在一起共同定义了整个软件系统,缺一不可。所谓的底层和高层本身就是一系列决策组成的连续体,并没有清晰的分界线。
设计和架构可以理解为一点区别都么有。
3.架构的目标
软件架构的终极目的是,用最小的人力成本来满足架构和维护该系统的需求。
一个架构的优劣,可以用满足用户需求所需的成本衡量。如果该成本低,且在系统整个生命周期内一直都维持这样的低成本,那么这个架构是优良的。如果系统每次发布都会提升下一次变更的成本,那么这个架构是不好的。
软件系统架构设计的核心目的是为了解决当前或未来软件系统复杂度(即软件系统之熵)带来的问题【来源于网络】。
4.行为价值与架构价值
行为价值:把需求文档转换为代码。【业务功能呈现紧急】
架构价值:让软件变得更软,有更强的可变可扩展的的能力。【系统灵活性重要】
埃森豪威尔矩阵
重要紧急 【****】 | 重要不紧急 【***】 |
不重要紧急 【**】 | 不重要不紧急 【*】 |
软件系统的第一价值围度:系统行为,是紧急的,但是并不总是特别重要。
软件系统的第二价值围度:系统架构,是重要的,但是并不总是特别紧急。