软件工程发展趋势

注册

 

发新话题 回复该主题

软件工程需求优先级排序的一种方法 [复制链接]

1#

软件需求要有优先级。

为了更好地满足用户需要,我们要在需求开发活动中,标识出需求的优先级,这样可以实现以下两个目标:

1与用户一起确定优先实现的需求,以优先满足用户迫切进行组件调试,系统联试,出厂试验等的需要;

2需求的优先级也决定了后续设计,编码,单元测试,乃至集成的先后顺序。千万不要再说“集成顺序是随意的”!

所以,有必要标识出需求的优先级。那么,要依据什么来标识需求的优先级呢?

首先我们要了解需求的优先级是有不同的角度的。需求的优先级至少有以下几个视角:

用户的视角

技术实现的视角

项目管理的视角

从用户的视角来说,用户迫切需要的需求,就应该是优先级最高的需求。开发软件就是为了满足用户的需求,所以用户的角度应该排在这些视角当中的首位。

从技术实现的视角来说,有些需求和软件架构相关,这些需求就要优先实现;有些需求可能要采用新的平台、新的技术,这会带来技术风险,这些需求也要优先实现。

从项目管理的角度,可能会带来进度风险的需求,要考虑优先实现。

以上只是一些需求排序的原则,还不能解决实际问题。比如第一种视角,用户可能会说这个需求我迫切需要,那个我也迫切需要。但对于开发来说,总要有个先后顺序的,那究竟怎么排这个先后顺序?这就需要一个可操作的方法。

对于第一种视角,可以使用“满意/不满意模型”方法来进行排序。

这个模型示例如下:

对每一条需求都用满意度和不满意度两个量化指标来打分,最终将两个指标的分值相乘,按分值的高低进行排序。其中满意度是指当需求实现后,用户的满意程度,量化指标分为非常满意(5分)、比较满意(4分)、满意(3分)、一般(2分)、无所谓(1分);不满意度是指当需求没有实现时,用户不满意的程度,量化指标分为非常不满意(5分)、比较不满意(4分)、不满意(3分)、一般(2分)、无所谓(1分)。

假设有个“词典”的应用程序,有“添加MP3功能”和“单键复制”两个需求项,采用满意/不满意模型方法打分表如下:

需求项

评价项

评价结果

为词典添加MP3功能

满意度

非常满意、比较满意√、满意、一般、无所谓

不满意度

非常不满意、比较不满意、不满意、一般、无所谓√

总评价

4分×1分=4分

单键复制功能

满意度

非常满意、比较满意√、满意、一般、无所谓

不满意度

非常不满意、比较不满意、不满意√、一般、无所谓

总评价

4分×3分=12分

从总评价的结果来看,“单间复制”功能需求优先级要优于“添加MP3功能”。

但是,这种方法对于第二种和第三种视角就不太适用,特别是,考虑需求优先级时,往往需要几个视角同时考虑。所以我们需要找到更好的方法。这个方法叫层次分析法。

层次分析法可以帮助我们解决涉及多目标,准则,竞争对手以及其他因素的复杂问题。在软件领域,它可用来制定软件开发过程中各个不同阶段的决策,同时也包括在多目标情况下的决策制定。

对于需求排序可能涉及到多个因素,这是一个多目标决策的场景,因此可借用这一方法。

以下是应用这一方法的示例。

首先是建立问题的层次模型。对于需求排序,我们可以从用户需要、实现成本、架构、技术风险、进度风险等几个层次考虑。

第2步,为这些层次建立成对比较矩阵,使用相对地成对比较法推导这几个层次的优先次序。所谓成对比较法就是由几个决策者将口头化规模范围数值填入成对比较矩阵。

成对口头话基础规模的数值范围是从1~9。

表达对首选的评价

数值

绝对首选

9

介于绝对和非常强烈之间

8

非常强烈首选

7

介于非常强烈和强烈之间

6

强烈首选

5

介于强烈和适度之间

4

适度首选

3

介于适度和普通之间

2

普通首选

