软件工程(成本/效益分析)

一般说来,人们投资于一项事业的目的是为了在将来得到更大的好处。开发一个软件系统也是一种投资,期望将来获得更大的经济效益,经济效益通常表现为减少运行费用或增加收入。但是,投资开发新系统往往需要冒一定的风险。系统的开发成本可能比预计的高,效益可能比预期低。把钱存到银行或贷给其他企业也有明显的经济效益(利息),而且风险很低。那么,在什么情况下投资开发新系统更划算呢?

成本/效益分析的目的正是要从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确低作出是否投资于这项开发工程的决定。

为了对比成本和效益,首先需要估计它们的数量

成本估计

软件开发成本主要表现为人力消耗(乘以平均工资则得到开发费用)。成本估计不是精确的科学,因此应该使用几种不同的估计技术以便相互校验。

1,代码行技术

代码行技术是比较简单的定量估算方法,它把开发每个软件功能的成本和实现这个功能需要用的源代码行数联系起来。通常根据经验和历史数据估计实现一个功能需要的源程序行数。当有以往开发类似工程的历史数据可供参考时,这个方法是非常有效的。

一旦估计出源代码行数后,用每行代码的平均成本乘以行数就可以确定软件的成本。每行代码的平均成本主要取决于软件的复杂程度和工资水平

2,任务分解技术

这种方法首先把软件开发工程分解为若干个相对独立的任务。在分别估计每个单独的开发任务的成本,最后累加起来得出软件开发过程的总成本。估计每个任务的成本时,通常先估计完成该项目需要的人力,再乘以每人每月的平均工资而得出每个任务的成本。

最常用的办法是按开发阶段划分任务。如果软件系统很复杂,由若干个子系统组成,则可以把每个子系统再按开发阶段进一步划分成更小的任务。

典型环境下各个开发阶段需要使用的人力的百分比大致如下表。当然,应该针对每个开发工程的具体特点,并且参照以往的经验尽可能准确估计每个阶段实际需要使用的人力(包括书写文档需要的人力)。

任务人力(%)
可行性研究5
需求分析10
设计25
编码和单元测试20
综合分析40
总计100

3,自动估计成本技术

采用自动估计成本技术可以减轻人的劳动,并且使得估计的结果更客观。但是采用这种技术必须有长期搜集的大量历史数据为基础,并且需要有良好的数据库系统支持。

成本/效益分析的方法

成本/效益分析的第一步是估计开发成本、运行费用和新系统将带来的经济效益。上面已经简单介绍了估计开发成本的基本方法,运行费用取决于系统的操作费用<操作员人数,工作时间,消耗的物资等)和维护费用。系统的经济效益等于因使用新系统而增加的收入加上使用新系统可以节省的运行费用。因为运行费用和经济效益两者在软件的整个生命周期内都存在,总的效益和生命周期的长度有关,所以应该合理地估计软件的寿命。虽然许多系统在开发时预期生命周期长达10年以上,但是时间越长,系统被废弃的可能性也越大,为了保险起见,以后在进行成本/效益分析时一律假设生命周期为5年。

应该比较新系统的开发成本和经济效益,以便从经济角度判断这个系统是否值得投资,但是,投资是现在进行的,效益是将来获得的,不能简单地比较成本和效益,应该考虑货币的时间价值。

1.货币的时间价值

通常用利率的形式表示货币的时间价值。假设年利率为i,如果现在存人P元,则n年后可以得到的钱数为:F=P(1+i)"

这也就是P元钱在n年后的价值。反之,如果n年后能收入F元钱,那么这些钱的现在价值是:P= F/(1 + i)"

例如,修改一个包有的库存清单系统, 使它能在每天送给采购员一份订货报表。修改已有的库存清单程序并且编写产生报表的程序,估计共需5000元;系统修改后能及时订货,这将消除零件短缺问题,估计因此每年可以节省2500元,5年共可节省12500元。但是,不能简单地把5000元和12 500元相比较,因为前者是现在投资的钱,后者是若干年以后节省的钱。

假定年利率为12%,利用上面计算货币现在价值的公式可以算出修改库存清单系统后每年预计节省的钱的现在价值,如表所示。

将来值(元)(1+i)"现在值(元)累计的现在值(元)
125001.122232.142232.14
225001.251992.984225.12
325001.401779.456004.57
425001.571588.807593.37
525001.761418.579011.94

 

2.投资回收期

通常用投资回收期衡量一项开发 工程的价值。所谓投资回收期就是使累计的经济效益等于最如投资所需要的时间。显然投资回收期越短就能越快获得利润,因此这项工程也就越值得投资

例如,修改库存清单系统两年以后可以节省4225.12元,比最初的投资(5000元)还少774. 88元,第三年以后将再节省1779.45元。774. 88/1 779.45=0.4,因此,投资回收期是2.44年。

