Transcript
Page 1: Visualize your architecture and information

Visualize your architecturePeter Norrhall, Chief Architect

[email protected]

Page 2: Visualize your architecture and information

Visualize your architecture© Extenda

Why Images?• ”A picture says more than 1000 words”

2

Page 3: Visualize your architecture and information

Visualize your architecture© Extenda

Thermometer

3

Microstates

Macrostate (Abstraction)

Page 4: Visualize your architecture and information

Visualize your architecture© Extenda

The holy number 7

4

7

1

13

2

21

95

Peter

Maria

Phrida

Linnea

Jakob

Moa

Alfons

1956 George Miller

Page 5: Visualize your architecture and information

Visualize your architecture© Extenda

Conscious Communication

5

7 = 2-3 bit / s

Page 6: Visualize your architecture and information

Visualize your architecture© Extenda

Unconscious Communication

6

Eyesight 10.000.000 bit/s

Touch 1.000.000 bit/s

Hearing 100.000 bit/s

Smell 100.000 bit/s

Taste 1.000 bit/s

M Zimmerman, Physiologie des Menchen

Page 7: Visualize your architecture and information

Visualize your architecture© Extenda

Les Misérables – Communication tree

7

Exformation -removed important information Association

Victor Hugo Publisher

?

!Tor Nörretranders, ”Märk Världen”

Page 8: Visualize your architecture and information

Visualize your architecture© Extenda

Pictures vs Text

8

Bla, bla, bla L-Mode

R-Mode + L-Mode

Page 9: Visualize your architecture and information

Visualize your architecture© Extenda

Why do we need Architect Documents?

9

Code

Xunit/BDD

Architect/Design Document

Page 10: Visualize your architecture and information

Visualize your architecture© Extenda

ISO 42010• Recommended practice for architectural description of software-

intensive systems

10

Page 11: Visualize your architecture and information

Visualize your architecture© Extenda

Architectural Views

11

Deployment

Functional

Process Non-Functional

Logical

Interface

Design

Intrastructure

Operational

Security

Data

http://www.codingthearchitecture.com/

Page 12: Visualize your architecture and information

Visualize your architecture© Extenda

Agile Development Documentation

12

Stakeholders

Developers

Architect/Developer

Code & Refactor

Refactor

Page 13: Visualize your architecture and information

Visualize your architecture© Extenda

Methods & Tools

13

Meta-model – UML/DDD/… – Association

Design Tools – White Board/Enterprise Architect/Visio/PPT/…

Exformation

Page 14: Visualize your architecture and information

Visualize your architecture© Extenda

The problem• Systems and software are evolving –> ”Document Dept” using

notioned based architecture or design• What is important and to whom? The sender or the receiver?

• http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf

• Perhaps the most important is to write/visualize• Andy Hunt, Pragmatic Thinking

14

Page 15: Visualize your architecture and information

Visualize your architecture© Extenda

Software Visualization• Generating images instead of doing it by hand when we want to

explore the information (microstates).

• Information visualization is essential in making sense out of large

data sets (microstates) by finding patterns.

• Generate and Display for a specific purpose

• Relationships between modules/components/classes/entities/…

• Code or Information dept

15

Page 16: Visualize your architecture and information

Visualize your architecture© Extenda

Visualize Software

16

Scanner/Parser

Data Source Code

Instrumentation

Running Systems

Mapper

Nodes: A, BEdges: A->B RendererModel

Diagram

Page 17: Visualize your architecture and information

Visualize your architecture© Extenda

Code Quality• The Code (source and test) is the actual system• Find Relations and dependencies

• Beneficial Relationships

• Finding unwanted relationships

• Code metrics

• Average Number of Methods (NOM) per Class

• Average Lines of Code (LOC) per method

• Average Cyclomatic Number (CYCLO) per line of code

• …

17

Page 18: Visualize your architecture and information

Visualize your architecture© Extenda

Code Metrics• Lines of Code• Average Number of Methods (NOM) per Class• Average Lines of Code (LOC) per method• Average Cyclomatic Number (CYCLO) per line of code • Duplication• Check-in counts / churn• Test Coverage• Coupling • …

18

Page 19: Visualize your architecture and information

Visualize your architecture© Extenda

Cyclomatic Complexity

19

if( c1() ) f1();else f2(); if( c2() ) f3();else f4();

http://en.wikipedia.org/wiki/Cyclomatic_complexity

Page 20: Visualize your architecture and information

Visualize your architecture© Extenda

Code Metrics• SonarSource

20

Page 21: Visualize your architecture and information

Visualize your architecture© Extenda

Code Metrics

21

Page 22: Visualize your architecture and information

Visualize your architecture© Extenda

Code Metrics – Industry Standard

22

Page 23: Visualize your architecture and information

Visualize your architecture© Extenda

Rules Compliance

23

Page 24: Visualize your architecture and information

Visualize your architecture© Extenda

Code Violations

24

Page 25: Visualize your architecture and information

Visualize your architecture© Extenda

Measure over time

25

Page 26: Visualize your architecture and information

Visualize your architecture© Extenda

Complexity Distribution

26

Page 27: Visualize your architecture and information

Visualize your architecture© Extenda 27

Page 28: Visualize your architecture and information

Visualize your architecture© Extenda

Find the truth

28

Page 29: Visualize your architecture and information

Visualize your architecture© Extenda

CodeCity

29

Page 30: Visualize your architecture and information

Visualize your architecture© Extenda

Dependencies

30

Page 31: Visualize your architecture and information

Visualize your architecture© Extenda

Dependencies• ”Design is beneficially related elements”, K Beck

