软件设计和开发人员梳理和评价需求的利器-“三横三纵”矩阵

待兔 等级 367 0 0

作为软件设计和开发人员,经常关心的问题是:自己对需求的掌握是否全面?对需求的了解是否存在遗漏环节?如何帮助软件设计和开发人员解除以上困惑呢?本文提出了“三横三纵”的矩阵检查方法,以一种直观易行的逻辑思维矩阵帮助软件设计和开发人员全面梳理和评价需求。如下图所示:

“三横三纵”矩阵

首先,需求是分层次的。从不同的需求提出者和需求跟踪两个角度出发,将需求划分为三个层次。

组织级需求。包含客户或建设方要达到的业务目标、预期投资、工期要求,以及要符合哪些标准、对哪些遗留系统进行整合等约束条件。

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

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

其次,需求还必须从不同方面进行考虑。实践表明,忽视质量属性和约束性需求,常常导致设计和开发最终失败。例如,一个自媒体发布系统:

“发布文章”、“管理文章”、“粉丝管理”以及“收益管理”等,属于功能性需求。

系统应当具备良好的“可扩展性”和“安全性”,这是质量属性要求。

系统“必须运行在Linux平台上”,则属于约束性需求之列。

也就是说,从“直接目标还是间接限制”的角度出发把需求分为三类。

功能需求:更多体现各级直接目标要求。

质量属性:考虑运行期质量和开发期质量。

约束需求:考虑业务环境因素、使用环境因素、构建环境因素和技术环境因素。

收藏
评论区

相关推荐

