•   Posted in: 
  • Dev
Model Driven Architecture allowed us to specify business models that are independent of platform. MDA works well when there is a defined process for transforming the business model (UML) into code.

Over time platforms and technologies changed, development times shortened and software practices and tools became more agile. Consequently, MDA and UML have declined somewhat.

However, the business model is still a key part of any specification, and the business models themselves are often also agile.

We wanted something that allowed us to enter a business model in Markdown and have it transformed into business and PSM (platform specific model) assets. PSM assets that are based on our architecture and processes.

I enter the spec in Markdown whilst adding tags that mean something to the transformation engine (think UML stereotypes).

In background the system generates UML models, code scaffolds and formatted specification documentation.

So if I write the entity specification:

# Customer (tracked)
Represents a person or organization.
* People must have an NI number
* Organizations must be verified by an admin
## Profile image: image (azure blob) (thumbnail)
## Name: string (!)

Then my transform engine ("my" because it's customizable) sees bullets as business rules (tests), heading 1s as entities, heading 2s as properties and the stuff in brackets as hints on how to generate the code and UI scaffolding.

Similarly use case specifications have their own transforms.

Ultimately the code is the design. This helps me get to "ultimately" faster.