高层架构&底层设计细节
架构”这个词往往使用于“高层级”的讨论中。这类讨论一般都把“底层”的实现细节排除在外。而“设计”一词,往往用来指代具体的系统代码组织结构和实现细节。但是,从一个真正的系统架构师的日常工作来看,这样的区分是根本不成立的。
底层设计细节和高层架构信息是不可分割的。只考虑高层架构,而不考虑设计细节会导致架构师脱离一线,导致架构师永远不了解具体开发代码时会遇到什么问题。而只考虑设计细节而不考虑架构会导致视野的局限性,没有全局观,设计出来的系统可能边界不清楚,组件划分不明确,系统最终成为一团谁也理不清的乱麻。
所以一个好的架构师首先要做高层架构来梳理整个系统的边界,组件划分,从而构建一个职责清晰的架构视图,然后还要对架构进行推演,思考具体实施时会遇到哪些问题。
软件架构的终极目标
软件架构的终极目标是,用最小的人力成本来满足构建和维护该系统的需求。
构建:从0到1完成系统开发的成本
维护:新增功能,修改已有功能的成本。(相比构建更重要)
构建从0到1的系统,会很快,不是问题,问题是后期的功能迭代的成本。如果软件架构比较糟糕,那么会导致后期迭代很小的功能也需要花费大量的人力资源。如果在构建系统时通过合理的模块划分,分层,抽象,根据SOLID设计原则来构建软件,则会把系统划分为边界良好的组件,然后提供足够的扩展性,从而会使迭代功能成本比较低
好的设计和架构可以减少系统的构建和维护成本,提高生产力。
行为价值&架构价值
行为价值:根据需求实现的