SlideShare a Scribd company logo
1 of 1
Download to read offline
Abstract and Precise Recovery of UML Class Diagram Constituents
     Problem. Reverse-engineered UML class diagrams are neither abstract nor precise representations of
     source code because of the loose definitions of UML constituents                                                                                                                  Yann-Gaël Guéhéneuc
                                                                                                                                                                                    Département d'informatique
                                                                                                                                                                                   et de recherche opérationnelle
     Consequences. Reverse-engineered UML class diagrams are of little interest for software maintainers.
                                                                                                                                                                                        Université de Montréal
                                                                                                                                                                                     CP 6128 succ. Centre Ville
     Solution. We perform an exhaustive study of UML class diagrams constituen ts with respect to their                                                                          Montréal, Québec, H3C 3J7, Canada
     recovery from C++, Java, and Smalltalk source code. We implement a tool suite, Ptidej, to reverse                                                                           E-mail: guehene@iro.umontreal.ca
     engineer Java source code abstractly and precisely (C++ is on th e way).


Example




            Could be implemented as:

  public class A { ... }
                                                                                                               ArgoUML                                     Fujaba                               Rational Rose
  public class Example1 {
      private A[] listOfAs = new A[10];
      private int numberOfAs = 0;
      public void addA(final A a) {
          this.listOfAs[numberOfAs++] = a;
      }
      public A getA(final int index) {
          return this.listOfAs[index];
                                                                           Are reverse-engineered as:




      }
      public void removeA(final A a) {
          // ...
      }
      public static void main(final String[] args) {
          final Example1 example1 = new Example1();
          example1.addA(new A());
          // ...                                                                                                                    These class diagrams are neither abstract nor precise!
      }
  }                       OR
  public class Example2 {
      private List listOfAs = new ArrayList();
      public void addA(final A a) {
          this.listOfAs.add(a);
      }
      public A getA(final int index) {
          return (A) this.listOfAs.remove(index);
      }
      public void removeA(final A a) {
          this.listOfAs.remove(a);
      }
      public static void main(final String[] args) {
          final Example2 example2 = new Example2();
          example2.addA(new A());
          // ...
      }
  }




Solution



    Definitions. We say that something is abstract if it concentrates in itself the
    essential qualities of anything more extensive or more general, or of several
    things. Precision is the extent to which a given measurement agrees with a
    standard value.


    Languages. We study the C++, Java, and Smalltalk languages vs. UML


    Study. We study the abstract and precise recovery of the UML class diagram
    constituents: 36 constituents in 4 categories (classifiers, clas sifier features,
    classifiers relationships, and miscellaneous).
           Constituents      Abstract    Precise         Tools             Constituents                 Abstract Precise     Tools
     Attribute                  ü           ü        All             Composition                           ü        û    IDEA, Ptidej
     Method                     ü           ü        All             Association Class                     û        û    IDEA
     Operation                  ü           ü        Ptidej          N-ary Association                     û        û    IDEA                               These class diagrams are abstract and precise.
     Class                      ü           ü        All             Multiplicity                          ü        û    IDEA, Ptidej
     Nested Class               û           ü        IDEA, Ptidej    Qualifier                             ü        û    IDEA
     Type                       ü           ü        Ptidej          Generalisation                        û        ü    All
     Implemenetation Class      ü           ü        Ptidej          Dependency                            û        û    None
     Interface                  ü        ü (ûStk )   All             Link                                 N/A      N/A   N/A
     Parameterised Class     ü (û Stk)   ü (ûStk )   None            Object                               N/A      N/A   N/A
     Bound Element           ü (û Stk)   ü (ûStk )   None            Composite Object                     N/A      N/A   N/A
     Metaclass                  ü          üStk      None            Derived Element                       û        û    None
     Powertype                  û           û        None            Instance Of                          üStk     üStk  None
     Data Type               ü (û Stk)   ü (ûStk )   Ptidej          Name Compartment                     N/A      N/A   N/A
     Enumeration                ü           ü        Ptidej          List Compartment                     N/A      N/A   N/A
     Utility Class              ü           ü        Ptidej          Class Pathname                        ü        ü    All
     Binary Association         ü           ü        IDEA, Ptidej,   Accessing or Importing                ü        ü    Ptidej, Rose,
                                                     Womble          Package                                             Together/J
     Aggregation                ü           ü        IDEA, Ptidej,   Stereotype Declaration                ü        û    None
                                                     Womble




    Algorithms. We implement algorithms with the PADL meta-model from the Ptidej
    tool suite (Pattern Trace, Identification, Detection, and Enhancement in Java).

