设计一个系统的过程,就是建造一座大厦的过程,架构设计的质量直接决定了大厦的质量 。
在我们进行系统的架构设计时 , 总是会遇到一系列的问题,比如一个大型系统的架构应该如何起步,从哪里开始设计?系统是否应该划分成多个模块,应该怎么划分模块才更加的合理?亦或是觉得产品提出的需求非常不合理,完全影响我们正常的架构设计!对于非功能性的需求,我们是否可以得过且过 , 不去重视?
这些问题,让我们在刚开始架构设计时手足无措,但是随着我们完成一个又一个的系统架构设计以后,发现架构设计是有章法可循的,只要我们学习这些章法和套路,并且在工作过程中不断的积累与沉淀,就会行成一个完整的架构设计方法论,面对新的大型系统架构设计 , 也会一步一步有节奏进行,最终完成整体的架构设计 。
架构设计的原则架构设计需要遵循一些原则:
1、架构设计需要方法体系
架构设计并不是一个” 单一的方法 “,直接拿来进行架构设计,而是多个各具特色的方法 , 组成的 “方法体系”,并且这个体系随着新技术的发展还会不断进化 。
2、架构设计是质疑驱动
架构设计是质疑驱动的过程,在” 需求驱动 “的基础上,我们需要不断的质疑我们架构设计的中间成果 , 进一步通过 “质疑”,引入更多的 “质量属性” 及更多 “功能场景” 。
3、多阶段下的多视图
架构设计,是多阶段还是多视图?架构设计首先是 “多阶段的” , 我们将架构设计划分成多个阶段,在每个阶段中才会考虑” 视图 “这个维度 。
架构设计的三个阶段
阶段一、 预备阶段
预备阶段的目标:全面理解需求,把握需求特点 , 确定架构设计驱动力 。
在预备阶段,我们需要全面的梳理与理解需求,不放过任何一个需求细节 。同时分析需求产生的各项质量属性与系统约束 , 同时兼顾这些约束进行架构设计,才能不遗漏重大的架构属性 。
阶段二、 概念架构
概念架构,必须考虑包括功能 , 质量 , 约束在内的所有方面的需求 。
阶段三、 细化架构
在细化架构阶段,我们从五个不同的角度出发,设计五个视图 , 完成整个系统全方位的设计 。
架构设计的一个贯穿环节
对非功能需求的考虑:非功能需求无法一蹴而就,因为在设计的过程当中,会有新的需求不断的被发现,即使设计完成,在开发阶段 , 都会有影响非功能需求的约束出现,所以在整个阶段,都应该注意非功能需求 。
预备架构阶段分析预备架构的最重要的目标,是建立需求大局观,把握需求特点,确定架构设计驱动力 。通过对需求的详细分析,有一个宏观的需求感知,同时还要兼顾系统的质量要求和约束对系统设计造成的制约条件 。
需求结构化
需求是有结构的,而不是零散的需求点,只有将分析后的需求结构化 , 才能宏观的感知整个需求 。可以借助 ADMEMS 二维矩阵,将架构影响因素,梳理脉络 。
例如以下矩阵分析,将需求划分为多个维度,横向上从” 广义功能 “,” 质量 “,” 约束 “三个方面分析,广义功能是指需求需要满足的基本功能,及产品或业务人员的直接要求 。质量维度则是系统设计时需要考虑的高并发,高可用,可拓展等技术设计维护,保证系统在满足基本需求的同时,同时对后续系统进化发展以及极端场景(例如:用户量激增,秒杀)等的满足 。约束则是系统设计时的一些制约,例如上线日期,上线环境,开发人员技能水平等 。纵向上划分为” 业务级需求 “,” 用户级需求 “,” 开发级需求 “三个维护,” 业务级需求 “是指产品或业务人员提出的基本要求 , ” 用户级需求 “则是从系统的使用用户角度出发 , 发现的例如用户电脑操作水平,用户使用习惯等潜在需求,而” 开发级需求 “,则是从研发人员角度出发 , 发现的例如可拓展,可测试,技术环境等不同维度的需求 。
通过将需求结构化,我们可以全面的分析整体的需求,对需求进行整体的理解,同时也可以从不同的角度发现系统制约条件,在系统设计的最开始阶段就着手设计,防止遗漏重大约束导致架构设计失败 。
推荐阅读
- 架构模式解析,探索常见架构模式的优势与适用性
- GPU架构知识
- 桑葚该如何挑选 桑葚该如何挑选才甜
- 高德地图可以测量距离,如何在地图上面测量距离
- 如何使用拉手网团购,拉手网是个什么样的网啊?
- 装修刮腻子是如何做的
- 微信朋友圈如何自定义位置
- 花生仁怎么做好吃,剩的油炸花生米怎么吃?
- 四季茶花的养殖方法 四季茶花的养殖方法家里如何养好茶花
- 外地人来山东健康通行码如何申请