Softwaremetriken verstehen und nutzen
|
|
|
- Teresa Breiner
- vor 8 Jahren
- Abrufe
Transkript
1 Softwaremetriken verstehen und nutzen Kore Nordmann Manuel Pichler 17. November 2009
2 Über uns Kore Nordmann Langzeit PHP Entwickler Speaker auf diversen Konferenzen, Autor etc. Entwickler diverser Open-Source-Projekte: EZ Components, Arbit, PHPUnit, PHPillow Manuel Pichler Jahrgang 1978 Diplom Informatiker, Softwarearchitekt Entwickler diverser Projekte: PHP_Depend, phpundercontrol, PHPMD Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 2
3 Agenda Was sind Metriken? Welche Arten an Metriken gibt es? Klassische Softwaremetriken Umfang Komplexität Objektorientierte Softwaremetriken Kopplung Abstraktion Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 3
4 Softwaremetriken Eine Softwaremetrik ist eine Maßzahl für ein Qualitätsmerkmal von Software Funktionen zur Ermittlung von Kennzahlen eines Softwareartefakts (Wikipedia) You cannot control what you cannot measure. (Tom DeMarco) Auch wenn er diese Aussage bereits relativierte Ohne Messung können Auswirkungen durch Änderungen nicht bewertet werden (A. Fleischer) Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 4
5 Arten an Metriken Prozessmetrik Aufwandsmetrik Projektlaufzeitmetrik Anwendungsmetrik Quelle: Wikipedia Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 5
6 Vergesst das aber alles wir beschäftigen uns ausschließlich mit Produktmetriken Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 6
7 Produktmetriken Umfang Komplexität Kopplung & Abstraktion Lesbarkeit Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 7
8 Umfangsmetriken Summen über Softwareartefakte Lines Of * Number Of * LOC - Lines Of Code ELOC - Executable Lines Of Code CLOC - Comment Lines Of Code NCLOC - None Comment Lines Of Code NOC - Number Of Classes NOM - Number Of Methods NOP - Number Of Packages Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 8
9 Lines Of *, Number Of * <?php namespace foo\bar; abstract class FooBar { abstract function bar(); class Foo extends FooBar { /* Does this... */ public function bar() { /* Does that... */ public function baz() { class Bar extends Foo { public function foo(foo $f) { Lines Of * LOC = ELOC = CLOC = NCLOC = Number Of * NOC = NOM = NOP = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 9
10 Lines Of *, Number Of * <?php namespace foo\bar; abstract class FooBar { abstract function bar(); class Foo extends FooBar { /* Does this... */ public function bar() { /* Does that... */ public function baz() { class Bar extends Foo { public function foo(foo $f) { Lines Of * LOC = 16 ELOC = CLOC = NCLOC = Number Of * NOC = NOM = NOP = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 10
11 Lines Of *, Number Of * <?php namespace foo\bar; abstract class FooBar { abstract function bar(); class Foo extends FooBar { /* Does this... */ public function bar() { /* Does that... */ public function baz() { class Bar extends Foo { public function foo(foo $f) { Lines Of * LOC = 16 ELOC = 3 CLOC = NCLOC = Number Of * NOC = NOM = NOP = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 11
12 Lines Of *, Number Of * <?php namespace foo\bar; abstract class FooBar { abstract function bar(); class Foo extends FooBar { /* Does this... */ public function bar() { /* Does that... */ public function baz() { class Bar extends Foo { public function foo(foo $f) { Lines Of * LOC = 16 ELOC = 3 CLOC = 2 NCLOC = Number Of * NOC = NOM = NOP = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 12
13 Lines Of *, Number Of * <?php namespace foo\bar; abstract class FooBar { abstract function bar(); class Foo extends FooBar { /* Does this... */ public function bar() { /* Does that... */ public function baz() { class Bar extends Foo { public function foo(foo $f) { Lines Of * LOC = 16 ELOC = 3 CLOC = 2 NCLOC = 14 Number Of * NOC = NOM = NOP = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 13
14 Lines Of *, Number Of * <?php namespace foo\bar; abstract class FooBar { abstract function bar(); class Foo extends FooBar { /* Does this... */ public function bar() { /* Does that... */ public function baz() { class Bar extends Foo { public function foo(foo $f) { Lines Of * LOC = 16 ELOC = 3 CLOC = 2 NCLOC = 14 Number Of * NOC = 3 NOM = NOP = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 14
15 Lines Of *, Number Of * <?php namespace foo\bar; abstract class FooBar { abstract function bar(); class Foo extends FooBar { /* Does this... */ public function bar() { /* Does that... */ public function baz() { class Bar extends Foo { public function foo(foo $f) { Lines Of * LOC = 16 ELOC = 3 CLOC = 2 NCLOC = 14 Number Of * NOC = 3 NOM = 4 NOP = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 15
16 Lines Of *, Number Of * <?php namespace foo\bar; abstract class FooBar { abstract function bar(); class Foo extends FooBar { /* Does this... */ public function bar() { /* Does that... */ public function baz() { class Bar extends Foo { public function foo(foo $f) { Lines Of * LOC = 16 ELOC = 3 CLOC = 2 NCLOC = 14 Number Of * NOC = 3 NOM = 4 NOP = 1 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 16
17 Beispiel Ein Beispiel Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 17
18 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 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 18
19 Beispiel 2: Cyclomatic Complexity <?php class Foo { public function foo() { if ($x) { if ($y) { if ($z) { return $x; CCN = 0 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 19
20 Beispiel 2: Cyclomatic Complexity <?php class Foo { public function foo() { if ($x) { if ($y) { if ($z) { return $x; if($x) CCN = 1 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 20
21 Beispiel 2: Cyclomatic Complexity <?php class Foo { public function foo() { if ($x) { if ($y) { if ($z) { return $x; if($x) if($y) CCN = 2 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 21
22 Beispiel 2: Cyclomatic Complexity <?php class Foo { public function foo() { if ($x) { if ($y) { if ($z) { return $x; if($x) if($y) if($z) CCN = 3 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 22
23 Beispiel 2: Cyclomatic Complexity <?php class Foo { public function foo() { if ($x) { if ($y) { if ($z) { return $x; if($x) if($y) if($z) CCN = 4 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 23
24 Beispiel 2: NPath Complexity <?php class Foo { public function foo() { if ($x) { if ($y) { if ($z) { return $x; NPath = 0 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 24
25 Beispiel 2: NPath Complexity <?php class Foo { public function foo() { if ($x) { if ($y) { if ($z) { return $x; if($x) NPath = 0 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 25
26 Beispiel 2: NPath Complexity <?php class Foo { public function foo() { if ($x) { if ($y) { if ($z) { return $x; if($y) false if($x) true if($y) NPath = 0 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 26
27 Beispiel 2: NPath Complexity <?php class Foo { public function foo() { if ($x) { if ($y) { if ($z) { return $x; false if($y) false true if($x) true if($y) false true if($z) if($z) if($z) if($z) NPath = 0 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 27
28 Beispiel 2: NPath Complexity <?php class Foo { public function foo() { if ($x) { if ($y) { if ($z) { return $x; false if($y) false true if($x) true if($y) false true if($z) if($z) if($z) if($z) false false false false true true true true NPath = 8 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 28
29 Grenzwerte Zahlen allein sagen noch nichts aus Oder was bedeuten die Werte 4 und 8? Für eine Beurteilung benötigt man Grenzwerte Cyclomatic Complexity NPath Complexity 1-4: low, 5-7: medium, 8-10: high, 11+: hell 200: critical mass Grenzwerte sind immer Ermessenssache Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 29
30 Beispiel Ein Beispiel Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 30
31 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 oder prozedural CCN / NOM = 2,8 Übermäßig komplexe Methoden/Funktionen Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 31
32 Schluss damit, beschäftigen wir uns mit den OO-Metriken. Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 32
33 Objektorientierte Metriken Chidamber & Kemerer OO-Metriken Afferent Coupling / Efferent Coupling Abstraction, Instability, Distance Modell für eine ausgewogene Architektur Code Rank (In)direkte Abhängigkeiten zwischen Komponenten Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 33
34 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 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 34
35 CK OO-Metriken AbstractClass AbstractClass NOC = ; DIT = BaseClass +baz() Dependent +foo() BaseClass NOC = ; DIT = SubClass SubClass +foo() NOC = ; DIT = Dependent NOC = ; DIT = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 35
36 CK OO-Metriken AbstractClass AbstractClass NOC = 1; DIT = 0 BaseClass +baz() Dependent +foo() BaseClass NOC = ; DIT = SubClass SubClass +foo() NOC = ; DIT = Dependent NOC = ; DIT = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 36
37 CK OO-Metriken AbstractClass AbstractClass NOC = 1; DIT = 0 BaseClass +baz() Dependent +foo() BaseClass NOC = ; DIT = SubClass SubClass +foo() NOC = ; DIT = Dependent NOC = ; DIT = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 37
38 CK OO-Metriken AbstractClass AbstractClass NOC = 1; DIT = 0 BaseClass +baz() Dependent +foo() BaseClass NOC = 1; DIT = 1 SubClass SubClass +foo() NOC = ; DIT = Dependent NOC = ; DIT = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 38
39 CK OO-Metriken AbstractClass AbstractClass NOC = 1; DIT = 0 BaseClass +baz() Dependent +foo() BaseClass NOC = 1; DIT = 1 SubClass SubClass +foo() NOC = ; DIT = Dependent NOC = ; DIT = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 39
40 CK OO-Metriken AbstractClass AbstractClass NOC = 1; DIT = 0 BaseClass +baz() Dependent +foo() BaseClass NOC = 1; DIT = 1 SubClass SubClass +foo() NOC = 0; DIT = 2 Dependent NOC = ; DIT = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 40
41 CK OO-Metriken AbstractClass AbstractClass NOC = 1; DIT = 0 BaseClass +baz() Dependent +foo() BaseClass NOC = 1; DIT = 1 SubClass SubClass +foo() NOC = 0; DIT = 2 Dependent NOC = ; DIT = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 41
42 CK OO-Metriken AbstractClass AbstractClass NOC = 1; DIT = 0 BaseClass +baz() Dependent +foo() BaseClass NOC = 1; DIT = 1 SubClass SubClass +foo() NOC = 0; DIT = 2 Dependent NOC = 0; DIT = 0 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 42
43 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ängigkeit von Stabilität anderer Komponenten Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 43
44 Afferent- & Efferent-Coupling AbstractClass AbstractClass Ce = ; Ca = BaseClass +baz() Dependent +foo() BaseClass Ce = ; Ca = SubClass SubClass +foo() Ce = ; Ca = Dependent Ce = ; Ca = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 44
45 Afferent- & Efferent-Coupling AbstractClass AbstractClass Ce = 0; Ca = 1 BaseClass +baz() Dependent +foo() BaseClass Ce = ; Ca = SubClass SubClass +foo() Ce = ; Ca = Dependent Ce = ; Ca = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 45
46 Afferent- & Efferent-Coupling AbstractClass AbstractClass Ce = 0; Ca = 1 BaseClass +baz() Dependent +foo() BaseClass Ce = 1; Ca = 2 SubClass SubClass +foo() Ce = ; Ca = Dependent Ce = ; Ca = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 46
47 Afferent- & Efferent-Coupling AbstractClass AbstractClass Ce = 0; Ca = 1 BaseClass +baz() Dependent +foo() BaseClass Ce = 1; Ca = 2 SubClass SubClass +foo() Ce = ; Ca = Dependent Ce = ; Ca = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 47
48 Afferent- & Efferent-Coupling AbstractClass AbstractClass Ce = 0; Ca = 1 BaseClass +baz() Dependent +foo() BaseClass Ce = 1; Ca = 2 SubClass SubClass +foo() Ce = 1; Ca = 1 Dependent Ce = ; Ca = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 48
49 Afferent- & Efferent-Coupling AbstractClass AbstractClass Ce = 0; Ca = 1 BaseClass +baz() Dependent +foo() BaseClass Ce = 1; Ca = 2 SubClass SubClass +foo() Ce = 1; Ca = 1 Dependent Ce = ; Ca = Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 49
50 Afferent- & Efferent-Coupling AbstractClass AbstractClass Ce = 0; Ca = 1 BaseClass +baz() Dependent +foo() BaseClass Ce = 1; Ca = 2 SubClass SubClass +foo() Ce = 1; Ca = 1 Dependent Ce = 2; Ca = 0 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 50
51 Abstraction, Instability&Distance Modell für eine ausgewogene Architektur Basiert auf Ce, Ca, abstrakten(ac) und konkreten(cc) Softwareartefakten Abstraction Instability Distance A = AC / (AC + CC) I = Ce / (Ce + Ca) D = A + I - 1 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 51
52 Abstraction, Instability&Distance Unser Beispiel übertragen auf einen Graphen Baz Bar Foo FooBar Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 52
53 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 ((1 - d) + d r (CR(π r ) / ρ r )) Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 53
54 CodeRank CR n (FooBar) CR n (Foo) CR n (Bar) = (1 -d) + d * CR n - 1 (Foo) = (1 -d) + d * (CR n - 1 (Bar) + 0,5 * CR n - 1 (Baz)) = (1 -d) + d * (0,5 * Cr n - 1 (Baz)) CR n (Baz) = (1 -d) + d * 0 # FooBar Foo Bar Baz Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 54
55 CodeRank CR 1 (FooBar) = (1 -d) + d * CR 0 (1) CR 1 (Foo) = (1 -d) + d * (CR 0 (1) + 0,5 * CR 0 (1)) CR 1 (Bar) = (1 -d) + d * (0,5 * CR 0 (1)) CR 1 (Baz) = (1 -d) + d * 0 # FooBar Foo Bar Baz , , , , Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 55
56 CodeRank CR 2 (FooBar) = (1 -d) + d * CR 1 (1,425) CR 2 (Foo) = (1 -d) + d * (CR 1 (0,575) + 0,5 * CR 1 (0,15)) CR 2 (Bar) = (1 -d) + d * (0,5 * CR 1 (0,15)) CR 2 (Baz) = 0,15 # FooBar Foo Bar Baz , , , , , , , , Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 56
57 CodeRank CR 3 (FooBar) = (1 -d) + d * CR 2 (0,7025) CR 3 (Foo) = (1 -d) + d * (CR 2 (0,21375) + 0,5 * CR 2 (0,15)) CR 3 (Bar) = (1 -d) + d * (0,5 * CR 2 (0,15)) CR 3 (Baz) = 0,15 # FooBar Foo Bar Baz , , , , , , , , , , , , Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 57
58 CodeRank CR 4 (FooBar) = (1 -d) + d * CR 3 (0, ) CR 4 (Foo) = (1 -d) + d * (CR 3 (0,21375) + 0,5 * CR 3 (0,15)) CR 4 (Bar) = (1 -d) + d * (0,5 * CR 3 (0,15)) CR 4 (Baz) = 0,15 # FooBar Foo Bar Baz , , , , , , , , , , , , , , , , Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 58
59 CodeRank CR 5 (FooBar) = (1 -d) + d * CR 4 (0, ) CR 5 (Foo) = (1 -d) + d * (CR 4 (0,21375) + 0,5 * CR 4 (0,15)) CR 5 (Bar) = (1 -d) + d * (0,5 * CR 4 (0,15)) CR 5 (Baz) = 0,15 # FooBar Foo Bar Baz , , , , , , , , , , , , , , , , , , , , Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 59
60 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 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 60
61 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 Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 61
62 Done Karlsruhe, 17. Nov. 09 Softwaremetriken verstehen und nutzen 62
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
Software-Metriken: Purismus vs. Pragmatismus
Software-Metriken: Purismus vs. Pragmatismus Web DevCon Manuel Pichler 17.10.2011 Software-Metriken: Purismus vs. Pragmatismus 1 / 42 Über mich Diplominformatiker Mehr als 10 Jahre Erfahrung im Web-Umfeld
Statische Code-Analyse: Software-Metriken Fernstudium Master Wirtschaftsinformatik Formale Methoden
Statische Code-Analyse: Software-Metriken Fernstudium Master Wirtschaftsinformatik Formale Methoden Isabell Füll Grömmsche Koppel 15 24111 Kiel [email protected] Amselweg 3 24222 Schwentinental
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,
Software-Metriken. Dipl.-Ing.(BA) Henning Sievert <[email protected]> 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
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
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
Codequalitätskontrolle mit SonarQube
Codequalitätskontrolle mit SonarQube Wer ist das? Josha von Gizycki Goslarer Seit 2008 bei der Java, Oracle, Webentwicklung, Hacker, Zocker, Rocker Codequalitätskontrolle mit SonarQube - 2 Warum der? Codequalitätskontrolle
SOMA Reverse Engineering
SOMA Reverse Engineering Univ.Prof. Dr. Franz Wotawa Institut für Softwaretechnologie [email protected] Inhalt Was versteht man unter Reverse Engineering? Techniken/Methoden Probleme VU Software Maintenance
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
Software-Metriken. B. Sc. Michael Thomas. Seminar Software-Entwurf WS 2004/05. <[email protected]>
Software-Metriken B. Sc. Michael Thomas Seminar Software-Entwurf WS 2004/05 Gliederung Einführung Traditionelle Metriken / Grundeinheiten Lines of Code Zyklomatische Komplexität
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"
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
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
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
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:
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
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
Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
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
Musterlösung Stand: 5. Februar 2009
Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)
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,
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
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:
Arten von Klassen-Beziehungen
Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant
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,
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
Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung
Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]
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
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
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
Faustregeln zu Zusicherungen
Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während
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
UML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich
UML / Fujaba Generierung von Java-Quellcode aus UML-Diagrammen Marcel Friedrich Agenda Einleitung Struktur Verhalten Klassendiagramme Storydiagramme Statecharts Action methods 2 Thema Codegenerierung mit
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
Software Engineering in der Praxis
Software Engineering in der Praxis Praktische Übungen Adersberger, Spisländer FAU Erlangen-Nürnberg Software-Metriken 1 / 26 Software-Metriken Josef Adersberger Marc Spisländer Lehrstuhl für Software Engineering
Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der
Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert
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,
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
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
Von Continuous Integration zu Continuous Deployment
Von Continuous Integration zu Continuous Deployment Manuel Pichler 31. Mai 2010 Über mich Manuel Pichler Jahrgang 1978 Diplom Informatiker Softwarearchitekt Entwickler von: PHP_Depend
Vorlesung Software-Reengineering
Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2006/07 Überblick I 1 Metriken Software-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
Metriken für Objektorientierte Software
Metriken für Objektorientierte Software Alexander Ostrovsky [email protected] Abstract: In dieser Arbeit werden die Grundlagen der Metriken für objektorientierte Software behandelt. Aufgrund der hohen
JAVA für Nichtinformatiker - Probeklausur -
JAVA für Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erläutere kurz die Bedeutung der folgenden Java-Schlüsselwörter und gib Sie jeweils
Inhalt. Zusammenfassung Abstract LOC. Seminar Qualitative und Quantitative Methoden im Software Engineering
Erstellt von Hans Jörg Günther auf Basis eines Vortrags von Oliver Feuser Seite 1 von 1 Seminar Qualitative und Quantitative Methoden im Software Engineering Ausarbeitung zum Vortrag Methoden und Metriken
Entwurfsprinzip. Entwurfsprinzip
Die Komposition (hat ein Beziehung) ist der Vererbung (ist ein Beziehung) vorzuziehen. Es können Familien von Algorithmen in eigenen Klassensätzen gekapselt werden. Das Verhalten lässt sich zu Laufzeit
SmallTalk - Eine kurze Einführung
SmallTalk - Eine kurze Einführung Andreas Lochbihler Lehrstuhl Programmierparadigmen Universität Karlsruhe 15. Juni 2009 SmallTalk Entwickelt seit Anfang der 70er bei XEROX PARC Alan Kay, Dan Ingalls,
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
Testen und Metriken. Einige Fehler. Fehler vermeiden. Andreas Zeller Universität des Saarlandes Microsoft Research. http://www.st.cs.uni-sb.
Testen und Metriken Andreas Zeller Universität des Saarlandes Microsoft Research http://www.st.cs.uni-sb.de/ Einige Fehler Fehler vermeiden Spezifizieren Beweisen Gegenlesen Testen Module Welche sollte
Nachklausur Bitte in Druckschrift leserlich ausfüllen!
Übungen zur Vorlesung Informatik für Informationsmanager WS 2005/2006 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Bernhard Beckert Dr. Manfred Jackel Nachklausur 24.04.2006 Bitte in Druckschrift
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
Software Engineering II Refactoring, Style, Software Metriken
Software Engineering II Refactoring, Style, Software Metriken Prof. Dr. Axel Böttcher 16. Dezember 2012 Wiederholung Technische Schulden geek & poke, http://geek-and-poke.com/2011/12/keynesian-based-coding.html
1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH
1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch
Objektorientierte und Funktionale Programmierung SS 2014
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
Algorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
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?
Vorteile einer Tool gestützten Modernisierung von Forms und Reports
Vorteile einer Tool gestützten Modernisierung von Forms und Reports Schlüsselworte Forms, Reports, Modernisierung, Tools, Weblogic Einleitung Jan-Peter Timmermann Pitss GmbH Stuttgart Mit diesem Vortrag
Source Code Konverter... 2. Online: (VB.net <-> C#)... 3. Kommerzielle Produkte (VB, C#, C++, Java)... 3. Code Nachbearbeitung in der Praxis...
Autor: Thomas Reinwart 2008-05-05 [email protected] Inhalt Source Code Konverter... 2 Online: (VB.net C#)... 3 Kommerzielle Produkte (VB, C#, C++, Java)... 3 Code Nachbearbeitung in der Praxis...
Klausur Grundlagen der Programmierung
Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel
Werkzeugunterstützte Betrachtungen von Software-Qualität und -Architekturen
...we make the invisible visible... Werkzeugunterstützte Betrachtungen von Software-Qualität und -Architekturen 1 Inhalt Qualitätsbegriff und Qualitätsmodelle Abstraktion Analysen und deren Anwendung Erfahrungen
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.
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
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,
Arten von Klassen-Beziehungen
Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant
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:
System.out.println("TEXT");
Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class
Department of Computer Science Chair of Software Engineering Faculty of Engineering. Grundlagen der Softwarearchitektur (im Softwarepraktikum)
Grundlagen der Softwarearchitektur (im Softwarepraktikum) 1 ORGANISATORISCHES 2 Inhalt Was ist Softwarearchitektur? Dokumentieren mit UML Wie bewerte ich eine Softwarearchitektur? Wie plane ich eine Softwarearchitektur?
Grundlagen von C# - 1
Grundlagen von C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Über diesen Kurs 2. Benötigte Software 3. Exkurs: Architektur von.net und C# 4. Erstes Programm: Hello World Grundlegende Eigenschaften
Thema: Testen von objektorientierter Software
Seminar Simulation und Bildanalyse mit Java Thema: Testen von objektorientierter Software Uta Dienst 1. Teil: Einführung in den Software-Test 2. Teil: JUnit-Einführung Uta Dienst 17.11.2003 2 1. Teil:
Coding Standards Brandbox
Coding Standards Brandbox Einrückungen und Zeilenlänge...2 Kontrollstrukturen...2 Klassen...3 Funktionen...3 Deklaration... 3 Aufruf... 4 Kommentare...4 PHP-Code-Tags...4 Konventionen, Style, Sprache...5
Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
Statische Code-Analyse zur Qualitätsmessung
Statische Code-Analyse zur Qualitätsmessung IT-Architektur-Workshop München, 28. November 2012 Dr. Karl-Heinz Wichert Agenda Statische Code-Analyse Messen 2 Was ist statische Code-Analyse? Wikipedia: Statische
Visualisierung feingranularer Abhängigkeiten
Visualisierung feingranularer Abhängigkeiten Jens Krinke FernUniversität in Hagen Fachbereich Elektrotechnik und Informationstechnik Fach Softwaretechnik 6. Workshop Software-Reengineering, Bad Honnef,
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
Beispiel für überladene Methode
Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter
Ziele und Tätigkeiten von Architekten
Ziele und Tätigkeiten von Architekten Definition Software Architektur o A software architecture provides a model of a whole software system that is composed of internal behavioral units (i.e. components)
Allgemeine Informatik II SS :30-13:30 Uhr
TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer
7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle
In Anwendungen ist es oft interessant zu wissen, ob man überhaupt von einem Knoten v zu einem Knoten w gelangen kann, ganz gleich wie lang der Weg auch ist. Gegeben sei dabei ein gerichteter Graph G =
Aktuelle Themen der Informatik Metriken für den Softwaretest
Aktuelle Themen der Informatik Metriken für den Softwaretest Tobias Held 29 Mai 2006 1 / 24 1 Einleitung 2 Metriken Allgemein 3 Testbarkeit 4 Testfälle 5 Aufwand 6 Überdeckung 7 Testeffektivität 8 Fin
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
Arbeitsblätter für die Lehrveranstaltung OOP JAVA 4
Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing.Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP JAVA 4 IV. Threads, Audiodateien, Bilder, Datumsfunktion, Aufruf
Einführung in die Informatik II
Einführung in die Informatik II SS 2012 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Einführung in die Informatik II 1 Prüfungstermine EI II im Sommersemester 2012 Klausurtermine
To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1
To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1 Rekursion: Beispiele Bier trinken 8-Damen-Problem ipod Shuffle für alle Mitarbeiter Karten
