Software-Metriken: Purismus vs. Pragmatismus

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Software-Metriken: Purismus vs. Pragmatismus"

Transkript

1 Software-Metriken: Purismus vs. Pragmatismus Web DevCon Manuel Pichler Software-Metriken: Purismus vs. Pragmatismus 1 / 42

2 Über mich Diplominformatiker Mehr als 10 Jahre Erfahrung im Web-Umfeld Autor hinter einer Reihe von QA-Tools Qafoo passion for software quality Software-Metriken: Purismus vs. Pragmatismus 2 / 42

3 Über mich Diplominformatiker Mehr als 10 Jahre Erfahrung im Web-Umfeld Autor hinter einer Reihe von QA-Tools Qafoo passion for software quality Software-Metriken: Purismus vs. Pragmatismus 2 / 42

4 Über mich Diplominformatiker Mehr als 10 Jahre Erfahrung im Web-Umfeld Autor hinter einer Reihe von QA-Tools Qafoo passion for software quality Software-Metriken: Purismus vs. Pragmatismus 2 / 42

5 Über mich Mitgründer von Diplominformatiker Mehr als 10 Jahre Erfahrung im Web-Umfeld Autor hinter einer Reihe von QA-Tools Qafoo passion for software quality We help people to create high quality PHP applications. Software-Metriken: Purismus vs. Pragmatismus 2 / 42

6 Outline Was sind Metriken? Klassische Softwaremetriken Objektorientierte Softwaremetriken Grenzwerte Auswertung Zusammenfassung Software-Metriken: Purismus vs. Pragmatismus 3 / 42

7 Softwaremetriken Eine Softwaremetrik ist eine Maßzahl für ein bestimmtes Qualitätsmerkmal von Software Funktionen zur Ermittlung von Kennzahlen eines Softwareartefakts (Wikipedia) You cannot control what you cannot measure. (Tom DeMarco) Software-Metriken: Purismus vs. Pragmatismus 4 / 42

8 Softwaremetriken Eine Softwaremetrik ist eine Maßzahl für ein bestimmtes Qualitätsmerkmal von Software Funktionen zur Ermittlung von Kennzahlen eines Softwareartefakts (Wikipedia) You cannot control what you cannot measure. (Tom DeMarco) Software-Metriken: Purismus vs. Pragmatismus 4 / 42

9 Softwaremetriken Eine Softwaremetrik ist eine Maßzahl für ein bestimmtes Qualitätsmerkmal von Software Funktionen zur Ermittlung von Kennzahlen eines Softwareartefakts (Wikipedia) You cannot control what you cannot measure. (Tom DeMarco) Software-Metriken: Purismus vs. Pragmatismus 4 / 42

10 Wer macht hier kein PHP? Software-Metriken: Purismus vs. Pragmatismus 5 / 42

