Katholieke Universiteit Leuven112 April 2000 Research Topics in Software Evolution Dr. Tom Mens FWO Postdoctoral Fellow Programming Technology Lab Vrije.

Slides:



Advertisements
Similar presentations
1 Formalising Behaviour-Preserving Object-Oriented Program Transformations Tom Mens( ) Postdoctoral Fellow – Fund for Scientific Research.
Advertisements

1 A Graph Rewriting Formalism for Object-Oriented Software Evolution Tom Mens FWO Postdoctoral Fellow Programming Technology Lab Vrije.
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.
IMS1805 Systems Analysis Topic 3: Doing Analysis (continued from previous weeks)
Solutions to Review Questions. 4.1 Define object, class and instance. The UML Glossary gives these definitions: Object: an instance of a class. Class:
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 System modeling 2.
Liang,Introduction to Java Programming,revised by Dai-kaiyu 1 Chapter 10 Object-Oriented Modeling.
Slide 1 Systems Analysis & Design CS183 Spring Semester 2008 Dr. Jonathan Y. Clark Course Website:
© Copyright Eliyahu Brutman Programming Techniques Course.
1 Object-Oriented Design. 2 Objectives F To become familiar with the process of program development. F To the relationship types: association, aggregation,
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
1 Object-Oriented Software Engineering CIS 375 Bruce R. Maxim UM-Dearborn.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
A Domain-Independent Formalism for Software Evolution Tom Mens Programming Technology Lab Vrije Universiteit Brussel February, 2000.
Introduction To System Analysis and design
A Survey of Software Refactoring Tom Mens, Tom Tourwé
1 Introduction Chapter 1. 2 Key Ideas Many failed systems were abandoned because analysts tried to build wonderful systems without understanding the organization.
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 4 - System modelling Dr Richard Clayton.
Object-oriented Software Engineering with Reuse Contracts Koen De Hondt, Carine Lucas, Kim Mens, Tom Mens, Patrick Steyaert, Roel Wuyts Programming Technology.
Ontology Development Kenneth Baclawski Northeastern University Harvard Medical School.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
UML based dependability modeling, analysis and synthesis Proposers: TU Budapest: A. Pataricza, Gy. Csertán, I. Majzik, D. Varró PDCC Pisa: L. Simoncini,
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 MDA (Model Driven Architecture) CYT.
ESA/ESTEC, TEC-QQS August 8, 2005 SAS_05_ESA SW PA R&D_Winzer,Prades Slide 1 Software Product Assurance (PA) R&D Road mapping Activities ESA/ESTEC TEC-QQS.
EMOOSE Object-Oriented Software Evolution Dr. Tom Mens Programming Technology Lab Vrije Universiteit.
Programming in Java Unit 3. Learning outcome:  LO2:Be able to design Java solutions  LO3:Be able to implement Java solutions Assessment criteria: 
Object-Oriented Software Development F Software Development Process F Analyze Relationships Among Objects F Class Development F Class Design Guidelines.
Formal Foundations for Software Evolution Programming Technology Lab Tom Mens
Abstract We present two Model Driven Engineering (MDE) tools, namely the Eclipse Modeling Framework (EMF) and Umple. We identify the structure and characteristic.
A language to describe software texture in abstract design models and implementation.
A Logic Meta-Programming Approach to support the Co-Evolution of Object-Oriented Design and Implementation Roel Wuyts , PROG.
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
What is Object-Oriented?  Organization of software as a collection of discreet objects that incorporate both data structure and behavior.
1. 2 Preface In the time since the 1986 edition of this book, the world of compiler design has changed significantly 3.
PROC-1 1. Software Development Process. PROC-2 A Process Software Development Process User’s Requirements Software System Unified Process: Component Based.
1 OO Analysis & Design - Introduction to main ideas in OO Analysis & design - Practical experience in applying ideas.
A Formal Model for Object-Oriented Software Reuse Kim Mens Programming Technology Lab Vrije Universiteit Brussel FNRS MeetingMay 6th, 1997.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 11 Object-Oriented.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Object-Oriented Design.
® IBM Software Group © 2009 IBM Corporation Essentials of Modeling with the IBM Rational Software Architect, V7.5 Module 15: Traceability and Static Analysis.
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.
Object-Oriented Software Engineering Practical Software Development using UML and Java Modelling with Classes.
Formal Foundations for Software Evolution Programming Technology Lab Tom Mens
1 SWE Introduction to Software Engineering Lecture 14 – System Modeling.
Ontologies Reasoning Components Agents Simulations An Overview of Model-Driven Engineering and Architecture Jacques Robin.
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.
Documenting Evolving Software Systems through Reuse Contracts Kim Mens Patrick SteyaertCarine Lucas Programming Technology Lab, Vrije Universiteit Brussel.
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
WonderWeb. Ontology Infrastructure for the Semantic Web. IST WP4: Ontology Engineering Heiner Stuckenschmidt, Michel Klein Vrije Universiteit.
Csontos Péter, Porkoláb Zoltán Eötvös Loránd Tudományegyetem, Budapest ECOOP 2001 On the complexity of exception handling.
1 Design Object Oriented Solutions Object Oriented Analysis & Design Lecturer: Mr. Mohammed Elhajj
Chapter 11 Object-Oriented Design
Programming Technology Lab, VUB
Transformational Software Evolution by Assertions
Software Architecture & Design Pattern
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.
Intentional source-code views
Public PhD Defense A Formal Foundation for Object-Oriented
Reuse Contracts: Managing the Evolution of Reusable Assets
Software Architecture & Design
Presentation transcript:

