目录
4. The Quality Attribute of Variability
7. Design Product Line Architecture
7.1 Identifying Variation Points
7.2 Supporting Variation Points
7.3 Evaluation a Product Line Architecture
8. Key Software Product Line Issues
0.前言
本系列文章旨在软件设计与体系结构的知识点,资料来源四川大学授课内容,可用于期末复习,笔者理解尚浅,文中不正之处静待批正。加粗部分为重点。

1.Introduction
想要重用架构--产品线product line
软件产品线定义:是一套软件密集型系统,具有一套共同的、受管理的功能,可满足特定细分市场或任务的具体需求,并以规定的方式从一套共同的核心资产中开发出来。
产品线方法是重用现有软件的重要方法;从架构上讲,关键在于识别和管理共性和差异
优点:成功建立产品线后,每项可重复使用的资产都会保存在核心资产库中;因为这些资产可用于多个系统,而且重复使用比重新发明成本更低;产品线可提高成本、质量和上市时间
为什么能有用:软件产品线的本质是在生产一系列产品的过程中对资产进行有序的、战略性的重复使用;产品系列之所以成功,是因为它们具有共同点;重复使用的潜力广泛而深远。
2.可重用reuse的部分
- 需求Requirements:大多数需求都与早期系统的需求相同,因此可以重复使用
- 架构设计Architectural design:一个软件系统的架构需要组织内最有才华的工程师投入大量时间
- 软件元素Software Elements:这包括设计元素的界面、文档和程序,以及任何模型
- 建模和分析Modeling and analysis:性能模型、可调度性分析、分布式系统问题
- 测试test:测试计划、测试流程、测试用例、测试数据、测试线束和问题修复都已就位
- 项目规划Project planning:预算和时间安排更可预测,因为经验是未来绩效的高保真指标
- 流程、方法和工具Processes, methods, and tools:配置控制程序和设施、文件计划和审批流程、工具环境、系统生成和分配程序、编码标准
- 人员People:可根据需要在项目间灵活调动
- 示范系统Exemplar systems:已部署的产品可作为高质量的示范原型
- 消除缺陷Defect elimination:产品系列可提高质,因为每个新系统都利用了其前身消除缺陷的优势
3. Scoping范围界定
产品线的范围是一个声明,说明组织愿意建立哪些系统作为其产品线的一部分,不愿意建立哪些系统;组织的战略规划者、市场营销人员、能够对类似系统进行编目的领域分析师以及技术专家都可以为范围界定过程提供投入
产品线范围是产品线成功与否的关键因素,它既不能太窄(>=3),也不能太宽
范围内(白色);需要根据具体情况处理(灰色);范围外(有斑点)
4. The Quality Attribute of Variability
可变性variability这一质量属性与软件产品线的关系最为密切;所有产品系列都具有可变性,目的是满足产品系列范围所确定的共性和变异
可变性是可修改性的一种特殊形式,是指核心资产适应不同产品使用环境的能力。软件产品线中的可变性的目标是使产品线中的产品易于长期构建和维护。
可变性的通用场景:
- Source: Actor requesting variability
- Stimulus: Requests to support variations in the following:Hardware, Feature sets, Technologies, User interfaces, quality attributes and more. For the range of products affected, such as: All, A specified subset, Those that include feature set x and new product
- Environment: Variants are to be created at: Runtime, Build time, Development time
- Artifact: Asset(s) affected, such as: Requirements, Architecture, Component, Test suite y, Project plan z, and more
- Response: The requested variants can be created
- Response measure: A specified cost and/or time to create the core assets and to create the variants using these core assets
5.产品线架构的作用
在核心资产库的所有资产中,软件架构起着最为核心的作用,这既有战术上的原因,也有战略上的原因。战术上的原因是架构在构建产品线中的重要性。构建成功产品线的精髓在于区分恒定性和多样性。其战略原因在于,它赋予了组织在现有产品线之外的能力;一种架构可以作为组织进入新业务领域的跳板
6. Variation Mechanisms可变性机制
软件产品系列由一些可变性机制提供支持,变化机制将使我们能够维护一个单一模块,以适应应用中的变化范围
三种主要的可变性机制是:①包含或省略元素②包含不同数量的复制元素③选择界面相同但行为或质量属性特征不同的元素版本
常见的可变性机制:
7. Design Product Line Architecture
产品线架构师需要考虑以下三点:确定差异点;支持差异点;评估架构对产品线的适用性
7.1 Identifying Variation Points
在开发过程中,几乎任何时候都可以发现变体;有些变体是在产品线需求征询过程中发现的;有些是在架构设计过程中发现的;还有些是在实施过程中发现的。
数据采集和分析系统的差异点:通道数(1-n);数据格式(edf、tme);通信方式(USB、网络)
7.2 Supporting Variation Points
在软件产品系列中,对可变性的架构支持可以有多种形式;根据可变性机制而定
7.3 Evaluation a Product Line Architecture
评估必须关注差异点,以确保:它们是适当的;它们提供了足够的灵活性以覆盖产品线的预期范围;它们允许快速构建产品;它们不会造成不可接受的运行时性能成本
8. Key Software Product Line Issues
软件产品线的关键问题是什么:技术不是产品线的唯一障碍,组织、流程和业务问题同样重要;配置管理也是任何项目的重要活动
产品线失败的原因:①缺乏有足够控制力和能见度的支持者;②管理层未能提供持续和坚定的支持;③中层管理人员不愿放弃对项目的专制控制;④未能明确确定业务目标;⑤一遇到困难就放弃这种方法;⑥未能对员工进行充分的方法培训,也未能对变革进行充分的解释或论证
解决方法:一个好的策略是启动一个小而可见的试点项目,以展示软件产品系列的量化效益
9. Adoption Strategies
- 自上而下的采用Top-down adoption是指在产品层面工作的设计人员和开发人员意识到他们在无谓地重复彼此的工作,并开始共享资源和开发通用的核心资产。
- 自下而上的采用Bottom-up adoption发生在当在产品层面工作的设计人员和开发人员意识到他们在无谓地重复彼此的工作,并开始共享资源和开发通用的核心资产时。
9.1 两个重要模型
①主动模型The proactive model:在积极主动的产品线中,企业通过对范围的全面定义来确定产品系列,从而使企业能够做出影响最深远的战略决策。主动模型需要初始投资,但返工比被动模式少。
②被动模型The reactive model:被动模式对前期规划和战略方向制定的重视程度要低得多。这种被动模式完全依赖于返工,初始投资很少。
9.2 Evolution of Product Line
这种演变将由外部和内部资源共同推动:外部来源;内部来源
- 外部来源:产品线中元素的新版本将由其供应商发布;外部创建的元素可能会添加到产品线中;功能可能会添加到产品线中
- 内部来源:必须确定产品的新功能是否在产品系列的范围之内;应用最新技术
9.3 组织结构
①所有开发工作都在一起:没有单独的核心资产组;所有软件开发工作都集中在一个单位进行
②独立的核心资产单位:由一个特别单位负责开发和维护核心资产基础