Modular Architecture
Recommendation System
  Analysis of System Decompositions
through Coupling and Cohesion metrics




 ...
The Problem

 An incorrect system modularization can lead
    to the degradation of the architecture


Software Architectu...
Introduction




Software systems are complex

                               3
Introduction


Software Architecture manages this complexity



 ..but there’s often a mismatch between input
        requ...
Architecture Evolution

Architecture drift: progressive distance increase
  between the intended and the “as is” system


...
There is no silver bullet!


Systems can be partitioned according to:




                                           6
There is no silver bullet!


Systems can be partitioned according to:

          the architecture




                    ...
There is no silver bullet!


Systems can be partitioned according to:

          the architecture


       the logical fun...
There is no silver bullet!


 Systems can be partitioned according to:

           the architecture


        the logical ...
Software Architecture Recovery (SAR)

The techniques and processes used to uncover a
system’s architecture from available ...
SAR process


extraction of facts




                      8
SAR process


processing




              8
SAR process


visualization of results




                           8
Softwarenaut




               9
Softwarenaut




               9
Softwarenaut




               9
Softwarenaut exploration




                           10
Softwarenaut exploration




                           10
Softwarenaut exploration




                           10
Softwarenaut exploration




                           10
Goal




Understanding




                11
Goal



               Improving




Understanding




                           11
Improving the architecture


 Our proposition for improving the system:


  MARS: maintenance tool for providing
move refa...
Improving the architecture


Our proposition for improving the system:


  MARS: maintenance tool for providing
   move re...
Coupling

measure of the strength of association established
 by the connection of one module to another.



   Coupling r...
Cohesion

     measure of the strength of functional
relatedness of elements within a module.



Cohesion reflects the part...
Module Level


  Coupling and cohesion apply to modules



Different environments offer different layers of
        abstra...
Metric threshold


The metric threshold that we consider is classes

                                Package
             ...
Our definition


Coupling: external dependencies



Cohesion: internal dependencies




                                  18
External dependencies


  Amount of method invocations towards entities
contained in different packages than the subjects
...
Internal dependencies


  Amount of method invocations towards entities
contained in the same parent package of the subjec...
External vs. Internal dependencies

                        high

                               entangled system
        ...
Recommendation candidates


                      high
                             recommendation candidate




         ...
Recommendation candidates in detail


                                Coupling > Cohesion
Package A                       ...
Non-candidates in detail


Orphan class                         Coupling < cohesion                                      B...
Structure of recommendations




       information
       parameters




                               25
Structure of recommendations

information    subject, from, to
               system coupling
               improvement
 ...
Informational fields: subject, to, from


                             subject , from, to
Package A                        ...
Informational fields: subject, to, from


Package A                                             Package A


               ...
MARS


 Text



 Text



 Text


        29
MARS


       Text
Recommendation strategy


        Text



        Text


                          29
MARS


       Text
Recommendation strategy

Granularity of expansion
          Text



         Text


                   ...
MARS


       Text
Recommendation strategy

Granularity of expansion
          Text
Dependency Level

         Text


    ...
MARS


       Text
Recommendation strategy

Granularity of expansion
          Text
Dependency Level

         Text
Subjec...
Dependecy Level


   High-Level vs. Low-Level




                              30
Dependecy Level


 High-Level vs. Low-Level




                            30
Dependecy Level


   High-Level vs. Low-Level




                              30
Subject Mobility Ratio

                      1




                               mobility ratio = 0.75
                 ...
Module expansion level


Next expansion vs. Flat system
 src
 aicup




                                 32
Module expansion level


Next expansion vs. Flat system
      src
     aicup
     aicup
     setup            helpers


  ...
Module expansion level


Next expansion vs. Flat system
 aicup
 src
 aicup
 setup                                     help...
Strategies


                 Local strategies



    return only improvement recommendations



coupling: external depend...
Strategies comparison


      High-Level Local strategy
Package A                                Package C


     class A1...
Strategies


              Global strategies



        pinpoint high coupling entities