11 PHP to whatever translation table $variable $this->method() foreach ( $l as $s ) array(array(1, 2)) public function... namespace foo\bar; <?php variable method() OR this.method() for ( String s : l ) for ( k in l ) s = l[k] new int[][] {{1, 2}} [[1, 2]] public [void int..]... package foo.bar; namespace foo.bar { IGNORE Software-Metriken: Purismus vs. Pragmatismus 6 / 42

12 Ist aber auch egal die meisten Konzepte wurden bereits vor Dekaden entwickelt Software-Metriken: Purismus vs. Pragmatismus 7 / 42

13 Outline Was sind Metriken? Klassische Softwaremetriken Objektorientierte Softwaremetriken Grenzwerte Auswertung Zusammenfassung Software-Metriken: Purismus vs. Pragmatismus 8 / 42

14 Umfangsmetriken Summen über Softwareartefakte Lines Of * LOC Lines Of Code ELOC Executable Lines Of Code CLOC Comment Lines Of Code NCLOC Non-Comment Lines Of Code Number Of * NOC Number Of Classes NOM Number Of Methods NOP Number Of Packages Software-Metriken: Purismus vs. Pragmatismus 9 / 42

15 Lines Of *, Number Of * 1 2 namespace foo\bar ; 3 4 a b s t r a c t c l a s s FooBar { 5 a b s t r a c t f u n c t i o n bar ( ) ; 6 } 7 8 c l a s s Foo e x t e n d s FooBar { 9 / Does t h i s... / 10 p u b l i c f u n c t i o n bar ( ) {} 11 / Does t h a t... / 12 p u b l i c f u n c t i o n baz ( ) {} 13 } c l a s s Bar e x t e n d s Foo { 16 p u b l i c f u n c t i o n f o o ( Foo $ f ) {} 17 } Lines Of * LOC 16 ELOC 3 CLOC 2 NCLOC 14 Number Of * NOC 3 NOM 4 NOP 1 Software-Metriken: Purismus vs. Pragmatismus 10 / 42

16 Lines Of *, Number Of * 1 2 namespace foo\bar ; 3 4 a b s t r a c t c l a s s FooBar { 5 a b s t r a c t f u n c t i o n bar ( ) ; 6 } 7 8 c l a s s Foo e x t e n d s FooBar { 9 / Does t h i s... / 10 p u b l i c f u n c t i o n bar ( ) {} 11 / Does t h a t... / 12 p u b l i c f u n c t i o n baz ( ) {} 13 } c l a s s Bar e x t e n d s Foo { 16 p u b l i c f u n c t i o n f o o ( Foo $ f ) {} 17 } Lines Of * LOC 16 ELOC 3 CLOC 2 NCLOC 14 Number Of * NOC 3 NOM 4 NOP 1 Software-Metriken: Purismus vs. Pragmatismus 10 / 42

17 Lines Of *, Number Of * 1 2 namespace foo\bar ; 3 4 a b s t r a c t c l a s s FooBar { 5 a b s t r a c t f u n c t i o n bar ( ) ; 6 } 7 8 c l a s s Foo e x t e n d s FooBar { 9 / Does t h i s... / 10 p u b l i c f u n c t i o n bar ( ) {} 11 / Does t h a t... / 12 p u b l i c f u n c t i o n baz ( ) {} 13 } c l a s s Bar e x t e n d s Foo { 16 p u b l i c f u n c t i o n f o o ( Foo $ f ) {} 17 } Lines Of * LOC 16 ELOC 3 CLOC 2 NCLOC 14 Number Of * NOC 3 NOM 4 NOP 1 Software-Metriken: Purismus vs. Pragmatismus 10 / 42

18 Lines Of *, Number Of * 1 2 namespace foo\bar ; 3 4 a b s t r a c t c l a s s FooBar { 5 a b s t r a c t f u n c t i o n bar ( ) ; 6 } 7 8 c l a s s Foo e x t e n d s FooBar { 9 / Does t h i s... / 10 p u b l i c f u n c t i o n bar ( ) {} 11 / Does t h a t... / 12 p u b l i c f u n c t i o n baz ( ) {} 13 } c l a s s Bar e x t e n d s Foo { 16 p u b l i c f u n c t i o n f o o ( Foo $ f ) {} 17 } Lines Of * LOC 16 ELOC 3 CLOC 2 NCLOC 14 Number Of * NOC 3 NOM 4 NOP 1 Software-Metriken: Purismus vs. Pragmatismus 10 / 42

19 Lines Of *, Number Of * 1 2 namespace foo\bar ; 3 4 a b s t r a c t c l a s s FooBar { 5 a b s t r a c t f u n c t i o n bar ( ) ; 6 } 7 8 c l a s s Foo e x t e n d s FooBar { 9 / Does t h i s... / 10 p u b l i c f u n c t i o n bar ( ) {} 11 / Does t h a t... / 12 p u b l i c f u n c t i o n baz ( ) {} 13 } c l a s s Bar e x t e n d s Foo { 16 p u b l i c f u n c t i o n f o o ( Foo $ f ) {} 17 } Lines Of * LOC 16 ELOC 3 CLOC 2 NCLOC 14 Number Of * NOC 3 NOM 4 NOP 1 Software-Metriken: Purismus vs. Pragmatismus 10 / 42

20 Lines Of *, Number Of * 1 2 namespace foo\bar ; 3 4 a b s t r a c t c l a s s FooBar { 5 a b s t r a c t f u n c t i o n bar ( ) ; 6 } 7 8 c l a s s Foo e x t e n d s FooBar { 9 / Does t h i s... / 10 p u b l i c f u n c t i o n bar ( ) {} 11 / Does t h a t... / 12 p u b l i c f u n c t i o n baz ( ) {} 13 } c l a s s Bar e x t e n d s Foo { 16 p u b l i c f u n c t i o n f o o ( Foo $ f ) {} 17 } Lines Of * LOC 16 ELOC 3 CLOC 2 NCLOC 14 Number Of * NOC 3 NOM 4 NOP 1 Software-Metriken: Purismus vs. Pragmatismus 10 / 42

21 Lines Of *, Number Of * 1 2 namespace foo\bar ; 3 4 a b s t r a c t c l a s s FooBar { 5 a b s t r a c t f u n c t i o n bar ( ) ; 6 } 7 8 c l a s s Foo e x t e n d s FooBar { 9 / Does t h i s... / 10 p u b l i c f u n c t i o n bar ( ) {} 11 / Does t h a t... / 12 p u b l i c f u n c t i o n baz ( ) {} 13 } c l a s s Bar e x t e n d s Foo { 16 p u b l i c f u n c t i o n f o o ( Foo $ f ) {} 17 } Lines Of * LOC 16 ELOC 3 CLOC 2 NCLOC 14 Number Of * NOC 3 NOM 4 NOP 1 Software-Metriken: Purismus vs. Pragmatismus 10 / 42

22 Lines Of *, Number Of * 1 2 namespace foo\bar ; 3 4 a b s t r a c t c l a s s FooBar { 5 a b s t r a c t f u n c t i o n bar ( ) ; 6 } 7 8 c l a s s Foo e x t e n d s FooBar { 9 / Does t h i s... / 10 p u b l i c f u n c t i o n bar ( ) {} 11 / Does t h a t... / 12 p u b l i c f u n c t i o n baz ( ) {} 13 } c l a s s Bar e x t e n d s Foo { 16 p u b l i c f u n c t i o n f o o ( Foo $ f ) {} 17 } Lines Of * LOC 16 ELOC 3 CLOC 2 NCLOC 14 Number Of * NOC 3 NOM 4 NOP 1 Software-Metriken: Purismus vs. Pragmatismus 10 / 42

23 Komplexitätsmetriken Maß für Komplexität sind Kontrollstrukturen if, elseif, for, while, foreach, catch, case, xor, and, or, &&,,?: Cyclomatic Complexity (CCN) Anzahl der Verzweigungen NPath Complexity Anzahl der Ausführungspfade Berücksichtigt die Struktur von Blöcken Software-Metriken: Purismus vs. Pragmatismus 11 / 42

24 Cyclomatic Complexity Wichtig CCN == Anzahl der Verzweigungen Software-Metriken: Purismus vs. Pragmatismus 12 / 42

25 Cyclomatic Complexity Wichtig CCN == Anzahl der Verzweigungen Software-Metriken: Purismus vs. Pragmatismus 12 / 42

26 Cyclomatic Complexity σ 1 2 c l a s s Foo { 3 p u b l i c f u n c t i o n f o o ( $x, $y, $z ) { 4 i f ( $x ) { $y = $x ; } 5 i f ( $y ) { $z += $y $x ; } 6 i f ( $z ) { echo $z ; } 7 } 8 } CCN: 0 Software-Metriken: Purismus vs. Pragmatismus 13 / 42

27 Cyclomatic Complexity σ 1 2 c l a s s Foo { 3 p u b l i c f u n c t i o n f o o ( $x, $y, $z ) { 4 i f ( $x ) { $y = $x ; } 5 i f ( $y ) { $z += $y $x ; } 6 i f ( $z ) { echo $z ; } 7 } 8 } if($x) CCN: 1 Software-Metriken: Purismus vs. Pragmatismus 13 / 42

28 Cyclomatic Complexity σ 1 2 c l a s s Foo { 3 p u b l i c f u n c t i o n f o o ( $x, $y, $z ) { 4 i f ( $x ) { $y = $x ; } 5 i f ( $y ) { $z += $y $x ; } 6 i f ( $z ) { echo $z ; } 7 } 8 } if($x) if($y) CCN: 2 Software-Metriken: Purismus vs. Pragmatismus 13 / 42

29 Cyclomatic Complexity σ 1 2 c l a s s Foo { 3 p u b l i c f u n c t i o n f o o ( $x, $y, $z ) { 4 i f ( $x ) { $y = $x ; } 5 i f ( $y ) { $z += $y $x ; } 6 i f ( $z ) { echo $z ; } 7 } 8 } if($x) if($y) if($z) CCN: 3 Software-Metriken: Purismus vs. Pragmatismus 13 / 42

30 Cyclomatic Complexity σ 1 2 c l a s s Foo { 3 p u b l i c f u n c t i o n f o o ( $x, $y, $z ) { 4 i f ( $x ) { $y = $x ; } 5 i f ( $y ) { $z += $y $x ; } 6 i f ( $z ) { echo $z ; } 7 } 8 } if($x) if($y) if($z) CCN: 4 Software-Metriken: Purismus vs. Pragmatismus 13 / 42

31 NPath Complexity Wichtig CCN == Anzahl der Verzweigungen NPath == Anzahl der Ausführungspfade Software-Metriken: Purismus vs. Pragmatismus 14 / 42

32 NPath Complexity Wichtig CCN == Anzahl der Verzweigungen NPath == Anzahl der Ausführungspfade Software-Metriken: Purismus vs. Pragmatismus 14 / 42

33 NPath Complexity σ 1 2 c l a s s Foo { 3 p u b l i c f u n c t i o n f o o ( $x, $y, $z ) { 4 i f ( $x ) { $y = $x ; } 5 i f ( $y ) { $z += $y $x ; } 6 i f ( $z ) { echo $z ; } 7 } 8 } NPath: 0 Software-Metriken: Purismus vs. Pragmatismus 15 / 42

34 NPath Complexity σ 1 2 c l a s s Foo { 3 p u b l i c f u n c t i o n f o o ( $x, $y, $z ) { 4 i f ( $x ) { $y = $x ; } 5 i f ( $y ) { $z += $y $x ; } 6 i f ( $z ) { echo $z ; } 7 } 8 } if($x) NPath: 0 Software-Metriken: Purismus vs. Pragmatismus 15 / 42

35 NPath Complexity σ 1 2 c l a s s Foo { 3 p u b l i c f u n c t i o n f o o ( $x, $y, $z ) { 4 i f ( $x ) { $y = $x ; } 5 i f ( $y ) { $z += $y $x ; } 6 i f ( $z ) { echo $z ; } 7 } 8 } if($y) false if($x) true if($y) NPath: 0 Software-Metriken: Purismus vs. Pragmatismus 15 / 42

36 NPath Complexity σ 1 2 c l a s s Foo { 3 p u b l i c f u n c t i o n f o o ( $x, $y, $z ) { 4 i f ( $x ) { $y = $x ; } 5 i f ( $y ) { $z += $y $x ; } 6 i f ( $z ) { echo $z ; } 7 } 8 } false if($y) false true if($z) if($z) if($x) true if($y) false true if($z) if($z) NPath: 0 Software-Metriken: Purismus vs. Pragmatismus 15 / 42

37 NPath Complexity σ 1 2 c l a s s Foo { 3 p u b l i c f u n c t i o n f o o ( $x, $y, $z ) { 4 i f ( $x ) { $y = $x ; } 5 i f ( $y ) { $z += $y $x ; } 6 i f ( $z ) { echo $z ; } 7 } 8 } if($z) false if($y) true false false if($z) if($x) true if($z) false true true false false if($y) true true if($z) true NPath: 8 false Software-Metriken: Purismus vs. Pragmatismus 15 / 42

38 Grenzwerte in PHPMD Cyclomatic Complexity 1-4: low, 5-7: medium, 8-10: high, 11+: hell NPath Complexity 200: Ab hier wird es richtig schwer Software-Metriken: Purismus vs. Pragmatismus 16 / 42

39 Outline Was sind Metriken? Klassische Softwaremetriken Objektorientierte Softwaremetriken Grenzwerte Auswertung Zusammenfassung Software-Metriken: Purismus vs. Pragmatismus 17 / 42

40 Chidamber & Kemerer Weighted Methods per Class (WMC) Summe der Komplexität aller Methoden Grenzwert Number Of Children (NOC) Anzahl der direkten Ableitungen Falsch gewählte Abstraktion Depth of Inheritance Tree (DIT) Vererbungsstrukturen erhöhen die Komplexität Grenzwert 5 Lack of Cohesion of Methods (LCOM) Deplazierte Attribute und Methoden Werte > 1 == Klasse besteht aus $N Komponenten Software-Metriken: Purismus vs. Pragmatismus 18 / 42

41 Chidamber & Kemerer Weighted Methods per Class (WMC) Summe der Komplexität aller Methoden Grenzwert Number Of Children (NOC) Anzahl der direkten Ableitungen Falsch gewählte Abstraktion Depth of Inheritance Tree (DIT) Vererbungsstrukturen erhöhen die Komplexität Grenzwert 5 Lack of Cohesion of Methods (LCOM) Deplazierte Attribute und Methoden Werte > 1 == Klasse besteht aus $N Komponenten Software-Metriken: Purismus vs. Pragmatismus 18 / 42

42 Chidamber & Kemerer Weighted Methods per Class (WMC) Summe der Komplexität aller Methoden Grenzwert Number Of Children (NOC) Anzahl der direkten Ableitungen Falsch gewählte Abstraktion Depth of Inheritance Tree (DIT) Vererbungsstrukturen erhöhen die Komplexität Grenzwert 5 Lack of Cohesion of Methods (LCOM) Deplazierte Attribute und Methoden Werte > 1 == Klasse besteht aus $N Komponenten Software-Metriken: Purismus vs. Pragmatismus 18 / 42

43 Chidamber & Kemerer Weighted Methods per Class (WMC) Summe der Komplexität aller Methoden Grenzwert Number Of Children (NOC) Anzahl der direkten Ableitungen Falsch gewählte Abstraktion Depth of Inheritance Tree (DIT) Vererbungsstrukturen erhöhen die Komplexität Grenzwert 5 Lack of Cohesion of Methods (LCOM) Deplazierte Attribute und Methoden Werte > 1 == Klasse besteht aus $N Komponenten Software-Metriken: Purismus vs. Pragmatismus 18 / 42

44 Chidamber & Kemerer Beispiel AbstractClass +bar() BaseClass +bar() +baz() SubClass +foo() Dependent +foo() +bar() AbstractClass WMC 0 DIT 0 NOC 1 BaseClass WMC 2 DIT 1 NOC 1 SubClass WMC 1 DIT 2 NOC 0 Dependent WMC 2 DIT 0 NOC 0 Software-Metriken: Purismus vs. Pragmatismus 19 / 42

45 Chidamber & Kemerer Beispiel AbstractClass +bar() BaseClass +bar() +baz() SubClass +foo() Dependent +foo() +bar() AbstractClass WMC 0 DIT 0 NOC 1 BaseClass WMC 2 DIT 1 NOC 1 SubClass WMC 1 DIT 2 NOC 0 Dependent WMC 2 DIT 0 NOC 0 Software-Metriken: Purismus vs. Pragmatismus 19 / 42

46 Chidamber & Kemerer Beispiel AbstractClass +bar() BaseClass +bar() +baz() SubClass +foo() Dependent +foo() +bar() AbstractClass WMC 0 DIT 0 NOC 1 BaseClass WMC 2 DIT 1 NOC 1 SubClass WMC 1 DIT 2 NOC 0 Dependent WMC 2 DIT 0 NOC 0 Software-Metriken: Purismus vs. Pragmatismus 19 / 42

47 Chidamber & Kemerer Beispiel AbstractClass +bar() BaseClass +bar() +baz() SubClass +foo() Dependent +foo() +bar() AbstractClass WMC 0 DIT 0 NOC 1 BaseClass WMC 2 DIT 1 NOC 1 SubClass WMC 1 DIT 2 NOC 0 Dependent WMC 2 DIT 0 NOC 0 Software-Metriken: Purismus vs. Pragmatismus 19 / 42

48 Chidamber & Kemerer Beispiel AbstractClass +bar() BaseClass +bar() +baz() SubClass +foo() Dependent +foo() +bar() AbstractClass WMC 0 DIT 0 NOC 1 BaseClass WMC 2 DIT 1 NOC 1 SubClass WMC 1 DIT 2 NOC 0 Dependent WMC 2 DIT 0 NOC 0 Software-Metriken: Purismus vs. Pragmatismus 19 / 42

49 Abhängigkeiten Software-Metriken: Purismus vs. Pragmatismus 20 / 42

50 Afferent- & Efferent-Coupling Afferent Coupling (Ca) Eingehende Abhängigkeiten anderer Komponenten Großer Einfluss aus die Stabilität des Systems Efferent Coupling (Ce) Ausgehende Abhängigkeiten: Vererbung, Parameter, Exceptions, Allokationen Abhängig von Stabilität anderer Komponenten Software-Metriken: Purismus vs. Pragmatismus 21 / 42

51 CE & CA Beispiel AbstractClass +bar() BaseClass +bar() +baz() SubClass +foo() Dependent +foo() +bar() AbstractClass Ce 0 Ca 1 BaseClass Ce 1 Ca 2 SubClass Ce 1 Ca 1 Dependent Ce 2 Ca 0 Software-Metriken: Purismus vs. Pragmatismus 22 / 42

52 CE & CA Beispiel AbstractClass +bar() BaseClass +bar() +baz() SubClass +foo() Dependent +foo() +bar() AbstractClass Ce 0 Ca 1 BaseClass Ce 1 Ca 2 SubClass Ce 1 Ca 1 Dependent Ce 2 Ca 0 Software-Metriken: Purismus vs. Pragmatismus 22 / 42

53 CE & CA Beispiel AbstractClass +bar() BaseClass +bar() +baz() SubClass +foo() Dependent +foo() +bar() AbstractClass Ce 0 Ca 1 BaseClass Ce 1 Ca 2 SubClass Ce 1 Ca 1 Dependent Ce 2 Ca 0 Software-Metriken: Purismus vs. Pragmatismus 22 / 42

54 CE & CA Beispiel AbstractClass +bar() BaseClass +bar() +baz() SubClass +foo() Dependent +foo() +bar() AbstractClass Ce 0 Ca 1 BaseClass Ce 1 Ca 2 SubClass Ce 1 Ca 1 Dependent Ce 2 Ca 0 Software-Metriken: Purismus vs. Pragmatismus 22 / 42

55 CE & CA Beispiel AbstractClass +bar() BaseClass +bar() +baz() SubClass +foo() Dependent +foo() +bar() AbstractClass Ce 0 Ca 1 BaseClass Ce 1 Ca 2 SubClass Ce 1 Ca 1 Dependent Ce 2 Ca 0 Software-Metriken: Purismus vs. Pragmatismus 22 / 42

56 Frei nach: Viele Wege führen nach Rom Häufig synonym verwendete Bezeichnungen für Ce & Ca FANIN := Ca FANOUT := Ce CBO := Ce Geänderte Semantik im laufe der Zeit Ursprünglich: CBO = (Ce + Ca) Software-Metriken: Purismus vs. Pragmatismus 23 / 42

57 Frei nach: Viele Wege führen nach Rom Häufig synonym verwendete Bezeichnungen für Ce & Ca FANIN := Ca FANOUT := Ce CBO := Ce Geänderte Semantik im laufe der Zeit Ursprünglich: CBO = (Ce + Ca) Software-Metriken: Purismus vs. Pragmatismus 23 / 42

58 Frei nach: Viele Wege führen nach Rom Häufig synonym verwendete Bezeichnungen für Ce & Ca FANIN := Ca FANOUT := Ce CBO := Ce Geänderte Semantik im laufe der Zeit Ursprünglich: CBO = (Ce + Ca) Software-Metriken: Purismus vs. Pragmatismus 23 / 42

59 Frei nach: Viele Wege führen nach Rom Häufig synonym verwendete Bezeichnungen für Ce & Ca FANIN := Ca FANOUT := Ce CBO := Ce Geänderte Semantik im laufe der Zeit Ursprünglich: CBO = (Ce + Ca) Software-Metriken: Purismus vs. Pragmatismus 23 / 42

60 Frei nach: Viele Wege führen nach Rom Häufig synonym verwendete Bezeichnungen für Ce & Ca FANIN := Ca FANOUT := Ce CBO := Ce Geänderte Semantik im laufe der Zeit Ursprünglich: CBO = (Ce + Ca) Software-Metriken: Purismus vs. Pragmatismus 23 / 42

61 Frei nach: Viele Wege führen nach Rom Häufig synonym verwendete Bezeichnungen für Ce & Ca FANIN := Ca FANOUT := Ce CBO := Ce Geänderte Semantik im laufe der Zeit Ursprünglich: CBO = (Ce + Ca) Software-Metriken: Purismus vs. Pragmatismus 23 / 42

62 CodeRank Basiert auf dem Google PageRank Software wird auf eine Graphen abgebildet Knoten (π) je Softwareartefakt Pakete, Klassen, Methoden Kanten (ρ) für jede Beziehung Vererbung, Aufrufe, Parameter, Exceptions Für den CodeRank gilt: CR(π i ) = r r((1 d) + d r r(cr(π r )/ρ r )) Software-Metriken: Purismus vs. Pragmatismus 24 / 42

63 CodeRank AbstractClass 1,0 BaseClass 1,0 Dependent 1,0 Iteration: 0 SubClass 1,0 Software-Metriken: Purismus vs. Pragmatismus 25 / 42

64 CodeRank AbstractClass 1,000 BaseClass 1,425 Dependent 0,150 Iteration: 1 SubClass 0,575 Software-Metriken: Purismus vs. Pragmatismus 25 / 42

65 CodeRank AbstractClass 1,361 BaseClass 0,703 Dependent 0,150 Iteration: 2 SubClass 0,214 Software-Metriken: Purismus vs. Pragmatismus 25 / 42

66 CodeRank AbstractClass 0,747 BaseClass 0,395 Dependent 0,150 Iteration: 3 SubClass 0,214 Software-Metriken: Purismus vs. Pragmatismus 25 / 42

67 CodeRank AbstractClass 0,486 BaseClass 0,395 Dependent 0,150 Iteration: 4 SubClass 0,214 Software-Metriken: Purismus vs. Pragmatismus 25 / 42

68 CodeRank AbstractClass 0,486 BaseClass 0,395 Dependent 0,150 Iteration: 5 SubClass 0,214 Software-Metriken: Purismus vs. Pragmatismus 25 / 42

69 CodeRank Mit dem CodeRank können auch indirekte Abhängigkeiten bewertet werden. Logik mit Einfluss auf das gesamte System kann schnell gefunden werden Äquivalent der Reverse CodeRank Kann mit dem selben Algorithmus berechnet werden Gibt Aufschluss über stark abhängige Komponenten Software-Metriken: Purismus vs. Pragmatismus 26 / 42

70 Outline Was sind Metriken? Klassische Softwaremetriken Objektorientierte Softwaremetriken Grenzwerte Auswertung Zusammenfassung Software-Metriken: Purismus vs. Pragmatismus 27 / 42

71 Grenzwerte Was bedeuten aber Werte wie 4, 8 oder 0,486 nun genau? Die Zahlen allein sagen noch nichts aus Für jede Beurteilung benötigt man einen Kontext Im Fall von Metriken sind das Grenzwerte Aber woher bekommt man sinnvolle Grenzwerte? Software-Metriken: Purismus vs. Pragmatismus 28 / 42

72 Grenzwerte Was bedeuten aber Werte wie 4, 8 oder 0,486 nun genau? Die Zahlen allein sagen noch nichts aus Für jede Beurteilung benötigt man einen Kontext Im Fall von Metriken sind das Grenzwerte Aber woher bekommt man sinnvolle Grenzwerte? Software-Metriken: Purismus vs. Pragmatismus 28 / 42

73 Grenzwerte Was bedeuten aber Werte wie 4, 8 oder 0,486 nun genau? Die Zahlen allein sagen noch nichts aus Für jede Beurteilung benötigt man einen Kontext Im Fall von Metriken sind das Grenzwerte Aber woher bekommt man sinnvolle Grenzwerte? Software-Metriken: Purismus vs. Pragmatismus 28 / 42

74 Grenzwerte Was bedeuten aber Werte wie 4, 8 oder 0,486 nun genau? Die Zahlen allein sagen noch nichts aus Für jede Beurteilung benötigt man einen Kontext Im Fall von Metriken sind das Grenzwerte Aber woher bekommt man sinnvolle Grenzwerte? Software-Metriken: Purismus vs. Pragmatismus 28 / 42

75 Grenzwerte Was bedeuten aber Werte wie 4, 8 oder 0,486 nun genau? Die Zahlen allein sagen noch nichts aus Für jede Beurteilung benötigt man einen Kontext Im Fall von Metriken sind das Grenzwerte Aber woher bekommt man sinnvolle Grenzwerte? Software-Metriken: Purismus vs. Pragmatismus 28 / 42

76 Statistische Auswertung I Analysiere alle existierenden Projekte um einen Überblick über Mittelwerte zu bekommen... um potentielle Grenzwerte/Ausreißer zu identifizieren Analysiere zusätzlich verwendete Frameworks hierdurch werden die ermittelten Werte heterogener Software-Metriken: Purismus vs. Pragmatismus 29 / 42

77 Statistische Auswertung I Analysiere alle existierenden Projekte um einen Überblick über Mittelwerte zu bekommen... um potentielle Grenzwerte/Ausreißer zu identifizieren Analysiere zusätzlich verwendete Frameworks hierdurch werden die ermittelten Werte heterogener Software-Metriken: Purismus vs. Pragmatismus 29 / 42

78 Statistische Auswertung I Analysiere alle existierenden Projekte um einen Überblick über Mittelwerte zu bekommen... um potentielle Grenzwerte/Ausreißer zu identifizieren Analysiere zusätzlich verwendete Frameworks hierdurch werden die ermittelten Werte heterogener Software-Metriken: Purismus vs. Pragmatismus 29 / 42

79 Statistische Auswertung I Analysiere alle existierenden Projekte um einen Überblick über Mittelwerte zu bekommen... um potentielle Grenzwerte/Ausreißer zu identifizieren Analysiere zusätzlich verwendete Frameworks hierdurch werden die ermittelten Werte heterogener Software-Metriken: Purismus vs. Pragmatismus 29 / 42

80 Statistische Auswertung I Analysiere alle existierenden Projekte um einen Überblick über Mittelwerte zu bekommen... um potentielle Grenzwerte/Ausreißer zu identifizieren Analysiere zusätzlich verwendete Frameworks hierdurch werden die ermittelten Werte heterogener Software-Metriken: Purismus vs. Pragmatismus 29 / 42

81 Statistische Auswertung II Einfache Berechnung Mittelwert für einzelne Metriken (AVG) Standardabweichung vom Mittelwert (STDEV) So Statistikgedöns 3. Semester Informatik Studium ;-] Grenzwert-Berechnung Untere Grenze: AVG - STDEV Obere Grenze: AVG + STDEV Grenzwertig: 1,5 * (AVG + STDEV) Software-Metriken: Purismus vs. Pragmatismus 30 / 42

