资源描述
2002IBMCorporation,第九届中国软件工程大会(CCSE2012),定制化产品探讨,演讲人:周金根,2,商业,组织,流程,架构,定制化产品探讨,模型驱动开发,敏捷个人,高效团队,精益组织,周金根,管理,2012年中国软件技术大会,2012年中国软件工程大会,OpenProductDevelopmentFamework(OPDFv0.5),企业架构,产品开发,资产开发,规模化定制化,3,敏捷个人-认识自我,管理自我,周金根架构师、培训师专注软件研发、产品管理、敏捷个人,4,敏捷个人-认识自我,管理自我,做正确的事,热情愿不愿意?,价值应不应该?,潜能能不能?,正确的做事,能力沟通、学习问题、创造,精力身体、情绪思维、精神,时间优先、计划专注、时中,成长平衡点,个人,工作,团队,生活,敏捷个人架构图版本1.2Createdby周金根,目标,以终为始,提供企业内训,5,议程,复用软件产品线工程模型驱动开发,6,敏捷个人-认识自我,管理自我,1重用,快速上市,降低开发风险,高质量,低成本,低维护,产品规模化,面向市场的产品目标,灵活定制,8,函数,对象,组件,1960,1970,1980,1990,2000,服务,规模化?,重用的历史,9,软件复杂性,系统自身涉众对功能和质量的更多需求,重用资产组合需要解决更多客户群组的需要,软件策略,技术创新,重用,流程改进,产品线,2000年8月第一届软件产品线研讨会,规模化,核心资产,更大范围的重用,一种战略性的、强制的、能够实现的、有计划的重用,函数,对象,组件,1960,1970,1980,1990,2000,服务,模型驱动,2006,问题域,12,产品组合ProductMix,产品族ProductFamily,产品组ProductGroup,产品单元ProductUnit,产品成员ProductMember,产品变体ProductVariant,产品树模型,产品线ProductLine,客户驱动市场驱动技术驱动,战略性的,13,强制的,缩短上市时间,开发生产力能够提高5-10倍由于使用的是经过验证的工具,产品质量显著提高积累领域知识.,特定领域模型商业价值,能够实现的,效率和成本,产品数量,累积成本,单一产品,产品线先期投资,3个,收支平衡,有计划的,17,2软件产品线工程,产品开发,传统的开发,产品线开发,特定项目,基于代码或框架,特定业务领域,基于业务平台,代码重用,高达90%的核心资产重用,产品开发,19,成熟度稳定度资源约束(不仅是时间和金钱,还有专家)组织约束市场潜力(外部和内部)通用性和变化性高内聚低耦合已存在资产,产品线风险分析,商业Business,架构Architecture,流程Process,组织Organisation,方面,商业,财务,愿景,战略,重用,参考架构,可变性,领域,应用,协作,协作,组织结构,角色职责,级别1,维度,级别2,级别3,级别4,级别5,BAPO成熟度模型,21,产品线四个主要原则,3.可变性管理,1.商业驱动,2.架构驱动,4.两阶段生命周期,产品线四个主要原则,22,基于市场策略,产品业务相似性,产品结构相似性,基于技术相似性,技术平台,业务平台,产品线,产品族,1.商业驱动,技术战略+商业战略,产品组合计划问题域分析核心资产范围,23,传统的IT角色,扩展的IT角色,应用接口系统,传统的信息规划,应用,数据(信息),技术,平台网络基础设施,解决方案/应用架构师,IT技术架构师,数据库信息构件,业务架构师业务咨询师,市场驱动,业务战略,业务流程和信息,组织,功能流程产品事件,组织单元位置施动者角色.,业务规划,咨询厂商/企业架构师角色,企业架构师,驱动整体视图目标架构原则愿景IT-业务对齐,IDSScheerAGwww.ids-,业务战略业务需求,项目管理组合分析,业务架构,业务流程、角色业务变革、协作,数据架构,技术架构,硬件、服务器、操作系统、网络,应用架构,系统、服务、功能,数据、业务对象、交换格式、安全和隐私,企业架构,25,企业应用蓝图,T平台,2.架构驱动,架构,管理,组织结构,商业方法,技术方法,业务方法,27,平台层,应用层,表现层,管理控制台,Microsoft.NETFramework,平台工具集,项目管理业务应用框架,协同办公业务应用框架,业务组件库,T6平台整体架构,基础平台,管理工具,协同应用,业务应用,开发工具,实施工具,集成工具,平台门户,业务开发人员,实施人员信息系统管理人员,用户,开发,配置,集成,具备快速客户化开发实施能力的平台,产品线架构,特定领域模型语言,产品线分析,问题域,范围分析,通用性分析,可变性分析,问题空间,抽象,方案空间,特定领域组件框架,元模型,模型解释器,平台,产品线分析和架构,产品,商业目标、业务领域,参考架构,对象、组件和服务,核心资产,共享一个,构建成,属于特定,满足,组织,参考架构,31,通用功能,产品功能,实现技术,3.可变性管理,产品线范围,32,基于T6平台的产品架构,标准,客户化插件,客户化成果,行业产品,行业插件,行业接口,高级客户,细分行业开发部,标准产品开发部,合作伙伴,客户化开发部,T平台,合作伙伴,7,2,1,特征建模,34,产品开发,核心资产开发,开发以重用,使用重用来开发,领域工程,应用工程,配置,通用功能,扩展,定制,扩充范围,7,2,1,领域需求,领域设计,领域实现,领域测试,共性域,系统需求,应用设计,应用实现,应用测试,特定产品,4.两阶段生命周期,输出,输出,反馈,新的核心资产,35,业务开发工具,低成本、高效率地开发高品质模块,高水平平台架构师,搭建好经过严格测试高品质的业务模板中低级开发工程师,通过业务开发工具快速开发高品质业务模块,T平台架构师,开发模板,单据模板,字典模板,参照模板,报表模板,流程模板,规则模板,组件模板库,业务组件生成引擎,配置与开发,开发工程师,业务系统,需用计划,采购计划,材料采购合同,.,机械设备采购合同,纵向领域,成本管理,指标管理,运维管理,横向领域,报表引擎,工作流引擎,业务,技术,包含,使用,类似,核心资产,关系,领域工程,AutoUI,领域工程开发活动,领域定义目标和风险承担者分析。此活动的工作量依赖于项目的大小和上下文。领域范围界定和上下文分析应用领域和现有系统的分析领域特征的确定与其他领域关系的确定领域建模关键概念的确定应用领域和现有系统的分析领域特征的确定与其他领域关系的确定关键概念的特征建模(共同点、可变性、特征依赖和特征交互),DSM生成器实现组件,整个实现架构的规范领域特定语言的规范配置知识的规范,领域定义领域建模,每次发生的问题都有很多方面是相同的,而这些相同的方面可以一次性的解决。我们需要解决重复发生的问题的方法。根据问题空间来定义一个模型语言,让我们有能力在问题空间工作,避免以往用通用语言表述问题容易犯的一些错误,降低了犯错的机会。对于问题的每次发生,就用这个特殊语言建立模型,然后把模型插入到解决方案的固定部分。解决方案中的固定部分采用传统的设计、编码和测试技术实现。根据要解决问题的规模和种类,固定部分可以称为框架。高度抽象后,开发更统一规范,速度和质量都有所提高,领域工程,应用工程,问题空间,方案空间,问题域的可变性,产品变体规格,产品线平台,特定平台,产品线和模型,3模型驱动开发,40,传统的开发方式,质量,方案:RAD工具缺点:受约束的功能难定制依赖性强,方案:CASE工具缺点:落后于当前新技术缺少灵活性固定语言,方案:离岸缺点:落后的工业化和维护性协同一致沟通壁垒,What,How,41,传统的模型,代码的模型表现,模型草图或者文档,重型建模开发,生成需要更改的代码,生成不足够的代码,不使用模型和代码的双向同步,基于UML的MDA,特定领域业务,模型作为核心资产来驱动后续产品开发,基于需要部分建模生成产品,迭代进行,生成领域框架需要的执行模型或者代码,自己完成控制生成环节,由模型生成代码,特定领域模型DSM,42,语言,文本,图形,特定,通用,ClassInvoice:DocumentpublicvoidBill(),07713248,ab&c=d,43,WebML,模型基于DSL,每一个DSL的核心都是一个域模型可以是文本,也可以是图形,或者两者混合使用图形DSL有几个重要内容必须要定义符号域模型(域类和关系、约束)生成序列化工具集成,DSL,问题域,语义模型,生成代码,46,代码生成,输入模型,模版,输出代码,AST,47,模型驱动DSL框架,模型驱动开发,一种以模型作为主要工件的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码或者可运行配置。建模的过程是由不同阶段的成员来完成,有些模型之间有引用关系,应用软件通过所有人的建模工作而构建起来。,特定领域建模DSM软件工厂SoftwareFactories产生式编程GenerativeProgramming语言工作平台LanguageWorkbenches面向语言编程LOP意图软件IntentionalSoftware模型驱动架构MDA,49,谁在用,EclipseEMF/GMFIBMSAPOpenArchitecturewareXTextItemisxUML/MDAKennedyCarterBlueAgeArtisanAndroMDAOlivanovaModelExecution,MicrosoftDSLToolsOSLO(rebrandedtoMicrosoftSQLServerModeling)MetaCaseMetaEdit+LanguageworkbenchesJetbrainsMPSSpoofaxIntentionalWorkbenchCodeFluent,EclipseModelingProject,软件开发中使用模型的演化,抽象层级,1.CASE工具,需求,通用模型,操作系统,语义鸿沟,2.框架和DSLs,需求,DSL模型,操作系统,语义鸿沟,框架,3.关联DSLs,需求DSL,DSL,操作系统,框架,DSL,DSL,DSL,DSL,DSL,52,模型的一些用途,模型,报告,模型检查,1.验证,模型,运行期解析,2.解析,模型,生成的代码,代码生成,3.代码生成,程序代码,部署文件,文档,配置,测试,Mendix,提高抽象级别,专用的方案域的技术相关内容,直接使用问题域的业务概念和规则,55,需要,客户问题,产品问题,技术问题,问题空间,方案空间,1,1,2,3,问题金字塔,业务工程,平台针对业务专家而不是开发人员,采用一种统一的可视化模型方式来进行业务分析,应用软件大部分功能由业务分析师完成,而剩下的复杂功能由技术人员来解决。业务-IT对齐关注问题域,领域专家通过构建核心资产模型参与开发过程,捕获领域知识,改善涉众沟通,通过可运行模型可以很好的进行设计和实现阶段的衔接提高产能开发快、降低成本、提高质量积累核心资产构建块、模板等都会在应用开发过程中很好的进行累积,提高可重用性、一致性、可维护性,OpenExpressAppmakebusinessengineersdevelopapplications,57,领域模型,元模型,领域框架,元模型解析,可执行模型,定义,运行,代码生成,模型解析,模型驱动开发,软件产品线工程,架构框架,特定领域模型,模型驱动软件工厂,模型,一个程序是对某个领域的某个问题领域以及解决方案的清晰而明确定义的模型表示。,特定领域模型作为核心资产来驱动后续产品开发,58,领域专家具备问题域的丰富业务知识,他们熟悉领域内的术语、概念、流程和规则。当开发业务系统时,专家懂得业务知识。如果是技术领域,则架构师和开发经理就是领域专家。特定模型语言开发人员设计元模型,并提供使用指导和模型示例。语言开发人员与领域专家和关键DSM用户关系密切。生成器开发人员从模型转换成代码。通常生成器开发人员也是定义领域框架的人员。领域框架开发人员通常是有应用架构的具有丰富经验的架构师和开发人员。他们提供在目标环境下的参考实现,并且已经开发过组件框架、类库等。建模工具开发人员实现模型语言和代码生成器的建模工具。DSM用户模型在高级别层次上进行抽象,很大程度上支持测试、产品管理、QA、实施、销售和客户等多种人员进行沟通。DSM用户人数做多,他们使用建模工具进行开发。业务工程师使用模型建立业务领域概念IT工程师使用模型扩充技术模型测试人员使用模型建立测试用例部署人员可以生产安装程序管理人员可以获取度量信息,DSM开发角色,从模型定义到建模到模型运行,这几步中模型一个分为四个级别:,模型的4个实例化级别,元元模型,元模型,模型,应用,GOPPRR、Ecore、MOF等,实体,作者,张三,元元模型,Object,Role,Relationship,元模型,ObjectX,ObjectY,模型,InstanceOf,应用,客户实例,InstanceOf,ObjectX”customer”,InstanceOf,Relationshipinstance,InstanceOf,GOPRR元模型实现步骤概念规则符号生成器产品需求规格,Property,Graph,DSM模型架构,61,Object,GOPRR元模型,Graph,Property,Role,Relationship,概念,符号,生成器,规则,1,2,3,4,DSM实现步骤,敏捷个人-认识自我,管理自我,谢谢!,激发自我管理并孕育个人成长,从每个人、每个团队、每个社区开始。,敏捷个人-认识自我,管理自我,
展开阅读全文