• http://www.threeriversinstitute.org/blog/?p=111

• Predicting Subsystem Failures using Dependency Graph

Complexities

• http://research.microsoft.com/pubs/70340/tr-2006-126.pdf

31

Page 32: Visualize your architecture and information

Visualize your architecture© Extenda

Structure 101• Code Parser and Analyzer for Java, .Net and C/C++• Interactive explorer of relationships and quality of code finding and

displaying technical dept• CI ”integration”

32

Page 33: Visualize your architecture and information

Visualize your architecture© Extenda

Demo : Spring

33

Page 34: Visualize your architecture and information

Visualize your architecture© Extenda

Commercial Alternatives• Sotoarc/Sonargraph - http://www.hello2morrow.com/

34

Page 35: Visualize your architecture and information

Visualize your architecture© Extenda

Drawbacks• Package Dependencies• CC metrics = # faults?

35

Page 36: Visualize your architecture and information

Visualize your architecture© Extenda

Graphviz• You are in charge• Simple textual input -> different graphical output• Automated graph layout tool based on graph theory

• Developed by A&T, Common Public Licence

36

Page 37: Visualize your architecture and information

Visualize your architecture© Extenda

Model & Diagram

digraph G {

a->b;

}

37

$ dot -Tpng simple.dot –o simple.png

Page 38: Visualize your architecture and information

Visualize your architecture© Extenda

Graphs• Directed Graph

digraph G {

a -> b;

b -> c;

a -> c;

}

• Undirected Graph

graph G {

a -- b;

b -- c;

a -- c;

}

38

Page 39: Visualize your architecture and information

Visualize your architecture© Extenda

Layout• Dot – Hierarchy graph• Neato – Undirected graph using spring model• Twopi – Radial Layout• Circo – Circular Layout• Fdp – Undirected graphs using force-directed spring model• Sfdp – Similar to Fdp

39

Page 40: Visualize your architecture and information

Visualize your architecture© Extenda

Output Formats• PostScript (ps)• Structured Vector Graphics (svg)• Images (png, gif)• Imagemap (imap)• …

40

Page 41: Visualize your architecture and information

Visualize your architecture© Extenda

Graph Attributes• Size = ”x, y”• Rankdir = LR | RL | BT• Rotate=90• Stylesheet=”.css”• …

41

Page 42: Visualize your architecture and information

Visualize your architecture© Extenda

Information Dept : E-Commerce Catalog

42

Books

Software Engineering

Agile

Agile Development

Management 3.0

Programming

Novels

18th Century

Page 43: Visualize your architecture and information

Visualize your architecture© Extenda

Country #1 – Dot layout

43

Page 44: Visualize your architecture and information

Visualize your architecture© Extenda

Graph Attribute• Rotate=90

44

Page 45: Visualize your architecture and information

Visualize your architecture© Extenda

neato

45

Category

Product

$ neato -Tpng catalog.dot –o catalog.png

Page 46: Visualize your architecture and information

Visualize your architecture© Extenda

Node Attributes• Blue Box• node [shape=box,height=0.1,width=0.1,color=blue,style=filled]• product56001;• product57001;

• …

• Red Circle• node [shape=circle,style=filled,color=red,height=0.1,label="”]• category10002;• category10003;

46

Page 47: Visualize your architecture and information

Visualize your architecture© Extenda

Node Attribute• node [shape=circle,style=filled,color=red,height=0.3,label=""];• category10002;

• node [shape=circle,style=filled,color=red,height=0.1,label=""];• category10003;• category10004;• …

47

Page 48: Visualize your architecture and information

Visualize your architecture© Extenda

Highlight root category

48

Page 49: Visualize your architecture and information

Visualize your architecture© Extenda

Twopi – Radial Layout

49

Page 50: Visualize your architecture and information

Visualize your architecture© Extenda

Country #2

50

Page 51: Visualize your architecture and information

Visualize your architecture© Extenda

Country #3

51

Page 52: Visualize your architecture and information

Visualize your architecture© Extenda

Other• Component Dependencies (Spring XML Bean Config)• Ant Target Dependencies• Maven Jar Dependencies• …

52

Page 53: Visualize your architecture and information

Visualize your architecture© Extenda

Other tools• Enterprise Architect – Code (better suited for user generated)• Erwin – Database ER-model

53

Page 54: Visualize your architecture and information

Visualize your architecture© Extenda

Summary

54

Practice Exformation

Use Visualization

Question Metrics

Page 55: Visualize your architecture and information

Visualize your architecture© Extenda

Questions?

55

Page 56: Visualize your architecture and information

Visualize your architecture© Extenda

Referenser• ”Märk Världen”, Tor Nörretranders, ISBN 9100570702• http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf• http://en.wikipedia.org/wiki/Cyclomatic_complexity• http://www.enerjy.com/blog/?p=198 - CC > 74 not good• http://www.leshatton.org/Documents/TAIC2008-29-08-2008.pdf -

Tools• http://www.headwaysoftware.com/ - Structure 101• http://www.hello2morrow.com/ - Sonargraph• http://www.sonarsource.org/ - SonarSource• http://www.graphviz.org/ - Graphviz• Similar presentations• http://www.jfokus.se/jfokus11/preso/jf11_VizualizationsForCodeMetrics.pdf• http://erik.doernenburg.com/wp-content/archive/Doernenburg_SoftwareQuality_ver2a.pdf• http://www.slideshare.net/girba/pragmatic-quality-assessment-tutorial-icse-2008• http://www.infoq.com/presentations/Where-Did-My-Architecture-Go

Page 57: Visualize your architecture and information

[email protected]@peternorrhallLinkedIn

57


Recommended