82 Statistische Auswertung II Einfache Berechnung Mittelwert für einzelne Metriken (AVG) Standardabweichung vom Mittelwert (STDEV) So Statistikgedöns 3. Semester Informatik Studium ;-] Grenzwert-Berechnung Untere Grenze: AVG - STDEV Obere Grenze: AVG + STDEV Grenzwertig: 1,5 * (AVG + STDEV) Software-Metriken: Purismus vs. Pragmatismus 30 / 42

83 Statistische Auswertung II Einfache Berechnung Mittelwert für einzelne Metriken (AVG) Standardabweichung vom Mittelwert (STDEV) So Statistikgedöns 3. Semester Informatik Studium ;-] Grenzwert-Berechnung Untere Grenze: AVG - STDEV Obere Grenze: AVG + STDEV Grenzwertig: 1,5 * (AVG + STDEV) Software-Metriken: Purismus vs. Pragmatismus 30 / 42

84 Statistische Auswertung II Einfache Berechnung Mittelwert für einzelne Metriken (AVG) Standardabweichung vom Mittelwert (STDEV) So Statistikgedöns 3. Semester Informatik Studium ;-] Grenzwert-Berechnung Untere Grenze: AVG - STDEV Obere Grenze: AVG + STDEV Grenzwertig: 1,5 * (AVG + STDEV) Software-Metriken: Purismus vs. Pragmatismus 30 / 42