投资回收期仅仅是一项经济指标 ,为了衡量- 项开发工程的价值,还应该考虑其他经济指标。

3.纯收入

衡量工程价值的另一项经济 指标是工程的纯收人,也就是在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。这相当于比较投资开发一个软件 系统和把钱存在银行中(或贷给其他企业)这两种方案的优劣。如果纯收人为零,则工程的预期效益和在银行存款一样,但是开发一个系统要冒风险,因此从经济观点看这项工程可能是不值得投资的。如果纯收人小于零,那么这项工程显然不值得投资。

例如,上述修改库存清单系统,工程的纯收人预计是

9011. 94-5 000=4011. 94(元)

4.投资回收率

把资金存人银行或贷给其他企业能够获得利息,通常用年利率衡量利息多少。类似地也可以计算投资回收率,用它衡量投资效益的大小,并且可以把它和年利率相比较,在衡量工程的经济效益时,它是最重要的参考数据。

已知现在的投资额,并a已经估计出将来每年可以获得的经济效益,那么,给定软件的使用寿命之后,怎样计算投资回收率呢?设想把数量等于投资额的资金存人银行,每年年底从银行取回的钱等于系统每年预期可以获得的效益,在时间等于系统寿命时,正好把在银行中的存款全部取光,那么,年利率等于多少呢?这个假想的年利率就等于投资回收率。根据上述条件不难列出下面的方程式:

P=F/(1+j)+F2/(1+j)*+.+F./(1+j)”

其中,P是现在的投资额;F:是第i年年底的效益(i=1,2.,n);n是系统的使用寿命;j是投资回收率。

解出这个高阶代数方程即可求出投资回收率(假设系统寿命n=5)。

例如,上述修改库存清单系统,工程的投资回收率是41%~42%。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础(用户身份和文件权限)

用户身份与能力 Linux是一个多用户、多任务的操作系统&#xff0c;具有很好的稳定性与安全性&#xff0c;在幕后保障Linux系统安全则是一系列复杂的配置工作。 Linux系统的管理员之所以是root&#xff0c;并不是因为它的名字叫root&#xff0c;而是因为该用户的身份号码即UID…

Centos 8 RHEL 8 破解root密码

https://blog.csdn.net/u014042047/article/details/107309890/

TensorFlow实验(1)

实验1-2 搭建深度学习开发环境 1&#xff09;安装Anaconda 2&#xff09;创建虚拟环境&#xff1a; 3&#xff09;激活环境 4&#xff09;安装tensorflow 5)安装jupyter notebook 安装完成之后&#xff0c;运行第一个程序“Hello,World” 要求&#xff1a;详细安装步骤&…

TensorFlow实验(2)

实验3-4 数据结构-张量 1&#xff09;已知两个张量[1,3,5,7]和[2,4,4,8],编写一个模型&#xff0c;计算两个张量的加法&#xff0c;输出结果&#xff0c;并在tensorboard中显示 2&#xff09;已知张量[1,2,3,4,5,6,7,8,9,10,11,12]有12个元素&#xff0c;利用tf.reshape()将其…

Linux基础(文件权限续篇)

文件的特殊权限 在复杂多变的生产环境中&#xff0c;单纯设置文件的rwx权限无法满足我们对安全和灵活性的需求&#xff0c;因此便有了SUID,SGID,SBIT的特殊权限位。这是一种对文件权限进行设置的特殊功能&#xff0c;可以与一般权限同时使用&#xff0c;以弥补一般权限不能实现…

Linux基础(存储结构和磁盘划分)

一切从“/”开始 在Linux系统中&#xff0c;目录、字符设备、块设备、套接字、打印机等都被抽象成了文件&#xff0c;一切皆为件 与windows操作系统不同&#xff0c;Linux系统内不存在C/D/E/F盘等&#xff0c;一切文件都是从根&#xff08;/&#xff09;目录开始的 Linux系统…

软件工程(需求分析)

需求分析 为了开发出真正满足用户需求的软件产品&#xff0c;首先必须知道用户的需求。对软件需求的深人理解是软件开发工作获得成功的前提条件&#xff0c;不论人们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望.给开发者带来烦恼。 需求分析是软…

TensorFlow构建二维数据拟合模型(1)

知识图谱 TensorFlow运行机制 TensorFlow是基于计算图的深度学习编程模型 Tensor表示张量&#xff0c;其实质上是某种类型的多维数组 Flow表示基于数据流图的计算&#xff0c;实质上是张量在不同节点间的转化过程。 在TensorFlow中&#xff0c;计算图中的节点称为OP&…

Qt图形界面编程入门(标签与槽机制习题分享)

