浅析软件产品团队开发中的几种方法

时间:2022-02-19 12:04:52

浅析软件产品团队开发中的几种方法

摘要:该文分析了当前在软件产品研发团队中,经常用到的几种在统计学中常用的估算和预测统计方法。结合自身的使用经验,以及在产品研发中的实例,分析了各自的优点和缺点,阐述了各自在软件产品开发过程中的作用。

关键词:软件产品开发;头脑风暴法;德尔菲法;MAUT方法;Probe方法

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)13-3072-03

Analysis on Several Methods for Software Development Team

LI Jun-jie

(Institute of Network Technology, BUPT, Beijing 100876, China)

Abstract: This article analyzes several statistical methods for estimating and forecasting, which are often used by the current software product development team. With their own experience and the examples in the product research and development, it analyzes both advantages and disadvantages, and their respective role in the software product development process.

Key words: software product developing; brain-storming; Delphi method; MAUT; Probe

在日常的软件产品项目开发和管理过程中,经常需要使用一些科学的方法,从而帮助我们快速的整理思路,以及合理安排时间和工作,提高工作效率。下面我们将介绍一些比较实用和有效的方法,并分析他们在实际应用中的优劣。

1 头脑风暴法

头脑风暴法是大家非常熟悉的方法,它的作用主要是:在较短的时间内,充分激励团队成员之间的思维交流和碰撞,从而找到较多的想法和解决方案。在一般的团队决策过程中,迷信权威通常会抑制团队成员的创造力和批判精神。而使用头脑风暴法可以较好的解决这个问题,保证了团队决策的质量和创造性[1]。

在实际项目开发工作过程中,头脑风暴法主要适用于:需求讨论、解决方案设计讨论等需要集中群体的智慧启发思维、产生大量解决方案的场合。

头脑风暴法通常以专家会议的方式进行,其基本方法是[2]:

1)由每位专家轮流随意发表意见,其他人不能进行批判,但可以进行补充和综合;

2)主持人应当在黑板上记录下所有的意见,并保证每个人都可以看到;

3)主持人应当适当的启发大家的思维,鼓励大家提出尽可能多的方案,数量越多越好;

4)鼓励专家们在先前提出方案的基础上进行进一步改进、提炼和升华;

5)在最后阶段对提出的所有方案进行逐一讨论,记录每个方案的要点,在其基础上形成综合思想,最终得出可行的若干方案。

使用头脑风暴法时应当注意以下几点:

1)不提倡批评和自我批评,因为批评会抑制创造力,影响解决方案的数量和质量;

2)不可一味的只追求解决方案的数量,不注重质量,等到会议最后阶段方案再对方案的质量进行评价;

3)参加头脑风暴法的专家应当具备较强的联想和思维能力,善于提炼总结;

4)主持人在会议的过程中应当适当引导,可以通过提问的方式启发大家的思维。

头脑风暴法的优点在于:操作简单,能够充分发挥和利用群体智慧,促进了团队的交流,能够高效率得获得大量解决方案。

头脑风暴法的缺点在于参与专家的素质会严重影响最终的效果。

2 Delphi(德尔菲)法

Delphi法即专家评审法,最早出现于20世纪50年代末,是当时美国为了预测在其“遭受原子弹轰炸后,可能出现的结果”而发明的一种方法。该方法后来被广泛用来进行预测、决策分析和编制规划工作。

Delphi法本质上是一种反馈匿名函询法,其大致流程是:在对所要预测的问题征得专家意见之后,进行整理、归纳、统计,再匿名反馈给各专家,再次征求意见,再集中,再反馈,直到最后的结果趋于一致或者收敛为止[3]。

在缺少历史数据支持的情况下,需要对项目的规模、进度和成本进行预计的时候,便可以采用Delphi方法。

举个例子:需要使用Delphi法对某一个软件产品模块的规模进行估算,主持人可以邀请三到五名专家参加。

1)首先:应当制定估算的结束准则。例如结束准则可制定为:当各位专家估算值与平均值的误差在10%以内或者估算次数达到五次。

2)然后:进行每一轮的估计。由每个专家在纸上匿名写出自己估计的代码行数和自己的估算理由,提交给主持人,主持人进行统计并逐一宣布后再进行下一轮估计。注意,填写估算理由时应当详尽充分,但专家们不宜进行交叉讨论,避免思维扩散。

3)最后:达到结束准则后结束本次估算。

从表1中可以看到,在估算进行到第三轮的时候,三位专家的估算结果趋于收敛,误差率均小于10%,满足了结束准则,经过统计最后的估计结果为2067行。

Delphi方法的优点在于它避免了专家会议多人交叉讨论的低效率性,能够简单快速的利用群体智慧获取估算结果。

Delphi方法的缺点在于它只是一个较为科学多人拍脑袋的方法,其估算结果并不是很准确。在有历史数据的情况下应当尽量利用历史数据进行估算,而避免采用该方法。

3 MAUT方法

MAUT是多属性效用理论(Multi-Attribution Utility Theory)的简称,它适用于对多种备选方案进行定量权衡比较,从中挑选出最佳方案的场合。

MAUT方法的基本思路是[4]:

1)发掘和细分需求,将需求指标分为两类:第一类是必须要满足的指标,可称为必要指标;第二类是作为权衡因素的指标,可称为权衡指标;

2)筛选剔除不满足必要指标的备选方案;

3)根据重要程度给各项权衡指标分别指定权值;

4)针对各项权衡指标,对剩下的备选方案打分;(注意,有时候必要指标也可以参与打分。)

