Generative Programming and Active Libraries Krzysztof Czarnecki DaimlerChrysler Research and Technology Software Engineering Lab Ulm, Germany www.generative-programming.org.

Slides:



Advertisements
Similar presentations
Inference without the Engine!. What is EZ-Xpert 3.0? EZ-Xpert is a Rapid Application Development (RAD) environment for creating fast and accurate rule-based.
Advertisements

Workshop: Moderne Softwareentwicklungs-Methoden Teil 1: AOP, MDSOC, GP, IP Teil 2: eXtreme Programming Markus Völter Michael.
Compilers Course 379K, TTH 9:30-11:00 Instructor: Dr. Doron A. Peled Office Hours: Mon 11:00-12:00.
Profiles Construction Eclipse ECESIS Project Construction of Complex UML Profiles UPM ETSI Telecomunicación Ciudad Universitaria s/n Madrid 28040,
Construction process lasts until coding and testing is completed consists of design and implementation reasons for this phase –analysis model is not sufficiently.
Domain Engineering Silvio Romero de Lemos Meira
Main issues: • Why is reuse so difficult • How to realize reuse
Professor John Hosking, Dean of Engineering and Computer Science Models, Modelling, MBSE.
Domain Engineering Arie van Deursen May Software Product Line  Group of products  sharing a common, managed set of features  to satisfy the.
IMS1805 Systems Analysis Topic 3: Doing Analysis (continued from previous weeks)
Framework is l Reusable Code, often domain specific (GUI, Net, Web, etc) l expressed as l a set of classes and l the way objects in those classes collaborate.
Software Frame Simulator (SFS) Technion CS Computer Communications Lab (236340) in cooperation with ECI telecom Uri Ferri & Ynon Cohen January 2007.
Software Reuse Building software from reusable components Objectives
1/18 CS 693/793 Lecture 09 Special Topics in Domain Specific Languages CS 693/793-1C Spring 2004 Mo, We, Fr 10:10 – 11:00 CH 430.
Software Factory Assembling Applications with Models, Patterns, Frameworks and Tools Anna Liu Senior Architect Advisor Microsoft Australia.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Using Microsoft SharePoint to Develop Workflow and Business Process Automation Ted Perrotte National Practice Manager, Quilogy, Microsoft Office SharePoint.
Version Enterprise Architect Redefines Modeling in 2006 An Agile and Scalable modeling solution Provides Full Lifecycle.
Data Structures and Programming.  John Edgar2.
Chapter 1 The Systems Development Environment
Detailed Technical Feature Presentation Background Information The Importance of Software Software Roadblocks Development Environment DSP Development Cycle.
CIT241 Prerequisite Knowledge ◦ Variables ◦ Operators ◦ C++ Syntax ◦ Program Structure ◦ Classes  Basic Structure of a class  Concept of Data Hiding.
Create with SharePoint 2010 Jen Dodd Sr. Solutions Consultant
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
CS 350 Operating Systems & Programming Languages Ethan Race Oren Rasekh Christopher Roberts Christopher Rogers Anthony Simon Benjamin Ramos.
11 Getting Started with C# Chapter Objectives You will be able to: 1. Say in general terms how C# differs from C. 2. Create, compile, and run a.
Chapter 10 Introduction to Components. Process Phases Discussed in This Chapter Requirements Analysis Design Implementation ArchitectureFramework Detailed.
Generative programming & Middleware Farid Hosseini Reza Azimi Feb 6,2003 University of Toronto.
Object-oriented Software Engineering with Reuse Contracts Koen De Hondt, Carine Lucas, Kim Mens, Tom Mens, Patrick Steyaert, Roel Wuyts Programming Technology.
Software Product Families. Generative Programming Main text: Ian Sommerville, Software Engineering, 8 th edition, chapter 18 Additional readings: K. Czarnecki.
A Generative and Model Driven Framework for Automated Software Product Generation Wei Zhao Advisor: Dr. Barrett Bryant Computer and Information Sciences.
1 CSC 427: Data Structures and Algorithm Analysis Fall 2011 See online syllabus (also available through BlueLine): Course goals:
Lecture # 06 Design Principles II
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
UML based dependability modeling, analysis and synthesis Proposers: TU Budapest: A. Pataricza, Gy. Csertán, I. Majzik, D. Varró PDCC Pisa: L. Simoncini,
1 Extending Java And Developing DSLs With Open Source Language Workbench JetBrains MPS Konstantin Solomatov JetBrains Lead Developer for JetBrains MPS.
Top-Down Design and Modular Development
CBD Papers Alexandre Alvaro. Lessons Learned through Six Years of Component-based Development Six years of component-based application development Using.
Aniruddha Chakrabarti
Hyper/J and Concern Manipulation Environment. The need for AOSD tools and development environment AOSD requires a variety of tools Life cycle – support.
1 Presentation and tool by Jason Kealey University of Ottawa CSI5180 Automatic conversion of Use Cases to Use Case Maps.
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
Advanced BioPSE NCRR Dynamic Compilation Joint Session #1: Advanced BioPSE/SCIRun.
1 CSC 222: Computer Programming II Spring 2004 See online syllabus at: Course goals:
Generative Programming. Automated Assembly Lines.
1 CSC 427: Data Structures and Algorithm Analysis Fall 2010 See online syllabus (also available through BlueLine): Course goals:
L8 - March 28, 2006copyright Thomas Pole , all rights reserved 1 Lecture 8: Software Asset Management and Text Ch. 5: Software Factories, (Review)
Component Based SW Development and Domain Engineering 1 Component Based Software Development and Domain Engineering.
INRIA - LaBRICharles Consel Jan-06 1 Domain-Specific Software Engineering Charles Consel Phoenix Research Group LaBRI /INRIA-Futurs January 2006.
DSL Classification October 21-22, 2007 Benoît Langlois / Thales-EPM Consuela-Elena Jitia / Eric Jouenne, Thales Research & Technology The 7th OOPSLA Workshop.
Object Oriented Software Development
Adoption Participants in the adoption group Heiko Kern Parastoo Mohagheghi Manuel Wimmer Juha Pärssinen Juha-Pekka Tolvanen Laurent Safa Sven Braun Gerardo.
AOP-Driven Variability in Software Product Lines Vander Alves, Ayla Dantas, and Paulo Borba Informatics Center – UFPE – Brazil
EMEA Beat Schwegler Architect Microsoft EMEA HQ Ingo Rammer Principal Consultant thinktecture
OOPSLA workshop on Domain-Specific Visual Languages 1 Juha-Pekka Tolvanen, Steven Kelly, Jeff Gray, Kalle Lyytinen.
August 2003 At A Glance The IRC is a platform independent, extensible, and adaptive framework that provides robust, interactive, and distributed control.
Developing Product Line Components Jan Bosch Professor of Software Engineering University of Groningen, Netherlands
Advanced Software Development Karl Lieberherr CSG 260 Fall Semester
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Mechanisms for Requirements Driven Component Selection and Design Automation 최경석.
Page 1 Feature Modeling and Configuration Management Roche Diagnostics, 16 th October 2007 O. Rohlik (ETH Zurich and P&P Software)
Design Patterns: MORE Examples
Design Patterns: Brief Examples
Types for Programs and Proofs
Variability-based model transformation
Chapter 7 –Implementation Issues
On the notion of Variability in Software Product Lines
SE goes software engineering; (practically) managing the Compose
Presentation transcript:

