在《软件产品线工程方法 - 四个主要原则》中一个主要原则是:两阶段生命周期,如下图所示:
从上图可以看出,产品线开发包括核心资产开发和利用核心资产的产品开发,以及产品线开发的管理。这三部分活动是产品线的核心基本活动,如下图所示:
上图每个旋转圆圈表示一个基本活动,三者必不可少,紧密连接。旋转箭头不仅表明核心资产用于产品开发,还表明核心资产通常是从产品开发中形成的。
下面从各个基本活动分别进行说明,希望读完之后大家对产品线开发的三个基本活动都有所了解。
核心资产开发
核心资产开发活动的目标是建立产品的生成能力,下图显示了核心资产开发活动以及输入和输出。
核心资产开发的主要输入
- 产品约束:例如各个产品有哪些相同点和差异?遵循什么标准?和哪些外部系统有接口?必须满足什么质量属性?
“Requirements Engineering,” “Scoping,” 和 “Understanding Relevant Domains” 实践域关注收集相关的产品约束。 - 生产约束:上市时间要求,一年、一个月还是一天?产品开发中需要遵守哪些企业特定的标准? 谁来构建产品?在什么环境下生产,是投入开发环境还是仍旧手工编码? 核心资产提供什么变量管理机制?
“Process Discipline” 和 “Technical Planning” 实践域关注生产约束。 - 生产策略:实现核心资产的总体方法。自顶向下(从核心资产开始,导出产品)还是自底向上(从一系列产品开发,抽取核心资产)?通用组件是内部生产,还是购买?产品是由核心资产自动生产还是需要装配?
“Funding,” “Launching and Institutionalizing,” “Market Analysis,” “Building a Business Case,” “Process Discipline,” “Technical Planning,” “Scoping,” “Architecture Definition,” 和”Make/Buy/Mine/Commission Analysis” 实践域关注生产策略。 - 现有资产清单:有哪些遗留系统,这些核心资产可能成为资产库组件的重要候选者。 ”Make/Buy/Mine/Commission Analysis,” “Mining Existing Assets,” 和”Using Externally Available Software” 实践域和现有资产清单紧密相关。
核心资产开发的三个主要输出
- 产品线范围(Product Line Scope)
- 核心资产
- 生产计划
产品线范围
产品线范围是关于构成产品线的产品或产品线所能包括的产品的描述,该描述列举出所有产品的共性和彼此之间的差异,包括产品所提供的功能、性能、 运行的平台等。一个产品线要取得成功,其范围必须仔细定义,如果范围过大,产品成员变化太广,核心资产将不能适应其变化,产品线会陷入传统的一次性产品开 发模式。如果范围太小,核心资产的通用性可能不足以适应将来的变化,产品线的范围经济效益就不能实现。
产品线的范围必须将正确的产品定为目标,一般通过以下几个方面的知识来决定,即相似产品或系统、当前或预测的市场因素、业务目标(例如合并一系列相似但目前仍独立的产品开发项目)。随着市场条件的变化、组织计划的变化、新机遇的出现,产品线的范围也会随之演进。
核心资产
核心资产是产品线中产品生产的基础。核心资产通常包括(但不局限于)构架、可重用软件组件、领域模型、需求、文档、测试用例、工作计划和过程描述等,构架是核心资产集合中的关键。
每种核心资产都应和一个附属过程相关联,以指出它将如何被应用到实际产品的开发中。这个过程一般包括:
- 利用产品线的共性需求作为基线需求
- 利用产品线的扩展功能实现变化的需求
- 如何添加产品线需求之外的任何需求
- 确认构架所支持的变化和扩展
生产计划
核心资产中的各项资产的附属过程本身也是核心资产,其定义如何将其运用到产品开发中,这些附属过程合在一起就演变成了产品线的生产计划。生产计划是重用者关于产品线内产品开发的指导手册。
产品开发
成熟的产品线组织优先考虑整个产品线而不是个别产品的健壮性,但最终产品开发才是产品线的最终目标。
产品开发的主要输入
- 产品特定需求
- 核心资产开发的输出:产品线范围、核心资产和生产计划
产品开发的主要输出
- 特定产品
- 对核心资产开发提供反馈
- 增加新的核心资产和产品约束
管理
管理对于产品线的成功至关重要,开发活动必须指定资源、协调和监督。BAPO是产品线成熟评估的一个框架,产品线应该通过管理逐步提升自己的级别。后面会单独对BAPO进行介绍。
软件产品线工程方法-从技术采用生命周期来看公司内部开发平台的用户群
可供参考资料: