zoukankan      html  css  js  c++  java
  • 领域驱动设计-2-通用语言和领域模型管理

    通用语言

    通用语言是软件生命周期中沟通的公共语言,用于保障软件沟通环节的畅通.     
    通用语言的形成来源包括:

        领域模型    
        人的沟通    
        文档和图    
        源代码    
        解释性模型

    领域模型管理

    1 模型驱动设计    

    模型驱动设计是通过结合前期的需求分析模型和开发设计,形成领域模型,获取一个全局设计概览的设计方式.    
      领域模型是现实问题范围的抽象体现.如地球仪和地球的关系.    

    需求分析模型是瀑布开发模式中前期进行需求分析,得到的软件模型,它的问题是只从需求角度反映了软件模型,
      很多设计没有考虑开发实现的难度和可能性,后期会造成很多返工.

    开发设计是敏捷开发模式中倡导的:软件即代码,充分考虑开发中对于现实问题的实现,它的缺点缺少全局视野.    

    模型驱动设计通过结合需求分析模型和开发设计,保障了设计的全局性,便于软件的实现.这相当于结合了和
      敏捷开发模式的建模优点,剔除了不足.



    模型驱动设计

    2 领域模型的获取:    

    •  分离领域    

      常用的分层架构,后端的像应用层,业务层(领域层),持久层;前端的像mvc等,通过分层来进行数据解耦,

      进行模型的抽取.这里领域模型的应用不适合重前端的应用(前端不进行模型抽取),因为没有进行模型

      抽取,无法做到将业务复杂度和技术复杂度进行分离,并且也无法进行重用.同时领域模型适用于大型

      项目,因为大型项目才涉及较多的重用,开发时间也较富余,前期大量的规划工作才有价值.

    • 模型的实现

        通过实体进行基础模型定义.

      实体(ENTITY):具备唯一标识的对象,数据具有内在连续性.例如:学籍管理系统中,学生就是值对象,
       每个学生都有唯一的标识,用于识别并贯穿所有在校期间.

        通过值对象进行数据传递.

      值对象(VALUE OBJECT):值+对象=将值用对象的方式进行表述,来表达一个具体的固定不变的概念.
       例如:Java的枚举就是值对象.不需要唯一标识,不可变.它便于重用,简化了数据操作.

        通过服务实现模型操作.

      服务(SERVICE):将无法归结到实体和值对象的过程或转换封装所成的接口.例如:银行账户导出功能.
       它是对于账户实体的操作,但是你将它归属到账户实体会打破实体的封装,
       并且不便于领域层的访问,这样就可以将它单独定义为服务接口.

        通过模块进行模型分类.
            模块(MODULES):它将关联实体,值对象和服务等模型元素聚合到一起,以降低建模和设计的复杂性.

  • 相关阅读:
    GL_LINES_ADJACENCY_EXT等
    Using ASP.NET Sessions from WCF
    Device Contexts, CDC, CPaintDC,CClientDC,CWindowDC,CMetaFileDC
    First Win32 App, 第一个Win32 GUI程序
    MFC Windows程序设计:第二版/(美)帕罗赛斯
    Interlocked 使用
    What are the differences between SRAM and DRAM?
    C++虚函数示例
    First MFC
    WinAPI first gui, 2nd edition, from sun xin
  • 原文地址:https://www.cnblogs.com/chengmuyu/p/10933945.html
Copyright © 2011-2022 走看看