MilenaReichel@costanova<br />Software Metrics und <br />Continuous Integration<br />Hamburg<br />21.03.2011<br />
Überblick<br />Definition Software Metriken<br />Sinn und Zweck Software Metriken<br />Verschiedene Produkt-/Codemetriken<...
Definition und Zweck<br />Software-Metriken sind mathematische Instrumente zum Messen bestimmter Eigenschaften vom Softwar...
Klassische Code-Metriken<br />LOC – Lines of Code<br />Function Points<br />Cyclomatic Complexity<br />WievielePfadegibtes...
LOC<br />x=x+4 How inefficient. Much better to write: x=x+1; x=x+1; x=x+1; x=x+1;<br />http://thedailywtf.com/Articles/Pro...
OOP Metriken<br />Depth of inheritance tree (DIT) <br />Wiederverwendung +<br />Struktur<br />Komplexität, Abstraktion, Fe...
Test Coverage<br />vargallery:Gallery = new Gallery();<br />this.galleryModel.gallery = gallery;<br />Assert.assertEquals(...
Coverage<br />public class StaticDataRequestTest { <br />		@Test public void startClientReqest() {<br />		 try { <br />			...
Spezifische Metriken<br />Typisierung<br />Flex Life Cycle<br />Kommentare<br />ASDoc<br />Naming Conventions<br />Unbenut...
Code Metriken + ActionScript: Code Coverage<br />Adobe hat ein Code Coverage Tool in den Labs zur Verfügung gestellt<br />...
Report<br />http://wwwimages.adobe.com/labs.adobe.com/cdn/wiki/images/0/0b/PackageView.png<br />http://wwwimages.adobe.com...
Code Metriken + Flex: FlexPmd<br />FlexPMD: Tool für Software Metriken in Flex/AS3<br /><ul><li>Regeln (eigene Regeln/Rege...
Unbenutzter Code
Ineffizienter Code (komplexeKonstruktoren)
Cyclomatic Complexity
Zulanger Code
Einsatz des Flex Lifecycles</li></li></ul><li>FlexPMD: Technische Einbettung<br />Eclipse/Idea Plugin<br />Maven<br />Ant<...
FlexPMD:Wieverwenden?<br /><ul><li>Ab und zu zur Selbstkontrolle
AlsTeil von manuellen Code reviews
AutomatisiertübereinContinous Integration System</li></li></ul><li>Continuous Integration<br />
Continuous Integration<br /><ul><li>Systeme, die kontinuierlich (nach Check-In oder als NightlyBuild) prüfen, ob alle Proj...
Nächste SlideShare
Wird geladen in …5
×

Software Metrics and Continuous Integration

3.098 Aufrufe

Veröffentlicht am

My presentation from FFK11 about Software Metrics and Continuous Integration in an ActionScript context

Veröffentlicht in: Technologie
0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
3.098
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
83
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • What is Cobertura?Cobertura is a free Java tool that calculates the percentage of code accessed by tests. It can be used to identify which parts of your Java program are lacking test coverage. It is based on jcoverage. JavaNCSSNon Commenting Source Statements (NCSS), CyclomaticComplexity-&gt; FlexPMD MetricsCPDCopy &amp; Paste detection, FlexPMD CPD
  • Software Metrics and Continuous Integration

    1. 1. MilenaReichel@costanova<br />Software Metrics und <br />Continuous Integration<br />Hamburg<br />21.03.2011<br />
    2. 2.
    3. 3. Überblick<br />Definition Software Metriken<br />Sinn und Zweck Software Metriken<br />Verschiedene Produkt-/Codemetriken<br />ActionScript Code Coverage Plug-in<br />FlexPMD<br />Integration in den Alltag / Continuous Integration<br />Fazit<br />
    4. 4. Definition und Zweck<br />Software-Metriken sind mathematische Instrumente zum Messen bestimmter Eigenschaften vom Software-Entwicklungsprozess – Qualität messbar machen<br />Einsatz von Produkt- und Prozess-Metriken zur<br />Zeit- / Resourcenplanung( Requirements, Schätzungen, Design, Code )<br />Risikoabschätzung<br />Frühen Erkennung von Problemen/ Qualitätsmanagement<br />Verbesserung Wartbarkeit / Erweiterbarkeit<br />
    5. 5. Klassische Code-Metriken<br />LOC – Lines of Code<br />Function Points<br />Cyclomatic Complexity<br />WievielePfadegibtesimAblaufgraph?<br />Halstead-Maße<br />Anzahl von verschiedenen Operatoren und Operanden und ihre Gesamtzahl bestimmt Schwierigkeit, Volumen und Umfang <br />
    6. 6. LOC<br />x=x+4 How inefficient. Much better to write: x=x+1; x=x+1; x=x+1; x=x+1;<br />http://thedailywtf.com/Articles/Productivity-20.aspx<br />
    7. 7. OOP Metriken<br />Depth of inheritance tree (DIT) <br />Wiederverwendung +<br />Struktur<br />Komplexität, Abstraktion, Fehlerwahrscheinlichkeit -<br />Coupling between objects (CBO)<br />Number of children (NOC)<br />WichtigkeitderKlasse +<br />Testaufwand –<br />AufwandbeiÄnderungen -<br />
    8. 8. Test Coverage<br />vargallery:Gallery = new Gallery();<br />this.galleryModel.gallery = gallery;<br />Assert.assertEquals("galleryModelshouldhave a gallery", this.galleryModel.gallery != null, true );<br />Wie viel % des Codes sind getestet?<br />Messung: Test werden durchgelaufen ausgeführter Code wird gezählt<br />Sinnhaftigkeit von Asserts wird nicht geprüft<br />
    9. 9. Coverage<br />public class StaticDataRequestTest { <br /> @Test public void startClientReqest() {<br /> try { <br /> new StaticDataRequest().onData(null); <br />assertEquals( " processing client static data request ", true, true); } <br /> catch (Exception ex) { <br />assertEquals( " processing client static data request ", true, true); } <br /> } }<br />http://thedailywtf.com/Articles/Unit-Tested.aspx<br />
    10. 10. Spezifische Metriken<br />Typisierung<br />Flex Life Cycle<br />Kommentare<br />ASDoc<br />Naming Conventions<br />Unbenutzte Methoden und Variablen<br />
    11. 11. Code Metriken + ActionScript: Code Coverage<br />Adobe hat ein Code Coverage Tool in den Labs zur Verfügung gestellt<br />Prüft Test Coverage<br />Wie viel % des Codes werden ausgeführt?<br />Wird aus dem Flashbuilder Premium gestartet<br />Nachfolger von Flexcover (gepatchtes Framework notwendig)<br />Flexmojos/Maven kann auch Coverage berechnen<br />Generierung von Coberturareports/Sonarpatch<br />
    12. 12. Report<br />http://wwwimages.adobe.com/labs.adobe.com/cdn/wiki/images/0/0b/PackageView.png<br />http://wwwimages.adobe.com/labs.adobe.com/cdn/wiki/images/0/0b/PackageView.png<br />http://wwwimages.adobe.com/labs.adobe.com/cdn/wiki/images/d/d1/ClassView2.png<br />
    13. 13. Code Metriken + Flex: FlexPmd<br />FlexPMD: Tool für Software Metriken in Flex/AS3<br /><ul><li>Regeln (eigene Regeln/Regelsets möglich)
    14. 14. Unbenutzter Code
    15. 15. Ineffizienter Code (komplexeKonstruktoren)
    16. 16. Cyclomatic Complexity
    17. 17. Zulanger Code
    18. 18. Einsatz des Flex Lifecycles</li></li></ul><li>FlexPMD: Technische Einbettung<br />Eclipse/Idea Plugin<br />Maven<br />Ant<br />Commandline<br />OSX Automator<br />Erstellt Xml-Files mit Reports<br />
    19. 19. FlexPMD:Wieverwenden?<br /><ul><li>Ab und zu zur Selbstkontrolle
    20. 20. AlsTeil von manuellen Code reviews
    21. 21. AutomatisiertübereinContinous Integration System</li></li></ul><li>Continuous Integration<br />
    22. 22. Continuous Integration<br /><ul><li>Systeme, die kontinuierlich (nach Check-In oder als NightlyBuild) prüfen, ob alle Projekte funktionieren
    23. 23. Bekannte CIs: Hudson, Jenkins, Teamcity, Bamboo
    24. 24. Kompiliert das Projekt? (Ant, Maven)
    25. 25. Laufenalle Tests durch?
    26. 26. Genügt das Projekt den Anforderung an Metriken und Format?-> Diverse Plug-Ins</li></li></ul><li>Jenkins/Sonar<br />Sonar: Qualitätsmanagements - Plattform<br />http://www.sonarsource.org/wp-content/themes/sonar/images/7axes.png<br />
    27. 27. Fazit: Probleme von Metriken<br /><ul><li>“Nur” automatischerfassbareKriterien
    28. 28. Es gibt nicht unbedingt gut und schlecht
    29. 29. Nicht alle Metriken machen Sinn in einem bestimmten Kontext
    30. 30. Aufwendig (Einrichtung, Verantwortlichkeiten)
    31. 31. Kann immer umgangen werden (Tests ohne Asserts, Kurzschreibweisen, Copy & Paste ASDocs )</li></li></ul><li>Fazit: Vorteile von Metriken<br /><ul><li>Helfen gegen Vergessen
    32. 32. Schaffen Bewusstsein für Code-Qualität
    33. 33. Standardisierung von Software
    34. 34. Auffinden von Design-Fehlern</li></li></ul><li>Fazit: IdeenzumEinsatz<br /><ul><li>Unternehmens-interne Regeln denen alle zustimmen
    35. 35. Verbindung mit manuellen Code-Reviews
    36. 36. Mindest-Standards
    37. 37. Integration in den Arbeitsalltag (CI, Visualisierung)</li></li></ul><li>Danke!<br />Fragen?<br />#costanova<br />

    ×