Stop the Software
Architecture Erosion


Bernhard Merkle
Central Research & Development
Software-Engineering
SICK-AG Waldk...
Note:
this is only a subset of
the presentation slides !
Bernhard Merkle
Central Research & Development
Software-Engineeri...
Traffic and Luggage Control




                      Bernhard Merkle „Stop the Software Architecture Erosion“
           ...
Introduction / Overview
Levels of Static Analysis
  – Code, Design, Architectural
  – Examples
Architectural Analysis
  – ...
Possible levels of Static Analysis:
Micro-Level
  – Code
  – =, ==, { },


Macro-Level
  – Class-Design
  – by reference, ...
Tool Example Java: findbugs




                     Bernhard Merkle „Stop the Software Architecture Erosion“
            ...
Software-Architecture: Definitions
IEEE 1471-2000:
  –   The fundamental organization of a system,
  –   embodied in its c...
Erosion ALWAYS
happens
– Prototypes become products
– Hacks. Architectural restrictions ignored
– Lack of understanding th...
Architectural Erosion
“Sometimes the developers manage to
maintain this purity of design through the
initial development a...
Architectural Erosion
Why should we care ?
  – In (lots of) Projects, Architecture decay happens
  – We are not alone, as ...
Findbugs
Is there a architecture ?
Is there a erosion ?




Do AA-Tool work well ?
do codelevel lints care about architect...
ONE BIG Tangle…




                                  1.3.8
                  Bernhard Merkle „Stop the Software Architect...
Bernhard Merkle „Stop the Software Architecture Erosion“
                        Page: 26
Modeling Subsystems:




                       Bernhard Merkle „Stop the Software Architecture Erosion“
                 ...
Fixing Architectural Violations




                       Bernhard Merkle „Stop the Software Architecture Erosion“
      ...
Fixing Architectural Violations




                       Bernhard Merkle „Stop the Software Architecture Erosion“
      ...
Fixing Architectural Violations




                       Bernhard Merkle „Stop the Software Architecture Erosion“
      ...
Fixing Architectural Violations




                       Bernhard Merkle „Stop the Software Architecture Erosion“
      ...
Findbugs:
   and the next level of
checking ;-)




                Bernhard Merkle „Stop the Software Architecture Erosio...
Tools for Architecture-Analysis
  – Sotograph
  – Bauhaus
  – Structure101

  – SonarJ
  – Lattix
  – Klocwork K7

  – Oth...
