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