Test. Hauptsache, es läuft? Entwicklung. Wartung. iks Thementag. Mehr Softwarequalität Best practices für alle Entwicklungsphasen 19.06.



Ähnliche Dokumente
Software Construction

Build-Pipeline mit Jenkins

Einreichung zum Call for Papers

Continuous Integration mit Jenkins

Softwarequalität: Einführung. 15. April 2015

Entwicklungswerkzeuge

INTEGRATION TEST HELL ODER WIE INTEGRATIV SOLL ICH TESTEN?

Auswahl eines Continuous Integrationsservers

Software - Testung ETIS SS05

Echolot Qualitätssicherung mit Sonar

Effektiver Einsatz von Code-Reviews

Qualitätssicherung im Lebenszyklus des itcs. Anspruch und Wirklichkeit.


Value Delivery and Customer Feedback

AGILES Software Engineering in der COUNT IT. Testautomatisierung in der agilen Softwareentwicklung

Continuous Delivery in der Realität eines Großunternehmens

EmplIT Web- und Mobile-Projekte in der Praxis

Agiles Testen. Gedankensammlung. 17. November Patrick Koglin

Automatisierte GUI Tests in fachlichen Teststufen Patrick Möller

Wer bin ich. > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software > 12+ Jahre Java Enterprise > 7+ Jahre.

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16

Tester als Coach ein Erfolgsmodell

Testen im Software- Entwicklungsprozess

ISIS. Das Navigationssystem für angemessene Qualität und hohe Effizienz

Einführung in das Scrum Framework & welche 10 Praktiken helfen, Scrum wirklich gut zu machen

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

Die Entwicklung des Open-Source. Source-Tools. zum Datenbankabgleich von Karsten Panier. Inhalt

Versionsverwaltung mit SVN

Serbest Hammade / Resh serbest.hammade@hammade.de. Do, 21. Juni 2012

Generative Prozessmodelle Patrick Otto MDD Konferenz

Einführung und Motivation

Continuous Delivery. für Java Anwendungen. Axel Fontaine Software Development Expert

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Effektiver Einsatz von Code-Reviews

Agile Java-Entwicklung in der Praxis

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

Kontinuierliche Architekturanalyse. in 3D

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Evaluation eines kooperativen Entwicklungswerkzeuges zur Unterstützung von Projektteams am Beispiel von IBM Rational Team Concert.

Neue Funktionen in Innovator 11 R5

Softwaretests. Werkzeuge zur Automatisierung. Thementag Wer testet, ist feige. Autor: für Markus Alvermann.

Praktikum BKSPP: Organisatorisches

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Testen und Testautomatisierung in agilen Projekten

Softwarequalität erhöhen durch DevOps

Sonnenfinsternis in der Technischen Redaktion

Einführung in Subversion

Gutes Benehmen Akzeptanztest-getriebene Software-Entwicklung in einem Web-Projekt

Erfolgreicher Ums9eg auf Git

Continuous Delivery. Der pragmatische Einstieg. von Eberhard Wolff. 1. Auflage. dpunkt.verlag 2014

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand

Software Systems Engineering

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

1. Einführung Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Softwarequalität. State of the industry vs State of the art. Dr. Hanno Langweg, Fachkoordinator Softwarearchitektur, eq-3 Entwicklung GmbH

Die 7 Wege zum Clean Code

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Kontinuierliche Integration am Beispiel Jenkins

Moderne Datenbankentwicklung mit Hilfe von SQL Server Data Tools

Von Continuous Integration zu Continuous Deployment

Automatisierung in der Software- Produktion abseits von MDA

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Agile Software-Entwicklung im Kontext der EN50128 Wege zum Erfolg

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

Die Welt der SW-Qualität Ein Streifzug in 30 Minuten! Johannes Bergsmann Eigentümer

VIELE SAGEN... hohe Qualität große Erfahrung besondere Spezialisierung. nur für Sie!