85 Statistische Auswertung II Einfache Berechnung Mittelwert für einzelne Metriken (AVG) Standardabweichung vom Mittelwert (STDEV) So Statistikgedöns 3. Semester Informatik Studium ;-] Grenzwert-Berechnung Untere Grenze: AVG - STDEV Obere Grenze: AVG + STDEV Grenzwertig: 1,5 * (AVG + STDEV) Software-Metriken: Purismus vs. Pragmatismus 30 / 42

86 Statistische Auswertung II Einfache Berechnung Mittelwert für einzelne Metriken (AVG) Standardabweichung vom Mittelwert (STDEV) So Statistikgedöns 3. Semester Informatik Studium ;-] Grenzwert-Berechnung Untere Grenze: AVG - STDEV Obere Grenze: AVG + STDEV Grenzwertig: 1,5 * (AVG + STDEV) Software-Metriken: Purismus vs. Pragmatismus 30 / 42

87 Statistische Auswertung II Einfache Berechnung Mittelwert für einzelne Metriken (AVG) Standardabweichung vom Mittelwert (STDEV) So Statistikgedöns 3. Semester Informatik Studium ;-] Grenzwert-Berechnung Untere Grenze: AVG - STDEV Obere Grenze: AVG + STDEV Grenzwertig: 1,5 * (AVG + STDEV) Software-Metriken: Purismus vs. Pragmatismus 30 / 42

88 Statistische Auswertung II Einfache Berechnung Mittelwert für einzelne Metriken (AVG) Standardabweichung vom Mittelwert (STDEV) So Statistikgedöns 3. Semester Informatik Studium ;-] Grenzwert-Berechnung Untere Grenze: AVG - STDEV Obere Grenze: AVG + STDEV Grenzwertig: 1,5 * (AVG + STDEV) Software-Metriken: Purismus vs. Pragmatismus 30 / 42

89 Statistische Auswertung II Einfache Berechnung Mittelwert für einzelne Metriken (AVG) Standardabweichung vom Mittelwert (STDEV) So Statistikgedöns 3. Semester Informatik Studium ;-] Grenzwert-Berechnung Untere Grenze: AVG - STDEV Obere Grenze: AVG + STDEV Grenzwertig: 1,5 * (AVG + STDEV) Software-Metriken: Purismus vs. Pragmatismus 30 / 42

90 Grenzwerte First Generation PHP-Frameworks Metrik Low Avg High Outliner CCN/LOC LOC/NOM NOM/NOC NOC/NOP Second Generation PHP-Frameworks Metrik Low Avg High Outliner CCN/LOC LOC/NOM NOM/NOC NOC/NOP Software-Metriken: Purismus vs. Pragmatismus 31 / 42

91 Grenzwerte First Generation PHP-Frameworks Metrik Low Avg High Outliner CCN/LOC LOC/NOM NOM/NOC NOC/NOP Second Generation PHP-Frameworks Metrik Low Avg High Outliner CCN/LOC LOC/NOM NOM/NOC NOC/NOP Software-Metriken: Purismus vs. Pragmatismus 31 / 42

92 Grenzwerte First Generation PHP-Frameworks Metrik Low Avg High Outliner CCN/LOC LOC/NOM NOM/NOC NOC/NOP Second Generation PHP-Frameworks Metrik Low Avg High Outliner CCN/LOC LOC/NOM NOM/NOC NOC/NOP Software-Metriken: Purismus vs. Pragmatismus 31 / 42

93 Grenzwerte First Generation PHP-Frameworks Metrik Low Avg High Outliner CCN/LOC LOC/NOM NOM/NOC NOC/NOP Second Generation PHP-Frameworks Metrik Low Avg High Outliner CCN/LOC LOC/NOM NOM/NOC NOC/NOP Software-Metriken: Purismus vs. Pragmatismus 31 / 42

