Ein Algorithmus ist eine Rechenvorschrift, die beispielsweise in Software umzusetzen ist. Vielen Medizinprodukteherstellern ist unklar, ob solch ein Algorithmus als Teil der Stakeholder-Anforderungen, in der Software-Anforderung oder in der Software-Architektur zu spezifizieren ist. Kein Wunder, denn die Sache ist gar nicht ganz so einfach.
Angenommen Sie als Hersteller bekommen die Aufgabe von einem Kunden, einen Algorithmus zu implementieren, wie er beispielsweise in einer wissenschaftlichen Publikation beschrieben ist. Gleich in mehreren Dokumente Ihrer technischen Dokumentation muss das seinen Niederschlag finden.
Algorithmus als Teil der Stakeholder-Anforderungen
Ein Algorithmus kann Teil Ihrer Stakeholder-Anforderungen sein. Beispielsweise wenn eine Dosisberechnung gemäß einer Formel erfolgen, dann beschreibt diese Formel das Arbeitsergebnis. Sie ist somit eine sogenannte fachliche Anforderung. Fachliche Anforderungen sind neben den Nutzungsanforderungen ein weiterer Vertreter der Stakeholder-Anforderungen.
Algorithmen als Teil der Software-Anforderungen
Beim Beispiel der Dosisberechnung beschreibt die Formel auch gleichzeitig die nach außen (UI) sichtbare Reaktion (in Form der Anzeige der Dosis) auf die Aktion der Benutzer (Eingabe von Parametern wie Patientengewicht). Solch eine Blackbox-Beschreibung ist eine System- bzw. Software-Anforderung.
Es besteht keine Notwendigkeit, den Algorithmus in den Software-Anforderungen erneut zu beschreiben. Vielmehr würde man die entsprechende Stakeholder-Anforderung referenzieren.
Algorithmus als Teil der Software-Architektur
Es kann auch vorkommen, dass ein Algorithmus erst im Rahmen der Software-Architektur als Vorgabe für die Programmierer entwickelt wird. Auch hierzu ein Beispiel:
Wenn eine zurückgelegte Strecke als zeitliches Integral über die Geschwindigkeit v(t) berechnet und angezeigt werden muss, so wäre das eine Software-Anforderung. Die Art und Weise jedoch, mit der dieses Integral berechnet wird (z.B. numerisch versus algorithmisch) wäre eine Entscheidung, die der Software-Architekt trifft, in dem er berücksichtigt:
- Performanzanforderung
- Zur Verfügung stehende Hardware
- Einsatz von Bibliotheken (SOUPs)
In diesem Fall wäre der Algorithmus aufgeteilt worden in einen fachlichen Teil und einen technischen.