Package Dependencies               Analysis and Remediation             in Object-Oriented Systems                        ...
Package Maintenance                    ‣    Big software applications                        • Pharo (+100 packages), Moos...
(Re)modularization              •            Improving the package structure              •                    to support ...
Package Granularity             ‣     Reuse and release unitFriday, June 17, 2011                       4 / 65
Package Granularity             ‣     Reuse and release unit             ‣     Group of classes                • > Complex...
Package Granularity             ‣      Reuse and release unit            Package A                                        ...
Package Granularity             ‣      Reuse and release unit                      Package A                              ...
Package Modularity is Crucial        ‣     A good package organization ease the evolution of the              system. [De ...
Package Modularity is Crucial        ‣     A good package organization ease the evolution of the              system. [De ...
Package Modularity is Crucial        ‣     A good package organization ease the evolution of the              system. [De ...
Package Modularity is Crucial        ‣     A good package organization ease the evolution of the              system. [De ...
Cyclic dependency problem     Modifying a package impacts the dependent packages.                                    D    ...
Cyclic dependency problem     Modifying a package impacts the dependent packages.                                    D    ...
Cyclic dependency problem     Modifying a package impacts the dependent packages.                                    D    ...
Cyclic dependency problem     Modifying a package impacts the dependent packages.                                    D    ...
Cyclic dependency problem     Modifying a package impacts the dependent packages.                                    D    ...
Cyclic dependency problem     Modifying a package impacts the dependent packages.                                    D    ...
Cyclic dependency problem     Modifying a package impacts the dependent packages.                                    D    ...
Thesis             •     In large software architectures, we need to             identify dependencies between packages ca...
Challenges                    ‣   Identifying cycles between packagesFriday, June 17, 2011                                ...
Challenges                    ‣   Identifying cycles between packages                    ‣   Selecting unwanted dependenci...
Challenges                    ‣   Identifying cycles between packages                    ‣   Selecting unwanted dependenci...
eCOO: Paradigm                          model                        source code              •                   Package ...
eCOO: Paradigm                                         identifying                                           cycles       ...
eCOO: Paradigm                                         identifying                                           cycles       ...
eCOO: Paradigm                                         identifying                                           cycles       ...
eCOO: Paradigm                                         identifying                                           cycles       ...
eCOO: Contribution                                          identifying                                            cycles ...
eCOO: Contribution                                                eDSM                                          identifyin...
eCOO: Contribution                                                eDSM                                                Cycl...
eCOO: Contribution                                                eDSM                                                Cycl...
eCOO: Contribution                                                eDSM                                                Cycl...
Contribution: eDSM                                            eDSM                                            CycleTable  ...
Identifying cyclic dependencies?                                     PB           PA                            B1     B2 ...
Identifying cyclic dependencies?                                     PB           PA                            B1     B2 ...
Identifying cyclic dependencies?                                     PB           PA                            B1     B2 ...
Identifying cyclic dependencies?                                     PB           PA                            B1     B2 ...
A large software application                                                                                              ...
Packages in SCC                                                                                                           ...
Packages in SCC                                                                                                           ...
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Phd thesis
Upcoming SlideShare
Loading in...5
×

Phd thesis

366

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
366
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Phd thesis

  1. 1. Package Dependencies Analysis and Remediation in Object-Oriented Systems Jannik LavalFriday, June 17, 2011 1 / 65
  2. 2. Package Maintenance ‣ Big software applications • Pharo (+100 packages), Moose (+100 packages), • Eclipse (+250 packages) ‣ Complexity grows with evolution ‣ Maintenance and evolution may take more than 60% of the overall budget • => Difficulties to maintainFriday, June 17, 2011 2 / 65
  3. 3. (Re)modularization • Improving the package structure • to support evolution i. Understanding the structure ii. Understanding the structural problems iii. Taking decisions for restructuringFriday, June 17, 2011 3 / 65
  4. 4. Package Granularity ‣ Reuse and release unitFriday, June 17, 2011 4 / 65
  5. 5. Package Granularity ‣ Reuse and release unit ‣ Group of classes • > Complex entityFriday, June 17, 2011 4 / 65
  6. 6. Package Granularity ‣ Reuse and release unit Package A A1 A2 Other package A3 ‣ Group of classes A4 A5 • > Complex entity Other package Package B B1 B2 ‣ Multiple dependencies B3 • > Inheritance, invocation, reference, extensionFriday, June 17, 2011 4 / 65
  7. 7. Package Granularity ‣ Reuse and release unit Package A A1 A2 Other package A3 ‣ Group of classes A4 A5 • > Complex entity Other package Package B B1 B2 ‣ Multiple dependencies B3 • > Inheritance, invocation, reference, extension ‣ Different organizations of the system [Abreu 2001] • > Feature containment A1 B1 C1 D1 A1 B1 C1 D1 • > Deployment unit P1 P1 P2 P3 A2 B2 C2 D2 A2 B2 C2 D2 • > Team organization A3 A3 (a) P4 (c) P4Friday, June 17, 2011 4 / 65
  8. 8. Package Modularity is Crucial ‣ A good package organization ease the evolution of the system. [De Remer 1976, Myers 1978,Yourdon 1979, Pressman 1994, Ponisio 2006]Friday, June 17, 2011 5 / 65
  9. 9. Package Modularity is Crucial ‣ A good package organization ease the evolution of the system. [De Remer 1976, Myers 1978,Yourdon 1979, Pressman 1994, Ponisio 2006] ‣ Acyclic Dependency Principle: • “The dependencies between packages must not form cycles” [Martin 1996, 2000]Friday, June 17, 2011 5 / 65
  10. 10. Package Modularity is Crucial ‣ A good package organization ease the evolution of the system. [De Remer 1976, Myers 1978,Yourdon 1979, Pressman 1994, Ponisio 2006] ‣ Acyclic Dependency Principle: • “The dependencies between packages Layer A pC pD pE must not form cycles” [Martin 1996, 2000] Layer B pA pB ‣ Packages should form a layered structure [Bachmann, 2000; Demeyer, 2002] Layer C KernelFriday, June 17, 2011 5 / 65
  11. 11. Package Modularity is Crucial ‣ A good package organization ease the evolution of the system. [De Remer 1976, Myers 1978,Yourdon 1979, Pressman 1994, Ponisio 2006] ‣ Acyclic Dependency Principle: • “The dependencies between packages Layer A pC pD pE must not form cycles” [Martin 1996, 2000] Layer B pA pB ‣ Packages should form a layered structure [Bachmann, 2000; Demeyer, 2002] Layer C Kernel • => Undesired cycles should be removedFriday, June 17, 2011 5 / 65
  12. 12. Cyclic dependency problem Modifying a package impacts the dependent packages. D B Change Possible Impact C E A • [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 6 / 65
  13. 13. Cyclic dependency problem Modifying a package impacts the dependent packages. D B Change Possible Impact C E A • [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 6 / 65
  14. 14. Cyclic dependency problem Modifying a package impacts the dependent packages. D B Change Possible Impact C E A • [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 6 / 65
  15. 15. Cyclic dependency problem Modifying a package impacts the dependent packages. D B Change Possible Impact C E A • [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 7 / 65
  16. 16. Cyclic dependency problem Modifying a package impacts the dependent packages. D B Change Possible Impact C E A • [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 7 / 65
  17. 17. Cyclic dependency problem Modifying a package impacts the dependent packages. D B Change Possible Impact C E A • [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 7 / 65
  18. 18. Cyclic dependency problem Modifying a package impacts the dependent packages. D B Change Possible Impact C E A • [Martin 2002: Agile Software Development, Principles, Patterns, and Practices]Friday, June 17, 2011 7 / 65
  19. 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, 2011 8 / 65
  20. 20. Challenges ‣ Identifying cycles between packagesFriday, June 17, 2011 9 / 65
  21. 21. Challenges ‣ Identifying cycles between packages ‣ Selecting unwanted dependenciesFriday, June 17, 2011 9 / 65
  22. 22. Challenges ‣ Identifying cycles between packages ‣ Selecting unwanted dependencies ‣ Assessing changes at structural level •Friday, June 17, 2011 9 / 65
  23. 23. eCOO: Paradigm model source code • Package Cycle RemediationFriday, June 17, 2011 10 / 65
  24. 24. eCOO: Paradigm identifying cycles model source code • Package Cycle RemediationFriday, June 17, 2011 10 / 65
  25. 25. eCOO: Paradigm identifying cycles model selecting unwanted dependencies source code • Package Cycle RemediationFriday, June 17, 2011 10 / 65
  26. 26. eCOO: Paradigm identifying cycles model selecting unwanted dependencies source code assessing changes • Package Cycle RemediationFriday, June 17, 2011 10 / 65
  27. 27. eCOO: Paradigm identifying cycles model selecting unwanted dependencies source code assessing changes • Package Cycle RemediationFriday, June 17, 2011 10 / 65
  28. 28. eCOO: Contribution identifying cycles model eCOO selecting unwanted dependencies source code assessing changes • Package Cycle RemediationFriday, June 17, 2011 11 / 65
  29. 29. eCOO: Contribution eDSM identifying cycles model eCOO selecting unwanted dependencies source code assessing changes • Package Cycle RemediationFriday, June 17, 2011 11 / 65
  30. 30. eCOO: Contribution eDSM CycleTable identifying cycles model eCOO selecting unwanted dependencies source code assessing changes • Package Cycle RemediationFriday, June 17, 2011 11 / 65
  31. 31. eCOO: Contribution eDSM CycleTable identifying cycles model eCOO selecting unwanted dependencies source code oZone assessing changes • Package Cycle RemediationFriday, June 17, 2011 11 / 65
  32. 32. eCOO: Contribution eDSM CycleTable identifying cycles model eCOO selecting unwanted dependencies source code oZone assessing changes Orion • Package Cycle RemediationFriday, June 17, 2011 11 / 65
  33. 33. Contribution: eDSM eDSM CycleTable identifying cycles model eCOO selecting unwanted dependencies source code oZone assessing changes OrionFriday, June 17, 2011 12 / 65
  34. 34. Identifying cyclic dependencies? PB PA B1 B2 A3 A1 A2 PC C1 PE PD E2 E1 D1 D2 PF PH F1 PG H1 G1Friday, June 17, 2011 13 / 65
  35. 35. Identifying cyclic dependencies? PB PA B1 B2 A3 A1 A2 PC PE C1 Graph abstraction PD E2 E1 D1 D2 PF PH F1 PG H1 G1Friday, June 17, 2011 13 / 65
  36. 36. Identifying cyclic dependencies? PB PA B1 B2 A3 A1 A2 PC PE C1 Graph abstraction PD E2 E1 D1 D2 PF PB PH F1 PG H1 G1 PA PC PE PD PF PH PGFriday, June 17, 2011 13 / 65
  37. 37. Identifying cyclic dependencies? PB PA B1 B2 A3 A1 A2 PC PE C1 Graph abstraction PD E2 E1 D1 D2 PF PB PH F1 PG H1 G1 PA PC PE PD PF Strongly Connected Components PH PG (SCC) detection [Tarjan, 1972]Friday, June 17, 2011 13 / 65
  38. 38. A large software application Settings-Graphics Tests-Bugs FixUnderscores Settings-Network Network-MailSending KernelTests Tools Tests-PrimCallController Collections-Strings MorphicTests Tests-SystemChangeNotification GraphicsTests System-Hashing Settings-Kernel Settings-Monticello Settings-FreeType Settings-System Settings-Compiler Collections-Sequenceable Kernel System-ClipboardTests-VM FreeTypeTests Morphic-TrueType FreeTypeSubPixelAntiAliasing GraphicsResources Graphics System-FileRegistry Morphic MenuRegistration Polymorph-TaskbarIcons SUnitGUI Collections-Text ST80 Multilingual Network-Kernel Collections-Weak System-Finalization Collections-Abstract Collections-Support System-Object Storage Tests-Release Balloon System-Support Polymorph-Widgets MonticelloGUI Morphic-Balloon ScriptLoader Monticello Tests MonticelloMocks CompilerTests ScriptLoader11 System-Digital Signatures CollectionsTests Network-UUID Collections-Stack FreeType Network-Protocols PackageInfo Settings-Polymorph Polymorph-Tools-Diff System-FilePackage System-Changes Network-Url Network-RemoteDirectory System-Download System-Applications ToolBuilder-Kernel Files System-Pools Compiler Exceptions Collections-Unordered Collections-Arrayed • Pharo Core 1.1, 115 packages ‣ Graph is not scalable. Friday, June 17, 2011 14 / 65
  39. 39. Packages in SCC MonticelloMocks FixUnderscores FreeTypeSubPixelAntiAliasing Monticello Tests VB-Regex CollectionsTests Gofer-Core Network-Url Kernel Morphic MenuRegistration Polymorph-TaskbarIcons DeprecatedPreferences System-Text Settings-Polymorph System-Clipboard Polymorph-Tools-Diff System-Platforms SUnitGUI Polymorph-Geometry Graphics Network-Protocols Network-Kernel Announcements Network-RFC822 ToolBuilder-Kernel Polymorph-EventEnhancements Collections-Streams ST80 Polymorph-Widgets MonticelloGUI Morphic-Balloon FreeType SUnit PackageInfo MonticelloConfigurations Balloon ToolBuilder-Morphic Collections-Arrayed Collections-Strings Network-MIME Files System-FileRegistry Collections-Sequenceable Collections-Abstract Collections-Support System-Object Storage Compiler System-Support System-Digital Signatures Network-UUID TrueType Tools Traits Network-RemoteDirectory System-FilePackage System-Download System-ChangesSystem-Tools Compression System-Pools System-Finalization • Pharo Core 1.1, 78 packages in cycle ‣ Cycles are not visible. Friday, June 17, 2011 15 / 65
  40. 40. Packages in SCC What are the differences between these dependencies ? MonticelloMocks FixUnderscores FreeTypeSubPixelAntiAliasing Monticello Tests VB-Regex CollectionsTests Gofer-Core Network-Url Kernel Morphic MenuRegistration Polymorph-TaskbarIcons DeprecatedPreferences System-Text Settings-Polymorph System-Clipboard Polymorph-Tools-Diff System-Platforms SUnitGUI Polymorph-Geometry Graphics Network-Protocols Network-Kernel Announcements Network-RFC822 ToolBuilder-Kernel Polymorph-EventEnhancements Collections-Streams ST80 Polymorph-Widgets MonticelloGUI Morphic-Balloon FreeType SUnit PackageInfo MonticelloConfigurations Balloon ToolBuilder-Morphic Collections-Arrayed Collections-Strings Network-MIME Files System-FileRegistry Collections-Sequenceable Collections-Abstract Collections-Support System-Object Storage Compiler System-Support System-Digital Signatures Network-UUID TrueType Tools Traits Network-RemoteDirectory System-FilePackage System-Download System-ChangesSystem-Tools Compression System-Pools System-Finalization • Pharo Core 1.1, 78 packages in cycle ‣ Cycles are not visible. Friday, June 17, 2011 15 / 65
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×