首页 . 理学 . 计算机科学技术 . 软件工程 . 软件工程理论与方法 . 软件工程方法

基于价值的软件工程

/value-based software engineering/
条目作者王青

王青

最后更新 2023-03-15
浏览 161
最后更新 2023-03-15
浏览 161
0 意见反馈 条目引用

以软件为利益相关方所带来的价值为主要关注点,将能否有效实现价值作为解决软件工程中各种决策问题的核心原则的一种工程方法。在软件工程的各项原则和实践中考虑各个利益相关方、成本、质量属性冲突、投资回报率等多种重要因素,统筹和平衡软件的各项价值,使最终的软件产品有效地实现利益相关方的需求。

英文名称
value-based software engineering
所属学科
计算机科学技术

在软件工程中将价值定义为产品或服务中蕴含的相对的财富、效用和重要性。软件工程的核心目标是创造出能够提升价值的产品、服务和过程。软件的价值可以通过发现不同利益相关方的效用函数,根据Win-Win理论进行协商和确定。

基于价值的软件工程起源于经济学中的基于价值的管理(value-based management; VBM)。基于价值的管理是将组织的全局目标、财务分析技术和管理程序整合在一起,推动组织将管理决策集中在价值驱动因素方面,最大限度地实现其价值创造的经营目标。20世纪90年代初期,软件开发以实现高质量的产品为目标而没有考虑产品的价值,在Standish公司提供的百家软件工程项目失败原因调研报告中显示,软件项目失败的主要原因是不符合用户需求。美国软件工程师B.勃姆(Barry Boehm)等人认为,是价值中立的思想导致了软件企业生产出了不符合人们需要的软件产品。由此,基于价值的软件工程孕育而生。

1981年,B.勃姆在《软件工程经济学》一书中,首次指出从价值的角度出发规划和管理软件开发各个过程。20世纪90年代爆发的软件危机引发了研究学者对于软件失败的原因的深入思考。1996年,IEEE Software上发表的文章《关于过于追求质量导致价值损失的探讨》提出追求高质量产品的目标不应该离开经济上的要求而独立存在。这引发了激烈的讨论,受其启发,在软件工程领域发起了基于价值管理的运动。1998年,经济学驱动的软件工程论坛(EDSER)首次并入了软件工程大会(ICSE),并吸引了众多的学者参与和讨论。两年后,在ICSE 2000的大会上提出了基于价值的软件工程的研究计划和愿景。随之而来,WinWin模型的提出解决了众多利益相关方价值抽取和协商的问题,经验软件工程、基于证据的软件工程、敏捷开发技术、风险驱动的软件项目管理等重要理论和方法的提出,进一步推动的基于价值的软件工程的发展。2003年,B.勃姆正式提出了基于价值的软件工程(value-based software engineering; VBSE)。

基于价值的软件工程的关键实践包括:①收益可实现性分析。主要目的是识别和判断除软件开发本身外,实现IT系统的其他潜在动机(initiative),也就是实现系统功能的重要性和收益分析。进行收益可实现性分析的手段是使用结果链(results chain)建立动机、贡献、产出和假设之间的关联。②利益相关方价值主张的抽取和协调。首先,将系统关键利益相关方的价值主张转换成一系列可表达的目标。其次,建立价值主张的冲突网状图,发现和识别存在冲突的价值主张。最后,根据期望管理、平衡协商策略、优先级排序、群件分析、业务案例分析等手段,进行价值主张的协商和调整。③案例分析。通过案例分析的方式,计算投资回报率(ROI),并结合收益、不确定性和风险,为不同的业务方案提供决策支持。④持续的风险和机遇管理。不同的利益相关方在面对不确定的收益和风险时,做出的决策是不同的。持续的风险和机遇管理目的在于理解和分析不同利益相关方的效用函数(Utility Function),从而降低项目失败的风险。⑤支持并行开发的软件工程。提出一种支持并行开发的软件过程模型,该模型的特点是里程碑节点中加入了目标、架构和操作能力三个方面的成功/失败评价标准。⑥基于价值的监控。主要包括两个方面:一方面是针对业务案例和收益可实现性的监控;另一方面是针对组织级战略目标的监控。⑦面向变更。强调实现一种支持变更的,具有可塑性的系统架构。

