SlideShare a Scribd company logo
1 of 155
Download to read offline
Package Dependencies
               Analysis and Remediation
             in Object-Oriented Systems

                        Jannik Laval




Friday, June 17, 2011                     1 / 65
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 maintain


Friday, June 17, 2011                                                     2 / 65
(Re)modularization

              •            Improving the package structure
              •                    to support evolution


                        i. Understanding the structure
                        ii. Understanding the structural problems
                        iii. Taking decisions for restructuring


Friday, June 17, 2011                                               3 / 65
Package Granularity
             ‣     Reuse and release unit




Friday, June 17, 2011                       4 / 65
Package Granularity
             ‣     Reuse and release unit
             ‣     Group of classes
                • > Complex entity




Friday, June 17, 2011                       4 / 65
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




Friday, June 17, 2011                                                                                      4 / 65
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)         P4



Friday, June 17, 2011                                                                                                                                    4 / 65
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
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
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




Friday, June 17, 2011                                                                           5 / 65
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 removed


Friday, June 17, 2011                                                                           5 / 65
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
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
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
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
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
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
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
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
Challenges

                    ‣   Identifying cycles between packages




Friday, June 17, 2011                                         9 / 65
Challenges

                    ‣   Identifying cycles between packages


                    ‣   Selecting unwanted dependencies




Friday, June 17, 2011                                         9 / 65
Challenges

                    ‣   Identifying cycles between packages


                    ‣   Selecting unwanted dependencies


                    ‣   Assessing changes at structural level
                          •



Friday, June 17, 2011                                           9 / 65
eCOO: Paradigm



                          model


                        source code




              •                   Package Cycle Remediation
Friday, June 17, 2011                                         10 / 65
eCOO: Paradigm


                                         identifying
                                           cycles


                          model


                        source code




              •                   Package Cycle Remediation
Friday, June 17, 2011                                         10 / 65
eCOO: Paradigm


                                         identifying
                                           cycles


                          model
                                                         selecting
                                                         unwanted
                                                       dependencies
                        source code




              •                   Package Cycle Remediation
Friday, June 17, 2011                                                 10 / 65
eCOO: Paradigm


                                         identifying
                                           cycles


                          model
                                                         selecting
                                                         unwanted
                                                       dependencies
                        source code


                                         assessing
                                          changes




              •                   Package Cycle Remediation
Friday, June 17, 2011                                                 10 / 65
eCOO: Paradigm


                                         identifying
                                           cycles


                          model
                                                         selecting
                                                         unwanted
                                                       dependencies
                        source code


                                         assessing
                                          changes




              •                   Package Cycle Remediation
Friday, June 17, 2011                                                 10 / 65
eCOO: Contribution


                                          identifying
                                            cycles


                          model
                                         eCOO             selecting
                                                          unwanted
                                                        dependencies
                        source code


                                          assessing
                                           changes




              •                   Package Cycle Remediation
Friday, June 17, 2011                                                  11 / 65
eCOO: Contribution

                                                eDSM


                                          identifying
                                            cycles


                          model
                                         eCOO             selecting
                                                          unwanted
                                                        dependencies
                        source code


                                          assessing
                                           changes




              •                   Package Cycle Remediation
Friday, June 17, 2011                                                  11 / 65
eCOO: Contribution

                                                eDSM
                                                CycleTable
                                          identifying
                                            cycles


                          model
                                         eCOO              selecting
                                                           unwanted
                                                         dependencies
                        source code


                                          assessing
                                           changes




              •                   Package Cycle Remediation
Friday, June 17, 2011                                                   11 / 65
eCOO: Contribution

                                                eDSM
                                                CycleTable
                                          identifying
                                            cycles


                          model
                                         eCOO              selecting
                                                           unwanted
                                                         dependencies
                        source code
                                                                  oZone

                                          assessing
                                           changes




              •                   Package Cycle Remediation
Friday, June 17, 2011                                                     11 / 65
eCOO: Contribution

                                                eDSM
                                                CycleTable
                                          identifying
                                            cycles


                          model
                                         eCOO              selecting
                                                           unwanted
                                                         dependencies
                        source code
                                                                  oZone

                                          assessing
                                           changes
                                              Orion



              •                   Package Cycle Remediation
Friday, June 17, 2011                                                     11 / 65
Contribution: eDSM

                                            eDSM
                                            CycleTable
                                      identifying
                                        cycles


                          model
                                      eCOO             selecting
                                                       unwanted
                                                     dependencies
                        source code
                                                              oZone

                                      assessing
                                       changes
                                          Orion




Friday, June 17, 2011                                                 12 / 65
Identifying cyclic dependencies?
                                     PB

           PA                            B1     B2

            A3        A1       A2
                                                          PC

                                                               C1

                PE
                                    PD
                 E2            E1
                                         D1    D2



                                                     PF

                     PH                                   F1
                                    PG

                          H1              G1




Friday, June 17, 2011                                               13 / 65
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              G1




Friday, June 17, 2011                                                                   13 / 65
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        PG




Friday, June 17, 2011                                                                                  13 / 65
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
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-Clipboard




