Model driven development (MDD) primarily focuses on developing conceptual models during the Software Development Lifecycle with a secondary emphasis on the code by “shifting from programming to the creation of models and transformations between them” (Shin15, 2019).
Agile focuses on project delivery practises and techniques which manage the effects of change during a project by focusing on the people, communication, collaboration, feedback and working software (Cockburn et al, 200115).
MDD and agile are both concerned about the successful delivery of artefacts during the SDLC.
Incorporating the benefits of agile, which focuses on managing project delivery in the face of change, has been shown to be successful in projects focused on developing models as their primary artefact - where the various agile principles and methodologies have been mapped to their MDD counterparts such as Continuous modelling to Continuous Integration, Test-Driven Modelling to Test Driven Development, Automated batch mode simulation to Automated test regression and other related activities . (Zhang, 200115)
Among other benefits of agile, is its focus on feedback and collaboration which “reduces the cost of moving information between people” and helps reduce the elapsed time between making a decision to seeing the consequences of that decision” (Cockburn et al, 200115) – which can only help make development teams more efficient and models more effective.
MDD and in particular, The Unified Modelling Language (UML) have been shown to be effective in contributing to requirement elicitation, producing “well-defined semantics and an elegant graphic syntax for expressing rich business requirements” (Shin15, 2019).
Furthermore, MDD focuses on design abstractions which helps, “alleviating the complexity of platforms and express domain concepts effectively” (Schmidt, 2006)15, contributing to both the design and analysis phases of the SDLC.
However, one study has shown it less effectiveness in transforming these model to accurate code representations, in particular MDD’s “round-trip engineering” phase which is the synchronization of code and models, “was not perceived as effective or efficient” by the study (Shin15, 2019) and echoes much earlier concerns raised by Schmidt and Ambler in prior years.
That prior study also highlighted the difficulty of defining Object Constraint Language (OCL) expressions, even within relatively simple scenarios and how Query/View/Transformation (QVT) is a relatively complex specification, contributing to perhaps its perceived effectiveness.
Cockburn et al, advocates that agile development “excels in exploratory problem domains” and “high-change environments” and as such the analysis phase is an incremental iterative and dynamic endeavour which might not be “suited for everyone” suggesting there are limitations.
Research has shown that introducing new people “increased defects in new ASD teams” (Agile Software Development) and conversely when they move away, “Lack of knowledge retention” is an increased risk.
This research also identified the accumulation of “technical debt” which is the result from compromises made by technical teams where the “pressure of delivering in short time-boxed iterations cycles made them take short cuts to speed up delivery. (Elbanna et al, 200615)
Both ideas rely on incorporating the problem space into the correct design for working software.