Katholieke Universiteit Leuven112 April 2000 Research Topics in Software Evolution Dr. Tom Mens FWO Postdoctoral Fellow Programming Technology Lab Vrije Universiteit Brussel

2 Long-Term Research Goal Developing formally-founded techniques for managing evolution of large-scale object-oriented software systems

3 Long-Term Research Goal  Anticipating evolution (= before)  how can we improve the quality of the software?  how can we identify unstable parts in the software?  which parts are badly designed / need restructuring?  Supporting evolution (= during)  e.g. support for upgrading, restructuring, merging, …  documenting evolution  Analysing evolution (= after)  does the evolution have the desired effect?  has the software quality improved? Developing formally-founded techniques for managing evolution of large-scale object-oriented software systems

4 Long-Term Research Goal Wide range of evolution support tools is needed  Upgrading software, frameworks and components  involves version control, collaborative development, software merging  Improving software quality, restructuring  Assessing software quality, determining need for evolution  Empirical and experimental research  Management aspects  Better understanding of the software evolution process itself  Co-evolution, consistency maintenance, compliance checking  Change propagation, impact analysis, effort estimation Developing formally-founded techniques for managing evolution of large-scale object-oriented software systems

5 Long-Term Research Goal  Scalability of the technique is essential  must remain applicable for large-sized software systems and for large software development teams  “A major challenge for the research community is to develop a good theoretical understanding and underpinning for maintenance and evolution, which scales to industrial applications.” K. H. Bennett, V.T. Rajlich, Software Maintenance and Evolution: A Roadmap, The Future of Software Engineering, ACM Press, 2000  Need for lightweight approaches Developing formally-founded techniques for managing evolution of large-scale object-oriented software systems

6 Long-Term Research Goal  Formal techniques enable domain-independence  independent of the considered (OO) programming language  e.g., Smalltalk, Eiffel, Java, C++, …  independent of the phase in the software life-cycle  e.g., analysis, software architecture, design, implementation  Emphasis on following formalisms  Graphs and graph rewriting  Declarative reasoning techniques on top of OO language  Software metrics Developing formally-founded techniques for managing evolution of large-scale object-oriented software systems

7 Current research E V O L U T I O N Better support for software merging Manage evolution of design patterns Assess need for evolution F O R M A L I S M S Graph rewriting Declarative reasoning Software metrics

8 Current research E V O L U T I O N Better support for software merging Manage evolution of design patterns Assess need for evolution F O R M A L I S M S Graph rewriting Declarative reasoning Software metrics

