1 A Graph Rewriting Formalism for Object-Oriented Software Evolution Tom Mens FWO Postdoctoral Fellow Programming Technology Lab Vrije.

Slides:



Advertisements
Similar presentations
Jeremy S. Bradbury, James R. Cordy, Juergen Dingel, Michel Wermelinger
Advertisements

Slide 1 Insert your own content. Slide 2 Insert your own content.
© 2005 by Prentice Hall Appendix 3 Object-Oriented Analysis and Design Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F. George.
Language Specification using Metamodelling Joachim Fischer Humboldt University Berlin LAB Workshop Geneva
The EMERALD RTD Plan and the ASAS Validation Framework R P (Bill) Booth 10 October 2002.
A Model-based Development approach for Model Transformations Shekoufeh Kolahdouz Rahimi, Kevin Lano
Profiles Construction Eclipse ECESIS Project Construction of Complex UML Profiles UPM ETSI Telecomunicación Ciudad Universitaria s/n Madrid 28040,
McGill University School of Computer Science Ph.D. Candidate in the Modelling, Simulation and Design Lab MSDL09 De-/Re-constructing Model Transformation.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 14 Slide 1 Object-oriented Design 1.
Research & development Towards a Versatile Contract Model to Organize Behavioral Specifications Philippe Collet 1, Alain Ozanne 2 and Nicolas Rivierre.
Technieken van de Software Architectuur, VUB ‘98-’99, Part 21 Part 2: Component and Framework Reuse Technieken van de Software Architectuur.
1 Formalising Behaviour-Preserving Object-Oriented Program Transformations Tom Mens( ) Postdoctoral Fellow – Fund for Scientific Research.
1 A Formal Foundation for Software Refactoring Tom Mens, Serge Demeyer, Dirk Janssens serge.demeyer | dirk.janssens Programming.
1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( ) Postdoctoral Fellow – Fund for Scientific.
1 FWO Research Network Foundations of Software Evolution Research Meeting Friday, January 18, 2002 Vrije Universiteit Brussel Brussels, Belgium.
1 UML ++ Mohamed T IBRAHIM University of Greenwich -UK.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
McGill University GT-VMT’10 School of Computer Science Ph.D. Candidate in the Modelling, Simulation and Design Lab Eugene Syriani Hans Vangheluwe.
Chapter 11 Component-Level Design
Modeling Main issues: What do we want to build How do we write this down.
1 Reuse Contracts Patrick Steyaert Programming Technology Lab Vrije Universiteit Brussel WWW:
10 nov 1999SEESCOA Applicability of UML/RT to Embedded Systems Programming Technology Lab (PROG) System & Software Engineering Lab (SSEL) Dept. of Computer.
© Copyright Eliyahu Brutman Programming Techniques Course.
Chapter 10 Class and Method Design
A Domain-Independent Formalism for Software Evolution Tom Mens Programming Technology Lab Vrije Universiteit Brussel February, 2000.
A Survey of Software Refactoring Tom Mens, Tom Tourwé
Object-oriented Software Engineering with Reuse Contracts Koen De Hondt, Carine Lucas, Kim Mens, Tom Mens, Patrick Steyaert, Roel Wuyts Programming Technology.
BCS 2143 Introduction to Object Oriented and Software Development.
Yu SunUniversity of Alabama at Birmingham PAR Works Jeff Gray University of Alabama Montpellier, France July 3rd, 2013 This research is supported.
What is a life cycle model? Framework under which a software product is going to be developed. – Defines the phases that the product under development.
Introduction To System Analysis and Design
Reviewing Recent ICSE Proceedings For:.  Defining and Continuous Checking of Structural Program Dependencies  Automatic Inference of Structural Changes.
WSMX Execution Semantics Executable Software Specification Eyal Oren DERI
Methodology - Conceptual Database Design. 2 Design Methodology u Structured approach that uses procedures, techniques, tools, and documentation aids to.
Formal Foundations for Software Evolution Programming Technology Lab Tom Mens
Model Driven Development An introduction. Overview Using Models Using Models in Software Feasibility of MDA MDA Technologies The Unified Modeling Language.
Composition of UML Described Refactoring Rules Presented by Chin-Yi Tsai.
Methodology - Conceptual Database Design
A Logic Meta-Programming Approach to support the Co-Evolution of Object-Oriented Design and Implementation Roel Wuyts , PROG.
Modeling Component-based Software Systems with UML 2.0 George T. Edwards Jaiganesh Balasubramanian Arvind S. Krishna Vanderbilt University Nashville, TN.
12 Chapter 12: Advanced Topics in Object-Oriented Design Systems Analysis and Design in a Changing World, 3 rd Edition.
A Formal Model for Object-Oriented Software Reuse Kim Mens Programming Technology Lab Vrije Universiteit Brussel FNRS MeetingMay 6th, 1997.
Katholieke Universiteit Leuven112 April 2000 Research Topics in Software Evolution Dr. Tom Mens FWO Postdoctoral Fellow Programming Technology Lab Vrije.
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Chapter 9 Designing Databases 9.1.
® IBM Software Group © 2009 IBM Corporation Essentials of Modeling with the IBM Rational Software Architect, V7.5 Module 15: Traceability and Static Analysis.
March 1, 2004CS WPI1 CS 509 Design of Software Systems Lecture #6 Monday, March 1, 2004.
February, 2000Programming Technology Lab, Vrije Universiteit Brussel Component and Framework Reuse Dr. Tom Mens Programming Technology Lab Vrije Universiteit.
Concepts and Realization of a Diagram Editor Generator Based on Hypergraph Transformation Author: Mark Minas Presenter: Song Gu.
Reuse Contracts A Historic Overview Dr. Tom Mens Programming Technology Lab Vrije Universiteit Brussel Course OOSE.RC EMOOSE
FFSE 2001 – Workshop Schedule --- MORNING --- 9:30Opening + Welcome 9:402 long presentations (Kahl, García-Cabrera) + discussion 11:00Coffee break 11:30long.
04 - OOD Intro.CSC4071 Software Design ‘Requirements’ defines –The goals the system needs to satisfy. ‘Specification’ defines –The externally-observable.
Formal Foundations for Software Evolution Programming Technology Lab Tom Mens
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.
4 June 1998, Mulhouse, France > ‘98 International Workshop Tom Mens Carine Lucas & Patrick Steyaert Programming Technology.
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
A Formalism for Transformational Software Evolution Programming Technology Lab Vrije Universiteit Brussel, Belgium Tom Mens
1 Exercises about Design Patterns Tom Mens FWO Postdoctoral Fellow Programming Technology Lab Vrije Universiteit Brussel.
UML (Unified Modeling Language)
Chapter 6: Structured Vs. Object Oriented Analysis and Design.
2.3 Collaboration Contracts
Chapter 5: Object Oriented Analysis and Design
Coordination Contracts, Evolution and Tools
Transformational Software Evolution by Assertions
A Declarative Evolution Framework for Object-Oriented Design Patterns
AGTIVE Workshop Conditional Graph Rewriting as a Domain-Independent Formalism for Software Evolution Tom Mens Programming Technology Lab Vrije Universiteit.
Analysis models and design models
Public PhD Defense A Formal Foundation for Object-Oriented
Presentation transcript:

