03-0(09-2)---SoftwareProductLine

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wyh925163com412013120初始级1软件配置管理软件质量保证软件子合同管理软件项目跟踪和监督软件项目规划需求管理可重复级2定义级3软件质量管理量化的过程管理管理级4过程变化管理技术变化管理错误预防优化级5软件配置管理软件质量保证软件子合同管理软件项目跟踪和监督软件项目规划需求管理对等复审组间协作软件产品工程集成的软件管理培训计划组织过程定义组织过程关注mail
Mail:wyh_925@ 20
2013-7-11
2.1、核心资产开发
核心资产开发活动的输入(续1) 2. 风格、模式和框架



符合产品约束和生产约束的相关体系结构 是什么? 构件交互的协议和模式是什么? 有哪些可用的设计模式? 有哪些可用的应用框架? ……
2013-7-11
Mail:wyh_925@
3
Part 9-2:软件产品线
1、软件产品线概念
1.1、背景(Background) 1.2、概念(Concept) 1.3、产品线的好处和代价
(Benefits and Costs of a Product Line)
1.4、相关术语解释(Note on Terminology)
2013-7-11
Mail:wyh_925@
12
1.3、使用产品线的好处和代价(续5)
Customer:




获得高质量产品 交付日期可预测 复用可预测 知道单独需求的费用 好的文档材料 共享维护费用 降低失败的机会 好的文档材料
End User:

2013-7-11
Mail:wyh_925@

产品的灵活性是市场的必然需求,而产品线将通过 裁剪,生产出满足特定用户或用户群需要的产品。 从开发者的角度,产品线的成功在于产品之间通过 共性的共享,达到了生产上经济的目的。
Mail:wyh_925@ 5
2013-7-11
1.1、背景(续)
软件开发的历史是螺旋上升的(从构成软件成分的抽象粒度和面向应用的角度来看) 1960s,子程序(subroutines) 1970s,模块(modules) 1980s,对象(objects) 1990s,构件(components) Now,系统(Systems)
Mail:wyh_925@
21
2.1、核心资产开发
核心资产开发活动的输入(续2) 3. 生产约束

产品线的产品要遵循哪些商业、军事或公司的规范? 产品线的产品所基于的底层基础设施是什么? 产品推向市场的时间需求是什么? 哪些COTS构件是可用的? 哪些遗产构件可被复用? ……
2013-7-11
Mail:wyh_925@
4
1.1、背景
“软件产品线” 是CMU(Carnegie Mellon University) 的SEI (Software Engineering Institute) 提出的。 一个产品线(Product Line):是共享一组公共的、 可管理的特性,并且满足特定市场需求的产品 集合。 产品线方法必将成为新世纪中占主导地位的软件生 产模式
产品线方法可以看作是软件复用发展的更高阶段
2013-7-11
Mail:wyh_925@
6
1.2、概念
一个软件产品线是满足下列性质的一组软件系统:
共享一组相同的、可管理的特性集合 满足一类特定的市场需求 以预先规定的方式基于公共核心资产集开发
在一个软件产品线中,新产品的形成通过以下步骤:
好处和付出的代价都是与产品线中产品之间的复用相关的 好处1:产品线体系结构提供了在产品线中进行系统开发的 结构,构件间的关系和约束。 一旦定义好了产品线体系结构,意味着产品线中 所有产品的系统设计已基本完成。
代价1:产品线体系结构必须支持产品线内部固有的变化性, 所以除了定义构件本身和构件之间的约束(必选的, 可选的,可替换的),还要定义在产品线中开发系统 时构件使用和演化的原则,增加了产品线体系结构定 义的复杂性。
Technical Manager:


2013-7-11
增强预言能力 良好的角色和职责
Mail:wyh_925@ 10
1.3、使用产品线的好处和代价(续3)
Software Product Developer:


