In the software development world, and due to the journey of transforming from only a developer to architects or engineers, We land on many technical approaches and patterns that help us to make the best solutions from analyzing the problem to delivering and adding features. One of the terms we land today is the MDA which is a software design approach for the development of software systems.
The MDA provides a set of guidelines for putting a specific structure that has been presented as Models.
So the CIM which is the Computational Independent Model retrieves and extracts all possible domain models and business models in intellectual work by analyzing the needs and extracting the solutions for the work in a project architecture. PIM and PSM work together in transforming the architecture models into implementation models, So the Platform Independent Model that has been extracted (Which can be a UML Class diagram or in XML ) is transformed into Platform Specific Model that can be used in this specific programming language or a specific database.
Finally in this Cycle which is the code is been bonded by two paths, one is the code generation from that specific model and the other is generating a model from a code itself.
So the MDA is producing and converting an abstract model for a functional code that runs on machines with some standards which is an architecture of the various model's forms that serves a specific technology.
MDA is needed as a tool for developing, interpreting, comparing, measuring, verifying, and transforming models or metamodels, UML (Unified Modeling Language) is one of the best choices out there. In best practice the MDA should have two models; One is the initial models which are created manually by a domain agent while derived models will be created automatically by specific programs.
Like we said before that MDA supports code generation but there is a cliché here, that the user abstract models are connoted by model data and then an automated tool derives its parts to a source code for the software systems.
Final word, the MDA is defined as getting all needed objects, analyzing them, and converting them from the human understanding level to the machine understanding level.
I hope you enjoy reading my short article, please make a reaction or comment, event mail me for anything that needs to edit and thank you a lot if you reached this level.