[架构之路-211]- 需求- 软架构前的需求理解:ADMEMS标准化、有序化、结构化、层次化需求矩阵 =》需求框架

目录

前言:

一、什么是ADMES:

首先,需求是分层次的:

其次,需求是有结构的,有维度的

再次,不同层次需求、不同维度需求之间可以相互转化(难点、经验积累)

最终,标准化的ADMEMS需求矩阵

二、软架构前的需求理解

1. 目标

2. 时机

3.  四个步骤

三、最佳实践过程

第一步:获取业务功能需求

第二步-1:获取质量属性

1. 开发期质量

2. 运行期质量

 第二步-2:分析约束影响

第三步:确定关键性需求(对架构设计影响较大的需求)

1. 确定关键功能启发规则,可以借鉴四象限法,下面是4个启发规则:

2. 确定关键约束

3. 确定关键质量(影响架构设计的质量需求)

第四步:将约束衍生为质量属性及功能、将质量属性衍生为功能需要

第五步:将关键约束衍生为功能

第六步:根据功能提炼出非功能性需求

第七步:最后:输出结构化需求ADMEMS矩阵


前言:

在架构架构设计之前,架构师首先要弄清楚目标系统功能需求、非功能需求和约束条件,这些都会影响最终的架构设计。系统软件或硬件需求规格说明书是系统需求的承载体,当然,需要分析并非是架构师的主要职责,需求规格说明书是产品经理或系统工程师或系统分析师的主要职责。 

本文就是讨论,如何通过ADMEMS方法论,使用结构化和层次化的需求矩阵来表达不同层次、不同维度的需求!!!

一、什么是ADMES:

ADMEMS:Architecture Design Method has been Extended to Method System,是一种架构设计的方法论,该方法论原本是用于架构设计的,但需求是架构的输入,为了更好进行标准化架构设计,该方法论对输入的需求也进行了标准化、结构化和层次化。UML不同的是,UML是一种建模语言,可以为需求建模,也可以为涉及建模,而ADMEMS是一种方法论,因此该方法论对需求定义提供的一种方法和框架,不涉及需求的表达方式。

首先,需求是分层次的:

可以看出,需求的三个层次,是站在“不同层次的利益相关者提出需求所处的立场不同”的角度

业务级需求:包含用户或者出资人要达到的业务目标、预期投资、工期要求,以及要符合哪些标准、对哪些遗留系统进行整合等约束条件

用户级需求:用户使用系统来辅助完成哪些工作?对质量有何要求?用户群及所处的使用环境方面有何特殊要求?

开发级需求:开发人员需要实现什么?开发期间、维护期间有何质量考虑?开发团队的哪些情况会反过来影响架构?

其次,需求是有结构的,有维度的

其次,,将需求划分为三种类型或三个维度:

功能需求:建设的目标是什么?

质量属性:运行期质量+开发期质量

约束需求:业务环境因素+使用环境因素+构建环境因素+技术环境因素
从3个层次到3个类型这就是需求的转化过程。

再次,不同层次需求、不同维度需求之间可以相互转化(难点、经验积累)

层次间转化:业务需求 =》 用户级需求 =》 开发级需求

维度间转化:约束条件 =》 质量需求 =》 功能需求

维度间转化:功能需求 =》 质量需求

最终,标准化的ADMEMS需求矩阵

如下就是ADMES标准化、结构化、层次化需求矩阵的形态:

二、软架构前的需求理解

1. 目标

  • 结构化、层次化的方式理解需求
  • 建立需求的大局观
  • 降低架构失败风险
  • 明确架构设计的驱动力(哪些是核心需求)
  • 尽早开始架构设计

2. 时机

  • 有了明确的业务需求
  • 了解全面的用户需求
  • 有了典型的行为需求

3.  四个步骤

三、最佳实践过程

第一步:获取业务功能需求

根据客户需求,整理出功能需求列表(一级模块、二级模块)。常用的工具电子表格或者思维导图。

第二步-1:获取质量属性

1. 开发期质量


