# Measurement (Analysemuster)

Measurement (englisch für Messung) ist ein Analysemuster aus der Softwaretechnik zur Modellierung von quantitativen Messungen für ein Objekt. Das Muster wurde von Martin Fowler in einem Projekt des National Health Service zur Modellierung des Gesundheitswesens entwickelt und erstmals 1996 in seinem Buch Analysis Patterns beschrieben.

## Problem

Bei der Abbildung von Informationen zu Objekten der realen Welt ergeben sich in der objektorientierten Softwaretechnik grundsätzlich zwei unterschiedliche Möglichkeiten. Einerseits kann die Information als Attribut in Form eines einfachen Datentyps gespeichert werden, andererseits kann sie auch als Assoziation in Form eines referenzierten Objekts abgelegt sein.
Die Abbildung von Werten wird in vielen Softwaresystemen unter Annahme einer bestimmten Einheit vorgenommen, z. B. die Körpergröße als Integer mit dem Wert 185. Korrekt interpretiert ist die Person 185 cm, also 1,85 m groß. Werden später Anpassungen an dem System vorgenommen, ggf. in einem Land wie den USA, das den Definitionen des internationalen Einheitensystems nicht folgt, kann es zu sematischen Fehlinterpretationen kommen. Weiterhin sind Umwandlungen von Zentimeter in Meter nicht an zentraler Stelle beschrieben und somit von Hilfsmethoden des Objekts zu implementieren.
Martin Fowler entwickelte unter diesem Hintergrund das Quantity-Muster. Die zusammengehörige Abbildung von Wert und Einheit des Musters schafft semantische Klarheit und löst viele Probleme der Interpretation, wie auch der Umwandlung von Werten. Fallen zu einem Objekt jedoch mehrere Messungen an, wäre unter Verwendung von Quantity mehrere Attribute in dem Objekt in Form von Referenzen zu erstellen, die die jeweilige Klasse unnötig aufblähen würden. Auch ist eine Abbildung von messungsspezifischen Daten nicht ohne Erweiterung des Modells möglich.

## Kontext

In einem Projekt des National Health Service war Fowler in ein Projektteam aus Ärzten, Krankenschwestern und -pflegern und Analysten eingebunden und mit der Aufgabe betraut, ein System zur Abbildung des Gesundheitswesens aus klinischer Perspektive zu erstellen. Seine Betrachtungen und Beispiele haben daher ihren Ursprung in medizinischen Messungen, die jedoch zu allgemeineren Lösungen entwickelt wurden (vgl. Motivation von Mustern).
Die Beobachtung, dass zu einem Objekt in bestimmten Umgebungen sehr viele Messungen anfallen und abgebildet werden sollen, veranlasste Fowler schließlich zur Entwicklung des Analysemusters Measurement. In seinem Beispielsfall ist das Objekt ein Patient, an dem unterschiedliche Messungen vorgenommen werden.

## Kräfte

Fowler führt in seinem Buch Analysis Patterns über die Entwicklung der Muster Quantity, Conversion Ratio, Compound Units schließlich das Muster Measurement ein. In der Beschreibung beinhaltet ist die Einführung des Musters Knowledge Level sowie der musterähnlichen Struktur Phenomenon Type. In weiteren Abschnitten wird das Measurement-Muster ergänzt und in Form des Observation-Musters weiter auf qualitative Informationen weiterentwickelt.

## Lösung

Zu einem Objekt (Klasse Person) wird eine Referenz auf Objekte der Klasse Measurement definiert. Die Objekte der Klasse Measurement bilden die einzelnen Messungen durch ein Objekt der Klasse Quantity ab und ergänzen diese durch messungsspezifische Informationen. Weiterhin wird für jedes Objekt der Klasse Measurement ein Objekt der Klasse Phenomenon Type referenziert, dass die Messung typisiert.
Die Untergliederung in Knowledge Level und Operational Level wird der Natur der erfassten Daten gerecht. Objekte des Knowledge Level ändern sich seltener als Objekte des Operational Level. Der Knowledge Level beschreibt gewissermaßen das Verhalten von Objekten.

## Beispiel

Ein Patient ist als Person abgebildet. Für diesen Patienten wurden mehrere Messungen der Herzfrequenz und des Blutdrucks vorgenommen und im System erfasst:
| Datum | Messgröße | Wert | Einheit | Besonderheit |
| 1. Januar | Herzfrequenz | 80 | Schläge pro Minute | keine |
| 1. Januar | Blutdruck | 105 | Millimeter Quecksilbersäule | keine |
| 2. Januar | Herzfrequenz | 85 | Schläge pro Minute | Eigenmessung |
| 2. Januar | Blutdruck | 110 | Millimeter Quecksilbersäule | Eigenmessung |
| 3. Januar | Herzfrequenz | 75 | Schläge pro Minute | keine |
| 3. Januar | Blutdruck | 103 | Millimeter Quecksilbersäule | keine |
Hieraus entstehen ein Personenobjekt, das sechs Measurement Objekte referenziert. Diese referenzieren entweder das Objekt Blutdruck oder Herzfrequenz des Phenomenon Type und ein Objekt Schläge pro Minute oder Millimeter Quecksilbersäule von Quantity (vgl. auch Compound Units). Die Measurementobjekte tragen weiterhin die Besonderheit als Attribut, dass die Messungen am 2. Januar durch den Patienten selbst erfolgten.