软件架构设计
历史背景
软件架构
这个词在1969年第一次被提出,但在20世纪90年代才得到快速发展。
为什么需要软件架构设计?
在我个人看来,软件产品的进化本质和生物的进化没有本质区别,都是往成本最低,运行最高效的方向上演进。怎么算是成本最低,运行最高效呢?那就是职责拆分。在一般情况下,现在的软件产品会被分为:操作系统、编程语言、框架、中间件、各类软件方法论等。
那有些同学可能会有疑问,现在技术栈这么多,怎么就算是高效了?其实从技术栈来看,现在软件产品涉及的技术栈是远超20年前的。如果没有这些技术栈,那这些软件背后的这些问题都需要自己考虑,对于大型软件工程来说,那显然不现实。我举个列子来说明:1万年前的人类需要有完整的野外生存技能才能生存下去,如果把我们扔回到原始森林,大家觉得自己能活过几集?所以从这个角度讲,1万年前的人类技术栈是要比现代人更全面,但是为什么现代社会的生产率是1万年前的数万倍,那是因为现代社会在不断进行职责拆分,形成相对固定工作模式的流水线来提升工作效率。在软件工程领域,架构设计就是这样一条流水线,不断对已有的生产要素进行管理和优化。
怎么才能做好软件架构设计?
这个问题其实可以换个角度来想想,不一定非要做架构设计,而是看需要架构设计来解决什么问题。如果是一个5人的初创团队,可能大家直接交流想法并写代码更高效。但对于千人以上的团队可能就需要有架构设计来组织和管理一系列的复杂度。
视图类别
4+1架构设计视图
1995年提出了4+1视图的概念,这些视图是用各利益相关者的观点来描述系统,包括有用最终用户、开发、系统工程师以及项目经理。
UML
为什么需要UML?
软件产品在企业中不断发展,软件本身的技术栈、复杂度和广度都是在不断演进,所以就需要有一种技术能管理软件本身的变化,而UML就能解决好这些问题。UML 1.0在1997年被提出,UML 2.0则主要修订于2005年。
C4 Model
敏捷迭代的应用推广,大家可能已不太注重写架构设计文档和架构设计图。Simon Brown在UML和4+1架构视图的基础上提出了C4 Model
:一种编写架构设计图的规范,当然还有一些生态工具可以用来支持生成C4 Model
Tools。
参考文档
- The Past, Present,and Future of Software Architecture
- 架构设计的目的是什么,你真的知道吗?
- Wiki: Software architecture
- The C4 Model for Software Architecture
- C4 Model - 教你如何画架构图
- 用于软件架构的 C4 模型
- 一文看懂架构图怎么画
- 什么是架构绘图?
- 什么是统一建模语言(UML)?
- 4+1 视景模型
- 架构设计4+1视图的作用与关系
- 什么是敏捷迭代