9 Better support for software merging  Based on idea of reuse contracts  Provide formalism based on graph rewriting  Represent software by graphs  Represent software evolution by graph rewriting  Provide formal characterisation of merge conflicts  Domain-independent approach  Independent of the target language  Independent of the phase in the life-cycle

10 Better support for software merging +intersects(c: Circle) -radius Circle +distanceTo(p: Point) -x -y PointTriangle +area() +circumference() Shape center vertices3  Example: UML class diagram

11 Better support for software merging  Use graphs to represent software G Triangle «class» Circle «class» «inherits» intersects «operation» «assoc» center radius «attribute» «aggregation» vertices {3} Point «class»Shape «class» area «operation» circumference «operation» x «attribute» distanceTo «operation» y «attribute» «inherits» n Node types: u «class» u «attribute» u «operation» u «interface» n Edge types: u «assoc» u «aggregation» u «inherits» u «implements» u «accesses» u «updates» u «invokes»

12 Better support for software merging implements nested operation attribute interface class assoc, aggregation, inherits inherits updates, accesses invokes nested  Use type graph to specify domain-specific constraints Specify other constraints declaratively

13  Use restricted set of primitive graph productions with application preconditions to specify software evolution  AddNode  DropNode  AddEdge  DropEdge  RetypeNode  RetypeEdge  RelabelNode  RelabelEdge Better support for software merging AddEdge (area,radius,«accesses») R area «operation» radius «attribute» «accesses» L area «operation» radius «attribute» DropNode (Triangle.area,«operation») R Triangle L «operation» area Triangle

14 AddEdge m R area «operation» radius «attribute» «accesses» G Circle «class» area «operation» «accesses» circumference «operation» radius «attribute» H Circle «class» area «operation» «accesses» circumference «operation» radius «attribute» «accesses» L area «operation» radius «attribute» Better support for software merging  Use single-pushout approach to apply graph production to a given initial graph G

15 Better support for software merging  Detect syntactic merge conflicts as breaches of application preconditions  corresponds to notion of parallel dependence  can be implemented efficiently with a conflict table or merge matrix P1P1 P 2 = DropNode(area,«operation») P 1 = AddEdge(area,radius,«accesses») P2P2 P1P1 P2P2 Undefined source conflict G Circle «class» area «operation» circumfere «operation» radius «attribute» «accesses» G2G2 Circle «class» circumfere «operation» radius «attribute» «accesses» G1G1 Circle «class» area «operation» circumfere «operation» radius «attribute» «accesses»

16  Detect semantic merge conflicts using the formal notion of pushouts and pullbacks  More fine-grained conflict characterisation by detecting occurrence of graph patterns in result graph Better support for software merging « class » « inherits » {added by developer 2} {added by developer 1} cyclic inheritance

17 Semantic Conflicts L1L1 area «operation» radius «attribute» R1R1 area «operation» radius «attribute» «accesses» G Circle «class» area «operation» circumfer «operation» radius «attribute» «accesses» G1G1 Circle «class» area «operation» circumfer «operation» radius «attribute» «accesses» m1m1 AddEdge ( ,area,radius,«accesses») H Circle «class» area «operation» circumfer «operation» radius «attribute» «accesses» «invokes» Pushout construction L2L2 area «operation» circumfer «operation» R2R2 area «operation» circumfer «operation» «invokes» G2G2 Circle «class» area «operation» «accesses» circumfer «operation» radius «attribute» «invokes» Refinement ( ,area,circumference,«uses») m2m2 L area «operation» Pullback construction area «operation»

18 Current research E V O L U T I O N Better support for software merging Manage evolution of design patterns Assess need for evolution F O R M A L I S M S Graph rewriting Declarative reasoning Software metrics

