"Models are the system development primary focus, rather than program code ..."MDD is a model-centric development method, where the software model is the sole defining, driving element of the system design; all other artifacts, code, binary executables, unit tests, documentation etc. are derived from the model. Changes to the system design originate in the model and percolate down through the design hierarchy to code implementation and executable modules.
The flow of development or change is unidirectional; modifications never transition into the model from other artifacts.
The most obvious benefit from this is a single definitive source for the system design ... only the model is referenced when seeking information about system functionality, attributes etc.
What is the difference?
MDA is defined by the OMG [OMG MDA] as "an approach to IT system specification that separates the specification of functionality from the specification of implementation".As described above in the previous section on MDD the model in MDA is the driving force of the system development. In MDA the proposed system is first analysed and specified as a Platform Independent Model (PIM) i.e. it does not possess any information specific to the underlying platform technology that will be used to implement the target system.The PIM is then transformed into a Platform Specific Model (PSM) which includes detailed descriptions and elements specific to the target implementation platform.The MDA approach can therefore be viewed as the OMG's particular vision of MDD, and hence as a subset of MDD. This is represented graphically as shown:
Essentially therefore there is no difference between MDD and MDA, and MDA may be regarded as a "flavour" of MDD.
Note, that we also define a superset to MDD of MDE which encompasses all engineering project processes e.g. requirements management, configuration management, etc.
Generating platform specific artifacts from the model:
If our meticulously crafted models exist purely as documentation, they provide limited value, as they will all too easily (and very likely) diverge rapidly from the reality of the code implementation.There are essentially two ways to generate code from our models:
- Hand craft the code using our models as the defining design reference.
- Auto-generate code from the models.Hand crafting code is satisfactory providing stringent checks and balances are applied to ensure that the produced code accurately reflects the model.Auto-generation is preferable as there can be little or no possibility that the produced code does not faithfully represent the model; as pointed out by Brian Selic in his paper [Ref: 2] "... we can attain MDD's full benefits only when we fully exploit its potential for automation."
AM2D's MDD philosophy:
At AM2D we recognize that not all functionality can be auto-generated, and that certain specialized functions will need to be hand crafted and plugged-in to the auto-generated framework; we take this into account in the tools that we use in our modelling processes and procedures, and ensure that all our MDD projects remain model-centric.Whilst strongly recommending a complete MDD automated code generation approach to our clients, we also recognize that fully integrated auto-generation of code is not suitable or desirable for all organizations; where that is the case we also provide custom adaptation of our MDD approach to incoroporate the hand crafted code generation requirements of your organization whilst maintaining an MDD model-centric development philiosophy.For more information about our MDD/MDA services please contact us: