testgetriebene softwareentwicklung in der ......testgetriebene softwareentwicklung in der...
TRANSCRIPT
Testgetriebene Softwareentwicklung in der Automatisierungstechnik:Der Continuous-Integration-Ansatz
Dr. Bernhard Kausler
09.06.2011
ITQ GmbH 1
Wer sind wir?
Wir sind ein unabhängiges Dienstleistungsunternehmen
für den Maschinen- und Anlagenbau
Gründung SF: 1992
Gründung ITQ: 1998
Mitarbeiter insg.: 50
Geschäftsführer: Dr. Rainer Stetter
Büros: � Garching b. München,
� Duisburg,
� Schwäbisch Hall
Wir sind Ihr kompetenter Partner für Software und Mechatronik
ITQ GmbH 2
Erfahrungen
Anlagenbau Sondermaschinenbau Serienmaschinen
Mechatronische
Komponenten & GeräteMobile Systeme
Anspruchsvolle
Software Systeme
ITQ GmbH 3
Einsatzszenarien
Krisenprojekte � Feuerwehr (Retten, Löschen, Bergen)
� Moderation, Projektcoaching, Begutachtung
� Durchführung von Test und Qualitätssicherung
Aufsetzen von Neu-Projekten� Skilehrer (Erklären, Vorfahren, Nachmachen)
� Projektleitung und Klärung der Anforderungen
� Design von wiederverwendbarer modularer Software
� Unterstützung bei Implementierung und Inbetriebnahme
� Kontinuierliche Prozessverbesserung (CMM, GAMP, CFR Part 11)
Technische und kulturelle Innovation� Innovative Maschinenkonzepte entwickeln
� Unternehmensstrukturen an technologischen Gegebenheiten anpassen
Reife
Reife
Reife
ITQ GmbH 4
Projekt Limoweb – Halle 7/Stand 630
ITQ GmbH 5
Highspeed Dartscheibe
Dartscheibe folgt dem Pfeil, um Bulls-Eye zu treffen
ITQ GmbH 6
Stiftung: Technik macht Spaß!
Motivation
ITQ GmbH 8
V-Modell: Theorie
Anforderungen(Vertrag)
Umsetzung
Abnahmetestplan
Systemtestplan
Integrations-testplan
Modul-testplan
Qualitätsmanager Qualitätssicherer Tester = Erster Kunde
Kunde
Systemspezifikation
Detailspezifikation
Modulspezifikation Modultest
Integrationstest
Abnahmetest
Systemtest
ITQ GmbH 9
V-Modell: Praxis
Umsetzung
Abnahmetestplan
Entwicklereigenständig Entwurf und Umsetzung
nicht für alle transparent
Integration und Testwenig systematische Aktivitäten
Abnahmeproblematisch
Keine Reviews
Kunde
Anforderungen(unvollständig) Abnahmetest
ITQ GmbH 10
Klassische Projekte
„Big-Bang-Integration“ und „Integration-Hell“
� Implementieren von Funktionen bis kurz vor Liefertermin
� „Am Schluß wird alles getestet!“
Typischer Entwicklungsverlauf über mehrere Monate
Stress
Fehler
LieferterminProjektstart
Fehlende
Transpar
enz
ITQ GmbH 11
Warum Transparenz
Sicherstellung der Softwarequalität
� Überblick über den Entwicklungsstand aller Software-Module eines Produktes
� Welche Module sind häufig Fehlern unterworfen?
� Ist die SW lauffähig?
� Kann ich eine Release bauen?
� Können wir die SW ausliefern?
� Grenzwerte bleiben im Blick
„You cannot control, what you cannot measure“
ITQ GmbH 12
Wie erreicht man Transparenz?
Messbarkeit herstellen
Einsatz automatisiertes Meßsystem
Gesamtproblemstellung herunter brechen
� Gesamtprojekt -> Teilprojekt -> Phasen -> Iterationen -> Inkremente -> Microinkremente
Richtiger Prozess einsetzen
Das führt uns zu Ideen der agilen Softwareentwicklung
� in unserem heutigen Kontext konkret um „Continous Integration“
ITQ GmbH 13
Inkrementelles Vorgehen
Lösung: Fehlerrate möglichst früh im Projekt niedrig halten
� Projekt nicht mehr in Phasen sondern kleinen Iterationen planen
� Iterationen wieder in kleinen Inkrementen durchführen
Iterativer Entwicklungsverlauf in 4-Wocheniterationen
Stress
Fehler
LieferterminProjektstart
Continuous Integration als Bestandteilagiler Softwareentwicklung
ITQ GmbH 15
Kleine Teams, die in räumlicher Nähe zueinander arbeiten
Sehr intensive Zusammenarbeit der Teammitglieder
Tägliche Team-Meetings
� Was habe ich getan
� Was werde ich als nächstes tun
� Abstimmen der gemeinsamen nächsten Schritte
Jeder implementierte Code wird sofort getestet und gegebenenfalls geändert
Ideal: Test-Driven-Development
Agile Software-Entwicklung - Vorgehensweise
ITQ GmbH 16
Agile Software-Entwicklung – Prozess (OpenUP)
Quelle: http://epf.eclipse.org/wikis/openup/index.htm
ITQ GmbH 17
Continuous Integration – Was ist das?
Ein Konzept, das den Prozess des regelmäßigen, vollständigen Neubildens und Testens einer Anwendung beschreibt
Die Idee: „permanente Integration“:
� Sobald ein Entwickler(-team) Änderungen in die Versionsverwaltung eincheckt, wird das Gesamtsystem oder ein definiertes Teilsystemneu gebaut und automatisch getestet.
� Falls alle Tests erfolgreich durchlaufen, werden die vorgenommenen Änderungen an die nächste Stufe gegeben. Falls die Tests scheitern, werden die Änderungen zurückgenommen (Rollback) und dem Entwickler(-team) zur Korrektur vorgelegt.
ITQ GmbH 18
Modularisierte Systemarchitektur
� Schichtung von Subsystemen
� Entkopplung von Modulen
� Stabile Schnittstellen
Hochgradig automatisierte Buildumgebung
� 1-Click Release möglich
� Schnelles Feedback
� Vorteil: Entwickler haben Zeit für „Programmieren“
� Vorteil: Reproduzierbarkeit der Ergebnisse
Einheitliche Arbeitsweise, einheitlicher Prozess
� Kleine Schritte statt große Würfe
� Abstimmen der Schnittstellen
� Test-First (Ein guter Tester ist ein guter Programmierer, aber…)
Voraussetzungen für Continuous Integration
ITQ GmbH 19
Der Weg zu Continuous Integration – Phase 1-3
ITQ GmbH 20
Der Weg zu Continuous Integration– Phase 4
Softwareleitstand
ITQ GmbH 21
Was ist ein Softwareleitstand?
Begriffsdefinition:� „Ein Leitstand ist eine technische Einrichtung (Leiteinrichtung), die
den Menschen bei der Leitung eines Prozesses unterstützt“
Ein Softwareleitstand ist ein „Armaturenbrett“ mit:� Instrumententräger (Framework, hier CruiseControl.Net)� Display� Daten-Management (Datenbank, Dateisystem)� Angeschlossenen Messsonden (Datenkolletoren)
Begriff wurde auf der „Informatik 2006“ für einem Vortrag geprägt:� „Softwareleitstände: Integrierte Werkzeuge zur
Softwarequalitätssicherung“
Analoge Begriffe:� Dashboard (engl. „Armaturenbrett“)� Cockpit
ITQ GmbH 22
Konfigurationsmanagement = Versionsmanagement
� Zentraler Server
� Jeder hat Zugriff auf aktuellen Code
Buildsystem (Nachts)
� Buildlaufzeiten vernachlässigbar
� Nightly-Build: Erstellung von Releases
� Compilieren auf allen Plattformen
� Dokumentationserstellung
� Installer
� Metriken erstellen (Lines of Code, Codecoverage)
Continuous Integration (Tagsüber)
� Buildlaufzeit so kurz wie möglich
� Schnelles Feedback bei Änderungen
� Unittests, Integrationstests, Oberflächentests
� Codetesttools (Lint, Flint, …)
Komponenten eines Softwareleitstands
ITQ GmbH 23
Wofür kann ein Softwareleitstand eingesetzt werden?
Übersichtliche Darstellung des Ist-Zustandes der Parameter wie in einem „Cockpit“
Visualisierung der Informationen für Beobachter
Überwachung von
� Quelltext
� Software-Architektur
� Programmierrichtlinien
� Projekt-Management
� Software-Betrieb
Überblick über erzeugte Versionen
Darstellung von Projekt-Trends, Projekt-Historie
Einbindung von Fehlerdatenbank
ITQ GmbH 24
Wie funktioniert ein Softwareleitstand?
ITQ GmbH 25
Was ist CruiseControl.Net?
In .Net implementiertes Framework, bestehend aus:� CruiseControl.Net Server (.Net Applikation/.Net Service)
� Webdashboard (ASP.Net Applikation)
� CCTray (.Net Applikation im Windows Systray)
Das Framework� Bestehend aus Kernkomponenen und mit ausgelieferten Plugins für
� Div. Sourcecodesysteme (VSS, SVN, CVS, PVCS, …)
� Buildtools (NAnt, MSBuild, Finalbuilder, …)
� Testtools (NUnit, NCover, …)
� Liegt im SourceCode vor
� Kann auf allen Ebenen durch Plugins erweitert werden
� Wird durch XML Dateien konfiguriert
Funktionsweise:� Kontaktiert periodisch ein SCC System
� Löst bei Änderungen im SCC System („Trigger“) Aktionen aus („Tasks“)
� Tasks können beliebige Executables sein
ITQ GmbH 26
Integration in den Entwicklungsablauf
Versioncontrol
Server
Buildsystem
Entwickler
Mailserver
Checkin/Get Source
Softwarebuilds
Unittests
Codecoverage
Softwaremetrics
Setuppackages
Checkin/Get Source
Send resultats
CCTray
Get resultats/Trigger build
ITQ GmbH 27
Exemplarisches System - Systemaufbau
VMWare Server
Buildimage
Entwickler
SCC (SVN)
Softwarebuilds
Unittests
Codecoverage
Softwaremetrics
Messaging
NCover
NUnit SourceMonitorVisualBuild
Checkin/Get Source
Get Status/Trigger Build
E-MailserverCruiseControl.Net
Checkin/Get Source
ITQ GmbH 28
Beispiel: CruiseControl.NET Dashboard
ITQ GmbH 29
Beispiel: Fehler
Demonstrator
ITQ GmbH 31
Visual Build
Script
Übersicht Aufbau mit VisualStudio
SubversionSVN
VisualStudio
nUnit
Tests
Calculator
Prüfling
CruiseControl.NET
einchecken
auschecken
ausc
heck
en
nUnit
Tests
Calculator
Prüfling
übersetzen
Tests ausführen
WebdashboardErgebnis
Steuerung
CC Tray
ITQ GmbH 32
Step7
Simulation
Übersicht Aufbau mit Step7
SubversionSVN
Step7
EntwicklungCalculator
Prüfling (Quellen)
CruiseControl.NET
einchecken
auschecken
ausc
heck
en
VisualBuild
Script
Calculator
Prüfling
Einbinden/übersetzen
Tests ausführen
WebdashboardErgebnis
Steuerung
CC Tray
Erfahrungen und Zusammenfassung
ITQ GmbH 34
Erfahrungen aus der Praxis
Zu viele Tools im CC verschlechtern Feedbackzeit� Aufteilen auf 2 CCs
� Schnelles CC: Build und Test� Feedback über Dashboard oder CCTray
� Langsames CC: Build aller Konfigurationen, CodeCoverage, Lint, Doxygen� Feedback per E-Mail wie bei DailyBuild
Langsame Maschine verzögert Feedback
Coverage ist nötig, da Entwickler Code auskommentieren
Entwickler findet schnell gefallen an Übersicht� Erster Blick am morgen auf Dashboard
Automatisiertes System erfordert Pflege
Daily-Build gerät leicht in Vergessenheit
Bei vielen gleichzeitigen Änderungen oft schwer täglich Release bauen zu können: Prozess muß stimmen
ITQ GmbH 35
Vorteile für Entwickler / Projektleiter
Schneller Überblick über alle Module des Projekts� Kann ich gerade neu auschecken?� Kann ich eine Release bauen?
Schnelles Feedback auf eingebrachte Änderungen� Funktionieren meine Modul-Tests mit meiner letzten Änderung� Auf welche weiteren Module haben sich meine letzten Änderungen
ausgewirkt?
Transparenz über die Zeit� Welche Module ändern sich oft?� Metriken der Module als Abfallprodukt (LoC, Coverage, Anzahl
Testfälle)
Status des Projektes� Wie weit ist der Fertigstellungsgrad meines Projektes?� Welche Qualität hat meine Software jetzt?
ITQ GmbH 36
Kontaktdaten
Dr. Bernhard Kausler
Mail: [email protected]
ITQ GmbH
Parkring
85748 Garching b. München
Tel.: 089/ 32 19 81 – 70
Fax.: 089/ 32 19 81 – 89
Web: www.itq.de