1、软件产品线WhyWhat参考How2011-01规模化产品开发Why软件产品线What参考How很少产品的软件是唯一的Windows 7 操作系统产品线 初级版家庭普通版家庭高级版专业版旗舰版企业版低成本快速度灵活定制高质量低维护好产品产品线的规模化共有的商业目标软件策略技术创新流程改进重用子程序模块对象组件19601970198019902000重用历史服务规模化?不同的屏幕大小不同的功能不同的键盘58种语言130个国家多种协议考虑向后兼容每年的新产品数量525-30以前现在软件产品线如何做到的?子程序模块对象组件服务19601970198019902000 产品线2000年8月 SEI第一
2、届软件产品线研讨会规模化重用Why软件产品线What参考How术语SEI术语其他叫法产品线产品族核心资产平台业务单元产品线产品客户化核心资产开发领域工程产品开发应用工程产品开发传统的开发产品线开发特定项目基于代码或框架特定业务领域基于业务平台代码重用高达90%的核心资产重用领域工程(核心资产开发)纵向领域材料管理指标管理合同管理横向领域报表引擎工作流引擎业务技术包含使用类似核心资产关系基于市场策略产品业务相似性产品结构相似性基于技术相似性技术平台业务平台产品线产品族一个产品线可能是与产品族一起提供出来*有业务平台就有技术平台,有技术平台不一定有业务平台产品商业目标业务领域架构组件和服务核心资产
3、共享一个构建成属于特定满足组织产品线的开发需求和需求分析领域模型软件架构和设计文档性能工程测试计划测试用例测试数据人:知识和技能预算日程安排生产计划流程、方法和工具组件和服务战略性重用核心资产不是克隆并拥有只是基于组件或服务小粒度重用只关注一个单独的产品只是一个可配置的架构只是一套技术标准商业战略软件产品线技术战略一种战略性的、有计划的、能够实现的和强制的重用是组织过程软件产品线敏捷个人敏捷团队敏捷组织BAPO模型驱动软件工厂规模化核心资产开发产品开发管理商业架构产品线四个主要原则可变性管理Variability management商业驱动Business-centric架构驱动Archit
4、ecture-centric两阶段生命周期Two-life-cycle approach产品线长期战略项目走单通用功能定制功能可变功能可变性管理产品线范围产品功能实现技术适配替换扩展为什么软件架构很重要?架构管理组织结构商业方法技术方法业务方法改变代表早期的设计决策架构很难改变对方向性很重要能利于和涉众沟通第一个设计工件性能可扩展性可靠性安全性系统重用的关键可传递的重用产品开发指南模型驱动软件工厂领域模型元模型领域框架元模型解析模型解析定义运行代码生成可运行模型模型驱动开发主要组成部分软件产品线工程架构框架模型驱动开发产品开发核心资产开发开发以重用使用重用来开发共性业务域特定产品配置通用功能扩
5、展新的需求定制扩充范围721两阶段生命周期需求设计实现测试产品线工件需求设计实现测试应用产品工件BAPO成熟度模型商业Business架构Architecture流程Process组织Organisation方面商业财务愿景战略重用参考架构可变性领域应用协作协作组织结构角色职责级别1维度级别2级别3级别4级别5基于单项目有意识可管理可测量最优化独立开发标准基础设施软件平台可变性可配置初始受管理已定义定量管理持续优化项目重用弱关联同步基于领域Why软件产品线What参考How需求和需求分析领域模型软件架构和设计文档性能工程测试计划测试用例测试数据人:知识和技能预算日程安排生产计划流程、方法和工具
6、组件和服务成本产品数量累积成本单一产品产品线先期投资3个产品线经济模型收支平衡产品线虽然广泛,但是它们都给予一些统一的核心活动和实践通用的产品线实践概念框架,描述了核心的活动和29中个实践域核心资产开发产品开发管理实践域软件工程技术管理组织管理指南模式案例探测课程产品开发管理核心资产开发产品约束输入生产约束生产策略现有资产清单输出核心资产生产计划产品线范围核心资产开发产品开发管理产品特定需求输入输出反馈新的核心资产核心资产生产计划产品线范围产品产品约束核心资产开发产品开发管理创造并坚持愿景确保正确的目标和适当的度量保持斗志注重反馈并持续改善方法领导者管理正确的组织机构分配资源协调和监督提供培训
7、适当的奖励员工生成和实施产品线采纳计划方法前期投资,先开发核心资产从一个或多个产品开始迭代开发核心资产开发产品开发管理实践域软件工程技术管理组织管理指南模式案例探测课程实践域软件工程(技术开发)技术管理组织管理(控制实施)1.构架定义2.构架评估3.组件开发4.COTS使用5.挖掘现有资产6.需求工程7.软件系统集成8.测试9.理解相关领域1.配置管理2.数据收集、度量和跟踪3.自行开发/购买/挖掘/委托分析4.过程定义5.确定范围6.技术规划7.技术风险管理8.工具支持1.建立业务案例2.客户接口管理3.开发获取策略4.资金筹备5.启动和贯彻执行6.市场分析7.运作8.组织规划9.组织风险管理10.确定组织机构11.技术预测12.培训一条产品线还是多条产品线?一个企业2.有能力控制管理市场运作开发其他大规模产品1.产品有足够多的相同点Why软件产品线What参考How更多书籍:1 2讨论开始!谢谢!make business engineers develop applicationsOpenExpressApp软件产品线 -规模化产品开发