架构设计深入学习01--概论与预架构阶段
Posted 越努力越幸运,越磨砺越光芒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了架构设计深入学习01--概论与预架构阶段相关的知识,希望对你有一定的参考价值。
完成一个比较复杂的项目后,终于有空看看书了,这次决定将架构设计的方法论进行一次系统的学习,借助温昱大师的《一线架构师》一书。我将把这次学习分成三部分,分别是概论&预架构阶段&非功能目标的方法论、概念架构阶段、细化架构阶段。此外,今天看到老妈很喜欢的大幂幂了,真心很美,继续加油学习了,为成为一名合格的程序员而努力。
系列文章
-
架构师的4个困惑:
4个实际问题的困惑 | 将系统划分模块,如何更合理? | 细化架构阶段 |
大系统架构设计,如何起步? | 概念架构阶段 | |
总觉得需求很糟糕,影响了架构设计 | 预架构阶段 | |
非功能需求重要,但如何设计 | 非功能目标的方法论 |
软件开发在中国也已经有了超过30年的发展,在当前情况下,软件架构的知识体系已经建立,其方法论已经出现,借用温大师的话"架构设计是质疑驱动的"。
需求 = 功能 + 质量 + 约束(架构设计的上下文)
-
架构设计是多阶段、多视图的
阶段1 | 把握需求特点,确定架构驱动力 |
阶段2 | 根据重大需求,确定概念架构 |
阶段3 | 细化架构设计,关注不同视图(4+1视图) |
作为架构师,首先面对的风险是需求,既要关注功能需求,还要平衡质量属性,且不能遗漏约束性需求。这部分最重要的是引入一个新的观念,就是二维的需求观,可以通过需求层次-需求方面矩阵来表示。其应用法则为:从上到下、从左到右;重点是质量属性遗漏。
功能 |
质量 |
约束 |
|
业务级需求 |
业务目标 |
快、好、省 |
技术性约束、法规性约束、标准性约束 技术趋势、竞争因素与对手 遗留系统集成、分批实施 |
用户级需求 |
用户需求 |
运行期质量 |
用户群特点、用户水平、多国语言 |
开发级需求 |
行为需求 |
开发期质量 |
开发团队技术水平、分布情况、磨合程度、业务知识 管理:保密要求、产品规划 安装、维护 |
预架构阶段需要的活动有:需求结构化、分析约束需求、确定关键质量、确定关键功能。在实践中,只要有了明确的业务需求、全面的用户需求和典型的行为需求,就可以开始软件架构设计了。通常来说,不同需求影响架构的不同方面,如下表所示。
操作 |
基本原理 |
对架构设计的影响 |
功能 |
功能是发现职责的依据 |
每个功能都是由一条"职责写作链"完成的,架构师通过为功能规划职责协作链、将职责分配到子系统、为子系统界定接口、确定基于结构的交互机制,来推动架构设计进行 |
质量 |
质量是完成架构设计的动力 |
基于当前架构设计中间结果,进一步考虑具体质量要求,进行细化、调整 质量和功能功能影响项目 |
约束 |
约束对架构设计的影响分为几类 |
直接决定设计决策的约束(系统运行与Unix) 转化为功能需求的约束(本银行遵循人民银行标准引出"利率调整"功能) 转化为质量需求的约束(操作人员水平较差引出易用性需求) |
确定关键质量的五大原则:分类合适+必要扩充、考虑多方涉众、检查性思维(checklist)、识别矛盾+划定优先级、严格程度符合领域与规模特点。接下来首先介绍识别矛盾的工具,质量属性关系矩阵,这部分最重要的就是权衡。
性能 | 安全性 | 持续可用性 | 可互操作性 | 可靠性 | 鲁棒性 | 易用性 | 可测试性 | 可重用性 | 可维护性 | 可扩展性 | 可移植性 | |
性能 | - | - | - | - | - | - | - | - | ||||
安全性 | - | - | - | - | - | |||||||
持续可用性 | + | + | ||||||||||
可互操作性 | - | - | + | + | ||||||||
可靠性 | - | + | + | + | + | + | + | |||||
鲁棒性 | - | + | + | + | ||||||||
易用性 | - | + | - | |||||||||
可测试性 | - | + | + | + | + | + | ||||||
可重用性 | - | - | + | - | + | + | + | + | ||||
可维护性 | - | + | + | + | + | |||||||
可扩展性 | - | - | + | + | + | + | ||||||
可移植性 | - | + | - | + | + | - | + |
通常
以上是关于架构设计深入学习01--概论与预架构阶段的主要内容,如果未能解决你的问题,请参考以下文章
一线互联网架构师,带大家深入学习微服务架构的设计原则,快上车