Basic Approaches
  –   Your makesystem…
  –   makedepend, jdepend
  –   RE code into UML model
  –   Eclipse (Java Build P...
Basic Approaches
PDE Dependency Visualization




                               Bernhard Merkle „Stop the Software Archit...
Missing in basic approaches
Architecture Analysis (Deviation)
Drill-Down+Aggregation
Displaying results
Monitoring changes...
Architecture Analysis (deviation)

 Requirements    •System SHOULD be: maintainable, easy to understand, extensible, indep...
Drill-Down + Aggregation:
Component   System   Package          Class              Src-Line




                          ...
Displaying results:
Graphical and/or numerical




                             Bernhard Merkle „Stop the Software Archite...
Monitoring changes, trends (QA)
New artefacts
  – Interface, Subsystem, Package, File, Class, Operation etc.
  – Dependenc...
Rating of Architecture
NO Rating of external Requirements (Fullfillment)

Internal Quality:
  –   Cycles
  –   Coupling
  ...
Eclipse: Architectural Analysis
  – JDT




  – CDT

                   Bernhard Merkle „Stop the Software Architecture Er...
Eclipse Architecture




                       Bernhard Merkle „Stop the Software Architecture Erosion“
                 ...
Eclipse Architecture




         Bernhard Merkle „Stop the Software Architecture Erosion“
                               ...
E3.4: Runtime   Update




                     Bernhard Merkle „Stop the Software Architecture Erosion“
                 ...
E3.4: Workbench   Text, Update, Help




                      Bernhard Merkle „Stop the Software Architecture Erosion“
  ...
CDT:




       Bernhard Merkle „Stop the Software Architecture Erosion“
                               Page: 72
Interface Design
more than OSGI
Well balanced arragement of…
Layout/Visualize the
     calling graph key communication
   ...
Bernhard Merkle „Stop the Software Architecture Erosion“
                        Page: 77
Dependent BaseClass

 – Type:
     • Design Problem


 – Problem:
     • one of more Methods shall implement different
   ...
AntiPatterns / Bad Smells:
Metrics/1000 Classes        Eclipse                     JDK

Dependent Baseclass:          1   ...
Code Clones




              Bernhard Merkle „Stop the Software Architecture Erosion“
                                   ...
Code Clones
 – identical Files
     • E2.0 JDT,CDT
          – jdtdebuginternaluidialogfieldsListDialogField.java
        ...
Rating Eclipse Architecture
– VERY clean

– OSGI helps a lot

– API Police




–     Technology and People



            ...
Rating Eclipse Architecture:
Process and Tools !
  – Violations
     • Upper layers
     • Internal access


  – OSGI is n...
Pictures under CC license from flickr:
1191285966_d701fcb1c3_b_flickr_bluemeat.jpg
3425532267_bd74526b23_b_flickr_tiwo.jpg...
Upcoming SlideShare
Loading in …5
×

Eclipse Summit 2009 Bernhard Merkle Stop The Software Architecture Erosion

1,624 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
1,624
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Eclipse Summit 2009 Bernhard Merkle Stop The Software Architecture Erosion

  1. 1. Stop the Software Architecture Erosion Bernhard Merkle Central Research & Development Software-Engineering SICK-AG Waldkirch mailto: Bernhard.Merkle@gmail.com Contact on linkedin.com or xing.com Erosion“ Bernhard Merkle „Stop the Software Architecture Page: 1
  2. 2. Note: this is only a subset of the presentation slides ! Bernhard Merkle Central Research & Development Software-Engineering SICK-AG Waldkirch mailto: Bernhard.Merkle@gmail.com Contact on linkedin.com or xing.com Erosion“ Bernhard Merkle „Stop the Software Architecture Page: 2
  3. 3. Traffic and Luggage Control Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 7
  4. 4. Introduction / Overview Levels of Static Analysis – Code, Design, Architectural – Examples Architectural Analysis – Use Cases – Tool Support, – Examples – Pros/Cons Summary Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 8
  5. 5. Possible levels of Static Analysis: Micro-Level – Code – =, ==, { }, Macro-Level – Class-Design – by reference, String concat, Exception-Handling Architecture-Level: – Layers, Graphs, Subsystems, Compoments, Interfaces – Coupling, Dependency, etc… Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 9
  6. 6. Tool Example Java: findbugs Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 13
  7. 7. Software-Architecture: Definitions IEEE 1471-2000: – The fundamental organization of a system, – embodied in its components, – their relationship to each other and the environment, – and the principles governing its design and evolution. Kruchten: captured in two documents: – Software Architecture Document – Software Design Guidelines Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 15
  8. 8. Erosion ALWAYS happens – Prototypes become products – Hacks. Architectural restrictions ignored – Lack of understanding the “should architecture” (e.g. outsourcing) – Time pressure leads to abbreviations – impossible to detect manually only Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 16
  9. 9. Architectural Erosion “Sometimes the developers manage to maintain this purity of design through the initial development and into the first release. More often something goes wrong.The software starts to rot like a piece of bad meat”. Uncle Bob: “Agile Software Development” Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 17
  10. 10. Architectural Erosion Why should we care ? – In (lots of) Projects, Architecture decay happens – We are not alone, as we‘ve some good representatives… ;-) Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 18
  11. 11. Findbugs Is there a architecture ? Is there a erosion ? Do AA-Tool work well ? do codelevel lints care about architecture ? Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 19
  12. 12. ONE BIG Tangle… 1.3.8 Bernhard Merkle „Stop the Software Architecture Erosion“ (03/2009) Page: 25
  13. 13. Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 26
  14. 14. Modeling Subsystems: Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 27
  15. 15. Fixing Architectural Violations Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 28
  16. 16. Fixing Architectural Violations Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 31
  17. 17. Fixing Architectural Violations Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 32
  18. 18. Fixing Architectural Violations Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 33
  19. 19. Findbugs: and the next level of checking ;-) Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 34
  20. 20. Tools for Architecture-Analysis – Sotograph – Bauhaus – Structure101 – SonarJ – Lattix – Klocwork K7 – Others: • http://code.google.com/p/architecturerules/ • Semmlecode, CodeCrawler, SeeSoft, XRadar,… http://se-radio.net/podcast/2008-10/episode-115-architecture-analysis Erosion“ Bernhard Merkle „Stop the Software Architecture Page: 35
  21. 21. Basic Approaches – Your makesystem… – makedepend, jdepend – RE code into UML model – Eclipse (Java Build Path) Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 36
  22. 22. Basic Approaches PDE Dependency Visualization Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 37
  23. 23. Missing in basic approaches Architecture Analysis (Deviation) Drill-Down+Aggregation Displaying results Monitoring changes, trends Rating of Architecture Requirements for Architectural Analysis Tools Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 38
  24. 24. Architecture Analysis (deviation) Requirements •System SHOULD be: maintainable, easy to understand, extensible, independent •Model Dependencies •Model Interfaces Architecture- Should- •Model Subsystems Design Architecture Comparison “Diff-” Actions Architecture Extraction Is- •Violations •Dependencies as exist •Conformance Architecture •Interfaces / Usage as exist •Subsystems Existing Code •System IS: … ☺ Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 39
  25. 25. Drill-Down + Aggregation: Component System Package Class Src-Line Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 40
  26. 26. Displaying results: Graphical and/or numerical Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 41
  27. 27. Monitoring changes, trends (QA) New artefacts – Interface, Subsystem, Package, File, Class, Operation etc. – Dependencies – Architecture violations Early, betimes correction of violations Monitoring – Trendreports – “outsourcing” projects Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 42
  28. 28. Rating of Architecture NO Rating of external Requirements (Fullfillment) Internal Quality: – Cycles – Coupling – Stability – Anti-Patterns, Bad Smells Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 43
  29. 29. Eclipse: Architectural Analysis – JDT – CDT Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 49
  30. 30. Eclipse Architecture Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 50
  31. 31. Eclipse Architecture Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 51
  32. 32. E3.4: Runtime Update Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 53
  33. 33. E3.4: Workbench Text, Update, Help Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 54
  34. 34. CDT: Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 72
  35. 35. Interface Design more than OSGI Well balanced arragement of… Layout/Visualize the calling graph key communication inheritance key abstractions Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 75
  36. 36. Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 77
  37. 37. Dependent BaseClass – Type: • Design Problem – Problem: • one of more Methods shall implement different • behavior, depending on the type, passed in – Context: • make “extensible” systems, frameworks – Forces: • Programming languages offer, instanceof/typeid funcs. – Antipattern: • Methods of the baseclass, depend on derived classes, e.g. accessing their members, doing switch/case depending on type information Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 78
  38. 38. AntiPatterns / Bad Smells: Metrics/1000 Classes Eclipse JDK Dependent Baseclass: 1 16 Multiple Interface Inher. 4 18 Abstractable Methods 80 60 Abstractable Attributes 45 170 Unused Classes 50 150 Unused Methods 950 2500 Unused Attributes 30 20 Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 80
  39. 39. Code Clones Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 81
  40. 40. Code Clones – identical Files • E2.0 JDT,CDT – jdtdebuginternaluidialogfieldsListDialogField.java – cdtdebuginternaluidialogfieldsListDialogField.java • E3.4 CDT: identical packages – cdtdebuginternaluidialogfields, cdtdebugmiinternaluidialogfields – variation of former identical Files • E34 JDT,CDT – jdtdebuginternaluidialogfieldsListDialogField.java – cdtdebuginternaluidialogfieldsListDialogField.java – identical behaviour in different Classes • e.g. Codegeneration ;-) – Identical behaviour in same Class • swt.graphics.ImageData.java – static void blit(…) // four variations Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 82
  41. 41. Rating Eclipse Architecture – VERY clean – OSGI helps a lot – API Police – Technology and People Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 88
  42. 42. Rating Eclipse Architecture: Process and Tools ! – Violations • Upper layers • Internal access – OSGI is not enough – Small amount of • AntiPatterns • CodeCones Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 89
  43. 43. Pictures under CC license from flickr: 1191285966_d701fcb1c3_b_flickr_bluemeat.jpg 3425532267_bd74526b23_b_flickr_tiwo.jpg 1813471845_5a4be999dc_o_flickr_thatcanadiangrrl.jpg 2401122677_c25dea1233_b_flickr_EnglishGirlAbroad.jpg 501709581_f3729ceaeb_b_flickr.jpg Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 91

×