Introduction to Generative Software Development



Similar documents
Model-Driven Development and Product Lines: Synergies and Experience

today 1,700 special programming languages used to communicate in over 700 application areas.

Overview of Generative Software Development

Toward Families of QVT DSL and Tool

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools

Comparison of Model-Driven Architecture and Software Factories in the Context of Model-Driven Development

Software Development Kit

The Nature and Importance of a Programming Paradigm

Federated, Generic Configuration Management for Engineering Data

BUSINESS RULES CONCEPTS... 2 BUSINESS RULE ENGINE ARCHITECTURE By using the RETE Algorithm Benefits of RETE Algorithm...

The Need for Service Catalog Design in Cloud Services Development

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

How To Build A Financial Messaging And Enterprise Service Bus (Esb)

Difference Between Model-Driven and Traditional Iterative Software Development

A Multi-layered Domain-specific Language for Stencil Computations

GEDAE TM - A Graphical Programming and Autocode Generation Tool for Signal Processor Applications

Component visualization methods for large legacy software in C/C++

The Intelligent Content Framework

Visualization of C++ Template Metaprograms

Amit Sheth & Ajith Ranabahu, Presented by Mohammad Hossein Danesh

Simplifying the Development of Rules Using Domain Specific Languages in DROOLS

Modeling Turnpike: a Model-Driven Framework for Domain-Specific Software Development *

A Variability Viewpoint for Enterprise Software Systems

Modelling of Enterprise Portals with Domain- Specific Language

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff

Software Development Best Practices

Reusable Knowledge-based Components for Building Software. Applications: A Knowledge Modelling Approach

To introduce software process models To describe three generic process models and when they may be used

Model-Driven Development - From Frontend to Code

Aerospace Software Engineering

Building Service-oriented User Agents using a Software Product Line Approach

Jiří Šebek, Karel Richta. Department of Computer Science and Engineering Praha 2, Czech Republic

Foundations of Model-Driven Software Engineering

zen Platform technical white paper

SOFTWARE TESTING TRAINING COURSES CONTENTS

Making the Most of an Enterprise Architecture Modeling Tool

Development of AUTOSAR Software Components within Model-Based Design

What is a life cycle model?

Evaluating OO-CASE tools: OO research meets practice

Analysis of the Specifics for a Business Rules Engine Based Projects

Run-time Variability Issues in Software Product Lines

Digital Industries Trailblazer Apprenticeship. Software Developer - Occupational Brief

Introduction to Software Paradigms & Procedural Programming Paradigm

Generating Aspect Code from UML Models

Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Building a Flexible Software Factory Using Partial Domain Specific Models

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

How to Build Successful DSL s. Jos Warmer Leendert Versluijs

Introduction. 1.1 Motivation. Chapter 1

FreeForm Designer. Phone: Fax: POB 8792, Natanya, Israel Document2

Microsoft Office System Tip Sheet

Service-Oriented Architectures

Virtualization Reduces the Cost of Supporting Open Industrial Control Systems

Structural Health Monitoring Tools (SHMTools)

Chapter 5. Regression Testing of Web-Components

BCS HIGHER EDUCATION QUALIFICATIONS Level 6 Professional Graduate Diploma in IT. March 2013 EXAMINERS REPORT. Software Engineering 2

MDM as Service Component

Data processing goes big

Getting Embedded C Applications to Market Faster using the Model-Driven Development Technologies of Modeling, Simulation and Code Generation

business transaction information management

Avaya Aura Orchestration Designer

Syntax Check of Embedded SQL in C++ with Proto

Laminar Flow in a Baffled Stirred Mixer

Introduction to Service Oriented Architectures (SOA)

Textual Modeling Languages

Basic Unified Process: A Process for Small and Agile Projects

Esigate Module Documentation

SIF 3: A NEW BEGINNING

INTELLIGENT DEFECT ANALYSIS, FRAMEWORK FOR INTEGRATED DATA MANAGEMENT

Dynamic website development using the Grails Platform. Joshua Davis Senior Architect Cognizant Technology Solutions

Authoring Within a Content Management System. The Content Management Story

Developing the Architectural Framework for SOA Adoption

A Tool Suite for the Generation and Validation of Configurations for Software Availability

Lecture 9: Requirements Modelling

BUSINESS RULES MANAGEMENT AND BPM

Requirements Exchange: From Specification Documents to Models

