软件产品线的工程原则
软件产品线工程能够在开发成本和产品上市时间方面极大地改善软件开发过程。在软件复用方面达到了空前未有的高水平。产品线工程基于四个主要概念:可变性管理是产品线工程最核心的概念。产品线工程最核心的思想就是可变性管理,正是基于可变性模型来确定需求、建模并实现产品线工程中的公共与变化量;产品线与一般性产品最大的差别就是它把战略视角从单个合同转到整个业务领域的长期策略上来,要使产品线工程与商务策略达成一致;参考架构在产品线工程中有着关键的作用。人们已经意识到,复用若想取得真正的成功就必须对不同的产品采用一种公共的架构;产品线工程划分成领域工程与应用工程二部分,这就把为复用的开发与复用着的开发分离开来。
1)可变性管理(Variability management)。软件产品线工程致力于支持一系列的产品。这些产品会支持不同的、个性化的用户或者侧重点完全不同的市场划分。可变性是软件产品线工程中最关键的概念。软件产品线工程并不是去理解每个单个系统而是关注整体及在这些单个系统中的变化。在整个软件产品线工程中要定义、表示、探索、实现、演进可变性,也就是管理可变性。
2)商业中心(Business-centric)。传统的软件开发关注的是单个系统,而产品线工程总是强调的是整个市场。只有当产品线基础能够长期提供充分的手段支持新产品有效地投放到市场,产品线工程才能够获得功。因而,要以经济的观点考虑单个产品与产品线的关系,对单个产品的决策要与更大的产品线联系在一起。这种强大的联系表明,最重要的是要理解产品线启动的业务目标。通常业务目标是降低人力/成本,加快上市速度;或者与质量相关,如提高可靠性或者改善可用性。这些特定目标给我们提供了产品线工作决策的基础,以确定需求是否要实现、是作为整个产品线的需求或作为特定产品的来实现。这些目标同时帮助我们明确投入的平衡点在那里。
3)架构中心(Architecture-centric)。从技术上来讲,软件开发必须利用单个系统间的相似性。软件产品线工程是以公共的产品线架构(或者称参考实现)为基础的,因而经常称之为以架构为中心。与其它重用方法相比,公共架构的中心角色是产品线工程成功的主要因素。为给不同组件提供一个一致的描述,以通用的接口开发、装配并应用于不同的产品,就要在领域工程中设计参考架构。通用的架构对所有在不同的产品中使用的组件定义了单一的环境,这就保证了对相类似的功能不需要开发多个组件只需要考虑它们的工作环境。
4)两个生命周期(Two-life-cycle approach)。软件产品线工程是由领域工程和应用工程构成。这二种工程,在理想的情况下,只是基于平台松耦合和同步。因而,形成了完全不同的生命周期模型。领域工程与应用工程的区别是产品线工程的一个关键特性。