More Related Content

What's hot

Uml Omg Fundamental Certification 2
Uml Omg Fundamental Certification 2Uml Omg Fundamental Certification 2
Uml Omg Fundamental Certification 2Ricardo Quintero
 
Java interfaces & abstract classes
Java interfaces & abstract classesJava interfaces & abstract classes
Java interfaces & abstract classesShreyans Pathak
 
Interfaces and abstract classes
Interfaces and abstract classesInterfaces and abstract classes
Interfaces and abstract classesAKANSH SINGHAL
 
An Unorthodox View on Memetic Algorithms
An Unorthodox View on Memetic AlgorithmsAn Unorthodox View on Memetic Algorithms
An Unorthodox View on Memetic AlgorithmsNatalio Krasnogor
 
Querying UML Class Diagrams - FoSSaCS 2012
Querying UML Class Diagrams - FoSSaCS 2012Querying UML Class Diagrams - FoSSaCS 2012
Querying UML Class Diagrams - FoSSaCS 2012Giorgio Orsi
 
06 abstract-classes
06 abstract-classes06 abstract-classes
06 abstract-classesAnup Burange
 
Interface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar SinghInterface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar Singhdheeraj_cse
 
WHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVAWHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVAsivasundari6
 
Solid Principles
Solid PrinciplesSolid Principles
Solid PrinciplesHitheshh
 
Abstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core JavaAbstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core JavaMOHIT AGARWAL
 
From programming to software engineering: ICSE keynote slides available
From programming to software engineering: ICSE keynote slides availableFrom programming to software engineering: ICSE keynote slides available
From programming to software engineering: ICSE keynote slides availableCelso Martins
 
Abstract Class Presentation
Abstract Class PresentationAbstract Class Presentation
Abstract Class Presentationtigerwarn
 

What's hot (20)

Uml Omg Fundamental Certification 2
Uml Omg Fundamental Certification 2Uml Omg Fundamental Certification 2
Uml Omg Fundamental Certification 2
 
Java interfaces & abstract classes
Java interfaces & abstract classesJava interfaces & abstract classes
Java interfaces & abstract classes
 
javainterface
javainterfacejavainterface
javainterface
 
Interfaces and abstract classes
Interfaces and abstract classesInterfaces and abstract classes
Interfaces and abstract classes
 
Abstract class
Abstract classAbstract class
Abstract class
 
Sequence diagrams in UML
Sequence diagrams in UMLSequence diagrams in UML
Sequence diagrams in UML
 
An Unorthodox View on Memetic Algorithms
An Unorthodox View on Memetic AlgorithmsAn Unorthodox View on Memetic Algorithms
An Unorthodox View on Memetic Algorithms
 
Abstract classes and interfaces
Abstract classes and interfacesAbstract classes and interfaces
Abstract classes and interfaces
 
JavaYDL15
JavaYDL15JavaYDL15
JavaYDL15
 
Querying UML Class Diagrams - FoSSaCS 2012
Querying UML Class Diagrams - FoSSaCS 2012Querying UML Class Diagrams - FoSSaCS 2012
Querying UML Class Diagrams - FoSSaCS 2012
 
Poo java
Poo javaPoo java
Poo java
 
