理论教育 软件产品线研发及比较

软件产品线研发及比较

时间:2023-08-26 理论教育 版权反馈
【摘要】:即使不存在一个普遍接受的软件产品线的定义,但是在过去的十年里,对它含义的研究与实践取得了相当统一的共识。这种组合的共性和可变性是软件产品线的关键特征。我们喜欢认为一个软件家族是一个非常复杂的软件产品线,它可能由几个小的软件产品线组成。例如,梅赛德斯-奔驰C级车C320是一个典型的产品线,而所有梅赛德斯-奔驰车,乘用车以及商用车,共同形成一个产品家族。图7.1 面向产品线研发的比较

软件产品线研发及比较

即使不存在一个普遍接受的软件产品线的定义,但是在过去的十年里,对它含义的研究与实践取得了相当统一的共识。因此,与早先的对这个术语的理解相比,可以观察到对软件产品线研究焦点的一个有趣转变。为了简要说明这点,我们在这里介绍两个最有影响力的定义。

在1976年,David L.Parnas[Par76]首创了软件产品线一词,其定义如下:

每当先通过研究这组方案的公共性质,接着确定各个成员的特殊属性,值得根据这组方案研究计划时,一组方案就构成了一个产品线。

值得注意的是,只有这样的软件产品才能形成软件产品线,它具有一定程度的通用性,同时它又表现出很大的差异性。这种组合的共性和可变性是软件产品线的关键特征。而何种程度的通用性是必须清楚的问题,是为了能够应用面向产品线的开发方法是最重要的领域问题之一,且是困难的(问题)。如果产品之间有太多的不同,那么对于从此方法获得巨大效益来说,把它们作为一个单一产品线成员来描述的成本太高。

Parnas提出根据具有明确定义接口的可复用的模块或组件,构成它的各个产品来管理产品线,从而设定了未来数十年的研究方向。从今天的角度来看,这种早期的方法对产品线的发展来说,可以称之为“经典”或“常规”的复用方法。以上提及的关注点的转变出现在20世纪90年代早期,这体现在以下Clements和Northrop的定义中[CN02]

软件产品线是一组软件产品[……],它是根据一套通用的核心价值,以规定的方式开发的。

现在,各个产品不再是每个都通过组合可复用部件来进行并行开发。相反,产品是来自一种单一的公共产品定义——产品线基础(以规定的方式)。它替代了独立描述每一个产品,它只有一个单一的产品线描述,以及各个产品的定义是如何不同于此原型的。要做到这一点,如果它们的内容从一个产品变化到另一个产品,那么作为产品线基础(例如,需求文档、组件图、ML/SL模型、测试案例描述)的一部分的所有开发产品,是以变化的形式定义。那么,根据这个基础派生的各个产品则简称为产品实例,或简单称为产品线的产品。

产品线的方法与传统的复用之间的差异如图7.1所示。在传统的复用情况中,仍存在针对每个产品的一个完整的系统描述,即使这些描述是由可重复使用的部分构成的(参见图7.1b)。针对每个产品独立定义了如何组合复用的产品。这不是面向产品线的研发情况:它定义了只有一个变量的系统描述(参见图7.1c)。(www.daowen.com)

总之,我们可以定义的一个软件产品线概念如下:

软件产品线是一组具有一定共性的软件产品,同时也表现出很大的差异,且这来自于一个单一的、可变的产品定义——产品线基础,以明确规定的方式。

有时术语软件家族作为一个软件产品线的同义词。我们喜欢认为一个软件家族是一个非常复杂的软件产品线,它可能由几个小的软件产品线组成。例如,梅赛德斯-奔驰C级车C320是一个典型的产品线,而所有梅赛德斯-奔驰车,乘用车以及商用车,共同形成一个产品家族。有时产品种群也被提出来表示这种复杂产品线[vO00]。

在这一点上,我们只考虑软件的产品线,坚持着传统的产品线的术语应用于软件工程共同体。然而,在汽车领域,我们通常不会遇到纯的软件产品,而要处理软件/硬件系统,其中软件是嵌入在一个硬件环境中,它也受到整体研发活动的影响。为了反映这一点,我们简单地用“软件密集型系统”或简单的“系统”取代以上定义的术语“软件”,因此我们就谈到了软件密集型系统的产品线/家族,或简称系统的产品线/系统家族。

978-7-111-52251-5-Part03-1.jpg

图7.1 面向产品线研发的比较

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