System Design: Architectures and Archetypes. Stephen J. Mellor Project Technology, Inc.

Similar documents
Computer Science Introductory Course MSc - Introduction to Java

Design Patterns for Metamodel Design

Homework 3 COMS 4705 Fall 2017 Prof. Kathleen McKeown

Paths Toward CAD and GIS Interoperability

Designing and Evaluating Generic Ontologies

SDS developer guide. Develop distributed and parallel applications in Java. Nathanaël Cottin. version

ECEN 651: Microprogrammed Control of Digital Systems Department of Electrical and Computer Engineering Texas A&M University

Towards a traceability framework for model transformations in Kermeta

Introduction to Computer Programming

Special Nodes for Interface

Material Covered on the Final

CSE370: Introduction to Digital Design

Clock-driven scheduling

Administrivia. Course Objectives. Overview. Lecture Notes Week markem/cs333/ 2. Staff. 3. Prerequisites. 4. Grading. 1. Theory and application

An Indian Journal FULL PAPER ABSTRACT KEYWORDS. Trade Science Inc.

An object-oriented design process. Weather system description. Layered architecture. Process stages. System context and models of use

Outline. PeerSim: Informal introduction. Resources. What is PeerSim? Alberto Montresor Gianluca Ciccarelli

Information System Desig

OBEUS. (Object-Based Environment for Urban Simulation) Shareware Version. Itzhak Benenson 1,2, Slava Birfur 1, Vlad Kharbash 1

ECE 448 Lecture 6. Finite State Machines. State Diagrams, State Tables, Algorithmic State Machine (ASM) Charts, and VHDL Code. George Mason University

Enrico Nardelli Logic Circuits and Computer Architecture

The Midterm Exam. Hsuan-Tien Lin. Department of CSIE, NTU. OOP Class, April 26-27, 2010

31 Dec '01 07 Jan '02 14 Jan '02 21 Jan '02 28 Jan '02 M T W T F S S M T W T F S S M T W T F S S M T W T F S S M T W T F S S

Lists, Stacks, and Queues (plus Priority Queues)

Real-Time Scheduling. Real Time Operating Systems and Middleware. Luca Abeni

Trivadis Integration Blueprint V0.1

Predicting English keywords from Java Bytecodes using Machine Learning

Basic Java OOP 10/12/2015. Department of Computer Science & Information Engineering. National Taiwan University

Agile modeling for INF5150

CSE 140 Lecture 11 Standard Combinational Modules. CK Cheng and Diba Mirza CSE Dept. UC San Diego

Lecture 05: High-Level Design with SysML. An Introduction to SysML. Where are we? What is a model? The Unified Modeling Language (UML)

DARN: A Matrix Manipulation Language

Lecture 4: Process Management

The Underlying Semantics of Transition Systems

Enumeration and generation of all constitutional alkane isomers of methane to icosane using recursive generation and a modified Morgan s algorithm

Lecture 13. Real-Time Scheduling. Daniel Kästner AbsInt GmbH 2013

Information System Design IT60105

Geodatabase Best Practices. Dave Crawford Erik Hoel

Embedded Systems Development

Introduction. An Introduction to Algorithms and Data Structures

7 RC Simulates RA. Lemma: For every RA expression E(A 1... A k ) there exists a DRC formula F with F V (F ) = {A 1,..., A k } and

Measuring Goodness of an Algorithm. Asymptotic Analysis of Algorithms. Measuring Efficiency of an Algorithm. Algorithm and Data Structure

Rigorous Development in UML

EDA045F: Program Analysis LECTURE 10: TYPES 1. Christoph Reichenbach

Finding the Root Cause Of Process Upsets

Knowledge representation DATA INFORMATION KNOWLEDGE WISDOM. Figure Relation ship between data, information knowledge and wisdom.

Equalities and Uninterpreted Functions. Chapter 3. Decision Procedures. An Algorithmic Point of View. Revision 1.0

