Phd thesis

download Phd thesis

If you can't read please download the document

  • date post

    20-May-2015
  • Category

    Education

  • view

    360
  • download

    5

Embed Size (px)

Transcript of Phd thesis

  • 1. Package Dependencies Analysis and Remediation in Object-Oriented SystemsJannik LavalFriday, June 17, 2011 1 / 65

2. Package MaintenanceBig software applications Pharo (+100 packages), Moose (+100 packages), Eclipse (+250 packages)Complexity grows with evolutionMaintenance and evolution may take more than 60% of the overall budget => Difculties to maintainFriday, June 17, 2011 2 / 65 3. (Re)modularizationImproving the package structureto support evolutioni. Understanding the structureii. Understanding the structural problemsiii. Taking decisions for restructuringFriday, June 17, 2011 3 / 65 4. Package Granularity Reuse and release unitFriday, June 17, 2011 4 / 65 5. Package Granularity Reuse and release unit Group of classes > Complex entityFriday, June 17, 2011 4 / 65 6. Package Granularity Reuse and release unitPackage AA1A2 Other package A3 Group of classes A4A5 > Complex entity Other packagePackage BB1B2 Multiple dependencies B3 > Inheritance, invocation, reference, extensionFriday, June 17, 20114 / 65 7. Package Granularity Reuse and release unitPackage AA1A2 Other packageA3 Group of classes A4A5 > Complex entity Other packagePackage B B1 B2 Multiple dependencies B3 > Inheritance, invocation, reference, extension Different organizations of the system [Abreu 2001] > Feature containmentA1 B1 C1 D1A1B1C1D1 > Deployment unitP1 P1P2P3A2 B2 C2 D2 A2 B2C2D2 > Team organization A3A3 (a) P4(c) P4Friday, June 17, 20114 / 65 8. Package Modularity is Crucial A good package organization ease the evolution of thesystem. [De Remer 1976, Myers 1978,Yourdon 1979, Pressman1994, Ponisio 2006]Friday, June 17, 2011 5 / 65 9. Package Modularity is Crucial A good package organization ease the evolution of thesystem. [De Remer 1976, Myers 1978,Yourdon 1979, Pressman1994, Ponisio 2006] Acyclic Dependency Principle: The dependencies between packages must not form cycles [Martin 1996, 2000]Friday, June 17, 2011 5 / 65 10. Package Modularity is Crucial A good package organization ease the evolution of thesystem. [De Remer 1976, Myers 1978,Yourdon 1979, Pressman1994, Ponisio 2006] Acyclic Dependency Principle: The dependencies between packagesLayer A pC pD pE must not form cycles [Martin 1996, 2000] Layer BpApB Packages should form a layered structure[Bachmann, 2000; Demeyer, 2002]Layer C KernelFriday, June 17, 2011 5 / 65 11. Package Modularity is Crucial A good package organization ease the evolution of thesystem. [De Remer 1976, Myers 1978,Yourdon 1979, Pressman1994, Ponisio 2006] Acyclic Dependency Principle: The dependencies between packagesLayer A pC pD pE must not form cycles [Martin 1996, 2000] Layer BpApB Packages should form a layered structure[Bachmann, 2000; Demeyer, 2002]Layer C Kernel => Undesired cycles should be removedFriday, June 17, 2011 5 / 65 12. Cyclic dependency problem Modifying a package impacts the dependent packages.DB Change Possible ImpactC EA [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 6 / 65 13. Cyclic dependency problem Modifying a package impacts the dependent packages.DB Change Possible ImpactC EA [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 6 / 65 14. Cyclic dependency problem Modifying a package impacts the dependent packages.DB Change Possible ImpactC EA [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 6 / 65 15. Cyclic dependency problem Modifying a package impacts the dependent packages.DB Change Possible ImpactC EA [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 7 / 65 16. Cyclic dependency problem Modifying a package impacts the dependent packages.DB Change Possible ImpactC EA [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 7 / 65 17. Cyclic dependency problem Modifying a package impacts the dependent packages.DB Change Possible ImpactC EA [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 7 / 65 18. Cyclic dependency problem Modifying a package impacts the dependent packages.DB Change Possible ImpactC EA [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 7 / 65 19. Thesis In large software architectures, we need to identify dependencies between packages causing structural problems and help proposing solutions to avoid problems for modularity.Friday, June 17, 20118 / 65 20. Challenges Identifying cycles between packagesFriday, June 17, 2011 9 / 65 21. Challenges Identifying cycles between packages Selecting unwanted dependenciesFriday, June 17, 2011 9 / 65 22. Challenges Identifying cycles between packages Selecting unwanted dependencies Assessing changes at structural levelFriday, June 17, 2011 9 / 65 23. eCOO: Paradigmmodelsource code Package Cycle RemediationFriday, June 17, 2011 10 / 65 24. eCOO: Paradigm identifying cyclesmodelsource code Package Cycle RemediationFriday, June 17, 2011 10 / 65 25. eCOO: Paradigm identifying cyclesmodel selecting unwanted dependenciessource code Package Cycle RemediationFriday, June 17, 2011 10 / 65 26. eCOO: Paradigm identifying cyclesmodel selecting unwanted dependenciessource code assessingchanges Package Cycle RemediationFriday, June 17, 2011 10 / 65 27. eCOO: Paradigm identifying cyclesmodel selecting unwanted dependenciessource code assessingchanges Package Cycle RemediationFriday, June 17, 2011 10 / 65 28. eCOO: Contributionidentifyingcyclesmodel eCOO selectingunwanteddependenciessource codeassessing changes Package Cycle RemediationFriday, June 17, 201111 / 65 29. eCOO: ContributioneDSMidentifyingcyclesmodel eCOO selectingunwanteddependenciessource codeassessing changes Package Cycle RemediationFriday, June 17, 201111 / 65 30. eCOO: ContributioneDSMCycleTableidentifyingcyclesmodel eCOOselecting unwanted dependenciessource codeassessing changes Package Cycle RemediationFriday, June 17, 2011 11 / 65 31. eCOO: ContributioneDSMCycleTableidentifyingcyclesmodel eCOOselecting unwanted dependenciessource codeoZoneassessing changes Package Cycle RemediationFriday, June 17, 2011 11 / 65 32. eCOO: ContributioneDSMCycleTableidentifyingcyclesmodel eCOOselecting unwanted dependenciessource codeoZoneassessing changesOrion Package Cycle RemediationFriday, June 17, 2011 11 / 65 33. Contribution: eDSMeDSMCycleTableidentifyingcyclesmodeleCOO selecting unwanted dependenciessource codeoZoneassessing changesOrionFriday, June 17, 2011 12 / 65 34. Identifying cyclic dependencies? PB PAB1 B2A3A1 A2PC C1PEPD E2E1 D1D2 PF PH F1PGH1G1Friday, June 17, 2011 13 / 65 35. Identifying cyclic dependencies? PB PAB1 B2A3A1 A2PCPE C1Graph abstractionPD E2E1 D1D2 PF PH F1PGH1G1Friday, June 17, 2011 13 / 65 36. Identifying cyclic dependencies? PB PAB1 B2A3A1 A2PCPE C1Graph abstractionPD E2E1 D1D2 PF PB PH F1PGH1G1PAPC PEPD PF PHPGFriday, June 17, 201113 / 65 37. Identifying cyclic dependencies? PB PAB1 B2A3A1 A2PCPE C1Graph abstractionPD E2E1 D1D2 PF PB PH F1PGH1G1PAPC PEPD PFStrongly Connected ComponentsPHPG (SCC) detection [Tarjan, 1972]Friday, June 17, 201113 / 65 38. A large software applicationSettings-GraphicsTests-Bugs FixUnderscores Settings-Network Network-MailSending KernelTestsTools Tests-PrimCallControllerCollections-StringsMorphicTestsTests-SystemChangeNoticationGraphicsTestsSystem-HashingSettings-Kernel Settings-Monticello Settings-FreeTypeSettings-SystemSettings-Compiler Collections-SequenceableKernelSystem-ClipboardTests-VM FreeTypeTestsMorphic-TrueType FreeTypeSubPixelAntiAliasingGraphicsResourcesGraphics System-FileRegistry Morphic MenuRegistration Polymorph-TaskbarIcons SUnitGUI Collections-Text ST80Multilingual Network-KernelCollections-WeakSystem-Finalization Collections-AbstractCollections-Support System-Object StorageTests-ReleaseBalloonSystem-SupportPolymorph-WidgetsMonticelloGUI Morphic-Balloon ScriptLoaderMonticello Tests MonticelloMocks CompilerTests ScriptLoader11System-Digital Signatures CollectionsTestsNetwork-UUID Collections-StackFreeType Network-ProtocolsPackageInfo Settings-Polymorph Polymorph-Tools-Diff System-FilePackage System-ChangesNetwork-UrlNetwork-RemoteDirectorySystem-Download System-ApplicationsToolBuilder-KernelFiles System-Pools Compiler ExceptionsCollections-Unordered Collections-Arrayed Pharo Core 1.1, 115 packagesGraph is not scalable.Friday, June 17, 2011 14 / 65 39. Packages in SCC MonticelloMocks FixUnderscores FreeTypeSubPixelAntiAliasingMonticelloTests VB-Regex CollectionsTestsGofer-Core Network-Url KernelMorphicMenuRegistration Polymorph-TaskbarIcons DeprecatedPreferences System-Text Settings-PolymorphSystem-ClipboardPolymorph-Tools-Diff System-PlatformsSUnitGUIPolymorph-Geometry Graphics Network-ProtocolsNetwork-KernelAnnouncements Network-RFC822ToolBuilder-KernelPolymorph-EventEnhancementsCollections-Streams ST80Polymorph-Widgets MonticelloGUIMorphic-Balloon FreeType SUnit PackageInfo MonticelloCongurationsBalloon ToolBuilder-Morphic Collections-Arrayed Collections-Strings Network-MIMEFiles System-FileRegistryCollections-SequenceableCollections-AbstractCollections-SupportSystem-Object Storage Compiler System-Support System-Digital Signatures Network-UUID TrueTypeToolsTraits Network-RemoteDirectorySystem-FilePackage System-DownloadSystem-ChangesSystem-Tools CompressionSystem-Pools System-Finalization Pharo Core 1.1, 78 packages in cycleCycles are not visible.Friday, June 17, 201115 / 65 40. Packages in SCC What are the differences between these dependencies ?MonticelloMocks FixUnderscores FreeTypeSubPixelAntiAliasing Monticello Tests VB-Regex CollectionsTests Gofer-Core Network-UrlKernel Morphic MenuRegistrationPolymorph-TaskbarIconsDeprecatedPreferencesSystem-Text Settings-Polymorph System-C