Diese Webapplikation ist im Rahmen meiner Masterarbeit (WS 2015/16, SoSe 2016) zum Master of Education (Gymnasium, Mathematik und Physik) an der Carl von Ossietzky Universität Oldenburg, im Fach Physik, und in Kooperation mit dem Institut für Didaktik der Physik an der Universität Westfälische Wilhelms-Universität Münster enstanden.
Das Thema der Masterarbeit lautet: Entwicklung einer offline- und onlinebasierten Webapplikation für den Desktopbereich zum Umgang mit Messdaten nach dem GUM-Standard - Messdatenanalyse im modernen Gewand für den schulischen und universitären Einsatz in den MINT-Fächern.
Diese WebApp ist mit unendlicher Liebe und viel Engagement entstanden. Die Entwicklung dieser ist noch längst nicht abgeschlossen und soll in Zukunft weitergeführt werden.
Im Zuge der Recherche nach einer optimalen Lösung (keine Kosten, geringer Aufwand hinsichtlich der Installation (plattform- bzw. betriebssystemunabhängig), Anwendbarkeit und Verfügbarkeit (schneller und unkomplizierter Zugriff auf die Dateien bzw. Dokumente (WebApp))), habe ich mich für eine für die Userin bzw. den User optimale (Software-) Lösung entschieden: Die/Der Userin/User soll ohne Kosten, Installation und großen Aufwand, die Messunsicherheitsanalyse durchführen können.
Und daraus ist dann eine (Web-) Anwendung entstanden, welche von der Userin bzw. dem User - egal, ob offline- oder onlinebasiert - als eine Webseite wahrgenommen wird. Streng genommen handelt es sich auch um eine Webseite. Daher müssten die meisten Anwender bereits Kenntnisse über den Umgang mit dieser besitzen.
Als Entwicklungstechnologie zur Webentwicklung kommen die aktuellen Webtechnologien zum Einsatz: Für die Gestaltung der (Benutzer-) Oberflächen (Web-Seite) werden die Auszeichnungssprache HTML für die Struktur einerseits und die Beschreibungssprache CSS zur Formatierung bzw. für das Erscheinungsbild einer Web-Seite andererseits benutzt.
Für die Funktionalität (z. B. für die Interaktionen zwischen Mensch und Maschine, Kommunikation zwischen den HTML-Elementen, die Entwicklung aller Funktionen und Algorithmen, etc.) werden die Programmiersprache JavaScript und eine auf JavaScript basierende Sprache, jQuery, eingesetzt, wobei Letztere eher eine JavaScript-Bibliothek darstellt.
Nach dem Motto, dass das Rad nicht neu erfunden werden muss, wurden im Rahmen der WebApp-Entwicklung zahlreiche JavaScript-Bibliotheken und diverse CSS-Skripte benutzt, die den wesentlichen Teil der WebApp ausmachen. Diese werden u. a. für die Darstellung und Funktionalität der Webseiten (Bootstrap bzw. Bootswatch) oder die statistischen Berechnungen benötigt.
D.h. ohne diese wäre die WebApp hinsichtlich der Funktionalität und des Erscheinungsbildes sehr eingeschränkt bis überhaupt nicht nutzbar. Von dem Motto abgesehen ist es überhaupt nicht möglich, all diese Skripte (Quelletexte) allein zu schreiben - Zumal nicht nur die Zeit, sondern auch die fortgeschrittenen Programmierkenntnisse fehlen.
Im Folgenden werden die wesentlichen CSS-Skripte und JavaScript-Bibliotheken vorgestellt, welche die Bestandteile der WebApp sind (Alle erwähnten Lizenzen sind in der Navigationsleiste unter Wichtige Links verlinkt):
Designanpassung mit Bootswatch: Bootswatch ist ein vom Autor Thomas Park unter der MIT-Lizenz veröffentlichtes Projekt, das u. a. freie Designvorlagen - sogenannte Themes - für die Webseitenentwicklung zur Verfügung stellt. Designvorlagen bzw. Themes gehören z. B. zum Standardrepertoire eines Betriebssystems. Diese Themes sind CSS-Skripte und werden in der WebApp für das Design der Webseiten benutzt. Der große Vorteil dieser besteht darin, dass das Design unabhängig vom Inhalt und jederzeit geändert werden kann. Es ist möglich, das Design nach Belieben anzupassen. Es sind insgesamt 17 verschiedene Themes frei verfügbar und in der WebApp vorhanden. Bootswatch basiert auf Bootstrap. Für die WebApp wird die Version 3.3.6 benutzt.
Das Bootstrap-Framework: Bootstrap ist ein von den Autoren Mark Otto (@mdo) und Jacob Thornton (@fat) entworfenes und entwickeltes (CSS-) Framework basierend auf HTML, CSS und JavaScript (liefert HTML-Elemente, HTML- und CSS-Komponenten und jQuery-Plugins), das unter der MIT-Lizenz veröffentlicht wird. Dieses Framework wurde anfangs für die mobilen Geräte entwickelt und ist sehr anpassungsfähig (Webseiten werden den Geräten - Desktop-PCs, Smartphones oder Laptops - angepasst). Die JavaScript-Komponenten erweitern den Funktionsumfang (Popover, Modal (Dialogfenster)). Mithilfe einer (Markup- oder JavaScript-) API lassen sich sogenannte Plugins (z. B. Dropdown-Menü, Popover, Tab, Modal (Dialogfenster), usw.) verwenden bzw. einbinden. Um Bootstrap in einer Webseite zu verwenden, müssen die beiden Quelletexte für CSS und JavaScript in den Code integriert werden - d. h. in das HTML-Dokument eingebunden werden. Da die WebApp aber CSS-Designs von Bootswatch (CSS-Dateien) benutzt, muss lediglich die JavaScript-Datei geladen werden. Für die WebApp wird die Version 3.3.4 benutzt.
jQuery: jQuery ist eine frei verfügbare (Open-Source) JavaScript-Bibliothek, die viele Funktionen zur DOM-Manipulation und -Navigation (DOM: Document Object Model, eine Schnittstelle für den Zugriff auf die HTML-Struktur) besitzt und unter der MIT-Lizenz lizenziert ist. Bootstrap benötigt jQuery für alle Plugins. Deshalb muss jQuery ebenfalls in das HTML-Dokument eingebunden werden. Für die WebApp wird die Version 1.11.3 benutzt.
MathJax: MathJax wird vom The MathJax Consortium als eine frei verfügbare Software unter der Apache-Lizenz 2.0 veröffentlicht. MathJax ist eine JavaScript-Bibliothek, mit deren Hilfe mathematische Gleichungen bzw. Formeln und Symbole, welche z. B. mit LaTeX oder MathML geschrieben werden, browserübergreifend (unabhängig vom Browsertyp und Betriebssystem) auf Webseiten grafisch dargestellt werden. Für die WebApp wird die Version 2.4 benutzt.
Font Awesome: Font Awesome stellt eine frei verfügbare, gute und ausreichende Auswahl an Icons für die Webentwicklung zur Verfügung. Diese lassen sich sehr leicht in einer Webseite integrieren. Das Icon-Paket wird von Dave Gandy, was die Fonts angeht, unter der SIL OFL 1.1-Lizenz und was das CSS betrifft, unter der MIT-Lizenz veröffentlicht. Für die WebApp wird die Version 4.6.3 benutzt.
Math: Math ist eine umfangreiche und freie JavaScript-Bibliothek mit mathematischen Funktionen und wird von Jos de Jong unter der Apache-Lizenz 2.0 veröffentlicht. Mathematisch formale Ausdrücke (Formeln, Gleichung, etc.) können mit ihrer Hilfe analysiert und als diese erfasst und weiterverarbeitet werden. Somit kann z. B. eine Formel in ihre Bestandteile zerlegt werden: d. h. in Variablen, Konstanten, mathematische Funktionen (trigonometrische Funktionen, Exponentialfunktion, etc.) und Operatoren. Dieses Skript wird mitunter für die Erkennung der Variablen (bzw. Eingangs- und Ausgangsgrößen) und das Rechnen mit ihnen und ihnen zugeordneten Werten (mathematische Abbildung, Formel) verwendet. Math bietet Funktionen u. a. zur Arithmetik, Algebra, Analysis und linearen Algebra. Für die WebApp wird die Version 3.2.1 benutzt.
Random: Die freie (Open-Source) JavaScript-Random-Bibliothek wird von Maneesh Varshney basierend auf der JavaScript-Implementierung von Makoto Matsumoto und Takuji Nishimura zur Generierung von Zufallszahlen nach dem Mersenne Twister Algorithmus, unter der LGPL-Lizenz veröffentlicht. Diese Bibliothek wird benötigt, um Zufallszahlen zu generieren, welche nach einer bestimmten Verteilung verteilt sind (z. B. nach einer Dreiecksverteilung dreiecksverteilte Zufallszahlen). Dieses Skript wird für die Monte-Carlo-Simulation bzw. -Methode verwendet (Erklärung siehe unten). Für die WebApp wird die Version 2.7.0 benutzt.
Nerdamer: Nerdamer ist eine JavaScript-Bibliothek, die vom Autor Martin Donk als eine Open-Source-Bibliothek (MIT-Lizenz) veröffentlicht wird. Mit dieser sehr mächtigen und extrem nützlichen Bibliothek ist es möglich - wie auch mit der Math-Bibliothek -, mathematisch formale Ausdrücke (Formeln, Gleichung, etc.) zu analysieren, um auch mit ihnen zu rechnen. Die Hauptaufgabe dieser Bibliothek besteht darin, die partiellen Ableitungen zu bestimmen, um aus ihnen und den ihnen zugeordneten Werten, die Empfindlichkeitskoeffizienten zu bestimmen (Erklärung siehe unten). Für die WebApp wird die Version 0.5.0 benutzt.
jStat: jStat ist eine JavaScript-Bibliothek, mit Hilfe derer u. a. Statistik betrieben werden kann. Diese ist eine JavaScript-Implementierung aller bekannten statistischen Funktionen (Normal-, Gleich-, Weibull-, Cauchy-, Studentt-, Poissonverteilung, uvm.) - aber ebenfalls Funktionen aus der linearen Algebra. jStat bietet funktional nicht nur die Dichte-, sondern auch die Verteilungsfunktion der jeweiligen Verteilung und auch die Bestimmung derer statistischen Parameter (Erwartungswert, Standardabweichung, Quantile, etc.) bzw. inversen Funktionen. Das Skript wird von James C Gibson veröffentlicht. Für die WebApp wird die Version 1.5.2 benutzt.
Simple Statistics: Simple Statistics ist eine JavaScript-Bibliothek u. a. zur deskriptiven Statistik und zur linearen Regression. Sie wird für statistische Berechnungen und zur Darstellung statistischer Werte verwendet. So wie jStat auch, gehören statistische Standard-Funktionen (Verteilungen) zum Standardrepertoire von Simple Statistics. Das Skript wird von Tom MacWright 2014 unter der ISC-Lizenz veröffentlicht. Für die WebApp wird die Version 1.0.1 benutzt.
ExplorerCanvas: ExplorerCanvas wird von Google Inc unter der Apache-Lizenz 2.0 veröffentlicht. Dieses Skript wird benötigt, um das Canvas-Element im Internet Explorer zu implementieren, da dieser Browser kein Canvas-Element unterstützt. Diese Funktionalität wird mithilfe von ExplorerCanvas gewährleistet. Das Canvas-Element dient zur Definition eines Zeichenbereichs und basiert auf HTML5 (aktuellster HTML-Standard).
html5-canvas-drawing-app: William Malone ist der Entwickler der in JavaScript geschriebenen Zeichenanwendung (HTML5 Canvas Drawing App) für Webanwendungen. Die App ist frei verfügbar und wird unter der Apache-Lizenz 2.0 veröffentlicht. Für die WebApp speziell wurden ein paar Sätze Quellcode aus diesem Beitrag entnommen und für unsere Zwecke verwendet. Das daraus entstandene JavaScript-Dokument namens draw wird für eine ganz einfache Zeichenanwendung benötigt.
Für die Bestimmung der Standardmessunsicherheit bietet die WebApp zwei unterschiedliche Methoden an, wobei die nachfolgenden Schritte für beide Methoden gelten:
Entwicklung eines mathematischen Modells (Messmodell, Messfunktion, Modellgleichung): Hier wird die Ergebnisgröße festgelegt, welche von Eingangsgrößen abhängig ist.
Einordnung der Standardmessunsicherheit nach Art der Auswertung: Um die Standardmessunsicherheit - die durch die Standardabweichung ausgedrückt wird - einer Eingangsgröße zu ermitteln, gibt es zwei Typen von Auswertungen (diese werden im GUM genauso definiert): Typ A - die Auswertung einer Messreihe durch statistische Verfahren (Bildung des Arithmetischen Mittelwertes, der Standardabweichung, usw.) und Typ B - die Schätzung der Standardmessunsicherheit nicht durch statistische Verfahren, sondern durch die Annahme einer Verteilung (diese Methode beruht auf Wahrscheinlichkeitsverteilungen, z. B. Rechteck- bzw. Gleichverteilung), die trotz der unvollständigen Kenntnis über eine bestimmte Eingangsgröße, ihren Bestwert und ihre Standardmessunsicherheit wiederspiegelt. Beispiel: angenommen, es liegen der Minimal- und Maximalwert einer bestimmten Größe vor. Dann können diese Werte mithilfe einer angenommenen Gleichverteilung zum einen in eine Standardmessunsicherheit und zum anderen in ein Mittelwert umgewandelt werden (vgl. Hässelbarth 2004, S. 16f.).
Die Methode des GUM bzw. GUF für lineare Modelle - analytisch-rechnerische Ermittlung (s. GUM, JCGM 100:2008, JCGM 101:2008). Dabei besteht das Verfahren zur Ermittlung der Standardmessunsicherheit aus mehreren Schritten, wobei zwei wesentliche davon bereits genannt wurden (vgl. Hässelbarth 2004, S. 15):
Bestimmung der Empfindlichkeitskoeffizienten bzw. der Unsichheitsbeiträge: Der Empfindlichkeitskoeffizient einer bestimmten Größe wird bestimmt, indem die partielle Ableitung (Differentialquotient) der Messfunktion bzw. des Messmodells nach derselben Größe gebildet wird. Er drückt die Abhängigkeit der Eingangs- von der Ergebnisgröße (Ausgangsgröße) aus. Der Unsichheitsbeitrag ist das Produkt aus Empfindlichkeitskoeffizient einer bestimmen Größe und seine Standardmessunsicherheit. Er ist der Beitrag der Messunsicherheit einer bestimmten Eingangsgröße zur kombinierten Standardmessunsicherheit der Ergebnisgröße (vgl. ebd., S. 18).
Korrelationen zwischen den Eingangsgrößen bzw. Unsichheitsbeiträgen zweier Eingangsgrößen: Sind zwei Eingangsgrößen voneinander abhängig, so ist eine Korrelationsanalyse durchzuführen. Für den Typ A kann eine Korrelationsanalyse durchgeführt werden. Bei einer Typ B-Auswertung jedoch muss der Korrelationskoeffizient in die Korrelationsmatrix per Hand eingegeben werden. Die Korrelationen zwischen zwei Größen wird berechnet als Produkte ihrer jeweiligen Empfindlichkeitskoeffizienten und der Kovarianz. Sie tragen zur kombinierten Standardmessunsicherheit der Ergebnisgröße bei (vgl. ebd., S. 19). Die Kovarianz lässt sich als Produkt aus Korrelationskoeffizient und der jeweiligen Messunsicherheiten zweier Größen ermitteln (vgl. ebd., S. 36f.).
Bestimmung der kombinierten Standardmessunsicherheit: Nun werden zur Berechnung der kombinierten Standardmessunsicherheit alle zuvor ermittelten Beiträge zur Unsicherheit zusammengefasst. Zur Bestimmung dieser gibt es zwei Rechenvorschriften bzw. Formeln: Einerseits werden die Korrelationen berücksichtigt, andererseits nicht. Die WebApp benutzt die Formel, in der die Korrelationen zwischen den Ergebnisgrößen berücksichtigt werden. Wenn keine Korrelationen vorhanden sind, dann wird der Korrelations-Term in der Formel gleich null, sodass sich die Formel automatisch vereinfacht. Beide Rechenvorschriften fallen unter dem Gaußschen Fehlerfortpflanzungsgesetz und barsieren auf einer Taylor-Reihenentwicklung.
Bei einer stark ausgeprägten Nicht-Linearität eines Messmodells (Gleichung, Messfunktion), genügen diese Formeln nicht mehr. Dann müssen höhere Glieder einer Taylor-Reihenentwicklung den Formeln hinzugefügt werden. Da dieser Ansatz nicht Bestandteil dieser WebApp ist, besteht die Möglichkeit, die Standardmessunsicherheit bei Vorliegen von Nicht-Linearität, über die Monte-Carlo-Methode zu bestimmen (numerisch-stochastisches Verfahren zur Bestimmung der Standardmessunsicherheit) (vgl. ebd., S. 19).
Erweiterte Standardmessunsicherheit: Die Erweiterte Standardmessunsicherheit lässt sich mit dem Bilden des Produktes aus dem Erweiterungsfaktor (zu einem bestimmen Grad des Vertrauens) und der kombinierten Standardmessunsicherheit berechnen. Mit der erweiterten Standardmessunsicherheit wird ein Intervall (Überdeckungsintervall bzw. Wahrscheinlichkeitsintervall) angegeben, von dem ausgegangen werden kann, dass der wahre Wert einer gesuchten Größe (Ergebnisgröße), sich zu einem bestimmten Grad des Vertrauens in diesem befindet (typischerweise 95%).
Um den Erweiterungsfaktor zu bestimmen, bietet die WebApp eine für die Userin bzw. den User einfache Methode an: Bei Auswahl einer angenommenen Verteilung (genannt Überdeckungsverteilung) für die Ergebnisgröße wird dieser automatisch berechnet und ausgegeben. Gleichzeitig wird auch ein Überdeckungsintervall angezeigt. Der Grad des Vertrauens (wird in der WebApp als Überdeckungswahrscheinlichkeit bezeichnet) ist dabei die Voraussetzung für diese Bestimmung und kann ebenfalls in diesem Rahmen eingegeben werden (vgl. ebd., S. 20). Liegt eine Nicht-Linearität vor, dann muss im Rahmen der Bestimmung der erweiterten Standardmessunsicherheit, auf die Monte-Carlo-Methode ausgewichen werden (vgl. ebd., S. 37), wobei die WebApp die besondere Funktion bietet, einen Linearitätstest durchzuführen.
Die numerisch-stochastische Methode - Monte-Carlo-Methode: Bei der Monte-Carlo-Methode wird für jede Eingangsgröße eine Wahrscheinlichkeitsverteilung (z. B. Gleichverteilung) ausgewählt. Als Ergebnis ergibt sich eine Kombination dieser (und dabei pflanzen sich die Unsicherheiten jeder Eingangsgröße fort). Nun wird mithilfe dieser Wahrscheinlichkeitsverteilungen für jede Eingangsgröße eine Zufallszahl simuliert (z. B. für eine Eingangsgröße mit einer angenommenen Dreiecksverteilung, wird eine dreiecksverteilte Zufallszahl basierend auf dem Mersenne Twister Algorithmus generiert). Dann werden aus den generierten Zufallszahlen gemäß dem Messmodell (Rechenvorschrift, Messfunktion, Modellgleichung) ein Wert für die Ergebnisgröße berechnet. Je nachdem, wie viele Simulationen n gewählt werden (Die WebApp führt 500 Tausend Wiederholungen bzw. einzelne Experimente durch, n=500000), wird das Verfahren n-fach wiederholt, sodass sich am Ende eine Stichprobe aus diesen Werten der Ergebnisgrößen ergibt, die abhängig von den angenommenen Wahrscheinlichkeitsverteilungen der Eingangsgrößen ist (vgl. ebd., S. 37).
Als Schätzwerte für den besten Wert der Ergebnisgröße und seine Standardmessunsicherheit sind der arithmetische Mittelwert und die Standardabweichung der Stichprobe sehr gut geeignet (vgl. ebd.). Je höher die Anzahl der Wiederholungen bzw. Simulationen (je höher n ist), desto verlässlicher der Wert der Ergebnisgröße (Das Gesetz der großen Zahl) (vgl. JCGM 101:2008, S. 28). Je einfacher das Messmodell bzw. die Modellgleichung, desto weniger Wiederholungen sind nötig (bei eher einfacheren Gleichungen kann von 10000 Wiederholungen nach unten abgewichen werden) (vgl. Pesch 2014, S. 282). Wie auch bei der GUM-Methode wird ein Überdeckungsintervall zu einem Grad des Vertrauens (Überdeckungswahrscheinlichkeit) angegeben, in dem sich der wahre Werte der Ergebnisgröße zu dieser Wahrscheinlichkeit (bzw. zu diesem Grad) befinden soll. Dabei ist der Grad des Vertrauens der Monte-Carlo-Methode gleich dem der GUM-Methode, damit die beiden Intervalle auch grafisch gegenübergestellt bzw. verglichen werden können.
Sollte die Häufigkeitsverteilung der Ergebnisgröße (bzw. der Stichprobe) unsymmetrisch sein, dann kann es vorkommen, dass mit der GUM-Methode bestimmte, verbotene Bereiche für wahrscheinlich erklärt werden, weil z. B. eine der Grenzen des Überdeckungsintervalls im unwahrscheinlichen Bereich liegt und damit auch einige Werte im verbotenen Bereich liegen (vgl. Pesch 2014, S. 291). Aus diesem Grund bzw. im Zweifelsfall sollte lieber die Monte-Carlo-Methode als die eher verbindlichere Methode ausgewählt bzw. das Überdeckungsintervall (erweiterte Standardmessunsicherheit) dieser angegeben werden (vgl. Wübbeler 2011, S. 19). Im Gegensatz zu der GUM-Methode liefert die Monte-Carlo-Methode in manchen Fällen ein unsymmetrisches Überdeckungsintervall um den besten Schätzwert der Ergebnisgröße. Liegt eine asymmetrische Wahrscheinlichkeitsverteilung für die Messgröße Y vor, so kann ein zusätzliches Überdeckungsintervall nach der Methode der kleinsten Weglänge bestimmt werden (s. JCGM 101:2008, 7.7.2) (s. a. Pesch 2014, 8.4 (b)). Dieses Intervall wird als kürzestes (oder kürzest mögliches) Überdeckungsintervall bezeichnet und stellt das (Strecke zwischen den Intervallgrenzen) kürzeste Intervall von vielen Überdeckungsintervallen zu einer vorgegebenen Überdeckungswahrscheinlichkeit (oder einem Grad des Vertrauens) dar (vgl. Wübbeler und Mieke 2014, S. 21) (vgl. a. JCGM 101:2008, S. 30).