Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X...

36
Philipp Schröter Fachbereich für Informatik Continuous Integration im medizinischen Bereich, 14.03.2013 Continuous Integration im medizinischen Bereich Ein praktisches Beispiel

Transcript of Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X...

Page 1: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

Philipp Schröter

Fachbereich für Informatik

Continuous Integration im medizinischen Bereich, 14.03.2013

Continuous Integration im

medizinischen Bereich

Ein praktisches Beispiel

Page 2: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

2

Gliederung

1. Einleitung

2. Relevanz im medizinischen Bereich

3. Continuous Integration

4. Continuous Integration System des BZMM

5. openOR Buildsystem

6. openOR Testsystem

7. Ergebnisse

8. Snapshot: Build Tool Chain

Continuous Integration im medizinischen Bereich, 14.03.2013

Page 3: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

3 Continuous Integration im medizinischen Bereich, 14.03.2013

Gliederung

1. Einleitung

2. Relevanz im medizinischen Bereich

3. Continuous Integration

4. Continuous Integration System des BZMM

5. openOR Buildsystem

6. openOR Testsystem

7. Ergebnisse

8. Snapshot: Build Tool Chain

Page 4: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

4 Continuous Integration im medizinischen Bereich, 14.03.2013

Einleitung

• große Projekte ohne Software Engineering Praktiken kaum möglich

• Beispiel: Continuous Integration

• Einführung im BZMM

• Einblick gewähren durch Vortrag

Page 5: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

5 Continuous Integration im medizinischen Bereich, 14.03.2013

BZMM

• Berliner Zentrum für Mechatronische Medizintechnik

• Kooperation aus Frauenhofer und Charite

• Leitung: Prof. Dr.-Ing Erwin Keeve

• Arbeitsbereiche:

• Intraoperative Bildgebung

• Bildgesteuerte Navigation

• Chirurgische Instrumente

Bild

qu

elle

: bzm

m.c

har

ite.

de

Page 6: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

6 Continuous Integration im medizinischen Bereich, 14.03.2013

Gliederung

1. Einleitung

2. Relevanz im medizinischen Bereich

3. Continuous Integration

4. Continuous Integration System des BZMM

5. openOR Buildsystem

6. openOR Testsystem

7. Ergebnisse

8. Snapshot: Build Tool Chain

Page 7: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

7 Continuous Integration im medizinischen Bereich, 14.03.2013

Relevanz im medizinischen Bereich

• Medizinproduktgesetz

• hohes Qualitätsmanagement notwendig

• eher große Projekte

Page 8: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

8 Continuous Integration im medizinischen Bereich, 14.03.2013

Gliederung

1. Einleitung

2. Relevanz im medizinischen Bereich

3. Continuous Integration

4. Continuous Integration System des BZMM

5. openOR Buildsystem

6. openOR Testsystem

7. Ergebnisse

8. Snapshot: Build Tool Chain

Page 9: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

9 Continuous Integration im medizinischen Bereich, 14.03.2013

Continuous Integration

● Praxis aus der Softwareentwicklung

● Idee: Häufige “Integration“ des Codes in das Repository (daher der Name)

Page 10: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

10 Continuous Integration im medizinischen Bereich, 14.03.2013

Continuous Integration

Practices:

● Single repository

● Automatic build

● Self-testing build

● Everyday everyone commits to mainline

● Every commit has to be build on the integration machine

● Fast Build

● Test environment = clone of producton environment

● Easy accessible executable

● Public result

● Automatic Deployment

Page 11: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

11 Continuous Integration im medizinischen Bereich, 14.03.2013

Gliederung

1. Einleitung

2. Relevanz im medizinischen Bereich

3. Continuous Integration

4. Continuous Integration System des BZMM

5. openOR Buildsystem

6. openOR Testsystem

7. Ergebnisse

8. Snapshot: Build Tool Chain

Page 12: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

12 Continuous Integration im medizinischen Bereich, 14.03.2013

Continuous Integration System des BZMM

Xen Hypervisor

Ubuntu Server

Ubuntu Testsystem