高的士气 高的工作满意度 真正将力量集中在产品的某一方面 易集成 降低计划延迟 组织的高度灵活性 有充足学习新技术的时间 提高梯队建造高质量产品的声誉
Mail:wyh_925@
24
2.1、核心资产开发
核心资产开发活动的输出 1. 定义产品空间 确定了产品线中包含的产品,定义了产品的共性和变化性


过宽:核心资产将无法适应广谱的变化性,生产的经济性将丧 失,产品线将退化成“一次一个产品”的老的开发模式; 过窄:核心资产的通用性将无法适应未来发展的需要,并且规 模经济无法实现。 市场需求、竞争对手和企业目标 产品约束,诸如在哪些平台上运行和必须具有的性能 相关系统和产品 对于市场和技术的预测
其中,体系结构是最为关键的资产。
2013-7-11
Mail:wyh_925@
14
1.4、相关术语解释(续1)
开发(development)的含义
“开发”在这里是一个广义的词,指的是如何获得核心资 产 软件进入一个组织可以通过以下三个渠道之一:
• 自己构建(build),包括从零开始或从遗产系统中挖掘 • 直接购买(purchase),通常不做修改 • 委托加工(commission),同别人签订合同为其特别定制
2013-7-11
Mail:wyh_925@
23
2.1、核心资产开发
核心资产开发活动的输入(续4)
5. 已有资产的清单 在开发产品线之前有哪些可用的软件资产,譬如: 库函数、框架、算法、工具、构件等? 有哪些可用的技术管理过程、预算模型、培训资 源? ……
2013-7-11
2013-7-11
Mail:wyh_925@
11
1.3、使用产品线的好处和代价(续4)
Architect or Core Asset Developer:

高挑战性 工作高效性 提高在组织中的声望 边生产边销售
Marketer:



产品质量的可预测 产品交付的可预测 将产品按家族销售
2、 产品线方法的基本活动
2.1、核心资产开发(Core Asset Development) 2.2、产品开发(Product Development) 2.3、管理(Management)
2013-7-11
Mail:wyh_925@
17
2.1、核心资产开发
产品线方法的基本活动
2013-7-11
影响产品线SA开发的因素:
产品线空间 相关的风格、模式和应用框架 遗产系统的知识
2013-7-11 Mail:wyh_925@ 26
2.1、核心资产开发
核心资产开发活动的输出(续)
2. 开发核心资产库—构件等 包括同可复用软件构件相关的资产: 需求规约 设计/界面规约 代码 测试计划/案例/规程 性能模型 评审表格/规程 …… 2.开发核心资产库—核心资产的更新
好处3:为软件开发购买的开发环境、配置管理工具、设备管理工具可 以在整个产品线中使用,相当于投资的“分期付款”。 代价3:要求这些可复用的工具和环境有足够的适应性,适应一个产品 线的通用性又可以适应单独产品的变化性 ,因此对这些工具和环 境的要求较高。
好处4:产品线是面向特定领域中的共性产品,开发人员具有适应整个 产品线的经验,可以按照需要随时转换项目,提高生产效率。 代价4:专业人员的培训代价高。
影响产品线空间的因素:



2013-7-11
Mail:wyh_925@
25
2.1、核心资产开发
核心资产开发活动的输出(续) 2. 开发核心资产库--SA 产品线空间的共性体现在SA中,变化性体现在可裁剪 /可替换的构件中
规定可能成为核心资产的软件构件 解决核心资产库的构件和形成产品的构件之间的通信问题 定义一致性规则以保证产品遵循体系结构规范 保证SA在产品线生命周期中的可行性
软件体系结构
王映辉
博士(后),教授,博导
软件体系结构
Part 9:SA复用 ---软件产品线
2013-7-11
Mail:wyh_925@
2
Part 9-2:软件产品线
1、软件产品线的概念 2、软件产品线的基本活动 3、若干典型的产品线实践域 4、实例研究 5、小结
2013-7-11
从公共资产库中选取合适的构件
使用预定义的变化性机制进行必要裁剪,如参数化、继承 必要时增加新的构件
在整个产品线范围内共同的SA指导下,进行构件组装,形成系统
新产品(系统)的开发从“创造编程”变为“集成组装”
2013-7-11 Mail:wyh_925@ 7
1.3、使用产品线的好处和代价
2013-7-11 Mail:wyh_925@ 9
1.3、使用产品线的好处和代价(续2)
CEO(首席执行官):