Testanalyse und Testautomation bei der ImmobilienScout24

Issue Tracker & Wiki

T1 - Fundamentaler Testprozess

Deployment Deployment Seite 1 / 25

Wo sind meine Anforderungen?

Umsichtig planen, robust bauen

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Was versteht man unter Softwaredokumentation?

Der frühe Tester fängt den Bug

Softwarequalität: Definitionen, Wünsche, Grenzen

Einführung in die Informatik Tools

Verbesserung der Architektur und Dokumentation der DPP-Software Saros. Slawa Belousow Institut für Informatik FU Berlin

Iterativ. Inkrementell

Continuous Database Integration mit Flyway

Kapitel 10: Dokumentation

Effizenzsteigerung bei Villeroy & Boch durch den Einsatz von Magento und Zend

Bugtracking Tools codecentric GmbH

Qualitätsmanagement mit Continuous Integration Untersuchung anhand einer Machbarkeitsstudie in der Praxis. Abschlußpräsentation zur Studienarbeit

Softwarequalität: Zusammenfassung und Ausblick. 17. Juli 2013

Continuous Integration im medizinischen Bereich

ITIL und Entwicklungsmodelle: Die zwei Kulturen

Python SVN-Revision 12

Automatisiertes End-to-end Testen von Enterprise Applikationen

Inhalt. 3.1 Der inkrementelle Entwurf im Überblick Flache Aufwandskurve Qualitätskriterien für den inkrementellen Entwurf...

Testautomatisierung. Lessons Learned. qme Software. Gustav-Meyer-Allee Berlin. Telefon 030/ Telefax 030/

DevOps in der Praxis. Alexander Pacnik

Unit Testing mit JUnit. Dr. Andreas Schroeder

Software-Praktikum. Gabriele Taentzer Philipps-Universität Marburg Sommersemester 2015

Software-Praktikum. Gabriele Taentzer Philipps-Universität Marburg Sommersemester 2013

Testen Prinzipien und Methoden

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

Uwe Baumann artiso Solutions

Carsten Pfeiffer, GEBIT Solutions 23. Januar 2007

Qualität bei evolutionärer Entwicklung

Transkript:

Hauptsache, es läuft? Entwicklung Wartung Test iks Thementag Mehr Softwarequalität Best practices für alle Entwicklungsphasen 19.06.2012 Autor: Dr. Reik Oberrath

Agenda Begriffserklärung: Entwicklung, Wartung, Test Sieben Einflussgrößen der Softwarequalität in Entwicklung und Wartung Best practices im Einsatz Zusammenfassung Seite 3 / 42

Agenda Begriffserklärung: Entwicklung, Wartung, Test Sieben Einflussgrößen der Softwarequalität in Entwicklung und Wartung Best practices im Einsatz Zusammenfassung Seite 4 / 42

Was ist Entwicklung, was Wartung und was Test? Entwicklung Software- Erweiterung Release Build Software-Erweiterung, Fehlerbehebung, Entwicklungstests Test Enwicklungstests Freigabetests Release Build & Test Freigabe Wartung Fehlerbehebung Produktionsunterstützung Produktionsunterstützung Seite 5 / 42

Agenda Begriffserklärung: Entwicklung, Wartung, Test Sieben Einflussgrößen der Softwarequalität in Entwicklung und Wartung Best practices im Einsatz Zusammenfassung Seite 6 / 42

7. Produktionsunterstützung 1. Entwicklungstools Entwicklung im engeren Sinn 6. Freigabe Softwarequalität 2. Clean Code 4. Kommunikation im Team 5. Release Build & Test 3. Entwicklungstests Seite 7 / 42

7. Produktionsunterstützung 1. Entwicklungs- tools 6. Freigabe Softwarequalität 2. Clean Code 4. Kommunikation im Team 5. Release Build & Test 3. Entwicklungstests Seite 8 / 42

