架构制图:工具与方法论( 二 )
与建筑、汽车或者任何其他工程行业一样 , 软件在落地实现(编码)之前也需要先有蓝图;而其中最重要的一份蓝图 , 就是架构设计 。 没有架构 , 仅凭程序员自己脑子里的模糊设想 , 也许你可以像传统手艺人一样独自创造出一些美好有用的小东西(比如 Linux 0.01 版本) , 但不太可能以工程的方式协同一个团队共同建造起一个与摩天大楼规模类似的复杂软件系统(比如现代的 Linux 系统) 。 一方面 , 人类的思维能力终归有限 , 必须依靠架构这种高度抽象和简化的蓝图 , 才能让复杂系统的创造、理解、分析和治理变得可行;另一方面 , 量级达到一定程度的大型系统 , 也只能依靠多人分工合作才能完成 , 而架构也正是多人沟通协作的重要基础 。
2. 架构是沟通协作的基础
本文插图
本文插图
软件项目的最终价值产出就是软件系统 , 而架构作为软件系统的灵魂和骨架 , 可以起到如下作用:
- 理解对齐:所有软件系统的目的都是为了实现用户需求 , 但实现的途径有无限种可能性(相比传统工程行业 , 软件的灵活性更大、知识迭代更快) 。 架构设计就是去选择其中一条最合适的实现途径 , 因此其中会涉及非常多关键的选路决策(为什么要这么拆分?为什么选择 A 技术而不是 B?) 。 这些重要的技术决策需要通过架构描述这种形式被记录和同步 , 才能让项目组所有成员对整个系统的理解对齐 , 形成共识 。
- 工作量化:项目管理最重要的步骤之一就是工时评估 , 它是确定项目排期和里程碑的直接依据 。 显然 , 只通过 PRD / 交互图是无法科学量化出项目工作量的 , 因为很难直观判断出一句简短需求或一个简单页面背后 , 究竟要写多少代码、实现起来难度有多大 。 有了清晰明确的架构之后 , 理论上绝大部分开发工作都能做到可见、可预测和可拆解 , 自然而然也就能够被更准确地量化 。 当然 , 精准的工作量评估在 IT 行业内也一直是个未解之谜 , 实际的工期会受太多未知因素影响 , 包括程序员的技能熟练度、心情好不好、有没有吃饱等 。
- 标准术语:编程作为一种具有创造力的工作 , 从某种角度看跟写科幻小说是类似的 。 好的科幻小说都喜欢造概念 , 比如三体中的智子 , 如果没看过小说肯定不知道这是个啥玩意儿 。 软件系统在造概念这一点上 , 相比科幻小说只有过之而无不及 , 毕竟小说里的世界通常还是以现实为背景 , 而软件中的世界就全凭造物者(程序员)的想象(建模)了 。 稍微复杂一点的软件系统 , 都会引入一些领域特定甚至全新创作的概念 。 为了避免在项目过程中出现鸡同鸭讲的沟通障碍和理解歧义 , 就必须对描述这些概念的术语进行统一 。 而架构的一个重要目的 , 就是定义和解释清楚系统中涉及的所有关键概念 , 并在整个架构设计和描述过程中使用标准和一致的术语 , 真正做到让大家的沟通都在一个频道上 。
- 言之有物:就跟讨论产品交互时需要对着原型图、讨论代码细节时需要直接看代码一样 , 架构是在讨论一些较高维技术问题时的必要实物(具体的实物化形式就是所谓架构描述) 。 否则 , 要么一堆人对着空气谈(纸上谈兵都说不上) , 要么每次沟通时都重新找块白板画一画(费时费力且容易遗落信息 , 显然不是长久之计) 。
- 知识沉淀 & 新人培训:架构应该被作为与代码同等重要的文档资产持续沉淀和维护 , 同时也是项目新人快速理解和上手系统的重要依据 。 不要让你的系统跟公司内某些祖传遗留系统一样 —— 只有代码遗留了下来 , 架构文档却没有;只能靠一些口口相传的残留设计记忆 , 苦苦维系着项目的生命延续 。
推荐阅读
- 上游新闻|?你确定?,扫个厕所要18道工序、46种工具
- Win10又绕过用户强制重启 只为安装Office网页版工具
- 公司|华锐工具:今年科创板过会第145家 招商证券过5单
- ITheat热点科技|锐龙 5000 移动低压处理器曝光:Zen 3 架构,AMD
- |航母时速大约是30节,如果将其换算为地面交通工具,到底有多快?
- 假如我能勇敢点|独立站及外贸免费工具,溪致科技推荐8个亚马逊
- 趣头条|有了简易洗车工具套装,又可以省一大笔开销!
- 兔玩电竞|剑姬凯隐成版本答案吸血流剑姬统治上路凯隐晋升打野一哥阿狸转型工具人中单魔切女枪崛起总结,10.21强势套路推荐
- 趣头条途观搭载随车小型工具箱,小问题自己修省钱更方便!
- 兔玩电竞|10.21强势套路推荐 剑姬凯隐成版本答案吸血流剑姬统治上路凯隐晋升打野一哥阿狸转型工具人中单魔切女枪崛起总结
