SlideShare a Scribd company logo
1 of 37
Download to read offline
Yann-Gaël Guéhéneuc
© Yann-Gaël Guéhéneuc
This presentation has been given at APSEC 2004, the 2nd of December 2004, in Busan, Korea.
Software Engineering Laboratory
Department of Computing Science and Operations Research
University of Montreal
Systematic Study of UML Class
Diagram Constituents for their
Abstract and Precise Recovery
guehene@iro.umontreal.ca
2004/12/02
2/25
Context
n UML is a standard
– Used in industry
– Taught in universities
n UML is not a standard
– Imprecise
– Heavy
3/25
Problem
n But “lost” class diagrams
– Missing, out-of-date
n Maintenance > 50% of cost
– Program understanding > 50% of time
• Developers
• Maintainers
• Architecture
• Behaviour
• Design choices
• Implementation
4/25
Problem (cont’d)
n Lack of automated recovery tools
– Class diagrams
• Abstract
– Concentrate the essential qualities of anything more
extensive or of several things
(≠ Graphical representations of source code)
• Precise
– Extent to which a given measurement agrees with a
standard value
(Original and–or expected class diagrams)
5/25
Example
5/25
Example
public class A { ... }
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];
}
public void removeA(final A a) {
// ...
}
public static void main(final String[] args) {
final Example1 example1 = new Example1();
example1.addA(new A());
// ...
}
}
5/25
Example
public class A { ... }
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];
}
public void removeA(final A a) {
// ...
}
public static void main(final String[] args) {
final Example1 example1 = new Example1();
example1.addA(new A());
// ...
}
}
6/25
Example (cont’d)
6/25
Example (cont’d)
public class A { ... }
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());
// ...
}
}
6/25
Example (cont’d)
public class A { ... }
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());
// ...
}
}
7/25
Example (cont’d)
7/25
Example (cont’d)
Precise
7/25
Example (cont’d)
Precise
Association à Aggregation
7/25
Example (cont’d)
Precise
Association à Aggregation
Abstract
7/25
Example (cont’d)
Precise
Association à Aggregation
Abstract
List is not important
8/25
Solution
n Systematic study of class diagram
constituents for their abstract and
precise recovery
– 34 constituents (UML meta-model)
– C++, Java, and Smalltalk
– Prototype tool
9/25
Related Work
n Number of constituents of class
diagrams handled by tools
Recovered UML constituents in %
ArgoUML 7/34 21
Chava 7/34 21
Fujaba 7/34 21
IDEA 16/34 48
Rational Rose 8/34 24
Borland Together/J 8/34 24
Womble 9/34 28
10/25
Hypotheses
n Class-based programming languages
n Class diagrams document design
during development and maintenance
n Context dependant definitions of the
constituents (⇒ incrementality)
11/25
Systematic Study
n Classifier features
– Attribute üü
– Method üü
– Operations üû
• Abstract public methods
• Overloaded methods
• (Comments, documentation)
Abstract, Precise
12/25
Systematic Study
n Classifier relationships
– Binary association üü
– Association end N/A
– Multiplicity üû
– Qualifier üû
– Association class ûû
– N-ary association ûû
– Aggregation üü
– Composition üû
– Generalisation ûü
– Dependency ûû
Abstract, Precise
13/25
Systematic Study
n Classifiers
– Class üü
– Nested class ûü
– Type üü
– Implementation class üü
– Interface üü
– Parameterised class üü
– Bound Element üü
– Metaclass üü
– Powertype ûû
– Data Type üü
– Enumeration üü
– Utility class üü
Relationships
to Other from OtherClassifiers Attributes Operations Methods
Classifiers
Class ü ü ü ü ü
Implementation Class ü û ü û û
Interface û ü û û ü
Type ü ü û ü ü
Abstract, Precise
14/25
Systematic Study
n Miscellaneous
– Stereotype üû
– Class pathname üü
– Importing packages üü
– Object N/A
– Composite object N/A
– Link N/A
– Instance of üü
– Derived element
– List compartment N/A
– Name compartment N/A
Abstract, Precise
15/25
Discussion
n Consensual definitions?
n Base of comparison?
16/25
Prototype Tool
n Ptidej
– Pattern Trace Identification, Detection, and
Enhancement in Java
• Also “breakfast” in French slang J
– Open framework for high-level program
analyses, visualisation, pattern detection
• More at www.ptidej.net
– Executable (.exe, .jar)
– Source code
17/25
Prototype Tool (cont’d)
n Ptidej
Java
Model
Abstract and
Precise Model
Dedicated Parsers
Transformations
based on the
Systematic Study
PADL
Meta-Model
C++
18/25
Prototype Tool (cont’d)
n Ptidej
Recovered UML constituents in %
ArgoUML 7/34 21
Chava 7/34 21
Fujaba 7/34 21
IDEA 16/34 48
Ptidej 21/34 62
Rational Rose 8/34 24
Borland Together/J 8/34 24
Womble 9/34 28
19/25
Prototype Tool (cont’d)
n Ptidej
– Association, aggregation, and composition
binary class relationships
• Message sends
• Invocation sites
– Simple fields
– Arrays, collections
• Lifetime and exclusivity properties
20/25
Prototype Tool (cont’d)
n Ptidej
– Classes, data types, implementation
classes, interfaces, types, utility classes
• Abstractness
• Attributes
• Methods (instance vs. class)
• Operations
• Relationships
• Super-classes
21/25
Example revisited
public class A { ... }
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];
}
public void removeA(final A a) {
// ...
}
public static void main(final String[] args) {
final Example1 example1 = new Example1();
example1.addA(new A());
// ...
}
}
21/25
Example revisited
public class A { ... }
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];
}
public void removeA(final A a) {
// ...
}
public static void main(final String[] args) {
final Example1 example1 = new Example1();
example1.addA(new A());
// ...
}
}
22/25
Example revisited (cont’d)
public class A { ... }
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());
// ...
}
}
22/25
Example revisited (cont’d)
public class A { ... }
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());
// ...
}
}
23/25
Example revisited (cont’d)
23/25
Example revisited (cont’d)
Precise
23/25
Example revisited (cont’d)
Precise Abstract
24/25
Conclusion
n Exhaustive and systematic study of
UML class diagram constituents
n Prototype tool implementing algorithms
for abstract and precise recovery
n Recovery of more constituents than any
other tools
25/25
Future Work
n UML v2.0
n Other programming languages
– Eiffel
n Other source of information
– Comments, names
– Documentation
n Other diagrams
– Sequence diagrams + Integration
n Base(s) of comparison