Generative Programming and Active Libraries Krzysztof Czarnecki DaimlerChrysler Research and Technology Software Engineering Lab Ulm, Germany

The Vision zThink & program è“one of a kind” programming zSurvey & assembly ècomponent-based programming zOrder & generate ègenerative programming

Component-Based Programming zExample: Standard Template Library (STL) zAs set of basic, carefully factored data container and algorithm components (minimum redundancy, maximum combinability and reuse) ystack > zProblem of manual assembly in STL yextensive knowledge of implementation detail needed ximplementation components, illegal & optimal configurations ypoor error reporting

Example of an STL Usage Error stl_algo.h: In function ‘void __merge_sort_loop<_List_iterator, foo *, int>(_List_iterator, _List_iterator, foo *, int)’: stl_algo.h:1448: instantiated from ‘__merge_sort_with_buffer, foo *, int>( _List_iterator, foo *, int *)’ stl_algo.h:1485: instantiated from ‘__stable_sort_adaptive< _List_iterator, foo *, int>(_List_iterator, _List_iterator, foo *, int)’ stl_algo.h:1524: instantiated from here stl_algo.h:1377: no match for ‘_List_iterator & -_...

Generative Programming The programmer states what she needs... LIST_GENERATOR ::RET ACCOUNT_GENERATOR ::RET MATRIX_GENERATOR,speed >::RET and gets the desired component!

