软件工程管理
随着全球软件业的飞速发展,用户对软件的
功能和规模等方面都提出了更高的要求。原有的
,软件作坊, 的小规模生产已经不能适应社会发
展需求,同时软件工程还是一个复杂的、要素相
互关联的系统性工程。软件开发不同于其他产品
的制造,软件开发的整个过程都是设计过程;软
件开发不需要使用大量的物质资源,而主要是人
力资源;并且,软件开发的产品只是程序代码和
技术文件,并没有其他的物质结果。
如果能对整个过程进行有效地、科学地管理,
必然会产生意想不到的效益。软件工程管理的目
的是优化软件工程要素的组织结构,降低工程成
本,加快进度,提高软件工程质量,并把软件工
程的风险减小到最低限度。
从现有情况看来,软件公司大多在软件开发
与维护的过程中引入工程的思想和项目管理的方
法,而且他们都已经发现了软件工程管理带来的
好处。所以说,软件质量的好坏,不仅取决于所
采用的技术,更决定于管理的好坏。
本章主要介绍如下内容:
o 软件项目管理
o 软件计划
o 软件质量管理
o 软件经济学
第一节 软件项目管理
一, 软件项目管理
( 一 ) 软件项目管理的定义
软件项目管理 是为了使软件项目能够按照预
定的成本、进度、质量顺利完成,而对成本、人
员、进度、质量、风险等进行分析和管理的活动。
管理行为是伴随着人类的出现同步发展的,
而管理科学和管理理论体系的形成却不是很长,
软件项目的管理实践和理论发展史就更短。总体
来说,软件项目管理还处在一个实践的阶段、发
展的阶段,但是软件项目管理已经充分体现了其
蕴涵的科学性、技术性和艺术性。
软件项目管理不同于其它普通的工程项目,
它属于智力密集型活动,其中,人员, 抽象的文
档 和 程序代码 是管理的主要对象。
因此,软件项目管理与其它的工程项目管理
相比有其自身的独特性,在实践中,软件工程管
理人员不能照抄照搬,应做到因地制宜,确保管
理行为具有针对性。
( 二 ) 软件项目管理的目的
曾经有人这样定义项目管理,它指, 在项目
活动中运用一系列的知识、技能、工具和技术,
以满足或超过相关利益者对项目的要求,,
显然该定义给出了项目管理涉及的范畴和需
要达到的目标。我们知道,对于任何项目,项目
管理的精髓都是 成本, 工期 和 质量,三者之间相
互关联。
但是最终的目标都是降低成本,增加效益,
客户满意且公司获利。
按期完成软件项目,增强用户对软件开发方
的信任。
保质保量,确保软件产品满足用户需求。
由此看来,是否有一套科学的、有效的项目
管理手段和训练有素的管理队伍将直接影响到软
件工程的成功与否。因此,项目管理已经被公认
为是 IT公司的核心竞争力之一。
( 三 ) 软件项目管理的要素
1,三大基本要素 ( TCQ)
软件项目管理的三大要素是 时间 ( Time)、
成本 (Cost)和 质量 ( Quality),三者相互关联,
相互制约,都有各自的内涵。
项目的 时间 通常用计划进度表来表示,它是
一个二维表。一维是时间,另一维是组成项目的
基本活动的集合。活动在整个项目周期的一定时
间段中存在。有时在项目计划进度表中加上基线
(节点),用来描述项目中某些具有重要意义的
活动最后完成期限。成本是软件项目所需款项。
项目都会有一个 成本 预算,但是往往由于实
际市场竞争等因素的干扰,迫使软件开发方为获
得项目而不切实际的降低预算成本,甚至诱发软
件工程的失败。软件项目的成本一般包括人力成
本、设备费用和分包费用等等,其中人力费用所
占的比例较大。人力费用在成本预算时一般较难
把握,主要因为软件项目的人员工作量计算复杂,
且单位工作量成本的不确定性强。
质量 相对用户需求而言,一般质量好坏的评
判用户意见更有说服力。用户需求和软件开发人
员对软件系统建立的模型的偏差是客观存在的,
而且不可能完全消除。所以,对用户需求描述的
严格定义、多次反馈和精确说明是必要的,它是
软件能否满足用户需求的基本保证。
有时,人们把 时间, 成本, 质量 和软件工作
范围 并称为 软件项目管理的四大要素,可见软件
工作范围对于软件项目管理有重要的意义。
软件工作范围 是指软件的用途、以及对软件
的要求。主要包括软件的功能、性能、接口和可
靠性四个方面。
软件工作范围一般由计划人员确定,要用无
二义性的语言来描述。软件工作范围给出了对
,完成哪些工作就可以达到项目的目标?, 或
,完成哪些工作项目就可以结束了?, 等问题的
描述。
具体的说,软件工作范围包括软件功能、软
件性能、接口和软件可靠性:
? 软件功能:根据用户需求确定,尽可能精细。
? 软件性能:处理时间的约束、存储限制、以
及依赖于机器的某些特性。
? 接口:硬件、软件、人。计划人员要充分考
虑各个接口的性质及复杂程度,以确定对开发资
源、成本和进度的各种影响。
? 软件的可靠性。
2,要素之间的关系
软件项目管理的要素之间是相互关联、相互
制约的。一般来说:
? 项目的工作范围越大, 花费的成本越大, 花
费的时间越长, 但是与软件项目的质量没有必然
的关系 。
? 软件项目的时间越长, 越充裕, 花费的成本
越高, 一般也能提高软件项目的质量 。
? 软件项目的成本是软件质量的基本保证 。
? 软件质量的提高需要软件项目的时间和成本
的强力支撑 。
总而言之,软件项目的追求的最佳状况是
,多、快、好、省, 。
,多, 指工作范围大,,快, 指时间短、
,好, 指质量高,,省, 指成本低。
相互之间的关联性告诉我们,提高一个指标
的同时会降低另一个指标,所以实际上这种理想
的情况很难达到。因此,在软件项目的实施中,
我们要根据具体情况对不同要素的性能参数作取
舍。
( 四 ) 软件项目管理的内容
软件项目管理的基本内容 是软件配臵管理、
软件质量管理、软件风险管理及开发人员管理四
方面,他们贯穿软件开发的整个过程。
( 五 ) 软件项目管理的组织形式
为了使软件项目能够按照计划顺利完成,项
目组织是管理行为的主体,它在管理过程中具有
非常重要的地位,它协调矛盾,提供保证和资源。
可以这样说,采用何种组织模式进行管理对软件
项目管理过程的成功与否相当重要。 项目管理组
织形式 包括 项目管理委员会, 项目管理小组, 项
目评审小组 和 软件产品项目组 。
( 五 ) 软件项目管理开发阶段
软件项目管理开发包含以下几个阶段:总体
规划,项目立项,需求分析,系统分析,系统设
计,编码实现,项目测试,文档制作,项目发布,
项目版本化发布。
1,总体规划
规划项目工作的内容, 规定工作范围及成果,
确定目标市场, 技术指标和应用要求, 明确实施
方案, 技术可行性及涉及的各种资源, 估算项目
成本 。
2,项目立项
产品部对开发的项目提交申请及相关项目资
料,由相关人员对该项目进行一系列的风险评估。
产品部进行详细进度计划安排,落实时间进度、
资源、技术、资金和费用等。最后所有的项目申
请资料、风险评估报告及产品进度计划都要报给
公司上级领导审批,进行立项评审。立项通过的
项目才能进入正式的开发工作。
3,需求分析
根据项目需求报告界定工作范围和应用方案
的设计思路,进一步深入细化应用方案,描述将
要开发出的计算机系统中包含的各项业务是如何
做的,及业务流程、相关理论、运算公式、原理、
业务数据、单据报表格式等。
4,系统分析
根据项目需求分析,对将要建立的满足用户
需求的计算机系统进行分析。在系统分析过程中
采用面向对象分析技术( OOA)划分需求的问题
域,对每一个问题域进行分析和抽象,对其中的
事物和它们之间的关系产生正确的认识,找出描
述问题域及其系统责任所需的类及对象,定义这
些类和对象的属性与服务,以及它们之间所形成
的结构、静态联系和动态联系。最终产生一个符
合用户需求,并能够直接反映问题域和系统责任
的面向对象的分析模型。
5,系统设计
根据项目需求分析和系统分析,针对具体实
现中的人机界面、数据存储、任务管理等内容,
运用面向对象设计技术( OOD)进行系统设计。
主要包括 UI设计、对象设计和数据库表设计。
6,编码实现
根据系统设计的结果,运用面向对象的方法
进行程序编码( OOP)以实现系统设计的内容。
编码过程就是用具体的数据结构来定义对象的属
性,用具体的语言来实现服务流程图所表示的算
法。在对象设计阶段形成的对象类和关系最后被
转换成特殊的程序设计语言、数据库或者硬件的
实现。
7,项目测试
对系统分析、系统设计、程序编码等运用面
向对象的方法进行测试( OOT)。项目的测试工
作贯穿项目的整个开发过程。
主要包括:分析( OOA)测试、设计( OOD)
测试和编码( OOP)测试,以及集成测试和系统
测试。
8,文档制作
跟随项目开发过程应产生的文档主要包括三
类:
( 1) 开发文档:分析, 设计, 编码, 测试以
及各种开发管理文档等资料;
( 2) 用户文档:在线帮助, 安装指南, 使用
手册, 技术手册, 培训教材等;
( 3) 宣传资料:产品介绍资料, 产品白皮书,
产品宣传 PPT,演示光盘等 。
9,项目验收
对完工的项目按照验收步骤进行验收 。 验收
过程中对项目的情况给予评价 。
10,项目版本化发布
对验收通过的项目进行版本控制, 整理项目
版本所包含的内容并版本化, 发布产品发布通告 。
二, 人员管理
软件项目管理中的人员管理活动是动态的过
程,每个人均在一定范围进行着管理的活动。项
目的参与者有高级管理者、项目(技术)管理者、
开发人员、客户与最终用户。值得注意的是人员
管理属于软件项目管理的内容之一,在此,我们
对人员管理作近一步阐述。人员管理是软件项目
管理的核心内容,我们在软件项目管理过程中强
调以人为本,没有成功的人员管理就没有软件项
目的成功。
对于软件项目的管理者来说, 要求要具有一
定的素质, 这是一些基本要求 。 具体要求如下:
(1)调动每个成员积极性的能力;
(2)组织能力, 指能全局统筹项目的实施;
(3)协调能力,磨合项目成分之间的关系,做
到系统整体性能最佳;
( 4) 创新能力, 鼓励项目成员创造并感到有
一种创造力;
( 5) 解决问题的能力, 一个好的项目管理者
要能及时发现问题, 系统的组织人员解决问题;
( 6) 成就感, 管理者要使项目组的成员都有
成就感;
( 7) 具有项目的相关技术能力;软件技能等 。
软件人员要有一定的创造力和技术水平。
Bill Curtis认为, 不同的人员完成程序设计任
务的能力上存在巨大的可变性, 。对于软件编程
人员来说要有一定的编程能力,这是软件编程人
员最起码的要求,要有良好的编程习惯,代码要
有清晰易懂,容易维护;要对相关领域知识有所
了解,软件人员是为某一领域进行编程的,所以
对这一领域的了解有利于软件人员提高软件的质
量;要有创新能力,它是软件团队活力的体现;
项目中的人员要具有相互沟通与协调的能力。
第二节 软件计划
一、软件计划
计划是用来建立一个总体方向的,是用来帮
助开始进行项目的工作,保证这些项目是在朝着
一个目标前进的。但是,所有的行动都是围绕项
目进行的。软件计划将那些繁重的工作分解成更
小单位的相关项目,这些相关项目都是在同一时
间内以平行的状态被执行。软件计划对项目的分
解粒度可以根据具体的情况和要求来决定。本节
介绍制定软件计划的两种方法,甘特图 ( Gantt
Chart)和 网络图 方法
(一)甘特图( Gantt Chart)
甘特图是以水平线段表示每一项任务,线段
的起始点表示任务的开始,结束点表示任务的结
束,线段的长度表示任务的完成时间。任务开始
把线段左边的空的小圆圈涂黑,任务结束时把线
段右边的空的小圆圈涂黑。这样就很容易看出哪
些任务已经开始,哪些还没有开始,哪些已经完
工。
甘特图的优点是简单明了,清楚地从图上看
出任务时间上的对比关系,非常直观方便。它的
缺点是各个任务之间的逻辑关系无法表示清楚。
如下图所示,给出了对于包含 5个任务的软件计
划甘特图表示,其特征是给出了项目任务的时序
状态。
(二)网络图方法
网络图方法 PERT(Program Evaluation and
Review Technique),是美国海军和洛克希德公
司 60年代初发展起来的一种先进的管理技术。在
国民经济中已经广为应用,并且受到用户的好评。
我们来看一个例子。下面是一个网络 PERT图,
每一个线段表示这一个项目中的每一个任务,线
段的起始点和终止点的都连接了一个节点,节点
有编号,线段的旁边标有该项任务的名称和该任
务所要花费的时间单元。如 0- 1之间的线段表示,
该任务名称为测试计划,所花费的时间单元是 4
个单位时间。
1
7
6
3
8
54
2
0




