Model-Driven Development
RESEARCH PAPERS
Developing Mobile Applications Via Model Driven Development: A Systematic Literature Review
Mobile app usage is rapidly increasing, but developing mobile apps is challenging due to various dependencies. Model Driven Development (MDD) is a potential approach to simplify and streamline this process. This paper systematically reviewed 55 relevant studies to investigate how MDD techniques have been used in mobile app development. It identified popular approaches, tools, and artifacts, and highlighted the importance of architecture, domain model, and code generation in MDD-based app development. The findings suggest that MDD can improve productivity, scalability, and reliability of mobile apps. However, the study also identified limitations and gaps in current research, and made recommendations for future research. Overall, the paper concludes that MDD has been a steady interest in mobile app development and provides guidance for future researchers and developers to improve app development techniques and deliver more effective apps to end-users.
Model-Driven Development
Model-Driven Development (MDD) is a software development approach that prioritizes the creation and utilization of models throughout the entire development lifecycle. These models are abstract representations of the system's structure, behavior, and requirements. MDD aims to raise the level of abstraction in software development, automate repetitive tasks, and enhance communication among stakeholders.
Key Concepts and Benefits of MDD:
Models as Primary Artifacts: In MDD, models serve as the central source of truth for the software system. They are used to define the system's architecture, data structures, business logic, and user interface.
Code Generation: MDD tools can automatically generate code from the models, reducing the amount of manual coding required and ensuring consistency between the models and the implementation.
Abstraction: Models provide a higher-level view of the system, focusing on the essential concepts and relationships rather than low-level implementation details. This can make the system easier to understand, design, and maintain.
Automation: MDD tools can automate various development tasks, such as code generation, testing, and documentation, which can improve development speed and quality.
Improved Communication: Models can serve as a common language for communication between developers, domain experts, and other stakeholders, facilitating collaboration and reducing misunderstandings.
Different MDD Approaches:
Model-Driven Architecture (MDA): MDA is a standardized approach to MDD that defines specific modeling languages and transformation rules for generating code from models.
Domain-Specific Modeling (DSM): DSM focuses on creating modeling languages tailored to specific domains or problem areas, which can improve the expressiveness and usability of the models.
Low-Code Development Platforms: These platforms utilize visual modeling tools and pre-built components to enable rapid application development with minimal manual coding.
Challenges of MDD:
Learning Curve: MDD requires developers to learn new modeling languages and tools, which can be a barrier to adoption.
Tool Maturity: Not all MDD tools are equally mature or well-supported, and some may have limitations or bugs.
Suitability: MDD is not suitable for all types of projects. It may be most effective for complex systems with well-defined domains and requirements.
Model-Driven Development Approach (using UML):
Domain Modeling: Create a UML class diagram representing the core concepts:
Product
(attributes: name, price, description, image)User
(attributes: name, email, address)Order
(attributes: date, total, status; associated withUser
and multipleProduct
s)Relationships:
User
placesOrder
,Order
containsProduct
s
Behavior Modeling: Use UML sequence diagrams to depict interactions:
User
browsing products, adding to cart, proceeding to checkout.System validating inventory, calculating total, processing payment.
Code Generation: Employ an MDD tool to generate code from these models:
Database schema (tables and relationships) from the class diagram.
Skeleton code for classes and methods based on the models.
Refinement and Customization: Developers add specific business logic, UI styling, and integrations with payment gateways.
Testing: The generated code and customizations are tested as usual.
Tools for MDD:
There are various MDD tools available, both commercial and open-source. Some popular ones include:
Enterprise Architect: A comprehensive UML modeling tool with code generation capabilities.
AndroMDA: Open-source framework specifically for MDA (Model-Driven Architecture).
OpenXava: A low-code platform that uses JPA (Java Persistence API) entities as models.
Mendix: A low-code platform with visual modeling and cloud deployment.
REFERENCES
Books:
Model-Driven Software Engineering in Practice by Marco Brambilla, Jordi Cabot, and Manuel Wimmer. This book provides a comprehensive overview of MDD, covering its concepts, techniques, tools, and applications.
Model-Driven Engineering with Executable UML by Steven Mellor and Marc Balcer. This book focuses on the use of Executable UML (xUML) for MDD, explaining how to create models that can be directly executed for testing and validation.
Domain-Specific Modeling by Steven Kelly and Juha-Pekka Tolvanen. This book explores the creation of domain-specific modeling languages (DSLs), which are tailored to specific problem domains and can improve the expressiveness and usability of models.
Articles and Papers:
Model-Driven Architecture: Vision, Standards, and Emerging Technologies by Jean Bézivin. This paper provides an overview of MDA, a standardized approach to MDD.
Domain-Specific Languages: An Annotated Bibliography by Markus Völter. This bibliography provides a comprehensive overview of research on DSLs, covering their creation, use, and benefits.
Model-Driven Engineering: A Survey of Approaches and Applications by Richard Paige et al. This survey paper provides an overview of different MDD approaches and their application areas.
Websites and Resources:
OMG (Object Management Group): The OMG is a consortium that develops and maintains standards for MDD, including MDA and UML. Their website provides resources and information on these standards.
Eclipse Modeling Project: The Eclipse Modeling Project is a collection of open-source tools and frameworks for MDD, including the Eclipse Modeling Framework (EMF) and the Graphical Modeling Framework (GMF).
Wikipedia - Model-Driven Engineering: The Wikipedia page on Model-Driven Engineering provides a general overview of MDD and its related concepts.