做过应用软件开发的朋友们大多都熟悉传统的开发生命周期:应用软件首先从业务分析员画在在纸上或者流程图工具中的业务草图开始,一个个功能被定义出来;然后交到开发人员手里,设计,编码,组装;接着应用软件又交付业务分析员做测试;业务人员按照当初设计草图勾勒的功能去测试,发现问题后报一个Bug,提请开发人员修改代码。反复多次,最后交付的软件很少有和设计100%契合的,大部分是业务人员与开发人员互相让步的结果。由业务人员直接参与测试,还是比较理想的情况,多数开发过程,测试由专门的测试人员按照他们对业务设计的理解做测试,他们对业务的理解又会同业务分析员以及开发人员有所偏差。
可以发现,整个应用软件的开发周期中,在交流沟通上,以及为纠正沟通产生的误解,花费了大量的人力物力。为了解决沟通的问题,特别是业务人员和技术人员之间的沟通,软件开发过程中引入了许多模型。模型能够在一定程度上对问题提供抽象,能够作为不同领域之间有效交流的共通符号。
说到模型,就会想到常用的数据库设计的ER模型,应用程序设计的UML,以及一些其他一些业务流程模型。随着软件开发工具的不断进步,许多模型只要能够提供完备的需求描述,完全能够直接产生应用的实现代码,而且也能够按照实现代码利用逆向工程产生对应的模型。这样的模型多数是来自于技术领域的模型,例如:ER模型和UML中的模型。模型和代码之间的双向工程,极大的方便了应用系统的设计和维护。相对于改变代码,对模型的更改更加迅速高效,而且避免手工编码对模型的误解。相对而言,来自于业务领域的模型基本上只能作为需求描述的工具,并不能直接映射到工作流程和业务系统的实现。而SOA的出现,让这种情况得到改观。
SOA之所以成为业界的热门议题,其中一个重要的因素就是对应用系统的模块做出了更高层次的抽象,同时提供了面向业务和面向技术的方法论。面向对象模型中对象层次的抽象——类、对象、属性、事件,等等,是技术领域首次试图通过模仿客观世界的存在让业务领域能够更好理解应用系统。SOA把这种尝试成功的推进了一步,通过更高层次的抽象,让业务功能模块——或者称作“服务”包含更多业务的因素,而把实现的技术细节完全隐藏在标准的接口界面之后。更高抽象的“服务”,正好契合了业务流程模型的抽象粒度。业务人员熟悉的模型,就能直接映射到工作流程和业务系统的实现。
所以,SOA让模型驱动的开发进入业务层次,业务人员而非技术人员成为这个层次上的创新主体。软件开发的生命周期中,增加了“服务”组装成复合应用(Composite Application)的环节,分工更加明确合理。业务分析人员有机会通过模型来直接产生需要的业务流程实现,减少和技术人员沟通的误解。技术人员能够专注特定的业务模块的实现,特别是对完全定义的接口的实现。模型驱动的开发遵循敏捷化开发的思路,在循环的原型创建和细化中,业务模型、对象模型和数据模型,等各个层次的模型不断完备,直到能够直接生成应用系统。而随后的系统维护也变成了对模型的维护。应用系统的模型和实现之间的双向工程进一步扩展到更高的业务流程层次,对业务系统的修改直接针对模型完成,高效,快捷,减少错误。
总之,模型驱动SOA凭借更高层次的业务功能抽象,达成业务模型和业务系统实现的双向工程,帮助提高开发团队效率
分享到:
相关推荐
MDA(Model Driven Architecture,模型驱动架构)是一种软件开发方法论,由OMG(Object Management Group,对象管理组织)提出,旨在通过模型的抽象层次提高软件开发的效率和质量。MDA的核心思想是将软件开发过程中...
因此,投资于领域模型的创建和实现至关重要,它可以帮助团队与业务专家更好地协作,提升开发团队的建模和设计能力,以及业务分析师的流程建模技能。 在企业架构(EA)中,领域驱动设计扮演着关键角色,因为领域模型...
- **模型驱动软件开发中的作用**:通过将决策结果暴露为模型转换参数的方式,这些决策模型能够在模型驱动的软件开发过程中发挥作用,进一步提升开发效率和软件质量。 ### 四、关键词解析 - **Architectural ...
总之,SOA成熟度模型为组织提供了一个评估和改进其服务导向架构实践的工具,有助于构建更加灵活、可扩展且业务驱动的IT基础设施。通过逐步推进成熟度,组织可以实现更高的业务敏捷性和经济效益。
UML统一了面向对象的基本概念,引入了模型驱动开发(MDD),强调从抽象模型到具体实现的过程,并提供了演化的概念,为构件和架构的概念奠定了理论基础。 然而,UML的实际应用面临挑战,特别是在软件演进和适应变化...
通过这种方式,开发团队可以更高效地构建和维护复杂的软件系统。 #### 二、如何在模型驱动的开发中使用领域特定语言(DSL)? **领域特定语言(DSL)**:DSL是一种针对特定问题领域的编程语言,它可以极大地提高开发...
随着企业IT架构的不断演进和发展,从传统的SOA(面向服务架构)到MDA(模型驱动架构),再到现在的微服务架构,每一次架构模式的变化都伴随着对灵活性、可扩展性和可维护性的更高追求。在这一过程中,元数据扮演着...
IBM Rational Software Architect(Rational Rose的后续产品)进一步增强了这种能力,提供了更全面的模型驱动开发支持,包括对服务导向架构(SOA)的支持,使得开发者能够构建更复杂、更健壮的应用程序。 总的来说...
3. **模型驱动架构(MDA)**:MDA是一种软件开发方法,强调模型的中心地位,将应用程序的逻辑抽象为平台无关模型(PIM),然后通过转换生成平台相关的模型(PSM),以适应不同技术环境。 4. **数据建模**:包括概念...
这种方式可以提高开发效率,减少代码错误,并使得业务模型与代码分离,方便后期维护。 4. **工作流引擎**: EAS BOS内建的工作流引擎允许开发者定义和执行复杂的业务流程。开发者需要了解工作流的概念,如任务节点...
3. **模型驱动开发(Model Driven Development, MDD)**:Eclipse 3.0支持MDD,允许开发者通过创建和操作模型来设计和实现软件,提高了代码的可维护性和复用性。 4. **JUnit集成**:Eclipse 3.0内置了对JUnit的支持...
2. 基于领域的系统架构(DSSA)与模型驱动开发(MDD):DSSA有助于捕捉特定领域的先进需求和实现架构,降低MDD的难度,提高开发效率和软件质量。例如,Rhapsody就是一个成功的MDD工具案例。 3. 迭代/敏捷开发的标准...
- **计划游戏(Planning Game)**:通过持续的计划会议来确定接下来两周的工作重点,开发团队会为每个特性提供成本估算,而客户则基于这些估算来决定哪些特性将被优先实现。 - **小版本发布(Small Release)**:在项目...
在探讨DDD落地之API文档化的主题之前,我们首先需要了解领域驱动设计(DDD)的核心思想和...在实现这些目标的过程中,DDD方法论提供了良好的理论框架和实践指导,有助于软件开发团队应对日益复杂的业务需求和技术挑战。
8. **与其他软件开发范式的结合**:分析模式不仅适用于面向对象设计,也可以与面向服务架构(SOA)、领域驱动设计(DDD)等现代软件开发范式相结合,提供更为强大的设计支持。 通过阅读《分析模式-可复用的对象模型...
该工具基于MDA(Model Driven Architecture)模型驱动架构理念,允许开发者以模型为中心进行工作,提高软件开发的效率和质量。 1. **模型驱动开发**:Enterprise Architect支持UML2.5标准,提供丰富的图表类型,如...
Node.js以其高效的异步I/O和事件驱动模型,在Web开发领域展现出强大的潜力,但将其应用于大型企业级项目,需要克服一系列挑战。本文将深入探讨Node.js在企业级Web开发中的应用,特别是围绕SOA/微服务架构下的困境、...
这份文档适用于中国电信内部的运营团队、技术开发人员以及对电信计费有需求的外部合作伙伴,帮助他们理解并优化计费过程。 1.4 资料引用 文档可能引用了相关行业的标准、规范以及中国电信的内部政策,以确保计费...