More Related Content

What's hot

Numerical analysis using Scilab: Error analysis and propagation
Numerical analysis using Scilab: Error analysis and propagationNumerical analysis using Scilab: Error analysis and propagation
Numerical analysis using Scilab: Error analysis and propagationScilab
 
Numerical analysis using Scilab: Solving nonlinear equations
Numerical analysis using Scilab: Solving nonlinear equationsNumerical analysis using Scilab: Solving nonlinear equations
Numerical analysis using Scilab: Solving nonlinear equationsScilab
 
Scilab for real dummies j.heikell - part 2
Scilab for real dummies j.heikell - part 2Scilab for real dummies j.heikell - part 2
Scilab for real dummies j.heikell - part 2Scilab
 
Numerical analysis using Scilab: Numerical stability and conditioning
Numerical analysis using Scilab: Numerical stability and conditioningNumerical analysis using Scilab: Numerical stability and conditioning
Numerical analysis using Scilab: Numerical stability and conditioningScilab
 
Lecture 19 matlab_script&function_files06
Lecture 19 matlab_script&function_files06Lecture 19 matlab_script&function_files06
Lecture 19 matlab_script&function_files06Aman kazmi
 
Scilab for real dummies j.heikell - part3
Scilab for real dummies j.heikell - part3Scilab for real dummies j.heikell - part3
Scilab for real dummies j.heikell - part3Scilab
 
Modeling an ODE: 3 different approaches - Part 1
Modeling an ODE: 3 different approaches - Part 1Modeling an ODE: 3 different approaches - Part 1
Modeling an ODE: 3 different approaches - Part 1Scilab
 