4
B测 试
4
C 测

1
D测 试
4
A调 试
3
调试
4


2
测试
3
E试 验
8
E


3


3
我们以该例分析,从节点 5为例,从起始点到
达节点 5有两条路径它们是 0- 1- 2- 5和 0- 3- 4
- 5,所用的时间单元分别是 9个单位时间和 11个
单位时间。 E调试必须等 C测试和调试两个任务都
完成后才能进行,所以 E调试的最早启动时间是
11个单位时间后。依次类推我们把每一个节点的
最早启动时间标注在该节点的上方得到下图。
另外我们从终止点逆向推进来计算各个节点
的最迟启动时间。以节点 3为例,沿路径 8- 5- 4
- 3倒退到节点 3应为 5个单元时间而沿路经 8- 7
- 3应为 4个单位时间,所以该节点的最迟启动时
间是 4个单元时间。依次类推我们可以得到各个
节点的最迟启动时间从下图我们可以看到。
1
7
6
3
8
54
2
0




4
B测试
4
C 测

1
D测试
4
A调试
3
调试
4


2
测试
3
E试验
8
E


3


3
7
0
4
4
11
8 12
7 15
通过比较两个图,得到节点 0,3,7,8的最
早启动时间和最迟启动时间是一样的,也就是说
这些节点上没有停留的时间,这是一条耗时最长
的路径,称之为关键路经。见下图。关键路径的
耗时等于整个工程的耗时,因此要想缩短时间,
就必须找出关键路径,并研究如何减少关键路经
的耗时。
(三)软件计划制定总体原则
创建项目计划会迫使您早在编写代码之前就
考虑如何构建您的系统 —— 减少项目的风险,因
为您已经考虑了各种策略和方法,并且已经选择
了最有意义的一项。您的目的不应该只是不花力
气产生一个计划;它应该是一个实际可行的计划,
您可以根据它来成功管理您的项目。
在软件计划制定时,总体上应该注意:
软件过程驱动软件计划 。每个软件过程都有
一个不同的集合,它包括组织团队的活动方法以
及规划项目常用的技术。不同的过程有不同的计
划,通常软件计划的制定由软件过程驱动。
软件计划由粗到细。 软件计划的制定遵循由
粗到细,不断精化的原则。首先制定一个粗粒度
的、确定项目高级活动和预期里程碑的计划,为
了便于计划的实施和贯彻,再对粗粒度的计划进
行细化。一般说来,较小粒度的计划便于实施,
完成的可靠性高。
计划实施者和计划制定者的统一。 实施者和
制订者的分离容易导致两者的相互扯皮,甚至计
划流产。创建项目计划的最佳人员是负责实施该
计划的人员。当规划由一个人创建而由另一个人
实施时,如果项目不能按时完成或超出预算,他
们不太会相信计划,而很有可能会责备它。也就
是说,参与项目的每个人都应该投入到项目计划
的开发和进展中。
第三节 软件质量管理
近些年来,软件人员正不懈的追求软件质量,
虽然付出了巨大的努力,但是收效甚微。于是,
大部分软件企业试图通过壮大软件测试队伍,希
望通过加大测试力度来提高软件质量,然而,软
件测试不能从根本上提高软件质量。究其原因,
人们似乎对于软件质量的概念和内涵并不是很清
楚,就更谈不上采取有效的方法提高软件的质量。
我们认为,实施软件质量管理是软件开发过程不
可缺少的一个重要环节。
一、软件质量及其评价
传统上,人们对软件质量的评价参数包括软
件功能是否齐全、结构是否合理和层次是否分明
等方面。不难发现,这些评价的描述是含糊不清
的,不能对软件的质量做定性的分析。不精确的
软件评价给用户和软件开发人员均带来消极作用,
对用户而言,没有明确的软件评价,用户就没有
选购软件的依据;同时,软件开发人员没有软件
质量的评价标准,在软件的开发过程中就无, 法,
可依。因此,软件质量评价标准的制定有其必要
性,也有重要意义。
美国的 B.W.B oehm和 R.Brown提出了三
个层次的评价度量模型,三个层次分别是
软件质量要素,准则和 度量 。
在此我们对第一层次 —— 软件质量要素
作简单介绍。
把软件质量分解成六个要素,通过如下的六
个要素来评判软件质量:
1.功能性:软件功能来源于软件的用户需求,
用户需求分为显性需求和隐性需求,隐性需求泛
指用户潜在的却不能陈述的软件需求;功能性是
软件满足用户需求的程度描述。
2.可靠性:软件可靠性包含两个方面的内容,
其一,软件在规定的运行环境下正常工作的程度;
其二,软件在非法操作或故障发生时继续运行的
程度。
软件可靠性在软件工程中具有较大的实际意
义,可靠性差的软件在故障发生时不能正常运行,
这将使得软件功能丧失。在必要时,可以建立软
件保障系统,从根本上提高软件可靠性。
3.易使用性:易使用性的内容包括软件用户
界面的友好性和软件交互性,交互性和友好性是
衡量软件使用是否方便的两个重要参数。
4.效率:软件效率指软件运行时对所需的计
算机资源利用的有效程度,软件效率的衡量通常
从时间和存储需求两方面入手。
5.可维护性:软件的可维护性是指用户需求
改变或软件环境发生变更时,软件系统能进行相
应修改的容易程度,可维护性一般与软件的可读
性、可理解性和可修改性相关。
6.可移植性:可移植性指软件整体或部分对
运行的系统和环境的依赖程度,依赖程度越高,
软件可移植性越差。
二、软件质量问题的根源
虽然软件企业没有停止对软件质量的追
求,但是事实表明他们并没有在提高软件
质量方面取得突破性进展。
总的来说,较多质量不高的软件在软件开发
中存在以下几点共性:
? 缺乏软件产品检验标准,开发人员在提高软
件质量上还具有一定盲目性;
? 软件开发人员缺乏质量意识;
? 软件项目时间短、计划紧;
? 软件项目资金不足,开发方降低开发成本;
? 没有有效的软件项目管理体制。
据有关调查显示,国内现有大部分软件存在
不同程度的质量问题,但是如果在软件开发过程
中贯彻全面质量管理思想,辅以有力的软件测试,
软件质量的提高还有较大的空间。
三、软件质量与 CMM
(一) CMM概念
CMM( Capability Maturity Model for
Software),英文缩写名是 SM-CMM,它指, 软件
能力成熟度模型,, CMM是美国卡内基 — 梅隆大
学软件工程研究所(简称 SEI)的研究成果; SEI
是美国国防部出资于 1984年设立。
从 1986年开始,SEI针对软件组织改善其软件
过程,特别是美国国防部对软件承包商的能力评
价问题,研究, 过程成熟度框架, 。 1987年 9月,
SEI发表了关于过程成熟度框架的简要说明和成
熟度调查问卷。以这一过程成熟度框架为蓝本,
在美国联邦政府促进下,从 1987年到 1991年在美
国一些大公司的软件组织进行了软件过程能力成
熟度模型的评估实践。
根据这 4年的实践经验,特别是从美国政府和
工业界反馈的关于软件过程评估的信息,SEI在
原过程成熟度框架的基础上开发出了, 软件能力
成熟度模型( CMM) 0.0版, 。 SEI给 CMM下的定
义是,对于软件组织在定义,实现,度量,控制
和改善其软件过程的进程中各个发展阶段的描述 。
这个模型便于确定软件组织的现有过程能力
和查找出软件质量及过程改进方面的最关键问题,
从而为选择过程改进战略提供指南。 SW-CMM为
软件企业的过程能力提供了一个阶梯式的进化框
架,它基于过去所有软件工程成果的过程改善的
框架,吸取了以往软件工程的经验教训。它指明
了一个成熟的软件组织在软件开发方面需要管理
的那些主要工作、这些工作之间的关系、以及以
怎样的先后次序,一步一步的做好这些工作使软
件组织走向成熟,是目前国际上最流行也是最实
用的软件生产过程标准。
(二) CMM结构
SW-CMM为软件企业的过程能力提供了台阶式
结构,共分五级,分别是 初始级, 可重级, 定义
级, 管理级 和 优化级 。初始级实际上是一个起点,
任何准备按 CMM结构进化的企业一般都处于这个
起点上,并通过这个起点向可重级迈进。除初始
级外,每一级都设定了一组目标,如果达到了这
组目标,则表明达到了这个成熟级别,可以向下
一个级别迈进。 CMM从可重级起,每一个低的级
别实现均是高的级别实现的基础,所以它不主张
级别跨越。
SW-CMM提供阶梯式的进化框架
1.初始级 初始级实际上是一个较为原始的
阶段,初始级的软件过程是未加定义的随意过程,
项目的执行是随意甚至是混乱的。它的执行没有
政策、资源等方面的保证时,那么它仍然被视为
初始级。
2.可重级 可重级的管理过程包括了 需求管
理, 项目管理, 质量管理, 配臵管理 和 子合同管
理 五个方面,可重级的焦点集中在软件管理过程
上。一个可管理的过程则是一个可重级的过程,
一个可重级的过程则能逐渐进化和成熟。
3.定义级 定义级给出了定义执行的步骤标
准,并将这些标准集成到企业软件开发标准过程
中去。所有开发的项目需根据这个标准过程,剪
裁出该项目的过程,并执行这些过程。过程的剪
裁不是随意的,在使用前需经过企业有关人员的
批准。
4.管理级 管理级的管理是量化的管理。所
有过程需建立相应的度量方式,产品的质量需有
明确的度量指标。这些度量应是详尽的,且可用
于理解和控制软件过程和产品,量化控制将使软
件开发真正变成工业生产活动。
5.优化级 优化级的目标是达到一个持续改
善的境界。所谓持续改善是指可根据过程执行的
反馈信息来改善下一步的执行过程,即优化执行
步骤。如果一个企业达到了这一级,那么表明该
企业能够根据实际的项目性质、技术等因素,不
断调整软件生产过程以求达到最佳。
从效果而言,在上述不同阶段,软件开发生
产的成熟程度给软件企业带来了完全不同的效果。
从第一阶段到第五个阶段,软件开发生产的计划
精度越来越高,每单位工程的生产周期越来越短,
每单位工程的成本越来越低。 CMM五级模型为软
件质量的控制和质量的提高奠定了坚实的基础,
它是当前软件质量控制领域研究的一个热点。
第四节 软件经济学
一、软件的价值观
软件属于商品范畴,是价值和使用价值的复
合体。显然价值是软件开发人员智慧及脑力劳动
的结晶;使用价值特指软件作为一种商品它具有
满足用户的一种有用性,所以,软件有用性程度
是我们衡量软件好坏的一个重要参数。
但是软件自身的特殊性使得软件价值的评估
显得较为抽象,它不同于其它一般商品的定价,
软件商品是无形的。通常我们综合考虑影响软件
商品价值的相关因素,采用不同的评估方法了确
定软件价值。
二、软件价值评估的因素
软件价值与软件的成本有关,但是计算机软
件给企业带来的经济效益也可能受各种因素的影
响而具有明显的不确定性,这给软件评估带来许
多困难。总而言之,我们在进行软件评估时,通
常综合考虑如下因素:
1、软件规模:软件规模主要指软件的系统大
小,其衡量指数通常包括可执行程序或机器语言
指令的字节数、高级语言语句的行数、系统数据
存储量和文体数目等等。
2、软件成本和可扩展性:软件成本是评估软
件价值的一个重要参数;可扩展性差的软件系统
的代价高。
3、软件运行要求:软件对系统和运行环境的
要求包括系统的支持系统环境及运行硬件要求。
4、软件收益或经济寿命期:软件收益较难计
算,一般而言,软件的效益是隐性的;软件的寿
命周期是决定软件价值的另一重要参数。
5、软件市场:现阶段软件的市场状况对软件
价值的评估影响较大,没有市场的软件其自身的
价值无法最终体现。软件的市场需求量直接影响
到软件的价值,随着市场需求及软件拷贝的销售
量的递增,软件的单件价值下降。
但是,我们对于影响软件价值的研究要全盘
考虑各个因素,在不同的阶段影响软件价值的因
素所起的作用是不一样的,因此,在软件价值评
估的时候我们通常根据现实情况加权确定软件价
值评估模型。
三、软件评估方法
当前常用的软件评估方法有重臵成本法、收
益现值法和现行市价法三种。重臵成本法适合与
对专用软件和尚未投入生产、销售的通用软件进
行价值评估;而对于已经生产并投放市场的通用
软件采用收益现值法;现行市价法一般用来对有
市场同类可比软件进行评估,其价值评估一般参
考同类软件的市场价值。
(一)重臵成本法
重臵成本法按被评估资产的现时完全重臵成
本减去损耗或贬值来确定被评估资产的价格。其
基本公式为:
评估价值 =重臵全价 -贬值(或重臵全价 × 成
新率。)
常用软件重臵全价估算参数有开发成本要素、
开发过程成本或语句行数,下面我们分别进行介
绍:
( 1)开发成本要素进行评估的计算公式如下:
重臵全价 =∑ (实耗材料量 × 现时价格) +∑
(实耗工时 × 现行工时费用) +∑ (原劳务消耗
量 × 现时收费标准)
( 2)开发过程成本评估方法如下:
根据软件开发过程系统分析、系统设计、程
序设计和软件测试的四个阶段,按每个阶段的工
作量和每个工作量的成本来计算各阶段成本,各
阶段的成本之和为总成本。具体的过程成本估算
步骤为:
功能分解。把软件功能细化、分解,各功能
的实现均有系统分析、系统设计、程序设计和软
件测试四个阶段。
各功能工作量计算。拆分每个功能为以上四
个阶段的各自工作量;
计算工作量成本。工作量成本和工作参与人
员有关,同时受市场供给影响;
( 3)语句行数评估方法如下:
语句行数评估方法计算公式为:软件重臵全
价 =工作日成本 × 工作日数。其中,工作日数 =编
码行数 ÷ 日工作量定额(单位是行 /日)。这里
要求日工作量定额合理、准确、稳定、否则影响
评估价值的准确性。
(二)收益现值法
收益现值法是指通过估算被评估资产的未来
预期收益折算成现值。收益期限和预期收益额由
评估人员分析预测评估对象的未来经营收益情况
确定。
(三)现行市场法。该法是通过比较类似的
软件在自愿交易下的价格来确定软件的价值。应
用这种方法评估计算机软件的前提条件是,市场
上必须有与评估对象类比的同类软件的市场价格
可供参考。运用这种方法,被评估的软件通常不
是新软件,而是已有一定的流通年限。
四、软件风险评估
通常软件开发人员在开发软件时,总认为每
件事都会按计划一样的进行。但事实却难以预料,
在软件开发时总有意想不到的事发生,软件开发
是一项创造性的工作,其本身意味着不确定性,
有无法预测的事件发生。如果这些突发事件引起
软件项目脱离正常运作轨道,那就会导致软件项
目的失败。
软件项目管理存在着风险,在软件开发的过
程中开发进度、预算、产品的功能、产品的性能
或实时运行的效能会有风险。所以我们应提前重
视风险,并加强防范,最大限度减少风险发生的
机率。进行风险管理是软件项目中减少风险发生
的重要手段。
(一)风险管理
风险具有不确定性和损失性。风险发生的时
期与发生的情况是难以预料的,每个风险发生的
结果也各有区别,风险带来的损失情况也不同。
要考虑到采取的方法,技术,工具,配备的人力,
物力,在质量上应达到何种程度。风险的类型包
括项目风险,技术风险,商业风险,管理风险和
预算风险等。风险管理包括风险识别、风险评估、
风险处理和风险监控。
风险识别是提出一个潜在破坏项目进度的风
险列表。主要涉及到以下几个方面的检查:产品
规模风险检查;业务影响风险检查;与客户相关
的风险检查;过程风险检查;技术风险检查;开
发环境风险检查;与人员的模式和经验有关的风
险检查等。识别风险的方法常用的有风险识别问
询法(座谈法、专家法)、财务报表法、流程图
法、现场观察法、相关部门配合法和环境分析法
等。
(二)风险评估
风险评估是对识别的风险进行估计和评价,
估计一个风险出现的可能性的大小及由此带来的
种种影响,同时判定风险的级别,确定该风险的
经济意义和处理的费用与效用的分析。我们可以
从成本、进度和性能等方面对风险进行评价,依
据风险描述、概率和带来的影响对每个风险做出
尽量准确的判断。
风险处理常用的方法有,风险控制法,积极
主动采取措施避免风险,消灭风险采用紧急的方
案把风险降到最低。风险自留,当风险量不是很
大时,可余留风险。风险转移。
风险监控是对风险的过程进行监控,这主要
靠管理者的经验来实施。例如开发人员的离职率
较高,管理者可与在职人员进行协商,了解人员
流动的原因,在项目开始前把该原因列入风险计
划。项目开始时作好人员流动的准备,采取措施
确保有人员离开时能继续工作。制定每个计划的
文档,并对其进行分析和总结。同时对一些关键
岗位的开发人员做好后继人员的培养,一旦他们
离开有人员接替工作。