1 Descriptions of Function

GENERALIZATION IN THE NEW GENERATION OF GIS. Dan Lee ESRI, Inc. 380 New York Street Redlands, CA USA Fax:

Geostatistics and Spatial Scales

Formal Conformance Testing 2006

Introductory MPI June 2008

A BOUNDARY NOTATION FOR VISUAL MATHEMATICS Jeffrey James and William Bricken September Published in IEEE Visual Languages'92 ABSTRACT

Digital Design. Register Transfer Specification And Design

Deductive Verification

Database Theory VU , SS Complexity of Query Evaluation. Reinhard Pichler

Designing Information Devices and Systems I Spring 2018 Lecture Notes Note Introduction to Linear Algebra the EECS Way

Factory method - Increasing the reusability at the cost of understandability

Dynamic Noninterference Analysis Using Context Sensitive Static Analyses. Gurvan Le Guernic July 14, 2007

Clojure Concurrency Constructs, Part Two. CSCI 5828: Foundations of Software Engineering Lecture 13 10/07/2014

Engineering for Compatibility

CSCI-564 Advanced Computer Architecture

NCU EE -- DSP VLSI Design. Tsung-Han Tsai 1

Meta-Networks. Multi-Dimensional Real World Objects for the Next Generation Transportation Geography. March 2004

Causality Interfaces and Compositional Causality Analysis

Compile-Time Analysis and Specialization of Clocks in Concurrent Programs

FACULTY OF SCIENCE ACADEMY OF COMPUTER SCIENCE AND SOFTWARE ENGINEERING OBJECT ORIENTED PROGRAMMING DATE 07/2014 SESSION 8:00-10:00

Project Plan for the City of Philadelphia Pole and Pole Attachment Geodatabase Design Project

RT 24 - Architecture, Modeling & Simulation, and Software Design

Improved Algorithms for Module Extraction and Atomic Decomposition

Declarative Computation Model. Conditional. Case statement. Procedure values (2) Procedure values. Sequential declarative computation model

Syntax Analysis Part I

Chapter 2. Assertions. An Introduction to Separation Logic c 2011 John C. Reynolds February 3, 2011

Syntax Analysis Part I

Computational complexity theory

DATA SOURCES AND INPUT IN GIS. By Prof. A. Balasubramanian Centre for Advanced Studies in Earth Science, University of Mysore, Mysore

Mark Redekopp, All rights reserved. Lecture 1 Slides. Intro Number Systems Logic Functions

Designing Information Devices and Systems I Fall 2018 Lecture Notes Note Introduction to Linear Algebra the EECS Way

Robust Programs with Filtered Iterators

UML Model Refactoring

Programming Language Concepts, CS2104 Lecture 3

Table of Content. Chapter 11 Dedicated Microprocessors Page 1 of 25

an efficient procedure for the decision problem. We illustrate this phenomenon for the Satisfiability problem.

The STATEMATE Semantics of Statecharts. Presentation by: John Finn October 5, by David Harel

Project Charter. $58,000 See attached budget report. shapefile to track poles and pole attachments. Poles are defined as a support structure on

The Fundamental Insight

import java. u t i l. ;... Scanner sc = new Scanner ( System. in ) ;

4D information management system for road maintenance using GIS

ECE 3401 Lecture 23. Pipeline Design. State Table for 2-Cycle Instructions. Control Unit. ISA: Instruction Specifications (for reference)

Efficient Notification Ordering for Geo-Distributed Pub/Sub Systems

Antonio Falabella. 3 rd nternational Summer School on INtelligent Signal Processing for FrontIEr Research and Industry, September 2015, Hamburg

Causal Block Diagrams: Compiler to LaTeX and DEVS

11 Parallel programming models

/home/thierry/columbia/msongsdb/tutorials/tutorial4/tutorial4.py January 25,

Model-Driven Migration of Scientific Legacy Systems to Service-Oriented Architectures

Introduction to lambda calculus Part 2

