2018第32周总结

本周主要看了《一线架构师实践》与ADMEMS相关的内容,里面有很多理论对日常工作中的架构实践是有帮助的,应该努力去把学到的认同的理论在实践中检验,否则没卵用。

ADMEMS是Architecture Design Method has been Extended to Method System的简称,是由CSAI顾问团架构设计专家组于2009年11月在第六届中国软件大会上公开发布的一个软件架构设计方法。《一线架构师实践》一书详细的介绍了ADMEMS体系。它将软件架构的过程分为三个阶段和一个贯穿环节,进而覆盖“需求进,架构出”的架构设计的完整工作内容。基中Pre-Architecture阶段,意在全面理解需求,从而把握需求特点,进而确定架构设计驱动力。而Conceptual Architecture阶段所关注的是如何通过关键功能、关键质量及业务需求和约束来塑造概念架构。Refined Architecture阶段,则主要通过5视图方法进行细化架构的设计。而非功能需求不可能“速战速决”,因此,对于非功能需求的关注会贯穿架构设计的整个过程。

架构阶段

目标

方式方法

现实工作场景

预架构阶段

全面理解需求;需求结构化,摒弃“需求列表”,建立二维需求观(ADMEMS矩阵)。

使用ADMEMS矩阵方法,捋清需求间关系和发现衍生需求。

1、与人:与项目经理、需求分析师等内部需求人员了解需求;与客户了解需求(不建议架构师做需求分析师角色)。
2、与物:了解《需求规格说明书》等需求文档。"
3、对需求有什么问题,反馈给售前或销售,可能会参与拜访客户或电话会议。
4、销售或售前有时会要求提供一个大致的工作量,以便他们初步评估项目可行性。

概念架构

高层组件及其关系

1、初步设计,基于关键功能,借助鲁棒图进行以发现职责为目的的初步设计(不是必须)。
2、高层分割,将复杂系统切分为多个二级系统或多个子系统。
3、考虑非功能需求,采用ADMEMS推荐的目标-场景-决策表。

1、参与内部讨论:项目可行性分析、讨论,从需求、技术、人力、风险等角度提供建议。
2、项目投标准备:参与投标团队的技术方案编写,编写系统架构章节,解决招标书上技术问题的问答。
3、参与项目讲标:作为讲标团队成员参与项目讲标,负责技术问答环节的应对。

细化架构

5视图法

在项目概要设计阶段,进行架构设计,制定规范和约定,为详细设计提供指导。

实现

详细设计
编码实现

架构设计形成详细设计文档

在项目实现阶段,对开发人员提供规范指引和技术支持。

准备架构阶段的目标是理解需求,建立需求大局观,确认架构设计方向。具体分为四个步骤:

  1. 需求结构化;
  2. 分析约束影响;
  3. 确定关键质量;
  4. 确定关键功能。

在需求结构化时可采用ADMEMS矩阵,又称“需求层次——需求方面”矩阵,将需求按业务、用户、开发分层,然后在按需求、质量、约束方面分类,从而建立“二维需求观”。

概念架构阶段目标是针对重大、特色、高风险需求,给出高层的解决方案,形成稳定的高层架构设计成果。具体分为三个步骤:

  1. 初步设计:基于关键功能,借助鲁棒图进行以发现职责为目的的初步设计;
  2. 高层分割:对系统进行高层切分为多个二级子系统或具体子系统,实践中常用方式为分层,如逻辑层、物理层等;
  3. 考虑分功能需求:通常采用的方法是目标——场景——决策表。

细化结构阶段目标是输出系统最终的细化的架构设计成果物,用于指导开发实践。主要通过5视图法对细化架构进行实践,不同视图源于不同的思维角度及不同的技术关注点,通过错落有致地将众多技术关注点划分“群落”,“群落”内高聚合,“群落”间松耦合。具体使用的5视图法如下:

  1. 逻辑架构:关注如何划分子系统、如何定义接口、如何运用质疑驱动的思维套路等;
  2. 物理架构:关注硬件选择与物理拓扑、软件到硬件的映射关系、方案优化;
  3. 运行架构:关注确定引入哪些控制流、确定每条控制流的任务、处理相关问题、进一步考虑控制流之间的同步关系等;
  4. 开发架构:关注将“逻辑职责”映射为“程序单元”、开发技术选型、“程序单元”间的关系等;
  5. 数据架构:关键是确定数据分布方案。数据分布的6种策略:独立、集中、分区、复制、子集、重组;

非功能目标的设计环节。非功能目标的设计是以场景技术为核心手段、以目标-场景-决策表为思维工具致力于支撑非功能目标的理性设计过程。经过非功能目标的设计,将使得架构设计更有针对性、可操作性更强、避免过度设计,同时便于系统升级时参考。

原文地址:https://www.cnblogs.com/doit8791/p/9462339.html