Bridging the Gap between Rapid Application Development and Quality Analysis and Design – is Model Driven Software Development the Answer?
The pressures of IT projects are such that we need to deliver now. There’s no time to think or do R&D, we’re paid for action! And there’s no better way to show value for money than pointing to the millions of lines of code that your team has created, right?
Yes I’m being facetious to make a point: that in our experience there often isn’t enough importance paid to analysis and design. Solutions need to be sufficiently robust to both business and technology change, unless they are expected to be short-term and throwaway and this can be difficult to achieve if enough attention is not paid to requirements analysis.
Analysis is of course more than just faithfully writing down business and system requirements verbatim. Requirements Analysis is the process of identifying and defining conceptual models which describe and generalize those requirements. And the process also includes challenging requirements and assumptions where necessary, while facilitating communication across levels of the business to ensure consistent understandings. The question is how to allow time for thorough analysis and design while also delivering quality code quickly in an agile environment.
T4Bi believes that Model Driven Software Development (MDD) in certain use cases may be the bridge between rapid application development and care and attention to analysis and design. MDD, at its best, encapsulates the knowledge of your best architects, analysts and developers: their expertise, lessons learned, best practices and standards; allowing for software development life cycles which emphasize reuse and a focus on finding robust and innovative solutions to real business challenges and opportunities.
So what do we mean by “Model Driven Software Development” and how does this relate to “Model Driven Engineering”, “Model Driven Design”, also “Model Driven Architecture”, also “Round-trip engineering”, also “Domain Specific Language”?
For us Model Driven Software Development is the process of developing an n-tier software application starting from visual models of the business and system requirements. We use code generators in the context of an iterative/prototyping software development approach. Generated code must be compile-able, deployable, functionally complete and extensible. Changes to models and re-generation of code must occur without a loss of any custom extensions to previously generated code. This process must occur with full traceability of code versions back to the originating requirements.
This process is “model-driven” as opposed to “round-trip” because custom extensions to code are not bi-directionally applied back into the requirements models. The source models can reside in a modeling repository (like Sparx Enterprise Architect) and/or potentially in an alternate legacy source. (Custom extensions should be linkable back to their originating requirements, and should not be lost or overwritten by re-generation.) The process is intended to be iterative, and to enable analysis and design and development tasks to occur in parallel through effective team collaboration.
With this approach, code generators translate the source metadata (from models) into a common meta-model and then into the target software tiers. The process is initiated by, and usually controlled by, the business and system analyst(s), and sometimes even the business subject matter expert(s). The technical and application architect are focused on defining the patterns for the target architecture (for the code generators).
The source model inputs are generally data models and process models, which can then be further elaborated/extended by the analyst(s) and subject matter expert(s) in the common meta-model, to define business rules, object usages and desired application preferences and behaviours and so on, so that the generators have richer information to draw from and use to select the appropriate design patterns.
Together the code generators and direct input from the analysts and subject matter expert(s) help bridge the gap between rapid application development and quality analysis and design; the analysts are integral to the code generation and are not one step removed and application development is being fast tracked by code generators.
In the next post we will talk little bit more about the benefits of MDD and when it should be used.