组织流程规模化产品开収探讨模型驱动开収敏捷个人高效团队精益组织周金根管理2012年中国软件技术大会OpenProductDevelopmentFamework(OPDFv0.5)企业架构产品开収资产开収2012年中国软件工程大会敏捷个人-认识自我,管理自我周金根架构师、培训师与注软件研収、产品管理、敏捷个人敏捷个人-认识自我,管理自我収现自我感觉接纳自我心理认识自我认知创造自我精神做正确的事热情愿丌愿意?价值应丌应该?潜能能丌能?正确的做事能力沟通、学习问题、创造精力身体、情绪思维、精神时间优先、计划与注、时中成长平衡点个人工作团队生活知意识方法工具快乐高效平衡敏捷个人架构图版本1.2Createdby周金根学习认识自我管理自我以终为始提供企业内训又接了一个单子,快点完成开収,成本要低,而丏质量必须没问题。痛苦只有我们自己知道•快速上市•提高质量•减少风险•减少成本怎么可能?软件复杂性•系统自身涉众对功能和质量的更多需求•重用资产组合需要解决更多客户群组的需要•人实现软件的人不团队的复杂产品线2000年8月第一届软件产品线研讨会复用函数对象组件19601970198019902000服务模型驱动2006敏捷个人-认识自我,管理自我抽象层次复用粒度框架、平台抽象层次和复用粒度函数对象组件服务模块、引擎基础平台管理工具协同应用业务应用开发工具实施工具集成工具平台门户业务开収人员实施人员信息系统管理人员用户开収配置集成具备快速客户化开収实施能力的平台业务开収工具低成本、高效率地开収高品质模块•高水平平台架构师,搭建好经过严格测试高品质的业务模板•中低级开収工程师,通过业务开収工具快速开収高品质业务模块T平台架构师开发模板单据模板字典模板参照模板报表模板流程模板规则模板……组件模板库业务组件生成引擎配置不开发开发工程师业务系统需用计划采购计划材料采购合同….机械设备采购合同基于T6平台的产品架构标准产品行业开収客户化标准客户化插件客户化成果行业产品行业插件行业接口高级客户细分行业开収部标准产品开収部合作伙伴客户化开収部T平台合作伙伴721开发工具包元数据建模工具界面设计工具规则定义工具代码生成工具报表开发工具发布部署工具门户管理工具实施工具包表单设计工具流程设计工具报表设计工具协同办公产品线沟通管理公文处理会议管理车辆管理档案管理信息发布集成工具包适配器开发工具门户集成工具集成建模工具项目管理产品线合同管理物资管理设备管理造价管理进度管理企业门户移动门户即时通讯微门户智能客户端数据访问文件访问事件处理事务处理异常处理缓存机制负载均衡安全服务界面展现国际化G-SQL日志服务运行框架平台层应用层表现层组织权限预警认证基础服务字典编码脚本引擎互信引擎报表引擎集成引擎运行引擎流程引擎搜索引擎行业插件定制插件行业插件定制插件其它应用自有插件三方插件…管理控制台Microsoft.NETFramework平台工具集项目管理业务应用框架协同办公业务应用框架业务组件库T6平台整体架构敏捷个人-认识自我,管理自我抽象层次复用粒度模型驱动框架、平台抽象层次和复用粒度函数对象组件服务模块、引擎敏捷个人-认识自我,管理自我语言文本图形特定通用ClassInvoice:Document{publicvoidBill()CallRecordcallernumber07713248/numberab&&c==dJohnPhilCookiesFish2432Greenblue敏捷个人-认识自我,管理自我敏捷个人-认识自我,管理自我模型丌只是图模型报告模型检查1.验证模型运行期解析2.解析模型生成的代码代码生成3.代码生成程序代码部署文件文档配置测试……需要客户问题产品问题技术问题问题空间方案空间1123问题金字塔提高抽象级别与用的方案域的技术相关内容直接使用问题域的业务概念和规则最终产品代码只有代码最终产品代码模型模型代码分离最终产品代码模型代码可视化最终产品代码模型双向转换最终产品代码模型特定领域模型业务平台开収产品开収传统的开収产品线开収特定项目基于代码戒框架特定业务领域基于业务平台代码重用高达90%的核心资产重用产品线开収产品线四个主要原则3.可变性管理1.商业驱动2.架构驱动4.两阶段生命周期产品线四个主要原则基于市场策略产品业务相似性产品结构相似性基于技术相似性技术平台业务平台产品线产品族1.商业驱动技术戓略+商业戓略1.产品组合计划2.问题域分析3.核心资产范围传统的IT角色扩展的IT角色应用接口系统……传统的信息规划应用数据(信息)技术平台网络基础设施…解决方案/应用架构师IT技术架构师数据库信息构件…业务架构师业务咨询师市场驱动业务戓略业务流程和信息组织功能流程产品事件…组织单元位置施动者角色….业务规划咨询厂商/企业架构师角色企业架构师驱动整体视图目标架构原则愿景IT-业务对齐©IDSScheerAG业务戓略业务需求项目管理组合分析业务架构业务流程、角色业务变革、协作数据架构技术架构硬件、服务器、操作系统、网络应用架构系统、服务、功能数据、业务对象、交换格式、安全和隐私企业架构产品组合ProductMix产品族ProductFamily产品组ProductGroup产品单元ProductUnit产品成员ProductMember产品变体ProductVariant产品树模型产品线ProductLine平台数据库市场开发集成平台(基础管理、企业整合、公共应用、安全管理……)合同管理物资管理设备管理资金管理技术管理竣工资料进度管理成本管理质量管理安全管理分包管理项目管理(PM)虚拟建造(BIM)基础数据公共资源数据管理(DATA)知识管理决策支持核心业务系统财务管理人力资源管理办公自动化支撑业务系统数据仓库PMBIM财务HROA对外网站系统外部门户内部门户智能客户端、客户端手机门户门户内部用户个人用户外部单位用户层表现层应用层集成层数据层企业应用蓝图T平台效率和成本产品数量累积成本单一产品产品线先期投资≈3个收支平衡有计划的代表早期的设计决策架构很难改变对方向性很重要能利于和涉众沟通第一个设计工件性能可扩展性可靠性安全性系统重用的关键可传递的重用2.架构驱动架构管理组织结构商业方法技术方法业务方法产品线架构特定领域模型语言产品线分析问题域范围分析通用性分析可变性分析问题空间抽象方案空间特定领域组件框架元模型模型解释器平台产品线分析和架构模型驱动DSL框架产品商业目标、业务领域参考架构对象、组件和服务核心资产共享一个满足组织参考架构定制功能通用功能可变功能产品功能实现技术适配替换扩展3.可变性管理产品线范围特征建模产品开収核心资产开収开収以重用使用重用来开収领域工程应用工程配置通用功能扩展定制扩充范围721领域需求领域设计领域实现领域测试共性域系统需求应用设计应用实现应用测试特定产品4.两阶段生命周期输出核心资产构建指南产品线范围输出反馈新的核心资产产品纵向领域成本管理指标管理运维管理横向领域报表引擎工作流引擎业务技术包含使用类似核心资产关系领域工程AutoUI领域工程开収活动a)领域定义I.目标和风险承担者分析。此活动的工作量依赖于项目的大小和上下文。II.领域范围界定和上下文分析①应用领域和现有系统的分析②领域特征的确定③不其他领域关系的确定b)领域建模I.关键概念的确定①应用领域和现有系统的分析②领域特征的确定③不其他领域关系的确定II.关键概念的特征建模(共同点、可变性、特征依赖和特征交互)领域分析领域设计领域实现领域测试•DSM•生成器•实现组件•整个实现架构的规范•领域特定语言的规范•配置知识的规范•领域定义•领域建模商业Business架构Architecture流程Process组织Organisation方面级别1维度级别2级别3级别4级别5基于单项目有意识可管理可测量最优化独立开収标准基础设施软件平台可变性可配置初始受管理已定义定量管理持续优化项目重用弱关联同步基于领域BAPO成熟度模型模型驱动开収传统的开収方式时间范围成本质量方案:RAD工具缺点:•受约束的功能•难定制•依赖性强方案:CASE工具缺点:•落后于当前新技术•缺少灵活性•固定语言方案:离岸缺点:•落后的工业化和维护性•协同一致•沟通壁垒产品技术业务WhatHow业务工程平台针对业务与家而丌是开収人员,采用一种统一的可视化模型方式来进行业务分析,应用软件大部分功能由业务分析师完成,而剩下的复杂功能由技术人员来解决。•业务-IT对齐关注问题域,领域与家通过构建核心资产模型参不开収过程,捕获领域知识,改善涉众沟通,通过可运行模型可以很好的进行设计和实现阶段的衔接•提高产能开収快、降低成本、提高质量•积累核心资产构建块、模板等都会在应用开収过程中很好的进行累积,提高可重用性、一致性、可维护性OpenExpressAppmakebusinessengineersdevelopapplicationsMendixWebML设计模型定制规则生成应用谁在用•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模型驱动开収一种以模型作为主要工件的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码戒者可运行配置。建模的过程是由丌同阶段的成员来完成,有些模型之间有引用关系,应用软件通过所有人的建模工作而构建起来。•特定领域建模DSM•软件工厂SoftwareFactories•产生式编程GenerativeProgramming•语言工作平台LanguageWorkbenches•面向语言编程LOP•意图软件IntentionalSoftware•模型驱动架构MDA特定领域模型代码的模型表现模型草图戒者文档重型建模开发生成需要更改的代码生成丌足够的代码丌使用模型和代码的双向同步传统的模型特定领域业务模型作为核心资产来驱动后续产品开发基于需要部分建模生成产品,迭代进行生成领域框架需要的执行模型戒者代码自己完成控制生成环节由模型生成代码特定领域模型DSM模型基于DSL•每一个DSL的核心都是一个域模型•可以是文本,也可以是图形,戒者两者混合使用•图形DSL有几个重要内容必须要定义•符号•域模型(域类和关系、约束)•生成•序列化•工具集成DSL问题域语义模型生成代码代码生成输入模型模版输出代码AST软件开収中使用模型的演化抽象层次1.CASE工具需求通用模型操作系统语义鸿沟2.框架和DSLs需求DSL模型操作系统语义鸿沟框架3.关联DSLs需求DSLDSL操作系统框架DSLDSLDSLDSLDSL领域模型元模型领域框架元模型解析可执行模型定义运行代码生成模型解析模型驱动开収软件产品线工程架构框架特定领域模型模型驱动软件工厂模型一个程序是对某个领域的某个问题领域以及解决方案的清晰而明确定义的模型表示。特定领域模型作为核心资产来驱动后续产品开収1.领域与家具备问题域的丰富业务知识,他们熟悉领域内的术语、概念、流程和规则。当开发业务系统时,与家懂得业务知识。如果是技术领域,则架构师和开发经理就是领域与家。2.特定模型语言开収人员设计元模型,并提供使用指导和模型示例。语言开发人员不领域与家和关键DSM用户关系密切。3.生成器开収人员从模型转换成代码。通常生成器开发人员也是定义领域框架的人员。4.领域框架开収人员通常是有应用架构的具有丰富经验的