软件体系结构课件软件产品线.ppt
40页软件产品线 (Software Product line)产品线简介• 背景(Background) • 概念(Concept) • 产品线的好处和代价(Benefits and Costs of a Product Line) • 相关术语解释(Note on terminology)背景背景 • 产品线方法将成为新世纪中占主导地位的 软件生产模式 -产品的灵活性是市场的必然需求,而产品线将通过 裁剪,生产出满足特定用户或用户群需要的产品 -从开发者的角度,产品线的成功在于产品之间通过 共性的共享,达到了生产上经济的目的 • 在软件开发中,CMU SEI提出的“软件产品 线”还是比较新的概念,并被迄今为止的实 践证明是可行的,可以有效地提高生产率 、缩短产品上市时间、提高质量和客户满 意度产品线的概念A product line is a group of products sharing a common, managed set of features that satisfy specific needs of a selected market.• 一个软件产品线是满足下列性质的一组 软件产品: -共享一组相同的、可管理的特性的集合 -满足一类特定的市场需求产品线中新产品的制造过程• 在一个软件产品线中,新产品形成通过以 下步骤: -从公共核心资产库(core assets base)中选取合适的构件 -使用预定义的变化性机制进行裁剪,如:参数化、继承 -必要时增加新的构件 -在整个产品线范围内共同的体系结构指导下,进行构件组 装,形成系统• 新产品的开发从“创造”变为“组装” -其中,占支配地位的活动是“集成”而非“编程”相关概念 • 公共核心资产库(core assets base) •COTS(Commercial Off-the-Shelf)公共核心资产库(core assets base)• 其中保存可重用资产,这些资产可被应用 到多个系统中。
是产品线的基础,是管理支持产品开发的 可复用资源的机制• 核心资产库中的资源通常包括: - 体系结构、可复用软件构件、领域模型、需求描述、 文档和规约、性能模型和度量、日程、预算、测试计 划、测试用例、工作计划、过程描述、通讯协议和描 述、用户界面描述、应用生成器、设计准则和设计决 策,… - 其中,体系结构是最关键的资产COTS•COTS(Commercial Off-the-Shelf) • 商业构件(开架出售的构件) • (软件行业里的分工) • 构件经过对某个领域中的分析,这个领域里 面经常会用的,共性的,完成一定功能的部 分,做成一个构件• ?和类相比有何不同 • ?体系结构和COTS的关系COTS-Intensive System软件产品线与复用 • 软件产品线为重用建立了一个非常严格的 上下文来使其发挥作用(产品线依赖战略性的或经过规划的重用而 非机会主义重用来发挥作用)Market strategy/ Application domainPertain toShare anAre built fromarchitectureIs satisfied byComponentIs used to structureCase studies Show• Successful product lines cannot be achieved by technological means alone- • product lines are most often driven by organizational, economic, and market conditions3 Primary focus areas•软件工程 •技术管理工作 •组织管理工作Software Engineering Practice• Understanding relevant domainsRequirements engineering • Architecture definitionarchitecture evaluation • Component developmentCOTS utilization • Mining existing assets • Software system integration • Testing软件产品线相关人员•领域专家:研究该领域里的共同点,做相 关的构件•应用开发人员:实际需求来了,进行系统 开发产品线方法的基本活动核心资产开发核心资产开发活动的目标• 产品线空间 • 核心资产库 • 生产计划基于核心资产,以生产计划为指导,生产出 产品线空间中的产品。
• 产品线空间描述了构成产品线的产品,不 仅仅是产品名称的列表,还包括这些产品 的共性和变化性,例如产品提供的操作, 性能和其他质量属性,运行的平台等等• 核心资产库是利用产品线进行产品开发的 基础,包括:产品线中所有产品共享的体系结构支持系统复用的软件构件,包括设计和实现构件测试计划,测试用例,集成计划和各种文档核心资产开发活动的输入(1)•产品约束 -产品线中的产品有哪些共性和个性 -它们提供哪些行为特性 -根据市场和技术预测将来产品要具有哪些功能 -遵循什么标准 -满足哪些性能标准 -同哪些外部系统交互 -满足哪些物理限制 -满足哪些质量要求 •核心资产必须以最小牺牲产品质量的代价, 换取对产品共性和个性的满足核心资产开发活动的输入(2) •风格、模式和框架 -符合产品约束和生产约束的相关体系结构是什么-构件交互的协议和模式是什么 -有哪些可用的设计模式 -有哪些可用的应用框架 • 尽管这些都是体系结构定义的输入,它们 被提高到如此高度的目的在于强调体系结 构在软件产品线实践中的重要性核心资产开发活动的输入(3)•生产约束 - 产品线的产品要遵循哪些商业、军事或公司的规范 - 产品线的产品所基于的底层基础设施是什么 - 产品推向市场的时间需求是什么 - 哪些COTS构件是可用的 - 哪些遗产构件可被复用 •对这些问题的回答对核心资产的构造,以 及核心资产自身具有显著的影响核心资产开发活动的输入(4)•生产策略 - 是实现核心资产的总体方法 - 产品线采用自顶向下还是自底向上的开发方法 - 转移资产生产成本的策略是什么 - 通用构件是自行开发还是从市场购买 - 产品是自动生成还是组装 - 核心资产的生产如何管理 •生产策略刻画了体系结构和相关构件的获 得及演化途径- 核心资产开发活动的输入(5) •已有资产的清单 - 在开发产品线之前有哪些可用的软件资产,比如:函数库 、框架、算法、工具、构件等 - 有哪些可用的技术管理过程、预算模型、培训资源? •资产清单包括所有事先存在的潜在资产, 通过仔细分析,开发组织可以确定什么是 最适合利用的定义产品空间• 产品线空间定义了产品线中包含的产品,定义了 产品的共性和变化性,产品线空间必须被认真定 义: - 过宽: 核心资产将无法适应广谱的变化性,生产的经济性将丧失,产 品线将退化成“一次一个产品”的老的开发模式 -过窄:核心资产的通用性将无法适应未来发展的需要,并且规模经济 无法实现 • 影响产品线空间的因素-市场需求,竞争对手和企业目标 -产品约束,例如产品可以在哪些平台上运行以及产品具有的性能 -相关系统和产品 -对于市场和技术的预测开发核心资产库(1)• 体系结构是产品线中最重要的核心资产,产品线 的体系结构既要满足所有产品线空间中产品的共 性,又要满足每个产品的个性 - 规定可能成为核心资产的软件构件 - 解决核心资产库的构件和形成产品的构件之间的通信问题 - 定义一致性规则以保证产品遵循体系结构规范 - 保证体系结构在产品线生命周期中的可行性 • 产品线空间的共性体现在体系结构中,变化性体 现在可裁剪/可替换的构件中 • 影响产品线体系结构开发的因素: - 产品线空间 - 相关的模式风格和应用框架 - 遗产系统的知识开发核心资产库(2) •其他的核心资产包括同可复用软件构件相 关的资产: - 需求规约 - 设计/界面规约 - 代码 - 测试计划/案例/规程 - 性能模型 - 评审表格/规程 - … •最后,需要定义当产品线演化时,核心资 产将如何更新。
例如更多的可用资源、技 术改进、市场转向等影响了产品线空间•生产计划: • -生产计划描述了怎样基于资产库开发产品 • -所有上述核心资产,例如领域模型、需求、体系结构、 构件、测试计划等,都有“附带”的过程,它描述了这些个 别的过程如何组合起来构建产品的总体方案 • -生产计划为复用者提供了一个基于产品线开发产品的指 南每个产品的变化性是同预定义的变化点相一致的,例 如:从分类的构件中选择一个提供某种特性,增加/删除 构件,通过继承或参数化裁剪构件 • -生产计划描述了产品之间必要的变化性,缺乏了生产计 划,产品的开发者将不知道核心资产之间的联系,如何有 效地和在产品线约束下利用它们开发生产计划• 成功的产品线实践依赖于文档化的、被良好理解 的、有效的软件实践和过程,用于开发和演化产 品、体系结构和其他核心资产 • 生产计划描述了如何基于资产库开发产品,制定 将单个资产的“附加”过程连接起来的全局策略, 这些过程包括: -产品线的开发方式:自顶向下 vs 自底向上 -体系结构的开发和维护 -可裁剪可替换构件在开发产品过程中的使用方式 -为使用、裁剪和演化核心资产,应用的特定工具 -度量由于产品线实践(或其它过程改善)为企业带来的效 益,并制定为度量采集相关数据的计划 • 生产计划在每次产品开发中被实例化产品开发活动(Product development)• 产品开发活动是产品线的目标,核心资产 开发只是达到该目的的一个手段。
产品开 发活动依赖于核心资产开发活动的三个输 出: • -产品线空间 • -核心资产 • -生产计划,再加上 • -特定产品需求:经常表现为产品线通用需求的一个增量 (delta),或一组产品线需求的增量 • 生产计划要被实例化为特定产品的生产计划产品开发活动中输入/输出关系 •产品开发活动的输入和输出之间存在着一 个不断反馈和叠代的过程 - 快速生成产品线中特定成员的能力会影响产品线空间,也 许被当初定义产品线空间的人所忽视 - 每个新产品可能同其它产品相似,因此需要生成新的核心 资产 - 当更多的产品被生产出来时,生产的效率可能意味着需要 新的系统生成过程,从而引起生产计划的变更 - 产品线对客户的影响表现为,一个客户可能改变他的需求 ,以便同产品线空间保持一致,从而达到利用产品线优势 ,缩短产品上市时间、提高可靠性和降低开发成本的目的 管理 •管理在成功的产品线实践中起着关键的作 用 - 为产品线中的各个活动分配资源 - 协调核心资产开发和产品开发叠代过程中的技术活动 - 设置适当的组织机构,以保证组织内的各部门得到足够数 量的合适资源(如:良好训练的员工) - 为保证核心资产演化,确定合适的预算模型,并提供相应 的资金 - 组织核心资产库中的资产,以方便查找合适的可复用资产 - 如果产品线外包给其他公司,管理活动负责监督承包人, 确保资产和产品符合合同要求,通过资产库达到企业目标 - 管理部门与外部的接口 - 推选一位称职的管理者,成为product line champion使用产品线的好处和代价(1) • 和产品复用(Reuse)有关• 好处1:产品线体系结构提供了在产品线中进行系统开发的 结构,构件间的关系和约束。
一旦定义好了产品线体系结 构,意味着产品线中所有产品的系统设计已基本完成 • 代价1:产品线体系结构必须支持产品线内部固有的变化性 ,所以除了定义构件本身和构件之间的约束(必需的、可 选的、可替换的),还要定义在产品线中开发系统时构件 使用和演化的原则,增加了产品线体系结构定义的复杂性 使用产品线的好处和代价(2)• 好处2:设计决策、数据结构、 算法。





