胶片上展示的彩色方块不管有多么好看,多么简单易懂,它也无法完全代表一个软件架构,它只能是该软件架构的一个视图,而非全部。
建筑是有标准材料建成的,遵守“受重力”这个自然规律。
其中一个路线:导出充斥着大量的投机性的通用设计。
我们看到的和所描述的,都是软件架构的一种表现形式。
软件开发工程师唯一偷懒的地方在于–持续低估那些好的、良好设计的、整洁的代码的重要性。
最重要的事情:让团队里 的工程师认真对待自己的代码架构,对其质量负责。
建模
数据建模
数据建模的原则:数据封装,对外提供接口
架构设计要合理划分组件的边界,比如核查机制与核查业务是有边界的
做好边界两边的隔离,最小知识原则,两边依赖于稳定的东西
插件模式:
用户界面和数据库都成为业务逻辑的插件
修改用户界面,不影响业务逻辑,这些组件就可以被独立部署
软件架构设计的职责:分析出稳定的和不稳定的,把复杂问题拆分成多个简单的小问题,分治、分层
高扇入的模块往往是通用的模块
基于接口(抽象类)的协作是机制,基于具体类的协作算不上机制。
没有提取机制的情况下,机制是隐式的重复代码。
框架是可以通过某种回调机制进行扩展的软件系统或子系统半成品
软件模块划分的目的是分治:把复杂的问题拆解为几个简单问题的组合。