2. 运行期质量

 
第二步-2:分析约束影响

    主要从业务环境、使用环境、构建环境和技术环境方面考虑,采用推导法则和查漏法则进行。

    上面我们系统化的梳理了系统的业务功能、质量属性及约束内容,下面我们采取需求层次-需求类型二维矩阵来找出关键功能、关键质量属性及关键约束。

用户:关心的是运行期间的质量

开发者:关心的是开发期的质量

第三步:确定关键性需求(对架构设计影响较大的需求)

采用ADMEMS二维矩阵,依次确定三个层次的功能、质量和约束

1. 确定关键功能启发规则,可以借鉴四象限法,下面是4个启发规则:

  1. 核心功能
  2. 必做功能
  3. 高风险功能
  4. 独特功能

2. 确定关键约束

  • 首先,把约束尽可能全面进行罗列
  • 其次,分析约束面向的功能、质量方面的转化
  • 最后,确定这些约束转化后的功能、质量是否重要

3. 确定关键质量(影响架构设计的质量需求)


第四步:将约束衍生为质量属性及功能、将质量属性衍生为功能需要

约束条件 =》质量属性、质量需求 =》 功能需求

约束条件 =》 功能需求

约束条件,最终要体现到软件的实现上。

第五步:将关键约束衍生为功能

比如,终端客户的人员的计算机水平参差不齐 =》 操作简单的需求、文字简化、尽可能可视化等功能需求!!! 

第六步:根据功能提炼出非功能性需求

约束条件和功能需求,背后都会隐藏了一下质量需求!!如性能要求。

第七步:最后:输出结构化需求ADMEMS矩阵

        通过上述的几个环节,我们把不同类型的约束转化为质量属性及功能需求,最终我们形成了最终的需求二维矩阵,这将为我们的架构指明方向,后续我们再做架构的设计及规划的时候就能够做到有的放矢,不会走错方向。

 ADMEMS矩阵把零乱的需求转换成了有序的、结构化的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/29772.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【雕爷学编程】Arduino动手做(114)---US-015高分辨超声波模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

Floyd 判圈算法(Floyd Cycle Detection Algorithm)