MiniMat: Matrix Language in OCaml LLVM

Examining Mono-Polarity Bit Sequences in the Controller Area Network Specification

Plan for Today and Beginning Next week (Lexical Analysis)

Axiomatic Semantics. Stansifer Ch 2.4, Ch. 9 Winskel Ch.6 Slonneger and Kurtz Ch. 11 CSE

Transcription:

System Design: Architectures and Archetypes Stephen J. Mellor Project Technology, Inc. http://www.projtech.com

Properties Executable UML models Separation of application from architecture Translation according to rules Code for the System

What s in the Architecture? The architecture comprises: an execution engine plus a set of archetypes. Execution Engine Archetypes

Archetypes Archetypes define the rules for translating the application into a particular implementation..function Class Class ${Class.name} : public ActiveInstance { private:.invoke PrivateDataMember( Class ) }; placeholder introduced by ${...} text (which happens to be C++).Function PrivateDataMember( inst_ref class ).select many PDMs from instances of Attribute related to Class.for each PDM in PDMs ${PDM.Type} ${PDM.Name};.endfor

Application-Independent Software Architecture The software architecture is independent of the semantics of the application. This offers: reuse of the architecture faster performance tuning faster integration faster, cheaper retargeting centralized diagnostics and instrumentation centralized error-detection and recovery specialization of skills

Table of Contents Executable Domain Models Model Execution Model Capture Archetype Language A Direct Translation An Indirect Translation Model-Driven Architecture

Executable Domain Models

Class Diagram Abstract classes based on both: data, and behavior Recipe Batch Temperature Ramp Recipe Name {I} Cooking Time Cooking Temp. Heating Rate R2 Batch ID {I} Amount of Batch Recipe Name {R2} Status R4 Ramp ID {I} Batch ID {R4} Start Temperature Start Time End Temperature End Time Status

Lifecycles Build a lifecycle model for each class. Do Temp. Ramp( Batch ID, End Time, End Temp ) Creating Start Controlling ( Ramp ID ) Timer Expired ( Ramp ID ) Controlling Temp. Ramp Complete( Ramp ID ) Lifecycle for Temperature Ramp Complete Ended( Ramp ID )

Actions Specify the logic for each state s action. Do Temp. Ramp( Batch ID, End Time, End Temp ) Creating Start Controlling ( Ramp ID ) Creating Entry/ Create TempertaureRamp with BatchID, EndTime, EndTemp Assign CurrentTime to Self.StartTime; Assign Self -> [R4] CookingTank.ActualTemp to Self.StartTemp; Generate StartControlling (Ramp ID );

Action Semantics The action semantics should: not over-constrain sequencing i.e concurrency & data flow separate computations from data access to make decisions about data access without affecting algorithm specification manipulate only UML elements to restrict the generality and so make a specification language Creating Entry/ Create TempertaureRamp with BatchID, EndTime, EndTemp Assign CurrentTime to Self.StartTime; Assign Self -> [R4] CookingTank.ActualTemp to Self.StartTemp;

An Executable Model Batch Temperature Ramp Batch ID {I} Amount of Batch Reci pe Name {R2} Status R4 Ramp ID {I} Batch ID {R4} Start Temperature Start Time End Temperature End Time Status Do Temp. Ramp( Batch ID, End Time, End Temp ) Creating Start Controlling ( Ramp ID ) Controlling Lifecycle for Temperature Ramp Action for Creating Temp. Ramp Complete( Ramp ID ) Creating Complete Ended( Ramp ID ) Entry/ Create TempertaureRamp with BatchID, EndTime, EndTemp Assign CurrentTime to Self.StartTime; Assign Self -> [R4] CookingTank. ActualTemp to Self.StartTemp; Generate StartControlling (Ramp ID );

Model Execution

