分析软件工程经济学的发展现状
软件是相关程序、过程和文档的完整集合,而工程则是科学与数学的应用,并使物质的属性、自然能源在结构、机械、产品、系统和过程上变得对人类有益要做到对人类有益,软件开发及其软件系统必须是在社会能负担得起的成本基础上满足人的需求,毕竟软件开发是一种社会行为软件成本估算将一般的经济学分析概念、技术和特殊的软件工程世界联系起来通过成本估算,可以使项目的管理者对软件的成本及其变化趋势做到正确把握,从而为进一步的决策提供科学而直观的依据。
软件工程的目的是通过有关学科的应用使人们开发出来的软件系统成为对用户有用的产品。然而软件工程效果不仅取决于计算机科学、软件工程方法学以及软件工具与环境的使用,还取决于它是否满足经济学和社会效益的需要。软件工程经济学就是依据经济学的观点来研究如何有效地分析、开发、发布软件产品及其支持用户使用等,为软件的成本进度估算提供必要的手段和方法,并妥善地协调技术、经济和人之间的关系。
1.软件工程面临的经济学问题
纵观软件工程全过程,都或多或少与经济学有关从经济学的角度来看,也都不同程度地存在以下问题:
(1)项目负责人没有可靠的依据来确定每个软件阶段和每个软件开发活动需要多长时间和多大的工作量,因此,也就难以判断软件开发是否按计划进行,甚至意味着项目从一开始就失控了。
(2)软件分析人员难以在分析设计阶段做出现实的软硬件比较分析,导致设计中硬件成本降低,最终却以更高的软件成本为代价。
(3)软件开发人员无法使相关经理、客户或销售人员相信他们承诺的预算与时间进度表是现实的。
(4)项目组内部对软件开发过于乐观,而对外则在竞争性的软件合同竞标中报出低价,最终必然导致费用超支或性能折衷
(5)软件开发的成本很高,且难以控制严重时,导致整个项目失败(被迫取消或放弃)的指导,使得项目最终达不到预期的目的,甚至还有可能导致用户成本上升、可靠性或服务
软件工程学什么质量下降、需要増加额外的人员、员工的工作积极性下降、员工的流动性上升等。因此,在实际的软件工程中,不仅包括软件开发的方法和技术问题,还包括很多经济学方面的问题,如使用、预算、进度以及决定用户需求的相对优先级等问题实践证明,好的软件工程必须协调好人与经济的问题。
2.软件工程经济学的研究内容
2.1 软件工程经济学研究的基本问题
软件工程经济学是软件工程学科与经济学(微观经济学)有机结合的产物,它利用经济学中成熟的概念、技术和方法为软件工程决策服务因此,软件工程经济学面临的问题是如何利用成本估算等技术来帮助项目管理者做出正确的选择,以及利用何种经济学方法帮助人们做出正确的决策。因此,软件工程经济学研究的基本问题是:
(1)成本、工作量生产率等因素的估算技术与方法以及估算模型的建立与使甩这是一个核心问题(2)软件工程中不同决策的“成本效益”分析,及其与此相关的规模经济与不经济问题(3)多目标决策分析,以便识别目标、调协与决策相互冲突的目标、管理多个同时存在
的目标等。(4)成本、工作量、人力分布及其资源配置问题(5)不确定性的处理和风险分析问题(6)进度估计和工期控制问题(7)数据收集与管理以及模型的校准等问题(8)相关工具问题
2.2 成本估算的方法、理论与模型
软件生命周期中包括了若干个主要的阶段与活动软件成本估算的方法之一就是建立一个回归模型(线性的、非线性的或有参的、无参的等)。对模型的基本要求是它能够描述软件成本和成本驱动因子间的关系,并用这一模型对样本数据进行拟合,得出其参数值模型建立后,应对其可用性进行评价,并按如下几个方面进行:(1)定义:模型明确定义了它要估算的成本;(2)精确性:估算结果接近项目的实际花费;(3)客观性:模型避免了将大部分软件成本因子归属于难以校准的主观因素;(4)建设性:帮助用户理解需要做的工作;(5)详尽:模型能适应哪些软件系统的估算,能给出阶段和活动的细分结构;(6)稳定性:输入的细微变化引起输出的变化很小;(7)范围:模型涵盖了需要估计成本的软件项说明;(9)可预期性:模型可避免引入那些直到项目结束才能知道的信息;(10)精简性:模型可避免哪些冗余的或者对结果没影响的因素已有的软件成本估算方法有算法模
型、专家判断?类比推理帕金森原理、价格策略、自顶向下、自底向上等这些方法都有其特点,但没有一种可选方法在所有方面都比其他方法好,他们的优缺点互补。
2.3 成本估算要注意的问题
针对软件工程经济学中的成本估算需要特别注意以下几个方面:(1)软件的成本和进度估算非常复杂,涉及的因素很多。面对不同的开发环境、管理方式、开发模式,要选择不同的估算模型,即便是同一估算模型,具体使用时也要根据经验和具体情况进行校准(2)好的估算模型并不能保证能做出好的成本估算,因为它很可能是一个“垃圾输入-立圾输出”的工具:如果输入不着边际,那么输出也就离谱(3)影响成本估算的风险因素包括:对目标系统的功能需求、开发环境等情况的了解程度;所运用历史数据及模型参数的可靠性;系统分析中的逻辑模型的抽象程度、业务处理流程的复杂程度及软件的可度量程度;软件新技术对成本估算方法的影响;用户在软件开发中的参与程度,开发队伍的素质及所采用开发模式对开发成本的影响;对软件开发队伍复杂因素的认识程度;软件开发人员的稳定性;软件开发进度、时间等非技术性因素的变更所带来的风险等。(4)软件成本估算并非完全资金意义上的估算。项目成本中相当一部分为支付开发人员脑力劳动报酬的费用,而
这部分费用因软件开发机构的不同而存在着很大的差别。(5)软件产品及其开发过程的特殊性决定了软件开发成本的估算方法既不同于制造业产品的成本估算方法,也不同于建设项目的财务评价方法(6)软件成本估算技术研究的重大突破需要坚实的理论基础缺乏大量的实验作基础,要开展理论研究显然也是不切实际的。
过去的若干年里,人们在成本、进度估算方面做了很多工作,提出了一系列的方法与模型,典型的模型有SDCTRWWolvertonCOCOMO等等这些模型各有特点,同时也存在局限性与不足实际应用时,至少还要做好以下两方面的工作:一是模型?做好本地化工作。
2.4 分析技术
2.4.1 成本效益分析
软件工程经济学在做成本效益分析时,应注意其特殊1性因为作为软件工程项目的效益,除了经济效益外,还有一个很重要的社会效益问题,它需要协调人与经济的关系软件工程中的规模经济指通过投资生产专用工具来获得大型项目的规模经济,如测试工具、诊断工具、文档工具、预处理程序等。而在小项目中这些工具的成本很难收回。另外,我们应更
关注软件项目的“规模不经济”问题特别地,项目中的人越多,个体之间的分歧、编程风格差异和工作习惯上冲突的机会就会越多,这些将降低团队的整体生产率。对此,我们应该认真分析软件工程经济学中导致规模不经济的主要原因,并提出相应的对策。