北京治疗白癜风去什么医院好 http://pf.39.net/bdfyy/bjzkbdfyy/点击上方"蓝字"发现更多精彩!
对于一项工程来说,每个工程在它开始施工之前都会有一个相对应的工程范围和估算。而对于软件来说也不例外,每一个软件在开始开发前,都会有一个相对应的软件范围。同时在开发前也要对该软件进行一个合理的估算,以便能对软件有一个更好的把握方向。
在接下来的这篇文章中,将讲解软件项目管理中的软件范围与估算。
一、软件项目计划1、目标
软件项目计划的目标是提供一个框架,使得管理人员对资源、成本和进度做出合理估算。这些估算应当在项目开始时的一个有限的时间段内做出,并且随着项目的进展定期进行更新。
2、步骤
(1)Scoping(范围)——确定软件范围;
(2)Estimation(估算)——估算资源、工作量、成本;
(3)Risk(风险)——风险管理;
(4)Schedule(进度)——进度安排;
(5)Controlstrategy(控制策略)——指定控制策略。
二、软件范围1、软件范围定义
「1」估算开始时,应对功能进行评价,并适当细化以提供更详细的细节。
「2」由于成本和进度的估算都与功能有关,因此常常采用某种程度的功能分解。
「3」软件范围包括「功能」、「性能」、「约束」、「接口」和「可靠性」,无二义和可理解。
2、软件范围——引例
「思考这样一个问题:针对这个软件的范围描述,请找出软件范围的功能、性能、约束、接口等。」
考虑开发一个驱动传送带分类系统(CLSS)的软件,对该软件的范围陈述如下:
(1)传送带分类系统将沿传送带移动的盒子进行「分类」,每个盒子由一个包含零件号的「条形码」来标识,并在传送带的末端分送到「六个」箱子中的一个,这些盒子要通过一个由条形码阅读器和一台PC所组成的「分类站」。
(2)分类站的PC连接到一个「分流器」上,它把盒子分送到不同的箱子中,盒子以随机的顺序通过且其间的距离相同,传送带以每分钟5英尺的速度移动。
(3)CLSS软件以和传送带速度一致的时间间隔接受来自条形码阅读器的信息。「条形码」数据被解码成盒子的标识格式,软件将在最多可容纳个条目的零件号数据库中进行「检索」,以确定当前在阅读器(分类站)位置的盒子应该放到哪个箱子中。
(4)该箱子的信息被传送到「分流器」,以把盒子放进合适的箱子中,每个盒子所放进的箱子的「记录均被保存」起来以供以后提取及报告。
(5)CLSS软件同时也接受来自脉冲流速计的输入,用于使「控制信号」与分流器同步,根据分类站和分流器之间产生的「脉冲数」,软件将产生一个控制信号给分流器,以适当地定位盒子。
?
通过分析,这个过程将产生如下「功能」:
「读取条形码输入」读取脉冲流速计「解码零件编码数据」检索数据库「确定合适的箱子」产生分流器的控制信号「维护盒子目的地的记录」??
「性能」取决于传送带的速度,对于每个盒子的处理必须在下个盒子到达条形码阅读器之前完成。
??
「约束条件」包括:
盒子以随机的顺序通过且其间的距离相同,传送带以每分钟5英尺的速度移动;CLSS软件以和传送带速度一致的时间间隔接受来自条形码阅读器的信息;控制信号与分流器同步。??
「接口」:条形码阅读器,分流器,PC等
?三、影响估算的因素
软件项目管理过程开始于项目计划,在做项目计划时,重要的一项活动就是「估算」。
那么,「影响估算的因素有哪些呢?」
「复杂性」越高,估算的风险就越高。
项目的「规模」越大,开发工作量越大,估算的风险越高。
「项目的结构化程度」越高,进行精确估算的能力就能提高,而风险将减少。
「历史信息的有效性」也影响估算的风险。历史信息越有效,总的风险就越少。
如果对软件项目的「作用范围」还不是十分清楚,或者用户的要求经常「变更」,也会增加估算的风险。
计划人员应当要求「在软件系统的规格说明中」给出完备的功能、性能、接口的定义。
四、软件项目资源
软件项目计划的第二个任务是对完成该软件项目「所需的资源」进行估算。
1、软件项目资源构成
(1)最基本的、重要的资源——人员;
(2)现成的用意支持软件开发的工具——硬件工具;
(3)现成的用意支持软件开发的工具——软件工具(CASE);
(4)可复用构件。
2、分析图软件项目资源构成要素
接下来对各构成要素进行一一分析。
3、人力资源
(1)在考虑各种软件开发资源时,「人是最重要的资源」;
(2)在安排开发活动时必须考虑「人员的技术水平」、「专业」、「人数」、以及「在开发过程中对各阶段人员的需要」;
(3)对于一些「规模较小的项目」,只要向专家做些咨询,也许「一个人就可以完成所有的软件工程步骤」;
(4)对一些「规模较大的项目」,在整个软件生存期中,「各种人员的参与情况是不一样的」。
以下通过一张图了解各阶段人员对软件生命周期的共享度。
各阶段人员对软件生命周期的共享度4、硬件资源
硬件是作为软件开发项目的一种工具而投入的,分别包含以下「三种类型」:
(1)宿主机(Host)——软件开发时使用的计算机及外围设备;
(2)目标机(Target)——运行已经开发成功软件的计算机及外围设备;
(3)其它硬件设备——专用软件开发时需要的特殊硬件资源;
5、软件工具
软件工程人员在软件开发期间使用了许多软件工具来帮助开发,这种软件工具集叫做「计算机辅助软件工程」(CASE)。分别包括:
(1)业务系统计划工具集;
(2)项目管理工具集;
(3)支援工具——文档生成工具、网络系统软件、数据库、电子邮件、通报板,以及配置管理工具;
(4)分析和设计工具;
(5)编程工具;
(6)组装和测试工具;
(7)原型化和模拟工具;
(8)维护工具;
(9)框架工具——这些工具能够提供建立「集成项目支撑环境」(IPSE)的框架。
6、可复用构件
(1)可复用的软件资源,被称为构件。可复用构件分别包含:
「成品(off-the-shelf)构件」:已存在的构件,能够从第三厂商获得,被准备用于当前的项目,并已被完全确认。「具有完全经验的构件」:当前项目成员在这些构件上有丰富的经验。「具有部分经验的构件」:与当前项目相关,但需做实质性的修改;项目成员对此构件的经验有限。「新构件」:为满足项目组的特定需要而专门开发的软件构件。
(2)使用可复用构件时,应考虑:
「成品构件」能够满足项目的需求——采用!因为低成本和低风险。「具有完全经验的构件」可以使用,但在项目计划中应反映出来——修改和集成的风险可接受。「具有部分经验的构件」使用时必须详细分析——如果要大量的修改,所需的成本可能超过开发新构件的成本。五、软件工作量与成本的估算
在软件成本和工作量的估算中,不确定因素非常大,包括人、技术、环境、*治等因素都会影响估算结果。
软件项目的估算能够通过一系列「系统化」的步骤,在可接受的风险范围内提供估算结果。
对于每一个可用的软件成本估算的选择,其效果好坏取决于「用于估算的历史数据」!
先用一张图了解「软件工作量和成本」的估算方法。
软件工作量和成本
「接下来讲解三种估算方法。」
1、基于LOC估算工作量和成本(1)估算步骤
①给出软件范围——项目计划人员可对每一个分解的功能提出一个有代表性的「估算值范围」;
②进行功能分解——利用历史数据或凭实际经验(当其它的方法失效时),对每个功能分别按「最佳的」、「可能的」、「悲观的」三种情况给出LOC或FP估计值,记作a、m、b;
③估算每一个子功能——计算LOC或FP的期望值E;
=(
+
+
)
④计算总LOC数(∑)——所有子功能的总估算变量值「除以」相应于该估算变量的平均生产率度量得到项目的总工作量;
?
例如,若假定总的FP估算值是,基于过去项目的平均FP生产率是5.5FP/PM,则项目的总工作量是:工作量=/5.5=56PM,即每个月需要56个人
?
⑤给出两个历史数据——
「第一种」:给出生产率和劳动率价格,可以算出「工作量」和「成本」;
「第二种」:给出生产率和每行代码成本,也可以算出「工作量」和「成本」。
下面通过一张图了解这两种方法分别如何计算出工作量和成本:
基于LOC估算工作量和成本(2)引例
系统定义评审指明,软件是在一个工作站上运行,其接口必须使用各种计算机图形设备,包括鼠标器、数字化仪、高分辨率彩色显示器和激光打印机。在这个实例中,「使用LOC做为估算变量」。根据系统规格说明,「软件范围的初步叙述如下」:
“软件将从操作员那里接收2维或3维几何数据,操作员通过「用户界面」与「CAD系统」交互并控制它,这种用户界面将表现出很好的人机接口设计特性。所有的几何数据和其它支持信息保存在一个「CAD数据库」内。要开发一些「设计分析模块」以产生在各种图形设备上显示的输出。软件要设计得能被控制,并能与各种外部设备进行交互,外部设备包括鼠标器、数字化仪、激光打印机和绘图仪。”
?
从以上的例子可以得出:
「①经过分解,识别出下列主要软件功能:」
用户界面和控制功能;二维几何分析;三维几何分析;数据库管理;计算机图形显示功能;外设控制PC;设计分析模块。
「②可得到如下估算表:」
功能最佳值a可能值m悲观值b期望值E元/行行/PM成本(元)工作量(PM)用户接口控制.4二维几何造型.4三维几何造型.9数据结构管理.9计算机图形显示.7外部设备控制.2设计分析.0总计44.5
「③」从历史的「基线数据」求出生产率度量,即「行/PM」和「元/行」。
「④」根据复杂性程度的不同,对各功能使用不同的「生产率度量值」。根据估算表可得:
成本=LOC的期望值E「乘以」元/行;
工作量=LOC的期望值E「除以」行/PM;
因此可得,该项目总成本的估算值为,元,总工作量的估算值为每个月人。
?(3)基于LOC估算的相关计算
「Question:」
基于LOC估算某软件项目的工作量和人工成本,假设项目的子功能有三个,估算的LOC数分别为,2,3,项目的生产率为LOC/PM,劳动力价格为6元/PM,则项目总的LOC数、工作量、人工成本分别为多少?写出计算公式及计算过程。
「Answer:」
2、基于FP估算工作量和成本(1)估算步骤
①给出软件范围;
②进行功能分解(无需很细);
③计算五个信息域计数值;
④计算总计算值(应考虑加权因子);
⑤回答14个问题,算出∑Fi(Fi为复杂度校正值);
⑥计算FP;
⑦给出两个历史数据,生产率(FP/PM)、人工价(元/PM);
工作量=总FP/生产率=PM;
成本=工作量x人工价=元
(2)引例
某项目有「5个信息域计数和1个算法计数」,如下图所示。假设已知该项目的两个历史数据,分别为:生产率为4FP/PM,人工价为3元/PM,试计算出复杂度校正值∑Fi,工作量和成本的值。
测量参数计数值权重(加权因子)求和输入数输出数查询数文件数外部接口数算法「总计数值」「复杂度调整因子」0.84「特征点」?
「由上图可知:」
复杂度调整因子为0.84,即0.65+0.01∑Fi=0.84,由此可计算出复杂度校正值∑Fi=19;
若要得到工作量,需先求功能点FP,即:FP=总计数值x(0.65+0.01∑Fi)=x0.84=FP;
工作量
=总
生产率
成本
=工作量
人工价
元
元?(3)基于FP估算的相关计算
「Question:」
基于FP估算某软件项目的工作量和人工成本,假设项目的输入数、输出数、查询数、文件数、接口数分别为59、20、10、5、2,加权因子取平均值4、5、4、10、7,14个问题的回答取值总和为15。那么该项目的总计数值是多少?项目的功能点FP又是多少?假设项目的生产率为16FP/PM,劳动力价格为6元/PM,则工作量和人工成本分别为多少?写出计算公式及计算过程。
「Answer:」
基于FP估算的相关计算答案?
「写到这里,对基于LOC和FP的估算做个小结:」
这两种类型的估算的基本思想都是,先计算出LOC和FP的值,然后根据组织「生产率」和「每个劳动力价格」(人工价)的历史数据,估算「总成本」和「工作量」。如果在估算的时候,遇到估算差别很大时,一般有以下「两种原因」:「①项目的范围」未能被充分理解或被误解;「②」基于问题的估算技术中所使用的的「生产率数据」对于该应用是不合适的,或是太陈旧了,或是被无用了。?3、COCOMOⅡ模型估算(1)COCOMOⅡ模型中项目估算的三个阶段阶段时间功能描述(此阶段要做什么)应用组装阶段(ApplicationComposition)早期、确定系统性能时①利用「应用点」applicationpoint来进行估算规模;②利用原型来解决高风险问题。早期设计阶段(earlydesign)需求稳定,体系结构已建立时①研究可选的体系结构和概念;②用「功能点」funtionpoint来做估算规模。体系结构后阶段(postarchitecture)软件在构造中,知道更多系统信息时①以「FP、LOC」作为估算单位。?
补充说明「应用点」知识:
应用点,即「对象点」。一种间接的软件测量,其计算需要使用以下三个元素:
用户界面上的屏幕数screens;报表数reports;建造应用可能需要的构件数3GL