1

下面是某个决策者对以上几个层次填写的成对比较矩阵:

用户需要

实现成本

架构

技术风险

进度风险

权重粗略值

权重值

用户需要

1

1/3

1/9

1/9

1/5

1.

0.

实现成本

3

1

1/5

1/6

1

5.

0.

架构

9

5

1

1

5

21

0.

技术风险

9

6

1/5

1

5

22

0.

进度风险

5

1

1

1/5

1

7.4

0.

填写方法是主对角线为1,其它相对的数值互为倒数。权重粗略值为各层次范围数值之和,权重值为对应的权重粗略值除以所有权重粗略值之和。

第3步,构建每个需求项的成对比较矩阵

例如:每个需求项针对“用户需要”建立成对比较矩阵。

需求项A

需求项B

需求项C

需求项A

1

9

5

需求项B

1/9

1

1/4

需求项C

1/5

4

1

针对“实现成本”、“架构”、“技术风险”、“进度风险”的矩阵略。

第4步:判断大致的优先次序

遵循以下步骤:

1)对成对比较矩阵的各元素进行求和;

2)将成对比较矩阵的每个元素除以每列总计值,由此产生标准化的成对比较矩阵;

3)计算标准化比较矩阵每行元素的平均值。

仍以“用户需要”的几个需求项为例:

系列总计值

需求项A

需求项B

需求项C

需求项A

1

9

5

需求项B

1/9

1

1/4

需求项C

1/5

4

1

总计

1.31

14

6.25

每个矩阵元素除以每列总计值

需求项A

需求项B

需求项C

需求项A

0.

0.

0.8

需求项B

0.08

0.

0.04

需求项C

0.15

0.

0.16

每行元素的平均值

需求项A

需求项B

需求项C

平均值

需求项A

0.

0.

0.8

0.

需求项B

0.08

0.

0.04

0.

需求项C

0.15

0.

0.16

0.

与“用户需要”有关的各需求项的优先次序向量为:

[0.0.0.]

类似地,也可以计算出其他层次的优先次序向量。

第5步:估算一致性比例

1)将成对比较矩阵的每一列的每一个值乘以被考虑的相对优先次序向量,再分别对每行值进行求和操作,获得一个“加权总和”的向量值。

2)将“加权总和”向量值分别除以相应的优先次序值。

2./0.=3.

0./0.=3.

0./0.=3.

3)计算三者的平均值。

E=(3.+3.+3.)/3=3.

4)计算一致性指数,这里n=3(n为需求项或解决方案的数目)。

CI=(E-n)/(n-1)=(3.-3)/2=0.

5)计算一致性比例CR。

CR=CI/RI

RI为随机指数,参考取值如下:

n

3

4

5

6

7

RI

0.58

0.9

1.12

1.24

1.32

此例n=3,RI=0.58

CR=0./0.58=0.

CR值小于0.1,属于可接受范围。

第6步:计算整体优先次序等级。

由第4步所得的所有层次的优先次序向量值为:

用户需要

实现成本

架构

技术风险

进度风险

需求项A

0.

0.

0.

0.

0.

需求项B

0.

0.

0.

0.

0.

需求项C

0.

0.

0.

0.

0.

由第2步所得的各层次的权重如下:

权重

用户需要

0.

实现成本

0.

架构

0.

技术风险

0.

进度风险

0.

以各层次的优先次序值乘以需求项对每一层次的优先次序向量值,然后求和,计算出每个需求项的整体优先次序值:

需求项A=0.(0.)+0.(0.)+0.(0.)+0.(0.)+0.(0.)=0.

需求项B=0.

需求项C=0.

因此,需求优先级为:

1:需求项B

2:需求项C

3:需求项A

这种方法相对比较繁琐,但可适应多因素影响的情况(它也完全适用各类决策分析与决定的场景),可作为需求优先级排序的一种备选方法。

参考书目:

1、《软件需求最佳实践》

2、《可信软件设计》

王小双

随心意

分享 转发
TOP
发新话题 回复该主题