Software Metrics and Continuous Integration

2,905 views
2,785 views

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,905
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • 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-> FlexPMD MetricsCPDCopy & 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 />

    ×