Windows 7 Testsystem

OS X Testsystem

Redmine

Page 13: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

13 Continuous Integration im medizinischen Bereich, 14.03.2013

Continuous Integration System des BZMM

Software wird geändert

Einchecken in Redmine

Repository

Jenkins wird getriggert

Code aus Repository

laden

Bauen und Testen

Ergebnisse zurückgeben

Bild

qu

elle

: Wik

emed

ia

Page 14: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

14 Continuous Integration im medizinischen Bereich, 14.03.2013

Gliederung

1. Einleitung

2. Relevanz im medizinischen Bereich

3. Continuous Integration

4. Continuous Integration System des BZMM

5. openOR Buildsystem

6. openOR Testsystem

7. Ergebnisse

8. Snapshot: Build Tool Chain

Page 15: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

15 Continuous Integration im medizinischen Bereich, 14.03.2013

openOR

• plattformunabhängiges, modulares Framework für medizinische Anwendungen

• einfache Benutz- und Erweiterbarkeit

Bild

qu

elle

: bzm

m.c

har

ite.

de

Page 16: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

16 Continuous Integration im medizinischen Bereich, 14.03.2013

openOR Build System

• in CMake entwickelt

• Abhängigkeiten ermitteln und auflösen

Page 17: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

17 Continuous Integration im medizinischen Bereich, 14.03.2013

Gliederung

1. Einleitung

2. Relevanz im medizinischen Bereich

3. Continuous Integration

4. Continuous Integration System des BZMM

5. openOR Buildsystem

6. openOR Testsystem

7. Ergebnisse

8. Snapshot: Build Tool Chain

Page 18: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

18

openOR Testsystem

Continuous Integration im medizinischen Bereich, 14.03.2013

Test konzipieren

Test schreiben

Test einbinden

Test durchführen

Ergebnisse auswerten

Page 19: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

19

openOR Testsystem

Continuous Integration im medizinischen Bereich, 14.03.2013

Test Suiten

- Besteht aus Test Targets

Page 20: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

20

openOR Testsystem

Continuous Integration im medizinischen Bereich, 14.03.2013

Test Suiten

- Besteht aus Test Targets

Test Targets

- Bestehen aus Test Cases

Page 21: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

21

openOR Testsystem

Continuous Integration im medizinischen Bereich, 14.03.2013

Test Suiten

- Besteht aus Test Targets

Test Targets

- Bestehen aus Test Cases

Test Cases

- Bestehen aus Tests

- Bindet Tests ein

Page 22: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

22

openOR Testsystem

Continuous Integration im medizinischen Bereich, 14.03.2013

Test Suiten

- Besteht aus Test Targets

Test Targets

- Bestehen aus Test Cases

Test Cases

- Bestehen aus Tests

- Bindet Tests ein

Tests

- Eigentlicher Testcode

Page 23: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

23

openOR Testsystem

Continuous Integration im medizinischen Bereich, 14.03.2013

Page 24: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

24 Continuous Integration im medizinischen Bereich, 14.03.2013

Gliederung

1. Einleitung

2. Relevanz im medizinischen Bereich

3. Continuous Integration

4. Continuous Integration System des BZMM

5. openOR Buildsystem

6. openOR Testsystem

7. Ergebnisse

8. Snapshot: Build Tool Chain

Page 25: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

25 Continuous Integration im medizinischen Bereich, 14.03.2013

Ergebnisse

● Anfangs oft rote Punkte

● Verbesserung über die Zeit

● weniger Kompatibilitätsprobleme

● Insbesondere bei Linux

Page 26: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

26 Continuous Integration im medizinischen Bereich, 14.03.2013

Gliederung

1. Einleitung

2. Relevanz im medizinischen Bereich

3. Continuous Integration

4. Continuous Integration System des BZMM

5. openOR Buildsystem

6. openOR Testsystem

7. Ergebnisse

8. Snapshot: Build Tool Chain

Page 27: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

27 Continuous Integration im medizinischen Bereich, 14.03.2013

Snapshot: Build Tool Chain