06 abstract-classes
06 abstract-classes06 abstract-classes
06 abstract-classes
 
Interface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar SinghInterface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar Singh
 
WHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVAWHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVA
 
Solid Principles
Solid PrinciplesSolid Principles
Solid Principles
 
Lecture 18
Lecture 18Lecture 18
Lecture 18
 
Abstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core JavaAbstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core Java
 
From programming to software engineering: ICSE keynote slides available
From programming to software engineering: ICSE keynote slides availableFrom programming to software engineering: ICSE keynote slides available
From programming to software engineering: ICSE keynote slides available
 
JavaYDL5
JavaYDL5JavaYDL5
JavaYDL5
 
Abstract Class Presentation
Abstract Class PresentationAbstract Class Presentation
Abstract Class Presentation
 

Viewers also liked

Somogyi Attila CV DE modern
Somogyi Attila CV DE modernSomogyi Attila CV DE modern
Somogyi Attila CV DE modernAttila Somogyi
 
Nathan O'Connor Resume M.E.3
Nathan O'Connor Resume M.E.3Nathan O'Connor Resume M.E.3
Nathan O'Connor Resume M.E.3Nathan O'Connor
 
Whitepaper - Strong Professional Relationships Drive High Performance
Whitepaper - Strong Professional Relationships Drive High PerformanceWhitepaper - Strong Professional Relationships Drive High Performance
Whitepaper - Strong Professional Relationships Drive High PerformanceClara McCormack
 
Таргетированная реклама для предпринимателей
Таргетированная реклама для предпринимателейТаргетированная реклама для предпринимателей
Таргетированная реклама для предпринимателейKalaev Vladimir
 
피로사회를통해서본새로운시계에대한고찰 나누리
피로사회를통해서본새로운시계에대한고찰 나누리피로사회를통해서본새로운시계에대한고찰 나누리
피로사회를통해서본새로운시계에대한고찰 나누리Nuri Na
 
160429_Company_Presentation_EN
160429_Company_Presentation_EN160429_Company_Presentation_EN
160429_Company_Presentation_ENJason Bang
 
Specific Multi-drug Resistance MRSA-VRSA-ESBL-KPC
 Specific Multi-drug Resistance MRSA-VRSA-ESBL-KPC Specific Multi-drug Resistance MRSA-VRSA-ESBL-KPC
Specific Multi-drug Resistance MRSA-VRSA-ESBL-KPCAIIMS, New Delhi, India
 
Diseases of the Immune System
Diseases of the Immune SystemDiseases of the Immune System
Diseases of the Immune SystemGhie Santos
 
Advanced EMS Assessment - Reproductive System
Advanced EMS Assessment - Reproductive SystemAdvanced EMS Assessment - Reproductive System
Advanced EMS Assessment - Reproductive SystemEdward Stern
 

Viewers also liked (11)

Resume 2015
Resume 2015Resume 2015
Resume 2015
 
Somogyi Attila CV DE modern
Somogyi Attila CV DE modernSomogyi Attila CV DE modern
Somogyi Attila CV DE modern
 
Nathan O'Connor Resume M.E.3
Nathan O'Connor Resume M.E.3Nathan O'Connor Resume M.E.3
Nathan O'Connor Resume M.E.3
 
Whitepaper - Strong Professional Relationships Drive High Performance
Whitepaper - Strong Professional Relationships Drive High PerformanceWhitepaper - Strong Professional Relationships Drive High Performance
Whitepaper - Strong Professional Relationships Drive High Performance
 
Таргетированная реклама для предпринимателей
Таргетированная реклама для предпринимателейТаргетированная реклама для предпринимателей
Таргетированная реклама для предпринимателей
 
Http
HttpHttp
Http
 
피로사회를통해서본새로운시계에대한고찰 나누리
피로사회를통해서본새로운시계에대한고찰 나누리피로사회를통해서본새로운시계에대한고찰 나누리
피로사회를통해서본새로운시계에대한고찰 나누리
 
