14
Qualitätssicherung durch Entwicklungswerkzeuge Christian Mahnke 05.02.09 05.02.2009 1 Mahnke

Development Toolbox

  • Upload
    cmahnke

  • View
    500

  • Download
    0

Embed Size (px)

DESCRIPTION

Entwicklung Develpment Tools

Citation preview

Page 1: Development Toolbox

Qualitätssicherung durch Entwicklungswerkzeuge

Christian Mahnke

05.02.09

05.02.2009

1

Mahnke

Page 2: Development Toolbox

Probleme (Auswahl)

• Mangelnde Überprüfbarkeit– Für das Testen einer Änderung muss eine

Testversion installiert werden.

• Undokumentierte Abhängigkeiten– Versionskonflikte– Unbenutzte Bibliotheken (bläht Repository und

Distribution unnötig auf)

• Redundante Implementierungen– Verringerte Wartbarkeit durch überflüssigen Kode

• Mangelnde Dokumentation05.02.2009

Mahnke

2

Page 3: Development Toolbox

Lösungsansätze (Grundsätze)

• Wichtig: Lösung durch Methode, nicht spezifische Implementierung (sofern möglich)!

• Sollte zumindest unabhängig von der Programmiersprache sein!

• Metadaten eines Softwareprojektes sollten maschinenlesbar sein!

05.02.2009

Mahnke

3

Page 4: Development Toolbox

Unit Tests (Konzept)

• Einzelne Teile der Software (Units) werden getestet ob sie das erwartete Verhalten zeigen.

• Software muss so gestaltet sein, das ohne Seiteneffekte funktioniert.

• Verhalten sollte komplett dokumentiert sein

• Idealerweise werden die Tests vor der zu testenden Software auf Basis einer Spezifikation erstellt.

05.02.2009

Mahnke

4

Page 5: Development Toolbox

Unit Tests (Implementierungen)

• JUnit für Java– Definition von Testklassen– Feine Steuerung über das Erstellen von

Objekten– Integration über Java 5 Annotations möglich

• PHPUnit für PHP– Klone von JUnit für PHP (mit Erweiterungen)

05.02.2009

Mahnke

5

Page 6: Development Toolbox

Maschinenlesbare Projekt Metadaten

• Dokumentation folgender Eigenschaften (Auswahl)– Typ (z.B. Bibliothek oder Webanwendung)

– Menschenlesbare Metadaten (z.B. als URL)

– Abhängigkeiten

– Anweisungen zur Übersetzung

– Anweisungen für Tests

– Generierung von Dokumentation

– Deployment

– Distribution05.02.2009

Mahnke

6

Page 7: Development Toolbox

Projekt Metadaten (Implementierung)

• Maven Grundprinzipien– Project Object Model (POM)– Konvention über Konfiguration– Projekt Lebenszyklus kann durch Plugins

erweitert oder geändert werden

05.02.2009

Mahnke

7

Page 8: Development Toolbox

Projekt Metadaten (Implementierung) cont.

• Maven Features– Buildtool (wie make oder Ant)– Integration der Tests (analog zu „make test“)– Deployment („make install“)– Plugins für Dokumentation (javadoc oder

doxygen)– Erstellung von Projekt Webseiten– Repositories für Abhängigkeiten

05.02.2009

Mahnke

8

Page 9: Development Toolbox

Continuous Integration (Konzept)

• Regelmäßige Überprüfung aller benötigten Komponenten (z.B. Nachts)– Kompilierbar?– Ausführbar?– Testergebnisse?

• Implizite Vorteile (um das überhaupt prüfen zu können)– Portabilität– Funktionale Einheiten

05.02.2009

Mahnke

9

Page 10: Development Toolbox

Continuous Integration (Implementierung)

• Hudson– Integration verschiedener SCMs– Auswertung von Projekt Metadaten (maven)– Frei konfigurierbare Anweisungen für

Erstellung der Anwendung (Ant, Shell Script)– Integration mit Issue Trackern– Benachrichtigung via Mail und RSS– Webadministration

05.02.2009

Mahnke

10

Page 11: Development Toolbox

Metriken (Konzept)

• Erfassung verschiedener Kennzahlen (Auswahl)– Testabdeckung– Verhältnis zwischen Kode und

Kommentarzeilen– Komplexität (auf Basis des Quelltexts)– Ergebnisse einer statischen Analyse (wenn

möglich mit flexiblen Regeln)– Doppelter Kode

05.02.2009

Mahnke

11

Page 12: Development Toolbox

Metriken (Implementierungen)

• Sonar (Java)– Modulare Architektur– Regelwerk anpassbar– Visualisierung– Webadministration

• PHPUnit (PHP, nicht so umfassend)– Unterstützung von PMD („Project Mess

Detector “)

05.02.2009

Mahnke

12

Page 13: Development Toolbox

Weitere mögliche Werkzeuge

• Distribution: Archiva für die Verteilung von Artefakten

• Dokumentation: UML aus dem Kode

• Integration: Jira – Eclipse Anbindung für die Verwaltung von Aufgaben („Task focused UI“)

05.02.2009

Mahnke

13

Page 14: Development Toolbox

Demonstration

• Beispiele für die einzelnen Werkzeuge

• Fragen?

05.02.2009

Mahnke

14