BCA DATA STRUCTURES ALGORITHMS AND PRELIMINARIES MRS SOWMYA JYOTHI
BCA DATA STRUCTURES ALGORITHMS AND PRELIMINARIES MRS SOWMYA JYOTHIBCA DATA STRUCTURES ALGORITHMS AND PRELIMINARIES MRS SOWMYA JYOTHI
BCA DATA STRUCTURES ALGORITHMS AND PRELIMINARIES MRS SOWMYA JYOTHISowmya Jyothi
 

What's hot (9)

Numerical analysis using Scilab: Error analysis and propagation
Numerical analysis using Scilab: Error analysis and propagationNumerical analysis using Scilab: Error analysis and propagation
Numerical analysis using Scilab: Error analysis and propagation
 
Numerical analysis using Scilab: Solving nonlinear equations
Numerical analysis using Scilab: Solving nonlinear equationsNumerical analysis using Scilab: Solving nonlinear equations
Numerical analysis using Scilab: Solving nonlinear equations
 
Scilab for real dummies j.heikell - part 2
Scilab for real dummies j.heikell - part 2Scilab for real dummies j.heikell - part 2
Scilab for real dummies j.heikell - part 2
 
Numerical analysis using Scilab: Numerical stability and conditioning
Numerical analysis using Scilab: Numerical stability and conditioningNumerical analysis using Scilab: Numerical stability and conditioning
Numerical analysis using Scilab: Numerical stability and conditioning
 
Lecture 19 matlab_script&function_files06
Lecture 19 matlab_script&function_files06Lecture 19 matlab_script&function_files06
Lecture 19 matlab_script&function_files06
 
Scilab for real dummies j.heikell - part3
Scilab for real dummies j.heikell - part3Scilab for real dummies j.heikell - part3
Scilab for real dummies j.heikell - part3
 
Modeling an ODE: 3 different approaches - Part 1
Modeling an ODE: 3 different approaches - Part 1Modeling an ODE: 3 different approaches - Part 1
Modeling an ODE: 3 different approaches - Part 1
 
Introduction to matlab
Introduction to matlabIntroduction to matlab
Introduction to matlab
 
BCA DATA STRUCTURES ALGORITHMS AND PRELIMINARIES MRS SOWMYA JYOTHI
BCA DATA STRUCTURES ALGORITHMS AND PRELIMINARIES MRS SOWMYA JYOTHIBCA DATA STRUCTURES ALGORITHMS AND PRELIMINARIES MRS SOWMYA JYOTHI
BCA DATA STRUCTURES ALGORITHMS AND PRELIMINARIES MRS SOWMYA JYOTHI
 

Similar to Apsec04.ppt

Introduction to new features in java 8
Introduction to new features in java 8Introduction to new features in java 8
Introduction to new features in java 8Raffi Khatchadourian
 
Object Oriented Principle’s
Object Oriented Principle’sObject Oriented Principle’s
Object Oriented Principle’svivek p s
 
Class 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented ProgrammingClass 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented ProgrammingAhmed Swilam
 
Chapter 6.6
Chapter 6.6Chapter 6.6
Chapter 6.6sotlsoc
 
Effective java-3rd-edition-ch4
Effective java-3rd-edition-ch4Effective java-3rd-edition-ch4
Effective java-3rd-edition-ch4Matt
 
Применение паттерна Page Object для автоматизации веб сервисов
Применение паттерна Page Object для автоматизации веб сервисовПрименение паттерна Page Object для автоматизации веб сервисов
Применение паттерна Page Object для автоматизации веб сервисовCOMAQA.BY
 
Core Java Programming Language (JSE) : Chapter IX - Collections and Generic F...
Core Java Programming Language (JSE) : Chapter IX - Collections and Generic F...Core Java Programming Language (JSE) : Chapter IX - Collections and Generic F...
Core Java Programming Language (JSE) : Chapter IX - Collections and Generic F...WebStackAcademy
 
