philipp schröter fachbereich für informatik · ubuntu testsystem windows 7 testsystem os x...
TRANSCRIPT
Philipp Schröter
Fachbereich für Informatik
Continuous Integration im medizinischen Bereich, 14.03.2013
Continuous Integration im
medizinischen Bereich
Ein praktisches Beispiel
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
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
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
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
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
7 Continuous Integration im medizinischen Bereich, 14.03.2013
Relevanz im medizinischen Bereich
• Medizinproduktgesetz
• hohes Qualitätsmanagement notwendig
• eher große Projekte
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
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)
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
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
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
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
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
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
16 Continuous Integration im medizinischen Bereich, 14.03.2013
openOR Build System
• in CMake entwickelt
• Abhängigkeiten ermitteln und auflösen
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
18
openOR Testsystem
Continuous Integration im medizinischen Bereich, 14.03.2013
Test konzipieren
Test schreiben
Test einbinden
Test durchführen
Ergebnisse auswerten
19
openOR Testsystem
Continuous Integration im medizinischen Bereich, 14.03.2013
Test Suiten
- Besteht aus Test Targets
20
openOR Testsystem
Continuous Integration im medizinischen Bereich, 14.03.2013
Test Suiten
- Besteht aus Test Targets
Test Targets
- Bestehen aus Test Cases
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
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
23
openOR Testsystem
Continuous Integration im medizinischen Bereich, 14.03.2013
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
25 Continuous Integration im medizinischen Bereich, 14.03.2013
Ergebnisse
● Anfangs oft rote Punkte
● Verbesserung über die Zeit
● weniger Kompatibilitätsprobleme
● Insbesondere bei Linux
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
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
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
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
30
Snapshot: Build Tool Chain
Continuous Integration im medizinischen Bereich, 14.03.2013
Fetch
• SVN
Configure
• CMake
Build
• (N)Make
Test
• (N)Make
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
32
Vielen Dank für Ihre Aufmerksamkeit
Continuous Integration im medizinischen Bereich, 14.03.2013
Bild
qu
elle
: Ch
arit
é
33
Fragen?
Continuous Integration im medizinischen Bereich, 14.03.2013
34
Diskussion
Continuous Integration bietet hohen Mehrwert. Tatsächlich?
Continuous Integration im medizinischen Bereich, 14.03.2013
35
Quellen
Continuous Integration
• Martin Fowler: http://www.martinfowler.com/articles/continuousIntegration.html
Continuous Integration im medizinischen Bereich, 14.03.2013
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