Active Libraries zThe idea of putting compile-time metacode into domain-specific libraries zActive libraries – in addition to classes and functions – also contain metacode for configuration, generation, optimization, error reporting, debugging and profiling, editing and visualization of code, code refactoring, versioning,... zExtensible programming environments ye.g. Intentional Programming (Microsoft Research)

Extensible Programming Environments L1L1 L2L2 L4L4 L6L6 L5L5 L3L3 EPE 2 EPE 1 EPE = Extensible Programming Environment  L = Active Library (  compilation,  debugging,  rendering,  type-in & editing,  refactoring...) L1L1 L3L3 L2L2 L2L2 L3L3 L5L5 L4L4 L6L6

Active Library for Matrix Computation

Generative Domain Model Problem Space Domain-specific concepts and Features Solution Space Elementary components Maximum combinability Minimum redundancy Configuration Knowledge Illegal feature combinations Default settings Default dependencies Construction rules Optimizations Domain Specific Languages (DSLs) Generators Components + System Family Architecture

System Family Approach zDomain Engineering yanalysis: scoping, common and variable features, feature dependencies (FODA feature diagrams) ydesign: common architecture for the system family domain-specific languages, configuration generators yimplementation: reusable components, domain- specific languages, configuration generators zApplication Engineering yproduction of concrete, highly customized systems and components using the above-mentioned results

Further Information zCzarnecki, Eisenecker: Generative Programming - Methods, Tools, and Applications, Addison- Wesley, 2000 zwww.generative-programming.org zGenerative and Component-Based Software Development (GCSE 2000), October , 2000, Erfurt, Germany,

Industrial Revolution 1826 interchangeable parts successfully introduced by John Hall (after 25 years of unsuccessful attempts!) 1901 assembly lines introduced by Ransom Olds; popularized and refined by Henry Ford in s automated assembly lines first industrial robot installed in 1961 at General Motors; 1970’s advance of microchips

Industrializing Software Production Current practice Searching for and adapting components and manual assembly Generating the needed components and automatic assembly Generative Programming Better composition technologies AOP, SOP, APPC, CFs, etc. Better composition automation active libs, extendible programming environments (e.g. IP), etc. Product-Line Engineering FODA, ODM, etc.

Issues to discuss... zDSL design zcomposability of DSLs

Workshop Issues zIndustrial Experiences: experiences with generative techniques for product lines in industrial settings hard problems in industrial settings that research needs to address organizational and other problems in industrial settings (how to install and successfully run generative technology projects) zProperties and Design of Domain-Specific Languages DSLs: composability of DSLs adaptability and parameterization of DSLs textual vs. GUI DSLs wizards vs. more complex modeling languages zApproaches to generation: classification of different approaches to generation properties of a generator architecture pros and cons of different generative technologies and when to apply which zApproaches to developing generative models: Domain Engineering Jargons experiences and managing the process in industrial settings