Instances An executable model operates on data about instances. Recipe Recipe Name {I} Batch Cooking Time Cooking Temperature Batch ID {I} Heating Rate Amount of Batch Recipe Name {R2} Status Recipe Name Cooking Time Recipe Cooking Temp Heating Rate Nylon 23 200 2.23 Kevlar 45 Batch 250 4.69 StuffBatch ID67Amount of 280 Recipe 1.82 Status Batch Name 1 100 Nylon Filling 2 127 Kevlar Emptying 3 93 Nylon Filling 4 123 Stuff Cooking

Instances An executable model operates on instances. Create Batch( Amount of Batch, Recipe Name) Filling Filled( Batch ID ) Create Batch( Amount of Batch, Recipe Name) Cooking Filling Temperature Ramp Complete( Batch ID ) Create Batch( Amount Filled( of Batch, Batch ID ) Emptying Recipe Name) Filling Cooking Emptied( Batch ID ) Temperature Ramp Complete( Batch ID ) Create Batch( Amount Filled( of Batch, Batch ID ) Filled( Batch ID ) Recipe Name) Emptying Filling Cooking Filled( Batch ID ) Emptied( Batch ID ) Temperature Ramp Complete( Batch ID ) Cooking Emptying Batch Batch 4 Temperature Ramp Complete( Batch ID ) Emptying Emptied( Batch ID ) Emptied( Batch ID ) Batch 1 Batch 2 Batch ID {I} Amount of Batch Recipe Name {R2} Status

Execution The lifecycle model prescribes execution. Batch ID Amount of Batch Batch Recipe Name Status 1 100 Nylon Filling 2 127 Kevlar Emptying 3 93 Nylon Filling 4 123 Stuff Cooking When the Temperature Ramp is complete, the instance moves to the next state...and executes actions. Create Batch( PROJECT Amount TECHNOLOGY, of Batch, INC. Recipe Name) Filling Filled( Batch ID ) Cooking Temperature Ramp Complete( Batch ID ) Emptying Emptied( Batch ID ) Batch 2 Create Batch( Amount Filled( of Batch, Batch ID ) Recipe Name) Filling Filled( Batch ID ) Cooking Temperature Ramp Complete( Batch ID ) Emptying Emptied( Batch ID ) Batch 2

Pre-existing Instances Some instances exist before the model begins to execute... Recipe Batch Temperature Ramp Recipe Name {I} Cooking Time Cooking Temperature Heating Rate Pre-existing R2 Batch ID {I} Amount of Batch Recipe Name {R2} Status R4 Created during execution Ramp ID {I} Batch ID {R4} Start Temperature Start Time End Temperature End Time Status

Executing the Model The model executes in response to signals from: the outside, other instances as they execute timers Create Batch( Amount of Batch, Recipe Name) Filling Filled( Batch ID ) Cooking Temperature Ramp Complete( Batch ID ) Emptying Emptied( Batch ID ) Batch 2

Model Database Each schema has a corresponding database for instances. Recipe Recipe Name {I} Batch Cooking Time Cooking Temperature Batch ID {I} Heating Rate Amount of Batch Recipe Name {R2} Status Model Schema Recipe Name Cooking Time Recipe Cooking Temp Heating Rate Nylon 23 200 2.23 Kevlar 45 Batch 250 4.69 StuffBatch ID67Amount of 280 Recipe 1.82 Status Batch Name 1 100 Nylon Filling 2 127 Kevlar Emptying 3 93 Nylon Filling 4 123 Stuff Cooking Model Database

Model Capture

