Raising the Level of Development: Models, Architectures, Programs

Similar documents
Model driven Engineering & Model driven Architecture

Computation Independent Model (CIM): Platform Independent Model (PIM): Platform Specific Model (PSM): Implementation Specific Model (ISM):

MDD with OMG Standards MOF, OCL, QVT & Graph Transformations

Model Driven Engineering (MDE)

Small is Beautiful Building a flexible software factory using small DSLs and Small Models

Applying UML Modeling and MDA to Real-Time Software Development

PragmaDev. change request. Emmanuel Gaudin. PragmaDev ITU-T SG17 change request Grimstad June 24,

MDA and Integration of Legacy Systems: An Industrial Case Study

The Eclipse Modeling Framework and MDA Status and Opportunities

All you need are models Anneke Kleppe, Klasse Objecten

challenges in domain-specific modeling raphaël mannadiar august 27, 2009

developer.* The Independent Magazine for Software Professionals

Model Abstraction versus Model to Text Transformation

Role of Executable UML in MDA. Presented by Shahid Alam

MDA Driven xuml Plug-in for JAVA

Modelling in Enterprise Architecture. MSc Business Information Systems

Defining Domain-Specific Modeling Languages

Practical Model-Driven Development with the IBM Software Development Platform

ADT: Eclipse development tools for ATL

Towards 2D Traceability

The Write Once, Deploy N MDA Case Study

MDSE PRINCIPLES. Chapter #2

Science of Computer Programming. Aspect-oriented model-driven skeleton code generation: A graph-based transformation approach

Improving Military Information Technology Through Common Conceptual Models

SCOS-2000 Technical Note

The Unified Modelling Language. Example Diagrams. Notation vs. Methodology. UML and Meta Modelling

New Programming Paradigms

Object Security. Model Driven Security. Ulrich Lang, Rudolf Schreiner. Protection of Resources in Complex Distributed Systems

OMG MDA Implementers Conference. UML 2.0 Support for MDA in Dynamic Models: How Practical is Execution from Behavioral Models?

AADL Graphical Editor Design

Introduction to MDE and Model Transformation

The Model Driven (R)evolution. Richard Mark Soley, Ph.D. Chairman and CEO Object Management Group, Inc.

OMG Workshop MDA. Tool Chains for MDA? Let's consider leaving our tool chains behind us.

FREQUENTLY ASKED QUESTIONS

Automation of Semantic Web based Digital Library using Unified Modeling Language Minal Bhise 1 1

BLU AGE 2009 Edition Agile Model Transformation

Model-Driven Architecture

Review Sources of Architecture. Why Domain-Specific?

Model Driven Architecture

Modellierung operationaler Aspekte von Systemarchitekturen. Master Thesis presentation. October 2005 March Mirko Bleyh - Medieninformatik

Transforming UML Collaborating Statecharts for Verification and Simulation

Describing Computer Languages

ROLE OF OCL AND ITS SUPPORTING TOOLS IN REQUIREMENT SPECIFICATION

Model Driven Development Unified Modeling Language (UML)

NOTES ON OBJECT-ORIENTED MODELING AND DESIGN

Developing in OMG s Model-Driven Architecture

Model Driven Engineering (MDE) and Diagrammatic Predicate Logic (DPL)

What is Software Architecture

First To Market through Translation of Executable UML

Introduction to Eclipse

Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila

An Introduction to Model Driven Engineering (MDE) Bahman Zamani, Ph.D. bahmanzamani.com

Model Driven Engineering

A Metamodel independent approach for Conflict Detection to support distributed development in MDE. Mostafa Pordel A THESIS

Object-Oriented Design

Bachelor of Engineering, IT Thesis

Introduction to Software Engineering 10. Software Architecture

Chapter 6 Architectural Design. Chapter 6 Architectural design

OCL Support in MOF Repositories

FORMALIZED SOFTWARE DEVELOPMENT IN AN INDUSTRIAL ENVIRONMENT

Enabling Component-Based Model Transformations with QVT. Li Dan

Architectural Design

Model Driven Development of Component Centric Applications

10 - Integrated Development Environments

CS 575: Software Design

Integration With the Business Modeler

16 Evaluation Framework for Model-Driven Product Line Engineering Tools

Rational Software White paper

Oliopäivät Modelling Now and in the Future, with Acronyms or without = RSA