基于价值的软件工程的提出,为软件数据估算和软件过程控制提供了一种新的理念。随后,很多研究学者从价值的角度思考和探索软件工程的各项任务。主要包括:①基于价值的需求工程。主要包括识别系统关键利益相关方的原则和实践、抽取和协调利益相关方的不同价值主张。如版本发布的优先级排序技术、需求优先级排序方法、业务案例分析技术、利益相关方识别和需求协商技术。②基于价值的系统架构。主要解决如何根据架构的实现方案调整系统目标的问题。如:权衡架构的分析框架、多目标决策支持和协商技术、并行开发的软件工程技术、基于价值的软件产品线分析方法。③基于价值的设计和开发。主要任务是确保系统的目标和价值主张在软件的设计和开发中得到了实现。包括需求跟踪技术、过程改进ROI分析,以及敏捷方法中的面向客户的设计和开发技术。④基于价值的验证和验收。主要任务是提出包括验证和验收解决方案是否满足系统目标的技术方法,以及如何从价值的角度组织和安排验证验收任务。包括基于价值的测试及时和工具采购、基于风险的测试技术。⑤基于价值的计划和控制。主要任务是将价值的考虑融合到传统的成本进度管理、项目计划、项目监控等领域中。基于价值的计划和控制技术、基于价值的软件质量保证工作量估算方法(估算应投入多少的软件质量保证工作量、版本发布策划技术。⑥基于价值的风险管理。主要包括风险识别、分析、优先级排序和缓解的原则和实践。主要包括风险管理技术、基于风险的测试技术、风险管理保障方法、知识产权保护中的选项分析和策略、敏捷方法。⑦基于价值的质量管理。主要任务是根据利益相关方的价值主张对质量因子进行排序。多目标决策支持和协商技术、软目标方法、基于价值的计算机安全。⑧基于价值的人员管理。主要包括利益相关方团队建设和期望管理、整个项目周期的利益相关方价值主张管理、日常开发中的人文关怀。包括基于价值的个人偏好研究,将美国政治哲学家J.罗尔斯(John Rawls,1921~2002的公正理论应用到利益相关方管理中的研究。⑨基于价值的软件工程理论。主要任务是在价值中立的软件工程理论中结合基于价值的理论如效用理论、决策论、依赖理论和控制论等,并提供一种能够指导基于价值的软件工程实践指南。主要由Boehm等人提出一种初步的“4+1”理论构想,即以Win-Win为中心,结合效用理论、决策论、依赖理论和控制论的理论框架。

对于基于价值的软件工程的客观评价如下。

优势:①基于价值的软件工程通常保证了软件开发过程中决策支持方案的充分性。这些方案是由技术市场结构决定的,进一步确保了系统的可实现性。②基于价值的软件工程通常要求项目人员理解技术设计方案、上下文和价值主张之间的关系,促使项目人员对项目的理解更加深入,进而保证决策支持过程的正确性。③通过实现基于价值的软件工程,项目人员建立更好的基于价值的决策能力。④基于价值的软件工程需要对系统的价值实施动态的监督和控制,这种监控的手段通常依赖于对系统状态、风险等特定的模型和监控数据库,这些手段提高了系统的成本估算和跟踪能力,确保了系统能够有效实现利益相关方的价值。

局限性:①基于价值的软件工程中的里程碑决策支持活动更多的关注与系统宏观的价值和风险,当系统遇到具体的细节问题时,则难以适用。②基于价值的软件工程对参与者的能力要求较高,增加了项目的管理成本。③实现基于价值的软件工程依赖于项目组中良好的氛围和与他人分享经验的意愿以及确保关键利益相关方的贡献和参与。

相关条目

阅读历史

    意见反馈

    提 交

    感谢您的反馈

    我们会尽快处理您的反馈!
    您可以进入个人中心的反馈栏目查看反馈详情。
    谢谢!