Floyd 判圈算法(Floyd Cycle Detection Algorithm) 前言 Floyd判圈算法属于对指针操作的算法,它一般需要且仅需要两个指针,通过设定不同的指针移动速度,来判定链表或有限状态机中是否存在环。人为规定移动较快的指针称为快速指针(fast poin…

给初级测试工程师的一些避坑建议

我遇到的大多数开发人员都不怎么热衷于测试。有些会去做测试,但大多数都不测试,不愿意测试,或者勉而为之。我喜欢测试,并且比起编写新的代码,愉快地花更多的时间在测试中。我认为,正是因为专注于测试&#…

【Turfjs的java版本JTS】前面讲了Turfjs可以实现几何计算,空间计算的功能,如果后端要做这项功能也有类似的类库,JTS

JTS Java Topology Suite 几何计算: 1. 前端js就用这个 Turfjs的类库。参考网站: 计算两线段相交点 | Turf.js中文网 2. 后端java语言就可以用 JTS这个类库,参考网站: JTS参考网站: 1. https://github.com/locatio…

Windows11 安装 CUDA/cuDNN+Pytorch

一、准备工作: 查看torch版本:进入python交互环境: >>>import torch >>>torch.__version__ 查看cuda版本:CMD窗口 nvcc --version 如果版本不一致,需要卸载再重装。 二、安装 Windows 安装 CU…

unity制作愤怒的小鸟

文章目录 一、 介绍SpringJoint2D 、line renderer制作发射绳基类bird脚本的基础功能给bird添加飞行拖尾效果pig类游戏胜利的小星星烟花界面摄像机跟随移动游戏失败的界面多种小鸟的制作:黄鸟、绿鸟、黑鸟地图选择关卡选择数据保存制作多个关卡场景异步加载游戏全局…

go 调试利器之pprof指标分析

文章目录 概要一、指标类型1.1、堆栈指标1.2、CPU指标分析1.3、http-pprof 二、go tool pprof2.1、可视化2.2、CPU火焰图 概要 Go语言原生支持对于程序运行时重要指标或特征进行分析。pprof是其中一种重要的工具,其不仅可以分析程序运行时的错误(内存泄…

绕过激活锁 ,拯救一台旧手机iphone

一台旧的iphone忘了apple id账号和密码了,导致锁住了 某宝上解锁要花50, 不是舍不得花钱,作为一个搞技术的,实在觉得花钱有点丢人 经过一番探索 最终确定了有用的流程 并贴出来 亲测可用 最终实现了趟再床上就可以打卡 1、 刷机 …

【软件测试】性能测试服务端—排查指标问题(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 软件性能测试的目…

node安装后的全局环境变量配置

安装node时,位置最好不要装在c盘,这里,我在D盘下创建了文件夹"node",安装地址选择在该文件夹下 一直next,直到安装结束,打开"node"文件夹,安装完后,里面的配置…

未来10年,网络安全人才就业的黄金期

随着大数据、物联网、人工智能等新技术的发展,信息技术与经济社会各领域的融合也更加深入。网络攻击行为日趋复杂、黑客攻击行为组织性更强、针对手机无线终端的网络攻击日趋严重,近几年有关网络攻击和数据泄露的新闻层出不穷。因此,随着国家…

Nodejs一、初识

零、文章目录 Nodejs一、初识 1、初识 Node.js (1)回顾与思考 浏览器中的 JavaScript 的组成部分 为什么 JavaScript 可以在浏览器中被执行 为什么 JavaScript 可以操作 DOM 和 BOM 浏览器中的 JavaScript 运行环境 JavaScript 能否做后端开发&#…

MySQL - 第0节 - MySQL在Centos 7环境安装

目录 1.安装前说明 2.MySQL在Centos 7环境安装 2.1.卸载不要的环境 2.2.配置mysql官方yum源 2.3.检查yum源能否正常工作 2.4.安装mysql 2.5.检查mysql是否安装成功 2.6.启动mysqld数据库服务端 2.7.三种登录方法 2.7.1.登陆方法一 2.7.2.登陆方法二 2.7.3.登陆方法…

Pandas+Pyecharts | 中国高校及专业数据分析可视化

文章目录 🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据 🏳️‍🌈 3. Pyecharts数据可视化3.1 全国高校分布地图3.2 全国高校分布城市地图3.3 本科/专科占比3.4 985/211/双一流高校数量占比…

【考研复习】李春葆新编C语言习题与解析(错误答案订正)持续更新

新编C语言习题与解析 做习题时发现有些错误答案,写篇博客进行改正记录。不对地方欢迎指正~ 第二章 C. 其中b的表达形式错误,若加上0x1e2b则正确。所以C错误。 D. e后为整数。指数命名规则:e前有数,后有整数。所以D错…

【CEEMDAN-CNN-LSTM】完备集合经验模态分解-卷积神经长短时记忆神经网络研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

getopt函数和getopt_long函数

这个函数有点像无限迷宫,正确的路和错误的路都有很多,我们只需要能够满足当前需求就可以了,完全没有必要去探索每一条路。虽然,我很久以前试图这样干过。过滤后的回忆,只剩感觉了,过滤的多了,感…

【简单便捷】解决Ubuntu内存不足问题:Ubuntu16.0.4 进行内存扩容

文章目录 电脑环境前言一、总述二、先在标题:虚拟机-->设置上进行扩容三、扩容之后 打开终端 执行 sudo apt install gparted四、执行 sudo gparted五、扩容成功六、重启测试 可以看到大概率成功了。 电脑环境 Windows 11 专业版系统 前言 在开发初期&#xf…

二叉树的相关操作

一.二叉树 本文的数据结构基于C语言练习。 C语言中的二叉树是一种数据结构,用于表示具有层次关系的数据集合。它由一个根节点开始,每个节点最多有两个子节点,分别称为左子节点和右子节点。 二叉树有许多相关性质,其中一些重要的包…

【CSS---定位基础篇】

CSS---定位基础篇 CSS-----基础定位:一 、 学习定位原因:(定位的作用)二 、定位组成:2.1 四种定位模式:(1)静态定位(了解):(2)相对定位…