You can use Model Driven Architecture (MDA) to define an information system in a platform-independent model and transform that model into artifacts for an IT solution; this page is for developers and modelers evaluating or using MDriven.
Model Driven Architecture (MDA)
Model Driven Architecture (MDA) is the idea that you describe the model for an information system in a platform-independent model (PIM). You can then transform the PIM into artifacts that make up vital parts of the resulting IT solution.
A PIM helps preserve the investment in information design when technology changes. In MDriven, you create the PIM with MDriven Designer. MDriven Designer is available as part of the MDriven design-time Visual Studio plugin and the standalone model-and-execute tool MDriven Turnkey.
Apply a PIM in MDriven
MDriven is geared toward the .NET arena. You can apply a PIM in several parts of an application:
| PIM transformation | Result | Example |
|---|---|---|
| User interface | ViewModels that can be transformed into user controls for different UI architectures | Transform a model into a ViewModel for WPF, ASP.NET, or Angular. |
| Handles | Handles for different UI architectures | Design a Handle for WPF, ASP.NET, or Angular. |
| Code generation | C# code | Transform the PIM into C# code. |
| Database generation | Relational database schemas | Transform the PIM into a schema for SQLServer, Oracle, MySql, or another supported relational database. |
| Server use | An OR-mapper for other PIM-compliant services | Put the PIM to use on a server as an OR-mapper. |
MDA and model-driven development
Model-driven development (MDD) focuses development work on the model as the core definition and template for the artifacts needed in the finished product. In an MDriven workflow, make changes in the model first, then update the code. Handwritten additions to the largely generated domain layer can be kept by using partial classes.
For example, when you change the model, MDriven can apply that change to generated code and update the database schema with its built-in evolve function, using nonintrusive methods as much as possible on the existing database.
