ADMEMS方法体系分为3个阶段和一个贯穿环节,第一阶段就是Pre-architecture阶段,就是预备架构阶段,这一阶段主要是为了全面了解需求,从而把握需求特点,进而确定架构设计驱动力。这一阶段利用了需求层次-需求方面矩阵,这样就可以减少需求的遗漏,需求分析是开发过程中十分重要的阶段,掌握好需求分析,在后期我们会节省大量的开发时间。
需求分析需要考虑到功能需求,质量属性需求以及约束性需求。
书中开始讲述了三个故事,告诉我们在进行需求分析的时候,一定要考虑约束性需求,越早考虑就能够节约越多的时间。我们首先也要考虑那些关键属性是不是有冲突,不要出现关键质量属性之间存在矛盾的情况。软件架构师一定要深入了解需求分类,需求折衷和需求变更方面的知识。
架构设计对系统的成败非常关键,一个好的架构设计一定要对功能需求、质量属性和约束了解十分到位,完成需求层次-需求方面矩阵可以用四步法:
- 需求结构化
- 分析约束影响
- 确定关键质量
- 确定关键功能
Pre-architecture阶段是架构设计最前期的阶段,需求层次-需求方面矩阵能顾体现更复杂更本质的需求结构,能够帮助架构师更全面的看待需求,避免遗漏重要的非功能需求,能够帮助架构师建立需求理解的大局观,降低架构失败的风险。
当我们有了明确的业务需求,了解全面的用户需求,典型的行为需求,我们就可以开始架构设计的工作。
如今业界存在着“唯经验论”和“目标不变论”,架构师凭借着经验,发现需求的遗漏、权衡需求之间的矛盾,确定架构设计的重点目标,但是不同的项目都存在着差异,仅仅凭借经验去进行架构设计是不行的,还要掌握超具体项目的更具有普遍意义的方法和技能。架构师的目标并不是一成不变的,它一定会随着领域的不同,规模的不同而改变。
Pre-architecture阶段的四个步骤:需求结构化、分析约束影响、确定关键质量和确定关键功能,下面将依次进行介绍。
需求结构化:我们不能认为《软件需求规格说明书》就是需求的全部,需求文档往往是不全面的,我们可以利用需求层次-需求方面矩阵来实现需求结构化,需求分为业务级需求、用户级需求和开发级需求,需求的三个层次是站在“不同层次的涉及提出需求所站的立场不同”的角度,将需求划分为三种类型,即功能需求,更多体现各级直接目标要求;质量需求:运行期质量+开发期质量;约束需求,业务环境因素+使用环境因素+构建环境因素+技术环境因素。
分析约束影响:约束是架构设计的上下文,如果忽视了上下文对架构设计方案的限制,最终的架构设计是不合理的,甚至是不可行的。分析约束影响就是分析各个需求项之间的关系,并发现被遗漏的需求,将需求“化杂乱为清晰”的正交表可以作为分析约束影响的基础,即在需求项清晰定位的前提下,找到不同需求之间的关系,发现遗漏需求。
确定关键质量:根据系统所在领域的特点及系统规模等因素,确定架构设计的重点支持哪些质量属性,分析质量属性之间的制约关系,第一时间指定权衡折衷的具体策略。确定关键质量的5大原则:分类合适+必要扩充,一线架构师应选择适合当前项目的分类方式必要时做一定的扩充;考虑多方涉众,要全面的考虑多方涉众的利益;检查性思维,要具有一种防止遗漏关键需求的意识;严格程度符合领域与规模特点,质量严格程度受到系统所处领域及系统规模的影响。
确定关键功能:要遵循核心功能、必做功能、高风险功能和独特功能四条原则确定关键功能子集,同时需要注意关键功能子集的确定并不存在“标准答案”,关键功能所占比例不可能是一刀切的标准。
Pre-architecture阶段是架构设计最前期的阶段,也是最重要的阶段,我们一定要确定好项目需求,制作好需求层次-需求方面矩阵,避免需求的遗漏,多多了解需求方面的知识,对我们的架构设计来说十分重要。