2000 Advanced OOSA State of the Art on Software Architecture Declarative Meta Programming Session 3: Declarative Meta Programming.

Slides:



Advertisements
Similar presentations
Ontology-Based Computing Kenneth Baclawski Northeastern University and Jarg.
Advertisements

Profiles Construction Eclipse ECESIS Project Construction of Complex UML Profiles UPM ETSI Telecomunicación Ciudad Universitaria s/n Madrid 28040,
Database System Concepts and Architecture
Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
Ch 3 System Development Environment
Lecture 1 Introduction to the ABAP Workbench
Dr Gordon Russell, Napier University Unit Data Dictionary 1 Data Dictionary Unit 5.3.
Introduction to Database Management  Department of Computer Science Northern Illinois University January 2001.
1 The JQuery Tool A Generic Query-Based Code browser for Eclipse Project leaders: Kris De Volder, Gregor Kiczales Students: Doug Janzen, Rajeswari Rajagopalan,
2 Object-Oriented Analysis and Design with the Unified Process Objectives  Explain how statecharts can be used to describe system behaviors  Use statecharts.
Architecture for Pattern- Base Management Systems Manolis TerrovitisPanos Vassiliadis National Technical Univ. of Athens, Dept. of Electrical and Computer.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
ISBN Lecture 01 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Lecture 01 Topics Motivation Programming.
VB in Context Michael B. Spring Department of Information Science and Telecommunications University of Pittsburgh Pittsburgh, Pa 15260
Institute of Computing Jaca: a Reflective Fault Injection Tool based on Patterns Eliane Martins Cecilia Rubira Nelson Leme Institute of Computing State.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
Principles of Procedural Programming
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
UNIT-V The MVC architecture and Struts Framework.
Deriving AO Software Architectures using the AO-ADL Tool Suite Luis Fernández, Lidia Fuentes, Mónica Pinto, Juan A. Valenzuela Universidad de Málaga
MDC Open Information Model West Virginia University CS486 Presentation Feb 18, 2000 Lijian Liu (OIM:
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Sumant Tambe, et. al LEESA DSPD 2008 An Embedded Declarative Language for Hierarchical Object Structure Traversal Sumant Tambe* Aniruddha Gokhale Vanderbilt.
Xactium xDSLs Run Models Not Code Tony Clark
Chapter 6 System Engineering - Computer-based system - System engineering process - “Business process” engineering - Product engineering (Source: Pressman,
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
C++ Code Analysis: an Open Architecture for the Verification of Coding Rules Paolo Tonella ITC-irst, Centro per la Ricerca Scientifica e Tecnologica
Copyright © 2007 Ramez Elmasri and Shamkant B. Navathe Slide 1- 1 Chapter 2: Database System Concepts and Architecture - Outline Data Models and Their.
Java Language and SW Dev’t
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
2000 Advanced OOSA State of the Art on Software Architecture Declarative Meta Programming Session 1: Introduction Nantes, EMOOSE.
Sadegh Aliakbary Sharif University of Technology Fall 2012.
A Novel Approach to Architectural Recovery in Evolving Object- Oriented Systems PhD thesis Koen De Hondt December 11, 1998.
RELATIONAL FAULT TOLERANT INTERFACE TO HETEROGENEOUS DISTRIBUTED DATABASES Prof. Osama Abulnaja Afraa Khalifah
Ihr Logo Fundamentals of Database Systems Fourth Edition El Masri & Navathe Chapter 2 Database System Concepts and Architecture.
Generative Programming. Automated Assembly Lines.
FlexElink Winter presentation 26 February 2002 Flexible linking (and formatting) management software Hector Sanchez Universitat Jaume I Ing. Informatica.
Systems Analysis and Design in a Changing World, 3rd Edition
Partitioning Patterns How to partition complex actors and concepts into multiple classes. Layered Initialization Filter Composite.
A Logic Meta-Programming Approach to support the Co-Evolution of Object-Oriented Design and Implementation Roel Wuyts , PROG.
Ontology-Based Computing Kenneth Baclawski Northeastern University and Jarg.
Sheet 1 DocEng’03, Grenoble, November 2003 Model Driven Architecture based XML Processing Ivan Kurtev, Klaas van den Berg University of Twente, the Netherlands.
Towards Multi-Paradigm Software Development Valentino Vranić Department of Computer Science and Engineering Faculty of Electrical Engineering.
Programming Technology Lab1 Declarative Meta Programming Dr. Kim Mens ( ) Programming Technology.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
1 JTransformer Framework Tobias Windeln Institut für Informatik III Rheinische Friedrich-Wilhelms-Universität Bonn.
Ch- 8. Class Diagrams Class diagrams are the most common diagram found in modeling object- oriented systems. Class diagrams are important not only for.
12 Chapter 12: Advanced Topics in Object-Oriented Design Systems Analysis and Design in a Changing World, 3 rd Edition.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
IBM Software Group ® Managing Reusable Assets Using Rational Suite Shimon Nir.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Concepts and Realization of a Diagram Editor Generator Based on Hypergraph Transformation Author: Mark Minas Presenter: Song Gu.
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
Reuse Contracts A Historic Overview Dr. Tom Mens Programming Technology Lab Vrije Universiteit Brussel Course OOSE.RC EMOOSE
1 Chapter 2 Database Environment Pearson Education © 2009.
Programming Language Concepts (CIS 635) Elsa L Gunter 4303 GITC NJIT,
1 Declaratively Codifying Software Architectures Using Virtual Software Classifications Kim Mens Kim Mens, Roel Wuyts, Theo D’Hondt Programming Technology.
October 19, 1998Doctoral Symposium OOPSLA’98 Kim Mens Intentional annotations for evolving object-oriented software Kim Mens Programming Technology Lab.
2000 Research Overview Dr. Kim Mens Programming Technology Lab Vrije Universiteit Brussel.
XML and Distributed Applications By Quddus Chong Presentation for CS551 – Fall 2001.
Software Engineering Algorithms, Compilers, & Lifecycle.
Apposition “In order to fill the observed gap between the various phases of the object-oriented software development life-cycle, they should be regarded.
Databases (CS507) CHAPTER 2.
Chapter 2: Database System Concepts and Architecture - Outline
Towards Effective Adaptive User Interfaces Design
Intentional source-code views
Dr. Bhavani Thuraisingham The University of Texas at Dallas
Database System Concepts and Architecture
Software Architecture & Design
Presentation transcript:

Advanced OOSA State of the Art on Software Architecture Declarative Meta Programming Session 3: Declarative Meta Programming Nantes, EMOOSE 2000–2001 Dr. Kim Mens, PROG, VUB

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 2 Course overview ÊIntroduction ËSoftware Architecture ÌDeclarative Meta Programming ÍSoftware Classification ÎLightweight Architectural Tools ÏAutomated Architectural Conformance Checking ÐAn Architecture-driven Software Development Tool ÑAssignments

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 3 References n Roel Wuyts Declarative Reasoning about the Structure of Object-Oriented Systems. In Proceedings of TOOLS USA 1998, pages IEEE Computer Society Press, 1998 n Theo D'Hondt, Kris De Volder, Kim Mens & Roel Wuyts Co-evolution of Object-Oriented Software Design and Implementation. In Proceedings of SACT Kluwer Academic Publishers, 2000 n Roel Wuyts A Logic Meta-Programming Approach to Support the Co-Evolution of Object-Oriented Design and Implementation. PhD thesis, Dept. of Computer Science, VUB, Belgium. January 2001 RECAP

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 4 Session overview n Declarative Meta Programming n Logic meta programming n Applications of DMP n SOUL n TyRuBa n DMP for Java n Conclusion DMP = Declarative Meta Programming

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 5 Session overview n Declarative Meta Programming n Logic meta programming n Applications of DMP n SOUL n TyRuBa n DMP for Java n Conclusion

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 6 Declarative Meta Programming n DMP = Declarative Meta Programming n Combines a declarative meta language with a standard object-oriented base language n Explicit symbiosis between meta and base language u base-level programs are expressed as terms, facts and rules at the meta level u meta-level programs can manipulate and reason about the base-level programs

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 7 Declarative reasoning n Declarative programming language u readable, intuitive, intentional, concise u e.g. a logic programming language n Declarative reasoning u use a declarative programming language to reason about structural aspects of source code in some base language u check source against certain constructs, conventions, patterns u search source for certain constructs, conventions, patterns u extract certain constructs, conventions, patterns from source u enforce certain constructs, conventions, patterns in source u generate source from high-level declarative descriptions u transform source based on high-level declarative descriptions

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 8 Session overview n Declarative Meta Programming n Logic meta programming n Applications of DMP n SOUL n TyRuBa n DMP for Java n Conclusion

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 9 Logic meta programming (LMP) n LMP = Logic Meta Programming n LMP as particular flavour of DMP n Meta language is a PROLOG-like logic programming language n Logic programming is good at u meta programming u language processing u reasoning about knowledge u unification, backtracking, multi-way reasoning

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 10 LMP — Multi-way reasoning n Explain append example here

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 11 LMP languages for Smalltalk n SOUL u “Smalltalk Open Unification Language” u Prolog-like meta language u Smalltalk (or Squeak) as base language u Strong symbiosis between logic language and Smalltalk Logic language works directly on current Smalltalk image Smalltalk entities can be used as constants in the logic language Logic clauses can execute parameterised Smalltalk expressions n Prolog + Prodata u Prolog as meta language u Store base-level source code in ODBC-compliant repository u Access repository from Prolog using some ODBC interface u Weaker symbiosis but more efficient reasoning engine

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 12 LMP languages for Java n TyRuBa u Java as base language u Prolog-like meta language u Generates Java source code from logic descriptions containing parameterised Java expressions n DMP for Java (C2C) u Java as base language u Prolog as meta language u Prolog facts representing the base-level program are generated from the Java class files for that program

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 13 Session overview n Declarative Meta Programming n Logic meta programming n Applications of DMP n SOUL n TyRuBa n DMP for Java n Conclusion

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 14 Applications of DMP n What is DMP used for at PROG? u Emerging technique to build state-of-the art software development tools u In particular, tools to support co-evolution in all facets and phases of the software life-cycle information in implementation and earlier life-cycle phases may evolve independently need to keep information in these phases synchronised u To build advanced software architecture tools n DMP is unifying approach that combines the research of many PROG researchers n Focus of this course: u DMP for building advanced software architecture tools

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 15 Some DMP experiments n Roel Wuyts: SOUL u Reasoning about the structure of OO systems using the Smalltalk Open Unification Language u Synchronizing implementation and design n Kim Mens: architectural conformance checking u use logic programs to declare software architectures declaratively and check them against the implementation n Tom Tourwé: code optimization & change propagation u a functional language with logic extensions to write declarative code transformations that detect propagation of changes to source code replace design patterns by optimized implementations

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 16 More DMP experiments n Kris De Volder: TyRuBa u very expressive type system u precompiler that uses logic programs to generate (Java) code n Aspect-Oriented Programming (AOP) u Kris De Volder: using TyRuBa for AOP u Maja D'Hondt: expressing domain knowledge as a separate aspect that can be factored out from the base program u Johan Brichau: declarative combination of aspects n Wolfgang De Meuter & Maja D’Hondt u Using DMP techniques for guiding reuse

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 17 Advanced software architecture tools n There is a need for advanced tools that support an architecture-driven software development process: n Navigating u “architecture-driven browsing” through the source-code n Conformance checking u of source code to architectural descriptions n Enforcing u architectural constraints over the source code n Generating u source-code (fragments) from architecture descriptions n...

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 18 Advanced software architecture tools n... n Extracting u architectural information from source code n Transforming & reverse-engineering u source code based on architectural information n Co-evolution u keep source code and architecture synchronised when one of the evolves u change propagation, impact analysis, conflict detection, … n Etc.

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 19 Session overview n Declarative Meta Programming n Logic meta programming n Applications of DMP n SOUL n TyRuBa n DMP for Java n Conclusion

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 20 SOUL n Set-up n Integration with Smalltalk n SOUL environment n Prolog variant n Declarative framework

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 21 SOUL set-up Experiments were conducted in two alternative set-ups: u SOUL u Prolog Reason about and manipulate source code: check, extract, search, generate, enforce, transform Smalltalk implementation artefacts Meta-level Interface SOULSmalltalk Image

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 22 SOUL n Set-up n Integration with Smalltalk n SOUL environment n Prolog variant n Declarative framework

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 23 SOUL is integrated with Smalltalk VisualWorks Smalltalk environment SOUL menu (opens SOUL applications)

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 24 SOUL is embedded in Smalltalk Actual SOUL code can be inspected Smalltalk class browser Logic repositories are stored as special “classes” “Methods” group set of related logic clauses

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 25 SOUL language Rule class(?class) if constant(?class), [ SOULExplicitMLI curent isClass: ?class ]. n Logic programming language, featuring symbiosis and reflection with Smalltalk n Specific language features: u Smalltalk term: “wrap” extended Smalltalk code u Generate predicate: transform collection of x Smalltalk elements into x logic solutions u Quoted term: represent strings with logic variables

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 26 n Up-down mechanism: n Reflection: u use the predefined variables ?repository or ?bindings in logic terms expressing Smalltalk expressions to gain direct access to the current logic repository or set of bindings Smalltalk SOUL [ SOULExplicitMLI curent isClass: ?class ] false [false] “up”“down” Symbiosis with Smalltalk [:env | SOULExplicitMLI curent isClass: (env at: 1) soulUp ]

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 27 SOUL n Set-up n Integration with Smalltalk n SOUL environment n Prolog variant n Declarative framework

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 28 The SOUL Repository Inspector Construct and execute queries Inspect logic facts and rules Browse and edit (hierarchic) repository structure

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 29 Browse and edit repository structure

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 30 Inspecting the logic repository all clauses with a given name SOUL implementation of the selected clause select name of the clause

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 31 The SOUL Query and Structural Find applications SOUL Query Application SOUL Structural Find Application

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 32 The SOUL Query Application query editor status field find all query results find only first query result

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 33 The Query Result Inspector

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 34 The SOUL Structural Find Application

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 35 SOUL n Set-up n Integration with Smalltalk n SOUL environment n Prolog variant n Declarative framework

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 36 Prolog variant Experiments were conducted in two alternative set-ups: u SOUL u Prolog Smalltalk implementation artefacts ODBC Interface PrologMS Access Database Reason about and manipulate source code: check, extract, search, generate, enforce, transform

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 37 SOUL n Set-up n Integration with Smalltalk n SOUL environment n Prolog variant n Declarative framework

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 38 A layered declarative framework Architectural Layer Design Patterns Layer Coding Conventions Layer Base Layer Representational Layer Repository- access Layer isClassifiedAs findMetaClassedFromClasses findMethodsFromClasses factoryMethodcompositePattern instanceCreationMethod isSentTohierarchy traverseMethodParseTree artefactartefactNestingID protocolNamemethodName classImplementsMethodNamed classImplementsMethod metaClassmethodInProtocol inheritanceclassName

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 39 Session overview n Declarative Meta Programming n Logic meta programming n Applications of DMP n SOUL n TyRuBa n DMP for Java n Conclusion

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 40 TyRuBa (Typed Rule Base) n Java Code Generation through DMP n Ph.D. Thesis of Kris De Volder, 1999 n Allows to write generic templates of software modules by means of DMP n Code generator instantiates these templates n Generic templates are represented by logic declarations (facts & rules)

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 41 TyRuBa Architecture

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 42 TyRuBa class( Array, { private ?El[] contents; /** Construction */ Array (int sz) { contents = new ?El[sz]; } /** Basic Array functionality */ ?El elementAt(int i) { return contents[i]; } void setElementAt(?El e,int i) { contents[i]=e; } int length() { return contents.length; } } ). class Array_LString_R { private String [ ] contents ; Array_LString_R ( int sz ) { contents = new String [ sz ] ; } String elementAt ( int i ) { return contents [ i ] ; } void setElementAt ( String e, int i ) { contents [ i ] = e ; } int length ( ) { return contents. length ; } } Code generator

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 43 TyRuBa n Code generator can do much more reasoning u E.g.: generate an implementation of a Container (e.g. Array) based on the element it should contain. u... n Code generator itself is implemented in TyRuBa u Adaptable and extensible

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 44 Session overview n Declarative Meta Programming n Logic meta programming n Applications of DMP n SOUL n TyRuBa n DMP for Java n Conclusion

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 45 DMP for Java n Can DMP be applied to Java? n Represent Java classes as logic facts n Focus on class files u Java grammar is complicated u Source code is not always available u Class files have a more uniform representation u Class-file format is more stable over time

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 46 Java class representation

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 47 Classes to clauses: C2C n Written in Java n Extracts information from class files n Represents this information as logic facts n Based on existing class parser: BCEL u Byte Code Engineering Library u (formerly JavaClass) n Tested on Drawlets

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 48 Used representation (1) n class( ). n interface( ). n accessFlag(, ). n superclass(, ). n directInterface(, ).

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 49 Used representation (2) n fieldAccessFlag(,, ). n fieldDescriptor(,, ).

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 50 Used representation (3) n methodAccessFlag(,,, ). n methodReturnType(…, ). n methodBody(…, ) u invokespecial( ) u putfield( ) u putstatic( ) u getfield( ) u getstatic( )

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 51 C2C example: input class public final class LineNumber implements Cloneable { private int start_pc; LineNumber(DataInputStream file) throws IOException { this(file.readUnsignedShort(), file.readUnsignedShort()); } public final void dump(DataOutputStream file) throws IOException { file.writeShort(start_pc); file.writeShort(line_number); } … }

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 52 c2c example: output (1) class(‘LineNumber’). classAccessFlag(‘LineNumber’, public). classAccessFlag(‘LineNumber’, final). directInterface(‘LineNumber’, ‘java.lang.Cloneable’). superClass(‘LineNumber’, ‘java.lang.Object’). fieldAccessFlags(‘LineNumber’, ‘start_pc’, private). fieldDescriptor(‘LineNumber’, ‘start_pc’, int). methodReturnType(‘LineNumber’, ‘LineNumber’, [‘java.io.DataInputStream’], void). methodException(‘LineNumber’, ‘LineNumber’, [‘java.io.DataInputStream’], ‘java.io.IOException’). methodBody(…).

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 53 c2c example: output (2) methodAccessFlag(‘LineNumber’, dump, [‘java.io.DataOutputStream’], public). methodAccessFlag(‘LineNumber’, dump, [‘java.io.DataOutputStream’], final). methodReturnType(‘LineNumber’, dump, [‘java.io.DataOutputStream’], void). methodException(‘LineNumber’, dump, [‘java.io.DataOutputStream’], ‘java.io.IOException’). methodBody(‘LineNumber’, dump, [‘java.io.DataOutputStream’], [getfield(‘start_pc’), invokevirtual(‘java.io.DataOutputStream.writeShort(int)’), getfield(‘line_number’), invokevirtual(‘java.io.DataOutputStream.writeShort(int)’)]).

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 54 c2c example: output (3) getfield(‘LineNumber’, dump, [‘java.io.DataOutputStream’], ‘start_pc’). invokevirtual(‘LineNumber’, dump, [‘java.io.DataOutputStream’], ‘java.io.DataOutputStream.writeShort(int)’). getfield(‘LineNumber’, dump, [‘java.io.DataOutputStream’], ‘line_number’). invokevirtual(‘LineNumber’, dump, [‘java.io.DataOutputStream’], ‘java.io.DataOutputStream.writeShort(int)’).

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 55 Session overview n Declarative Meta Programming n Logic meta programming n Applications of DMP n SOUL n TyRuBa n DMP for Java n Conclusion

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 56 Conclusion n DMP = use a declarative meta language to reason about & manipulate programs written in a standard object-oriented base language n DMP is unifying approach that combines the research of many PROG researchers n Several DMP tools and environments already exist: u SOUL, TyRuBa, C2C,... n We use DMP as a technique to build state-of-the art software development tools n In particular, in this course we will focus on the use of DMP for building advanced software architecture tools

State of the Art on Software Architecture — Declarative Meta ProgrammingSession 3, page 57 Session overview n Declarative Meta Programming n Logic meta programming n Applications of DMP n SOUL n TyRuBa n DMP for Java n Conclusion Time for a break