Identifying Traits with Formal Concept Analysis
Upcoming SlideShare
Loading in...5
×
 

Identifying Traits with Formal Concept Analysis

on

  • 1,352 views

 

Statistics

Views

Total Views
1,352
Slideshare-icon Views on SlideShare
1,328
Embed Views
24

Actions

Likes
1
Downloads
17
Comments
0

2 Embeds 24

http://www.adrian-lienhard.ch 23
http://adrian.cmsbox.biz 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Identifying Traits with Formal Concept Analysis Identifying Traits with Formal Concept Analysis Presentation Transcript

    • Identifying Traits with Formal Concept Analysis Adrian Lienhard, Stéphane Ducasse and Gabriela Arévalo Software Composition Group University of Berne, Switzerland
    • Overview “too high”... ...cancelled duplicated methods ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 2 / 16
    • Overview “too high”... ...cancelled duplicated methods ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 2 / 16
    • Overview “too high”... ...cancelled duplicated methods traits ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 2 / 16
    • Overview “too high”... ...cancelled FCA duplicated methods traits ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 2 / 16
    • Background: Traits in a Nutshell Generic properties GraphicalObject Colored Bordered Circle Polygon ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 3 / 16
    • Background: Traits in a Nutshell Generic properties GraphicalObject Colored Bordered Circle Polygon ColoredCircle BorderedColoredPol. Colored Bordered Colored ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 3 / 16
    • Background: Traits in a Nutshell Generic properties GraphicalObject Colored Bordered Circle Polygon ColoredCircle BorderedColoredPol. Single inheritance: limited expressiveness Colored Bordered Multiple inheritance: Colored complexity Mixin inheritance: fragility Goal of traits: reuse mechanism due to linearization avoiding complexity ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 3 / 16
    • Background: Traits in a Nutshell Reuse mechanism Trait = “interface with implementation” complementary to TColored inheritance [ECOOP’03] { } red rgb provided green rgb: required Today in Perl 6, Squeak, = Scala, Fortress, ... methods methods hash ... ... ... ColoredCircle BorderedColoredPol. trait composition TColored TBordered ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 4 / 16
    • Roadmap ‣ FCA in a nutshell ‣ Approach overview ‣ Illustration of our approach on case study ‣ Evaluation of case study ‣ Conclusion ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 5 / 16
    • FCA in a Nutshell properties small far moon Mercur x elements y Mars x x Jupiter x x Pluto x x x Concept: maximal group of elements based on their common properties ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 6 / 16
    • FCA in a Nutshell properties small far moon Mercur x elements y Mars x x Jupiter x x Pluto x x x Concept: maximal group of elements based on their common properties {Mars, Pluto, Jupiter},{moon} ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 6 / 16
    • FCA in a Nutshell properties small far moon Mercur x elements y Mars x x Jupiter x x Pluto x x x Concept: maximal group of elements based on their common properties {Mars, Pluto, Jupiter},{moon} {Pluto, Jupiter},{moon, far} ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 6 / 16
    • FCA in a Nutshell properties Me, Ma, Ju, Pl small far moon Mercur x elements y Mars x x Me, Ma, Pl Ma, Ju, Pl Jupiter x x small moon Pluto x x x Ma, Pl Ju, Pl small, moon moon, far Concept: maximal group of elements Pl based on their common properties small, moon, far Concept Lattice {Mars, Pluto, Jupiter},{moon} {Pluto, Jupiter},{moon, far} ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 6 / 16
    • FCA in a Nutshell properties Me, Ma, Ju, Pl small far moon Mercur x elements y Mars x x Me, Ma, Pl Ma, Ju, Pl Jupiter x x small moon Pluto x x x Ma, Pl Ju, Pl small, moon moon, far Concept: maximal group of elements Pl based on their common properties small, moon, far Concept Lattice {Mars, Pluto, Jupiter},{moon} less elements {Pluto, Jupiter},{moon, far} more properties ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 6 / 16
    • Approach Overview Stage 1 input generation FCA application filtering manual selection { Stage 2 for each class and trait input generation FCA application manual selection ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 7 / 16
    • Case Study ‣ ST-80 Stream and Collection libraries ‣ Comparison with purely manual refactoring [OOPSLA’03] ‣ Illustration of our approach on example of Stream hierarchy... ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 8 / 16
    • Generating Input for FCA Detecting cancellations and duplications Stage 1 Identify real interface of a class taking into account... ... Stream Idiom “too high” next boolean ‣ implement methods “too sends message next int32 ... high” in common superclass ‣ (implicitly) cancel methods WriteStream ReadStream in inappropriate subclasses ... ... next next ... .... ReadWriteStream ... next Fact ST-80 Collection library: ... 131 methods too high (~10%), and of those, 106 implicitly cancelled ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 9 / 16
    • Generating Input for FCA Detecting cancellations and duplications Stage 1 Identify real interface of a class taking into account... invokes ... Stream Idiom “too high” cancelled next ‣ implement methods “too boolean method int32 sends message next high” in common superclass ... ‣ (implicitly) cancel methods WriteStream ReadStream in inappropriate subclasses ... ... next next ... .... ReadWriteStream ... next Fact ST-80 Collection library: ... 131 methods too high (~10%), and of those, 106 implicitly cancelled ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 9 / 16
    • Applying FCA Stage 1 Elements: all concrete classes Properties: all concrete methods (identifying duplications) Mapping: method in the real interface of the class WS, RWS, RS atEnd WS, RWS RWS, RS atEnd, nextPut:, atEnd, next, next:put: boolean WS RWS RS atEnd, nextPut:, atEnd, nextPut:, atEnd, next, next:put:, next:put:, next, boolean, contents1 boolean, contents2 contents3 atEnd, nextPut:, next:put: next, boolean, contents1,2,3 ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 10 / 16
    • Filtering Stage 1 ‣ reduce properties-sets to delta between sub-/superconcept ‣ remove concepts with no classes WS, RWS, RS atEnd WS, RWS RWS, RS nextPut:, next, boolean next:put: WS RWS RS contents1 contents2 contents3 ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 11 / 16
    • Selecting Traits and Hierarchy Reconstruction Stage 1 Partly manual task: deciding whether a concept becomes a class or a trait Stream WriteStream ReadWriteStream ReadStream TWriteableStream TReadableStream ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 12 / 16
    • Invocation Analysis Stage 2 Generating input: analyzing transitive method invocations of the class/trait Applying FCA ‣ elements: all methods of the class/trait ‣ properties: (transitive) method invocations ‣ mapping: identifying invocations with methods ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 13 / 16
    • Selecting Traits Stage 2 Manual task of selecting traits. Lattice provides interesting alternatives: ‣ Additional methods in super-concepts ‣ Fewer methods in sub-concepts Stream ReadStream ReadWriteStream WriteStream TReadableStream TWriteableStream TReadableMultiple TWriteablePutData TReadableFileIn TWriteablePutCharacter TWriteableMultiple ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 14 / 16
    • Comparison with Manual Refactoring Stream library ‣ almost identical result: inheritance reshaping + two main traits ‣ difference: conceptual vs. functional sub-traits Collection library ‣ Manual refactoring has identified more traits ‣ Different layers of traits with overriding behavior ‣ Our approach curative, manual approach speculative ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 15 / 16
    • Conclusion ‣ Succeeded in curing problems by restructuring hierarchy with traits (stage 1) ‣ Successful identification of fine-grained traits also when code is not shared (stage 2). ‣ Limitations: • Detection based on conceptual meaning of methods alone not possible • Missing methods can cause too small traits ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 16 / 16
    • Conclusion ‣ Succeeded in curing problems by restructuring hierarchy with traits (stage 1) ‣ Successful identification of fine-grained traits also when code is not shared (stage 2). ‣ Limitations: • Detection based on conceptual meaning of methods alone not possible • Missing methods can cause too small traits Questions? ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 16 / 16
    • Refactored Collection Hierarchy Legend: Collection inherits from composed from Set SequenceableCollection SortedCollection OrderedCollection Array TRemoving- TOrderedSorted- TSequenced- Elements Common ElementAccess ASE‘05 - Identifying Traits with FCA Adrian Lienhard - lienhard@iam.unibe.ch 17 / 16