94 Grenzwerte First Generation PHP-Frameworks Metrik Low Avg High Outliner CCN/LOC LOC/NOM NOM/NOC NOC/NOP Second Generation PHP-Frameworks Metrik Low Avg High Outliner CCN/LOC LOC/NOM NOM/NOC NOC/NOP Software-Metriken: Purismus vs. Pragmatismus 31 / 42

95 Der gesunde Menschenverstand Manche Grenzwerte erschließen sich direkt Beispiel: Tiefe von Kontrollstrukturen Software-Metriken: Purismus vs. Pragmatismus 32 / 42

96 Der gesunde Menschenverstand Manche Grenzwerte erschließen sich direkt Beispiel: Tiefe von Kontrollstrukturen Software-Metriken: Purismus vs. Pragmatismus 32 / 42

97 Der gesunde Menschenverstand Manche Grenzwerte erschließen sich direkt Beispiel: Tiefe von Kontrollstrukturen if ( $x ) { if ( $y == 23 ) { foreach ( $z as $a ) { if ( $a!= 42 ) { $foo = ( $bar? $bar : 23 ); } else { $bar = ( $foo? $foo : 42 ); } } } } Software-Metriken: Purismus vs. Pragmatismus 32 / 42

98 Der gesunde Menschenverstand Manche Grenzwerte erschließen sich direkt Beispiel: Tiefe von Kontrollstrukturen if ( $x ) { if ( $y == 23 ) { foreach ( $z as $a ) { if ( $a!= 42 ) { $foo = ( $bar? $bar : 23 ); } else { $bar = ( $foo? $foo : 42 ); } } } } Software-Metriken: Purismus vs. Pragmatismus 32 / 42

99 Der gesunde Menschenverstand Manche Grenzwerte erschließen sich direkt Beispiel: Tiefe von Kontrollstrukturen if ( $x ) { if ( $y == 23 ) { foreach ( $z as $a ) { if ( $a!= 42 ) { $foo = ( $bar? $bar : 23 ); } else { $bar = ( $foo? $foo : 42 ); } } } } Software-Metriken: Purismus vs. Pragmatismus 32 / 42

100 Der gesunde Menschenverstand Manche Grenzwerte erschließen sich direkt Beispiel: Tiefe von Kontrollstrukturen if ( $x ) { if ( $y == 23 ) { foreach ( $z as $a ) { if ( $a!= 42 ) { $foo = ( $bar? $bar : 23 ); } else { $bar = ( $foo? $foo : 42 ); } } } } Software-Metriken: Purismus vs. Pragmatismus 32 / 42

101 Der gesunde Menschenverstand Manche Grenzwerte erschließen sich direkt Beispiel: Tiefe von Kontrollstrukturen WTF? Software-Metriken: Purismus vs. Pragmatismus 32 / 42

102 Ganz wichtig Grenzwerte sind immer Ermessenssache Es gibt einfach kein Schwarz & Weiß Software-Metriken: Purismus vs. Pragmatismus 33 / 42

103 Ganz wichtig Grenzwerte sind immer Ermessenssache Es gibt einfach kein Schwarz & Weiß Software-Metriken: Purismus vs. Pragmatismus 33 / 42

104 Outline Was sind Metriken? Klassische Softwaremetriken Objektorientierte Softwaremetriken Grenzwerte Auswertung Zusammenfassung Software-Metriken: Purismus vs. Pragmatismus 34 / 42

105 Einen Überblick verschaffen Wir haben jetzt einen schier unendlichen Fundus an Metriken Aber was mache ich jetzt damit?... welche Metriken helfen mir weiter?... wie fange ich an ein Projekt zu beurteilen? Software-Metriken: Purismus vs. Pragmatismus 35 / 42

106 Einen Überblick verschaffen Wir haben jetzt einen schier unendlichen Fundus an Metriken Aber was mache ich jetzt damit?... welche Metriken helfen mir weiter?... wie fange ich an ein Projekt zu beurteilen? Software-Metriken: Purismus vs. Pragmatismus 35 / 42

107 Einen Überblick verschaffen Wir haben jetzt einen schier unendlichen Fundus an Metriken Aber was mache ich jetzt damit?... welche Metriken helfen mir weiter?... wie fange ich an ein Projekt zu beurteilen? Software-Metriken: Purismus vs. Pragmatismus 35 / 42

108 Einen Überblick verschaffen Wir haben jetzt einen schier unendlichen Fundus an Metriken Aber was mache ich jetzt damit?... welche Metriken helfen mir weiter?... wie fange ich an ein Projekt zu beurteilen? Software-Metriken: Purismus vs. Pragmatismus 35 / 42

109 Einen Überblick verschaffen Wir haben jetzt einen schier unendlichen Fundus an Metriken Aber was mache ich jetzt damit?... welche Metriken helfen mir weiter?... wie fange ich an ein Projekt zu beurteilen? Software-Metriken: Purismus vs. Pragmatismus 35 / 42

110 Metriken kombinieren Die Kombination von Metriken erlaubt einen sehr tiefen Einblick in ein System. LOC: 300; CCN: 42; NOC: 5; NOM: 15 CCN / LOC = 0,14 Jede sechste Zeile eine Kontrollstruktur LOC / NOC = 60 Primär prozedural oder große Klassen LOC / NOM = 20 Große Methoden / Funktionen CCN / NOM = 2,8 Übermäßig komplexe Methoden / Funktionen Software-Metriken: Purismus vs. Pragmatismus 36 / 42

111 Metriken kombinieren Die Kombination von Metriken erlaubt einen sehr tiefen Einblick in ein System. LOC: 300; CCN: 42; NOC: 5; NOM: 15 CCN / LOC = 0,14 Jede sechste Zeile eine Kontrollstruktur LOC / NOC = 60 Primär prozedural oder große Klassen LOC / NOM = 20 Große Methoden / Funktionen CCN / NOM = 2,8 Übermäßig komplexe Methoden / Funktionen Software-Metriken: Purismus vs. Pragmatismus 36 / 42

112 Metriken kombinieren Die Kombination von Metriken erlaubt einen sehr tiefen Einblick in ein System. LOC: 300; CCN: 42; NOC: 5; NOM: 15 CCN / LOC = 0,14 Jede sechste Zeile eine Kontrollstruktur LOC / NOC = 60 Primär prozedural oder große Klassen LOC / NOM = 20 Große Methoden / Funktionen CCN / NOM = 2,8 Übermäßig komplexe Methoden / Funktionen Software-Metriken: Purismus vs. Pragmatismus 36 / 42

113 Metriken kombinieren Die Kombination von Metriken erlaubt einen sehr tiefen Einblick in ein System. LOC: 300; CCN: 42; NOC: 5; NOM: 15 CCN / LOC = 0,14 Jede sechste Zeile eine Kontrollstruktur LOC / NOC = 60 Primär prozedural oder große Klassen LOC / NOM = 20 Große Methoden / Funktionen CCN / NOM = 2,8 Übermäßig komplexe Methoden / Funktionen Software-Metriken: Purismus vs. Pragmatismus 36 / 42

114 Metriken kombinieren Die Kombination von Metriken erlaubt einen sehr tiefen Einblick in ein System. LOC: 300; CCN: 42; NOC: 5; NOM: 15 CCN / LOC = 0,14 Jede sechste Zeile eine Kontrollstruktur LOC / NOC = 60 Primär prozedural oder große Klassen LOC / NOM = 20 Große Methoden / Funktionen CCN / NOM = 2,8 Übermäßig komplexe Methoden / Funktionen Software-Metriken: Purismus vs. Pragmatismus 36 / 42

115 Metriken kombinieren Die Kombination von Metriken erlaubt einen sehr tiefen Einblick in ein System. LOC: 300; CCN: 42; NOC: 5; NOM: 15 CCN / LOC = 0,14 Jede sechste Zeile eine Kontrollstruktur LOC / NOC = 60 Primär prozedural oder große Klassen LOC / NOM = 20 Große Methoden / Funktionen CCN / NOM = 2,8 Übermäßig komplexe Methoden / Funktionen Software-Metriken: Purismus vs. Pragmatismus 36 / 42

116 Auswertung Visualisierung Software-Metriken: Purismus vs. Pragmatismus 37 / 42

117 Overview Pyramid Wir brauchen eine übersichtliche Visualisierung Bestehend aus drei unterschiedlichen Metrik-Typen Software-Metriken: Purismus vs. Pragmatismus 38 / 42

118 Overview Pyramid Wir brauchen eine übersichtliche Visualisierung Bestehend aus drei unterschiedlichen Metrik-Typen Software-Metriken: Purismus vs. Pragmatismus 38 / 42

119 Overview Pyramid Wir brauchen eine übersichtliche Visualisierung Bestehend aus drei unterschiedlichen Metrik-Typen Software-Metriken: Purismus vs. Pragmatismus 38 / 42

120 Overview Pyramid Wir brauchen eine übersichtliche Visualisierung Bestehend aus drei unterschiedlichen Metrik-Typen Software-Metriken: Purismus vs. Pragmatismus 38 / 42

121 Overview Pyramid Umfang/Komplexität Number Of Packages Software-Metriken: Purismus vs. Pragmatismus 38 / 42

122 Overview Pyramid Umfang/Komplexität Number Of Classes Software-Metriken: Purismus vs. Pragmatismus 38 / 42