Model Repository Capture the model in a model repository. )LOOLQJ &RRNLQJ What is the structure ofthe repository? (PSW\LQJ

Model Structure A meta-model defines the structure of the repository. Attribute Class State Chart Attr ID {I} Class ID {I, R12} Name Type R12 0..* 1 Class ID {I} Name Description R13 1 0..1 Class ID {I, R13} Name R14 1 1..* State Class ID {I, R14} State Number {I} Name

Model Structure A meta-model defines the structure of the repository. R27 1 State Class ID {I, R14} State Number {I} Name R22 1..* 1..* Signal Event Event ID {I} Name 1 1 Action Group R23 State Event Matrix Entry Class ID {I, R27} State Number {I, 27} 1..* Class ID {I, R22} State Number {I, R22} Event ID {I, R22} New State {R23}

Model Structure A meta-model defines the structure of the repository. Action Group Class ID {I} State Number {I} R34 1 1..* Action Class ID {I, R34} State Number {I, R34} Action ID {I} Signal Generator Event Name {I} Supplemental Data Computation Computation ID {I} Expression Data Accessor Accessor ID {I, R13} Class Name Selector Expression

Meta-Model Instances Just like an application model, the meta-model has instances. Create Batch( Amount of Batch, Recipe Name) Filling Filled( Batch ID ) Cooking Temperature Ramp Complete( Batch ID ) Emptying Emptied( Batch ID ) Class Class ID Name Descr'n 100 Recipe... 101 Batch... 102 Temp Ramp... State Class ID State # Name 101 1 Filling 101 2 Cooking 101 3 Emptying 102 1... 102 2... 102......

Recipe Model Schema Recipe Name {I} Cooking Time Batch Cooking Temperature Heating Rate Batch ID {I} Amount of Batch Recipe Name {R2} Status Recipe Name Cooking Time Recipe Cooking Temp Heating Rate Nylon 23 200 2.23 Kevlar 45 250 4.69 Batch Stuff 67 280 1.82 Batch ID Amount of Recipe Status Batch Name 1 100 Nylon Filling 2 127 Kevlar Emptying 3 93 Nylon Filling 4 123 Stuff Cooking Model Database Appl. Class Class ID {I} Name Description MetaModel Schema R13 State Class ID {I, R13} State Number Name State Class ID State # Name 101 1 Filling 101 2 Cooking 101 3 Emptying 102 1... 102 2... MetaModel Database Class Class ID Name Descr'n 100 Recipe... 102... 101 Batch...... 102 Temp... Ramp

Archetype Language

Purpose To generate code. State Class ID State # Name 101 1 Filling 101 2 Cooking 101 3 Emptying 102 1... 102 2... MetaModel Database Class Class ID Name Descr'n 100 Recipe... 102... 101... Batch... 102 Temp... Ramp Miracle occurs here Code for the System

Purpose.traverse the repository and... Class Class ID {I} Name Description R13 1 0..1 State Chart Class ID {I, R13} Name R14 1 1..* State Class ID {I, R14} State Number {I} Name output text.

Example The archetype language produces text..select many states related to instances of class->[r13]statechart ->[R14]State where (isfinal == False) public: enum states_e { NO_STATE = 0,.for each state in states.if ( not last states ) ${state.name },.else NUM_STATES = ${state.name}.endif.endfor }; public: enum states_e { NO_STATE = 0, Filling, Cooking, NUM_STATES = Emptying };

Text To generate text: The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog.

Data Access To select any instance from the repository:.select any class from instances of Class Instance reference Class Class ID Name Descr'n 100 Recipe... 101 Batch... 102 Temp Ramp...

Substitution To access attributes of the selected instance. ${class.name} Batch Class Class ID Name Descr'n 100 Recipe... 101 Batch... 102 Temp Ramp... justtext

Association Traversal To traverse an association.. Not justany one-- the one that s associated.select one StateChart related to instances of class->[r13]statechart State Chart Class ID {I, R13} Name R13 0..1 1 Class Class ID {I} Name Description Create Batch( Amount of Batch, Recipe Name) Filling Filled( Batch ID ) Cooking Temp. Ramp Complete( Batch ID ) Emptying Emptied( Batch ID )

Arbitrary Instance To select an arbitrary one..select any state related to instances of StateChart->[R14]State Or... Class Class ID {I} Name Description R13 1 0..1 State Chart Class ID {I, R13} Name R14 1 1..* State.select any state related to instances of Class->[R13]StateChart->[R14]State Class ID {I, R14} State Number {I} Name isfinal

Complex Traversals To qualify the selection....select any state related to instances of StateChart->[R14]State where (isfinal == False) Class Class ID {I} Name Description R13 1 0..1 State Chart Class ID {I, R13} Name R14 1 1..* State Class ID {I, R14} State Number {I} Name isfinal

Instance Sets To select many instances:.select many states related to instances of Class-> [R13]StateChart ->[R14]State where (isfinal==false) StateS = Filling Create Batch( Amount of Batch, Recipe Name) Filling Filled( Batch ID ) Cooking Emptying Cooking Temperature Ramp Complete( Batch ID ) Emptying Emptied( Batch ID )

Iteration To iterate over instances.select many states related to instances of Class->[R13]StateChart -> [R14]State where (isfinal == False).for each state in states ${state.name},.endfor Filling, Cooking, Emptying,

Putting It Together We may combine these techniques..select many states related to instances of class->[r13]statechart->[r14] State where (isfinal == False) public: enum states_e { NO_STATE = 0,.for each state in states.if ( not last states ) ${state.name },.else NUM_STATES = ${state.name}.endif.endfor }; public: enum states_e { NO_STATE = 0, Filling, Cooking, NUM_STATES = Emptying };

Application Semantics An archetype language gives access to the semantics of the application as stored in the repository. We may use the archetype language to generate code.

A Direct Translation

Application Classes Each application class becomes an implementation class..select many classes from instances of class.for each class in classes class ${class.name} : public ActiveInstance {.invoke addpdmdecl( inst_ref class)... };.endfor

Application Attributes Each attribute becomes a private data member:.function addpdmdecl( inst_ref class ) private:.select many attrs related to class->[r12]attribute.for each attr in attrs ${attr.type} {attr.name} ;.endfor.end function

State Chart Declaration To declare a state chart: (i.e. allthe actionsinthe state chart).function addprotectedactions( inst_ref class ).select one statechart related by class-> [R13]StateChart protected: // state action member functions.select many states related by statechart->[r14]state.for each state in states.invoke addactionfunctiondecl( inst_ref state ).endfor.end function

State Action Declaration To generate the state action declaration:.function addactionfunctiondecl( inst_ref state ) // State action: ${state.name} static void sasyncaction${state.name}( stda_eventmsg_c *eventptr, int nextstate); void ${state.name}(stda_eventmsg_c *p_evt ); void asyncaction${state.name }( );.endfor

State Action Definition To define the state action function. Action Group Class ID {I} State Number {I} R34 1 1..* Action Class ID {I, R34} State Number {I,R34} Action ID {I} Signal Generator Event Name {I} Supplemental Data Computation Computation ID {I} Expression Data Accessor Accessor ID {I, R13} Class Name Selector Expression traverse the repository in the same manner.

An Indirect Architecture

Where Have All The Cycles Gone? Consider a system that controls 500 instances continuously at 100Hz. Do Temp. Ramp( Batch ID, End Time, End Temp ) Creating Start Controlling ( Ramp ID ) 10ms Expired ( Ramp ID ) Controlling Temp. Ramp Complete( Ramp ID ) Complete Ended( Ramp ID )

Where Have All The Cycles Gone? Model the controller so that each : 500 instances * 100 cycles transitions per second, or 20 microseconds per transition including the actions 10ms Expired ( Ramp ID ) Controlling Temp. Ramp Complete( Ramp ID )

Where Have All The Cycles Gone? Or, we could buy several cheaper processors, each controlling different instances. Processor A Processor B 10ms Expired ( Ramp ID ) Controlling 10ms Expired 10ms ( Ramp Expired Temp. ID ) Ramp Complete( Controlling Ramp ID ) ( Ramp ID ) Controlling Temp. Ramp Complete( Ramp ID ) Temp. Ramp Complete( Ramp ID )

Where Have All The Cycles Gone? Or, we could use a single task that executes periodically. 10ms Expired Periodic Task Controlling

Description of Architecture This last architecture introduces new issues: how to indicate transition into the periodic state (use one bit per instance), and how to indicate transition out of the periodic state the periodic task has to be able to execute when it s time, so it needs higher priority---- which raises issues of inconsistent data, so we should duplicate data needed for the control loop---- and copy it over by the periodic task when required

Description of Architecture Instance bits Timer Event messages Event-driven Task Event message Periodic Task Data Copy

Application Mapping Recipe Recipe Name {I} Cooking Time Cooking Temperature Heating Rate Event Driven Task Batch Batch ID {I} Amount of Batch Recipe Name {R2} Status Temperature Ramp Ramp ID {I} Batch ID {R4} Start Temperature Start Time End Temperature End Time Status Periodic Task Temperature Ramp Ramp ID {I} Start Temperature Start Time End Temperature End Time Start Temperature Start Time End Temperature End Time Ramp Id Bits

Application Mapping Event Driven Task Periodic Task Do Temp. Ramp( ) Controlling Creating Start Controlling ( Ramp ID ) Controlling Ramp Id Bits Temp. Ramp Complete( Ramp ID ) Complete Ended( Ramp ID )

Extended Properties To make certain distinctions, we need to tag elements of the meta-model..function addperiodicstateaction RampIDbits[insNumber].activateActions(); State Class ID {I, R14} State Number {I} Name isfinal isperiodic

Model-Driven Architecture

Generating the Production Code Invoke the archetypes and iterate over instances of the corresponding architecture objects to generate the complete source code for the system. Application Models Compile the Application Models Archetypes

Production Code Compile the source code and include initialization data files (if any) to generate the deliverable production code. (Archetypes) Application Models Compile the Application Models Run-Time Library (Mechanisms) Code for the System Architecture Libraries, Legacy or Hand-written code

Model-Based Maintenance To address performance-based issues: modify the architecture models, and and regenerate the system. Do not modify the generated code directly. Application Models Design Changes Code for the System Architecture

Model-Based Maintenance To address application behavior issues, modify the relevant application model, and regenerate the system. Application Changes Application Models Do not modify the generated code directly. Architecture Design Changes Code for the System

Model Compiler An architecture is an Executable UML model compiler. It translates a system specified in executable UML into the target programming language incorporating decisions made by the architect about: data, control, structures, and time. Architectures, like programming language compilers, can be bought.

Translative System Generation Translative System Generation is a system-construction method based on: separating systems into subject matters (domains) specifying each domain with an executable UML model translating the models

Subject Matter Separation The application and architecture are separate subject matters. Separation of application from architecture Code for the System

Executable UML Models Executable UML models Code for the System

Executable UML Models Batch Batch ID {I} Amount of Batch Reci pe Name {R2} Status R4 Temperature Ramp Ramp ID {I} Batch ID {R4} Start Temperature Start Time End Temperature End Time Status Do Temp. Ramp( Batch ID, End Time, End Temp ) Creating Start Controlling ( Ramp ID ) Executable models can be simulated before coding begins. Controlling Lifecycle for Temperature Ramp Action for Creating Temp. Ramp Complete( Ramp ID ) Creating Complete Ended( Ramp ID ) Entry/ Create TempertaureRamp with BatchID, EndTime, EndTemp Assign CurrentTime to Self.StartTime; Assign Self -> [R4] CookingTank. ActualTemp to Self.StartTemp; Generate StartControlling (Ramp ID );

Translation Translation is the act of combining the subject matters. Translation according to rules Code for the System

Translation Translating the application domain models generates: highly systematic uniform reproducible understandable application code and minimizes: coding and code inspection effort coding errors component integration issues

Brought to you by Translating Inspiration Into Products. Makersof BridgePoint and DesignPoint Stephen J. Mellor Project Technology, Inc. http://www.projtech.com