系统架构是什么?
wiki定义
A system architecture is the conceptual model that defines the structure, behavior,and more views of a system.
系统架构描述的几个要素
静
系统是如何组成,功能在这些组成部分之间是如何划分的。(这里如果想划分合理更像是领域驱动设计)
动
各个系统如何联动,如何完成任务/流程。(系统子模块如何协作与交互)。
细
不同的角度,更详细的刻画系统的全貌。(我理解是子模块内部是如何运作的,细化到方法)。
系统架构在不同层次的体现
总体设计
模块设计
系统设计的方法(要求)
每个组件/模块的功能都应该足够专注和单一。(软件设计的单一职责原则)
子系统/模块 关系简单清晰。(高内聚、低耦合)
需求是系统设计决策的来源。(这里,我觉得软件工程师,不光得逻辑好,而且语文(哲学)也得好)
在设计中,经常要做trade-off
需求是决策的重要依据。
模型/抽象的思维能力。
思考的重点:概念、模型、数据结构、算法。
需要脱离开代码的细节:函数、语言。(看到这里,想起来我实习的时候,带我的老阿里,他和我说,设计的时候不要想细节如何完成,因为详细设计里会有而且肯定可以实现。我想起,读书阶段看到的一个例子,比如说系统设计的时候,某个同学出门,不需要思考到他是如何出门的,是拉开门还是推开门还是别人帮忙用钥匙开门。)