系统:把一群有关联的个体,根据一定的规则组合,得到一个新的个体。
eg. windows | eg. 卫星 | eg. 人体 | eg. ... |
|
广义的理解,万物皆系统!另外,教育系统、行政系统等也可以称之为系统。元宇宙概念之所以会被认可,缘起于此吧
狭义的理解,有工程师的地方就有系统,软件工程师、硬件工程师、建筑工程师、航天工程师等
软件工程师是最幸运也是最不配称之为工程师的一种,因为他们总有机会不停的修bug,代价极小
架构:描述系统的基础结构、各模块的组合规则
架构设计的目的是降低系统实现的复杂度,软件设计领域常有“业务架构”和“系统架构”之说,一个是逻辑视角,一个是物理视角
从逻辑视角,把系统做逻辑拆分后得到的各个单元,叫做“模块”。eg. 人体的呼吸系统、消化系统
从物理视角,把系统做物理拆分后得到的各个单元,叫做“组件”,更准确的理解应该是“零件”。eg. 人体的心、肝、脾、胃、肺
系统设计的顺序,往往是先业务架构后系统架构。业务架构不必拘泥于现有技术,现有技术都是过往的优秀业务架构中沉淀下来的。
eg. 过去十年大爆发的大数据&云计算
一个系统的实现,往往可以有多种架构,系统架构的关键点一是设计二是取舍!
好的架构师,普遍具备如下品质:
架构设计的三个原则:
- 简单原则,越简单的系统越稳定越易维护。
- 合适原则,技术和业务不该背离,盲目追求业界领先毫无意义。
- 演化原则,需求、环境不会一成不变,好的架构一定是有进化能力的,切忌贪大求全过度设计。
架构设计的常规步骤,以设计一辆海陆空三栖交通工具为例
- 需求分析,确定研究对象(交通工具)、用例场景(能在地上跑,能在水里游,能在天上飞)
- 概要设计,确定系统边界(需要飞多高,需要潜多深),明晰系统功能(动力系统、防水性、环境感知、模式切换)
- 详细设计,确定各模块详细的实现方式、上下游依赖等(南孚电池做动力、遥控器辅助感知环境、策略模式管理水—陆、水—空、陆—空等切换过程)
架构设计的基本思路(主要是详细设计阶段)
// 待完善