123 Overview Pyramid Umfang/Komplexität Number Of Methods Software-Metriken: Purismus vs. Pragmatismus 38 / 42

124 Overview Pyramid Umfang/Komplexität Lines Of Code Software-Metriken: Purismus vs. Pragmatismus 38 / 42

125 Overview Pyramid Umfang/Komplexität Cyclomatic Complexity Software-Metriken: Purismus vs. Pragmatismus 38 / 42

126 Overview Pyramid Koppelung Number Of Methods Software-Metriken: Purismus vs. Pragmatismus 38 / 42

127 Overview Pyramid Koppelung Number Of Operation Calls Software-Metriken: Purismus vs. Pragmatismus 38 / 42

128 Overview Pyramid Koppelung Number Of Called Classes Software-Metriken: Purismus vs. Pragmatismus 38 / 42

129 Overview Pyramid Vererbung Average Number of Derived Classes Software-Metriken: Purismus vs. Pragmatismus 38 / 42

130 Overview Pyramid Vererbung Average Hierarchy Height Software-Metriken: Purismus vs. Pragmatismus 38 / 42

131 Overview Pyramid Beziehungen zwischen den Metriken Zu erwartende Code-Komplexität Software-Metriken: Purismus vs. Pragmatismus 38 / 42

132 Overview Pyramid Beziehungen zwischen den Metriken Durchschnittliches Methoden-Volumen Software-Metriken: Purismus vs. Pragmatismus 38 / 42

133 Overview Pyramid Beziehungen zwischen den Metriken Indikator für das verwendete Klassendesign Software-Metriken: Purismus vs. Pragmatismus 38 / 42

134 Overview Pyramid Beziehungen zwischen den Metriken Globale Projektstruktur Software-Metriken: Purismus vs. Pragmatismus 38 / 42

135 Overview Pyramid Beziehungen zwischen den Metriken Verteilung von Logik im System Software-Metriken: Purismus vs. Pragmatismus 38 / 42

136 Overview Pyramid Beziehungen zwischen den Metriken Kopplung/Kapselung von Daten und Methoden Software-Metriken: Purismus vs. Pragmatismus 38 / 42

137 Overview Pyramid Schwellenwerte helfen bei der Interpretation Farben mit einer semantischen Bedeutung (Rot/Grün-Effekt) Software-Metriken: Purismus vs. Pragmatismus 38 / 42

138 Overview Pyramid Schwellenwerte helfen bei der Interpretation Farben mit einer semantischen Bedeutung (Rot/Grün-Effekt) Software-Metriken: Purismus vs. Pragmatismus 38 / 42

139 Outline Was sind Metriken? Klassische Softwaremetriken Objektorientierte Softwaremetriken Grenzwerte Auswertung Zusammenfassung Software-Metriken: Purismus vs. Pragmatismus 39 / 42

140 Metriken sind keine Magie, sondern einfache Maßzahlen... nutzlos, ohne Grenz- oder Referenzwerte... skalierbar, wachsen mit der Projektgröße... automatisierbar und reproduzierbar... objektiv, da Software gestützt... interpretierbar, abhängig vom Betrachter Software-Metriken: Purismus vs. Pragmatismus 40 / 42

141 Metriken sind keine Magie, sondern einfache Maßzahlen... nutzlos, ohne Grenz- oder Referenzwerte... skalierbar, wachsen mit der Projektgröße... automatisierbar und reproduzierbar... objektiv, da Software gestützt... interpretierbar, abhängig vom Betrachter Software-Metriken: Purismus vs. Pragmatismus 40 / 42

142 Metriken sind keine Magie, sondern einfache Maßzahlen... nutzlos, ohne Grenz- oder Referenzwerte... skalierbar, wachsen mit der Projektgröße... automatisierbar und reproduzierbar... objektiv, da Software gestützt... interpretierbar, abhängig vom Betrachter Software-Metriken: Purismus vs. Pragmatismus 40 / 42

143 Metriken sind keine Magie, sondern einfache Maßzahlen... nutzlos, ohne Grenz- oder Referenzwerte... skalierbar, wachsen mit der Projektgröße... automatisierbar und reproduzierbar... objektiv, da Software gestützt... interpretierbar, abhängig vom Betrachter Software-Metriken: Purismus vs. Pragmatismus 40 / 42

144 Metriken sind keine Magie, sondern einfache Maßzahlen... nutzlos, ohne Grenz- oder Referenzwerte... skalierbar, wachsen mit der Projektgröße... automatisierbar und reproduzierbar... objektiv, da Software gestützt... interpretierbar, abhängig vom Betrachter Software-Metriken: Purismus vs. Pragmatismus 40 / 42

145 Metriken sind keine Magie, sondern einfache Maßzahlen... nutzlos, ohne Grenz- oder Referenzwerte... skalierbar, wachsen mit der Projektgröße... automatisierbar und reproduzierbar... objektiv, da Software gestützt... interpretierbar, abhängig vom Betrachter Software-Metriken: Purismus vs. Pragmatismus 40 / 42

146 Metriken sind keine Magie, sondern einfache Maßzahlen... nutzlos, ohne Grenz- oder Referenzwerte... skalierbar, wachsen mit der Projektgröße... automatisierbar und reproduzierbar... objektiv, da Software gestützt... interpretierbar, abhängig vom Betrachter Software-Metriken: Purismus vs. Pragmatismus 40 / 42

147 Buchempfehlung Software-Metriken: Purismus vs. Pragmatismus 41 / 42

148 Vielen Dank für Ihre Aufmerksamkeit Fragen? Kommentare? Kritik? Ideen? Software-Metriken: Purismus vs. Pragmatismus 42 / 42

149 Vielen Dank für Ihre Aufmerksamkeit Die Folien finden Sie bald unter Software-Metriken: Purismus vs. Pragmatismus 42 / 42

150 Vielen Dank für Ihre Aufmerksamkeit Kontakt Manuel Software-Metriken: Purismus vs. Pragmatismus 42 / 42

Softwaremetriken verstehen und nutzen

Softwaremetriken verstehen und nutzen Softwaremetriken verstehen und nutzen Manuel Pichler http://manuel-pichler.de PHP Unconference Hamburg 12. September 2009 Über mich Manuel Pichler Total stolzer Papa Jahrgang 1978 Diplom Informatiker Softwarearchitekt

Mehr

Quality assurance in PHP

Quality assurance in PHP Quality assurance in PHP Thomas Koch YMC AG October 2, 2009 Introduction PHP History of QA in PHP PHP QA in Teams Outline Introduction PHP History of QA in PHP PHP QA in Teams me First programming 1990,

Mehr

Software-Metriken. Dipl.-Ing.(BA) Henning Sievert <email@henningsievert.de> Seminar Software-Entwurf WS 2004/05

Software-Metriken. Dipl.-Ing.(BA) Henning Sievert <email@henningsievert.de> Seminar Software-Entwurf WS 2004/05 Software-Metriken Dipl.-Ing.(BA) Henning Sievert Seminar Software-Entwurf WS 2004/05 Gliederung Einordnung in den Seminar-Kontext Grundlegende Definitionen Klassifikation von

Mehr

Verwendung von OO-Metriken zur Vorhersage

Verwendung von OO-Metriken zur Vorhersage Verwendung von OO-Metriken zur Vorhersage Tobias Angermayr Übersicht 1. Definitionen 2. Gründe, Anforderungen, Ziele 3. Die CK-Metriken 4. Beobachtungen 5. Studie 6. Zusammenfassung Folie 2 Definitionen

Mehr

Software-Metriken. B. Sc. Michael Thomas. Seminar Software-Entwurf WS 2004/05. <thomas@thi.uni-hannover.de>

Software-Metriken. B. Sc. Michael Thomas. Seminar Software-Entwurf WS 2004/05. <thomas@thi.uni-hannover.de> Software-Metriken B. Sc. Michael Thomas Seminar Software-Entwurf WS 2004/05 Gliederung Einführung Traditionelle Metriken / Grundeinheiten Lines of Code Zyklomatische Komplexität

Mehr

Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo. Statische Codeanalyse wirklich effektiv nutzen

Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo. Statische Codeanalyse wirklich effektiv nutzen Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo Statische Codeanalyse wirklich effektiv nutzen Über uns Jan Schumann Jahrgang 1976 System- / Softwarearchitekt Entwickler von: PHP_Depend,

Mehr

Software Engineering. 13. Automatische Code Analyse. Franz-Josef Elmer, Universität Basel, WS 2005/06

Software Engineering. 13. Automatische Code Analyse. Franz-Josef Elmer, Universität Basel, WS 2005/06 Software Engineering 13. Automatische Code Analyse Franz-Josef Elmer, Universität Basel, WS 2005/06 Software Engineering: 13. Automatische Code Analyse 2 Code Analyse: Manuell versus Automatisch Manuelle

Mehr

Software Tests (2) Quellcode Reviews

Software Tests (2) Quellcode Reviews Software Tests (2) Quellcode Reviews Was ist? Was ist Testen? G. J. Myers, 79: "Testen ist der Prozess, ein Programm mit der Absicht auszuführen, Fehler zu finden. Hetzel 83: "Messung der Softwarequalität"

Mehr

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

Thomas Haug MATHEMA Software GmbH 209