1 A Graph Rewriting Formalism for Object-Oriented Software Evolution Tom Mens FWO Postdoctoral Fellow Programming Technology Lab Vrije Universiteit Brussel Belgium

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 2 Thesis Statement A formal foundation (of reuse contracts) allows us to deal with (object-oriented) software evolution in a domain- independent and scalable way.

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 3 Overview  Formal techniques enable domain-independence  independent of the considered (OO) programming language  e.g., Smalltalk, Java, C++, …  independent of the phase in the software life-cycle  e.g., analysis, software architecture, design, implementation  Provide formalism based on graph rewriting  Represent software by graphs  Represent software evolution by graph rewriting  Use formalism to support software merging and upgrading  Provide formal characterisation of merge conflicts  Facilitate detection (and resolution) of conflicts

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 4 workstation 1 fileserver 1 workstation 2 printer 1 workstation 3 1. originate(p) 2. send(p) 3. accept(p) 4. send(p) 5. accept(p) 6. send(p) 7. accept(p) 8.print(p) Running example: LAN simulation

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 5 Example: UML class diagram accept(p:Packet) originate(p:Packet) Workstation contents Packet accept(p:Packet) send(p:Packet) Node originator name accept(p:Packet) print(p:Packet) PrintServer accept(p:Packet) save(p:Packet) FileServer addressee nextNode

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 6 Example: graph representation «assoc» originator Packet «class»Node «class» accept «operation» send «operation» «inherit» Vertex types: «class» «attribute» «operation»... Edge types: «assoc» «inherit» «invoke» «access» «update»... «assoc» addressee name «attribute» contents «attribute» Workstation «class» accept «operation» originate «operation» Transcript «class» println «operation» nextNode «attribute» «access» «invoke»

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 7 Example: type graph nested operation attributeclass assoc, inherit update access invoke nested  Use type graph to specify domain-specific constraints

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 8  Use restricted set of primitive graph productions with application preconditions to specify software evolution AddVertex DropVertex AddEdge DropEdge RetypeVertex RetypeEdge RedirectSource RedirectTarget RelabelVertex RelabelEdge Evolution by graph productions AddEdge (invoke,send,getName) getName «operation» send «operation» «invoke» getName «operation» send «operation» «invoke» RedirectSource (access,send,name,getName) send «operation» name «attribute» «access» getName «operation» «access»  send «operation» name «attribute» getName «operation» «access» 

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 9 Example: software evolution  P 1 : Add accessor operation getName for attribute name Node «class» accept «operation» send «operation» name «attribute» nextNode «attribute» «access» «invoke» Node «class» accept «operation» send «operation» name «attribute» nextNode «attribute» «access» «invoke» getName «operation» «invoke» «access» AddVertex(operation,getName) RedirectSource(access,send,name,getName) AddEdge(invoke,send,getName) send «operation» name «attribute» «access» getName «operation» name «attribute» «access» send «operation» «invoke» P1P1

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 10 Example: software evolution  P 2 : Factor out logging behaviour Node «class» accept «operation» send «operation» name «attribute» Transcript «class» println «operation» nextNode «attribute» «access» «invoke» Node «class» accept «operation» send «operation» name «attribute» Transcript «class» println «operation» nextNode «attribute» «access» «invoke» log «operation» «invoke» «access» AddVertex(operation,log) AddEdge(invoke,send,log) RedirectSource(invoke,send,println,log) RedirectSource(access,send,name,log) send «operation» name «attribute» «access» println «operation» «invoke» send «operation» name «attribute» «access» println «operation» «invoke» log «operation» «invoke» P2P2

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 11 Node «class» accept «operation» send «operation» name «attribute» Transcript «class» println «operation» nextNode «attribute» «access» «invoke» Node «class» accept «operation» send «operation» name «attribute» Transcript «class» println «operation» nextNode «attribute» «access» «invoke» log «operation» «invoke» «access» Node «class» accept «operation» send «operation» name «attribute» nextNode «attribute» «access» «invoke» getName «operation» «invoke» «access» send «operation» name «attribute» «access» getName «operation» name «attribute» «access» send «operation» «invoke» send «operation» name «attribute» println «operation» «access» «invoke» send «operation» name «attribute» println «operation» «access» «invoke» log «operation» «invoke» send «operation» name «attribute» «access» Example: Software Merging Use pullback to detect potential merge conflicts P2P2 P1P1

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 12 Node «class» accept «operation» send «operation» name «attribute» Transcript «class» println «operation» nextNode «attribute» «access» «invoke» Node «class» accept «operation» send «operation» name «attribute» Transcript «class» println «operation» nextNode «attribute» «access» «invoke» log «operation» «invoke» «access» Node «class» accept «operation» send «operation» name «attribute» nextNode «attribute» «access» «invoke» getName «operation» «invoke» «access» Example: Software Merging AddVertex(operation,log) AddEdge(invoke,send,log) RedirectSource(invoke,send,println,log) RedirectSource(access,send,name,log) AddVertex(operation,getName) RedirectSource(access,send,name,getName) AddEdge(invoke,send,getName) Conflict if productions are parallel dependent Detect by violations of application preconditions syntactic conflict !

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 13 Example: Software Merging RedirectSource (access,send,name,log) send «operation» name «attribute» log «operation» «access»  getName «operation» send «operation» name «attribute» log «operation» «access»  getName «operation» send «operation» name «attribute» log «operation»  getName «operation» «access» RedirectSource (access,send,name,getName) precondition  edge (access,send,name) not satisfied ! precondition  edge (access,send,name) not satisfied ! merge conflict Can be implemented efficiently using conflict table

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 14 Addressing scalability  Normalisation algorithm  Removes redundant productions in a sequence  Reorders the remaining productions into a canonical form  Predefine composite productions as sequences of productions SplitMethod(m 1,m 2,OutEdges) = AddVertex(operation,m 1 ),AddEdge(invoke,m 1,m 2 ), RedirectSource(type,m 1,target,m 2 )forall (type,target) in OutEdges P 1 = SplitMethod(send,log,{(invoke,println),(access,name)})  Use high-level information about the evolution transformations to detect and resolve evolution conflicts  Formalisation of object-oriented refactorings  Detect their applicability; ensure their behaviour-preservation; analyse their complexity  Evolution of design pattern instances “A Declarative Evolution Framework for Object-Oriented Design Patterns”. Tom Mens, Tom Tourwe, ICSM 2001

ICSM, November 2001, Firenze © Tom Mens, Vrije Universiteit Brussel 15 Conclusion  Conditional graph rewriting is a feasible and useful formalism to address the problem of software merging in a domain-independent way.  Further work needed  practical validation in industrial setting  integrate ideas in CASE tools of IDEs  address scalability better  deal with conflict resolution