跳过导航链接

程序包 io.github.dddplus.dsl

Reverse modeling DSL: Object-Oriented Domain Model(As-Is -> To-Be) Re-Design without tech constraints.

请参阅: 说明

程序包io.github.dddplus.dsl的说明

Reverse modeling DSL: Object-Oriented Domain Model(As-Is -> To-Be) Re-Design without tech constraints.

背景:好的业务模型不仅对产品架构、开发有重大意义,也能够快速的帮助客户分析管理上的不足、业务处理上的漏洞、不合理需求的悖论等.

目标:提供一套模型描述语言,从代码提炼精粹的业务知识,指导并约束模型和系统演进.

路径:明确业务中关键问题,跨越(架构约束,技术限制)等造成代码难以直观表达模型的问题,面向对象地抽取和修正,形成与正向模型正反馈闭环.

价值:通过逆向工程方法揭示代码实现里体现的核心领域问题,发现essential problems:一方面关联代码实现,一方面关联通用语言.

《架构整洁之道》中的定义:软件架构是指设计软件的人为软件赋予的形状。

DSL标注过程,是无技术约束的OO二次设计的过程,是re-shape your code过程,是architecture discovery过程.

DSL标注过程,是Declarative Programming,而非Imperative Programming,关注描述问题和规则,而非实现步骤.

DSL标注过程,是对当前代码进行声明式编程的二次创作过程,它描述的问题的空间结构,结合版本控制就体现了时间维度.

DSL标注过程,是把领域知识注入代码的过程.

由于代码具有(可运行,包含完全细节,演进过程完整追溯,自我修复)特征,因此成为业务的唯一事实真相;但代码里有太多技术细节产生的业务模型噪音,导致代码里无法直观看到业务真相.

建模 = 图形 + 逻辑 + 现实的抽象,代码(一维的,局部的),而模型(多维立体的,全局的),逆向模型相当于动态的活地图

通过该DSL建立的逆向模型,(业务强相关,代码强相关),它完成了业务与代码双向映射,最终实现(业务模型,代码实现)的持续一致.

Although much of the attention in business engineering is about process, most of these patterns are static type models. I like to think of type models as defining the language of the business. These models thus provide a way of coming up with useful concepts that underlie a great deal of the process modeling. 在面向对象开发过程中很重要的原则:要设计软件,使得软件的结构反映问题的结构。
 DomainModel      -->   CodeImplementation
     ^                        |
     |                        V
 KnowledgeCrunch  <--   ReversedDomainModel
 

另请参阅:
面向对象设计的逆向建模方法和开源工具, Requirements for integrating software architecture and reengineering models, 面向领域驱动设计的逆向建模支持方法, MoDisco
跳过导航链接

Copyright © 2020–2023. All rights reserved.