BernhardMerkle_StopTheArchitectureErosion
-
Upload
kostas-mavridis -
Category
Documents
-
view
473 -
download
2
description
Transcript of BernhardMerkle_StopTheArchitectureErosion
![Page 1: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/1.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 1
Bernhard Merkle
Central Research & Development
Software-Engineering
SICK-AG Waldkirch
mailto: [email protected]
Contact on linkedin.com or xing.com
Stop the Software
Architecture Erosion
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 2
Disclaimer
I am a Guy
We will be X-raying Software
Do not shoot me,
this is a contribution,not criticism !
![Page 2: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/2.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 3
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 4
![Page 3: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/3.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 6
Google: Street View
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 7
Introduction / Overview
Levels of Static Analysis
– Code, Design, Architectural
– Examples
Architectural Analysis
– Use Cases
– Tool Support
– Examples
– Pros/Cons
![Page 4: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/4.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 8
Levels of Static Analysis:
Micro-Level
– Code
– =, ==, { }
Macro-Level
– Class-Design, API-Design
– by reference, Exception-Handling, equals/hashCode/op=
Architecture-Level:
– Layers, Subsystems, Compoments, Interfaces
– Coupling, Dependency, etc…
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 9
Micro-Level: MISRA-C 2004
![Page 5: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/5.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 10
Macro-Level: Design+Coding Guidelines
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 11
Samples for Effective Rules
C++
– Prefer const and inline to #define
– Use same form in corresponding uses of new and delete
– Declare cctor and assignment op for classes with dyn memory
– Strive for class interfaces that a minimal and complete
– Choose carefully betw. fuction overloading / parameter default
Java
– Eliminate obsolete object references
– Always override hashCode when you override equals
– Minimize mutability
– Favor composistion over inheritance
– Do not use raw types in new code
![Page 6: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/6.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 12
Tool Example Java: findbugs
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 13
Software, Architecture, Erosion
![Page 7: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/7.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 14
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
– Software Architecture Document
– Software Design Guidelines
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 15
Erosion always happens
– Prototypes become products
– Hacks/Workarounds
– Lack of understanding “should architecture”
– Time pressure
![Page 8: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/8.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 16
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
Architectural Erosion
Why should we care ?
– In (lots of) Projects, Architecture decay happens
– We are not alone, as we‘ve some good representatives… ;-)
There is/was a plan
![Page 9: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/9.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 18
X-raying Software…
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
Findbugs: the first years
0.7.2
(03/2004)
0.8.6
(10/2004)
![Page 10: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/10.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 20
Findbugs: the first years
0.8.6
(10/2004)
0.8.7
(05/2005)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 21
Findbugs 0.8.7: Architectural Analysis
![Page 11: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/11.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 22
Tangle increase…
0.8.8
(05/2005)1.0.0
(06/2006)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 23
Tangle increase…
1.3.0
(07/2007)
![Page 12: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/12.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 24
ONE BIG Tangle…
1.3.8 (03/2009)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 25
Still managable ?
![Page 13: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/13.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 26
Anti-Pattern: Findelkind (foundling)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 28
Modeling Subsystems:
![Page 14: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/14.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 29
Fixing Architectural Violations
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 30
Fixing Architectural Violations
![Page 15: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/15.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 31
Fixing Architectural Violations
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 32
Fixing Architectural Violations
![Page 16: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/16.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 33
Fixing Architectural Violations
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 34
Fixing Architectural Violations
![Page 17: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/17.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 35
Fixing Architectural Violations
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 37
Tools for Architecture-Analysis
– Sotograph SonarJ
– Bauhaus Lattix
– Structure101 Klocwork, Coverity
– http://code.google.com/p/architecturerules/
– ODASA, CodeCrawler, Codecity, SeeSoft, XRadar, XDepend, SonarSource, Kalistick, Sqoring, …
http://se-radio.net/
episode-115-architecture-analysis
![Page 18: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/18.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 38
Basic Approaches
– Your makesystem…
– makedepend, jdepend
– Eclipse (Java Build Path)
– OSGI (Dependencies)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 39
Basic Approaches
PDE Dependency Visualization
![Page 19: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/19.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 40
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: 41
Architecture Analysis (deviation)
Should-
Architecture
Requirements
Architecture-
Design
Comparison“Diff-”
ArchitectureActions
Extraction Is-
Architecture
Existing Code
•Violations•Conformance
![Page 20: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/20.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 42
Drill-Down + Aggregation:Component � System � Package � Class � Src-Line
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 43
Displaying results:Graphical and/or numerical
![Page 21: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/21.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 44
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: 45
Rating of Architecture
NO Rating of external Requirements (Fullfillment)
Internal Quality:
– Cycles
– Coupling of Modules
– Stability of API
– Anti-Patterns, Bad Smells
– Reuse/Extract system parts
![Page 22: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/22.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 46
Eclipse: Architectural Analysis
– JDT
– CDT
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 47
Eclipse Architecture
![Page 23: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/23.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 48
Eclipse Architecture
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 49
Eclipse Architecture
![Page 24: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/24.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 50
E3.4: Plattf:Ant ���� JDT:*
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 51
E3.4: Plattf:Ant ���� JDT:UI
![Page 25: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/25.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 52
Plattform: CVS ���� Workb (internal)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 53
Plattform: CVS ���� Workb (internal)
![Page 26: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/26.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 54
Team-UI����UI-workbench (internal)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=90582
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 56
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
![Page 27: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/27.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 57
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: 59
Code Clones
– identical Files
• E2.0 JDT,CDT
– jdt\debug\internal\ui\dialogfields\ListDialogField.java
– cdt\debug\internal\ui\dialogfields\ListDialogField.java
• E3.4 CDT: identical packages
– cdt\debug\internal\ui\dialogfields,
cdt\debug\mi\internal\ui\dialogfields
– variation of former identical Files
• E3.4 JDT,CDT
– jdt\debug\internal\ui\dialogfields\ListDialogField.java
– cdt\debug\internal\ui\dialogfields\ListDialogField.java
![Page 28: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/28.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 60
Discover Architecture:
Call-Relationships
•Business Modules•Public, exported Methods
•Utility Modules, Infrastructure•Private, internal Methods
Using… Used by…
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 61
Pros/Cons Architecture Analysis Tools
Wood/Trees !
Internal Structure !
Metrics !
Internal Quality !
Clones !
Multiple Languages
Monitoring Changes
Virtual Refactoring
API Design ?
Additional aspects ?
Metrics ?
Functional Redundancy?
![Page 29: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/29.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 62
Rating of Architecture
1315 classes in 229 packages all depend on each other !!!
classes.zip, rt.jar (BIG BALL OF … ;-)
JDK^H^Hdecay
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 63
Still manageable ?
![Page 30: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/30.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 64
Rating Eclipse Architecture
Erosion not really dramatic, but happened/s
– large codebase,
structured in plugins
– OSGI helps a lot
– API Police, Guidelines
upcoming PDE tools
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 65
Rating Eclipse Architecture:
– Violations
• Upper layers
• Internal access
– Small amount of
• AntiPatterns
– Some amount of
• CodeClones
– OSGI is not enough
� People AND Tools !
![Page 31: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/31.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 66
URLs, References:
http://se-radio.net/podcast/2008-10/episode-115-
architecture-analysis
Thanks to:
– Headways: Structure101:
• Ian Sutton
• Paul Hickey
– hello2morrow: SotoArc
• Thomas Schoen
• Norman Wenzel
• Heinrich Rust
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 67
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
![Page 32: BernhardMerkle_StopTheArchitectureErosion](https://reader033.fdocuments.us/reader033/viewer/2022051612/54bbac844a7959d2488b456b/html5/thumbnails/32.jpg)
Bernhard Merkle „Stop the Software Architecture Erosion “Page: 68
Bernhard Merkle
Central Research & Development
Software-Engineering
SICK-AG Waldkirch
mailto: [email protected]
Contact on linkedin.com or xing.com
Stop the Software
Architecture Erosion