博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
领域驱动设计-2-通用语言和领域模型管理
阅读量:6709 次
发布时间:2019-06-25

本文共 1085 字,大约阅读时间需要 3 分钟。

通用语言

通用语言是软件生命周期中沟通的公共语言,用于保障软件沟通环节的畅通.     

通用语言的形成来源包括:

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

领域模型管理

1 模型驱动设计    

模型驱动设计是通过结合前期的需求分析模型和开发设计,形成领域模型,获取一个全局设计概览的设计方式.    

  领域模型是现实问题范围的抽象体现.如地球仪和地球的关系.    

需求分析模型是瀑布开发模式中前期进行需求分析,得到的软件模型,它的问题是只从需求角度反映了软件模型,

  很多设计没有考虑开发实现的难度和可能性,后期会造成很多返工.

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

模型驱动设计通过结合需求分析模型和开发设计,保障了设计的全局性,便于软件的实现.这相当于结合了和

  敏捷开发模式的建模优点,剔除了不足.

模型驱动设计

 

2 领域模型的获取:    

  •  分离领域    

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

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

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

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

  • 模型的实现

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

  实体(ENTITY):具备唯一标识的对象,数据具有内在连续性.例如:学籍管理系统中,学生就是值对象,

   每个学生都有唯一的标识,用于识别并贯穿所有在校期间.

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

  值对象(VALUE OBJECT):值+对象=将值用对象的方式进行表述,来表达一个具体的固定不变的概念.

   例如:Java的枚举就是值对象.不需要唯一标识,不可变.它便于重用,简化了数据操作.

    通过服务实现模型操作.

  服务(SERVICE):将无法归结到实体和值对象的过程或转换封装所成的接口.例如:银行账户导出功能.

   它是对于账户实体的操作,但是你将它归属到账户实体会打破实体的封装,
   并且不便于领域层的访问,这样就可以将它单独定义为服务接口.

    通过模块进行模型分类.

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

 

转载于:https://www.cnblogs.com/chengmuyu/p/10933945.html

你可能感兴趣的文章
[转]CDN(内容分发网络)技术原理
查看>>
js中,(function(){})()的用法解析
查看>>
薏米红豆粥功效及做法介绍
查看>>
Quick-Cocos2d-x 集成 Google protobuf 方法
查看>>
javaSE基础之记事本编程
查看>>
Unity3d与android通信
查看>>
东大OJ-1040-Count-快速幂方法求解斐波那契-
查看>>
弹出键盘windowsoftinputmode属性设置值
查看>>
Firefly官方教程之Netconnect使用文档
查看>>
玉堂春_百度百科
查看>>
Unity3D脚本中文系列教程(五)
查看>>
Win7 如何访问XP系统里的网上邻居?
查看>>
怎么设置环境变量
查看>>
Mac 可设置环境变量的位置、查看和添加PATH环境变量
查看>>
使用python向Redis批量导入数据
查看>>
又一道软通动力7K月薪面试题——银行业务调度系统
查看>>
Atitit. 高级软件工程师and 普通的区别 高级编程的门槛总结
查看>>
Struts ActionForm简单理解
查看>>
【JavaScript】前端开发框架三剑客—AngularJS VS. Backone.js VS.Ember.js
查看>>
openstack API debug OpenstackEveryProject_CLI,curl_based
查看>>