1. Entwicklungstools: Best practices Entwicklungsumgebung (IDE): Java: Eclipse, NetBeans, IntelliJ.NET: Visual Studio AS/400: RDP Versionsverwaltung: Java:.NET: AS/400: TD/OMS Issue Tracker: CVS, SVN, Mercurial, GIT Team Foundation Server Jira, Mantis, Bugzilla, Trac Seite 9 / 42

7. Produktionsunterstützung 1. Entwicklungstools 6. Freigabe Softwarequalität 2. Clean Code 4. Kommunikation im Team 5. Release Build & Test 3. Entwicklungstests Seite 10 / 42

2. Clean Code: Was ist das? Codequalität Interne / Strukturelle Qualität des Produkts Effiziente Software-Entwicklung Merkmale: Leicht verständlich Einfach änderbar Gut testbar flexibel wartbar Seite 11 / 42

2. Clean Code: Best practices Patterns so ist s gut Allgemeine Prinzipien Clean-Code-Developer [1]: DRY-Prinzip, KISS-Prinzip, SOLID-Prinzipien, Softwaremetriken, Sprachen-spezifische Prinzipien Buch-Tipp: Effektive Java [2] Antipatterns so nicht! Vortrag: Clean Code: Von der Lehre in den Alltag von Jörg Vollmer & Reik Oberrath Buch-Tipp: Bug Patterns in Java [3] Code-Inspection-Tools: Findbugs, Checkstyle, PMD, Eclipse Seite 12 / 42

2. Clean Code: Softwaremetriken Messbar sind Umfang, Komplexität, Koppelung, Lesbarkeit, Abstraktion, Bsp. 1: Lines of Code (LOC) pro Quelltextdatei Bsp. 2: Cyclomatische Komplexität (CCN) bzw. McCabe-Metrik Tools: Checkstyle, Sonar Seite 13 / 42

Anz. Quelltextdateien 2. Clean Code: Softwaremetriken im Einsatz I 60 50 40 30 20 10 0 1 2 3 4 5 6 7 Zyklomatische Komplexität Seite 14 / 42

Anz. Quelltextdateien mit einer Zyklomatischen Komplexität > 4 2. Clean Code: Softwaremetriken im Einsatz II 6 5 4 3 2 Akzeptanzgrenze Sollwert 1 0 1 2 3 4 5 6 7 8 9 10 11 Release Candidate Seite 15 / 42

7. Produktionsunterstützung 1. Entwicklungstools 6. Freigabe Softwarequalität 2. Clean Code 4. Kommunikation im Team 5. Release Build & Test 3. Entwicklungstests Seite 16 / 42

3. Entwicklungstest: Testtypen End-To-End-Tests Integrationstests, Komponententests, Servicetests schnell in der Ausführung aufwändige Testumgebung nötig Systemtests Modultests Programmzeilentest Unittests Seite 17 / 42

Informationsmenge 3. Entwicklungstest: Aussagekraft Externe Qualität Interne Qualität Nach [4] Unittests Modultests Systemtests Seite 18 / 42

3. Entwicklungstest: Teststrategie Testabdeckung ca. 10 % Testausführung täglich bis wöchentlich Systemtests ca. 50 % möglichst oft Modultests möglichst hoch (>90%) nach jeder Änderung Unittests Seite 19 / 42

3. Entwicklungstest: Best practices Automatisierung aller Testtypen (Unit-, Modul- und Systemtests) Regelmäßige Ausführung durch CI-Tools Tools für CI (Continuous Integration): Hudson Jenkins Teamcity Team Foundation Server (.NET) Seite 20 / 42

3. Entwicklungstest: CI - Funktionsweise Versionskontrollsystem Prüft Aktualität Neuer Stand Continuous Integration Server Führt Build & Test aus Neuer Stand benachrichtigt Prüft Testergebnisse Entwickler Seite 21 / 42

