Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der...

37
Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

Transcript of Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der...

Page 1: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

Testgetriebene Softwareentwicklung in der Automatisierungstechnik:Der Continuous-Integration-Ansatz

Dr. Bernhard Kausler

09.06.2011

Page 2: Testgetriebene Softwareentwicklung in der ......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

Page 3: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

ITQ GmbH 2

Erfahrungen

Anlagenbau Sondermaschinenbau Serienmaschinen

Mechatronische

Komponenten & GeräteMobile Systeme

Anspruchsvolle

Software Systeme

Page 4: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 5: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

ITQ GmbH 4

Projekt Limoweb – Halle 7/Stand 630

Page 6: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

ITQ GmbH 5

Highspeed Dartscheibe

Dartscheibe folgt dem Pfeil, um Bulls-Eye zu treffen

Page 7: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

ITQ GmbH 6

Stiftung: Technik macht Spaß!

Page 8: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

Motivation

Page 9: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 10: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 11: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 12: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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“

Page 13: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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“

Page 14: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 15: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

Continuous Integration als Bestandteilagiler Softwareentwicklung

Page 16: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 17: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

ITQ GmbH 16

Agile Software-Entwicklung – Prozess (OpenUP)

Quelle: http://epf.eclipse.org/wikis/openup/index.htm

Page 18: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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.

Page 19: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 20: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

ITQ GmbH 19

Der Weg zu Continuous Integration – Phase 1-3

Page 21: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

ITQ GmbH 20

Der Weg zu Continuous Integration– Phase 4

Softwareleitstand

Page 22: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 23: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 24: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 25: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

ITQ GmbH 24

Wie funktioniert ein Softwareleitstand?

Page 26: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 27: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 28: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 29: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

ITQ GmbH 28

Beispiel: CruiseControl.NET Dashboard

Page 30: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

ITQ GmbH 29

Beispiel: Fehler

Page 31: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

Demonstrator

Page 32: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 33: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 34: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

Erfahrungen und Zusammenfassung

Page 35: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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

Page 36: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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?

Page 37: Testgetriebene Softwareentwicklung in der ......Testgetriebene Softwareentwicklung in der Automatisierungstechnik: Der Continuous-Integration-Ansatz Dr. Bernhard Kausler 09.06.2011

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