Model-driven software engineering has been around since mid-90s. The launch of Object Management Group’s (OMG) Model Driven Architecture (MDA), in 2000 generated widespread interest in this field.
Modeling has added a whole new dimension to the realm of software engineering. MDA is all about moving beyond the shackles of technologies and platforms. It is about being able to design platforms and solutions for several industries like banking & finance, retail, healthcare and many more.
Being closer to the problem domain, model driven development (MDD) presents a more intuitive mechanism for domain experts to specify requirements for a particular problem that a model’s architecture aims to solve. Moreover, as MDA and MDD revolve around abstraction, they help reduce the complexity in understanding a problem, and thus, better implementation. Model-based code generators can be made to encode best coding practices and standards so as to deliver uniformly high code quality in a person-independent manner.
This is where MDA/MDD is at, today.
Now these abstraction level, platform & technology independent models that allow for greater code reviews, even manually, have to solve problems for several domains. So there is a growing need for these purposive models to be extremely intuitive; and the domains are ever-expanding. Not only is it difficult for a universal modeling language to cater to all possible domains, but also hard to create one such language to solve all such purposes. Therefore, multiplicity of modeling languages is a reality.
There is also a need for a modeling language that solves a problem for a domain, to be linked to others that solve separate concerns in that domain. This calls for a common language capable of defining all possible modeling languages of interest. It, in turn, means as many diagramming notations, as there are modeling languages, and a need for a language to define all of those possible for a particular model.
As a result, software development gets transformed into a language engineering endeavor focusing on defining the most intuitive and expressive modeling language(s) for a given purpose and the necessary execution machinery.The key point to note is that there is more to models than just code generation.
The focus of the modeling community as regards software-intensive systems for enterprises has so far been restricted to achieve platform independence and uniform code quality through model-based code generation. As a result, what gets modeled is an abstract description of the desired implementation of an application. Details on design strategies, implementation architecture and technology platform are then filled in to arrive at a desired implementation, through code generation. These models also need to reflect the dynamics of a domain, and its problem(s) being worked upon.
However, support available there in terms of analyzers, debuggers, profilers, etc. is missing. A higher level of abstraction makes these shortcomings even more striking in case of model driven development.
An ever-increasing penetration of the Internet and rapid advancement of technology lead to increasingly dynamic enterprises. Enterprise IT systems need to be agile in adapting to changes in their operating environment. For instance, business applications need to conform to every new regulatory compliance such as Sarbanes-Oxley, HiPAA, etc; global banks need to cater to developing economies; insurance companies need to introduce right-fit products from time to time; a financial services organization decides to cut down total IT cost through infrastructure virtualization; and so on.
Only a few of these changes are crisply evident, e.g. Sarbanes-Oxley compliance. A majority of them need deep understanding of the current state of enterprise IT systems and analysis capability to decide what change to introduce where and when. Only after deciding what needs to be done, comes the how.
The modeling community has so far focused solely on building the right kind of business applications from their high level specifications – a subset of how. The harder problem of identifying what change needs to be introduced where and what would be the likely benefits of this adaptation is largely ignored.
Models should help capture core properties such as ‘Every credit entry must have a debit entry’ in double book accounting. Then they can be analyzed for their properties. The ability to come up with the right models and analyzing them for properties of interest could provide a better handle on identifying what needs to change where. Simulation capability of models could help get a more realistic feel of likely benefits. Thus, the use of models and model-based techniques can bring more certainty to hard problems such as enterprise transformation2.
If you are attending MODELS 2013, be a part of my workshop AMINO-TowArds the Model DrIveN Organization, that addresses this. I will share updates from the workshop and conference here. You can also follow the conversation on @TCS_News and @MODELS2013 (#SeekAMINO).
1. VinayKulkarni, R. Venkatesh, Sreedhar Reddy: Generating Enterprise Applications from Models. OOIS Workshops 2002:270-279.
2. W B Rouse.Enterprise Transformation: understanding and enabling fundamental change. John Wiley and sons. 2006.
Vinay Kulkarni, Chief Scientist, TRDDC, Pune
Vinay is a Chief Scientist at Tata Consultancy Services. His research interests include model-driven software engineering, self-adaptive systems, and enterprise modeling. His work in model-driven software engineering has led to a toolset that has been used to deliver several large business-critical systems over the past 15 years. Much of this work has found way into OMG standards, three of which Vinay contributed to in a leadership role. Vinay has several patents to his credit, and has authored several papers in scholastic journals and conferences worldwide. A Visiting Professor at Middlesex University, London, Vinay serves on several program committees of international conferences. An alumnus of Indian Institute of Technology Madras, he can be reached at Tata Research Development and Design Centre, Pune, India.