7. Produktionsunterstützung 1. Entwicklungstools 6. Freigabe Softwarequalität 2. Clean Code 4. Kommunikation im Team 5. Release Build & Test 3. Entwicklungstests Seite 22 / 42

4. Kommunikation im Entwicklerteam: Wichtigkeit Wissensaustausch (Tools, Technologien, Clean Code, Teststrategie ) Einigung auf gemeinsame Ziele (Teststrategie, Clean Code, Definition of Done, ) Arbeitsteilung ( aufeinander zu arbeiten ) Seite 23 / 42

4. Kommunikation im Entwicklerteam: Vorrausetzungen Kluge Teamzusammenstellung: Gute Stimmung im Team, hohe Motivation zur Kommunikation Soft-Skill Kommunikationsfähigkeit : Buch-Tipp: Soft-Skills für Softwareentwickler [5] Seite 24 / 42

4. Kommunikation im Entwicklerteam: Best practices Pairprogramming Regelmäßige Code-Review-Meetings Einsatz von Tools - Dokumentation: Wiki, Confluence - Issue-Tracking: Jira, Bugzilla - Sonstige: RE-Tools, EMail Seite 25 / 42

7. Produktionsunterstützung 1. Entwicklungstools 6. Freigabe Softwarequalität 2. Clean Code 4. Kommunikation im Team 5. Release Build & Test 3. Entwicklungstests Seite 26 / 42

5. Release Build & Test: Best practices Automatischer Build ( Auf-Knopfdruck ) Regelmäßige Durchführung (Continuous Delivery) Java-Tools: Ant, Maven, Gradle Automatische (System-)Tests & Manueller Anlauftest Seite 27 / 42

7. Produktionsunterstützung 1. Entwicklungstools 6. Freigabe Softwarequalität 2. Clean Code 4. Kommunikation im Team 5. Release Build & Test 3. Entwicklungstests Seite 28 / 42

6. Freigabe: Hochstufungsprozess Produktionsumgebung Abnahmeumgebung Integrationsumgebung Seite 29 / 42

6. Freigabe: Best practices Dreistufiger Hochstufungsprozess Automatische Freigabetests (Akzeptanztests) Manuelles freies Testen Seite 30 / 42

7. Produktionsunterstützung 1. Entwicklungstools 6. Freigabe Softwarequalität 2. Clean Code 4. Kommunikation im Team 5. Release Build & Test 3. Entwicklungstests Seite 31 / 42

7. Produktionsunterstützung: Best practices Gute Produkteinführung für die Benutzer Guter Informationsaustausch zwischen Entwicklern und Betrieb (technische Administration): DevOps Guter Informationsaustausch zwischen Entwicklern und Fachseite (fachliche Administration): DevBus Guter Informationsaustausch zwischen Entwicklern und Benutzern: DevUse Seite 32 / 42

7. Produktionsunterstützung 1. Entwicklungstools 6. Freigabe Softwarequalität 2. Clean Code 4. Kommunikation im Team 5. Release Build & Test 3. Entwicklungstests Seite 33 / 42

Agenda Begriffserklärung: Entwicklung, Wartung, Test Sieben Einflussgrößen der Softwarequalität in Entwicklung und Wartung Best practices im Einsatz Zusammenfassung Seite 34 / 42

Die best practices im laufenden Projekt Symptom betrifft Abhilfe Entwickler findet seinen Code nicht 1. Entwicklungstools Bessere Tools Fehlerbehebung dauert zu lange 2. Clean Code Strukturelle Codequalität verbessern Zu viele Fehler im Release 3. Entwicklungstests Teststrategie verbessern Entwickler: Das ist nicht von mir, ich kenne mich da nicht aus. 4. Kommunikation im Team Mehr Wissensaustausch unter den Entwicklern Release Build dauert zu lange 5. Release Build & Tests Höhere Automatisierung, häufigere Builds Zu viele Fehler in der Produktion 6. Freigabe Hochstufungsprozess einführen, intensivere Freigabetests System ist technisch zu instabil 7. Produktionsunterstützung Bessere Kommunikation mit dem Betrieb (tech. Admin.) Zu viele Fehler in der Abnahmeumgebung 3. Entwicklungstests 5. Release Build & Tests Intensivere Entwicklertests Intensivere Releasetests Entwickler: It s a feature, not a bug 7. Produktionsunterstützung Bessere Produkteinführung Seite 35 / 42