CHAPTER 9 DESIGN ENGINEERING. Overview

On the link between Architectural Description Models and Modelica Analyses Models

Chapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design

An Introduction to Software Architecture

Better Stories, Better Languages

CODAGEN TECHNOLOGIES AND MODEL-DRIVEN ARCHITECTURE (MDA)

MDSE USE CASES. Chapter #3

Model Driven Production of Domain-Specific Modeling Tools

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered

A Comparison of the Booch Method and Shlaer-Mellor OOA/RD

Executive Summary. Round Trip Engineering of Space Systems. Change Log. Executive Summary. Visas

Lecture 1. Chapter 6 Architectural design

Unified Modeling Language (UML)

Compositional Model Based Software Development

Introduction to Dependable Systems: Meta-modeling and modeldriven

Executable UML the silver bullet or maybe not Dr. Joel Henry October 22, 2008

Methods for the Development

DEV427 MODEL-DRIVEN DEVELOPMENT USING PowerDesigner. Xiao-Yun WANG PowerDesigner Chief Architect

An Introduction to MDE

An Introduction to Software Architecture

IBM Rational Software Architect

Object Management Group Model Driven Architecture (MDA) MDA Guide rev. 2.0 OMG Document ormsc/

Lecture Notes UML UNIT-II. Subject: OOAD Semester: 8TH Course No: CSE-802

Overview of lectures today and Wednesday

SysML, It s Coming Are You Prepared?

INTRODUCING A MULTIVIEW SOFTWARE ARCHITECTURE PROCESS BY EXAMPLE Ahmad K heir 1, Hala Naja 1 and Mourad Oussalah 2

MDA & Semantic Web Services Integrating SWSF & OWL with ODM

Lecture 13 Introduction to Software Architecture

Domain-Specific Languages Language Workbenches

Dottorato di Ricerca in Informatica. Università di Bologna e Padova. Whole Platform. Riccardo Solmi. March 2005

DS 2009: middleware. David Evans

Transcription:

IBM Software Group Raising the Level of Development: Models, Architectures, Programs Dr. James Rumbaugh IBM Distinguished Engineer Why Is Software Difficult? Business domain and computer have different concepts Applications require lots of details Code requires internal coordination Lots of repetitious code

Bridging the Gap Align Domain specific language at the top Abstract Several layers of models with increasing detail Architect Systematic organization for internal details Automate Use tools to generate code Code-Only Development Deceptively simple Lack of planning leads to trouble Weak architecture Bad decomposition Inconsistent formats and interactions Bad for teamwork Lots of detailed work Brittle for changes

Model Driven Architecture (MDA) Build high-level models Expressed in domain concepts Generate platform-specific code Into specified architectures Using automated tools Based on standards MDA Approach Object Management Group (OMG) initiative Platform Independent Model (PIM) Captures logic of the application Implementation profile Platform Technology decisions Platform Specific Models (PSM) Target multiple platforms Translator incorporates platform knowledge PIM PSM Code

Needed for MDA Problem domain models UML or domain-specific language (DSL) Architecture frameworks Make assumptions about infrastructure Use them to remove details from models Automated tools Modeling tools Repositories Translators Needed for MDA Problem domain models Architecture frameworks Automated tools

UML Build models in UML (Unified Modeling Language) Higher level than programming languages Adapt UML to application domains with profiles Special domain concepts Constraints on the use of general UML constructs UML is still a general-purpose language May be a lot of repetitious details Domain Specific Language (DSL) Syntax and semantics for a particular purpose Reduce conceptual gap Capture business-level content More intuitive syntax Reduce mindless repetition Predefined control and data patterns Eliminate repetitious control specification Generate low-level details

DSL Examples yacc Unix compiler-compiler GUI Builder Visually construct user interface Desktop publishing editor (FrameMaker, Word) See the final output while editing MIDI Music specification language Mathematica Mathematics notation SDL Specification and Description Language (SDL) International Telecommunications Union (ITU) standard Special syntax and logic for telephone systems SDL concepts added to UML 2.0 SDL can be modeled as a UML profile