标签对象初始显示0&#xff0c;每次单击标签对象后&#xff0c;其显示内容就加1&#xff0c;依次变为1、2、3等。 #ifndef DIALOG_H #define DIALOG_H#include <QDialog> #include <QPushButton> //包含命令按钮类 #include "MyLabel.h"class Dialo…

js中执行到一个if就停止的代码_Node 中如何引入一个模块及其细节

在 node 环境中&#xff0c;有两个内置的全局变量无需引入即可直接使用&#xff0c;并且无处不见&#xff0c;它们构成了 nodejs 的模块体系: module 与 require。以下是一个简单的示例const fs require(fs)const add (x, y) > x ymodule.exports add虽然它们在平常使用…

二级MS Office公共基础知识错题本(1)

1&#xff0c;顺序程序具有顺序性、封闭性和可再现性的特点&#xff0c;不具备并发性 2&#xff0c;为了降低算法的空间复杂度&#xff0c;主要应减少输入数据所占的存储空间以及额外空间&#xff0c;通常采用压编存储技术。 3&#xff0c;树的总的结点数为树中所有结点的度数…

c++ file* 句柄泄漏_C++核心指南:P.8 勿泄漏任务资源

P.8: 勿泄漏任务资源原因随着时间的推移&#xff0c;即使是资源的缓慢增长也会耗尽这些资源的可用性&#xff0c;这对于长时间运行的程序特别重要&#xff0c;但也是负责任的编程行为的基本部分。糟糕的例子void f(char* name){ FILE* input fopen(name, "r"); // .…

数据规范化、实体-联系图、状态转换图、层次方框图、Warnier图、IPO图及验证软件需求

数据规范化 软件系统经常使用各种长期保存的信息&#xff0c;这些信息通常以一定方式组织并存储在数据库或文件中&#xff0c;为减少数据冗余&#xff0c;避免出现插入异常或删除异常&#xff0c;简化修改数据的过程,通常需要把数据结构规范化。 通常用“范式(normal forms)”…

python和c混合编程 gil,如何在python中使用C扩展来解决GIL

I want to run a cpu intensive program in Python across multiple cores and am trying to figure out how to write C extensions to do this. Are there any code samples or tutorials on this?解决方案You can already break a Python program into multiple processes.…

Linux基础(iptables与firewalld防火墙)

iptables 在早期的Linux系统中&#xff0c;默认使用的是iptables防火墙管理服务来配置防火墙。尽管新型的fierwalld防火墙管理服务已经被投入使用多年&#xff0c;但是大量的企业在生产环境中依然出于各种原因而继续使用iptables。 策略与规则链 防火墙会从上至下的顺序来读…

虚拟跳线软件干什么用的_疯狂刷单!用违法软件生成虚拟手机号,“骑手”半年“刷单”牟利60余万,百米内竟有万笔订单 | 申晨间...

来源&#xff1a;新闻晨报 记者&#xff1a;吴艺璇借助违法软件生成虚拟手机号码&#xff0c;利用平台审核漏洞大量注册用户&#xff0c;大量“刷单”骗取平台的返现和购物补贴&#xff0c;半年内疯狂刷1.8万余单&#xff0c;累计牟利60余万元。近日&#xff0c;在市公安局刑侦…

软件工程(总体设计①设计过程)

经过需求分析&#xff08;https://blog.csdn.net/weixin_45626468/article/details/115324885&#xff09;阶段的工作&#xff0c;系统必选“做什么”已经清楚了&#xff0c;现在是决定“怎样做”的时候了。 总体设计的基本目的就是回答“概况地说&#xff0c;系统应该如何实现…

ygo游戏王卡组_ACG大科普(7)游戏王

大家是否在小时候接触过一种卡片类似这种的 这就是今天的主角游戏王。 背景 1996年&#xff0c;《游戏王》漫画开始在集英社《周刊少年Jump》连载。 1998年&#xff0c;Bandai推出以《游戏王》原作中登场的集换卡牌游戏“M&W”为题材的集换卡牌。 采用Bandai的卡片自动贩卖…

Qt图形界面编程入门(基本窗口及控件)

基本窗口类QWidget QWidget是所有窗体部件的基类&#xff0c;例如对话框类&#xff0c;主窗体类&#xff0c;以及其他诸如按钮&#xff0c;编辑框&#xff0c;标签等等都是由QWidget派生得到&#xff0c;QWidget拥有的方法往往都可以在其他子类中使用。 窗体的几何尺寸分为包…

背景se_盘点那些RPG手游中主角的背景故事,越悲情越强大

RPG游戏一直以代入感超强的游戏方式来吸引玩家&#xff0c;用超越现实的艺术手段把玩家带入到虚拟的游戏世界&#xff0c;让玩家担任不同的社会角色来去经历不同的虚拟故事&#xff0c;体验多种人生经历&#xff0c;想要扮演任何角色都是有可能的。当然在RPG游戏中也有好坏之分…