获得大的生产力 大幅度缩短上市时间 稳定提升的市场地位 提高捕获市场经济的能力
COO(首席运营官):

劳动力的有效利用 提高探索新市场、新技术和新产品的能力 降低人员流动的负效应
2013-7-11
Mail:wyh_925@
22
2.1、核心资产开发
核心资产开发活动的输入(续3)
4. 生产策略:是实现核心资产的总体方法。
产品线采用自顶向下还是自底向上的开发方法? 转移资产生产成本的策略是什么? 通用构件是自行开发还是从市场购买? 产品是自动生成还是组装? 核心资产的生产如何管理? ……
尽管产品线以产品族的方式构造是最高效的,但


从技术上来讲,产品线不是产品族; 同样,如果产品族的结果产品与市场目标关系不 大,也不一定构成产品线; 注意:在此所说的软件产品线的定义隐含了产品 线是作为一个产品族来开发的。
Mail:wyh_925@ 16
2013-7-11
Part 9-2:软件产品线
最后,需要定义当产品线演化时,核心资产将如何更新。例如过 多的可用资源、技术改进、市场转向等影响了产品线空间。
2013-7-11 Mail:wyh_925@ 27
2.1、核心资产开发
核心资产开发活动的输出(续) 3. 开发生产计划 生产计划描述了如何基于资产库开发产品,制定将单个 资产的“附加”过程连接起来的全局策略。其过程包括 : 产品线的开发方式:自顶向下 vs. 自底向上 SA的开发和维护 可裁剪/可替换构件在开发产品过程中的使用方式 为使用、裁剪和演化核心资产,计划应用的特定工 具 度量产品线(或其它过程改善)为企业带来的效益, 并制定为度量采集相关数据的计划
13
1.4、相关术语解释

核心资产库(core assets base) 核心资产库是产品线的基础,是管理支持产品开发 的可复用资源的机制。
核心资产库中的资产通常包括: 体系结构、可复用软件构件、领域模型、需求描述、 文档和规约、性能模型和度量、日程、预算、测试计划、 测试用例、工作计划、过程描述、通讯协议描述、用户 界面描述、应用生成器、设计准则和设计决策,……
所以,“开发”实际上包括构建、获取、购买、翻 新老系统,或以上各种方式的组合。
2013-7-11
Mail:wyh_925@
15
1.4、相关术语解释(续2)
产品线(product line)vs. 产品族(product family)
产品线是共享一组公共的、可管理的特性,并且满足特 定市场需求的产品集合。 产品族是一组相关的软件系统,它们是基于公共的核心 资产开发出来的。
Mail:wyh_925@
18
2.1、核心资产开发
2013-7-11
Mail:wyh_925@
19
2.1、核心资产开发
核心资产开发活动的输入 1. 产品约束



产品线中的产品有哪些共性和变化性? 产品提供哪些行为特性? 根据市场和技术预测,产品将来要具有哪些功能? 遵循什么标准? 满足哪些性能要求? 同哪些外部系统交互? 满足哪些物理限制? 满足哪些质量要求(如可用性、安全性等)? ……
2013-7-11 Mail:wyh_925@ 8
1.3、使用产品线的好处和代价(续1)
好处2:设计决策、数据结构、算法、文档、编码和调试信息等都属于 可复用资产,它们在产品线的所有产品中可被反复使用。 代价2:因为可复用资产要适应不同产品之间的差异,所以要求可复用 资产有足够通用的特性,同时要保证性能不被降低,增加了资产 设计和实现的复杂性。
相关文档
最新文档