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

Post on 17-Oct-2020

1 views 0 download

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

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