©2002IBMCorporation第九届中国软件工程大会(CCSE2012)定制化产品探讨演讲人:周金根2组织流程定制化产品探讨模型驱动开发敏捷个人高效团队精益组织周金根管理2012年中国软件技术大会2012年中国软件工程大会OpenProductDevelopmentFamework(OPDFv0.5)企业架构产品开发资产开发3敏捷个人-认识自我,管理自我周金根架构师、培训师专注软件研发、产品管理、敏捷个人4敏捷个人-认识自我,管理自我发现自我感觉接纳自我心理认识自我认知创造自我精神做正确的事热情愿不愿意?价值应不应该?潜能能不能?正确的做事能力沟通、学习问题、创造精力身体、情绪思维、精神时间优先、计划专注、时中成长平衡点个人工作团队生活知意识方法工具快乐高效平衡敏捷个人架构图版本1.2Createdby周金根学习认识自我管理自我原则目标专注知行合一积极学习发挥优势精力时间方法带人习惯读书自省每日故事每周故事每月故事每年故事目标以终为始提供企业内训©2012CCSE5议程复用软件产品线工程模型驱动开发6敏捷个人-认识自我,管理自我1重用快速上市降低开发风险高质量低成本低维护产品规模化面向市场的产品目标灵活定制8函数对象组件19601970198019902000服务规模化?重用的历史9软件复杂性•系统自身涉众对功能和质量的更多需求•重用资产组合需要解决更多客户群组的需要软件策略技术创新重用流程改进产品线2000年8月第一届软件产品线研讨会规模化核心资产更大范围的重用一种战略性的、强制的、能够实现的、有计划的重用函数对象组件19601970198019902000服务模型驱动2006问题域12产品组合ProductMix产品族ProductFamily产品组ProductGroup产品单元ProductUnit产品成员ProductMember产品变体ProductVariant产品树模型产品线ProductLine•客户驱动•市场驱动•技术驱动战略性的13强制的•缩短上市时间,开发生产力能够提高5-10倍•由于使用的是经过验证的工具,产品质量显著提高•积累领域知识•......特定领域模型商业价值能够实现的效率和成本产品数量累积成本单一产品产品线先期投资≈3个收支平衡有计划的172软件产品线工程产品开发传统的开发产品线开发特定项目基于代码或框架特定业务领域基于业务平台代码重用高达90%的核心资产重用产品开发191.成熟度2.稳定度3.资源约束(不仅是时间和金钱,还有专家)4.组织约束5.市场潜力(外部和内部)6.通用性和变化性7.高内聚低耦合8.已存在资产产品线风险分析21产品线四个主要原则3.可变性管理1.商业驱动2.架构驱动4.两阶段生命周期产品线四个主要原则22基于市场策略产品业务相似性产品结构相似性基于技术相似性技术平台业务平台产品线产品族1.商业驱动技术战略+商业战略1.产品组合计划2.问题域分析3.核心资产范围23传统的IT角色扩展的IT角色应用接口系统……传统的信息规划应用数据(信息)技术平台网络基础设施…解决方案/应用架构师IT技术架构师数据库信息构件…业务架构师业务咨询师市场驱动业务战略业务流程和信息组织功能流程产品事件…组织单元位置施动者角色….业务规划咨询厂商/企业架构师角色企业架构师驱动整体视图目标架构原则愿景IT-业务对齐©IDSScheerAG业务战略业务需求项目管理组合分析业务架构业务流程、角色业务变革、协作数据架构技术架构硬件、服务器、操作系统、网络应用架构系统、服务、功能数据、业务对象、交换格式、安全和隐私企业架构25平台数据库市场开发集成平台(基础管理、企业整合、公共应用、安全管理……)合同管理物资管理设备管理资金管理技术管理竣工资料进度管理成本管理质量管理安全管理分包管理项目管理(PM)虚拟建造(BIM)基础数据公共资源数据管理(DATA)知识管理决策支持核心业务系统财务管理人力资源管理办公自动化支撑业务系统数据仓库PMBIM财务HROA对外网站系统外部门户内部门户智能客户端、客户端手机门户门户内部用户个人用户外部单位用户层表现层应用层集成层数据层企业应用蓝图T平台代表早期的设计决策架构很难改变对方向性很重要能利于和涉众沟通第一个设计工件性能可扩展性可靠性安全性系统重用的关键可传递的重用2.架构驱动架构管理组织结构商业方法技术方法业务方法27开发工具包元数据建模工具界面设计工具规则定义工具代码生成工具报表开发工具发布部署工具门户管理工具实施工具包表单设计工具流程设计工具报表设计工具协同办公产品线沟通管理公文处理会议管理车辆管理档案管理信息发布集成工具包适配器开发工具门户集成工具集成建模工具项目管理产品线合同管理物资管理设备管理造价管理进度管理企业门户移动门户即时通讯微门户智能客户端数据访问文件访问事件处理事务处理异常处理缓存机制负载均衡安全服务界面展现国际化G-SQL日志服务运行框架平台层应用层表现层组织权限预警认证基础服务字典编码脚本引擎互信引擎报表引擎集成引擎运行引擎流程引擎搜索引擎行业插件定制插件行业插件定制插件其它应用自有插件三方插件…管理控制台Microsoft.NETFramework平台工具集项目管理业务应用框架协同办公业务应用框架业务组件库T6平台整体架构基础平台管理工具协同应用业务应用开发工具实施工具集成工具平台门户业务开发人员实施人员信息系统管理人员用户开发配置集成具备快速客户化开发实施能力的平台产品线架构特定领域模型语言产品线分析问题域范围分析通用性分析可变性分析问题空间抽象方案空间特定领域组件框架元模型模型解释器平台产品线分析和架构产品商业目标、业务领域参考架构对象、组件和服务核心资产共享一个满足组织参考架构31定制功能通用功能可变功能产品功能实现技术适配替换扩展3.可变性管理产品线范围32基于T6平台的产品架构标准产品行业开发客户化标准客户化插件客户化成果行业产品行业插件行业接口高级客户细分行业开发部标准产品开发部合作伙伴客户化开发部T平台合作伙伴721特征建模34产品开发核心资产开发开发以重用使用重用来开发领域工程应用工程配置通用功能扩展定制扩充范围721领域需求领域设计领域实现领域测试共性域系统需求应用设计应用实现应用测试特定产品4.两阶段生命周期输出核心资产构建指南产品线范围输出反馈新的核心资产产品35业务开发工具低成本、高效率地开发高品质模块•高水平平台架构师,搭建好经过严格测试高品质的业务模板•中低级开发工程师,通过业务开发工具快速开发高品质业务模块T平台架构师开发模板单据模板字典模板参照模板报表模板流程模板规则模板……组件模板库业务组件生成引擎配置与开发开发工程师业务系统需用计划采购计划材料采购合同….机械设备采购合同纵向领域成本管理指标管理运维管理横向领域报表引擎工作流引擎业务技术包含使用类似核心资产关系领域工程AutoUI领域工程开发活动a)领域定义I.目标和风险承担者分析。此活动的工作量依赖于项目的大小和上下文。II.领域范围界定和上下文分析①应用领域和现有系统的分析②领域特征的确定③与其他领域关系的确定b)领域建模I.关键概念的确定①应用领域和现有系统的分析②领域特征的确定③与其他领域关系的确定II.关键概念的特征建模(共同点、可变性、特征依赖和特征交互)领域分析领域设计领域实现领域测试•DSM•生成器•实现组件•整个实现架构的规范•领域特定语言的规范•配置知识的规范•领域定义•领域建模1.每次发生的问题都有很多方面是相同的,而这些相同的方面可以一次性的解决。我们需要解决重复发生的问题的方法。2.根据问题空间来定义一个模型语言,让我们有能力在问题空间工作,避免以往用通用语言表述问题容易犯的一些错误,降低了犯错的机会。3.对于问题的每次发生,就用这个特殊语言建立模型,然后把模型插入到解决方案的固定部分。解决方案中的固定部分采用传统的设计、编码和测试技术实现。根据要解决问题的规模和种类,固定部分可以称为框架。4.高度抽象后,开发更统一规范,速度和质量都有所提高领域工程应用工程问题空间方案空间问题域的可变性产品变体规格产品线平台特定平台产品线和模型3模型驱动开发40传统的开发方式时间范围成本质量方案:RAD工具缺点:•受约束的功能•难定制•依赖性强方案:CASE工具缺点:•落后于当前新技术•缺少灵活性•固定语言方案:离岸缺点:•落后的工业化和维护性•协同一致•沟通壁垒产品技术业务WhatHow41传统的模型代码的模型表现模型草图或者文档重型建模开发生成需要更改的代码生成不足够的代码不使用模型和代码的双向同步基于UML的MDA特定领域业务模型作为核心资产来驱动后续产品开发基于需要部分建模生成产品,迭代进行生成领域框架需要的执行模型或者代码自己完成控制生成环节由模型生成代码特定领域模型DSM42语言文本图形特定通用ClassInvoice:Document{publicvoidBill()CallRecordcallernumber07713248/numberab&&c==dJohnPhilCookiesFish2432Greenblue43WebML设计模型定制规则生成应用模型基于DSL•每一个DSL的核心都是一个域模型•可以是文本,也可以是图形,或者两者混合使用•图形DSL有几个重要内容必须要定义•符号•域模型(域类和关系、约束)•生成•序列化•工具集成DSL问题域语义模型生成代码46代码生成输入模型模版输出代码AST47模型驱动DSL框架模型驱动开发一种以模型作为主要工件的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码或者可运行配置。建模的过程是由不同阶段的成员来完成,有些模型之间有引用关系,应用软件通过所有人的建模工作而构建起来。•特定领域建模DSM•软件工厂SoftwareFactories•产生式编程GenerativeProgramming•语言工作平台LanguageWorkbenches•面向语言编程LOP•意图软件IntentionalSoftware•模型驱动架构MDA49谁在用•EclipseEMF/GMF•IBM•SAP•OpenArchitectureware•XText•Itemis•xUML/MDA•KennedyCarter•BlueAge•Artisan•AndroMDA•OlivanovaModelExecution•Microsoft•DSLTools•OSLO(rebrandedtoMicrosoftSQLServerModeling)•MetaCase•MetaEdit+•Languageworkbenches•JetbrainsMPS•Spoofax•IntentionalWorkbench•CodeFluent•……EclipseModelingProject软件开发中使用模型的演化抽象层级1.CASE工具需求通用模型操作系统语义鸿沟2.框架和DSLs需求DSL模型操作系统语义鸿沟框架3.关联DSLs需求DSLDSL操作系统框架DSLDSLDSLDSLDSL52模型的一些用途模型报告模型检查1.验证模型运行期解析2.解析模型生成的代码代码生成3.代码生成程序代码部署文件文档配置测试……Mendix提高抽象级别专用的方案域的技术相关内容直接使用问题域的业务概念和规则最终产品代码只有代码最终产品代码模型模型代码分离最终产品代码模型代码可视化最终产品代码模型双向转换最终产品代码模型特定领域模型55需要客户问题产品问题技术问题问题空间方案空间1123问题金字塔业务工程平台针对业务专家而不是开发人员,采用一种统一的可视化模型方式来进行业务分析,应用软件大部分功能由业务分析师完成,而剩下的复杂功能由技术人员来解决。•业务-IT对齐关注问题域,领域专家通过构建核心资产模型参与开发过程,捕获领域知识,改善涉众沟通,通过可运行模型可以很好的进行设计和实现阶段的衔接•提高产能开发快、降低成本、提高质