Model-driven architecture: Difference between revisions

Content deleted Content added
Disadvantages: Expand; add sources
Line 54:
* Uncertain Value Proposition (UVP): As discussed, the vision of MDA allows for the specification of a system as an abstract model, which may be realized as a concrete implementation (program) for a particular computing platform (e.g. .NET). Thus an application that has been successfully developed via a pure MDA approach could theoretically be ported to a newer release .NET platform (or even a Java platform) in a deterministic manner – although significant questions remain as to real-world practicalities during translation (such as user interface implementation). Whether this capability represents a significant value proposition remains a question for particular adopters. Regardless, adopters of MDA who are seeking value via an "alternative to programming" should be very careful when assessing this approach. The complexity of any given problem ___domain will always remain, and the programming of business logic needs to be undertaken in MDA as with any other approach. The difference with MDA is that the programming language used (e.g. xtUML) is more abstract (than, say, Java or C#) and exists interwoven with traditional UML artifacts (e.g. class diagrams). Whether programming in a language that is more abstract than mainstream [[Third-generation programming language|3GL]] languages will result in systems of better quality, cheaper cost or faster delivery, is a question that has yet to be adequately answered.
* MDA was recognized as a possible way to bring various independently developed standardized solutions together. For the simulation community, it was recommended as a business and industry based alternative to yet another US DoD mandated standard.<ref name=mdasim>[https://arxiv.org/ftp/arxiv/papers/1011/1011.6671.pdf "Avoiding Another Green Elephant"]</ref>
 
== Controversies ==
 
=== Code generation controversy ===
[[Automatic programming|Code generation]] (forward-engineering) from models means that the user abstractly models solutions, which are connoted by some model data, and then an automated tool derives from the models parts or all of the [[source code]] for the software system. In some tools, the user can provide a skeleton of the program source code, in the form of a source code [[Template (programming)|template]] where predefined tokens are then replaced with program source code parts during the code generation process.
 
[[UML]] (if used for MDA) diagrams specification was criticized for lack the detail which is needed to contain the same information as is covered with the program source. Some developers even claim that "the Code ''is'' the design".<ref>http://www.developerdotstar.com/mag/articles/reeves_design_main.html by Jack W. Reeves</ref><ref>{{Cite web |last=Reeves |first=Jack W. |date=1992 |title=What is software engineering |url=http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm |access-date=2023-07-25 |website=www.bleading-edge.com |publisher=C++ Journal}}</ref>
 
== Disadvantages ==
There is a serious risk that the generated code will rapidly differ from the model or that the reverse-engineered model will lose its overview or a mix of these two problems as result of cycled reengineering efforts.<ref>{{Cite web |title=Help - |url=https://www.modeliosoft.com/modelio-help/41/en/index.jsp?topic=/csdesigner-doc/html/Csdesigner_choose_functional_mode_round_trip.html |access-date=2023-07-25 |website=www.modeliosoft.com}}</ref>
 
Regarding behavioral/dynamic part of [[UML]] for featues like [[State diagram|statechart diagram]] there is no equivalent in programming languages and their translation during code-generation will result in common programming statement (.e.g {{Code|if,switch,enum}}) that if edited and imported back may result in different or incomplete model.<ref name=":0">{{Cite web |last=Siegl |first=Daniel |title=Why Round-Trip Engineering does not work {{!}} LieberLieber Modelling Expert |url=https://blog.lieberlieber.com/2015/09/05/why-round-trip-engineering-does-not-work/ |access-date=2023-07-25 |language=en-US}}</ref> The same goes for code snippets used for code generation stage for the pattern-implementation and user-specific logic: intermixed they may not be easily reverse-engineered back.<ref name=":0" />
 
==See also==