Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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

746 Aufrufe

Veröffentlicht am

Entwicklung Develpment Tools

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

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

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

×