Multi-Domain Engineering with Model-Driven Software Development Using Ontological Foundations
Total Page:16
File Type:pdf, Size:1020Kb
HybridMDSD: Multi-Domain Engineering with Model-Driven Software Development using Ontological Foundations Dissertation zur Erlangung des akademischen Grades Doktoringenieur (Dr.-Ing.) vorgelegt an der Technischen Universität Dresden Fakultät Informatik eingereicht von Dipl.-Medien-Inf. Henrik Lochmann geboren am 4. Januar 1981 in Berlin Gutachter: Prof. Dr. rer. nat. habil. Uwe Aßmann, Technische Universität Dresden Associate Professor Kasper Østerbye, IT University of Copenhagen Tag der Verteidigung: 21.12.2009 Dresden, im Februar 2010 Confirmation I confirm that I independently prepared this thesis with the title HybridMDSD: Multi-Domain Engineering with Model-Driven Software Development using Ontological Foundations and that I used only the references and auxiliary means indicated in the thesis. Dresden, February 25, 2010 Dipl.-Medien-Inf. Henrik Lochmann vi Acknowledgments First and foremost a would like to thank my supervisor professor Uwe Aßmann for his motivation, constructive criticism, and his belief in my work. Once he was convinced by the topic, Uwe was a great sparring partner and excellent quality gate. Also, I would like to thank my second reviewer professor Kasper Østerbye, who proved to be very flexible in a tight schedule towards the submission deadline. I thank my employer the SAP AG, which even enabled me to write a PhD thesis in context its PhD programm. As research associate in the german research project feasiPLe and participant in company-internal projects, I got a valuable insight into professional practice and challenges of large scale software engineering. I owe a great debt to my colleagues at SAP, especially Falk Hartmann, Patrick Wustmann, Steffen Göbel, and Kay Kadner, who never let me down when a topic needed to be discussed. A very important source of criticism, constructive comments, and fruitful discussions were the irregular and regular meetings with the colleagues from the chair of software technology at TU Dresden. Their professional competence in diverse areas of technical and non-technical expertise helped a lot to create visions and reveal immature ideas. I thank all of you for your support. Vital parts of this thesis were contributed by the diploma thesis students Matthias Bräuer, Manuel Zabelt, and Christian Hermann, who worked under my supervision. I had a lot of fun in our joint work and publications. I especially thank Matthias for his exemplary accuracy, unrestricted commitment, and brilliant mind, which brought forward the project significantly. Thanks Florian Heidenreich, Björn Larsson, and Karin Fetzer for the invaluable comments on the written text. Your advices revealed logical inconsistencies, complicated verbalization, and inappropriate respresentations, and improved the quality of this thesis significantly. Last but not least, special thanks go to my brother and my parents, who did not get tired in supporting me and always formed an indispensable backbone for my enthusiasm and endurance. Henrik Lochmann Dresden, February 2010 viii Abstract Software development is a complex task. Executable applications comprise a mutlitude of diverse components that are developed with various frameworks, libraries, or communication platforms. The technical complexity in development retains resources, hampers efficient problem solving, and thus increases the overall cost of software production. Another significant challenge in market-driven software engineering is the variety of customer needs. It necessitates a maximum of flexibility in software implementations to facilitate the deployment of different products that are based on one single core. To reduce technical complexity, the paradigm of Model-Driven Software Development (MDSD) facilitates the abstract specification of software based on modeling languages. Corresponding models are used to generate actual programming code without the need for creating manually written, error-prone assets. Modeling languages that are tailored towards a particular domain are called domain-specific languages (DSLs). Domain-specific modeling (DSM) approximates technical solutions with intentional problems and fosters the unfolding of specialized expertise. To cope with feature diversity in applications, the Software Product Line Engineering (SPLE) community provides means for the management of variability in software products, such as feature models and appropriate tools for mapping features to implementation assets. Model-driven development, domain-specific modeling, and the dedicated management of vari- ability in SPLE are vital for the success of software enterprises. Yet, these paradigms exist in isolation and need to be integrated in order to exhaust the advantages of every single approach. In this thesis, we propose a way to do so. We introduce the paradigm of Multi-Domain Engineering (MDE) which means model-driven development with multiple domain-specific languages in variability-intensive scenarios. MDE strongly emphasize the advantages of MDSD with multiple DSLs as a neccessity for efficiency in software development and treats the paradigm of SPLE as indispensable means to achieve a maximum degree of reuse and flexibility. We present HybridMDSD as our solution approach to implement the MDE paradigm. The core idea of HybidMDSD is to capture the semantics of particular DSLs based on properly defined semantics for software models contained in a central upper ontology. Then, the result- ing semantic foundation can be used to establish references between arbitrary domain-specific models (DSMs) and sophisticated instance level reasoning ensures integrity and allows to handle partiucular change adaptation scenarios. Moreover, we present an approach to automatically generate composition code that integrates generated assets from separate DSLs. All necessary development tasks are arranged in a comprehensive development process. Finally, we validate the introduced approach with a profound prototypical implementation and an industrial-scale case study. x Contents 1 Introduction 1 1.1 Motivation ....................................... 1 1.2 Scope .......................................... 2 1.3 Contributions...................................... 3 1.3.1 Ontology for Software Models......................... 3 1.3.2 Composition Automation ........................... 3 1.3.3 Development Process for Multi-DSL Development ............. 3 1.3.4 Comprehensive Case Study .......................... 3 1.4 Organization ...................................... 3 1.4.1 Formatting Conventions............................ 4 1.4.2 Outline ..................................... 4 2 Background 5 2.1 Model-Driven Software Development......................... 5 2.1.1 Overview .................................... 5 2.1.2 Metamodeling.................................. 5 2.1.2.1 Models ................................ 6 2.1.2.2 Metamodels.............................. 6 2.1.2.3 MOF Metadata Architecture.................... 7 2.1.2.4 Model Transformations ....................... 8 2.1.2.5 Modeling Workbenches ....................... 11 2.1.3 Platform Abstraction and Model Application................ 12 2.1.3.1 What is a Platform?......................... 12 2.1.3.2 MDA Abstraction Layers...................... 13 2.1.3.3 Generation and Interpretation ................... 13 2.2 Domain-Specific Modeling............................... 15 2.2.1 Overview .................................... 15 2.2.2 Domain-Specific Languages .......................... 15 2.2.3 Development with Multiple DSLs....................... 16 2.2.3.1 Interpretive Systems......................... 17 2.2.3.2 Generative Systems ......................... 18 2.3 Software Product Line Enginering .......................... 19 2.3.1 Overview .................................... 19 2.3.2 Development Elements............................. 19 2.3.2.1 Problem Space............................ 19 xii 2.3.2.2 Solution Space............................ 21 2.3.3 Development Stages .............................. 21 2.3.3.1 Domain Engineering......................... 21 2.3.3.2 Application Engineering....................... 21 2.4 Ontologies and the Semantic Web........................... 22 2.4.1 Ontologies.................................... 22 2.4.1.1 Important Terms........................... 22 2.4.1.2 Ontology Hierarchy ......................... 24 2.4.2 Semantic Web.................................. 25 2.4.2.1 Formats and Languages....................... 25 2.4.2.2 Entities and Visualization...................... 26 2.4.3 Reasoning, Description Logics, and Rules .................. 27 2.4.3.1 Description Logics Reasoning.................... 28 2.4.3.2 Rule Reasoning............................ 28 3 Problem Analysis and Vision Outline 31 3.1 Motivational Example ................................. 31 3.2 Efficiency in Software Production........................... 34 3.2.1 Complexity and Knowledge Representation ................. 34 3.2.1.1 Complex Software Development .................. 34 3.2.1.2 Deficient Knowledge Representation................ 35 3.2.2 Variety of Customer Needs .......................... 35 3.2.2.1 Restricted Requirement Formalization............... 35 3.2.2.2 Restricted Product Customization................. 36 3.2.3 Summary .................................... 36 3.3 Vision Outline ..................................... 37 3.3.1 Goals and Technologies ............................ 37 3.3.2 Multi-Domain Engineering........................... 38 3.4 Essential Requirements................................. 41 3.4.1 Language Design...............................