160429_Company_Presentation_EN
160429_Company_Presentation_EN160429_Company_Presentation_EN
160429_Company_Presentation_EN
 
Specific Multi-drug Resistance MRSA-VRSA-ESBL-KPC
 Specific Multi-drug Resistance MRSA-VRSA-ESBL-KPC Specific Multi-drug Resistance MRSA-VRSA-ESBL-KPC
Specific Multi-drug Resistance MRSA-VRSA-ESBL-KPC
 
Diseases of the Immune System
Diseases of the Immune SystemDiseases of the Immune System
Diseases of the Immune System
 
Advanced EMS Assessment - Reproductive System
Advanced EMS Assessment - Reproductive SystemAdvanced EMS Assessment - Reproductive System
Advanced EMS Assessment - Reproductive System
 

Similar to Abstract and Precise Recovery of UML Class Diagram Constituents

Designing Architecture-aware Library using Boost.Proto
Designing Architecture-aware Library using Boost.ProtoDesigning Architecture-aware Library using Boost.Proto
Designing Architecture-aware Library using Boost.ProtoJoel Falcou
 
Design Patterns - Part 1 of 2
Design Patterns - Part 1 of 2Design Patterns - Part 1 of 2
Design Patterns - Part 1 of 2Savio Sebastian
 
Software Frameworks
Software FrameworksSoftware Frameworks
Software Frameworksadil raja
 
Static Keyword Static is a keyword in C++ used to give special chara.pdf
  Static Keyword Static is a keyword in C++ used to give special chara.pdf  Static Keyword Static is a keyword in C++ used to give special chara.pdf
Static Keyword Static is a keyword in C++ used to give special chara.pdfKUNALHARCHANDANI1
 
What's New In Python 2.4
What's New In Python 2.4What's New In Python 2.4
What's New In Python 2.4Richard Jones
 
Re-architecting visualisations in Java Swing
Re-architecting visualisations in Java SwingRe-architecting visualisations in Java Swing
Re-architecting visualisations in Java Swingmartinjgraham
 
Core java concepts
Core java  conceptsCore java  concepts
Core java conceptsRam132
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxAbhishek Tirkey
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxGauravPandey43518
 
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...Raffi Khatchadourian
 
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...OOPS in java | Super and this Keyword | Memory Management in java | pacakages...
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...Sagar Verma
 
Object Design - Part 1
Object Design - Part 1Object Design - Part 1
Object Design - Part 1Dhaval Dalal
 
Generic Programming seminar
Generic Programming seminarGeneric Programming seminar
Generic Programming seminarGautam Roy
 

Similar to Abstract and Precise Recovery of UML Class Diagram Constituents (20)

APSEC04.ppt
APSEC04.pptAPSEC04.ppt
APSEC04.ppt
 
Designing Architecture-aware Library using Boost.Proto
Designing Architecture-aware Library using Boost.ProtoDesigning Architecture-aware Library using Boost.Proto
Designing Architecture-aware Library using Boost.Proto
 
Design Patterns - Part 1 of 2
Design Patterns - Part 1 of 2Design Patterns - Part 1 of 2
Design Patterns - Part 1 of 2
 
CASCON04.ppt
CASCON04.pptCASCON04.ppt
CASCON04.ppt
 
Software Frameworks
Software FrameworksSoftware Frameworks
Software Frameworks
 
Static Keyword Static is a keyword in C++ used to give special chara.pdf
  Static Keyword Static is a keyword in C++ used to give special chara.pdf  Static Keyword Static is a keyword in C++ used to give special chara.pdf
Static Keyword Static is a keyword in C++ used to give special chara.pdf
 
Apsec04.ppt
Apsec04.pptApsec04.ppt
Apsec04.ppt
 
Apsec04.ppt
Apsec04.pptApsec04.ppt
Apsec04.ppt
 
