通过阅读一线架构师实践南这本书,我对架构的整个脉络也有了一个比较详尽的了解,我希望通过这篇文章跟大家交流一下我的心得体会
首先插一句话,阐述一下什么是软件过程:六个基本活动:问题提出,软件规格需求说明,软件设计,软件实现,软件确认,软件演化。软件设计又分为系统设计(建立系统的体系结构等)和详细设计(细化原有的分析对象)。这笼统的过程就是架构师工作的流程。
架构设计的方法体系:
3个阶段,1个贯穿环节:
“Pre-architecture”阶段(简称PA阶段)
“Conceptual Architecture”阶段(简称CA阶段)
“Refined Architecture”阶段(简称RA阶段)
对非功能目标的考虑贯穿整个过程
Pre-architecture阶段:
主要是构建一个二维矩阵
第1步:需求结构化
第2步:分析约束影响
第3步:确定关键质量
第4步:确定关键功能
四大类约束:
1.业务环境的约束(客户或出资方)
上线时间?预算限制?集成需求?
业务领域?业务规则或业务限制?
法律法规或专利的限制?
2.使用环境的约束(用户)
何阶层用户?年龄段和偏好?多个国家?
是否存在电磁干扰或车船移动
3.构建环境的约束(开发者和维护人员)
技术水平,城市分布,磨合程度?
开发管理程度?
源代码保密?
4.技术环境的约束
技术平台、中间件、编程语言的流行度,认同度,优缺点?
技术发展趋势?
确定关键质量属性的原则:严格程度符合领域与规模特点
关键质量属性个数根据项目、产品、平台不同而不一样
确定关键功能的4条规则:
核心功能
必做功能
高风险功能
独特功能(覆盖上述未覆盖的职责)
Conceptual Architecture:
Conceptual-Architecture阶段任务:重大需求塑造做概念架构。
概念架构的定义:满足“架构=组件+交互”的基本定义;对高层组件的“职责”进行笼统界定,并给出高层组件的相互关系;不应涉及接口细节。
概要架构针对重大需求、特色需求、高风险需求,给出高层次的解决方案
基于关键功能
(而不是对所有功能)、借助鲁棒图
(而不是序列图)进行初步设计。
Refined Architecture阶段:落地的5视图方法
5视图方法提出,每个视图,一个思维角度
逻辑视图
物理视图
开发视图
数据视图
运行视图
这个过程需要细化架构,而细化的过程中我们往往需要参照以下的经验:
划分子系统:分层的细化
划分子系统:分区的引入
划分子系统:机制的提取
接口的定义:协作决定接口
选用序列图:杜绝协作图
包-接口图:从结构到行为的桥
灰盒包图:描述关键子系统
循序渐进的螺旋思维
设计模式: 包内结构
设计模式:包间协作
至此,当Conceptual Architecture:阶段完成时,我们的架构过程初步工作就算是大功告成了。