zoukankan      html  css  js  c++  java
  • 《一线架构师实践指南》阅读笔记——Pre-architecture(预处理阶段)

    Pre-architecture(预处理阶段)

      引用文章开头的引用“凡事预则立,不预则废。——孔子”,就是说凡事提前准备了,就能成功,否则就会失败,在软件架构设计方面也是同样的道理。

      什么是Pre-architecture

      Pre-architecture是架构设计的最前期阶段,包括:理解需求、建立需求大局观、确定架构设计方向等。它虽然是铺垫性质的阶段,但是对架构实践而言意义重大。所谓“磨刀不如砍柴工”。

      Pre-architecture帮助架构师建立需求理解的大局观,把所有需求定位于ADMEMS二维开发矩阵之中(即业务级、用户级和系统级三级需求和功能、质量属性、约束3类需求之中)。

      遗漏需求往往是架构设计失败的重要原因,用户经常得不到真正满足他们需求的系统,已经成为整个软件行业界一个严峻问题。从需求转入设计时,因为制定方案过程的复杂性,会激增出大量的衍生需求,设计需求是原始需求的50倍之多。ADMEMS矩阵方法让一线架构师告别拙劣的“需求列表”方式,可以体现更复杂、更本质的需求结构,帮助架构师更全面地看待需求、避免遗漏非功能需求,降低架构失败的风险。

      “唯经验论”是错误的,架构师不仅应具有一定的经验,还必须掌握超越具体项目的、更普遍意义的方法和技能。

      “目标不变论”是错误的,架构设计的目标必然是随领域不同、规模不同、条件不同而变化的

    不同的需求在以不同的原理影响着架构设计:

      功能 是发现职责的依据,每个功能都是由一条“职责协作链”完成的,架构师通过为功能规划自责协作链将职责分配到子系统、为子系统界定接口、确定基于接口的交互机制,来推动架构设计的进行。

     

      质量 是完善架构设计的动力,基于当前架构设计的中间结果,进一步考虑质量要求,对架构设计的中间结果进行细化调整,一步步使架构完善起来。

      约束 对架构设计的影响分为几类:直接约束设计决策的约束,转化为功能需求的约束,转化为质量属性需求的约束。

     

    关键需求决定架构,其余需求验证架构:

      功能需求做减法,所有功能中挑选出一个“关键功能子集”作为架构设计驱动力的第1部分;

      质量属性需求做减法,确定架构设计重点支持哪些质量属性,这作为架构设计驱动力的第2部分;

      约束性需求做加法,要充考虑需求方及业务环境因素、用户群及使用环境因素、开发方及构建环境因素、业界当前技术环境因素4类约束”,作为架构设计驱动力的第3部分。

    Pre-architecture阶段的4个步骤:

    1、需求结构化,首先借助二维矩阵,梳理架构影响因素;

    2、分析约束影响,识别隐含的需求(例如上面提到的转化为其他需求的约束

    3、确定关机质量,明确关键质量之间的优先级;

    4、确定关键功能,有针对性的分配架构时间。

  • 相关阅读:
    LeetCode 83. Remove Duplicates from Sorted List (从有序链表中去除重复项)
    LeetCode 21. Merge Two Sorted Lists (合并两个有序链表)
    LeetCode 720. Longest Word in Dictionary (字典里最长的单词)
    LeetCode 690. Employee Importance (职员的重要值)
    LeetCode 645. Set Mismatch (集合不匹配)
    LeetCode 500. Keyboard Row (键盘行)
    LeetCode 463. Island Perimeter (岛的周长)
    115.Distinct Subsequences
    55.Jump Game
    124.Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/jmdd/p/12671618.html
Copyright © 2011-2022 走看看