MilenaReichel@costanovaSoftware Metrics und Continuous IntegrationHamburg21.03.2011
ÜberblickDefinition Software MetrikenSinn und Zweck Software MetrikenVerschiedene Produkt-/CodemetrikenActionScript Code Coverage Plug-inFlexPMDIntegration in den Alltag / Continuous IntegrationFazit
Definition und ZweckSoftware-Metriken sind mathematische Instrumente zum Messen bestimmter Eigenschaften vom Software-Entwicklungsprozess – Qualität messbar machenEinsatz von Produkt- und Prozess-Metriken zurZeit- / Resourcenplanung( Requirements, Schätzungen, Design, Code )RisikoabschätzungFrühen Erkennung von Problemen/ QualitätsmanagementVerbesserung Wartbarkeit / Erweiterbarkeit
Klassische Code-MetrikenLOC – Lines of CodeFunction PointsCyclomatic ComplexityWievielePfadegibtesimAblaufgraph?Halstead-MaßeAnzahl von verschiedenen Operatoren und Operanden und ihre Gesamtzahl bestimmt Schwierigkeit, Volumen und Umfang
LOCx=x+4 How inefficient. Much better to write: x=x+1; x=x+1; x=x+1; x=x+1;http://thedailywtf.com/Articles/Productivity-20.aspx
OOP MetrikenDepth of inheritance tree (DIT) Wiederverwendung +StrukturKomplexität, Abstraktion, Fehlerwahrscheinlichkeit -Coupling between objects (CBO)Number of children (NOC)WichtigkeitderKlasse +Testaufwand –AufwandbeiÄnderungen -
Test Coveragevargallery:Gallery = new Gallery();this.galleryModel.gallery = gallery;Assert.assertEquals("galleryModelshouldhave a gallery", this.galleryModel.gallery != null, true );Wie viel % des Codes sind getestet?Messung: Test werden durchgelaufen ausgeführter Code wird gezähltSinnhaftigkeit von Asserts wird nicht geprüft
Coveragepublic class StaticDataRequestTest { 		@Test public void startClientReqest() {		 try { 			new StaticDataRequest().onData(null); assertEquals( " processing client static data request ", true, 			true); } 		catch (Exception ex) { assertEquals( " processing client static data request ", true, 			true); } 		} }http://thedailywtf.com/Articles/Unit-Tested.aspx
Spezifische MetrikenTypisierungFlex Life CycleKommentareASDocNaming ConventionsUnbenutzte Methoden und Variablen
Code Metriken + ActionScript: Code CoverageAdobe hat ein Code Coverage Tool in den Labs zur Verfügung gestelltPrüft Test CoverageWie viel % des Codes werden ausgeführt?Wird aus dem Flashbuilder Premium gestartetNachfolger von Flexcover (gepatchtes Framework notwendig)Flexmojos/Maven kann auch Coverage berechnenGenerierung von Coberturareports/Sonarpatch
Reporthttp://wwwimages.adobe.com/labs.adobe.com/cdn/wiki/images/0/0b/PackageView.pnghttp://wwwimages.adobe.com/labs.adobe.com/cdn/wiki/images/0/0b/PackageView.pnghttp://wwwimages.adobe.com/labs.adobe.com/cdn/wiki/images/d/d1/ClassView2.png
Code Metriken + Flex: FlexPmdFlexPMD: Tool für Software Metriken in Flex/AS3Regeln (eigene Regeln/Regelsets möglich)
Unbenutzter Code
Ineffizienter Code (komplexeKonstruktoren)
Cyclomatic Complexity
Zulanger Code
Einsatz des Flex LifecyclesFlexPMD: Technische EinbettungEclipse/Idea PluginMavenAntCommandlineOSX AutomatorErstellt Xml-Files mit Reports
FlexPMD:Wieverwenden?Ab und zu zur Selbstkontrolle
AlsTeil von manuellen Code reviews
AutomatisiertübereinContinous Integration SystemContinuous Integration
Continuous IntegrationSysteme, die kontinuierlich (nach Check-In oder als NightlyBuild) prüfen, ob alle Projekte funktionieren

Software Metrics and Continuous Integration

Hinweis der Redaktion

  • #12 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