Web-based systems have constantly grown in complexity and size that has lead to project delays, poor quality and aborted implementations. Key problematic areas are development, deployment, operation, maintenance and quality of web systems. This has resulted in Web Engineering which helps to address the unique needs and challenges of complex and large Web-based systems development.
One of the processes being used for the development of web based applications is the Model-driven development process. Bran Selic (2006) defines Model Driven Development (MDD) as “a software development approach where models become essential artifacts of the development process, rather than serving an inessential supporting purpose”.
Model-driven development (MDD) is an approach where developers use sophisticated modeling tools to create extensive models quickly, effectively and at minimum cost which they can automatically convert with those tools to reflect the realities of various deployment platforms even before source code is written. A primary example of MDD is the Object Management Group (OMG)’s Model Driven Architecture (MDA) standard. The MDA concept is implemented by a set of tools and standards that can be used within an MDD approach to software development. MDA tools add system specifications at various abstraction levels through auxiliary mapping standards and keep them synchronized. With MDA, you can integrate any modeling language that you use with your domain experts by using the Meta-Object Facility (MOF), thus benefiting from automated model verification and transformation.
MDD addresses the problems inherent in traditional methods in several ways:
- As Modeling language is visual and works at a higher level of abstraction than code, it bridges the gap between efficiency and speed to allow developers to produce quality code quickly with easy maintainability. Using modeling means more transparency in the development process, which can speed up development time, increase communication at different levels and reduces the possible impacts of errors.
- With MDD there is less focus on the coding and detail design for specific platforms and developers can spend more time in accommodating business problems and logical design. Developers can work rapidly in high levels of abstraction without worrying about the underlying details holding their applications together.
- Using MDD, the developer is free to move from database back to code, from code to database, or anywhere in-between. Since most information is stored in the database each piece of information is stored once and accessed and even modified from many different contexts.
- MDD reacts quickly to changing requirements, improves productivity and quality because of improvedcommunication between team members and facilitates early elimination of defects.
Apart from MDD, various techniques have been proposed to increase productivity and reduce time to produce software applications. These include RAD frameworks, Domain specific languages, Agile methodologies etc. Though they seem to be separate initiatives/approaches, great deal of synergy can be achieved through careful application
Agile and MDD: The Agile Manifesto states, in terms of preferences, the following principles:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The key is to reduce the feedback cycle between the generation of an idea (perhaps a requirement or a design strategy) and the realization of that idea.
It is a misconception that agile methodology is not compatible with MDD since it advocates to start construction as quickly as possible. In fact, agility and MDD — if used properly — are very compatible indeed. Agile methods advocate eliminating all activities and documents that are not absolutely required to quickly produce quality code. Full-scale MDD, including full-fledged, model-based code generation, aligns with this “less is more” paradigm. If the model is built correctly that represents the true business and technical requirements then MDD tool can generate reliable code which can enable project teams to start construction very quickly without relying on detailed documentation.
DSL and MDD: Domain-specific languages (DSLs) are special-purpose languages created to solve specific platform or framework functionality (usually repeatable) targeting business application framework. Common examples are HTML, designed for representing the layout of Web pages; SQL, designed for querying and updating databases etc. The essence of a DSL is that it makes a complex (and often recurring) business need easier to implement.
On closer inspection, we can see that model-driven development is exactly a case of the DSL pattern. The model is mode of representation in the domain-specific language, this time a modeling language; the platform is the execution platform for the system under construction; and the integration step is a code generator that transforms the model into code that executes on the platform.
RAD and MDD: RAD (rapid application development) is a concept with which products can be developed faster and of higher quality through:
- Gathering requirements using workshops or focus groups
- Prototyping and early, reiterative user testing of designs
- The re-use of software components
- A rigidly paced schedule that defers design improvements to the next product version
- Less formality in reviews and other team communication
MDD is also based on similar concepts and is used to drive productivity and reduced development time. RAD and MDD clearly overlap each other. Some of the key concepts of MDD e.g., visual modeling, generating code directly from models, involving business stakeholders to generate models etc. can be applied in RAD projects as well.
Tersus : The Tersus visual modeling language makes it easier and faster to develop web applications, and the applications are much easier to maintain. Tersus embraces MDD in the sense that it is fully visual, requires zero coding, and is highly flexible. Tersus simplifies web application development by using a single visual language for defining user interface, client side behavior and server side processing. With Tersus, web application development does not require mastering multiple technologies and the usage of a suite of tools. The Tersus diagrams serve simultaneously as the application’s specifications, implementation and documentation. This eliminates inconsistencies between what the application is supposed to do, what we think it is doing, and what it actually does (Tersus, 2003).
Although Tersus is best suited for developing web applications yet, it cannot be considered as a true Domain specific language. Tersus is still a general programming language and can be used to develop different types of applications. This ranges from large mission critical systems (like enterprise back-office applications) to small tactical solutions (such as a timesheet application). Modeling syntax is not specific to any particular business domain. However, Tersus can be extended and can be made more domain specific. This means mapping the specific (in this case social networking) domain concepts and framework services to modeling elements. Some of them can be seen as the objects in the modeling language while others could be better captured as object properties, relationships, sub-models or links to models in other languages.
Agile Methodologies: Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project. There are many agile development methods; most minimize risk by developing software in short amounts of time. Key agile methods that are suited for MDD are (Ambler, 2002):
- Scrum – is an iterative, incremental process for developing systems. It produces a deployment ready set of functionality at the end of every iteration. It is best for rapidly changing or highly emergent requirements.
- Agile Modeling (AM) – is a collection of best practices, guidelines and frameworks for modeling software that can be applied on a software development project in an effective and light-weight manner. It embraces Modeling as the fundamental to software development and thus can be applied to MDD. AM and MDD have been combined to created Agile MDD (AMDD) that promulgates the creation of minimum models to start the construction process.
- Agile Unified Process (AUP) – is a simplified version of the Rational Unified Process (RUP). It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP. The approach applies agile techniques include test driven development (TDD), Agile Model Driven Development (AMDD).
Conclusion: MDD approach is now supported by software industry and efforts are on to develop tools and frameworks to enhance productivity, improve quality and reduce effort and costs. However, its potential is not fully tapped yet. As the sophistication of tools will increase, it will be very easy to generate fully functional code from models and do iterative development (model-code-model).
Tersus employs MDD concepts and is particularly suited to web development. However, efforts are required to extend Tersus to Domain Specific Social Network language (DSSN). Author recommends usage of Tersus in current development project with the aim to generate repository of recurring patterns, models and interactions. This can then be incorporated within the language to reduce further development efforts.
Author further recommends usage of Scrum, AM and AUP techniques for proposed project.