DSL Styles Declarative Say what to do Avoid control logic Imperative Say how to do it Explicit control logic Hybrid High-level declarative Low-level imperative Aspect Oriented Programming (AOP) Separate different functional aspects Distinct syntax for each aspect Aspects cut across implementation code Examples: Security, persistence, concurrency, logging Translator weaves aspects into code xxxxxxx yyyyyyy zzzzzzz aaaaaa bbbbbb cccccc mmmmm nnnnnnn ooooooo xxxxxxx aaaaaa mmmmm yyyyyyy bbbbbb Cccccc nnnnnnn Ooooooo Zzzzzzz

AOP is a Kind of DSL DSL and AOP depend on good translators Current AOP languages are awkward Too much explicit coordination Expect AOP features from DSL effort Needed for MDA Problem domain models Architecture frameworks Automated tools

Architecture Decomposition into subsystems Topology Interaction rules Data formats Resource management Hooks for future extensions Scaffolding for testing Architecture Framework Framework = reusable architecture pattern Includes: Skeleton execution environment Predefined subsystems and topology Interaction and data rules, formats, interfaces Attachment points for plug-ins Component libraries of useful functionality Sample applications Implementation development environments (IDE) Eclipse,.NET, J2EE

Framework Advantages Enable DSL to eliminate repeated patterns Ensure consistency Excellent for incremental design Enforce design trade-offs Specifying Frameworks UML models Structure models Interaction models Interface models Patterns DSL syntax Code Text descriptions

Other Experience-Based Content Patterns Solution to a common problem Parameters Design, modeling, architecture level Has structure, interaction rules, trade-offs, guidelines Components Module ready to plug in Has UML models, code, text descriptions, keywords Needed for MDA Problem domain models Architecture frameworks Automated tools

Modeling Tools Build models Edit models Apply patterns Organize large models Coordinate among large teams Check for errors and bottlenecks Generate code Load technology and architecture assumptions Trace generated code to model Repositories Standard format Support multiple tools and languages Access and update models MOF (Meta-Object Protocol) XML (Extended Markup Language)

Translation Map from DSL and UML to code Use platform knowledge Optimize code Reformat to match target language Query-View-Transformation (QVT) project to define standard format Translator Requirements Understand source and target syntax Generated code must be efficient enough Plenty of experience building good compilers Support programming language plug-ins Lots of existing code Handle unexpected situations Incremental Maintain traceability Small change to source small change to target

Transformation Styles Partial Full Embedded code in model Built-up transformation Partial Transformation Transform source to code Implementation details are missing Usually only data structures and code outlines Then edit the code manually Gets code stared quickly Finish the job by programming Round-trip transformation possible Maintain traceability links Reverse transformation often ambiguous Difficult to maintain synchronization Quick way to start using models

Full Generation One-way transformation from source to code Generate code with all details Don t touch the generated code Have to anticipate all details in the DSL Compiler Format conversion UML-to-XML Good in tightly defined situations Embedded Code in Model Embed code fragments in the model When DSL is inadequate Generate code from model Insert embedded code into generated code Edit the source model to make changes Regenerate code when needed Keeps the entire specification together Flexible but mixes levels void methoda () { return (a + b); } transitiont1 () { ctr = a--; send (a, b); }

Built-up Transformation Explicitly model the transformation itself Assemble out of smaller pieces Adjust the transformation to change the result Design = building a transformation Source model doesn t change Reuse on many source models Can have multiple transformations Powerful but tricky to build One-way and Two-way Transformation One-way generate source to target Can t modify target code Can insert plug-ins to code No synchronization problems Can add and modify nested code without regeneration Two-way round trip engineering Maintain traceability links Modify source or target Propagate changes to other model Much more difficult to implement

Executable Models Allow execution with partial specification Dummy functions Missing data Unknown decisions Incomplete models execute with less detail May require user guidance Test architecture early Add detail later Executable UML Plain UML is not executable Pick action language (built-in actions too primitive) Select semantic variation points Supply missing execution semantics Tasking, external formats It is still a general-purpose language DSLs may be more expressive for most purposes It may be a useful intermediate format Output of DSL mappings Input to code/platform mappings

Standards Models Architecture frameworks Code plug-ins Encourage an ecology of vendors Big vendors: Large generic tools Small vendors: Niche-specific plug-ins Use plug-ins with generic tools Standards guarantee access to entire market Example: Photoshop filters Status MDA is still early DSLs are still rare but coming Generic frameworks exist Domain frameworks will be developed Transformation technology under development QVT standard Much existing compiler experience MDA will greatly improve software development