● Aktuelles Projekt in der Implementierung

● Koordiniert Buildprozess

➔ Momentan durch Buildskripte für jedes Betriebssystem separat

● Vereinheitlichung der Tools

➔ Java -> Jenkins und Maven

➔ C++ ?

➔ Änderungen momentan teuer und uneinheitlich

➔ Zugriff über Konfigurationsdateien und durch Übergabe von Parametern

➔ Konfigurationsdateien über SVN Repository abruf- und veränderbar

Page 28: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

28

Snapshot: Build Tool Chain

Build Tool Chain

(Tool)

Fetch Tool

Configuration Tool

Build Tool

Test Tool

Config

Environment

Continuous Integration im medizinischen Bereich, 14.03.2013

Page 29: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

29

Snapshot: Build Tool Chain

Continuous Integration im medizinischen Bereich, 14.03.2013

Build Tool Chain

•Registriert eigene Optionen (Tools, andere Informationen)

•Sucht in Argumenten nach Konfigurationsdatei

•Fügt Tools hinzu (aus Konfigurationsdatei oder Argumenten; Argument > Konfigurationsdatei)

Tool

•Registriert eigene Optionen

Build Tool Chain

•Prüft Argumente und Inhalt der Konfigurationsdatei (durch Config)

•Ruft Tools auf

Tool

•Führt Operationen durch

Output Manager

•Sammelt Output der Tools

•Erstellt Übersicht

Page 30: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

30

Snapshot: Build Tool Chain

Continuous Integration im medizinischen Bereich, 14.03.2013

Fetch

• SVN

Configure

• CMake

Build

• (N)Make

Test

• (N)Make

Page 31: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

31 Continuous Integration im medizinischen Bereich, 14.03.2013

Snapshot: Build Tool Chain

Das geht bisher

➔ Code auschecken, Konfigurieren, Buildprozess und Tests durchführen

➔ Optionen durch Konfigurationsdatei und Argumente übergeben

Das geht bisher noch nicht

➔ Module (generisch) aufrufen

Das ist geplant

➔ Build- und Testergebnisse geordnet zurückgeben und in Redmine einbinden

Page 32: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

32

Vielen Dank für Ihre Aufmerksamkeit

Continuous Integration im medizinischen Bereich, 14.03.2013

Bild

qu

elle

: Ch

arit

é

Page 33: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

33

Fragen?

Continuous Integration im medizinischen Bereich, 14.03.2013

Page 34: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

34

Diskussion

Continuous Integration bietet hohen Mehrwert. Tatsächlich?

Continuous Integration im medizinischen Bereich, 14.03.2013

Page 35: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

35

Quellen

Continuous Integration

• Martin Fowler: http://www.martinfowler.com/articles/continuousIntegration.html

Continuous Integration im medizinischen Bereich, 14.03.2013

Page 36: Philipp Schröter Fachbereich für Informatik · Ubuntu Testsystem Windows 7 Testsystem OS X Testsystem Redmine . Continuous Integration im medizinischen Bereich, 14.03.2013 13 Continuous

36

Quellen

Bilder:

• http://bzmm.charite.de/typo3temp/pics/756b3e253a.jpg

• http://bzmm.charite.de/typo3temp/pics/921eb6b341.jpg

• http://bzmm.charite.de/fileadmin/user_upload/microsites/ohne_AZ/m_cc09/bzmm/

bilder/Kooperationen/scopis/SCOPIS_System_middle.jpg

• http://bzmm.charite.de/typo3temp/pics/6dddb7d00d.jpg

• http://bzmm.charite.de/fileadmin/user_upload/microsites/ohne_AZ/m_cc09/bzmm/l

ogos/fraunhofer_logo.jpg

• https://upload.wikimedia.org/wikipedia/commons/e/e3/Jenkins_logo_with_title.svg

• https://upload.wikimedia.org/wikipedia/en/7/79/Subversion.png

• https://upload.wikimedia.org/wikipedia/commons/3/3f/Redmine_logo.svg

Continuous Integration im medizinischen Bereich, 14.03.2013