软件设计和开发人员梳理和评价需求的利器-“三横三纵”矩阵
作为软件设计和开发人员,经常关心的问题是:自己对需求的掌握是否全面?对需求的了解是否存在遗漏环节?如何帮助软件设计和开发人员解除以上困惑呢?本文提出了“三横三纵”的矩阵检查方法,以一种直观易行的逻辑思维矩阵帮助软件设计和开发人员全面梳理和评价需求。如下图所示: “三横三纵”矩阵 首先,需求是分层次的。从不同的需求提出者和需求跟踪两个角度出发,将需求划分为
go的三个运行基本命令的区别,go run ,go build 和 go install
最近在自学go,遇到点基础的问题,通过自己实际操作之后得出结论在实际操作之前,我们需要知道go有三种源码文件:      1,命令源码文件;声明自己属于main包,并且包含main函数的文件,每个项目只能有一个这样的文件,即程序的入口文件      2,库源码文件;不能直接被执行的源码文件      3,测试源码文件本次操作不涉及测试源码文件。go run
js-Answers三
编程能力 手写事件侦听器,并要求兼容浏览器 JavaScript var eventUtil { getEvent: function(event) { return event || window.event; }, getTarget: function(event) { retur
【Flutter实战】线性布局(Row、Column)
4.2 线性布局(Row和Column)所谓线性布局,即指沿水平或垂直方向排布子组件。Flutter中通过Row和Column来实现线性布局,类似于Android中的LinearLayout控件。Row和Column都继承自Flex,我们将在弹性布局一节中详细介绍Flex。 主轴和纵轴对于线性布局,有主轴和纵轴之分,如果
python刷题-杨辉三角形
问题描述杨辉三角形又称Pascal三角形,它的第i1行是(ab)i的展开式的系数。  它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。  下面给出了杨辉三角形的前4行: 1 1 1 1 2 11 3 3 1  给出n,输出它的前n行。 输入格式输入包含一个数n。 输出格式输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次
uni-app入门教程(7)第三方登录和分享
前言本文主要介绍了APP开发的两大基本功能,即第三方登录登录和分享:包括登录通用配置,微信小程序和APP的第三方登录方式,和分享到聊天和朋友圈,使用uniapp实现有不同的接口和实现方式。 一、通用配置因为小程序和APP登录接口不同,需要在前端进行跨端兼容处理,同时微信等平台的小程序一般只支持所属宿主程序的第三方登录,而无法包括其他的
Android AOSP基础(三)Android系统源码的整编和单编
AOSP基础 Android框架层本文首发于微信公众号「刘望舒」 前言在上一篇文章中,我们顺利的将AOSP下载了下来,很多时候我们不仅仅需要去查看源码,还有以下的几个需求: 动态调试Android系统源码 定制Android系统 将最新版本的Android系统刷入到自己的Android设备中 将系统源码导入到Android Studio中为了实现这些需求,就
redis的三种集群方式
redis有三种集群方式:主从复制,哨兵模式和集群。1.主从复制主从复制原理: 从服务器连接主服务器,发送SYNC命令; 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令; 从服务器收到
Vue 的 三种 watcher
userwatcher在页面中使用的watcher,即用户定义的watcher,用于观察一个属性的更新,支持数组定义多个,对象定义单个的形式,在initWatcher中进行watcher的初始化之后,在渲染函数进行数据的读取,触发依赖收集时会将userwatcher的依赖收集进去,data属性set更新时会被触发userwatcher所定义的回调函数(将新旧
Java练习(三)——返回集合中的最大的和最小的元素
题目:在一个列表中存储以下元素:apple,grape,banana,pear,现要求将集合进行排序,返回集合中的最大的和最小的元素,并将排序后的结果打印在控制台上,要求的打印输出方法分别为默认toString输出、迭代器输出、for循环遍历输出和增强for循环输出。 package test;import java.util.;public class P
Android输入系统(三)InputReader的加工类型和InputDispatcher的分发过程
Android框架层 Android输入系统 Android框架层本文首发于微信公众号「刘望舒」 前言在上一篇文章中,我们学习了输入事件的处理,输入事件会交由InputDispatcher进行分发,那么InputDispatcher是如何进行分发的?这篇文章会给你答案。 1.InputReader的加工类型在这篇文章中,我们知道InputReader会对原始
人工智能数学基础1:三角函数的定义、公式及固定角三角函数值
一、三角函数的定义及名称在直角三角形中,当平面上的三点A、B、C的连线,AB、AC、BC,构成一个直角三角形,其中∠ACB为直角。对∠BAC(在此简称为θ)而言,对边(opposite)aBC、斜边(hypotenuse)cAB、邻边(adjacent)bAC,则三角函数定义如下:二、三角函数的变化趋势及图像  正弦值在 \[2kππ/2,2kπ+π/2
关于根据颜色刷选图像内容的问题
在CSDN本人博文《OpenCVPython图像处理:用inRange刷选图像中指定颜色对象案例》(请点击文章底部最下方的“阅读原文”跳转CSDN阅读原文)中介绍了根据颜色刷选图像内容相关的概念及实现,介绍了通过使用inRange在HSV颜色空间中识别制定颜色的图像内容,文中概要介绍了HSV颜色空间中进行制定颜色对象识别的要点,使用的inRange函数的语法
浅析三种Anaconda虚拟环境创建方式和第三方包的安装
前言大家好,我是星期八,是一个每天都要在镜子前给自己梳仅剩三根头发的三年码农。在上次,如果不出意外,,我们已经在windon10上成功的安装上了Anaconda。 如果安装过程有问题记得评论区留言哈,看到我们会整理并且解决。假装各位都已经安装好了Anaconda,那么,我么就开始学习它的命令吧。 查看conda版本查看一下conda版本命令conda \
(Python实战文)一篇文章教会你Arrow 时间库在项目中的实际应用
忆君迢迢隔青天,昔日横波目,今作流泪泉。 Python 默认支持时间序列的库有很多,通常 time 和 datetime 是用的最多的,虽然他们在一般情形下绝对够用,但是总有一些比较奇葩的时间格式的需求,而我们也就不能仅限于这两个 Python 自带的库。 DateParser 和 Dateutil 这是两款比较友好的用于处理各种时间格式的第三方库