Thomas Haug MATHEMA Software GmbH 209 Thomas Haug MATHEMA Software GmbH 209 Wer bin ich > Dipl.-Inf (Univ.) > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software Entwicklung > 12+ Jahre Java Enterprise > 7+

Mehr

Messung. Mariem Ben Rehouma 14.04.2009

Messung. Mariem Ben Rehouma 14.04.2009 Messung Mariem Ben Rehouma Gliederung Motivation Definition von Messung Metriken Klassifikation von Metriken Beispiele Objektorientierte Metriken Charakteristiken von Messungen Skala-Arten Messungsarten

Mehr

Software-Metriken. Wolfgang Globke. Seminar Moderne Softwareentwicklung SS 2005. Software-Metriken. Wolfgang Globke. Metriken und Qualitätsmodelle

Software-Metriken. Wolfgang Globke. Seminar Moderne Softwareentwicklung SS 2005. Software-Metriken. Wolfgang Globke. Metriken und Qualitätsmodelle Software- und smodelle Software- Klassische Objektorientierte Seminar Moderne Softwareentwicklung SS 2005 Gliederung Software- und smodelle 1 und smodelle Klassische Objektorientierte 2 Klassische Objektorientierte

Mehr

Qualitätsmanagement im Projekt

Qualitätsmanagement im Projekt Software-Engineering Qualitätsmanagement im Projekt Vorlesung im Wintersemester 2008/2009 Fakultät Wirtschaftsinformatik Klaus Mairon, M.Sc. Inhalte Messen und Bewerten: Metriken in der Qualitätssicherung

Mehr

Software-Qualität sichtbar machen

Software-Qualität sichtbar machen Software-Qualität sichtbar machen Prof. Dr. Claus Lewerentz BTU Cottbus Vortrag im Rahmen des Berlin-Brandenburger Software-Forums Zeit: 28. April 2003,18.30 Uhr Ort: Fraunhofer FIRST Berlin Software Qualität

Mehr

Messen & Metriken Ist Qualität messbar? André Fleischer

Messen & Metriken Ist Qualität messbar? André Fleischer Messen & Metriken Ist Qualität messbar? 1 1995 2000 Studium Technische Informatik (HAW Hamburg) 2001 2007 Lufthansa System IT Consultant, Software Architekt Seit 2007, otto group Otto Group, Software Architekt

Mehr

SOMA Reverse Engineering

SOMA Reverse Engineering SOMA Reverse Engineering Univ.Prof. Dr. Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt Was versteht man unter Reverse Engineering? Techniken/Methoden Probleme VU Software Maintenance

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2009/10 Überblick I 1 Metriken I 1 Metriken

Mehr

Programmverstehen 2: Wie ist das System-Design? Dr. Thorsten Arendt Marburg, 04. Dezember 2014

Programmverstehen 2: Wie ist das System-Design? Dr. Thorsten Arendt Marburg, 04. Dezember 2014 Programmverstehen 2: Wie ist das System-Design? Dr. Thorsten Arendt Marburg, 04. Dezember 2014 Re-Engineering Patterns [Demeyer et al.] 2 Software-Evolution WS 2014/2015 Überblick Probleme Viele Designkonzepte

Mehr

0/28. Software-Metriken. Andreas Zeller. Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken

0/28. Software-Metriken. Andreas Zeller. Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken 0/28 Software-Metriken Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Software-Metriken 1/28 Zu den Aufgaben eines Managers gehört die Kontrolle der Software-Entwicklung:

Mehr

Softwaremessung und -metrik

Softwaremessung und -metrik Softwaremessung und -metrik AW1 Votrag - Daniel Wojtucki Hamburg, 20. Januar 2010 Inhalt 1 Einleitung 2 Softwarequalität 3 Grundlagen der Softwaremetrik 4 Beispiele bestimmter Metriken 5 Zusammenfassung

Mehr

Management von Softwaresystemen Systembewertung: Metriken und Prozess

Management von Softwaresystemen Systembewertung: Metriken und Prozess Management von Softwaresystemen Systembewertung: Metriken und Prozess Referent: Vadym Alyokhin Betreuer: Florian Deißenböck Übersicht Definition Einführung in die Messtheorie Meilensteine von Software-Metriken

Mehr

Programmieren von Webinformationssystemen

Programmieren von Webinformationssystemen Programmieren von Webinformationssystemen Nikolaus Krismer Databases and Information Systems (DBIS) Institute of Computer Science University of Innsbruck dbis-informatik.uibk.ac.at 1 PHP Ursprünglich:

Mehr

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken. Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken. Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer Lill, Meitner, Föhrweiser, Spisländer FAU Erlangen-Nürnberg Software-Metriken 1 / 24 Software-Metriken Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität

Mehr

Vom lokalen Build zum Deployment

Vom lokalen Build zum Deployment Vom lokalen Build zum Deployment International PHP Conference Manuel Pichler 12.10.2011 Vom lokalen Build zum Deployment 1 / 36 Über mich Diplominformatiker Mehr als 10 Jahre Erfahrung im PHP-Umfeld Autor

Mehr

Verwendung von objektorientierten Metriken zur Softwarequalitätsvorhersage. Arno Egger, 0450419

Verwendung von objektorientierten Metriken zur Softwarequalitätsvorhersage. Arno Egger, 0450419 Verwendung von objektorientierten Metriken zur Softwarequalitätsvorhersage Arno Egger, 0450419 Metriken in OO-Programmierung Traditionelle Metriken (Cyclomatic Complexity, Lines Of Code etc.) auf OO-Methoden

Mehr

Codequalität: Code-Metrik Version 0.1

Codequalität: Code-Metrik Version 0.1 Codequalität: Code-Metrik Version 0.1 Sicherung und Verbesserung der Codequalität mit Hilfe von Code-Metrik Tools Team Code Orange 1 Inhalt Einleitung Tools: - Checkstyle - JavaNCSS - Findbugs - JDepend

Mehr

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0 Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben

Mehr

Metriken für Objektorientierte Software

Metriken für Objektorientierte Software Metriken für Objektorientierte Software Alexander Ostrovsky ostrovsk@in.tum.de Abstract: In dieser Arbeit werden die Grundlagen der Metriken für objektorientierte Software behandelt. Aufgrund der hohen

Mehr

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Dennis Hardt 21.06.2006 Gliederung Statische Analyse Definition, Arbeitsweise, Werkzeuge Angewandt auf ein Projekt Statische Analyse selbst

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Hochschule Darmstadt Fachbereich Informatik

Hochschule Darmstadt Fachbereich Informatik Hochschule Darmstadt Fachbereich Informatik Entwicklung webbasierter Anwendungen 1 Hochschule Darmstadt Fachbereich Informatik PHP 7 2 Releasekalender http://php.net/supported-versions.php 3 Historie Urpsrünglicher

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic Coding. Klausur. 9. Februar 2007. Kurs A Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Multimedia im Netz Wintersemester 2011/12

Multimedia im Netz Wintersemester 2011/12 Multimedia im Netz Wintersemester 2011/12 Übung 01 Betreuer: Verantwortlicher Professor: Sebastian Löhmann Prof. Dr. Heinrich Hussmann Organisatorisches 26.10.2011 MMN Übung 01 2 Inhalte der Übungen Vertiefung

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio 16.04.2015 1/9

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio 16.04.2015 1/9 BTree.dll Realisiert mit Microsoft Visual Studio 16.04.2015 1/9 INHALT 1. Allgemein... 3 2. Class BTree1 (balanciert)... 3 3. Class BTree2 (balanciert und verkettet)... 4 4. Beschreibung BTree1 und BTree2...

Mehr

EWA PHP Einführung, CMS Prinzipien

EWA PHP Einführung, CMS Prinzipien PHP Historie 1 EWA PHP Einführung, CMS Prinzipien 2 1995 Rasmus Lerdorf entwickelte in PERL Funktionen zur dynamischen Erstellung von Homepages: PHP P ersonal H ome P age, heute Hypertext Preprocessor

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung 1. "Hai!" [Konsolenanwendung] Console.WriteLine("Hai, wie geht's?"); 2. Muktiplikation mit sich selbst [Konsolenanwendung] // Ausgabe

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. R. Koschke 1 D. Simon 2 1 Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen 2 Institut für Software Technologie Fakultät

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

1. Grundlegende Konzepte in Java (6 Punkte)

1. Grundlegende Konzepte in Java (6 Punkte) 1. Grundlegende Konzepte in Java (6 Punkte) a) Welches der folgenden Literale ist korrekt und wenn ja, von welchem Typ ist es? "true" nicht korrekt X korrekt vom Typ String 'true' X nicht korrekt korrekt

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Der hat die früher handschriftlichen Folien lesbar gemacht. Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Heutige Themen Hello World!

Mehr

<body> <h1>testseite für HTML-Parameter-Übergabe<br>50 Parameter werden übergeben</h1>

<body> <h1>testseite für HTML-Parameter-Übergabe<br>50 Parameter werden übergeben</h1> Demo-Programme Parameterübergabe an PHP Testseite für HTML-Parameter-Übergabe (Datei get_param_test.html) testseite für

Mehr

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden. Allgemein Ein Einzug sollte aus 4 Leerzeichen bestehen.

Mehr

Object Relational Mapping Layer