The Expression Problem (as part of the the PTT lecture)
The Expression Problem (as part of the the PTT lecture)The Expression Problem (as part of the the PTT lecture)
The Expression Problem (as part of the the PTT lecture)Ralf Laemmel
 
EContent_11_2023_04_09_11_30_38_Unit_3_Objects_and_Classespptx__2023_03_20_12...
EContent_11_2023_04_09_11_30_38_Unit_3_Objects_and_Classespptx__2023_03_20_12...EContent_11_2023_04_09_11_30_38_Unit_3_Objects_and_Classespptx__2023_03_20_12...
EContent_11_2023_04_09_11_30_38_Unit_3_Objects_and_Classespptx__2023_03_20_12...vekariyakashyap
 
C++ Programming Course
C++ Programming CourseC++ Programming Course
C++ Programming CourseDennis Chang
 
Ccourse 140618093931-phpapp02
Ccourse 140618093931-phpapp02Ccourse 140618093931-phpapp02
Ccourse 140618093931-phpapp02Getachew Ganfur
 
Java Generics
Java GenericsJava Generics
Java Genericsjeslie
 
java150929145120-lva1-app6892 (2).pptx
java150929145120-lva1-app6892 (2).pptxjava150929145120-lva1-app6892 (2).pptx
java150929145120-lva1-app6892 (2).pptxBruceLee275640
 
Class & Object - User Defined Method
Class & Object - User Defined MethodClass & Object - User Defined Method
Class & Object - User Defined MethodPRN USM
 

Similar to Apsec04.ppt (20)

APSEC04.ppt
APSEC04.pptAPSEC04.ppt
APSEC04.ppt
 
Java generics
Java genericsJava generics
Java generics
 
Introduction to new features in java 8
Introduction to new features in java 8Introduction to new features in java 8
Introduction to new features in java 8
 
Introduction to new features in java 8
Introduction to new features in java 8Introduction to new features in java 8
Introduction to new features in java 8
 
Object Oriented Principle’s
Object Oriented Principle’sObject Oriented Principle’s
Object Oriented Principle’s
 
Class 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented ProgrammingClass 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented Programming
 
Chapter 6.6
Chapter 6.6Chapter 6.6
Chapter 6.6
 
Effective java-3rd-edition-ch4
Effective java-3rd-edition-ch4Effective java-3rd-edition-ch4
Effective java-3rd-edition-ch4
 
Применение паттерна Page Object для автоматизации веб сервисов
Применение паттерна Page Object для автоматизации веб сервисовПрименение паттерна Page Object для автоматизации веб сервисов
Применение паттерна Page Object для автоматизации веб сервисов
 
Core Java Programming Language (JSE) : Chapter IX - Collections and Generic F...
Core Java Programming Language (JSE) : Chapter IX - Collections and Generic F...Core Java Programming Language (JSE) : Chapter IX - Collections and Generic F...
Core Java Programming Language (JSE) : Chapter IX - Collections and Generic F...
 
The Expression Problem (as part of the the PTT lecture)
The Expression Problem (as part of the the PTT lecture)The Expression Problem (as part of the the PTT lecture)
The Expression Problem (as part of the the PTT lecture)
 
EContent_11_2023_04_09_11_30_38_Unit_3_Objects_and_Classespptx__2023_03_20_12...
EContent_11_2023_04_09_11_30_38_Unit_3_Objects_and_Classespptx__2023_03_20_12...EContent_11_2023_04_09_11_30_38_Unit_3_Objects_and_Classespptx__2023_03_20_12...
EContent_11_2023_04_09_11_30_38_Unit_3_Objects_and_Classespptx__2023_03_20_12...
 
Jar chapter 5_part_i
Jar chapter 5_part_iJar chapter 5_part_i
Jar chapter 5_part_i
 
Lecture 5
Lecture 5Lecture 5
Lecture 5
 
C++ Programming Course
C++ Programming CourseC++ Programming Course
C++ Programming Course
 
Ccourse 140618093931-phpapp02
Ccourse 140618093931-phpapp02Ccourse 140618093931-phpapp02
Ccourse 140618093931-phpapp02
 
Java Generics
Java GenericsJava Generics
Java Generics
 
