1. 产品线就是由在系统的组成元素和功能方面具有共性和个性的相似的多个系统组成的一个系统族。
2. 软件产品线主要由两部分组成:核心资源、产品集合。
(1)核心资源:领域工程的所有结果的集合。
(2)核心资源最重要的部分:产品线体系结构和构件。
【产品线体系结构就像是拼图的图纸,构件就像是拼图】
3. 软件产品线的过程模型——双生命周期模型(产品线=领域工程+应用工程)
(1)领域工程:针对所有的构件,即共性部分。
任务:
a. 领域分析:利用现有系统的设计、体系结构和需求建立领域模型
b. 领域设计:用领域模型确定领域/产品线的共性和可变性,为产品线设计体系结构
c. 领域实现:基于领域体系结构开发领域可重用资源(构件、文档、代码生成器)
(2)应用工程:针对个体,即个性部分。
任务:
a. 需求分析:将系统需求与领域需求比较,划分成领域公共需求和独特需求两部分,得出系统说明书
b. 系统设计:在领域体系结构基础上,结合系统独特需求设计应用的软件体系结构
c. 系统实现:遵照应用体系结构,用领域可重用资源实现领域公共需求,用定制开发的构件满足系统独特需求,构建新的系统
(3)应用工程将产品线资源不能满足的需求返回给领域工程以检验是否将其并入产品线的需求中。领域工程从应用工程中获得反馈或结合新产品的需求进入又一次周期开发。
【产品线的演化】
(4)优点:
a. 提高软件生产率、可靠性和质量
b. 降低开发成本
c. 缩短开发时间
4. SEI模型——三周期模型
(1)特点:
a. 循环重复。
b. 核心资源开发和产品开发没有先后之分。
c. 管理活动协调整个产品线开发过程的各个活动,对产品线的成败负责。
d. 核心资源开发和产品开发是两个互动的过程,三个活动和整个产品线开发之间也是双向互动的。
(2)每一个旋转环代表一个基本活动;三个基本活动交错连接,可以以任何次序发生,且高度重叠;旋转的箭头表示不但核心资源库被用来开发产品,而且已存在的核心资源的修订甚至新的核心资源可以来自产品开发。
(3)
a. 领域工程增加了产品线确定作为起始阶段,和领域分析阶段、体系结构开发阶段、基础资源开发阶段组成整个领域工程。
�b. 领域分析阶段增加市场分析的任务,应用领域阶段增加了商务/市场分析和规划
c. 在领域工程和应用工程之间的双向交互中添加核心资源管理作为桥梁
5. 软件产品线的组织结构
(1)软件开发的组织分两个基本部分:负责核心资源的小组、负责产品的小组。
【双周期、三周期都有】
(2)体系结构组:监控核心资源开发组和产品开发组以保证核心资源和产品能够遵循体系结构,同时负责体系结构的演化
(3)配置管理组:维护每个资源的版本
【体系结构组、核心资源开发组与负责独立产品开发的小组相互独立】
6. SEI产品线组织结构
(1)将产品线组织分为四个工作小组:
a. 市场人员是产品线和产品能力、客户需求之间的沟通桥梁;
b. 核心资源组负责体系结构和其他核心资源的开发;
c. 应用组负责交付给客户的系统的开发;
d. 管理者负责开发过程的协调、商务计划等。
(2)设有独立核心资源小组的组织结构通常合适于至少由50到100人组成的较大型的软件开发组织。
(3)在不设立独立的核心资源小组中,核心资源的开发融入各系统开发小组中,只是设立专人负责核心资源开发的管理。
7. Jan Bosch产品线组织结构
(1)开发部门:所有的软件开发集中在一个部门,每个人都可承担领域工程和应用工程中适合的任务。
【特点:简单、利于沟通】【适用于不超过30人的组织】
(2)业务部门:每个部门负责产品线中一个和多个相似的系统,共性资源由需要使用它的一个和几个部门协作开发,整个团体都可享用。
【优点:资源更容易共享。】
【缺点:业务部门更注重自己的产品而将产品线的整体利益放在第二位。】
【适用于30-100人的组织】
(3)领域工程部门:有一个专门的单位——领域工程部门负责核心资源库的开发和维护,其他业务单位使用这些核心资源来构建产品。
【优点:可有效的降低通讯的复杂度、保持资源的通用性】
【缺点:难以管理领域工程部门和不同产品工程部门之间的需求冲突和因此导致的开发周期增长。】
【适于超过100人的组织。】
(4)层次领域工程部门:对于非常巨大和复杂的产品线可以设立多层(一般为两层)领域工程部门
【优点:不同层部门服务的范围不同】
【缺点:模型趋向臃肿,对新需求的响应慢】
8. 软件产品线的建立方式
9. 软件产品线的演化
(1)从整体来看,软件产品线的发展过程有三个阶段,开发阶段、配置分发阶段和演化阶段。
(2)产品线的演化包括产品线核心资源的演化、产品的演化和产品的版本升级。
10. 产品线分析
(1)产品线分析是产品线的需求工程,是商业机遇的确认和产品线体系结构的设计之间的桥梁。
【确认机遇:是否有现成的产品线】
12. 产品开发
(1)产品开发活动取决于产品线范围、核心资源库、产品计划和需求的输出。
13. 产品线体系结构
(1)软件产品线体系结构指一个软件开发组织为一组相关应用或产品建立的公共体系结构。
(2)同领域模型一样,软件产品线体系结构中也可以分为共性部分和个性部分。
a. 共性部分是产品线中所有产品在体系结构上的共享部分,是不可改变的
b. 个性部分指产品线体系结构可以变化的部分
【产品线结构的设计目的是尽量扩展产品线中所有产品共享的共性部分,同时提供一个尽量灵活的体系结构变化机制】
(3)在产品线的生命周期中,产品线体系结构应该保持相对小和缓慢的变化以便在生命周期中尽量保持一致。