架构是一个过程,而非一个结果
艺术是不可能被生产出来的,生产出来的,叫艺术品
常见的架构技术:分层,组件化、服务化、标准化、缓存、分离、队列、复制、冗余、代理
好的架构致力于消除各种重复性
让它尽可能简单,但不要过于简单
只有变化是永恒不变的
架构是一种这种,决定改进其中一个特征常常会对其他特征产生负面影响
每种架构都由组件及其关系构成
架构的目的是系统具备所要求的特征
结构在架构设计中将系统化简为交互的组建
建筑师的职责是:1、设计满足客户的需要。2、设计具有概念完整性,处处具有相同的设计原则。3、设计满足法规和安全性要求。 建筑师充当建造者和客户之间的桥梁
目前软件架构师没有历史和传统规定其具体职责
软件架构师的主要设计决定包括:行为和结构。结构指内部组件的组织结构(模块图、类图),行为包括外部行为(需求)、内部行为(内部组件之间的行为)
架构的定义:一组有标注的图纸和功能描述,它说明了设计和构建一个系统时所使用的结构
架构是系统设计的一部分,它突出某些细节,并通过抽象忽略掉另一些细节
系统架构师首要关注的不是系统的功能,而是需要满足的品质
架构师的关注顺序为:品质(可变性、可维护性、可伸缩性)、折中(根据优先级)、
如果计划的架构不能被一个人设计,那么也不能被一个人理解
架构师的主要关注点为:功能性、可变性、性能、容量、生态系统、可构建性、产品化、安全性
系统的结构会反映出构建它的组织的结构。反过来也成立
常见的重要架构结构:信息隐藏结构、使用结构、进程结构、访问结构
信息隐藏结构:模块A的秘密是模块B的秘密的一部分,那么A就是B的一部分(两个程序共享一个秘密时,他们才属于同一个模块)
使用结构:如果程序B必须存在并正常功能,A才能正常工作,就说模块A使用了模块B。使用结构中如果包含环,还里的所有模块都必须存在且正常工作。如果不包括环,则就是层次结构。层次结构要求:一个层次要比其上个层次快9倍,使用频率高9倍
访问结构:如果两个段被同一组程序访问,那他们就该合并
对于一组给定的功能需求和品质需求,没有唯一正确的架构
架构有两种评估方法:确定架构属性(性能建模评估性能、失效数模型评估可靠性和可访问性等)、对架构师提出质询
软件系统就像由建筑和后面的路构成的城市
坏的设计会招致在它上面叠加坏的设计
软件设计的关键品质是内聚和耦合。
好的设计会限制通信的线路,只提供那些绝对需要的
只设计你知道需要的东西
形式永远服从功能
XP没有贬低设计,它贬低的是不必要的工作
YAGNI:如果你不是马上需求,就不要去做
不要在还不知道需求的情况下就作出架构决策,不要猜测