java150929145120-lva1-app6892 (2).pptx
java150929145120-lva1-app6892 (2).pptxjava150929145120-lva1-app6892 (2).pptx
java150929145120-lva1-app6892 (2).pptx
 
CS3391 -OOP -UNIT – II NOTES FINAL.pdf
CS3391 -OOP -UNIT – II  NOTES FINAL.pdfCS3391 -OOP -UNIT – II  NOTES FINAL.pdf
CS3391 -OOP -UNIT – II NOTES FINAL.pdf
 
Class & Object - User Defined Method
Class & Object - User Defined MethodClass & Object - User Defined Method
Class & Object - User Defined Method
 

More from Yann-Gaël Guéhéneuc

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Yann-Gaël Guéhéneuc
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Yann-Gaël Guéhéneuc
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Yann-Gaël Guéhéneuc
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Yann-Gaël Guéhéneuc
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Yann-Gaël Guéhéneuc
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...Yann-Gaël Guéhéneuc
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesYann-Gaël Guéhéneuc
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Yann-Gaël Guéhéneuc
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1Yann-Gaël Guéhéneuc
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6Yann-Gaël Guéhéneuc
 

More from Yann-Gaël Guéhéneuc (20)

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its Consequences
 
Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
 
Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6
 
ICSOC'21
ICSOC'21ICSOC'21
ICSOC'21
 
Vissoft21.ppt
Vissoft21.pptVissoft21.ppt
Vissoft21.ppt
 
Service computation20.ppt
Service computation20.pptService computation20.ppt
Service computation20.ppt
 
Serp4 iot20.ppt
Serp4 iot20.pptSerp4 iot20.ppt
Serp4 iot20.ppt
 
Msr20.ppt
Msr20.pptMsr20.ppt
Msr20.ppt
 
Iwesep19.ppt
Iwesep19.pptIwesep19.ppt
Iwesep19.ppt
 
Icsoc20.ppt
Icsoc20.pptIcsoc20.ppt
Icsoc20.ppt
 
Icsoc18.ppt
Icsoc18.pptIcsoc18.ppt
Icsoc18.ppt
 

Recently uploaded

8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfryanfarris8
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 

Recently uploaded (20)

8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 

