前言



产品线 架构图_软件架构


第8节 软件产品线

8.1 什么是软件产品线

软件产品线(software product line)是指具有一组可管理的公共特性的软件密集性系统的合集。

核心思想:大平台小产品。

大平台:公共特征

产品线:小产品

产品线(Product Line) 是指一群相关的产品,这类产品可能功能相似,销售给同一顾客群,经过相同的销售途径,或者在同一价格范围内。 如果能够确定产品线的最佳长度,就能为企业带来最大的利润。


产品线 架构图_软件架构_02


这些系统满足特定的市场需求或任务需求,并且按预定义的方式从一个公共的核心资产集开发得到。

这个定义和任何产品线的传统定义相一致——满足特定市场或任务需求的、具有一组公共的、可管理特性的系统集合。但是它增加了一些内容,即在软件产品线中增加了系统开发方式上的一些限制。为什么,因为软件产品线的系统,需要按照指定方式进行公共资产集的开发,与独立开发、从零开始开发、随机开发等方式相比较,可以获得显著的生产经济效益。正是由此产生的经济效益,才使软件产品线更具吸引力。

软件产品线针对特定领域中的一系列具有公共特性的软件系统,试图通过对领域(commonality)共性和可变性(var iability)的把握构造一系列领域核心资产,从而使特定的软件产品可以在这些核心资产基础上按照预定义的方式快速、高效地构造出来。

软件产品线工程主要包括领域工程、应用系统工程和产品线管理三个方面。其中,

领域工程是其中的核心部分,它是领域核心资产(包括领域模型、领域体系结构、领域构件等)的生产阶段;

应用系统工程面向特定应用需求,在领域核心资产的基础上面向特定应用需求实现应用系统的定制和开发;

而产品线管理则从技术和组织两个方面为软件产品线的建立和长期发展提供管理支持。

如何提高生产的经济效益呢,首先每个产品都由来自公共资产库中的组件组成,然后按照预先定义的变化机制,如参数化或继承,对这些组件进行必要的裁剪,添加任何必须的新组件,根据一个产品线范围内的公共架构来组装这些组件。于是,构建一个产品(系统)主要工作是组装和繁衍,而不是创造;主要的活动是集成而不是编程。每条软件产品线都有一个预先定义的指南或计划,用来定义确切的产品构建方法。

8.2 双生命周期模型


产品线 架构图_Powered by 金山文档_03


上层: 用户需求管理线

下层:软件实现层

最初的和最简单的软件产品线开发过程的双生命周期模型来自STARS,分成两个重叠的生命周期:领域工程和应用工程。如下图所示。


产品线 架构图_软件架构_04


领域工程阶段的主要任务有:

(1)领域分析:利用现有系统的设计、体系结构和需求建立领域模型。

(2)领域设计:用领域模型确定领域/产品线的共性和可变性,为产品线设计体系结构。

(3)领域实现:基于领域体系结构开发领域可重用资源(构件、文档、代码生成器)。

应用工程在领域工程结果的基础上构造新产品。应用工程需要根据每个应用独特的需求,经过以下阶段,生成新产品。

(1)需求分析:将系统需求与领域需求比较,划分成领域公共需求和独特需求两部分,得出系统说明书。

(2)系统设计:在领域体系结构基础上,结合系统独特需求设计应用的软件体系结构。

(3)系统实现:遵照应用体系结构,用领域可重用资源实现领域公共需求,用定制开发的构件满足系统独特需求,构建新的系统。

应用工程将产品线资源不能满足的需求返回给领域工程以检验是否将之合并入产品线的需求中。领域工程从应用工程中获得反馈或结合新产品的需求进入又一次周期性发展,称此为产品线的演化。

双生命周期模型定义了典型的产品线开发过程的基本活动、各活动内容和结果以及产品线的演化方式。这种产品线方法综合了软件体系结构和软件重用的概念,在模型中定义了一个软件工程化的开发过程,目的是提高软件生产率、可靠性和质量,降低开发成本,缩短开发时间。


8.3 三生命周期模型


产品线 架构图_软件架构_05


8.4 过程模型


产品线 架构图_产品线 架构图_06


8.4 软件产品的建立方式


产品线 架构图_Powered by 金山文档_07


8.5 组织结构


产品线 架构图_Powered by 金山文档_08


备注:

产品线,不是一款产品,而是一些列同类型的产品,构建产品的架构库。