软件产品线工程方法-四个主要方法原则 .pdf
软件产品线⼯程⽅法-四个主要⽅法原则
本⽂已挪⾄
信息系统存在很多共性,如果作为产品来开发,那么如何能够通过来进⾏重⽤和扩展,业界中的产品线⼯程⽅法就是进⾏⼤范围复⽤的⼀种
⽅法。在园⼦⾥也住了不短时间,发现关注技术的占多数,⽽除了技术外,软件⼯程中还有很多我们需要关注的,如下图,软件架构平台基
于产品线⼯程开发。前⼀阵⼦对进⾏了介绍,接下来准备写⼏篇产品线相关的内容,本篇将对产品线中的四个主要概念进⾏简要的说明(可
变性管理、商业驱动、架构驱动、两阶段⽣命周期),希望对不熟悉产品线知识的有所帮助。
在讲解之前先解释两个概念:
⼀组使⽤通⽤的资源来构建的产品。⼀个产品族是基于它的成员产品的结构相似性⽽定义的。产品族成员建⽴在⼀个通⽤平台之上,主要基
于产品之间的技术通性⽽设置的。产品族可以重⽤于多个产品线。
⼀组共享⼀组公共管理的特征的产品,这些特征满⾜⼀个选定市场的特定需要。⼀个产品线的定义是基于市场策略的,⽽不是基于它的成员
产品之间的技术相似性。为⼀个产品定义的特征,可能需要完全不同于其它成员产品的解决⽅案。⼀个产品线可能是与⼀个产品族⼀起提供
出来,但是它也可能需要不⽌⼀个产品族。
在下⾯介绍过程中,在谈架构平台时更偏向于产品族的概念。
为什么需要产品线⽅法
随着软件应⽤的普及,企业对软件也越来越重视,不断的要求采⽤软件提⾼效率,提升技能增强企业竞争⼒。随着客户的增多,软件企业这
时需要⾯对更多的客户,处理共性和个性问题。如何保证低成本、⾼质量、快速上市等要求就成为了企业竞争⼒的主要表现之⼀,⽽产品线
⼯程⽅法就是⽀持这种⼤范围重⽤(large-scalereuse)的⽅法。产品线区别于传统的代码重⽤就是⼤量的使⽤重⽤(可以达到90%),不
仅仅是代码,还包括需求、业务等。在《》中我画了⼀个重⽤的图,产品线将基于更⼤范围的重⽤进⾏开发。
减少成本
⼤家都知道,软件开发成本是成本的⼀部分,软件的维护成本也是很⼤⼀块,产品线⼯程除了可以减少开发成本外,维护成本也可以⼤⼤降
低,不再需要维护⼤量不同版本不同架构的代码,也没有⼤量不同的⽂档需要维护。
快速上市
产品基于重⽤开发,不需要在每个开发环节都重头开始,这样可以⼤⼤的缩短上市时间。
减少风险
由于产品线除了可以重⽤框架,对同类型产品也可以重⽤开发⽅法,这样对于任务估计、开发计划都可以很好的重⽤,这样也可以减少项⽬
开发的风险。
提⾼质量
软件基于⼤量成熟和经过验证的核⼼资产进⾏开发,这些组件都已经经过⼤量使⽤并得到验证,所以在项⽬中应⽤可以保证出现的问题很
少。
虽然产品线预计带来的效果很迷⼈,但是它并不是⼀开始就可以给企业带来效益的,它必须进⾏⼀些前期的投资(核⼼资产的开发、组织的
转变等)才能获得回报,右图是产品线的经济⾛线图,在第三个项⽬时才能达到收⽀平衡。
产品线⽅法基本原则
产品线⽅法与传统的单项⽬开发的主要不同在于关注点的转移:从单独的产品到产品线的项⽬。这个转移暗⽰了⼀个策略:从特定的
项⽬开发到特定业务领域产品的愿景。
产品线⼯程对开发以重⽤(developmentforreuse)和使⽤重⽤来开发(developmentwithreuse)有明确的区分。对⽐传统的重
⽤,产品线基础设施包括产品开发周期的所有资产(框架、业务模块、开发计划,需求到测试阶段),⽽不只是在代码级的重⽤。这
些重⽤资产都包含明确可变性说明的,如需求原型中表明这个功能只在特定⼦产品中才包括,这对产品业务的理解要求就更⾼了。
四个主要原则
可变性管理(Variabilitymanagement):每个产品都是核⼼资产的变体,必须系统化的管理产品的可变性,这对业务分析的要
求就更⾼了,由于它在产品开发⽣命周期的重要性,下⾯会单独进⾏说明。
商业驱动(Business-centric):产品线瞄准的是长期的商业战略,⽽不是仅仅⾛单。传统的软件开发基于各个单独的项⽬进
⾏,产品线开发要求系统全⾯的对市场进⾏定位。商业驱动⽅法需要决定哪些功能应该包括在产品线中,是在领域⼯程还是应⽤
⼯程中进⾏。这个在产品线中叫做确定范围(scoping)。在《软件产品线实践和模式》中提出⼀个公司是采⽤⼀条产品线还是
多条产品线?书中提到⼤型产品线只有同时具备以下两个条件时才会起到好的作⽤:第⼀,产品具有⾜够多的相同点,将它们
作为⼀条产品线是有利可图的,第⼆,公司有能⼒控制这样⼤⼤型的市场运作、开发以及其