5)用指标权值乘以所打分数,得出各项指标的得分。计算总得分从而得到最佳备选方案。

下面我们用一个如何选择合适的产品开发语言的例子进行详细说明。现在我们需要开发一个CS结构的网络管理系统(MNS),产品用户界面运行的操作系统为Windows操作系统,现在需要选择一种合适的开发语言。备选的开发语言有:C#,VB,VC++,Delphi和Java。

第一步:首先挖掘需求,确定必要指标和权衡指标。本例中的必要指标和权衡指标分析后如表2。

第二步:筛选和剔除不满足必要指标的备选方案。

在本例中,假定Delphi开发语言不符合“有熟练的开发人员”这一项必要指标,VC++开发语言不符合“有成熟的产品作为参考”这一项必要指标,所以他们最终被剔除。

第三步:给各项权衡指标确定权值。

由于本例的必要条件也参与打分,所以也给每项必要条件确定权值。权值范围可以自行设定,本例中最高分为10分,最低分为0分。

第四步:给剩下的备选方案打分。

打分的分值范围也可以自行设定,本例中最高分为10分,最低分为0分,结果见表4。

第五步:用权值乘以分数并求和,计算总得分,找到最佳方案。

经过计算从表4可以看出,最佳的方案是C#方案,VB方案可以作为备选方案。

MAUT可以定量的分析出各项备选方案的优劣,比较直观。他简便易用,具有较强的可操作性,是普遍适用的决策分析方法。当与其他方法(如Delphi法)结合使用时,会有更好的效果。

4 基于Proxy的估算方法

基于Proxy的估算方法(Proxy Based Estimation Method,简称为Probe方法)是PSP(Personal Software Process)中使用的一种用于估算软件模块规模的方法。它的基本思想是:当无法直接估计目标数量时,可以寻找一个目标(称为Proxy),通过估算目标的规模来间接获取直接目标的规模[5]。

比如:估计一个模块的开发时间是我们的直接目标,但是它并不直观,无法直接估计。那么可以选择一些比较容易估计的目标,如:类的规模、代码行数、实现的功能点数量等等。通过估计这些目标的规模来估计模块的开发时间。

第一步:选择合适的。

需要注意,直接目标(x)和目标(y)之间应当满足一定的要求:它们的相关系数r的绝对值应当大于0.7,该值可以通过若干的历史数据计算获得(见表格6中的历史数据例子),其计算公式如下:

表5是一些常用的目标和对应。

第二步:积累历史数据。

为提高估计的准确性,应当对进行分类,并统计历史数据,建立类似于如表格6。

第三步:根据目标模块估计规模。

根据前期的需求和设计,开发人员根据类型进行分别估计,例如:经过估计待开发的该模块中有如下的结构:

窗体控件操作:复杂2个,中等1个,简单1个。

数据计算:复杂1个,中等2个,简单2个。

查询统计:复杂4个,中等6个,简单2个。

消息处理:复杂2个。

为简化起见,在不考虑代码重用的情况,通过查询表6得到估计出的规模(E)为:

E=(2*500+1*200+1*50)+(1*400+2*200+2*50)+(4*150+6*50+2*20)+(2*200)=3490行。

第四步:由规模估计目标规模

1)方法1

如果手头上有历史平均生产率数值的话,那么直接取平均即可以得到估算的开发时间:(此处假设平均生产率为30行代码/小时)

估算的开发时间:T=E/R=3490/30=116.3小时。

该方法比较简便,但是精确度不高,忽视了个体的因素且依赖于组织级的历史数据支持。

2)方法2

如果历史数据比较完备,能够在表6的基础上加入历史开发时间记录,那么也可以直接查表获得估算目标。(见表7)

估算的开发时间:T=2*11+1*3+1*1+1*10+2*2+2*1+4*2+6*1+2*1+2*3=68(小时)。

当然也可以利用线性回归等方法来获得更精确的结果,如果感兴趣可以参考相关的PSP书籍。

Probe优点在于它适用于对规模和进度进行估算,采用了较为科学的分类和计算方法,正确的使用能够保证估算结果较为精确[6]。

它的缺点在于他严重依赖历史数据,需要不断的积累,估算结果与个体联系较为紧密。

5 结束语

前面,我们分析了在软件产品研发过程中,经常需要用到的几种估算和预测统计方法。并结合了各自在项目中的应用,分析了各自的优缺点。这些方法最早都是出现在统计学原理中,随着计算机软件工程的不断完善,将他们逐步引入到计算机的项目管理和实践中,从而极大地改善和提高了软件产品研发的效率和质量。

参考文献:

[1] 周三多.管理学[M].北京:中国石化出版社,2010:56-62.

[2] Ludy,Perry J.Profit Building.Cutting Costs Without Cutting People[M].San Francisco:Berret-Koehler,Inc,2000:31-33.

[3] Harold A,Linstone,Murray Turoff.The Delphi Method:Techniques and Applications[M].Massachusetts:Addison-Wesley Publishing Company,2005:28-35.

[4] 岳超源.决策理论与方法[M].北京:高等教育出版社,2001:103-112.

[5] Chris Rygielski,WANG Jyun-Cheng,YEN D C.Data mining techniques for customer relationship management[J].Technology in Society,2002,(24):32-39.

[6] Zhou Yuming,Lu Jiangtao,Lu Hongmin,et al.A Comparative Study of Graph Theory-based Class Cohesion Measures[J].ACM SIGSOFT Software Engineering Notes,2004,29(2):85-88.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:面向电力系统的VB绘图软件设计 下一篇:网络组件间协调效用机制研究