Object Relational Mapping Layer Object Relational Mapping Layer Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS PHP (propel) 1/18 Propel - Persistance Layer OR-Mapper für PHP Portierung

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Musterlösungen zur Klausur Informatik 3

Musterlösungen zur Klausur Informatik 3 Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus

Mehr

Softwareschnittstellen

Softwareschnittstellen P4.1. Gliederung Rechnerpraktikum zu Kapitel 4 Softwareschnittstellen Einleitung, Component Object Model (COM) Zugriff auf Microsoft Excel Zugriff auf MATLAB Zugriff auf CATIA Folie 1 P4.2. Einleitung

Mehr

Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel

Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau

Mehr

ZSDGMDZFGW... Zehn Sicherheitsprobleme, die gerne mit dem ZendFramework gebaut werden. Ben Fuhrmannek #phpug-köln 2.10.2009

ZSDGMDZFGW... Zehn Sicherheitsprobleme, die gerne mit dem ZendFramework gebaut werden. Ben Fuhrmannek #phpug-köln 2.10.2009 ZSDGMDZFGW Zehn Sicherheitsprobleme, die gerne mit dem ZendFramework gebaut werden Ben Fuhrmannek #phpug-köln 2.10.2009 Über mich Informatiker Entwickler IT Security 2 TOC Aufbau ZF Problem 1 bis 10 3

Mehr

Bearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre.

Bearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre. Fakultät IV Elektrotechnik/Informatik Klausur Einführung in die Informatik I für Elektrotechniker Name:... Matr.-Nr.... Bearbeitungszeit: 120 Minuten Bewertung (bitte offenlassen : ) Aufgabe Punkte Erreichte

Mehr

BEISPIELKLAUSUR Softwareentwicklung:

BEISPIELKLAUSUR Softwareentwicklung: Prof. Dr. Andreas Fink Institut für Informatik Fakultät für Wirtschafts- und Sozialwissenschaften Helmut-Schmidt-Universität / Universität der Bundeswehr Hamburg BEISPIELKLAUSUR Softwareentwicklung: Objektorientierte

Mehr

Programmieren von Webinformationssystemen

Programmieren von Webinformationssystemen Programmieren von Webinformationssystemen Wolfgang Gassler Databases and Information Systems (DBIS) Institute of Computer Science University of Innsbruck dbis-informatik.uibk.ac.at 1 HTML Hypertext Markup

Mehr

Softwarequalität. 20. Januar 2015

Softwarequalität. 20. Januar 2015 Softwarequalität 20. Januar 2015 Überblick Wie definiert man gute Software? Welche Qualitätskriterien gibt es für Software? Welche Qualitätsanforderungen leiten sich daraus ab? Wie erreicht man gute Software?

Mehr

Java Generics & Collections

Java Generics & Collections Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer

Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer Seminar Werkzeuggestütze tze Softwareprüfung fung Slicing Sebastian Meyer Überblick Einführung und Begriffe Static Slicing Dynamic Slicing Erweiterte Slicing-Techniken Fazit 2 Was ist Slicing?? (I) Program

Mehr

Prof. Dr.-Ing. Peter Liggesmeyer. Qualität Eingebetteter Systeme: Beispiel Sicherheit Die Bedeutung von Standards Die Erfahrung Der Common Sense

Prof. Dr.-Ing. Peter Liggesmeyer. Qualität Eingebetteter Systeme: Beispiel Sicherheit Die Bedeutung von Standards Die Erfahrung Der Common Sense Qualität Eingebetteter Systeme Prof. Dr.-Ing. Peter Liggesmeyer Lehrstuhl Software Engineering: Dependability TU Kaiserslautern Direktor Fraunhofer Institut für Experimentelles Software Engineering (IESE),

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am

Mehr

Code Quality. Steigerung der Codequalität mit Visual Studio & TFS

Code Quality. Steigerung der Codequalität mit Visual Studio & TFS Code Quality Steigerung der Codequalität mit Visual Studio & TFS Tobias Richling 30 Jahre Wohnhaft im Münsterland Softwareentwickler seit Amiga Basic Microsoftie Logisitksoftware Silverlight TFS Trainer,

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 3 Einführung in das objektorientierte Programmier-Paradigma 3 Einführung in das objektorientierte Programmier-Paradigma 3.1.1 Top-down structured design 3.1.2 Data-driven design 3.1.3 Object-oriented design

Mehr

25. GI-TAV-Treffen 15. Februar 2007 Düsseldorf. Softwareprüfung gestern und heute: Theorie und Erfahrung, Standards und Common Sense

25. GI-TAV-Treffen 15. Februar 2007 Düsseldorf. Softwareprüfung gestern und heute: Theorie und Erfahrung, Standards und Common Sense Softwareprüfung gestern und heute: Theorie und Erfahrung, Standards und Common Sense Prof. Dr.-Ing. habil. Peter Liggesmeyer Lehrstuhl Software Engineering: Dependability TU Kaiserslautern Direktor Fraunhofer

Mehr

1. Übung zu "Numerik partieller Differentialgleichungen"

1. Übung zu Numerik partieller Differentialgleichungen 1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:

Mehr

Vorlesung Objektorientierte Programmierung Probeklausur

Vorlesung Objektorientierte Programmierung Probeklausur Prof. Dr. Stefan Brass 04. März 2013 Dipl.-Inform. Annett Thüring Institut für Informatik MLU Halle-Wittenberg Vorlesung Objektorientierte Programmierung Probeklausur Name: Matrikelnummer: Studiengang:

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

PHP Aufbaukurs. Tag 3. PHP5 & Klassen PHP Aufbaukurs Tag 3. PHP5 & Klassen Organisatorisches 2 Igor Olkhovskiy Dr. Dipl.- Ing. Kontakt: olkhovskiy@rrzn.uni-hannover.de PHP Aufbaukurs 19.09.2006 Folie 2 PHP. OOP. Geschichte 3 PHP/FI ( PHP 1

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 - public class Rechteck { Selektoren

Mehr

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 32

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 32 Steueranweisungen Bisher Programme mit Funktionen als einfache Folge von Befehlen Ablauf von Programmen darüber hinaus steuerbar über Bedingte Ausführung: Ausführung von Programmteilen (Befehlen oder Programmblöcken)

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

Messen & Metriken Ist Qualität messbar?

Messen & Metriken Ist Qualität messbar? Messen & Metriken Ist Qualität messbar? (André Fleischer) prio.conference, Baden-Baden, 14.November 2007 1 Abstrakt Seitdem Probleme mit Hilfe von Softwaresystemen gelöst werden, ist man auf der Suche

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

IT-Zertifikat: Allgemeine Informationstechnologien II PHP IT-Zertifikat: Allgemeine Informationstechnologien II PHP PHP ( PHP: Hypertext Preprocessor ) ist eine serverseitige Skriptsprache: Der PHP-Code wird nicht wie bei JavaScript auf dem Clientrechner ausgeführt,

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Was bringt TDD wirklich?

Was bringt TDD wirklich? Was bringt TDD wirklich? Wissensspritze vom 6..2009, Christian Federspiel Catalysts GmbH McCabe Metrik CCN Die Cyclomatic Complexity Number, misst die Anzahl der möglichen Pfade durch einen Code. Die Metrik

Mehr

Software Echtzeitverhalten in den Griff Bekommen

Software Echtzeitverhalten in den Griff Bekommen Software Echtzeitverhalten in den Griff Bekommen B.Sc.Markus Barenhoff [www.embedded-tools.de] Dr. Nicholas Merriam [www.rapitasystems.com] Übersicht Reaktionszeit Nettolaufzeit Optimierung Worst-Case

Mehr

Die Alternative zum Web-Form Modell

Die Alternative zum Web-Form Modell Marc André Zhou Solution Architect www.dev -sky.net www.just -sp.net Die Alternative zum Web-Form Modell dotnet Cologne 03.05.2013 Agenda Web Forms vs. MVC ASP.NET MVC Features Web API ODATA Eine ASP.NET

Mehr

Scala kann auch faul sein

Scala kann auch faul sein Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?

Mehr

Vorlesungsplan. Von Naïve Bayes zu Bayesischen Netzwerk- Klassifikatoren. Naïve Bayes. Bayesische Netzwerke

Vorlesungsplan. Von Naïve Bayes zu Bayesischen Netzwerk- Klassifikatoren. Naïve Bayes. Bayesische Netzwerke Vorlesungsplan 17.10. Einleitung 24.10. Ein- und Ausgabe 31.10. Reformationstag, Einfache Regeln 7.11. Naïve Bayes, Entscheidungsbäume 14.11. Entscheidungsregeln, Assoziationsregeln 21.11. Lineare Modelle,

Mehr

Programmieren in Haskell Einführung

Programmieren in Haskell Einführung Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 16.10.2009 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:

Mehr

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen ...we make the invisible visible... 1 Inhalt Fragestellungen Analysen und deren Anwendung Erfahrungen 2 Projektleiter Hat unsere Software eine klare, verständliche Struktur? Gibt es problematischen Code,

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen V14 1 / 30 Informationsverarbeitung im Bauwesen Markus Uhlmann Institut für Hydromechanik WS 2009/2010 Bemerkung: Verweise auf zusätzliche Information zum Download erscheinen in dieser Farbe V14 2 / 30

Mehr