Medizinprodukt 1.0 Lehren aus der Neuentwicklung von Medizinprodukte-Software Matthias Hölzer-Klüpfel
Medizinprodukt 4.2 Weiterentwicklung bestehender Produkte Funktionserweiterungen Fehlerkorrekturen Anpassungen
Entwicklungsprojekt 4.2 so wie wir es schon immer gemacht haben Bestehendes Team Feststehende Prozesse Eingeführte Werkzeuge Bekannte Technologien Absehbarer Projektverlauf allerdings: es muss noch schneller gehen!
Medizinprodukt 1.0 Entwicklung eines innovativen Medizinprodukts in einem Startup-Unternehmen bis zur CE-Kennzeichnung
Entwicklungsprojekt 1.0 wie macht man so etwas eigentlich? Team wird aufgebaut Prozesse werden definiert Werkzeuge werden ausgewählt Technologien werden erforscht Explorativer Projektverlauf auch hier: es muss noch schneller gehen!
Teamaufbau
Strategie kurzfristig extern Ziel: Software und Kompetenz aufbauen mittelfristig intern Dienstleister einsetzen Software entwickeln Software testen Team aufbauen Team qualifizieren Prozesse etablieren CE Transfer Projektunterstützung Transfer Weiterentwicklung
Planänderung kurzfristig extern Ziel: Software und Kompetenz aufbauen mittelfristig intern Dienstleister einsetzen Software entwickeln Team aufbauen Team qualifizieren Prozesse etablieren Projektunterstützung Software entwickeln Software testen CE
Lehren zum Teamaufbau Lassen Sie externe Dienstleister nicht unbeaufsichtigt! Bauen Sie so schnell wie möglich eigenes Know- How über Software auf! Nehmen Sie sich die Zeit, die richtigen Mitarbeiter zu finden! Arbeiten Sie so früh wie möglich mit, übernehmen sie keine fertigen Ergebnisse Capability geht vor Capacity!
Explorativer Projektverlauf
Projektverlauf (ideal) Kundenbedürfnisse Validierung Systemanforderungen Systemtest Architektur Integrationstest Design Integration Implementierung
Reifestadien der Firmware Prototyp Engineering Produktiv Testsoftware
Funktionale Anforderungen Produktiv-Software Engineering-Software Selbsttests Alarme Sicherheitsfunktionen Datenaufzeichnungen Manipulation von Sensoren Konfigurationsmöglichkeiten Gerätesteuerung Natives User-Interface ferngesteuertes User-Interface Deaktivierung von: Selbsttests Alarmen Sicherheitsfunktionen Test-Software
Problem: Entwicklungsgeschwindigkeit Der typische Effekt mit jedem Prototypen: Engineering-Software kann quick & dirty sein Produktivsoftware muss prozesskonform sein Engineering-Software ist einfacher einsetzbar Produktivsoftware gerät ins Hintertreffen
Lösungsansatz Integration der Engineering -Funktionen und der Testfunktionalität in die Produktivsoftware Passives Logging über einen Debug-Port Konditionale Kompilierung für Alarme Skip-States für Selbsttests Essentiell: Konfigurationsmanagement, damit diese Funktionen nicht produktiv genutzt werden können
Lehren zum Projektverlauf Unterschiedliche Entwicklungsphasen benötigen unterschiedliche Funktionalität Auch spät im Entwicklungsprozess muss noch experimentiert werden Parallele Softwareversionen hindern den Fortschritt: werfen Sie Prototypen rechtzeitig weg! Versuchen Sie die Funktionen für Test und Entwicklung möglichst nahe an der Produktivsoftware zu halten
Entwicklungsprozess
Ausgangspunkt (extern)
Software-Qualitätssicherung Confidence, Design-zentriert Statische Codeanalyse Systematische Code-Reviews Automatisierte Unit-Tests Evidence, Requirements-zentriert Software-Systemtests
Manueller Software-Systemtest Input-Simulation: Widerstandsdekaden Simulationssoftware Teile der Hardware Datenerfassung: Logic-Analyser Serieller Logger
Problematik Hohe Fehleranfälligkeit Software-Modifikationen notwendig Manuelle Auswertung unsicher Schwer nachprüfbar Aufwand: 18 Personenmonate!
Systemarchitektur User Interface Supervisor Controller Hardware
System-under-Test User Interface Supervisor Controller Hardware
Testsystem IO-Simulator Supervisor Controller Testtreiber IO-Simulator
Testausführung ca. 400 Testskripte Abdeckung der Software-Requirements: >90% ca. 100 Stunden Laufzeit 6 Teststände (4 produktiv) Testdurchlaufzeit: 2 Tage
Beobachtungen bei Testautomatisierung Fehler sind sehr viel einfacher zu reproduzieren Phantomfehler sind sehr selten gewesen die Arbeit wurde spannender, wenn die Software- Entwicklung eingeholt wurde Der Zeitaufwand hat sich schon vor der formalen Testphase gelohnt Der Test wurde zum Treiber der iterativen Entwicklung
Software-Qualitätssicherung Confidence, Design-zentriert Statische Codeanalyse Systematische Code-Reviews Automatisierte Unit-Tests Automatisierte Software-Systemtests Evidence, Requirements-zentriert Automatisierte Software-Systemtests
Lehren zum Entwicklungsprozess Fokussieren Sie frühzeitig auf die Qualitätssicherung! Automatisieren Sie Tests so bald wie möglich! Arbeiten Sie in kurzen Iterationen! Nutzen Sie die Tests schon während der Entwicklung
Kontakt MATTHIAS HÖLZER-KLÜPFEL DIPLOM-PHYSIKER, M.SC. post Zweite Felsengasse 5 97082 Würzburg tel +49 931 32072-821 fax +49 931 32072-819 mobil +49 176 6085 7994 mail web matthias@hoelzer-kluepfel.de www.hoelzer-kluepfel.de