软件工程经济学第5章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解:注意到交付期有 t d 1年7个月 1 7 年 1.583年
12
初始人力密度增长率由(5.12)式知有
dm(0) D 4人 / 月 48人 / 年 dt
从而得生存期投入总工作量K
2 K Dtd 48 1.5832 120人年
以K与td数值代入(5.11)式和(5.13)式有峰值人数m0,人力增长
由美国数学家柯布和经济学家道格拉斯提出的C-D函数形
式如下:
Y = ALa K b
– Y为产出量;L为劳动力投入;K为资本投入; – A为除劳动与资本要素外其他对产出Y的总影响。
第5页
分别对L和K求偏导,得:
Y Y L L
Y Y K K
称为劳动力对产出的弹性系数,表示在其他条件不变的情况下 ,劳动力增加百分之一会使产出变化的百分比;
称为资本对产出的弹性系数,表示在其他条件不变的情况下,资
本增加百分之一会使产出变化的百分比;
第6页
生产函数一般都满足如下特性:
① 资本与劳动力的边际产出均为正值,即有
抖 Y Y > 0, > 0 抖 L K
其经济含义为:劳动力(或资本)投入量不变的情况下,资本(或劳动力)的 增加将导致产出量的增加。 ② 边际产量递减,即有
t2
]
2 td 2
第20页
m(t)
C (td ) = K [1- e K m(td ) = e td
-
1 2
C(t) K
] = 0.39 K
m0
1 2
O
td
t
一个开发好的软件系统在初步运行性能良好并交付给用户时只花费 了生存期内投入总人力费用的39%,剩下的61%的人力费用将用于 该软件系统在运行维护阶段的质量检验,可靠性增长,维护与修改 等工作。
为诺顿-瑞利曲线。
第17页
通过 dm(t ) = 0 ,求得N-R曲线在 t0 = dt 值。
1 2b
点时取得最大
m(t0 ) = 2 Kb
m(0) 0, lim m(t ) 0
t
1 2b
e
- b
1 2b
= K
2be
1 2
显然,m(t0)即为软件生存周期中的开发人员的峰值。
由此可知,对于不同的b值(b>0)和K值,N-R曲线均为具
第21页
5.2.2 软件项目难度系数与人力增长率
Putnum 通过对英美大量软件项目的研究,得到 了一些统计规律:
结论1:软件项目的开发难度与生存周期内投入的总工作
量K成正比,与交付期td2成反比。
–
D为软件工程开发难度系数
dm (0) K D= 2 = dt td
(初始人力增长密度)
第22页
发难度和总工作量、交付期之间的关联;人力峰值的到达时间等。
2、如何分析?——
建立系统动力学方程
软件生产系统动力学方程
– 英国软件工程学家诺顿提出了Noder-Rayleigh Model
建立模型基础:a、假设(基于客观统计数据上的一种经验) b、统计分析
第14页
诺顿-瑞利模型 Noder-Rayleigh Model
软件生产过程:
– 规划、需求分析、概要设计、详细设计、编码、系统集 成、测试、交付
本章研究主要内容:
1. 生产过程的规模效应
2. 投入要素与产出关联变动的规律
3. 劳动生产率的提高
第3页
5.1 软件生产函数与软件生产率
生产函数
– – 是宏观经济学和微观经济学理论中的一个重要概念 反映生产过程中投入要素与其可能生产的最大产量之间的依存 关系的数学表达式
收集特定企业(部门和地区)的数据序列,将二元非线性函 数转化为二元线性函数求解
第10页
注意到(5.2)式中实际上 Y、K、L、A 均为时间 t 的函数,不妨设为 yt ,kt ,lt ,a(t ) , 则有 yt a (t ) lt kt 对上式两端分别求对数有 ln yt ln a (t ) ln lt ln kt 令 Yt ln yt , A(t ) ln a (t ) , L(t ) ln lt , K (t ) ln kt ,则有
软件生产率的影响因素:组织、管理因素;技术因素
提高生产率的常用措施:
① ② ③ ④ ⑤ ⑥ ⑦ 提高团队工作的业务规范、编程规范 采用较为先进的软件工具 部分功能采用商业软件包 改编现有的已熟悉软件的部分功能 采用软件构件技术、多版本技术、软件复用技术 建立科学、合理的激励、约束机制 对人员的选择采用如下五原则:顶级天才、任务匹配、职业发展、团队平 衡、逐步淘汰原则 第13页
表5.1 N-R模型变量表
变量符号
C(t) m(t) K p(t) td D D0 S FC Fd E
变量内涵
软件工程在[0,t)内投入的累计人力工作量(人力费用) C(t)的变化率或软件工程在t时刻投入的人力密度 软件工程在生存期内投入的总工作量 软件开发效率函数或学习函数 软件工程投入人力的峰值时刻(通常为交付期或工期) 软件工程项目的开发难度系数 软件工程项目的人力增长率 软件项目的生产规模或源代码程序量 软件工程项目生产费用率 软件工程项目开发劳动生产率 软件工程开发的环境因子 第15页
5.2
软件生产过程经济分析
5.2.1 软件生产系统动力学方程
1、软件生产过程经济分析--分析软件生产系统内在经济要素关联及其动态
发展规律。
– 经济要素:生产规模、开发难度、人力工作量(累计工作量、人力峰
值)、费用、劳动生产率、环境因子、交付期等 – 例如:劳动生产率和生产规模、开发难度、环境因子之间的关联;开
软件生产函数的三个特性:
① ② ③
软件工作量或交付工期的边际生产量均为正 软件工作量的边际生产量递减;交付工期的边际生产量递增; 软件生产函数具有非负性
•
根据软件函数中弹性系数之和大于1,可知软件生产活动具有规模
报酬递增效应。
第12页
5.1.2 软件生产率及其影响因素
软件生产率的定义:每个人月所交付的源代码程序量, 单位:NCSS/PM
② 若 +<1,则称该生产活动呈规模报酬递减或非规模经济; ③ 若 +=1,则称该生产活动呈规模报酬固定
第9页
3.
弹性系数求解
– C-D生产函数是一种较为普遍的生产过程中的生产过 程规律描述。
– 但对于不同的企业(部门和地区),由于其外部环境
与内部条件的不同,故产出对劳动力或资本的变化反 映程度不同ቤተ መጻሕፍቲ ባይዱ即 与 不同。 – 求解思路:
dC(t) = p (t )[ K - C (t )]=m(t) dt p (t ) = 2bt b> 0 C (0) = 0
第16页
求解微分方程得:
C (t ) = K [1- e ] dC (t ) - bt 2 m(t ) = = 2 Kbte dt
- bt 2
b> 0
因为函数m(t)具有概率论中瑞利分布函数的形式,故m(t)称
则由(5.5)式知可通过二元线性回归的方法求解 A(t)、α、β 的估计值,从而解决了两个弹 性系数 α 与 β 的求解问题。
4.
软件生产函数
美国软件工程专家( L.H. Putnum )
1 3 4 3
S EK t d
– – – –
S为软件生产规模或源代码程序量(单位:NCSS ) ; K为软件项目在生存期内投入的总工作量(单位:人年) td为软件项目投入的人力峰值,通常为交付期或工期(单位:年) E为环境因子
2 2 抖 Y Y > 0, >0 2 2 抖 L K
其经济含义为:当其他生产要素固定不变时,随着某一要素投入量的增加,边 际产量将逐渐减少。 ③ 生产函数具有非负性,且总产量是生产要素组合的结果,即总产出为正值 ,单一要素的投入不能获得产出。即有 Y=F(K,L,t)>0 Y=F(K,0,t)=0 Y=F(0,L,t)=0 第7页
结论2:对于具有统一项目开发特性的软件工程,尽管随着项 目规模的增大,K和td均将增大,然而K/td3则基本稳定在
某一常数周围,而不同开发属性的项目其常数不同。
8, 软件是一个与其他系统有多个接口和交互功能的全新软件
D0 =
15,软件是一个独立系统
27,软件是从其他已开发的软件基础上建立的系统
–
引入参数D0, D0为人力增长率
软件工程经济学(SEE)
Software Engineering Economics 赵明霞
山西大学经济与管理学院
2016/11/9
第5章
软件生产过程经济分析
5.1
软件生产函数与软件生产率
5.2
5.3
软件生产过程经济分析
不同规模软件生产过程经济分析 软件项目理论生存周期及其关联分析
5.4
2016/11/9
Yt A(t ) L(t ) K (t )
(5.5)
显 然 , 对 于 一 个 特 定 的 企 业 ( 或 产 业 部 门 ), 若 其 历 史 时 间 序 列
{ yt,t 1,2,……,n}, {lt,t 1,2,……,n}, {kt,t 1,2,……,n} 已知,
有单峰值且自左向右由单调增到单调降的曲线。
第18页
在20世纪70年代,美国陆军中央设计处对所积累 的200多个软件开发项目的数据进行统计分析, Putnum发现:
– 上述m(t)在(0,∞)中的最大点t0非常接近交货时 间td,因为在临近交货期时需要大量的人力资源编制
说明书,进行软件调试与质量检验,并对设计、编码
2、规模经济(规模报酬)
表示当生产规模变化时,对产出的影响程度。 – 规模报酬一般有三种情况:
当全部生产要素按某种配合方式以相同比例增加时,
①
若 Y=F(λK,λL,t) > λF(K,L,t), 则称该生产活动呈规模报酬递增或规模经济;
②
若 Y=F(λK,λL,t) < λF(K,L,t) , 则称该生产活动呈规模报酬递减或非规模经济;
率D0
D 48 m0 m(t d ) 46人, D0 30人 / 年 2 t d 1.583 1.583 e
生存期投入的总费用(平均)U为
120
U Fc K 6万元 / 人年 120人年 720万元
开发阶段投入的累计人力工作量C(td)和费用Ud有
C (td ) C (1.583) 0.39 K 0.39 120年 46.8人年 U d Fc C (t d ) 6万元 / 人年 46.8人年 280.8万元
– Y=F(K,L,N,O,t)
– Y为产出量 – K为资本 – L为劳动 简化为:Y=F(K,L,t)
– N为土地
– O为组织管理 – t为时间或工期
第4页
5.1.1 软件生产函数及特性
1、C-D生产函数
西方学者在采用计量经济学的有关统计法的研究中提出了 多种形式的生产函数,从不同的侧面反映了西方国家生产 过程中的工程经济行为。
D K D0 3 td td
K D0 t d
第23页
3
[例5.1] 某软件项目,其初始人力密度增长率为4人/月,预计
1年7个月后交付用户,生产费用率为6万元/人年,试确定项目
生存期内投入的总工作量(人力费用),峰值人数和总费用
项目开发难度系数和人力增长率,以及开发阶段投入的累计 人力工作量和费用。
等工作做再修改。
第19页
由统计分析的结论,可知 t0 =
1
1 =td即 b = 2 代入 2td 2b
C (t ) = K [1- e ] dC (t ) - bt 2 m(t ) = = 2 Kbte dt
有
t2 2 td 2
- bt 2
b> 0
C (t ) = K [1- e K m(t ) = 2 te td
单位
人年 人 人年 年 人/年 人/年2 NCSS 万元/人年 NCSS/人年 -
模型假设如下:
1. 2. 3. 开发项目中需要投入的总工作量K为有限; C(t)在项目开始时为零,即C(0)=0,然后单调增长到K; 任何时刻开发项目组投入的人力数m(t)与尚待解决的问题(或尚需投入) 的累计人力工作量成正比; 4. 在项目生存周期中,项目开发人员由于不断学习,其开发效率可用关于时 间t的学习函数p(t)来描述,是时间t的线性增函数,且m(t)与p(t)成正比。 ----由假设得下列人力投入的系统动力学方程:
③
若 Y=F(λK,λL,t) = λF(K,L,t) , 则称该生产活动呈规模报酬固定
第8页
Y=F(K,L,t)= ALαKβ
F(λK, λL, t)=A(λL)α(λK)β = λ α+ βAL α K β
= λ α+ βY
因此对C-D函数容易验证得以下结论:
① 若 +>1,则称该生产活动呈规模报酬递增或规模经济;