19 Manage Evolution of Design Patterns  Using declarative metaprogramming  symbiosis between declarative metalanguage (e.g. Prolog) and OO base language (e.g. Smalltalk)  allows declarative programs to reason about, or even generate, object-oriented code  can be used to  detect design patterns instances in the source code  specify design patterns (and their instances) declaratively  generate design patterns in the code  explore the use of different variants of a design pattern  manage evolution of design pattern instances  Example  Use declarative transformations to resolve merge conflicts between parallel evolutions of same design pattern instance

20 Manage Evolution of Design Patterns  Example: Abstract Factory design pattern

21 Manage Evolution of Design Patterns  Abstract Factory evolution 1: addConcreteFactory(LinuxLook)

22 Manage Evolution of Design Patterns  Declarative transformation: rule addConcreteFactory(abstractFactory,?I,[?CF]) if addRole(?I,concreteFactory,?CF),  ?AP such that role(?I,abstractProduct,?AP): input(' Name of concrete ?AP created by concrete ?CF factory ',[?AP,?CF],?CP), addRole(?I,concreteProduct,[?CP,?AP]), addRole(?I,concreteRelation,[?CF,?CP]),  ?Method such that role(?I,abstractFactoryMethod,[?Method,_]): addRole(?I,concreteFactoryMethod,[?Method,?CF]) query addConcreteFactory(abstractFactory,AF,[LinuxLook]) User input: Name of concrete Window created by concrete LinuxLook factory: LinuxWindow Name of concrete Button created by concrete LinuxLook factory: LinuxButton

23 Manage Evolution of Design Patterns  Abstract Factory evolution 2: addAbstractProduct(Menu)

24 Manage Evolution of Design Patterns  When both Abstract Factory evolutions are performed manually by different developers, we get a merge conflict:  the Menu class does not contain a LinuxMenu subclass  the LinuxLook class does not contain a newMenu factory method  Solution:  specify the evolutions as explicit declarative design pattern transformations  apply these transformations sequentially

25 Manage Evolution of Design Patterns  End result after having applied both transformations:

26 Current research E V O L U T I O N Better support for software merging Manage evolution of design patterns Assess need for evolution F O R M A L I S M S Graph rewriting Declarative reasoning Software metrics

27 Assess need for evolution  Use declarative metaprogramming and software metrics to  analyse need for software evolution (= before)  by identifying unstable parts, weak spots, bad design Example 1: automatically detect different uses of inheritance  interface/implementation inheritance  extension/cancellation inheritance  abstraction/concretisation inheritance detect “bad practices”  e.g. mixture of interface and implementation inheritance  heavy use of cancellation and abstraction inheritance Example 2: identify opportunities for refactoring  classes with common behaviour but no common superclass (and vice versa) => introduce (resp. remove) abstract superclass

28 Software Metrics  Use graphs to provide a generic framework for (object- oriented) software metrics  automatically generate metrics suite for particular language  In collaboration with Michele Lanza, University of Berne Hierarchy Nesting Level Number of (public/instance/...) attributes of a class Number of (abstract/public/instance/...) methods in a class Number of invocations in a method Number of method lines/statements Number of (immediate/transitive) parents/children of a class Number of accessors of a given attribute Method/Attribute Inheritance Factor Method/Attribute Hiding Factor SyClMe At Ca St Li Co Ac Co In Ov,Ex In PathLength NodeCount EdgeCount Ratio Sum Average

29 International Contacts  Co-founder, coordinator and secretary of FWO Wetenschappelijke OnderzoeksGemeenschap Fundamenten van Software-Evolutie  January December 2005  4 Flemish research institutes: KUL, RUG, UA, VUB  5 European research institutes: Bern, Vienna, Munich, Paderborn, Lisboa  Co-organiser of Workshop on Formal Foundations of Software Evolution  Lisboa, March 2001, co-located with CSMR 2001  together with Prof. Michel Wermelinger, Universidade Nova de Lisboa  Co-organiser of Workshop on Object-Oriented Architectural Evolution  Budapest, June 2001, co-located with ECOOP 2001  together with Prof. Galal H. Galal, University of Middlesex London  Co-organiser of Workshop on Graph-Based Tools  October 2002, co-located with ICGT 2002  together with Andy Schurr and Gaby Taentzer