Apsec04.ppt

  • 1. Yann-Gaël Guéhéneuc © Yann-Gaël Guéhéneuc This presentation has been given at APSEC 2004, the 2nd of December 2004, in Busan, Korea. Software Engineering Laboratory Department of Computing Science and Operations Research University of Montreal Systematic Study of UML Class Diagram Constituents for their Abstract and Precise Recovery guehene@iro.umontreal.ca 2004/12/02
  • 2. 2/25 Context n UML is a standard – Used in industry – Taught in universities n UML is not a standard – Imprecise – Heavy
  • 3. 3/25 Problem n But “lost” class diagrams – Missing, out-of-date n Maintenance > 50% of cost – Program understanding > 50% of time • Developers • Maintainers • Architecture • Behaviour • Design choices • Implementation
  • 4. 4/25 Problem (cont’d) n Lack of automated recovery tools – Class diagrams • Abstract – Concentrate the essential qualities of anything more extensive or of several things (≠ Graphical representations of source code) • Precise – Extent to which a given measurement agrees with a standard value (Original and–or expected class diagrams)
  • 6. 5/25 Example public class A { ... } 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]; } public void removeA(final A a) { // ... } public static void main(final String[] args) { final Example1 example1 = new Example1(); example1.addA(new A()); // ... } }
  • 7. 5/25 Example public class A { ... } 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]; } public void removeA(final A a) { // ... } public static void main(final String[] args) { final Example1 example1 = new Example1(); example1.addA(new A()); // ... } }
  • 9. 6/25 Example (cont’d) public class A { ... } 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()); // ... } }
  • 10. 6/25 Example (cont’d) public class A { ... } 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()); // ... } }
  • 15. 7/25 Example (cont’d) Precise Association à Aggregation Abstract List is not important
  • 16. 8/25 Solution n Systematic study of class diagram constituents for their abstract and precise recovery – 34 constituents (UML meta-model) – C++, Java, and Smalltalk – Prototype tool
  • 17. 9/25 Related Work n Number of constituents of class diagrams handled by tools Recovered UML constituents in % ArgoUML 7/34 21 Chava 7/34 21 Fujaba 7/34 21 IDEA 16/34 48 Rational Rose 8/34 24 Borland Together/J 8/34 24 Womble 9/34 28
  • 18. 10/25 Hypotheses n Class-based programming languages n Class diagrams document design during development and maintenance n Context dependant definitions of the constituents (⇒ incrementality)
  • 19. 11/25 Systematic Study n Classifier features – Attribute üü – Method üü – Operations üû • Abstract public methods • Overloaded methods • (Comments, documentation) Abstract, Precise
  • 20. 12/25 Systematic Study n Classifier relationships – Binary association üü – Association end N/A – Multiplicity üû – Qualifier üû – Association class ûû – N-ary association ûû – Aggregation üü – Composition üû – Generalisation ûü – Dependency ûû Abstract, Precise
  • 21. 13/25 Systematic Study n Classifiers – Class üü – Nested class ûü – Type üü – Implementation class üü – Interface üü – Parameterised class üü – Bound Element üü – Metaclass üü – Powertype ûû – Data Type üü – Enumeration üü – Utility class üü Relationships to Other from OtherClassifiers Attributes Operations Methods Classifiers Class ü ü ü ü ü Implementation Class ü û ü û û Interface û ü û û ü Type ü ü û ü ü Abstract, Precise
  • 22. 14/25 Systematic Study n Miscellaneous – Stereotype üû – Class pathname üü – Importing packages üü – Object N/A – Composite object N/A – Link N/A – Instance of üü – Derived element – List compartment N/A – Name compartment N/A Abstract, Precise
  • 24. 16/25 Prototype Tool n Ptidej – Pattern Trace Identification, Detection, and Enhancement in Java • Also “breakfast” in French slang J – Open framework for high-level program analyses, visualisation, pattern detection • More at www.ptidej.net – Executable (.exe, .jar) – Source code
  • 25. 17/25 Prototype Tool (cont’d) n Ptidej Java Model Abstract and Precise Model Dedicated Parsers Transformations based on the Systematic Study PADL Meta-Model C++
  • 26. 18/25 Prototype Tool (cont’d) n Ptidej Recovered UML constituents in % ArgoUML 7/34 21 Chava 7/34 21 Fujaba 7/34 21 IDEA 16/34 48 Ptidej 21/34 62 Rational Rose 8/34 24 Borland Together/J 8/34 24 Womble 9/34 28
  • 27. 19/25 Prototype Tool (cont’d) n Ptidej – Association, aggregation, and composition binary class relationships • Message sends • Invocation sites – Simple fields – Arrays, collections • Lifetime and exclusivity properties
  • 28. 20/25 Prototype Tool (cont’d) n Ptidej – Classes, data types, implementation classes, interfaces, types, utility classes • Abstractness • Attributes • Methods (instance vs. class) • Operations • Relationships • Super-classes
  • 29. 21/25 Example revisited public class A { ... } 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]; } public void removeA(final A a) { // ... } public static void main(final String[] args) { final Example1 example1 = new Example1(); example1.addA(new A()); // ... } }
  • 30. 21/25 Example revisited public class A { ... } 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]; } public void removeA(final A a) { // ... } public static void main(final String[] args) { final Example1 example1 = new Example1(); example1.addA(new A()); // ... } }
  • 31. 22/25 Example revisited (cont’d) public class A { ... } 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()); // ... } }
  • 32. 22/25 Example revisited (cont’d) public class A { ... } 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()); // ... } }
  • 36. 24/25 Conclusion n Exhaustive and systematic study of UML class diagram constituents n Prototype tool implementing algorithms for abstract and precise recovery n Recovery of more constituents than any other tools
  • 37. 25/25 Future Work n UML v2.0 n Other programming languages – Eiffel n Other source of information – Comments, names – Documentation n Other diagrams – Sequence diagrams + Integration n Base(s) of comparison