您好,欢迎访问三七文档
软件体系结构王映辉博士(后),教授,博导Mail:wyh_925@163.com22020/1/29Part9:SA复用软件体系结构---软件产品线Mail:wyh_925@163.com32020/1/29Part9-2:软件产品线1、软件产品线的概念2、软件产品线的基本活动3、若干典型的产品线实践域4、实例研究5、小结Mail:wyh_925@163.com42020/1/291.1、背景(Background)1.2、概念(Concept)1.3、产品线的好处和代价(BenefitsandCostsofaProductLine)1.4、相关术语解释(NoteonTerminology)1、软件产品线概念Part9-2:软件产品线Mail:wyh_925@163.com52020/1/29“软件产品线”是CMU(CarnegieMellonUniversity)的SEI(SoftwareEngineeringInstitute)提出的。一个产品线(ProductLine):是共享一组公共的、可管理的特性,并且满足特定市场需求的产品集合。产品线方法必将成为新世纪中占主导地位的软件生产模式产品的灵活性是市场的必然需求,而产品线将通过裁剪,生产出满足特定用户或用户群需要的产品。从开发者的角度,产品线的成功在于产品之间通过共性的共享,达到了生产上经济的目的。1.1、背景Mail:wyh_925@163.com62020/1/29软件开发的历史是螺旋上升的(从构成软件成分的抽象粒度和面向应用的角度来看)1.1、背景(续)产品线方法可以看作是软件复用发展的更高阶段1960s,子程序(subroutines)1970s,模块(modules)1980s,对象(objects)1990s,构件(components)Now,系统(Systems)Mail:wyh_925@163.com72020/1/29一个软件产品线是满足下列性质的一组软件系统:共享一组相同的、可管理的特性集合满足一类特定的市场需求以预先规定的方式基于公共核心资产集开发1.2、概念在一个软件产品线中,新产品的形成通过以下步骤:从公共资产库中选取合适的构件使用预定义的变化性机制进行必要裁剪,如参数化、继承必要时增加新的构件在整个产品线范围内共同的SA指导下,进行构件组装,形成系统新产品(系统)的开发从“创造编程”变为“集成组装”Mail:wyh_925@163.com82020/1/29好处和付出的代价都是与产品线中产品之间的复用相关的1.3、使用产品线的好处和代价好处1:产品线体系结构提供了在产品线中进行系统开发的结构,构件间的关系和约束。一旦定义好了产品线体系结构,意味着产品线中所有产品的系统设计已基本完成。代价1:产品线体系结构必须支持产品线内部固有的变化性,所以除了定义构件本身和构件之间的约束(必选的,可选的,可替换的),还要定义在产品线中开发系统时构件使用和演化的原则,增加了产品线体系结构定义的复杂性。Mail:wyh_925@163.com92020/1/29好处2:设计决策、数据结构、算法、文档、编码和调试信息等都属于可复用资产,它们在产品线的所有产品中可被反复使用。代价2:因为可复用资产要适应不同产品之间的差异,所以要求可复用资产有足够通用的特性,同时要保证性能不被降低,增加了资产设计和实现的复杂性。1.3、使用产品线的好处和代价(续1)好处3:为软件开发购买的开发环境、配置管理工具、设备管理工具可以在整个产品线中使用,相当于投资的“分期付款”。代价3:要求这些可复用的工具和环境有足够的适应性,适应一个产品线的通用性又可以适应单独产品的变化性,因此对这些工具和环境的要求较高。好处4:产品线是面向特定领域中的共性产品,开发人员具有适应整个产品线的经验,可以按照需要随时转换项目,提高生产效率。代价4:专业人员的培训代价高。Mail:wyh_925@163.com102020/1/29CEO(首席执行官):获得大的生产力大幅度缩短上市时间稳定提升的市场地位提高捕获市场经济的能力1.3、使用产品线的好处和代价(续2)COO(首席运营官):劳动力的有效利用提高探索新市场、新技术和新产品的能力降低人员流动的负效应TechnicalManager:增强预言能力良好的角色和职责Mail:wyh_925@163.com112020/1/29SoftwareProductDeveloper:高的士气高的工作满意度真正将力量集中在产品的某一方面易集成降低计划延迟组织的高度灵活性有充足学习新技术的时间提高梯队建造高质量产品的声誉1.3、使用产品线的好处和代价(续3)Mail:wyh_925@163.com122020/1/29ArchitectorCoreAssetDeveloper:高挑战性工作高效性提高在组织中的声望边生产边销售1.3、使用产品线的好处和代价(续4)Marketer:产品质量的可预测产品交付的可预测将产品按家族销售Mail:wyh_925@163.com132020/1/29Customer:获得高质量产品交付日期可预测复用可预测知道单独需求的费用好的文档材料共享维护费用EndUser:降低失败的机会好的文档材料1.3、使用产品线的好处和代价(续5)Mail:wyh_925@163.com142020/1/29核心资产库(coreassetsbase)核心资产库是产品线的基础,是管理支持产品开发的可复用资源的机制。核心资产库中的资产通常包括:体系结构、可复用软件构件、领域模型、需求描述、文档和规约、性能模型和度量、日程、预算、测试计划、测试用例、工作计划、过程描述、通讯协议描述、用户界面描述、应用生成器、设计准则和设计决策,……其中,体系结构是最为关键的资产。1.4、相关术语解释Mail:wyh_925@163.com152020/1/291.4、相关术语解释(续1)开发(development)的含义“开发”在这里是一个广义的词,指的是如何获得核心资产软件进入一个组织可以通过以下三个渠道之一:•自己构建(build),包括从零开始或从遗产系统中挖掘•直接购买(purchase),通常不做修改•委托加工(commission),同别人签订合同为其特别定制所以,“开发”实际上包括构建、获取、购买、翻新老系统,或以上各种方式的组合。Mail:wyh_925@163.com162020/1/291.4、相关术语解释(续2)产品线(productline)vs.产品族(productfamily)产品线是共享一组公共的、可管理的特性,并且满足特定市场需求的产品集合。产品族是一组相关的软件系统,它们是基于公共的核心资产开发出来的。尽管产品线以产品族的方式构造是最高效的,但从技术上来讲,产品线不是产品族;同样,如果产品族的结果产品与市场目标关系不大,也不一定构成产品线;注意:在此所说的软件产品线的定义隐含了产品线是作为一个产品族来开发的。Mail:wyh_925@163.com172020/1/292、产品线方法的基本活动2.1、核心资产开发(CoreAssetDevelopment)2.2、产品开发(ProductDevelopment)2.3、管理(Management)Part9-2:软件产品线Mail:wyh_925@163.com182020/1/29产品线方法的基本活动2.1、核心资产开发Mail:wyh_925@163.com192020/1/292.1、核心资产开发Mail:wyh_925@163.com202020/1/29产品线中的产品有哪些共性和变化性?产品提供哪些行为特性?根据市场和技术预测,产品将来要具有哪些功能?遵循什么标准?满足哪些性能要求?同哪些外部系统交互?满足哪些物理限制?满足哪些质量要求(如可用性、安全性等)?……核心资产开发活动的输入2.1、核心资产开发1.产品约束Mail:wyh_925@163.com212020/1/29符合产品约束和生产约束的相关体系结构是什么?构件交互的协议和模式是什么?有哪些可用的设计模式?有哪些可用的应用框架?……核心资产开发活动的输入(续1)2.1、核心资产开发2.风格、模式和框架Mail:wyh_925@163.com222020/1/29产品线的产品要遵循哪些商业、军事或公司的规范?产品线的产品所基于的底层基础设施是什么?产品推向市场的时间需求是什么?哪些COTS构件是可用的?哪些遗产构件可被复用?……核心资产开发活动的输入(续2)2.1、核心资产开发3.生产约束Mail:wyh_925@163.com232020/1/29产品线采用自顶向下还是自底向上的开发方法?转移资产生产成本的策略是什么?通用构件是自行开发还是从市场购买?产品是自动生成还是组装?核心资产的生产如何管理?……核心资产开发活动的输入(续3)2.1、核心资产开发4.生产策略:是实现核心资产的总体方法。Mail:wyh_925@163.com242020/1/295.已有资产的清单在开发产品线之前有哪些可用的软件资产,譬如:库函数、框架、算法、工具、构件等?有哪些可用的技术管理过程、预算模型、培训资源?……核心资产开发活动的输入(续4)2.1、核心资产开发Mail:wyh_925@163.com252020/1/291.定义产品空间确定了产品线中包含的产品,定义了产品的共性和变化性过宽:核心资产将无法适应广谱的变化性,生产的经济性将丧失,产品线将退化成“一次一个产品”的老的开发模式;过窄:核心资产的通用性将无法适应未来发展的需要,并且规模经济无法实现。影响产品线空间的因素:市场需求、竞争对手和企业目标产品约束,诸如在哪些平台上运行和必须具有的性能相关系统和产品对于市场和技术的预测2.1、核心资产开发核心资产开发活动的输出Mail:wyh_925@163.com262020/1/292.开发核心资产库--SA产品线空间的共性体现在SA中,变化性体现在可裁剪/可替换的构件中规定可能成为核心资产的软件构件解决核心资产库的构件和形成产品的构件之间的通信问题定义一致性规则以保证产品遵循体系结构规范保证SA在产品线生命周期中的可行性影响产品线SA开发的因素:产品线空间相关的风格、模式和应用框架遗产系统的知识2.1、核心资产开发核心资产开发活动的输出(续)Mail:wyh_925@163.com272020/1/292.开发核心资产库—构件等包括同可复用软件构件相关的资产:需求规约设计/界面规约代码测试计划/案例/规程性能模型评审表格/规程……2.1、核心资产开发最后,需要定义当产品线演化时,核心资产将如何更新。例如过多的可用资源、技术改进、市场转向等影响了产品线空间。2.开发核心资产库—核心资产的更新核心资产开发活动的输出(续)Mail:wyh_925@163.com282020/1/293.开发生产计划生产计划描述了如何基于资产库开发产品,制定将单个资产的“附加”过程连接起来的全局策略。其过程包括:产品线的开发方式:自顶向下vs.自底向上SA的开发和维护可裁剪/可替换构件在开发产品过程中的使用方式为使用、裁剪和演化核心资产,计划应用的特定工具度量产品线(或其它过程改善)为企业带来的效益,并制定为度量采集相关数据的计划2.1、核心资产开发核心资产开发活动的输出(续)Mail:wyh_925@163.com292020/1/292.1、核心资产开发以核心资产为基础、以生产计划为指导、生产出产品线空间的产品Mail:wyh_925@163.com302020/1/292.2、产品开发产品开发是产品线的目标,核心资产开发只是达到该目的的一种手段。产品开发活动依赖于核心资产开发活动的三个输出:产品线空间、核心资产和生产计划;再加上特定产
本文标题:软件产品线资料
链接地址:https://www.777doc.com/doc-3380967 .html