Eclipse Summit 2009 Bernhard Merkle Stop The Software Architecture Erosion

Post on 20-Oct-2014

1759 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

Transcript

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 1

Bernhard Merkle

Central Research & Development

Software-Engineering

SICK-AG Waldkirch

mailto: Bernhard.Merkle@gmail.com

Contact on linkedin.com or xing.com

Stop the Software

Architecture Erosion

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 2

Bernhard Merkle

Central Research & Development

Software-Engineering

SICK-AG Waldkirch

mailto: Bernhard.Merkle@gmail.com

Contact on linkedin.com or xing.com

Note:

this is only a subset of

the presentation slides !

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 7

Traffic and Luggage Control

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 8

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 Erosio n“Page: 9

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 Erosio n“Page: 13

Tool Example Java: findbugs

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 15

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 Erosio n“Page: 16

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 Erosio n“Page: 17

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 Erosio n“Page: 18

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 Erosio n“Page: 19

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 Erosio n“Page: 25

ONE BIG Tangle…

1.3.8

(03/2009)

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 26

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 27

Modeling Subsystems:

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 28

Fixing Architectural Violations

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 31

Fixing Architectural Violations

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 32

Fixing Architectural Violations

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 33

Fixing Architectural Violations

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 34

Findbugs:

and the next level of

checking ;-)

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 35

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-arc hitecture-analysis

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 36

Basic Approaches

– Your makesystem…

– makedepend, jdepend

– RE code into UML model

– Eclipse (Java Build Path)

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 37

Basic Approaches

PDE Dependency Visualization

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 38

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 Erosio n“Page: 39

Architecture Analysis (deviation)

Should-

Architecture

Requirements

Architecture-

Design

Comparison “Diff-”

ArchitectureActions

Extraction Is-

Architecture

Existing Code

•Violations•Conformance•Dependencies as exist

•Interfaces / Usage as exist•Subsystems

•Model Dependencies•Model Interfaces•Model Subsystems

•System SHOULD be: maintainable, easy to understand, extensible, independent

•System IS: …☺

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 40

Drill-Down + Aggregation:Component � System � Package � Class � Src-Line

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 41

Displaying results:Graphical and/or numerical

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 42

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 Erosio n“Page: 43

Rating of Architecture

NO Rating of external Requirements (Fullfillment)

Internal Quality:

– Cycles

– Coupling

– Stability

– Anti-Patterns, Bad Smells

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 49

Eclipse: Architectural Analysis

– JDT

– CDT

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 50

Eclipse Architecture

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 51

Eclipse Architecture

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 53

E3.4: Runtime ���� Update

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 54

E3.4: Workbench ���� Text, Update, Help

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 72

CDT:

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 75

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 Erosio n“Page: 77

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 78

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 Erosio n“Page: 80

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 Erosio n“Page: 81

Code Clones

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 82

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• E34 JDT,CDT

– jdt\debug\internal\ui\dialogfields\ListDialogField.java

– cdt\debug\internal\ui\dialogfields\ListDialogField.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 Erosio n“Page: 88

Rating Eclipse Architecture

– VERY clean

– OSGI helps a lot

– API Police

– � Technology and People

Bernhard Merkle „Stop the Software Architecture Erosio n“Page: 89

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 Erosio n“Page: 91

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

top related