软件项目计划的目标是提供一个框架,使得管理人员对资源、成本和进度做出合理估算。
这些估算应当在项目开始时的一个有限的时间段内做出,并且随着项目的进展定期进行更新。
(1)Scoping(范围)—— 确定软件范围;
(2)Estimation(估算)—— 估算资源、工作量、成本;
(3)Risk(风险)—— 风险管理;
(4)Schedule(进度)—— 进度安排;
(5)Control strategy(控制策略)—— 指定控制策略。
(1)估算开始时,应对功能进行评价,并适当细化以提供更详细的细节。
(2)由于成本和进度的估算都与功能有关,因此常常采用某种程度的功能分解。
(3)软件范围包括功能、性能、约束、接口和可靠性,无二义和可理解。
思考这样一个问题:针对这个软件的范围描述,请找出软件范围的功能、性能、约束、接口等。
考虑开发一个驱动传送带分类系统(CLSS)的软件,对该软件的范围陈述如下:
(1)传送带分类系统将沿传送带移动的盒子进行分类,每个盒子由一个包含零件号的条形码来标识,并在传送带的末端分送到六个箱子中的一个,这些盒子要通过一个由条形码阅读器和一台PC所组成的分类站。
(2)分类站的PC连接到一个分流器上,它把盒子分送到不同的箱子中,盒子以随机的顺序通过且其间的距离相同,传送带以每分钟5英尺的速度移动。
(3)CLSS软件以和传送带速度一致的时间间隔接受来自条形码阅读器的信息。条形码数据被解码成盒子的标识格式,软件将在最多可容纳1000个条目的零件号数据库中进行检索,以确定当前在阅读器(分类站)位置的盒子应该放到哪个箱子中。
(4)该箱子的信息被传送到分流器,以把盒子放进合适的箱子中,每个盒子所放进的箱子的记录均被保存起来以供以后提取及报告。
(5)CLSS软件同时也接受来自脉冲流速计的输入,用于使控制信号与分流器同步,根据分类站和分流器之间产生的脉冲数,软件将产生一个控制信号给分流器,以适当地定位盒子。
通过分析,这个过程将产生如下功能:
- 读取条形码输入
- 读取脉冲流速计
- 解码零件编码数据
- 检索数据库
- 确定合适的箱子
- 产生分流器的控制信号
- 维护盒子目的地的记录
性能取决于传送带的速度,对于每个盒子的处理必须在下个盒子到达条形码阅读器之前完成。
约束条件包括:
- 盒子以随机的顺序通过且其间的距离相同,传送带以每分钟5英尺的速度移动;
- CLSS软件以和传送带速度一致的时间间隔接受来自条形码阅读器的信息;
- 控制信号与分流器同步。
接口:条形码阅读器,分流器,PC等
软件项目管理过程开始于项目计划,在做项目计划时,重要的一项活动就是估算。
那么,影响估算的因素有哪些呢?
复杂性越高,估算的风险就越高。
项目的规模越大,开发工作量越大,估算的风险越高。
项目的结构化程度越高,进行精确估算的能力就能提高,而风险将减少。
历史信息的有效性也影响估算的风险。历史信息越有效, 总的风险就越少。
如果对软件项目的作用范围还不是十分清楚,或者用户的要求经常变更,也会增加估算的风险。
计划人员应当要求在软件系统的规格说明中给出完备的功能、性能、接口的定义。
软件项目计划的第二个任务是对完成该软件项目所需的资源进行估算。
(1)最基本的、重要的资源——人员;
(2)现成的用意支持软件开发的工具——硬件工具;
(3)现成的用意支持软件开发的工具——软件工具(CASE);
(4)可复用构件。
接下来对各构成要素进行一一分析。
(1)在考虑各种软件开发资源时,人是最重要的资源;
(2)在安排开发活动时必须考虑人员的技术水平、专业、人数、以及在开发过程中对各阶段人员的需要;
(3)对于一些规模较小的项目,只要向专家做些咨询,也许一个人就可以完成所有的软件工程步骤;
(4)对一些规模较大的项目,在整个软件生存期中,各种人员的参与情况是不一样的。
以下通过一张图了解各阶段人员对软件生命周期的共享度。
硬件是作为软件开发项目的一种工具而投入的,分别包含以下三种类型:
(1)宿主机(Host)—— 软件开发时使用的计算机及外围设备;
(2)目标机(Target)—— 运行已经开发成功软件的计算机及外围设备;
(3)其它硬件设备 —— 专用软件开发时需要的特殊硬件资源;
软件工程人员在软件开发期间使用了许多软件工具来帮助开发,这种软件工具集叫做计算机辅助软件工程(CASE)。分别包括:
(1)业务系统计划工具集;
(2)项目管理工具集;
(3)支援工具 —— 文档生成工具、网络系统软件、数据库、电子邮件、通报板,以及配置管理工具;
(4)分析和设计工具;
(5)编程工具;
(6)组装和测试工具;
(7)原型化和模拟工具;
(8)维护工具;
(9)框架工具 —— 这些工具能够提供建立集成项目支撑环境(IPSE)的框架。
(1)可复用的软件资源,被称为构件。可复用构件分别包含:
(2)使用可复用构件时,应考虑:
低成本和低风险
。在软件成本和工作量的估算中,不确定因素非常大,包括人、技术、环境、政治等因素都会影响估算结果。
软件项目的估算能够通过一系列系统化的步骤,在可接受的风险范围内提供估算结果。
对于每一个可用的软件成本估算的选择,其效果好坏取决于用于估算的历史数据!
先用一张图了解软件工作量和成本的估算方法。
接下来讲解三种估算方法。
①给出软件范围 —— 项目计划人员可对每一个分解的功能提出一个有代表性的估算值范围;
②进行功能分解 —— 利用历史数据或凭实际经验(当其它的方法失效时),对每个功能分别按最佳的、可能的、悲观的三种情况给出LOC或FP估计值 ,记作a、m、b;
③估算每一个子功能 —— 计算LOC或FP的期望值 E;
E = ( a + 4 m + b ) 6 E = \frac{(a+4m+b)}{6} E=6(a+4m+b)
④计算总LOC数(∑) —— 所有子功能的总估算变量值除以相应于该估算变量的平均生产率度量得到项目的总工作量;
例如,若假定总的FP估算值是310,基于过去项目的平均FP生产率是 5.5 FP/PM,则项目的总工作量是:工作量 = 310/5.5 = 56 PM,即每个月需要56个人
⑤给出两个历史数据 ——
第一种:给出生产率和劳动率价格,可以算出工作量和成本;
第二种:给出生产率和每行代码成本,也可以算出工作量和成本。
系统定义评审指明,软件是在一个工作站上运行,其接口必须使用各种计算机图形设备,包括鼠标器、数字化仪、高分辨率彩色显示器和激光打印机。在这个实例中,使用LOC做为估算变量。根据系统规格说明, 软件范围的初步叙述如下:
“软件将从操作员那里接收2维或3维几何数据,操作员通过用户界面与 CAD系统交互并控制它,这种用户界面将表现出很好的人机接口设计特性。所有的几何数据和其它支持信息保存在一个CAD数据库内。要开发一些设计分析模块以产生在各种图形设备上显示的输出。软件要设计得能被控制,并能与各种外部设备进行交互,外部设备包括鼠标器、数字化仪、激光打印机和绘图仪。”
从以上的例子可以得出:
①经过分解, 识别出下列主要软件功能:
- 用户界面和控制功能;
- 二维几何分析;
- 三维几何分析;
- 数据库管理;
- 计算机图形显示功能;
- 外设控制PC;
- 设计分析模块。
②可得到如下估算表:
功能 最佳值 a 可能值 m 悲观值 b 期望值 E 元/行 行/PM 成本(元) 工作量(PM) 用户接口控制 1800 2400 2650 2340 14 315 32760 7.4 二维几何造型 4100 5200 7400 5380 20 220 107600 24.4 三维几何造型 4600 6900 8600 6800 20 220 136000 30.9 数据结构管理 2950 3400 3600 3350 18 240 60300 13.9 计算机图形显示 4050 4900 6200 4950 22 200 108900 24.7 外部设备控制 2000 2100 2450 2140 28 140 59920 15.2 设计分析 6600 8500 9800 8400 18 300 151200 28.0 总计 33360 656680 144.5 ③从历史的基线数据求出生产率度量,即 行/PM 和 元/行。
④根据复杂性程度的不同,对各功能使用不同的生产率度量值。根据估算表可得:
成本 = LOC的期望值E 乘以 元/行;
工作量 = LOC 的期望值E 除以 行/PM;
因此可得,该项目总成本的估算值为657,000元,总工作量的估算值为每个月145人。
Question:
基于LOC估算某软件项目的工作量和人工成本,假设项目的子功能有三个,估算的LOC数分别为1000,2000,3000,项目的生产率为600LOC/PM,劳动力价格为6000元/PM,则项目总的LOC数、工作量、人工成本分别为多少?写出计算公式及计算过程。
①给出软件范围;
②进行功能分解(无需很细);
③计算五个信息域计数值;
④计算总计算值(应考虑加权因子);
⑤回答14个问题,算出∑Fi (Fi为复杂度校正值) ;
⑥计算FP;
⑦给出两个历史数据,生产率(FP/PM)、人工价(元/PM);
工作量=总FP/生产率=PM;
成本=工作量x人工价=元
某项目有5个信息域计数和1个算法计数,如下图所示。假设已知该项目的两个历史数据,分别为:生产率为4FP/PM,人工价为3000元/PM,试计算出复杂度校正值∑Fi,工作量和成本的值。
测量参数 | 计数值 | 权重(加权因子) | 求和 |
---|---|---|---|
输入数 | 40 | 4 | 160 |
输出数 | 25 | 5 | 125 |
查询数 | 12 | 4 | 48 |
文件数 | 4 | 7 | 28 |
外部接口数 | 4 | 7 | 28 |
算法 | 60 | 3 | 18 |
总计数值 | 569 | ||
复杂度调整因子 | 0.84 | ||
特征点 | 478 |
由上图可知:
复杂度调整因子为0.84,即0.65+0.01∑Fi=0.84,由此可计算出复杂度校正值∑Fi=19;
若要得到工作量,需先求功能点FP,即:FP=总计数值x(0.65+0.01∑Fi)=569x0.84=478FP;
工 作 量 E f f i c i e n c y = 总 F P 生 产 率 = 478 F P 4 F P / P M ≈ 120 P M 工作量Efficiency = \frac{总FP}{生产率}=\frac{478FP}{4FP/PM}≈120PM 工作量Efficiency=生产率总FP=4FP/PM478FP≈120PM
成 本 C o s t = 工 作 量 × 人 工 价 = 120 P M × 3000 元 / P M = 360000 元 成本Cost = 工作量×人工价=120PM×3000元/PM=360000元 成本Cost=工作量×人工价=120PM×3000元/PM=360000元
Question:
基于FP估算某软件项目的工作量和人工成本,假设项目的输入数、输出数、查询数、文件数、接口数分别为59、20、10、5、2,加权因子取平均值4、5、4、10、7,14个问题的回答取值总和为15。那么该项目的总计数值是多少?项目的功能点FP又是多少?假设项目的生产率为16FP/PM,劳动力价格为6000元/PM,则工作量和人工成本分别为多少?写出计算公式及计算过程。
Answer:
写到这里,对基于LOC和FP的估算做个小结:
- 这两种类型的估算的基本思想都是,先计算出LOC和FP的值,然后根据组织生产率和每个劳动力价格(人工价)的历史数据,估算总成本和工作量。
- 如果在估算的时候,遇到估算差别很大时,一般有以下两种原因:①项目的范围未能被充分理解或被误解;②基于问题的估算技术中所使用的的生产率数据对于该应用是不合适的,或是太陈旧了,或是被无用了。
阶段 | 时间 | 功能描述(此阶段要做什么) |
---|---|---|
应用组装阶段(Application Composition) | 早期、确定系统性能时 | ①利用应用点application point来进行估算规模;②利用原型来解决高风险问题。 |
早期设计阶段(early design) | 需求稳定,体系结构已建立时 | ①研究可选的体系结构和概念;②用功能点funtion point来做估算规模。 |
体系结构后阶段(post architecture) | 软件在构造中,知道更多系统信息时 | ①以FP、LOC作为估算单位。 |
补充说明应用点知识:
应用点,即对象点。一种间接的软件测量,其计算需要使用以下三个元素:
- 用户界面上的屏幕数screens;
- 报表数reports;
- 建造应用可能需要的构件数3GLcomponents。
以下给出对象点和PROD的具体数值表:
图 不同类型对象的复杂度加权
复杂度加权 | |||
---|---|---|---|
对象类型 | 简单 | 中等 | 困难 |
屏幕 | 1 | 2 | 3 |
报表 | 2 | 5 | 8 |
3GL构件 | 10 |
图 不同水平的开发者经验和不同开发环境成熟度下的生产率
因素 | 影响 | ||||
---|---|---|---|---|---|
开发者的经验/能力 | 非常低 | 低 | 正常 | 高 | 非常高 |
环境成熟度/能力 | 非常低 | 低 | 正常 | 高 | 非常高 |
PROD | 4 | 7 | 13 | 25 | 50 |
Question:
使用COCOMO II模型来估算构造一个简单的ATM软件所需的工作量和人工成本(单位分别是人月和元),该软件产生11个屏幕(有3个简单,3个中等,5个困难),10个报表(有4个简单,6个困难),72个构件,复用度为20%,假设开发者的经验能力为高,环境的成熟度能力为低,劳动力价格为5000元/PM。则NOP、生产率能力PROD、工作量E和人工成本C分别为多少。写出计算公式及计算过程。
创作不易,如果这篇文章对你有用,记得点赞收藏哦~