Qualitätssicherung durch Entwicklungswerkzeuge Christian Mahnke 05.02.09 05.02.2009 Mahnke
Probleme (Auswahl) <ul><li>Mangelnde Überprüfbarkeit </li></ul><ul><ul><li>Für das Testen einer Änderung muss eine Testver...
Lösungsansätze (Grundsätze) <ul><li>Wichtig: Lösung durch Methode, nicht spezifische Implementierung (sofern möglich)! </l...
Unit Tests (Konzept) <ul><li>Einzelne Teile der Software (Units) werden getestet ob sie das erwartete Verhalten zeigen. </...
Unit Tests (Implementierungen) <ul><li>JUnit für Java </li></ul><ul><ul><li>Definition von Testklassen </li></ul></ul><ul>...
Maschinenlesbare Projekt Metadaten <ul><li>Dokumentation folgender Eigenschaften (Auswahl) </li></ul><ul><ul><li>Typ (z.B....
Projekt Metadaten (Implementierung) <ul><li>Maven Grundprinzipien </li></ul><ul><ul><li>Project Object Model (POM) </li></...
Projekt Metadaten (Implementierung) cont. <ul><li>Maven Features </li></ul><ul><ul><li>Buildtool (wie make oder Ant) </li>...
Continuous Integration (Konzept) <ul><li>Regelmäßige Überprüfung aller benötigten Komponenten (z.B. Nachts) </li></ul><ul>...
Continuous Integration  ( Implementierung ) <ul><li>Hudson </li></ul><ul><ul><li>Integration verschiedener SCMs </li></ul>...
Metriken (Konzept) <ul><li>Erfassung verschiedener Kennzahlen (Auswahl) </li></ul><ul><ul><li>Testabdeckung </li></ul></ul...
Metriken (Implementierungen) <ul><li>Sonar (Java) </li></ul><ul><ul><li>Modulare Architektur </li></ul></ul><ul><ul><li>Re...
Weitere mögliche Werkzeuge <ul><li>Distribution: Archiva für die Verteilung von Artefakten </li></ul><ul><li>Dokumentation...
Demonstration <ul><li>Beispiele für die einzelnen Werkzeuge </li></ul><ul><li>Fragen? </li></ul>05.02.2009 Mahnke
Nächste SlideShare
Wird geladen in …5
×

Development Toolbox

708 Aufrufe

Veröffentlicht am

Entwicklung Develpment Tools

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

  • Gehören Sie zu den Ersten, denen das gefällt!

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

Keine Notizen für die Folie

Development Toolbox

  1. 1. Qualitätssicherung durch Entwicklungswerkzeuge Christian Mahnke 05.02.09 05.02.2009 Mahnke
  2. 2. Probleme (Auswahl) <ul><li>Mangelnde Überprüfbarkeit </li></ul><ul><ul><li>Für das Testen einer Änderung muss eine Testversion installiert werden. </li></ul></ul><ul><li>Undokumentierte Abhängigkeiten </li></ul><ul><ul><li>Versionskonflikte </li></ul></ul><ul><ul><li>Unbenutzte Bibliotheken (bläht Repository und Distribution unnötig auf) </li></ul></ul><ul><li>Redundante Implementierungen </li></ul><ul><ul><li>Verringerte Wartbarkeit durch überflüssigen Kode </li></ul></ul><ul><li>Mangelnde Dokumentation </li></ul>05.02.2009 Mahnke
  3. 3. Lösungsansätze (Grundsätze) <ul><li>Wichtig: Lösung durch Methode, nicht spezifische Implementierung (sofern möglich)! </li></ul><ul><li>Sollte zumindest unabhängig von der Programmiersprache sein! </li></ul><ul><li>Metadaten eines Softwareprojektes sollten maschinenlesbar sein! </li></ul>05.02.2009 Mahnke
  4. 4. Unit Tests (Konzept) <ul><li>Einzelne Teile der Software (Units) werden getestet ob sie das erwartete Verhalten zeigen. </li></ul><ul><li>Software muss so gestaltet sein, das ohne Seiteneffekte funktioniert. </li></ul><ul><li>Verhalten sollte komplett dokumentiert sein </li></ul><ul><li>Idealerweise werden die Tests vor der zu testenden Software auf Basis einer Spezifikation erstellt. </li></ul>05.02.2009 Mahnke
  5. 5. Unit Tests (Implementierungen) <ul><li>JUnit für Java </li></ul><ul><ul><li>Definition von Testklassen </li></ul></ul><ul><ul><li>Feine Steuerung über das Erstellen von Objekten </li></ul></ul><ul><ul><li>Integration über Java 5 Annotations möglich </li></ul></ul><ul><li>PHPUnit für PHP </li></ul><ul><ul><li>Klone von JUnit für PHP (mit Erweiterungen) </li></ul></ul>05.02.2009 Mahnke
  6. 6. Maschinenlesbare Projekt Metadaten <ul><li>Dokumentation folgender Eigenschaften (Auswahl) </li></ul><ul><ul><li>Typ (z.B. Bibliothek oder Webanwendung) </li></ul></ul><ul><ul><li>Menschenlesbare Metadaten (z.B. als URL) </li></ul></ul><ul><ul><li>Abhängigkeiten </li></ul></ul><ul><ul><li>Anweisungen zur Übersetzung </li></ul></ul><ul><ul><li>Anweisungen für Tests </li></ul></ul><ul><ul><li>Generierung von Dokumentation </li></ul></ul><ul><ul><li>Deployment </li></ul></ul><ul><ul><li>Distribution </li></ul></ul>05.02.2009 Mahnke
  7. 7. Projekt Metadaten (Implementierung) <ul><li>Maven Grundprinzipien </li></ul><ul><ul><li>Project Object Model (POM) </li></ul></ul><ul><ul><li>Konvention über Konfiguration </li></ul></ul><ul><ul><li>Projekt Lebenszyklus kann durch Plugins erweitert oder geändert werden </li></ul></ul>05.02.2009 Mahnke
  8. 8. Projekt Metadaten (Implementierung) cont. <ul><li>Maven Features </li></ul><ul><ul><li>Buildtool (wie make oder Ant) </li></ul></ul><ul><ul><li>Integration der Tests (analog zu „make test“) </li></ul></ul><ul><ul><li>Deployment („make install“) </li></ul></ul><ul><ul><li>Plugins für Dokumentation (javadoc oder doxygen) </li></ul></ul><ul><ul><li>Erstellung von Projekt Webseiten </li></ul></ul><ul><ul><li>Repositories für Abhängigkeiten </li></ul></ul>05.02.2009 Mahnke
  9. 9. Continuous Integration (Konzept) <ul><li>Regelmäßige Überprüfung aller benötigten Komponenten (z.B. Nachts) </li></ul><ul><ul><li>Kompilierbar? </li></ul></ul><ul><ul><li>Ausführbar? </li></ul></ul><ul><ul><li>Testergebnisse? </li></ul></ul><ul><li>Implizite Vorteile (um das überhaupt prüfen zu können) </li></ul><ul><ul><li>Portabilität </li></ul></ul><ul><ul><li>Funktionale Einheiten </li></ul></ul>05.02.2009 Mahnke
  10. 10. Continuous Integration ( Implementierung ) <ul><li>Hudson </li></ul><ul><ul><li>Integration verschiedener SCMs </li></ul></ul><ul><ul><li>Auswertung von Projekt Metadaten (maven) </li></ul></ul><ul><ul><li>Frei konfigurierbare Anweisungen für Erstellung der Anwendung (Ant, Shell Script) </li></ul></ul><ul><ul><li>Integration mit Issue Trackern </li></ul></ul><ul><ul><li>Benachrichtigung via Mail und RSS </li></ul></ul><ul><ul><li>Webadministration </li></ul></ul>05.02.2009 Mahnke
  11. 11. Metriken (Konzept) <ul><li>Erfassung verschiedener Kennzahlen (Auswahl) </li></ul><ul><ul><li>Testabdeckung </li></ul></ul><ul><ul><li>Verhältnis zwischen Kode und Kommentarzeilen </li></ul></ul><ul><ul><li>Komplexität (auf Basis des Quelltexts) </li></ul></ul><ul><ul><li>Ergebnisse einer statischen Analyse (wenn möglich mit flexiblen Regeln) </li></ul></ul><ul><ul><li>Doppelter Kode </li></ul></ul>05.02.2009 Mahnke
  12. 12. Metriken (Implementierungen) <ul><li>Sonar (Java) </li></ul><ul><ul><li>Modulare Architektur </li></ul></ul><ul><ul><li>Regelwerk anpassbar </li></ul></ul><ul><ul><li>Visualisierung </li></ul></ul><ul><ul><li>Webadministration </li></ul></ul><ul><li>PHPUnit (PHP, nicht so umfassend) </li></ul><ul><ul><li>Unterstützung von PMD („Project Mess Detector “) </li></ul></ul>05.02.2009 Mahnke
  13. 13. Weitere mögliche Werkzeuge <ul><li>Distribution: Archiva für die Verteilung von Artefakten </li></ul><ul><li>Dokumentation: UML aus dem Kode </li></ul><ul><li>Integration: Jira – Eclipse Anbindung für die Verwaltung von Aufgaben („Task focused UI“) </li></ul>05.02.2009 Mahnke
  14. 14. Demonstration <ul><li>Beispiele für die einzelnen Werkzeuge </li></ul><ul><li>Fragen? </li></ul>05.02.2009 Mahnke

×