What's New In Python 2.4
What's New In Python 2.4What's New In Python 2.4
What's New In Python 2.4
 
Re-architecting visualisations in Java Swing
Re-architecting visualisations in Java SwingRe-architecting visualisations in Java Swing
Re-architecting visualisations in Java Swing
 
Presentation_1370675757603
Presentation_1370675757603Presentation_1370675757603
Presentation_1370675757603
 
Core java concepts
Core java  conceptsCore java  concepts
Core java concepts
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
 
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
 
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...OOPS in java | Super and this Keyword | Memory Management in java | pacakages...
OOPS in java | Super and this Keyword | Memory Management in java | pacakages...
 
Object Design - Part 1
Object Design - Part 1Object Design - Part 1
Object Design - Part 1
 
Generic Programming seminar
Generic Programming seminarGeneric Programming seminar
Generic Programming seminar
 
Java_PPT.pptx
Java_PPT.pptxJava_PPT.pptx
Java_PPT.pptx
 
Interfaces & Packages V2
Interfaces & Packages V2Interfaces & Packages V2
Interfaces & Packages V2
 

More from Ptidej Team

From IoT to Software Miniaturisation
From IoT to Software MiniaturisationFrom IoT to Software Miniaturisation
From IoT to Software MiniaturisationPtidej Team
 
Presentation by Lionel Briand
Presentation by Lionel BriandPresentation by Lionel Briand
Presentation by Lionel BriandPtidej Team
 
Manel Abdellatif
Manel AbdellatifManel Abdellatif
Manel AbdellatifPtidej Team
 
Azadeh Kermansaravi
Azadeh KermansaraviAzadeh Kermansaravi
Azadeh KermansaraviPtidej Team
 
CSED - Manel Grichi
CSED - Manel GrichiCSED - Manel Grichi
CSED - Manel GrichiPtidej Team
 
Cristiano Politowski
Cristiano PolitowskiCristiano Politowski
Cristiano PolitowskiPtidej Team
 
Will io t trigger the next software crisis
Will io t trigger the next software crisisWill io t trigger the next software crisis
Will io t trigger the next software crisisPtidej Team
 
Thesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptThesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptPtidej Team
 
Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptPtidej Team
 

More from Ptidej Team (20)

From IoT to Software Miniaturisation
From IoT to Software MiniaturisationFrom IoT to Software Miniaturisation
From IoT to Software Miniaturisation
 
Presentation
PresentationPresentation
Presentation
 
Presentation
PresentationPresentation
Presentation
 
Presentation
PresentationPresentation
Presentation
 
Presentation by Lionel Briand
Presentation by Lionel BriandPresentation by Lionel Briand
Presentation by Lionel Briand
 
Manel Abdellatif
Manel AbdellatifManel Abdellatif
Manel Abdellatif
 
Azadeh Kermansaravi
Azadeh KermansaraviAzadeh Kermansaravi
Azadeh Kermansaravi
 
Mouna Abidi
Mouna AbidiMouna Abidi
Mouna Abidi
 
CSED - Manel Grichi
CSED - Manel GrichiCSED - Manel Grichi
CSED - Manel Grichi
 
Cristiano Politowski
Cristiano PolitowskiCristiano Politowski
Cristiano Politowski
 
Will io t trigger the next software crisis
Will io t trigger the next software crisisWill io t trigger the next software crisis
Will io t trigger the next software crisis
 
MIPA
MIPAMIPA
MIPA
 
Thesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptThesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.ppt
 
Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.ppt
 
Medicine15.ppt
Medicine15.pptMedicine15.ppt
Medicine15.ppt
 
Qrs17b.ppt
Qrs17b.pptQrs17b.ppt
Qrs17b.ppt
 
Icpc11c.ppt
Icpc11c.pptIcpc11c.ppt
Icpc11c.ppt
 
