|
知识路径: > 软件架构基础知识 > 软件产品线 > 软件产品线 >
|
相关知识点:5个
|
|
|
|
软件产品线的过程模型主要有双生命周期模型、SEI模型和三生命周期模型。
|
|
|
|
最初的和最简单的软件产品线开发过程的双生命周期模型来自STARS,分成两个重叠的生命周期:领域工程和应用工程。两个周期内部都分成分析、设计和实现3个阶段,如下图所示。
|
|
|
|
|
|
(1)领域分析:利用现有系统的设计、架构和需求建立领域模型。
|
|
|
(2)领域设计:用领域模型确定领域/产品线的共性和可变性,为产品线设计架构。
|
|
|
(3)领域实现:基于领域架构开发领域可重用资源(构件、文档、代码生成器)。
|
|
|
应用工程在领域工程结果的基础上构造新产品。应用工程需要根据每个应用独特的需求,经过以下阶段,生成新产品。
|
|
|
(1)需求分析:将系统需求与领域需求比较,划分成领域公共需求和独特需求两部分,得出系统说明书。
|
|
|
(2)系统设计:在领域架构基础上,结合系统独特需求设计应用的软件架构。
|
|
|
(3)系统实现:根据应用架构,用领域可重用资源实现领域公共需求,用定制开发的构件满足系统独特需求,构建新的系统。
|
|
|
应用工程将产品线资源不能满足的需求返回给领域工程以检验是否将之合并入产品线的需求中。领域工程从应用工程中获得反馈或结合新产品的需求进入又一次周期性发展,称此为产品线的演化。
|
|
|
双生命周期模型定义了典型的产品线开发过程的基本活动、各活动内容和结果以及产品线的演化方式。这种产品线方法综合了软件架构和软件重用的概念,在模型中定义了一个软件工程化的开发过程,目的是提高软件生产率、可靠性和质量,降低开发成本,缩短开发时间。
|
|
|
|
SEI将产品线的基本活动分为3部分,分别是核心资源开发(即领域工程)、产品开发(即应用工程)和管理,如下图所示。
|
|
|
|
|
从本质上看,产品线开发包括核心资源库的开发和使用核心资源的产品开发,这两者都需要技术和组织的管理。核心资源的开发和产品开发可同时进行,也可交叉进行,例如,新产品的构建以核心资源库为基础,或者核心资源库可从已存在的系统中抽取。有时,我们把核心资源库的开发也称为领域工程,把产品开发称为应用工程。
|
|
|
每个旋转环代表一个基本活动,3个环连接在一起,不停地运动着。3个基本活动交错连接,次序可以发生改变,且可以高度重叠。旋转的箭头表示不但核心资源库可以用来开发产品,而且已存在的核心资源的修订,甚至新的核心资源常常可以来自产品开发。
|
|
|
在核心资源和产品开发之间有一个强的反馈环,当新产品开发时,核心资源库就得到刷新。对核心资源的使用反过来又会促进核心资源的开发活动。另外,核心资源的价值通过使用它们的产品开发来得到体现。
|
|
|
|
(1)循环重复是产品线开发过程的特征,也是核心资源开发、产品线开发以及核心资源和产品之间协作的特征。
|
|
|
|
(3)管理活动协调整个产品线开发过程的各个活动,对产品线的成败负责。
|
|
|
(4)核心资源开发和产品开发是两个互动的过程,3个活动和整个产品线开发之间也是双向互动的。
|
|
|
|
Fred在针对大型软件企业的软件产品线开发对双生命周期模型进行了改进,提出了三生命周期软件工程模型,如下图所示。
|
|
|
|
|
为有多个产品线的大型企业增加企业工程(enterprise engineering)流程,以便在企业范围内对所有资源的创建、设计和重用提供合理规划。为了强调产品线工程在满足市场需求上与一般的系统化重用的区别,在领域工程中增加了产品线确定作为起始阶段,和领域分析阶段、架构开发阶段、基础资源开发阶段组成整个领域工程,还为领域分析阶段增加市场分析的任务;同样为应用领域增加了商务/市场分析和规划。在领域工程和应用工程之间的双向交互中添加核心资源管理作为桥梁,核心资源管理和领域工程、应用工程之间的支持和交互是双向的,以便于产品线核心资源的管理和演化。
|
|
|
以上描述的软件产品线开发过程并没有明确描述如何重用软件组织内遗留资源(legacy assets)。实际上大多数将要建立软件产品线的软件组织都积累有产品线所在领域的大量应用代码和相关文档,这些代码和文档中包含的知识对领域工程来说是至关重要的。
|
|
|