Your SlideShare is downloading. ×
  • Like
MARS presentation
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

MARS presentation

  • 321 views
Published

 

Published in Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
321
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
6
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide


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

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

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

  • prescriptive: small systems: styles & patterns
    larger systems: high level behavior (IO filesystem)->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







Transcript

  • 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. 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. Introduction Software systems are complex 3
  • 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. 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. There is no silver bullet! Systems can be partitioned according to: 6
  • 7. There is no silver bullet! Systems can be partitioned according to: the architecture 6
  • 8. There is no silver bullet! Systems can be partitioned according to: the architecture the logical functionalities 6
  • 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. 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. SAR process extraction of facts 8
  • 12. SAR process processing 8
  • 13. SAR process visualization of results 8
  • 14. Softwarenaut 9
  • 15. Softwarenaut 9
  • 16. Softwarenaut 9
  • 17. Softwarenaut exploration 10
  • 18. Softwarenaut exploration 10
  • 19. Softwarenaut exploration 10
  • 20. Softwarenaut exploration 10
  • 21. Goal Understanding 11
  • 22. Goal Improving Understanding 11
  • 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. Improving the architecture Our proposition for improving the system: MARS: maintenance tool for providing move refactoring recommendations based on coupling and cohesion 13
  • 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. Cohesion measure of the strength of functional relatedness of elements within a module. Cohesion reflects the partitioning of the system 15
  • 27. Module Level Coupling and cohesion apply to modules Different environments offer different layers of abstraction and modularization. 16
  • 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. Our definition Coupling: external dependencies Cohesion: internal dependencies 18
  • 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. 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. 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. 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. 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. 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. Structure of recommendations information parameters 25
  • 37. Structure of recommendations information subject, from, to system coupling improvement description rank parameters dependency level mobility ratio strategy expansion granularity 26
  • 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. 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. MARS Text Text Text 29
  • 41. MARS Text Recommendation strategy Text Text 29
  • 42. MARS Text Recommendation strategy Granularity of expansion Text Text 29
  • 43. MARS Text Recommendation strategy Granularity of expansion Text Dependency Level Text 29
  • 44. MARS Text Recommendation strategy Granularity of expansion Text Dependency Level Text Subject mobility ratio 29
  • 45. Dependecy Level High-Level vs. Low-Level 30
  • 46. Dependecy Level High-Level vs. Low-Level 30
  • 47. Dependecy Level High-Level vs. Low-Level 30
  • 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. Module expansion level Next expansion vs. Flat system src aicup 32
  • 50. Module expansion level Next expansion vs. Flat system src aicup aicup setup helpers 2 1 35 tsp 32
  • 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. Strategies Local strategies return only improvement recommendations coupling: external dependencies from source to target 33
  • 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. Strategies Global strategies pinpoint high coupling entities coupling: all external dependencies of an entity 35
  • 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. Strategies Conservative strategies lower the mobility ratio of entities (cohesion * k ) coupling: external dependencies from source to target 37
  • 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. 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. 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. 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. 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. Future Work Visualization of the recommended moves Feedback to the system by applying the recommended moves and changing the system 43
  • 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