SERVICE-ORIENTED MODELING FRAMEWORK (SOMF ) SERVICE-ORIENTED SOFTWARE ARCHITECTURE MODEL LANGUAGE SPECIFICATIONS

Table of Contents. CHAPTER 1 Web-Based Systems 1. CHAPTER 2 Web Engineering 12. CHAPTER 3 A Web Engineering Process 24

for Oil & Gas Industry

In: Proceedings of RECPAD th Portuguese Conference on Pattern Recognition June 27th- 28th, 2002 Aveiro, Portugal

Chapter 13: Program Development and Programming Languages

Jos Warmer, Independent

Software Engineering Principles The TriBITS Lifecycle Model. Mike Heroux Ross Bartlett (ORNL) Jim Willenbring (SNL)

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville

jbpm Explained with Simple Use Cases

Transcription:

Introduction to Generative Software Development Krzysztof Czarnecki University of Waterloo czarnecki@acm.org www.generative-programming.org

Goals What is to be achieved? Basic understanding of Generative Programming (GP) Based on first impressions and discussion you should be able to judge what you can benefit from GP How can it be achieved? Overview of the most important steps of GP Demonstration of tools Presentation of case studies Discussion in the plenum 2

Overview Challenges Introduction First Example Further Information 3

Complexity Software systems are engineering in new and demanding application domains Software systems support increasingly complex tasks Requirements concerning functionality and efficiency are constantly growing 4

Quality Software is deployed in life-critical application areas Software malfunction causes economic losses Usability is a major acceptance criterion Users expect a specific quality that is determined by varying criteria 5

Productivity Growing demand for new systems and variants Increase of productivity and development staff cannot close the gap between demand and supply Standard software becomes more and more important, but it cannot be adapted to every specific requirement 6

Maintenance & Legacy Systems Long lifetime of software systems (sometimes 20 years and more) Software must be continuously adapted to new and changing requirements Maintenance of legacy systems absorbs development capacity to a high degree Software systems of today are the legacy of tomorrow! 7

Example "Object Technology" Theory Productivity and quality should increase thanks to reuse Reality Classes are too small as units of reuse Frameworks are sufficiently large as units of reuse, but frameworks from different vendors do not integrate well Design patterns are pieces of reusable knowledge, but they do not exist as executable code 8

Example "Component Technology" Standards and platforms improve interoperability and the distributed execution of components Many components provide a special mode for customization Reusing small components does not have a large impact on software development while large components require high customization efforts 9

One of the Causes... Currently dominating methods and tools are designed for developing single systems 10

Overview Challenges Introduction First Example Further Information 11

Single System Development Focus on analyzing, modeling, and implementing a single system Important goal: decomposition into components, i.e. modularization Individual components are easier to maintain, to replace, and to reuse But, what are the criteria for decomposition? 12

Experiment - Part I 13

Experiment - Part II 14

Exemplar Systems of a Family 15

The "Right" Modules 16

An Additional System 17

Can Cause Surprise! 18

How To Order Systems? By Components Downward arrow on top Large triangle below with its 90 angle at the lower left point By Specification A cat Sitting upright Waiving its tail 19

From Order To Product Creating the order Expert language Form, catalogue By example Processing the order Completion Validation Construction rules Product generation Optimization Assembling elementary, reusable components 20

Generative Software Development is a software family approach automates the creation of family members generate a family member based on a specification in a domain-specific language 21

Domain-Specific Languages (DSLs) Scoped and designed for a specific purpose Domain-specific abstractions Domain-specific concrete syntax Domain-specific error checking Domain-specific optimizations Domain-specific debugging, version control, etc. Many forms possible Text, diagrams, forms, tables, wizards, conventional library, etc. 22

Different Forms of DSLs Configuration tool Library in a programming language Wizard page MainPage () { filename = index.html placeholders { header = fragmentcall { include = Header() } leftnavigation = fragmentcall { include = LeftNavigation(nil) } rightnavigation = fragmentcall { include = RightNavigation() } body = fragment { filename = main/main.html filterelement = body } footer = fragmentcall { include = Footer () } } } Textual DSL Visual DSL 23

Two Processes Domain Engineering Analysis: Domain scoping and defining a set of reusable, configurable requirements for the systems in the domain Design: Developing a common architecture for the systems in the domain and devising a production plan Implementation: Implementing the reusable assets, for example, reusable components, domain-specific languages, generators, a reuse infrastructure, and a production process Application Engineering Producing concrete systems using the reusable assets developed during Domain Engineering. 24