coupling: all external dependen...
Strategies comparison


     High-Level Global strategy
Package A                               Package C


     class A1 ...
Strategies


             Conservative strategies



 lower the mobility ratio of entities (cohesion * k )



coupling: ex...
Strategies comparison


High-Level Conservative strategy
 Package A                                 Package C


      clas...
Evaluation

System was tested on Softwarenaut and CodeCity
                   SUBJECT                     FROM            ...
Evaluation

System was tested on Softwarenaut and CodeCity
             SUBJECT                    FROM              TO (H...
Evaluation


     20 - 25% of concrete results

       50% of the recommendations
    which are not followed come from
 mo...
Future Work

Improved pattern-based strategies
   by comparing the names of entities
        with their parent module

  E...
Future Work


Visualization of the recommended moves



      Feedback to the system
   by applying the recommended moves
...
Contributions

    proposed an approach to improve
  the partitioning of the system based on
external and internal package...
Upcoming SlideShare
Loading in …5
×

MARS presentation

570 views

Published on

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
570
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide


  • can we improve a system once we recov its arch?

  • artifact changes= reqs-&gt;specific-&gt;archit-&gt;dev-&gt;testing-&gt;deployment
  • this makes it more fragile, harder to maintain, and different from the prescriptive arch
  • prescriptive: small systems: styles &amp; patterns
    larger systems: high level behavior (IO filesystem)-&gt;MANY VARIANTS
    descriptive: direct metrics

  • prescriptive: small systems: styles &amp; patterns
    larger systems: high level behavior (IO filesystem)-&gt;MANY VARIANTS
    descriptive: direct metrics

  • prescriptive: small systems: styles &amp; patterns
    larger systems: high level behavior (IO filesystem)-&gt;MANY VARIANTS
    descriptive: direct metrics


  • information from version repositories, source code, mailing lists, developers

  • information from version repositories, source code, mailing lists, developers

  • information from version repositories, source code, mailing lists, developers

  • information from version repositories, source code, mailing lists, developers

  • information from version repositories, source code, mailing lists, developers

  • information from version repositories, source code, mailing lists, developers

  • information from version repositories, source code, mailing lists, developers

  • information from version repositories, source code, mailing lists, developers









  • initially defined by Stevens et. al 1979



  • functional behavior grouped in method, grouped in classes, grouped in packages,
    + recursive group in packages



  • 2 major categories
  • when we have more external deps (meaning complex) than internal (meaning single resp)
















  • an additional threshold which represents the coupling / total dependencies






  • where target is always: the pack it is most coupled with



  • implies less results







  • MARS presentation

    1. 1. Modular Architecture Recommendation System Analysis of System Decompositions through Coupling and Cohesion metrics presented by: Alessio Böckmann advisor: Prof. Dr. M. Lanza co-advisor: Dr. M. Lungu
    2. 2. The Problem An incorrect system modularization can lead to the degradation of the architecture Software Architecture Recovery tools provide a means to inspect the “as is” architecture Can we do more? 2
    3. 3. Introduction Software systems are complex 3
    4. 4. Introduction Software Architecture manages this complexity ..but there’s often a mismatch between input requirements and output system ..because of communicational, technical, and complexity issues 4
    5. 5. Architecture Evolution Architecture drift: progressive distance increase between the intended and the “as is” system Architecture erosion: iterative violations of the architecture, increase the brittleness of the system 5
    6. 6. There is no silver bullet! Systems can be partitioned according to: 6
    7. 7. There is no silver bullet! Systems can be partitioned according to: the architecture 6
    8. 8. There is no silver bullet! Systems can be partitioned according to: the architecture the logical functionalities 6
    9. 9. There is no silver bullet! Systems can be partitioned according to: the architecture the logical functionalities the direct information about the system 6
    10. 10. Software Architecture Recovery (SAR) The techniques and processes used to uncover a system’s architecture from available information [ Jazayeri ’00 ] Provide a means to see the real architecture and Reverse Engineer it 7
    11. 11. SAR process extraction of facts 8
    12. 12. SAR process processing 8
    13. 13. SAR process visualization of results 8
    14. 14. Softwarenaut 9
    15. 15. Softwarenaut 9
    16. 16. Softwarenaut 9
    17. 17. Softwarenaut exploration 10
    18. 18. Softwarenaut exploration 10
    19. 19. Softwarenaut exploration 10
    20. 20. Softwarenaut exploration 10
    21. 21. Goal Understanding 11
    22. 22. Goal Improving Understanding 11
    23. 23. Improving the architecture Our proposition for improving the system: MARS: maintenance tool for providing move refactoring recommendations based on coupling and cohesion 12
    24. 24. Improving the architecture Our proposition for improving the system: MARS: maintenance tool for providing move refactoring recommendations based on coupling and cohesion 13
    25. 25. Coupling measure of the strength of association established by the connection of one module to another. Coupling reflects the complexity of the system 14
    26. 26. Cohesion measure of the strength of functional relatedness of elements within a module. Cohesion reflects the partitioning of the system 15
    27. 27. Module Level Coupling and cohesion apply to modules Different environments offer different layers of abstraction and modularization. 16
    28. 28. Metric threshold The metric threshold that we consider is classes Package Class Attribute Method Class Attribute package level Method Class Attribute Method Class Attribute class level Method Attribute Attribute method level Method Method 17
    29. 29. Our definition Coupling: external dependencies Cohesion: internal dependencies 18
    30. 30. External dependencies Amount of method invocations towards entities contained in different packages than the subjects Package A Package A class A0 class A0 class A1 class A2 class B1 class B0 class B0 19
    31. 31. Internal dependencies Amount of method invocations towards entities contained in the same parent package of the subject Package A Package A class A0 class A0 class A1 class A2 class B1 class B0 class B0 20
    32. 32. External vs. Internal dependencies high entangled system (high coupling - high or low cohesion) high communication between modules modules with multiple responsibilities external coupling mild modular system (low coupling - high or low cohesion) low interface-only communication single responsibility modules low mild high external cohesion 21
    33. 33. Recommendation candidates high recommendation candidate d full coupling, no cohesion ol sh re th io t ra recommendation candidate coupling > cohesion external coupling mild low mild high external cohesion 22
    34. 34. Recommendation candidates in detail Coupling > Cohesion Package A Package A class A0 class A0 class A1 class A2 class A1 class A2 recommendation class B0 Package B class B0 Package B class B1 class B1 23
    35. 35. Non-candidates in detail Orphan class Coupling < cohesion Balanced entity Package A Package A Package A Package A class A0 class A0 class A0 class A0 class A1 class A2 class A1 class A2 class A1 class A1 class A2 class A2 recommendation recomme class B0 class B0 class B0 class B0 class B1 Package B Package B Package B Package B class B1 class B1 class B1 class B1 24
    36. 36. Structure of recommendations information parameters 25
    37. 37. Structure of recommendations information subject, from, to system coupling improvement description rank parameters dependency level mobility ratio strategy expansion granularity 26
    38. 38. Informational fields: subject, to, from subject , from, to Package A Package A class A0 class A0 class A1 class A2 class A1 class A2 recommendation class B0 Package B class B0 Package B class B1 class B1 27
    39. 39. Informational fields: subject, to, from Package A Package A class A0 to class A0 class A1 class A2 class A1 class A2 recommendation class B0 Package B subject class B0 Package B class B1 from class B1 28
    40. 40. MARS Text Text Text 29
    41. 41. MARS Text Recommendation strategy Text Text 29
    42. 42. MARS Text Recommendation strategy Granularity of expansion Text Text 29
    43. 43. MARS Text Recommendation strategy Granularity of expansion Text Dependency Level Text 29
    44. 44. MARS Text Recommendation strategy Granularity of expansion Text Dependency Level Text Subject mobility ratio 29
    45. 45. Dependecy Level High-Level vs. Low-Level 30
    46. 46. Dependecy Level High-Level vs. Low-Level 30
    47. 47. Dependecy Level High-Level vs. Low-Level 30
    48. 48. Subject Mobility Ratio 1 mobility ratio = 0.75 0.75 external coupling mobility ratio = 0.5 0.5 o ld sh re th 0.25 tio ra 0 0 0.25 0.5 0.75 1 external cohesion 31
    49. 49. Module expansion level Next expansion vs. Flat system src aicup 32
    50. 50. Module expansion level Next expansion vs. Flat system src aicup aicup setup helpers 2 1 35 tsp 32
    51. 51. Module expansion level Next expansion vs. Flat system aicup src aicup setup helpers Tester 3 Setup City Tour 2 tsp 2 3 4 2 6 13 2 AntColony 3 3 FourOpt Ant LocalSearch 32
    52. 52. Strategies Local strategies return only improvement recommendations coupling: external dependencies from source to target 33
    53. 53. Strategies comparison High-Level Local strategy Package A Package C class A1 class A2 class A3 class C1 Package B coupling to A = 2 cohesion = 2 class B1 __________________ ratio = 0.5 class B2 class B3 recommendation 34
    54. 54. Strategies Global strategies pinpoint high coupling entities coupling: all external dependencies of an entity 35
    55. 55. Strategies comparison High-Level Global strategy Package A Package C class A1 class A2 class C1 class A3 Package B coupling = 3 cohesion = 2 class B1 _____________ ratio = 0.6 move to: package A class B2 class B3 recommendation improvement: -0 links 36
    56. 56. Strategies Conservative strategies lower the mobility ratio of entities (cohesion * k ) coupling: external dependencies from source to target 37
    57. 57. Strategies comparison High-Level Conservative strategy Package A Package C class A1 class A2 class A3 class C1 Package B coupling to A = 2 cohesion = 2*(2) = 4 class B1 __________________ ratio = 0.3 class B2 class B3 recommendation 38
    58. 58. Evaluation System was tested on Softwarenaut and CodeCity SUBJECT FROM TO (HIGH LEVEL TO (LOW LEVEL TO (HIGH LEVEL TO (LOW LEVEL TO (HIGH LEVEL TO (LOW LEVEL TO (HIGH LEVEL TO (LOW LEVEL EVALUATION LOCAL) LOCAL) GLOBAL) GLOBAL) CONSERVATIVE) CONSERVATIVE) ALTERNATIVE) ALTERNATIVE) CompositeFigure SN-UI SN-Map-Pov SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures YES (To SN-ModuleFigures) UndoStack SN-Others SN-Exploration-Pov SN-UI SN-Exploration-Pov SN-UI SN-Exploration-Pov SN-UI SN-UI SN-UI YES (To SN-Exploration-Pov) ModuleShadingScheme SN-UI SN-Model SN-Exploration-Pov SN-Model SN-Exploration-Pov SN-Model SN-Exploration-Pov YES (To SN-Exploration-POV) MultiEdgeFigure SN-UI SN-Exploration-Pov SN-Model SN-Exploration-Pov YES (To SN-Exploration-POV) NamedFigure SN-UI SN-ModuleFigures SN-Map-Pov SN-ModuleFigures SN-Map-Pov SN-ModuleFigures SN-Map-Pov YES (To SN-ModuleFigures) LoadSaveView SN-Exploration-Pov SN-UI SN-UI SN-UI SN-UI YES PartitionedFigures SN-Exploration-Pov SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures YES SoftwarenautWellcomer SN-Others SN-UI SN-UI SN-UI SN-UI SN-UI SN-UI SN-UI SN-UI YES NamespaceName SN-Others SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model YES UserPrefs SN-Others SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov MAYBE InternalModulesFigure SN-Exploration-Pov SN-Model SN-Model SN-Model SN-Model SN-Model MAYBE (but not to model) ShadeOf SN-UI SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov MAYBE (but together with ShadedFigureBuilder) RecommenderWindow2 MARS SN-UI MAYBE MethodStatisticsFigure SN-Detail-Pov SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model MAYBE ShadedFigureBuilder SN-Exploration-Pov SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures MAYBE PartitionedFigureBuilder SN-Exploration-Pov SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures MAYBE DotFigureBuilder SN-Exploration-Pov SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures MAYBE ModuleTreeFigure SN-Map-Pov SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures MAYBE MultiTreeFigure SN-Map-Pov SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures MAYBE MeasurementNormalizer SN-Model SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov MAYBE PoliDrawing SN-Exploration-Pov SN-ModuleFigures NO Higraph SN-Model SN-Exploration-Pov NO EllipseWithTip SN-Map-Pov SN-UI SN-Others NO DTDependencyFlow SN-Detail-Experiments SN-Detail-Pov SN-Detail-Pov SN-Detail-Pov SN-Detail-Pov SN-Detail-Pov SN-Detail-Pov NO (experiments package) CircleLayout SN-Layouts SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov NO (collection of layouts) ViewParametersTab SN-Detail-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov NO (collection of tabs) ContentsColoringDecoration SN-DecorationFigures SN-UI SN-Others SN-Others SN-Others NO (collection of decorations) ContentsNamingDecoration SN-DecorationFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures NO (collection of decorations) DetailTabHITS SN-Detail-Pov SN-Model SN-Model SN-Model SN-Model SN-Model NO (collection of tabs) DetailTabPartitioned SN-Detail-Pov SN-ModuleFigures NO (collection of tabs) DetailTabListInheritances SN-Detail-Pov SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model NO (collection of tabs) DetailTabRecursiveClasses SN-Detail-Pov SN-Model SN-Model SN-Model SN-Model SN-Model NO (collection of tabs) DTInteractionPatterns SN-Detail-Pov SN-Model SN-Model SN-Model SN-Model Text SN-Model NO (collection of patterns) DetailTabInvocationPatterns SN-Detail-Pov SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures NO (collection of tabs) DetailTabInvocationsTop SN-Detail-Pov SN-Model SN-Model SN-Model SN-Model NO (collection of tabs) DetailTabListInvocations SN-Detail-Pov SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model NO (collection of tabs) DetailPanel SN-Detail-Pov SN-Others SN-Others SN-Others SN-Others SN-Others SN-Others SN-Others SN-Others NO (collection of tabs) DetailTabMetricDistribution SN-Detail-Pov SN-ModuleFigures SN-Model SN-ModuleFigures SN-Model SN-Model NO (collection of tabs) DetailTab_InvokedTree SN-Detail-Pov SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model NO (collection of tabs) DetailTabRecursiveMethods SN-Detail-Pov SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model NO (collection of tabs) InvocationPatternDrawing SN-Detail-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov NO (collection of patterns) DetailTabDendrogram SN-Detail-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov SN-Map-Pov NO (collection of tabs) DetailTabInvocationShape SN-Detail-Pov SN-Model NO (collection of tabs) ExploDrawing SN-Exploration-Pov SN-UI SN-Model NO (collection of patterns) SpringLayout SN-Layouts SN-Exploration-Pov NO (collection of layouts) MapPanel SN-Map-Pov SN-Others SN-Others SN-Others SN-Others SN-Others SN-Others NO (collection of tabs) BoundedFigure SN-ModuleFigures SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov NO (collection of patterns) InvocSummaryTreeFigure SN-ModuleFigures SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model NO (collection of figures) TreeHinodeFigure SN-ModuleFigures SN-UI SN-UI SN-UI SN-UI NO (collection of figures) PartitionedFigure SN-ModuleFigures SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov NO (collection of figures) TreemapFigures SN-ModuleFigures SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model NO (collection of figures) InternalClassesFigure SN-ModuleFigures SN-UI SN-UI SN-UI SN-UI SN-UI SN-UI NO (collection of figures) HinodeFigure SN-ModuleFigures SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov NO (collection of figures) TreeFigure SN-ModuleFigures SN-Detail-Pov SN-Model SN-Model NO (collection of figures) SoftwarenautLauncher SN-UI SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model NO DendroDecoration SN-DecorationFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures NO (collection of decorations) DecorationFigure SN-DecorationFigures SN-Exploration-Pov SN-Exploration-Pov NO (collection of decorations) BoundedDecoration SN-DecorationFigures SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov NO (collection of decorations) ShallowDependencyFilter SN-Exploration-Pov SN-Model NO EdgeFigure SN-Exploration-Pov SN-Model SN-Model SN-Model SN-Model NO DeepDependencyFilter SN-Exploration-Pov SN-Model SN-Model SN-Model SN-Model SN-Model NO Heuristic SN-Heuristics SN-Model SN-Model SN-Model SN-Model SN-Model SN-Model NO HeuristicsLegend SN-Heuristics SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov NO TreeLayout SN-Layouts SN-Model SN-ModuleFigures SN-ModuleFigures SN-ModuleFigures NO (collection of layouts) DendrogramMapTab SN-Map-Pov SN-Detail-Pov SN-UI NO MapDrawing SN-Map-Pov SN-Others SN-Others SN-Others SN-Others SN-Others NO MapTabDependencyPatterns SN-Map-Pov SN-Model SN-Model SN-Model SN-Model NO MapTabSimpleHierarchy SN-Map-Pov SN-UI SN-UI NO SimpleHierarchyDrawing SN-Map-Pov SN-Exploration-Pov NO HiNode SN-Model SN-ModuleFigures SN-ModuleFigures NO TreeNode SN-Model SN-ModuleFigures NO HiDependency SN-Model SN-Detail-Pov NO HiEdge SN-Model SN-Detail-Pov SN-Detail-Pov SN-Detail-Pov NO DependencyCollection SN-Model SN-Detail-Pov NO ViewRepository SN-Serialization SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov NO PatternBrowserDrawing SN-UI SN-ModuleFigures NO Softwarenaut SN-UI SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov SN-Exploration-Pov NO by comparing the recommendations with the expert knowledge 39
    59. 59. Evaluation System was tested on Softwarenaut and CodeCity SUBJECT FROM TO (HIGH LEVEL TO (LOW LEVEL TO (HIGH LEVEL TO (LOW LEVEL TO (HIGH LEVEL TO (LOW LEVEL TO (HIGH LEVEL TO (LOW LEVEL EVALUATION LOCAL) LOCAL) GLOBAL) GLOBAL) CONSERVATIVE) CONSERVATIVE) ALTERNATIVE) ALTERNATIVE) Preferences_class CodeCityViewConfig CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders YES Preferences CodeCityViewConfig CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders YES CityEasel CodeCityScripting CodeCityMVC CodeCityViewBuilders CodeCityMVC CodeCityMVC CodeCityMVC MAYBE DisharmonyMapGUI CodeCityGUI CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC MAYBE AlphaSelectionDialog_class CodeCityGUI CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC MAYBE ViewConfiguratorGUI CodeCityGUI CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig MAYBE LinearConverter_class CodeCityTransformations CodeCityVisualMappings CodeCityVisualMappings CodeCityVisualMappings CodeCityVisualMappings CodeCityVisualMappings CodeCityVisualMappings CodeCityVisualMappings MAYBE RelationCollector CodeCityUtils CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC MAYBE ViewConfiguration CodeCityViewConfig CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders MAYBE DisharmonyMapGUI_class CodeCityGUI CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC MAYBE VersionChooserDialog_class CodeCityGUI CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC MAYBE ConfigurationRepository_class CodeCityViewConfig CodeCityVisualMappings CodeCityVisualMappings CodeCityVisualMappings CodeCityVisualMappings CodeCityVisualMappings NO ConfigurationExchanger_class CodeCityViewConfig CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI NO BoundingBox_class CodeCityLayouts CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders NO SnapshotNodeBuilder CodeCityViewBuilders CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig NO SnapshotNodePlacer CodeCityViewBuilders CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs NO SnapshotViewBuilder_class CodeCityViewBuilders CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI NO TimeTravelDisplayModel CodeCityMVC CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders NO AbstractLayout CodeCityLayouts CodeCityGUI NO SnapshotViewBuilder CodeCityViewBuilders CodeCityViewConfig CodeCityViewConfig NO FunctionalMapper CodeCityVisualMappings CodeCityViewConfig NO BlueGreenYellowColorScheme CodeCityColorSchemes CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC NO ColorLinearMapper CodeCityVisualMappings CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig NO MapperDialog CodeCityGUI CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig NO BoxPlotConverter CodeCityTransformations CodeCityUtils CodeCityUtils CodeCityUtils CodeCityUtils NO AbstractNodeGlyph CodeCityGlyphs CodeCityLayouts CodeCityLayouts CodeCityViewBuilders NO TimelineDisplayModel CodeCityMVC CodeCityViewBuilders CodeCityGlyphs CodeCityViewBuilders CodeCityGlyphs NO BlockMapper CodeCityVisualMappings CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig NO PhotographerDialog_class CodeCityGUI CodeCityMVC CodeCityMVC NO TimelineViewBuilder_class CodeCityViewBuilders CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC CodeCityMVC NO SnapshotDisplayModel CodeCityMVC CodeCityGlyphs NO SearchTermDialog CodeCityGUI CodeCityGlyphs CodeCityGlyphs NO AbstractLayout_class CodeCityLayouts CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig NO TimeTravelViewBuilder CodeCityViewBuilders CodeCityViewConfig CodeCityLayouts CodeCityViewConfig CodeCityViewConfig NO CodeCityGUI CodeCityGUI CodeCityViewConfig CodeCityViewBuilders CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig NO TimelineViewBuilder CodeCityViewBuilders CodeCityLayouts CodeCityViewConfig CodeCityLayouts CodeCityViewConfig CodeCityViewConfig NO CityScriptExamples_class CodeCityScripting CodeCityVisualMappings NO SpaceManager CodeCityLayouts CodeCityGlyphs CodeCityViewBuilders CodeCityGlyphs NO AbstractGlyph CodeCityGlyphs CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders NO DisplayModel CodeCityMVC CodeCityGUI CodeCityGUI CodeCityGlyphs NO TimeTravelEdgeBuilder CodeCityViewBuilders CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs NO Photographer CodeCityUtils CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI CodeCityGUI NO SnapshotEdgeBuilder CodeCityViewBuilders CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs CodeCityGlyphs NO PhotographerDialog CodeCityGUI CodeCityUtils CodeCityUtils CodeCityUtils CodeCityUtils CodeCityUtils NO HistoryInfrastructureBuilder CodeCityViewBuilders CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig NO ConstantMapper CodeCityVisualMappings CodeCityViewConfig CodeCityGlyphs CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig NO PhotoAutomator CodeCityUtils CodeCityViewConfig CodeCityViewConfig CodeCityViewConfig NO SpaceManager_class CodeCityLayouts CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders CodeCityViewBuilders NO by comparing the recommendations with the expert knowledge 40
    60. 60. Evaluation 20 - 25% of concrete results 50% of the recommendations which are not followed come from more importance given to the partitioning according to the high level logical properties e.g. Figures, Layouts, Tests packages 41
    61. 61. Future Work Improved pattern-based strategies by comparing the names of entities with their parent module Evolutionary-based strategies where the cohesion of the entity is influenced by the age of the artifact 42
    62. 62. Future Work Visualization of the recommended moves Feedback to the system by applying the recommended moves and changing the system 43
    63. 63. Contributions proposed an approach to improve the partitioning of the system based on external and internal package dependencies developed dependency and inheritance-based strategies for MARS and integrated the tool into the Softwarenaut environment evaluated the tool on 2 existing systems and discussed the results and implications 44

    ×