Model-Driven Software Development: Technology, Engineering, Management

Book description

Model-Driven Software Development (MDSD) is currently a highly regarded development paradigm among developers and researchers. With the advent of OMG's MDA and Microsoft's Software Factories, the MDSD approach has moved to the centre of the programmer's attention, becoming the focus of conferences such as OOPSLA, JAOO and OOP.

MDSD is about using domain-specific languages to create models that express application structure or behaviour in an efficient and domain-specific way. These models are subsequently transformed into executable code by a sequence of model transformations.

This practical guide for software architects and developers is peppered with practical examples and extensive case studies. International experts deliver:

  • A comprehensive overview of MDSD and how it relates to industry standards such as MDA and Software Factories.

  • Technical details on meta modeling, DSL construction, model-to-model and model-to-code transformations, and software architecture.

  • Invaluable insight into the software development process, plus engineering issues such as versioning, testing and product line engineering.

  • Essential management knowledge covering economic and organizational topics, from a global perspective.

Get started and benefit from some practical support along the way!

Table of contents

  1. Cover
  2. Half Title page
  3. Title page
  4. Copyright page
  5. Foreword
  6. Part I: Introduction
    1. Chapter 1: Introduction
      1. 1.1 The Subject of the Book
      2. 1.2 Target Audience
      3. 1.3 The Goals of the Book
      4. 1.4 The Scope of the Book
      5. 1.5 The Structure of the Book and Reader Guidelines
      6. 1.6 The Accompanying Web Site
      7. 1.7 About the Authors
      8. 1.8 About the Cover
      9. 1.9 Acknowledgments
    2. Chapter 2: MDSD – Basic Ideas and Terminology
      1. 2.1 The Challenge
      2. 2.2 The Goals of MDSD
      3. 2.3 The MDSD Approach
      4. 2.4 Basic Terminology
      5. 2.5 Architecture-Centric MDSD
    3. Chapter 3: Case Study: A Typical Web Application
      1. 3.1 Application Development
      2. 3.2 Architecture Development
      3. 3.3 Conclusion and Outlook
    4. Chapter 4: Concept Formation
      1. 4.1 Common MDSD Concepts and Terminology
      2. 4.2 Model-Driven Architecture
      3. 4.3 Architecture-Centric MDSD
      4. 4.4 Generative Programming
      5. 4.5 Software Factories
      6. 4.6 Model-Integrated Computing
      7. 4.7 Language-Oriented Programming
      8. 4.8 Domain-Specific Modeling
    5. Chapter 5: Classification
      1. 5.1 MDSD vs. CASE, 4GL and Wizards
      2. 5.2 MDSD vs. Roundtrip Engineering
      3. 5.3 MDSD and Patterns
      4. 5.4 MDSD and Domain-Driven Design
      5. 5.5 MDSD, Data-Driven Development and Interpreters
      6. 5.6 MDSD and Agile Software Development
  7. Part II: Domain Architectures
    1. Chapter 6: Metamodeling
      1. 6.1 What Is Metamodeling?
      2. 6.2 Metalevels vs. Level of Abstraction
      3. 6.3 MOF and UML
      4. 6.4 Extending UML
      5. 6.5 UML Profiles
      6. 6.6 Metamodeling and OCL
      7. 6.7 Metamodeling: Example 1
      8. 6.8 Metamodeling: Example 2
      9. 6.9 Tool-supported Model Validation
      10. 6.10 Metamodeling and Behavior
      11. 6.11 A More Complex Example
      12. 6.12 Pitfalls in Metamodeling
    2. Chapter 7: MDSD-Capable Target Architectures
      1. 7.1 Software Architecture in the Context of MDSD
      2. 7.2 What Is a Sound Architecture?
      3. 7.3 How Do You Arrive at a Sound Architecture?
      4. 7.4 Building Blocks for Software Architecture
      5. 7.5 Architecture Reference Model
      6. 7.6 Balancing the MDSD Platform
      7. 7.7 Architecture Conformance
      8. 7.8 MDSD and CBD
      9. 7.9 SOA, BPM and MDSD
    3. Chapter 8: Building Domain Architectures
      1. 8.1 DSL Construction
      2. 8.2 General Transformation Architecture
      3. 8.3 Technical Aspects of Building Transformations
      4. 8.4 The Use of Interpreters
    4. Chapter 9: Code Generation Techniques
      1. 9.1 Code Generation – Why?
      2. 9.2 Categorization
      3. 9.3 Generation Techniques
    5. Chapter 10: Model Transformations with QVT
      1. 10.1 History
      2. 10.2 M2M Language Requirements
      3. 10.3 Overall Architecture
      4. 10.4 An Example Transformation
      5. 10.5 The OMG Standardization Process and Tool Availability
      6. 10.6 Assessment
    6. Chapter 11: MDSD Tools: Roles, Architecture, Selection Criteria, and Pointers
      1. 11.1 The Role of Tools in the Development Process
      2. 11.2 Tool Architecture and Selection Criteria
      3. 11.3 Pointers
    7. Chapter 12: The MDA Standard
      1. 12.1 Goals
      2. 12.2 Core Concepts
  8. Part III: Processes and Engineering
    1. Chapter 13: MDSD Process Building Blocks and Best Practices
      1. 13.1 Introduction
      2. 13.2 Separation Between Application and Domain Architecture Development
      3. 13.3 Two-Track Iterative Development
      4. 13.4 Target Architecture Development Process
      5. 13.5 Product-Line Engineering
    2. Chapter 14: Testing
      1. 14.1 Test Types
      2. 14.2 Tests in Model-Driven Application Development
      3. 14.3 Testing the Domain Architecture
    3. Chapter 15: Versioning
      1. 15.1 What Is Versioned?
      2. 15.2 Projects and Dependencies
      3. 15.3 The Structure of Application Projects
      4. 15.4 Version Management and Build Process for Mixed Files
      5. 15.5 Modeling in a Team and Versioning of Partial Models
    4. Chapter 16: Case Study: Embedded Component Infrastructures
      1. 16.1 Overview
      2. 16.2 Product-Line Engineering
      3. 16.3 Modeling
      4. 16.4 Implementation of Components
      5. 16.5 Generator Adaptation
      6. 16.6 Code Generation
    5. Chapter 17: Case Study: An Enterprise System
      1. 17.1 Overview
      2. 17.2 Phase 1: Elaboration
      3. 17.3 Phase 2: Iterate
      4. 17.4 Phase 3: Automate
      5. 17.5 Discussion
  9. Part IV: Management
    1. Chapter 18: Decision Support
      1. 18.1 Business Potential
      2. 18.2 Automation and Reuse
      3. 18.3 Quality
      4. 18.4 Reuse
      5. 18.5 Portability, Changeability
      6. 18.6 Investment and Possible Benefits
      7. 18.7 Critical Questions
      8. 18.8 Conclusion
      9. 18.9 Recommended Reading
    2. Chapter 19: Organizational Aspects
      1. 19.1 Assignment of Roles
      2. 19.2 Team Structure
      3. 19.3 Software Product Development Models
    3. Chapter 20: Adoption Strategies for MDSD
      1. 20.1 Prerequisites
      2. 20.2 Getting Started – MDSD Piloting
      3. 20.3 MDSD Adaptation of Existing Systems
      4. 20.4 Classification of the Software Inventory
      5. 20.5 Build, Buy, or Open Source
      6. 20.6 The Design of a Supply Chain
      7. 20.7 Incremental Evolution of Domain Architectures
      8. 20.8 Risk Management
  10. A: Model Transformation Cod
    1. A.1 Complete QVT Relations alma2db Example
    2. A.2 Complete QVT Operational Mappings alma2db Example
  11. References
  12. Index

Product information

  • Title: Model-Driven Software Development: Technology, Engineering, Management
  • Author(s): Thomas Stahl, Markus Völter, Jorn Bettin, Arno Haase, Simon Helsen, Krzysztof Czarnecki, Bettina von Stockfleth
  • Release date: May 2006
  • Publisher(s): Wiley
  • ISBN: 9780470025703