System Family Approach Domain Engineering Application Engineering Domain Knowledge New Requirements Customer Requirements Domain Analysis Requirements Analysis Iterative Process Domain Model Architecture & Production Plan Domain Design Domain Implementation Components, DSLs, Generators, Infrastructure Product Configuration Integration and Test Product Features Product Configuration Product 25

Maturity Levels in Domain Engineering Domain Engineering can be applied at different levels Domain analysis Reference architectures and architectural patterns Design patterns and OO frameworks Components and component frameworks Generation of parts of application code Generative Programming aims at the highest level of automation of application engineering Domain-specific languages and automatic configuration of components 26

Generative Domain Model Problem Space Domain-specific abstractions Specification Mapping Solution Space Implementationoriented abstractions Target platform 27

Transformational View Problem Space Domain-specific language Transformation Solution Space Implementation language 28

Configuration View Problem Space Domain-specific concepts and Features Domain Specific Language(s) Configuration Knowledge Illegal feature combinations Default settings Default dependencies Construction rules Optimizations Generator(s) / product configurators Also: Reflection, Object Factory, Solution Space Elementary components Maximum combinability Minimum redundancy Components + Product-Line Architecture 29

Views And Viewpoints System models are organized into multiple views Different abstraction levels Different parts of a system Different aspects workflow, security, deployment Each view conforms to some viewpoint Defines scope, notation, process, validation Each viewpoint is relevant to some stakeholder 30

Mapping Constellations Chaining of mappings Multiple problem spaces Alternative problem spaces Multiple solution spaces Alternative solution spaces 31

Domain Network Matrix types Linear equation solvers Factorization algorithms Containers Matrix expressions Each subdomain is implemented as a generative domain model Higher order components Jim Neighbors, Draco, 1980 32

Federated Generators Concrete Components DSL Generator Components elementary generic DSL Specification in DSL DSL Generator Components elementary generic DSL Concrete Components Specification in DSL 33

A Technology Projection... is a mapping of the generative domain model onto other software development paradigms, a programming language, several development tools that are combined within one environment or on one platform Meanwhile, several technology projections are available 34

Existing Technology Projections Problem Space Domainspecific concepts and Features Configuration Knowledge Illegal feature combinations Default settings Dependencies Construction rules Optimizations Solution Space Elementary components Maximum combinability Minimum redundancy C++ Template meta-programming Static configuration Language-specific means only Java and JavaBeans Interactive parameterization of JavaBeans Dynamic configuration Language-specific means only Java und AspectJ Using an AspectWeaver Static configuration Separate preprocessing step ANGIE Employment of a frame processor Static configuration Separate preprocessing step XML, TL and Ada 83 Graphically-interactive configuration Static configuration Separate preprocessing step Small Components Usage of an XML configuration file Static and dynamic configuration Separate preprocessing step 35

Many Mapping Technologies to Chose From Template-based code generation TL, Velocity, XVCL, Angie, Metaprogramming C++ Template Metaprogramming, Template Haskell, Transformation systems DMS, Stratego/XT, TXL, Program specialization Tempo, Model transformation ATL, UMLAUT, Product configurators 36

Generating Code From Domain Specific Languages Model Model Application Generated Code Platform Frameworks Platform (a) Model Application Generated Code Platform Platform Frameworks (b) Slide by 2004 Jack Greenfield Application Generated Code Domain Framework Specific Pattern Framework Language Platform Frameworks Platform (c) Model Application Generated Code Platform Platform Frameworks (d) 37

Essential Terms In this presentation Domain Analysis is part of Domain Engineering A product family comprises the variants of a product A product line comprises multiple products that are targeted for a specific group of customers A product line can be based on system families Different uses Domain Analysis precedes Domain Engineering Product family and product line are synonyms 38

Essential Terms Generic "relating to or characteristic of a whole group or class" (Merriam-Webster Online) Solution space technique for developing parameterizable components Generative "having the power or function of generating, originating, producing, or reproducing" (Merriam- Webster Online) System for producing other systems; it comprises problem space, configuration knowledge, and solution space 39

Scope Generative programming can be applied at any level of granularity from individual functions and classes to large software systems Generative programming is not limited to implementing application code, testing, and creating GUIs System family engineering also includes documentation system installation user training maintenance, and many more 40

And Watch Out For These Cats!