首页 理论教育 逻辑链3:软件类别对开发影响

逻辑链3:软件类别对开发影响

时间:2023-11-21 理论教育 版权反馈
【摘要】:现实中,至少可以有5个视角来对软件项目进行分类,它们分别如下。通常情形下,“新项目”中更关注的是软件如何构造,而在“维护性项目”中更关注的是对既有功能的影响,在“升级性项目”中却必须两者兼顾。系统集成项目是指组合软硬件,完成一系列功能的项目。

逻辑链3:软件类别对开发影响

软件是一种固化的思维→同时具有思维的特质和被固化对象的特质→估算自身需要分类,不同类别软件上数据很难共通。

前文曾经提到过,软件最终所体现出来的特质事实上受到双重影响:一是软件是思维这一特质的影响;二是思维所承载之物的特质影响。这不难理解,人的脑子可以考虑漫画,也可以考虑相对论,虽然都是做思维,但两种思维天差地别。这导致在软件的世界里,除了基于软件是思维这一特质推导得出的共性外,很多其他的东西,很难适合软件整体。

比如说,适用于操作系统内核的开发方法往往并不适合于开发数据库管理系统。

估算亦是如此,为累积历史数据,并使估算更加精确,需要对软件进行分类,分别收集数据。

现实中,至少可以有5个视角来对软件项目进行分类,它们分别如下。

●按照软件所处的领域

●按照软件的规模。

●按照软件所处的生命周期中的阶段。

●按照软件用户的类型。

●按照软件的最终目的。

其中,规模是一个横切的分类视角,可以和其他分类进行复合。

1.按照软件所处的领域来分类

按照软件所处的领域来分,软件项目可做下面这样的划分。

航空电子

●应用系统。

●命令与控制。

嵌入式系统。

●微代码。

●Web应用。

●科学研究和工程研究。

●实时系统。

●驱动程序。

电信软件。

●……

上面分类方法参见《软件估算—黑匣子揭秘》。

这种分类方法的好处是直观易懂,坏处是类别和类别间存在交叉,不是正交的,比如,“航空电子”和“实时系统”未必就没有重叠。由于有些历史数据是按照上述类别来收集的,所以这种分类的现实意义比较大。

2.按照软件的规模来分类

按照规模来分,软件项目可做如下分类。

●小规模项目(10KSLOC左右)。

●中等规模的项目(100KSLOC左右)。

●大规模的项目(1MSLOC左右)。

●超大规模的项目(10MSLOC左右)。

软件这个行业与传统的制造行业相比,一个显著差异被称为规模不经济(Diseconomy of scale)。

规模经济的含义是:制造工厂越大,其单位产品的制造成本越低。而软件恰恰相反,同类产品中,规模越大,单位代码行所耗费的成本越高。因此这种现象被称为规模不经济。

规模对生产率的影响是巨大的,参见表5-3所列的数据。

表5-3 项目规模和对应的生产率(www.xing528.com)

978-7-111-42626-4-Chapter05-6.jpg

—《软件估算-黑匣子揭秘》

这种分类方法的不同类别间在概念上没有重合,但在现实中不同类别的边界却颇难界定。比如,事实上很难定义500KSLOC的项目究竟应该属于那种类别。实际应用时,只能根据具体情况进行分析。

3.按照软件所处的生命周期阶段来分类

按照软件的生命周期来分,软件项目可做如下分类。

●新项目。

●升级性项目。

●维护性项目。

这里“新项目”是指从零开始的项目;“升级性项目”是指向已有程序添加新的功能的项目;“维护性项目”是指保持功能不变而只进行错误修正的项目。

通常情形下,“新项目”中更关注的是软件如何构造,而在“维护性项目”中更关注的是对既有功能的影响,在“升级性项目”中却必须两者兼顾。

“升级性项目”根据需求的变化频度和粒度又可以进行进一步划分。

4.按照软件的用户类型来分类

按照软件用户类型来分,软件项目可做如下分类。

●终端用户项目。

●中间件项目。

系统集成项目。

●应用程序生成器项目。

●基础结构性项目。

—《软件成本估算:COCOMOII估算方法》

终端用户项目是指面向最终用户进行产品开发的项目。这类项目涵盖内容最广,从业人员数最多。小到计算器的开发,大到Office都可以归到这一类别。

中间件项目是指,基于基础结构向最终应用开发提供程序包的项目,.NET等属于这一类。

系统集成项目是指组合软硬件,完成一系列功能的项目。

应用程序生成器项目是指构筑开发平台,让程序人员可以基于这一平台进行进一步的开发。比如,Visual Studio,甚至Flash等都可以划归这一类别。

基础结构性项目是指开发基础平台的项目,比如OS、数据库管理系统等。

5.按照软件需求的潜在特质来分类

按照需求的潜在特质来分,软件项目又可做如下分类。

●研究型项目。

●产品型项目。

研究型项目是指需求自身的实现不能简单地通过既有的技术完成,比如说,需要把图像的压缩比率提高20%。

产品型项目则是指,技术自身没有不确定性,但要组合很多现有技术才能实现现有的需求。

6.小结

估算应该是基于某种分类方法上的估算,历史数据也应该按照既定类别进行统计,否则某些历史数据将很难被重用。为了更为真切地感受一下这种类别会带来多大的差异,我们来一起看Steve McConell在《软件估算—黑匣子解密》中总结出的一份很让人震撼的列表,见表5-4。

表5-4 各种类型项目的生产率

978-7-111-42626-4-Chapter05-7.jpg

这数据可以让我们更具体地认识到类别的威力。开发嵌入式系统的人,其生产率只有内联网系统的人的1/10或1/20。但这其实远不是全部,同样对于嵌入式系统,其维护阶段和新开发阶段仍然会有很大不同,其库的开发和应用的开发也会有很大的不同。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