Die best practices für ein neues Projekt 1. Entwicklungstools Eclipse, GIT 2. Clean Code DRY, KISS, SOLID, Automatische Softwaremetriken, 3. Entwicklungstests 4. Kommunikation im Team 5. Release Build & Tests Automatische Unit- Tests, CI Issue Tracker Automatischer Build Automatische Integrationstests Reviews, Pairprogramming, Doku-Tools Automatische Systemtests Automatische Systemtests Vieraugenprinzip im Definition of Done 6. Freigabe - Abnahmeumgebung Dreistufiger Hochstufungsprozess 7. Produktionsunterstützung Produkteinführung DevOps, DevUse, DevBus Billig Einfach Kurzweilig Ungefährlich Mausklick Kritikalität Teuer Komplex Langfristig Lebensgefährlich Seite 36 / 42

Wie wirkt sich die Anwendung der best practices aus? 1 0 011 01 00 1 1 100 01 1 01 10 1 10 0 001 11 11 0 00 10 10 01 0 01 00 011 0 1 111 01 01 010 10 1 00 11 01 1001101 0011100 0110011 1010110 0110110 1100001 1010010 1111000 0100011 0111101 1000011 1001010 0101010 1001101 ERROR Seite 37 / 42

Agenda Begriffserklärung: Entwicklung, Wartung, Test Sieben Einflussgrößen der Softwarequalität in Entwicklung und Wartung Best practices im Einsatz Zusammenfassung Seite 38 / 42

Hauptsache, es läuft? Nicht-funktionale Qualitätsmerkmale von Software Das Produkt (finales Ziel mit Selbstzweck) korrekt, skalierbar, performant, stabil, effizient, sicher (Security), zuverlässig, gesetzeskonform, gut bedienbar Der Entwicklungsprozess (Zwischenziel, nur Mittel zum Zweck) wirtschaftlich, testbar, erweiterbar, veränderbar, analysierbar, wartbar Seite 39 / 42

Zusammenfassung In Entwicklung und Wartung hat die SQ 7 Einflussgrößen Für jede Einflussgröße gibt es eine Reihe von best practices SQ kostet und zahlt sich u.u. erst langfristig aus Ein guter Entwicklungsprozess ist der Schlüssel zu einem guten Produkt Produkt und Herstellungsprozess sind gleich wichtig Seite 40 / 42

Referenzen [1] Die Clean Code Developer www.clean-code-developer.de/ [2] Effective Java: A Programming Language Guide Joshua Bloch, 2. Auflage, 2008 [3] Bug Patterns in Java Eric Allen, 2002 [4] Growing Object-Oriented Software, Guided By Tests Steve Freeman & Nat Pryce, 2010 [5] Soft Skills für Softwareentwickler Uwe Vigenshow, Björn Schneider & Ines Meyrose, 2. Auflage, 2011 Seite 41 / 42

Weiterführende Literatur Growing Object-Oriented Software, Guided By Tests Steve Freeman & Nat Pryce, 2010 Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code Robert C. Martin, 2009 Der Pragmatische Programmierer David Thomas, Andrew Hunt, Steffen Gemkow und Andreas Braig, 2003 Clean Coder: Verhaltensregeln für professionelle Programmierer Robert C. Martin, 2011 Seite 42 / 42

Fragen?

www.iks-gmbh.com