`
yinter
  • 浏览: 247495 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

领域驱动设计

    博客分类:
  • uml
阅读更多

    软件开发过程的重点:它必须以业务领域为中心。让模型植根于领域、并精确反映出领域中的基础概念是建立模型的一个最重要的基础。通用语言应该在建模过程中广泛尝试以推动软件专家和领域专家之间的沟通,以及发现要在模型中使用的主要的领域概念。建模过程的目的是创建一个优良的模型,下一步将模型实现成代码。这是软件开发过程中同等重要的两个阶段。创建了优良的模型,但却未能将其成功地转换成代码把软件的质量带入未知境地。

    曾经发生过软件分析人员和业务领域专家在一起工作了若干个月,一起发现了领域的基础元素,强调了元素之间的关系,创建了一个正确的模型,模型也正确捕获了领域知识。然后模型被传递给了软件开发人员。开发人员看模型时可能会发现模型中的有些概念或者关系不能被正确地转换成代码。所以他们使用模型作为灵感的源泉,创建了自己的设计,虽然某些设计借鉴了模型的思想,另外他们还增加了很多自己的东西。开发过程继续进行,更多的类被加入到代码中,进一步加大了原始模型和最终实现的差距。在这种情况下,很难保证产生优良的最终结果。优秀的开发人员可能会让一个产品最终交付使用,但它能经得起生产环境的考验吗?它能容易地被扩展吗?它能容易地被维护吗?

    任何领域都能被表现成多种模型,每一种模型都能用不同的方式表现成代码。对每一个特殊问题而言,可能会对应不止一个解决方案。选择一个能够被轻易和准确转换成代码的模型很重要。最根本的问题是:我们应该如何动手处理从模型到代码的转换。

    一个推荐的设计技巧是使用分析模型,它被认为是从代码设计中分离出来、通常是由多个人完成的。分析模型是业务领域分析的结果,其产生的模型不考虑软件需要如何实现。这样的一个模型可用来理解领域,它建立了特定级别的知识,模型看上去会很正确。软件不是这个阶段要考虑的,因为它的介入会被看作是一个导致混乱的因素。这个模型到达开发人员那里后,由他们来做设计的工作。因为这个模型没有涉及到设计原则,它可能不能很好地完成目标。因此开发人员不得不修改它,或者建立分离的设计。在模型和代码之间也不再存在映射关系。最终的结果是分析模型在编码开始后就被放弃了。
分享到:
评论

相关推荐

    领域驱动设计实践

    领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法,主要关注点在于业务领域,旨在通过深入理解和建模复杂的业务逻辑来提高软件的可读性和可维护性。其核心在于领域建模,即通过与领域专家的合作,...

    张逸-构建领域驱动设计知识体系_compressed.pdf

    ### 领域驱动设计(DDD)的知识体系构建 #### 一、领域驱动设计的历史回溯 **1.1 诞 生** - **里程碑之一**:2004年,Eric Evans出版了《领域驱动设计:软件核心复杂性应对之道》(Domain-Driven Design: Tackling...

    最新领域驱动设计(DDD)资料合集(23份).zip

    最新领域驱动设计(DDD)资料合集,共23份。 金融支付系统的改造之路 化繁为简--DDD驱动复杂业务软件架构的演进 基于DDD的领域建模中的模版和工具实践 基于FP的DDD实践 架构分层模型适配 可视化的遗留系统微服务...

    阿里盒马领域驱动设计实践

    依赖和测试,介绍了阿里盒马领域驱动设计实践。设计是把双刃剑,没有最好的,也没有更好的,而是条条大路到杭州。同时不设计和过度设计都是有问题的,恰到好处的设计才是我们追求的极致。DDD(Domain-DrivenDesign,...

    领域驱动设计案例-盒马实践

    领域驱动设计案例-盒马实践 本文将通过对盒马实践的领域驱动设计案例进行详细的分析,讨论领域模型的设计理念、数据建模、对象建模、依赖注入等方面的知识点。 领域模型的设计理念 领域模型是领域驱动设计的核心...

    洞见-领域驱动设计文集.pdf

    ### 洞见-领域驱动设计文集.pdf #### 综述 《洞见-领域驱动设计文集》是一本深度解析领域驱动设计(Domain-Driven Design,简称DDD)的综合性指南,它不仅包含了对DDD核心概念的阐述,还涉及了大量的实战经验和...

    .NET领域驱动设计

    发布于2013-4-28最近在研究DDD颇有收获,所以整理出来跟大家分享,共同进步!...漫长的数据库驱动开发历史,导致我们根本无法脱离这个环境进行学习和实战。从教科书再到真正的企业项目开发都是先设计数据库然后进行逻辑

Global site tag (gtag.js) - Google Analytics