Icsme16.ppt
Icsme16.pptIcsme16.ppt
Icsme16.ppt
 
Msr17a.ppt
Msr17a.pptMsr17a.ppt
Msr17a.ppt
 
Icsoc15.ppt
Icsoc15.pptIcsoc15.ppt
Icsoc15.ppt
 

Abstract and Precise Recovery of UML Class Diagram Constituents

  • 1. Abstract and Precise Recovery of UML Class Diagram Constituents Problem. Reverse-engineered UML class diagrams are neither abstract nor precise representations of source code because of the loose definitions of UML constituents Yann-Gaël Guéhéneuc Département d'informatique et de recherche opérationnelle Consequences. Reverse-engineered UML class diagrams are of little interest for software maintainers. Université de Montréal CP 6128 succ. Centre Ville Solution. We perform an exhaustive study of UML class diagrams constituen ts with respect to their Montréal, Québec, H3C 3J7, Canada recovery from C++, Java, and Smalltalk source code. We implement a tool suite, Ptidej, to reverse E-mail: guehene@iro.umontreal.ca engineer Java source code abstractly and precisely (C++ is on th e way). Example Could be implemented as: public class A { ... } ArgoUML Fujaba Rational Rose public class Example1 { private A[] listOfAs = new A[10]; private int numberOfAs = 0; public void addA(final A a) { this.listOfAs[numberOfAs++] = a; } public A getA(final int index) { return this.listOfAs[index]; Are reverse-engineered as: } public void removeA(final A a) { // ... } public static void main(final String[] args) { final Example1 example1 = new Example1(); example1.addA(new A()); // ... These class diagrams are neither abstract nor precise! } } OR public class Example2 { private List listOfAs = new ArrayList(); public void addA(final A a) { this.listOfAs.add(a); } public A getA(final int index) { return (A) this.listOfAs.remove(index); } public void removeA(final A a) { this.listOfAs.remove(a); } public static void main(final String[] args) { final Example2 example2 = new Example2(); example2.addA(new A()); // ... } } Solution Definitions. We say that something is abstract if it concentrates in itself the essential qualities of anything more extensive or more general, or of several things. Precision is the extent to which a given measurement agrees with a standard value. Languages. We study the C++, Java, and Smalltalk languages vs. UML Study. We study the abstract and precise recovery of the UML class diagram constituents: 36 constituents in 4 categories (classifiers, clas sifier features, classifiers relationships, and miscellaneous). Constituents Abstract Precise Tools Constituents Abstract Precise Tools Attribute ü ü All Composition ü û IDEA, Ptidej Method ü ü All Association Class û û IDEA Operation ü ü Ptidej N-ary Association û û IDEA These class diagrams are abstract and precise. Class ü ü All Multiplicity ü û IDEA, Ptidej Nested Class û ü IDEA, Ptidej Qualifier ü û IDEA Type ü ü Ptidej Generalisation û ü All Implemenetation Class ü ü Ptidej Dependency û û None Interface ü ü (ûStk ) All Link N/A N/A N/A Parameterised Class ü (û Stk) ü (ûStk ) None Object N/A N/A N/A Bound Element ü (û Stk) ü (ûStk ) None Composite Object N/A N/A N/A Metaclass ü üStk None Derived Element û û None Powertype û û None Instance Of üStk üStk None Data Type ü (û Stk) ü (ûStk ) Ptidej Name Compartment N/A N/A N/A Enumeration ü ü Ptidej List Compartment N/A N/A N/A Utility Class ü ü Ptidej Class Pathname ü ü All Binary Association ü ü IDEA, Ptidej, Accessing or Importing ü ü Ptidej, Rose, Womble Package Together/J Aggregation ü ü IDEA, Ptidej, Stereotype Declaration ü û None Womble Algorithms. We implement algorithms with the PADL meta-model from the Ptidej tool suite (Pattern Trace, Identification, Detection, and Enhancement in Java).