Tests-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
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-Changes




System-Tools                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Compression




                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  System-Pools




               System-Finalization




                                                                     •                                                                                                                                     Pharo Core 1.1, 78 packages in cycle

                                                                                            ‣                      Cycles are not visible.

                                                                      Friday, June 17, 2011                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              15 / 65
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-Changes




System-Tools                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Compression




                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   System-Pools




               System-Finalization




                                                                     •                                                                                                                                      Pharo Core 1.1, 78 packages in cycle

                                                                                            ‣                      Cycles are not visible.

                                                                      Friday, June 17, 2011                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               15 / 65
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

More Related Content

Recently uploaded

ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceSamikshaHamane
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Celine George
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxMaryGraceBautista27
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxDr.Ibrahim Hassaan
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17Celine George
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Celine George
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfSpandanaRallapalli
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfphamnguyenenglishnb
 

Recently uploaded (20)

Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in Pharmacovigilance
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptx
 
Gas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptxGas measurement O2,Co2,& ph) 04/2024.pptx
Gas measurement O2,Co2,& ph) 04/2024.pptx
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdf
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
 

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Phd thesis

  • 1. Package Dependencies Analysis and Remediation in Object-Oriented Systems Jannik Laval Friday, June 17, 2011 1 / 65
  • 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 maintain Friday, June 17, 2011 2 / 65
  • 3. (Re)modularization • Improving the package structure • to support evolution i. Understanding the structure ii. Understanding the structural problems iii. Taking decisions for restructuring Friday, June 17, 2011 3 / 65
  • 4. Package Granularity ‣ Reuse and release unit Friday, June 17, 2011 4 / 65
  • 5. Package Granularity ‣ Reuse and release unit ‣ Group of classes • > Complex entity Friday, June 17, 2011 4 / 65
  • 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, extension Friday, June 17, 2011 4 / 65
  • 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) P4 Friday, June 17, 2011 4 / 65
  • 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. 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. 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 Friday, June 17, 2011 5 / 65
  • 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 removed Friday, June 17, 2011 5 / 65
  • 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. 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. 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. 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. 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. 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. 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. 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. Challenges ‣ Identifying cycles between packages Friday, June 17, 2011 9 / 65
  • 21. Challenges ‣ Identifying cycles between packages ‣ Selecting unwanted dependencies Friday, June 17, 2011 9 / 65
  • 22. Challenges ‣ Identifying cycles between packages ‣ Selecting unwanted dependencies ‣ Assessing changes at structural level • Friday, June 17, 2011 9 / 65
  • 23. eCOO: Paradigm model source code • Package Cycle Remediation Friday, June 17, 2011 10 / 65
  • 24. eCOO: Paradigm identifying cycles model source code • Package Cycle Remediation Friday, June 17, 2011 10 / 65
  • 25. eCOO: Paradigm identifying cycles model selecting unwanted dependencies source code • Package Cycle Remediation Friday, June 17, 2011 10 / 65
  • 26. eCOO: Paradigm identifying cycles model selecting unwanted dependencies source code assessing changes • Package Cycle Remediation Friday, June 17, 2011 10 / 65
  • 27. eCOO: Paradigm identifying cycles model selecting unwanted dependencies source code assessing changes • Package Cycle Remediation Friday, June 17, 2011 10 / 65
  • 28. eCOO: Contribution identifying cycles model eCOO selecting unwanted dependencies source code assessing changes • Package Cycle Remediation Friday, June 17, 2011 11 / 65
  • 29. eCOO: Contribution eDSM identifying cycles model eCOO selecting unwanted dependencies source code assessing changes • Package Cycle Remediation Friday, June 17, 2011 11 / 65
  • 30. eCOO: Contribution eDSM CycleTable identifying cycles model eCOO selecting unwanted dependencies source code assessing changes • Package Cycle Remediation Friday, June 17, 2011 11 / 65
  • 31. eCOO: Contribution eDSM CycleTable identifying cycles model eCOO selecting unwanted dependencies source code oZone assessing changes • Package Cycle Remediation Friday, June 17, 2011 11 / 65
  • 32. eCOO: Contribution eDSM CycleTable identifying cycles model eCOO selecting unwanted dependencies source code oZone assessing changes Orion • Package Cycle Remediation Friday, June 17, 2011 11 / 65
  • 33. Contribution: eDSM eDSM CycleTable identifying cycles model eCOO selecting unwanted dependencies source code oZone assessing changes Orion Friday, June 17, 2011 12 / 65
  • 34. Identifying cyclic dependencies? PB PA B1 B2 A3 A1 A2 PC C1 PE PD E2 E1 D1 D2 PF PH F1 PG H1 G1 Friday, June 17, 2011 13 / 65
  • 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 G1 Friday, June 17, 2011 13 / 65
  • 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 PG Friday, June 17, 2011 13 / 65
  • 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. 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-Clipboard Tests-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. 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-Changes System-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. 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-Changes System-Tools Compression System-Pools System-Finalization • Pharo Core 1.1, 78 packages in cycle ‣ Cycles are not visible. Friday, June 17, 2011 15 / 65