Glossary
- Abstract Syntax
- Abstraction
- Behavioral Modeling
- Blended Modeling
- Code Generation
- Concrete Syntax
- Constraints
- Domain-Specific Language (DSL)
- EMF/Ecore
- Executable Model
- Executable UML (xUML)
- Flexible Modeling
- Metamodel
- Meta Object Facility (MOF)
- Metamodeling Language
- Model-Driven Architecture (MDA)
- Model Transformation
- Model Validation
- Model Simulation
- Multi-view Modeling
- Platform-Independent Model (PIM)
- Platform-Specific Model (PSM)
- Positional Notation
- Projectional Editing
- Refactoring
- Refinement
- Round-Trip Engineering
- Syntactic Sugar
- Topological Notation
- Traceability
- Transformation Language
- Unified Modeling Language (UML)
- Viewpoint
- Workbench
- Team & Partners
- Video Tutorials
- Privacy Policy
- Cookie Policy
- Single Page (eg Policy)
- Teaching
- User Guide
- Cloud & Reactiveness
- What’s new
- Higher Visual Capabilities
- Real-time Collaboration
- LSP/GLSP vs. Jjodel
- EMF vs. Jjolde
- Jjodel Cookbool
- Co-Evolution Capabilities in Jjodel, EMF/Sirius, and MetaEdit+
- Where Jjodel is adopted?
- Student Survey
- Roadmap
- JSX for Model Navigation
Menu
- Abstract Syntax
- Abstraction
- Behavioral Modeling
- Blended Modeling
- Code Generation
- Concrete Syntax
- Constraints
- Domain-Specific Language (DSL)
- EMF/Ecore
- Executable Model
- Executable UML (xUML)
- Flexible Modeling
- Metamodel
- Meta Object Facility (MOF)
- Metamodeling Language
- Model-Driven Architecture (MDA)
- Model Transformation
- Model Validation
- Model Simulation
- Multi-view Modeling
- Platform-Independent Model (PIM)
- Platform-Specific Model (PSM)
- Positional Notation
- Projectional Editing
- Refactoring
- Refinement
- Round-Trip Engineering
- Syntactic Sugar
- Topological Notation
- Traceability
- Transformation Language
- Unified Modeling Language (UML)
- Viewpoint
- Workbench
- Team & Partners
- Video Tutorials
- Privacy Policy
- Cookie Policy
- Single Page (eg Policy)
- Teaching
- User Guide
- Cloud & Reactiveness
- What’s new
- Higher Visual Capabilities
- Real-time Collaboration
- LSP/GLSP vs. Jjodel
- EMF vs. Jjolde
- Jjodel Cookbool
- Co-Evolution Capabilities in Jjodel, EMF/Sirius, and MetaEdit+
- Where Jjodel is adopted?
- Student Survey
- Roadmap
- JSX for Model Navigation
Abstraction
Abstraction in Model-Driven Engineering (MDE) refers to the process of reducing complexity by focusing on the essential characteristics of a system while omitting irrelevant details. It allows developers to manage complexity by working at higher levels of abstraction, using models to represent the core aspects of a system without getting bogged down in low-level implementation details.
Key Concepts
- Levels of Abstraction:
- High-Level Abstraction: Involves creating models that capture the fundamental concepts and functionalities of a system. These models are typically platform-independent and focus on what the system does rather than how it is implemented.
- Low-Level Abstraction: Involves more detailed models that specify how the system will be implemented on a particular platform. These models are platform-specific and include technical details necessary for implementation.
- Model Types:
- Platform-Independent Models (PIMs): These models describe the system’s functionality and behavior without reference to specific implementation technologies. They are used to define the business logic and requirements.
- Platform-Specific Models (PSMs): These models add details related to the specific technology or platform on which the system will be implemented. They are derived from PIMs through model transformation processes.
- Executable Models: Models that can be directly executed to simulate or validate the behavior of the system. They bridge the gap between abstract representations and concrete implementations.
- Model Transformation:
- Automated Conversion: Abstraction in MDE often involves transforming high-level models (PIMs) into lower-level models (PSMs) and ultimately into executable code. These transformations are automated by tools, reducing manual coding and ensuring consistency.
- Refinement: The process of adding detail to models in successive stages, moving from abstract to concrete representations. Refinement helps in managing complexity by breaking down development into manageable steps.
- Benefits of Abstraction:
- Manageability: Simplifies the development process by allowing developers to focus on high-level concepts before dealing with technical details.
- Reusability: Promotes the reuse of high-level models across different projects and platforms, enhancing productivity and consistency.
- Flexibility: Facilitates changes and adaptations, as high-level models can be transformed to target different platforms or accommodate new requirements.
- Improved Communication: Enhances communication among stakeholders by using high-level models that are easier to understand and discuss than detailed code.
Historical Context and Examples
- Unified Modeling Language (UML): UML provides a range of diagram types, such as use case diagrams and class diagrams, to represent different levels of abstraction in a system. These diagrams help developers and stakeholders visualize the system architecture and behavior.
- Model-Driven Architecture (MDA): Introduced by the Object Management Group (OMG), MDA emphasizes the use of PIMs and PSMs, promoting the separation of concerns and the automated transformation of models across different levels of abstraction.
- Eclipse Modeling Framework (EMF): EMF uses Ecore to define metamodels and supports model transformations, enabling developers to work at different abstraction levels within the Eclipse environment.
Practical Applications
- System Design: High-level models (PIMs) are used to capture requirements and design the architecture of a system. These models are then transformed into detailed designs (PSMs) and eventually into executable code.
- Domain-Specific Languages (DSLs): DSLs are tailored to specific domains and provide high-level abstractions that simplify the development process within that domain. For example, a DSL for business processes might abstract complex workflow logic into easy-to-understand constructs.
- Software Product Lines: Abstraction is used to define core models that represent common features of a product line. Variations are then derived from these core models to create specific products, allowing for efficient reuse and customization.
Selected Bibliography
- Cabot, J., & Vallecillo, A. (2022). Modeling should be an independent scientific discipline. Software and Systems Modeling, 21(6), 2101-2107
- Bencomo, N., Cabot, J., Chechik, M., Cheng, B. H., Combemale, B., Wąsowski, A., & Zschaler, S. (2024). Abstraction Engineering. arXiv preprint arXiv:2408.14074.