通用语言
通用语言是软件生命周期中沟通的公共语言,用于保障软件沟通环节的畅通.
通用语言的形成来源包括:
领域模型 人的沟通 文档和图 源代码 解释性模型
领域模型管理
1 模型驱动设计
模型驱动设计是通过结合前期的需求分析模型和开发设计,形成领域模型,获取一个全局设计概览的设计方式.
领域模型是现实问题范围的抽象体现.如地球仪和地球的关系.
需求分析模型是瀑布开发模式中前期进行需求分析,得到的软件模型,它的问题是只从需求角度反映了软件模型,
很多设计没有考虑开发实现的难度和可能性,后期会造成很多返工.
开发设计是敏捷开发模式中倡导的:软件即代码,充分考虑开发中对于现实问题的实现,它的缺点缺少全局视野.
模型驱动设计通过结合需求分析模型和开发设计,保障了设计的全局性,便于软件的实现.这相当于结合了和
敏捷开发模式的建模优点,剔除了不足.
2 领域模型的获取:
- 分离领域
常用的分层架构,后端的像应用层,业务层(领域层),持久层;前端的像mvc等,通过分层来进行数据解耦,
进行模型的抽取.这里领域模型的应用不适合重前端的应用(前端不进行模型抽取),因为没有进行模型
抽取,无法做到将业务复杂度和技术复杂度进行分离,并且也无法进行重用.同时领域模型适用于大型
项目,因为大型项目才涉及较多的重用,开发时间也较富余,前期大量的规划工作才有价值.
- 模型的实现
通过实体进行基础模型定义.
实体(ENTITY):具备唯一标识的对象,数据具有内在连续性.例如:学籍管理系统中,学生就是值对象,
每个学生都有唯一的标识,用于识别并贯穿所有在校期间.
通过值对象进行数据传递.
值对象(VALUE OBJECT):值+对象=将值用对象的方式进行表述,来表达一个具体的固定不变的概念.
例如:Java的枚举就是值对象.不需要唯一标识,不可变.它便于重用,简化了数据操作.
通过服务实现模型操作.
服务(SERVICE):将无法归结到实体和值对象的过程或转换封装所成的接口.例如:银行账户导出功能.
它是对于账户实体的操作,但是你将它归属到账户实体会打破实体的封装,
并且不便于领域层的访问,这样就可以将它单独定义为服务接口.
通过模块进行模型分类.
模块(MODULES):它将关联实体,值对象和服务等模型元素聚合到一起,以降低建模和设计的复杂性.