Erweiterung von Excel um die Prüfung von Einheiten

Erweiterung von Excel um die Prüfung von Einheiten
Erweiterung von Excel
um die Prüfung von Einheiten
Abschlussarbeit
FernUniversität in Hagen
Studiengang Master of Science in Praktischer Informatik
Verfasser:
Dominik Joder
Matrikelnummer:
9098542
Betreuer:
Prof. Dr. Friedrich Steimann
Fakultät:
Mathematik und Informatik
Lehrgebiet:
Programmiersysteme
Abgabetermin:
23.03.2015
Abstract
i
Abstract
Ziel dieser Ausarbeitung ist die Implementierung eines Tools, mithilfe dessen Einheiten in Excel definiert, zugewiesen und berechnet werden können. Da selbst ein
gutes Programm nur dann einen Nutzen hat, wenn es tatsächlich Anwendung findet,
wird besonders auf ein flexibles und anwenderfreundliches Bedienen Wert gelegt.
Das Ergebnis ist der Prototyp Chexcell – dieser weist zwar noch einige Lücken auf,
die in künftigen Versionen behandelt werden sollten, die Vergleiche mit bestehenden Tools zur Prüfung von Einheiten und die Untersuchung von praktischen Anwendungsfällen ergeben aber, dass Chexcell durchaus bereits sinnvoll eingesetzt
werden kann. Kern der Abhandlung ist die Beschreibung der wichtigsten Merkmale
und der Gedanken hinter den Algorithmen und Ansätzen der Lösung im Umgang mit
Einheiten.
ii
Inhaltsverzeichnis
Inhaltsverzeichnis
Abstract ........................................................................................................................................ i
Inhaltsverzeichnis .................................................................................................................. ii
1 Einleitung ...............................................................................................................................1
2 Grundlagen ............................................................................................................................3
2.1 Problemstellung ....................................................................................................................... 3
2.1.1 Fehler in Excel-Spreadsheets................................................................................. 3
2.1.2 Berücksichtigung von Einheiten........................................................................... 4
2.2 Klärung von Begriffen und Konventionen ..................................................................... 5
2.2.1 Begriffsklärung ............................................................................................................ 5
2.2.2 Konventionen ............................................................................................................... 7
2.3 Größen und Einheiten ............................................................................................................ 8
2.3.1 Größen ............................................................................................................................. 8
2.3.2 Einheiten ........................................................................................................................ 9
2.3.3 Rechnen mit Einheiten .......................................................................................... 10
2.3.4 Zusammenhang zwischen Größen und Einheiten...................................... 11
2.4 Vergleich mit Typsystemen .............................................................................................. 12
2.4.1 Einheiten und Typen .............................................................................................. 12
2.4.2 Dynamische und statische Typprüfung .......................................................... 13
2.4.3 Optional Typing ........................................................................................................ 14
2.5 Anforderungen ....................................................................................................................... 14
2.5.1 Funktionalität ............................................................................................................ 14
2.5.2 Flexibilität ................................................................................................................... 15
2.5.3 Übersichtlichkeit ...................................................................................................... 17
2.5.4 Bedienbarkeit ............................................................................................................ 18
3 Bestehende Ansätze......................................................................................................... 21
3.1 UCheck ....................................................................................................................................... 21
3.1.1 Grundlagen ................................................................................................................. 21
3.1.2 Zuweisung von Einheiten ..................................................................................... 22
3.1.3 Einschränkungen ..................................................................................................... 23
3.1.4 Bewertung .................................................................................................................. 24
Inhaltsverzeichnis
iii
3.2 XeLda ..........................................................................................................................................25
3.2.1 Grundlagen ..................................................................................................................25
3.2.2 Umgang mit Einheiten und Fehlern ..................................................................25
3.2.3 Bewertung ...................................................................................................................27
4 Implementierung ............................................................................................................. 29
4.1 Vergleich möglicher Technologien .................................................................................29
4.1.1 VBA Makro ...................................................................................................................29
4.1.2 VSTO Add-In ...............................................................................................................30
4.1.3 Bewertung ...................................................................................................................31
4.2 Einheiten deklarieren und definieren ...........................................................................32
4.2.1 Basiseinheiten ............................................................................................................32
4.2.2 Abgeleitete Einheiten ..............................................................................................33
4.2.3 Deklarationen und Definitionen speichern....................................................35
4.3 Einheiten zuweisen ...............................................................................................................36
4.3.1 Über Schaltfläche zuweisen ..................................................................................36
4.3.2 Über Eingabe zuweisen ..........................................................................................37
4.3.3 Vorgehensweise zum Hinterlegen der Einheiten ........................................39
4.4 Einheiten berechnen ............................................................................................................42
4.4.1 Allgemeine Regeln zur Verarbeitung von Formeln ....................................42
4.4.2 Verarbeiten von Funktionen ................................................................................44
4.4.3 Programmablauf .......................................................................................................46
4.4.4 Automatische Reduktion von Einheiten .........................................................48
4.4.5 Umgang mit gesetzten Einheiten .......................................................................49
4.4.6 Umgang mit Fehlern ................................................................................................50
4.5 Umgang mit Herausforderungen ....................................................................................52
4.5.1 Automatisches Formatieren.................................................................................52
4.5.2 Daten in Zellen hinterlegen ..................................................................................54
4.5.3 Schwierigkeiten aufgrund der Schnittstelle ..................................................54
5 Diskussion .......................................................................................................................... 57
5.1 Praktische Anwendungsfälle ............................................................................................57
5.1.1 Kosten-Nutzen-Analyse .........................................................................................57
5.1.2 Protokoll zum Gasverbrauch ...............................................................................59
5.1.3 Berechnung der Auftriebskraft ...........................................................................60
iv
Inhaltsverzeichnis
5.2 Erweiterungspotenzial ....................................................................................................... 62
5.2.1 Unterstützung weiterer Excel-Funktionen ................................................... 62
5.2.2 Einheiten aus Spalten-Bezeichnungen auslesen ......................................... 63
5.2.3 Deklaration von Einheiten prüfen .................................................................... 65
5.2.4 Weitere Zahlenformate erkennen..................................................................... 66
5.2.5 Ergänzung um Faktoren........................................................................................ 66
5.3 Vergleich mit bestehenden Ansätzen ........................................................................... 67
5.3.1 Vergleich mit UCheck ............................................................................................. 68
5.3.2 Vergleich mit XeLda ................................................................................................ 68
5.3.3 Abschließende Bewertung ................................................................................... 69
5.4 Grenzen der Prüfung von Einheiten.............................................................................. 70
5.4.1 Unvollständige Selektion ...................................................................................... 71
5.4.2 Fehlerhafte Eingabe ................................................................................................ 72
6 Schlussbetrachtung.......................................................................................................... 73
Literaturverzeichnis............................................................................................................ 74
Abbildungsverzeichnis ....................................................................................................... 78
Tabellenverzeichnis ............................................................................................................ 79
Glossar ...................................................................................................................................... 80
Index.......................................................................................................................................... 84
Erklärung zur selbstständigen Anfertigung ............................................................... 85
Anhang...................................................................................................................................... 87
A.
Kleine Verbesserungsvorschläge ................................................................................... 88
B.
Bedienungsanleitung von Chexcell ................................................................................ 89
C.
Inhalt der beigefügten CD................................................................................................ 100
1
1 Einleitung
„Wir müssen sparen, wo es geht, koste es, was es wolle“ – nach diesem Grundsatz
Motivation
scheinen sich viele Unternehmen auszurichten und belasten damit nicht nur ihre
Mitarbeiter, sondern erschweren durch die mangelnden Investitionen ein nachhaltiges Wachstum. Dieses Prinzip findet sich allerdings nicht nur in der Wirtschaft
wieder, sondern zeigt sich auch im Umgang mit Excel-Anwendern. Anwenderseitig
wird das Programm trotz der vielfältigen Möglichkeiten oft nur als kleine Unterstützung zum Ablegen strukturierter Daten angesehen, weshalb notwendige Schulungen
als überflüssige Zeitverschwendung angesehen werden [Raj00]. Aus der Sicht von
Microsoft gibt es zwar bereits einige Funktionen, die dem Anwender bei der Handhabung komplexer Daten helfen (z. B. die Fehlerüberprüfung oder das grafische
Abbilden verwendeter Zellen), allerdings gibt es auch hier noch Handlungsbedarf.
Damit dieser erkannt wird, ist das Bewusstsein wichtig, dass es sich bei ExcelAnwendern um Software-Entwickler handelt [Raj00] [Nar93]. Während bei Videorekordern und Universalfernbedienungen bereits von „Programmieren“ gesprochen
wird (obwohl es sich hierbei eher um eine Konfiguration handelt), wird Verfassern
von Kalkulationstabellen jegliche Programmier-Leistung aberkannt. Dieses Selbstverständnis führt dazu, dass aus der Software-Entwicklung bekannte Tools und
Vorgehensweisen nicht auf Excel übertragen werden.
Ein Beispiel dafür ist die in vielen Programmiersprachen verankerte Typprüfung,
deren Vorteile allgemein anerkannt sind [Pie02] und die sich dennoch nicht in Excel
wiederfindet. Das wird deutlich, wenn in einer Formel Datumsangaben, Eurobeträge
und Längenangaben zusammengezählt werden und Excel dies ohne weiteres zulässt.
Um diesen Missstand zu beseitigen soll im Zuge dieser Ausarbeitung ein Programm
entwickelt werden, das Fehler im Umgang mit Einheiten erkennt und den Anwender
auf diese unlogischen Zusammenhänge in Berechnungen hinweist. Da das Tool zum
Prüfen (engl. „check“) von in Zellen (engl. „cell“) hinterlegten Einheiten als ExcelErweiterung umgesetzt werden soll, wurde der Name „Chexcell“ gewählt.
Als Basis legt Kapitel 2 (S. 3) zunächst einige Grundlagen, auf die in den weiteren
Kapiteln aufgebaut wird. Dabei werden zunächst die bereits angerissenen Probleme
näher beleuchtet und allgemeine Schreibweisen und Begrifflichkeiten geklärt. Weiterhin werden die theoretischen Hintergründe von Größen, Einheiten und Typen
beschrieben sowie allgemeine Anforderungen an das Programm gestellt. Neben der
Funktionalität betrifft das vor allem Ansprüche, die den Anwender dazu bewegen
sollen, die Erweiterung auch tatsächlich als hilfreiche Unterstützung anzusehen und
einzusetzen.
Bevor die Implementierung von Chexcell vorgestellt wird, untersucht das 3. Kapitel
(S. 21) zwei bereits existierende Tools, die eine semantische Prüfung auf Basis von
Einheiten durchführen. Dabei wählen die Programmierer grundlegend unterschied-
Aufbau dieser Ausarbeitung
2
1 Einleitung
liche aber durchaus valide Ansätze: Während UCheck besonders Wert auf eine
einfache Bedienung legt, wird mit XeLda besonders das wissenschaftliche Umfeld
angesprochen.
Der Schwerpunkt dieser Abhandlung ist die Implementierung von Chexcell, die in
Kapitel 4 (S. 29) detailliert beschrieben wird. Dabei werden zunächst verschiedene
Technologien verglichen, die sich zur Umsetzung des gewünschten Tools eignen.
Weiterhin werden die wichtigsten Elemente der realisierten Lösung sowie aufgetretene Schwierigkeiten beschrieben, wobei der Fokus auf den Überlegungen zur Funktionsweise und dem grundsätzlichen Aufbau liegt – auf eine Beschreibung des Quelltextes und eine detaillierte Gebrauchsanweisung wurde verzichtet. Der Code des
gesamten Projekts und eine ausführliche Bedienungsanleitung befinden sich im
Anhang (siehe Anhänge B und C).
In der Diskussion (Kapitel 5, S. 57) werden die Ergebnisse bewertet, indem praktische Anwendungsfälle den möglichen Einsatz von Chexcell belegen und fehlende
Funktionen beschrieben werden, die in künftigen Versionen des Programms erweitert werden könnten. Nachdem sowohl die Implementierung von Chexcell als auch
die Ansätze von UCheck und XeLda beschrieben wurden, sind Vergleich und Bewertung dieser drei Lösungen weiterer Bestandteil der Diskussion. Schließlich wird
anhand realer Szenarien aber auch gezeigt, dass sich durch die Prüfung von Einheiten nicht alle semantischen Fehler in Tabellenblättern vermeiden lassen.
Die Schlussbetrachtung (Kapitel 6, S. 73) fasst die Ergebnisse dieser Abhandlung
zusammen und gibt einen kurzen Ausblick auf mögliche künftige Entwicklungen im
Umfeld der Einheiten-Prüfung in Excel.
3
2 Grundlagen
Bevor die implementierten Programme beschrieben und diskutiert werden, dient
dieses Kapitel als grundlegende Basis der gesamten Abhandlung. Dazu gehört die
eigentliche Problemstellung, die Einigung auf eine Terminologie, die theoretischen
Hintergründe zu Einheiten, Größen und Typen sowie eine Sammlung von Anforderungen, die an ein Tool zur Prüfung von Einheiten in Excel gestellt werden.
2.1 Problemstellung
Dieser Abschnitt soll an die eigentliche Problematik heranführen, die sich aus immer
komplexer werdenden Tabellenkalkulationen ergibt und die den Bedarf eines Programms zur besser unterstützten Behandlung von Einheiten in Excel deutlich macht.
2.1.1 Fehler in Excel-Spreadsheets
Im Jahr 1978 entwickelten zwei Studenten VisiCalc – das erste Programm zur Tabel-
Geschichte von Excel
lenkalkulation. Es unterstützte 254 Zeilen und 64 Spalten, wobei die Zellen neben
Zahlen und Überschriften auch Formeln und Funktionen beinhalten konnten. Das
heute bekannte Excel ist Nachfahre dieser Software und hat sich inzwischen zum
Standard und Marktführer in diesem Gebiet entwickelt. [Sch14b] [Hel10]
Im Laufe dieser Zeit hat sich aber nicht nur das Programm weiterentwickelt, sondern auch die damit erstellten Spreadsheets sind umfassender und komplexer ge-
Komplexität von
Spreadsheets
worden. Inzwischen sind einige von ihnen so ausgereift, dass sich aus dem Software
Engineering bekannte Ansätze anbieten, die beim Entwurf unterstützen [Raj00].
Weiterhin ist es absolut korrekt, bei Endanwendern von Programmierern zu sprechen, auch wenn diese von sich selbst und von hauptberuflichen SoftwareEntwicklern nicht so eingeschätzt werden. Letztendlich handelt es sich bei Spreadsheets um Anwendungen, die nach dem Paradigma funktionaler Programmierung
entworfen werden. [Raj00] [Nar93]
Trotzdem werden den Benutzern Programmier-Leistungen immer wieder aberkannt, weshalb ihnen wichtige Werkzeuge zum Überschauen komplexer Strukturen
vorenthalten und keine adäquaten Schulungen für den professionellen Umgang mit
der Software angeboten werden [Jon03]. Daraus können sich gravierende Fehler in
Tabellenblättern ergeben, die teilweise zu erheblichen finanziellen Schäden führen.
Raymond Panko befasst sich in vielen seiner Ausarbeitungen mit Unstimmigkeiten
in Kalkulationstabellen und fasst in seinem Artikel „What We Know About Spreadsheet Errors“ die Ergebnisse einiger Analysen zusammen [Pan98]. Dabei wurden
Analysen in verschiedenen Stadien der Entwicklung (vom initialen Anlegen bis hin
zu Fehlern in tatsächlich verwendeten Kalkulationen) durchgeführt. Demnach wur-
Fehler in Spreadsheets
4
2 Grundlagen
den in 7 Studien zwischen 1995 und 2007 insgesamt 113 Dateien untersucht, wovon
88 % fehlerhaft waren.
Ein weiteres Indiz für die mangelhafte Implementierung von Kalkulationstabellen ist
die „European Spreadsheet Risks Interest Group“ (kurz EuSpRIG), die auf ihrem
Internetauftritt eine Sammlung sogenannter „Horror Stories“ vorstellt [EuS15].
Damit sind Meldungen von Nachrichten-Seiten gemeint, die über Fehler in ExcelBerechnungen berichten, aus denen für die Unternehmen teilweise erhebliche Schäden entstanden sind. Durch diese Übersicht möchte die Organisation auf Probleme
bei der ungeprüften Verwendung von Tabellenblättern hinweisen, die in der praktischen Anwendung auftreten und aufgrund des Ausmaßes der betroffenen Untersuchungen auch öffentliches Aufsehen erregen.
2.1.2 Berücksichtigung von Einheiten
Teilweise ließen sich die Fehler durch bessere Unterweisungen und Schulungen
vermeiden, in einigen Fällen könnten aber auch semantische Prüfungen, die durch
Excel (oder ein anderes Tool) durchgeführt werden, beim Erkennen unlogischer
Zusammenhänge unterstützen. Dazu gehört unter anderem, dass Werte mit Einheiten versehen werden, die sich bei Berechnungen auf Konsistenz prüfen lassen.
Durch das Ergänzen einer Zelle um ihre Bedeutung in Form einer annotierten Einheit kann bei Formeln sichergestellt werden, dass keine inkompatiblen Einheiten
miteinander verrechnet werden.
Einheiten in der Physik
und in der SoftwareEntwicklung
Im Vergleich zur Entwicklung von Spreadsheets ist die Verwendung von Einheiten
in anderen Disziplinen bereits eine etablierte Praxis. Z. B. gibt es in der Physik die
Empfehlung, in jeder Berechnung grundsätzlich alle Einheiten anzugeben und diese
beim Lösen der Gleichung in jedem Schritt zu berücksichtigen [Die14]. Sobald die
erwartete Größe und das Ergebnis unterschiedliche Einheiten haben, liegt ein Rechenfehler vor. Ähnlich ist in der professionellen Software-Entwicklung inzwischen
gängiger Standard, auf Typsysteme zurückzugreifen und damit den Quelltext leserlicher zu gestalten, Laufzeitfehler zu vermeiden und letztendlich die Qualität von
Programmen zu verbessern [Pie02] [Sco09]. Ein Vergleich zwischen Einheiten und
Typen wird Abschnitt 2.4 (S. 12) näher eingegangen.
Vermeidung von ExcelFehlern durch Verwendung von Einheiten
Die vollständige Verifikation eines Programms oder Rechenausdrucks ist zwar nicht
umsetzbar, da sich die Prüfung ausschließlich auf die korrekte Verwendung von
Typen bzw. Einheiten beschränkt, aber zumindest eine Falsifikation ist aufgrund der
zusätzlichen Informationen möglich. Etwa ist die Addition einer Länge mit einer
Geschwindigkeit zweifelsfrei ungültig – unabhängig davon, ob die Einheiten falsch
zugewiesen wurden, oder die Formel einen Fehler enthält. Bei widerspruchsfreien
Angaben hingegen (etwa beim Zusammenzählen zweier Längen) kann die ungültige
Verwendung von Einheiten ausgeschlossen werden und trotzdem ein anderer se-
2.2 Klärung von Begriffen und Konventionen
5
mantischer Fehler auftreten, z. B. wenn zur Berechnung der benötigten Garagenbreite statt der Breite, die Höhe eines Autos verwendet wird.
Da durch die Prüfung von Einheiten aber zumindest einige der semantischen Fehler
erkannt und eliminiert werden können, sollte diese Funktionalität von Excel angeboten werden. Eine Basis dafür stellen die Zahlenformate bereit, über die der Benutzer die Darstellung von Zellen einstellen kann. Dadurch können bspw. Beträge in
Euro oder Dollar, Brüche und Zehnerpotenzen ausgegeben werden. Die Werte einer
Zelle werden unabhängig ihres Formats als Gleitkommazahl hinterlegt – selbst
Angaben von Datum und Uhrzeit1. Bei Berechnungen wird auf diese im Hintergrund
gespeicherten Werte zurückgegriffen und keine Rücksicht auf die gewählte Repräsentation genommen, sodass ein Euro-Betrag ohne weiteres mit einer in Dollar
angegebenen Zahl zusammengezählt werden kann. Weiterhin könnte das Ergebnis
mit einem Datum multipliziert werden, da dieses als Serialnummer hinterlegt ist –
die Sinnhaftigkeit dieser Rechnung wird von Excel nicht in Frage gestellt, obwohl
völlig unterschiedliche Einheiten miteinander kombiniert werden.
Es liegt nahe, dass die Berücksichtigung der Einheiten dem Anwender einen deutlichen Mehrwert bieten könnte und die Fehlerrate in Tabellenkalkulationen reduzieren würde. Da diese Schwäche von Excel bisher nicht behoben wurde, befassen sich
bereits einige Ausarbeitungen mit der Problematik und zeigen die Notwendigkeit
zur Behandlung von Einheiten im Umfeld von Excel [Abr07] [Erw02] [Raj00]. Ziel
dieser Abhandlung ist die Erarbeitung eines Ansatzes zum Integrieren und Berücksichtigen von Einheiten sowie die Entwicklung eines Prototyps, der die gewonnenen
Erkenntnisse umsetzt.
2.2 Klärung von Begriffen und Konventionen
Bevor das eigentliche Thema behandelt wird, soll zunächst eine Basis grundlegender
Normen festgelegt werden. Dazu gehört die allgemeine Klärung von Begriffen, um
Missverständnisse zu vermeiden, aber auch die Beschreibung einiger Konventionen,
die zur Vereinheitlichung in der gesamten Abhandlung eingehalten werden.
2.2.1 Begriffsklärung
Als äußeres Konstrukt dient in Excel das Arbeitsblatt (oder engl. Workbook), das mit
einer Datei gleichgesetzt werden kann. Dieses muss mindestens ein Tabellenblatt
Die Zahl 1 repräsentiert in der Regel den 1. Januar 1900 und alle darauffolgenden Zahlen
geben an, wie viele Tage seitdem vergangen sind (der Fehler, dass Excel für Tag 60 den 29.
Februar 1900 ausgibt, obwohl dieses Jahr kein Schaltjahr war, lässt sich vernachlässigen).
Uhrzeiten werden über die Werte zwischen den ganzen Zahlen abgebildet. Bspw. handelt es
sich bei 42086,5 um die interne Darstellung des 23.03.2015 um 12 Uhr mittags. [Wal03]
1
6
2 Grundlagen
beinhalten, wobei mehrere möglich und auch eher üblich sind. Sie lassen sich über
die Reiter am unteren Rand des Fensters anzeigen und bearbeiten. Spreadsheet ist
grundsätzlich die englische Bezeichnung für Kalkulationstabelle oder Tabellenkalkulation, wird aber in dieser Ausarbeitung mit einem Tabellenblatt gleichgesetzt, da
hier die eigentlichen Eingaben und Berechnungen stattfinden.
Menüband / Ribbon
Seit Office 2007 befindet sich am oberen Rand nicht mehr die gewohnte Menüleiste,
sondern ein Menüband; im Folgenden wird dafür auch der englische Begriff „Ribbon“ verwendet. Jedes Ribbon ist in verschiedene Abschnitte oder Bereiche eingeteilt, die jeweils durch eine senkrechte Linie voneinander getrennt sind; der Bezeichner des Abschnitts befindet sich am unteren Ende des Menübands, zentriert
zwischen den Begrenzungslinien.
Aufgabenbereich /
Task Pane
Ein Aufgabenbereich (oder engl. „Task Pane“) ist ähnlich wie ein Dialogfenster
Grundlage für Steuerelemente, kann aber elegant in der Benutzeroberfläche fixiert
werden (üblicherweise am rechten Rand). In Excel kann bspw. der Aufgabenbereich
„Recherchieren“ eingeblendet werden, um aus der Anwendung heraus Suchen
durchzuführen.
Arbeitsblatt / Workbook
Menüband / Ribbon
Aufgabenbereich / Task Pane
Abschnitt / Bereich
Zelle B3
Bereich D8:F9
Tabellenblatt / Spreadsheet
Abbildung 1: Verwendete Begriffe im Umfeld von Excel
Bereich
Im Tabellenblatt bezeichnet ein Bereich eine Sammlung von Zellen – streng genommen kann diese auch aus einer einzigen Zelle bestehen. Der Name einer Zelle setzt
2.2 Klärung von Begriffen und Konventionen
7
sich in der Regel aus der Spalte und der Zeile zusammen (z. B. B3).2 Ein Bereich kann
durch zwei (mit einem Doppelpunkt voneinander getrennten) Zellen angegeben
werden, wobei alle Zellen eingeschlossen werden, die sich in einem gedachten
Rechteck befinden, bei dem die beiden gegebenen Bezeichner Ecken sind (z. B.
umfasst D8:F9 die Zellen D8, E8, F8, D9, E9 und F9). Abbildung 1 fasst die vorgestellten Begriffe zusammen und verdeutlicht, wie sie im Zuge dieser Abhandlung zu
verstehen sind.
2.2.2 Konventionen
Um eine gute Lesbarkeit zu gewährleisten, ist es wichtig, dass in der gesamten Abhandlung einheitliche Darstellungen verwendet werden. Dazu gehört, dass alleinstehende Abkürzungen für Einheiten (also solche ohne Zahlenwert) im Fließtext
hervorgehoben werden. Dabei ist unerheblich, ob es sich um einen einzelnen Bezeichner (wie etwa s), oder um abgeleitete Einheiten, also mehrere mit Operatoren
verknüpfte Einheiten, handelt (wie etwa m/s).
Als Multiplikations-Operator wird bei eher theoretischen Betrachtungen auf das in
der Mathematik übliche Malzeichen „·“ zurückgegriffen, während Erklärungen, die
Darstellung von Multiplikationen
sich auf ein Tool (z. B. Excel) beziehen, das in der Informatik typische Sternchen „*“
verwenden. Dadurch soll verhindert werden, dass in mathematischen Gleichungen
Sternchen Verwirrungen auslösen, oder Eingaben in Excel oder ein anderes Programm mit dem Malzeichen dargestellt werden, obwohl an diesen Stellen tatsächlich
ein Sternchen erwartet wird. Entsprechend wird den beiden Symbolen in der gesamten Abhandlung die gleiche Bedeutung zugeschrieben.
Weiterhin gilt, dass der Schrägstrich innerhalb von Einheiten nicht als Divisionszeichen, sondern als Bruch gewertet wird. Da alle Zeichen hinter dem Schrägstrich als
Nenner bzw. Divisor gelten, ist eine Klammerung zum Aufzeigen von Zugehörigkeiten nicht nötig. Das bedeutet, dass m/s·s nicht zu m·s/s transformiert werden
kann; es stellt vielmehr m/(s·s) in einer leichter lesbaren Form dar. Durch diese
Konvention können alle zusammengesetzten Einheiten vereinfacht und ohne die
Verwendung von Klammern dargestellt werden.
Diese Festlegung beschränkt sich allerdings rein auf die Angabe von Einheiten. In
Excel selbst wird der Schrägstrich als Divisionszeichen gewertet, weshalb die Einga-
Auf die alternative Darstellung Z1S1 (bzw. R1C1), in der auch Spalten über Zahlen identifiziert werden, und auf die Verwendung von Bezeichnern für Zellen oder Bereiche wird an
dieser Stelle verzichtet und grundsätzlich die übliche A1-Bezugsart mit Buchstaben für
Spalten und Zahlen für Zeilen verwendet. Mehr Details zu den Möglichkeiten der Benennung
von Bereichen bieten die Support-Seiten von Microsoft (https://support.office.com/enus/article/Define-and-use-names-in-formulas-4d0f13ac-53b7-422e-afd2-abd7ff379c64 und
http://support.microsoft.com/kb/269866).
2
Schrägstrich als Bruch
8
2 Grundlagen
be „A1/A2*A3“ entsprechend dem Kommutativgesetzt auch als „A1*A3/A2“ ausgedrückt werden könnte, während „A1/(A2*A3)“ zu einem anderen Ergebnis führt.
2.3 Größen und Einheiten
Da sich die gesamte Ausarbeitung mit der Behandlung und Verarbeitung von Einheiten beschäftigen, fassen die folgenden Abschnitte aus der Literatur bekannte allgemeine Fakten bezüglich Größen und Einheiten zusammen. Neben den Begrifflichkeiten werden insbesondere der Umgang mit Einheiten in Rechnungen, und der ZuZusammenhang zwischen Größen und Einheiten beschrieben.
2.3.1 Größen
Physikalische Größen werden von Hans Dieter Baehr als „quantitativ bestimmbare
Merkmale und Eigenschaften von Dingen, Zuständen oder Vorgängen“ definiert
[Bae74]. Dennoch sind nicht die Objekte selbst (wie etwa ein Auto) Größen (diese
werden als Träger bezeichnet [DIN1313]), sondern deren Eigenschaften, die miteinander verglichen werden können (z. B. die Länge, das maximale Drehmoment oder
die Geschwindigkeit eines Autos).
Vektorielle und skalare
Größen
Dabei wird zwischen vektoriellen und skalaren Größen unterschieden, also zwischen solchen mit und solchen ohne die zusätzliche Angabe der Richtung. Bei letzteren werden häufig dennoch auf spezifische Richtungsangaben verzichtet und nur die
Beträge betrachtet, sodass z. B. die Kraft, die auf einen Körper wirkt, als reiner
Betrag ohne vektorielle Festlegung erfasst werden kann und sich wie eine skalare
Größe verhält [Bae74] [DIN1313] [Kuc07]. Entsprechend wird im Zuge dieser Ausarbeitung von der Charakterisierung durch Richtungsvektoren abgesehen und von
skalaren Größen ausgegangen.
Basisgrößen und
abgeleitete Größen
Weiterhin werden Basisgrößen und abgeleitete Größen differenziert. Erstere sind
die Länge, Masse, Zeit, elektrische Stromstärke, Temperatur, Stoffmenge und Lichtstärke. Aus diesen lassen sich in Form von Potenzprodukten (also durch Multiplikationen und Divisionen) weitere Größen ableiten. So ergibt bspw. der Quotient aus
Weg und Zeit die abgeleitete Größe der Geschwindigkeit, während sich die Kraft aus
dem Produkt von Masse und Beschleunigung herleitet. [Sch14a] [Kuc07]
Größenarten fassen
Größen zusammen
Verschiedene Größen können in Größenarten zusammengefasst werden. Der Unterschied liegt darin, dass Größen Merkmale von Dingen sind, also sich immer auf ein
bestimmtes Objekt beziehen, wohingegen Größenarten Größen ohne Sachbezug
zusammenfassen. So sind bspw. die Distanz zweier Autos, die Länge eines Fußballplatzes und die Höhe eines Hauses verschiedene Größen, die sich in der Größenart
Länge zusammenfassen lassen. [Bae74]
2.3 Größen und Einheiten
9
Mit den Werten einer Größe kann „nach den elementaren Regeln der Arithmetik
Rechnen mit Größen
gerechnet werden“ [DIN1313], sodass sich alle Gesetzmäßigkeiten, die beim Rechnen mit reellen Zahlen gelten, ohne Einschränkungen anwenden lassen [Kuc07]. Es
gilt zu beachten, dass Additionen und Subtraktionen nur bei Größen gleicher Art
sinnvoll sind, d. h. zwei Werte der Größenart „Länge“ dürfe ohne Weiteres zusammengezählt werden, „Masse“ und „Temperatur“ hingegen nicht. [Bae74]
Anstatt den langen Bezeichner einer Größe anzugeben, werden in Gleichungen
Schreibweise
üblicherweise Formelzeichen verwendet. Das sind große und kleine Buchstaben des
lateinischen und griechischen Alphabets [Kuc07], wobei eine Zuweisung von
Formelzeichen zu ihren Größenarten normiert und damit fest vorgegeben ist (vgl.
[DIN1304]). Ebenfalls ist festgelegt, dass Formelzeichen für skalare Größen kursiv
zu schreiben sind [DIN1338]. Bspw. wird für die Größe „Kraft“ das Zeichen F und für
„Masse“ der Buchstabe m verwendet.
2.3.2 Einheiten
Der Wert einer Größe (Größenwert) wird als Produkt des Zahlenwertes und einer
Einheit dargestellt, sodass z. B. für die Masse gilt:
m = {m} · [m].
Dabei geben eckige Klammern die Einheit und geschweifte Klammern den Zahlenwert einer Größe an. Die Ausdrücke
[m] = kg
und
{m} = 42
weisen also der Größe m (Masse) die Einheit Kilogramm und den Wert 42 zu,
wodurch eine Masse von 42 kg angegeben wird [Stö04] [Ede14]. Wichtig ist, dass die
eckigen Klammern das Formelzeichen der Größe und nicht die Einheit umfassen.
Horst Kuchling und Hans Dieter Baehr legen darauf besonderen Wert und bezeichnen die weit verbreitete Schreibweise von eckigen Klammern um Einheiten als
„Unsitte“ [Kuc07] [Bae74]. Aus diesem Grund werden Einheiten in dieser Ausarbeitung nicht mithilfe von eckigen Klammern, sondern durch eine abweichende Schriftart (wie etwa bei m/s) hervorgehoben (siehe 2.2.2 Konventionen, S. 7).
Analog zu Basisgrößen und abgeleiteten Größen wird zwischen Basiseinheiten und
Basiseinheiten
abgeleiteten Einheiten unterschieden. Erstere wurden 1960 auf der 11. Generalkonferenz für Maß und Gewicht im Internationalen Einheitensystem (Système International d' Unités, kurz SI) festgelegt und sind in Deutschland gesetzlich als Standard
verankert. Sie umfassen Sekunde, Meter, Kilogramm, Ampere, Kelvin, Candela und
Mol. [Stö04] [Ede14]
Daraus können mithilfe von Multiplikationen und Divisionen beliebige weitere
Einheiten abgeleitet werden. Diese werden ebenfalls als SI-Einheiten bezeichnet,
falls sie kohärent sind, also keine Zahlenfaktoren verwenden. Bspw. wird die SI-
Abgeleitete Einheiten
können kohärent oder
inkohärent sein.
10
2 Grundlagen
Einheit m/s zur Angabe von Geschwindigkeit verwendet, oder die Einheit Newton
(mit der Abkürzung N) aus kg·m/s² zusammengesetzt. Alle weiteren Einheiten
(mit Zahlenfaktor) werden als inkohärent bezeichnet und stellen keine SI-Einheiten
dar. Dazu gehört z. B. kN (Kilonewton), da es sich aus 1000·kg·m/s² zusammensetzt, also einen Zahlenfaktor beinhaltet. [Stö04] [Kuc07]
Einheitengleichungen
Die Beziehung inkohärenter Einheiten, die derselben Größenart angehören, wird
mithilfe sog. Einheitengleichungen angegeben. Sie beinhalten ausschließlich Einheiten und Zahlenfaktoren und geben damit eine Umrechnungsvorschrift an. So lassen
bspw. die Einheitengleichungen
1 kN = 1000 N
und
1 in = 2,54 cm
auf den Zusammenhang zwischen Kilonewton und Newton bzw. zwischen Zoll und
Zentimetern schließen. [Bae74] [Moe08]
2.3.3 Rechnen mit Einheiten
Auch wenn Werte mit Einheiten versehen sind, kann ganz normal mit ihnen gerechnet werden. Darüber hinaus gibt es sogar die Empfehlung, bei jedem Zahlenwert die
Einheit mit aufzuschreiben, um ein erstes Indiz für die Korrektheit eines Ergebnisses zu erhalten [Die14]. Während sich das Vorgehen zum Berechnen des Zahlenwertes dabei nicht ändert, gibt es im Umgang mit Einheiten hingegen gesonderte Rechenregeln und Operatoren [Bae74].
Multiplikationen und
Divisionen werden auf
Einheiten übertragen
Multiplikationen und Divisionen werden nicht nur auf die Zahlenwerte, sondern
auch auf die entsprechenden Einheiten angewendet. Wird bspw. das Produkt zweier
Längen, die in m angegeben sind, berechnet, ergibt sich daraus eine Fläche in m·m.
Je nach Eingangsgrößen können beliebige abgeleitete Einheiten entstehen, da diese
sich (wie im Abschnitt zuvor beschrieben) ebenfalls aus Produkten und Quotienten
zusammensetzen dürfen. [Moe08] [Bae74]
Additionen und Subtraktionen sind nur bei
gleichen Einheiten
möglich
Additionen und Subtraktionen ändern die betroffenen Einheiten nicht, dürfen aber
auch nur auf gleiche Einheiten angewendet werden. So ergibt die Rechnung
10 m/s + 20 m/s
die Geschwindigkeit 30 m/s, wohingegen ein Zusammenzählen verschiedener Einheiten, z. B. durch die Formel
10 m/s + 20 m,
ungültig ist, also nicht durchgeführt werden darf. Diese Addition macht deutlich, wie
einfach eine fehlerhafte Berechnung erkannt werden kann, sofern die Einheiten
immer mit angegeben werden. [Die14] [Ken94]
Weitere Operatoren sind nur dann zulässig, wenn sie komplette Einheiten ergeben.
Dies schließt ganzzahlige Potenzen immer ein, wodurch z. B. die Rechnung
2.3 Größen und Einheiten
11
(10 m/s)² = 100 m²/s²
möglich ist. Weiterhin gilt für Wurzeln, dass sie nur gezogen werden dürfen, wenn
eine entsprechende Potenz in der gegebenen Einheit vorliegt, z. B. bei
√100 m²/s² = 10 m/s.
Sollte dies nicht der Fall sein, ist die Rechnung ungültig – so etwa bei der Formel
√100 m/s² .
Die Anwendung eines Logarithmus ist grundsätzlich unzulässig, da dieser zwar für
Zahlen, aber nicht für Einheiten definiert ist [Bae74] [Moe08].
2.3.4
Zusammenhang zwischen Größen und Einheiten
Jeder der sieben Basisgrößen ist exakt einer der sieben vorgestellten SIBasiseinheiten zugeordnet (und umgekehrt). Dieser Zusammenhang ist in Tabelle 1
dargestellt.
Größe
SI-Basiseinheit
Zeichen
Länge
Meter
m
Masse
Kilogramm
kg
Zeit
Sekunde
s
Elektrische Stromstärke
Ampere
A
Temperatur
Kelvin
K
Stoffmenge
Mol
mol
Lichtstärke
Candela
cd
Tabelle 1: SI-Basiseinheiten und ihre Basisgrößen (vgl. [DIN1301])
Solange das Internationale Einheitensystem verwendet wird, besteht eine 1:1 Relation zwischen Größen und Einheiten. Wird dieses System verlassen und auf inkohärente Ableitungen zurückgegriffen, können hingegen leicht mehrere Einheiten gefunden werden, die derselben Größe angehören. So spiegeln bspw. N und die bereits
vorgestellte inkohärente Einheit kN eine Angabe der abgeleiteten Größe F (Kraft)
wider. Ein weiteres Beispiel ist Zoll, der genauso wie Meter als Einheit einer Länge
verwendet werden kann. In der Praxis können also, sobald das SI-Einheitensystem
nicht strikt eingehalten wird, für eine Größenart auch mehrere Einheiten festgelegt
werden, wodurch ein Verhältnis von 1:n entsteht. [Bae74]
Umgekehrt ist einer Einheit immer exakt eine Größenart zugeordnet, kann damit
aber auch durchaus mehreren Größen zugewiesen werden. So entspricht eine Anga-
Verhältnis zwischen
Einheiten und Größen
12
2 Grundlagen
be in Metern grundsätzlich der Größenart Länge, diese umfasst allerdings die Größen Breite, Distanz, Höhe usw. [Sch14a]. Demnach können zumindest theoretisch
Einheiten und Größen im Verhältnis m:n zueinander stehen. Da die Größen in solchen Fällen allerdings immer derselben Größenart entsprechen und damit im Grunde dasselbe aussagen, sollten diese Ausnahmen keine besondere Beachtung finden.
2.4 Vergleich mit Typsystemen
Ein ähnliches Konstrukt wie die Prüfung von Einheiten ist Software-Entwicklern
bereits in Form von Typsystemen bekannt. Diese werden im Folgenden behandelt
und dabei insbesondere auf dynamische, statische und optionale Typisierung eingegangen sowie Rückschlüsse auf die Prüfung von Einheiten in Excel gezogen.
2.4.1 Einheiten und Typen
Gemeinsamkeiten von
Einheiten und Typen
Wie in der Problemstellung bereits angedeutet (siehe 2.1.2 Berücksichtigung von
Einheiten, S. 4) verfolgen Typen und Einheiten ähnliche Ziele. Sie beide verbessern
auf der einen Seite die Lesbarkeit (indem zusätzliche Informationen die Berechnung
bzw. das Programm dokumentieren) und helfen auf der anderen Seite dabei, semantische Fehler zu verhindern. Während Einheiten einen ersten Aufschluss über die
Korrektheit einer Formel geben, indem die resultierende Einheit mit der erwarteten
abgeglichen wird, verhindern Typsysteme, dass Methoden bzw. Operatoren nicht
auf Variablen angewendet werden, für die sie nicht definiert sind. Bspw. weist ein
Ergebnis in km bei einer berechneten Geschwindigkeit genauso auf einen Fehler
hin, wie das Quadrieren eines Strings. [Sco09] [Ken10] [Kle13]
Unterschiede von
Einheiten und Typen
Trotz des gemeinsamen Ziels Operationen zu beschränken und auf semantische
Fehler hinzuweisen, lassen sich Typen und Einheiten nicht gleichsetzen. Zum einen
werden Typisierungen in der Programmierung auch verwendet, um das Speicherlayout von Variablen zu regeln und dem Compiler Optimierungen zu ermöglichen,
da je nach verwendeten Typen die jeweils schnellere Methode gewählt werden kann
– beides ist bei Einheiten im wissenschaftlichen Umfeld nicht nötig. Zum anderen
unterscheiden sich die Regeln, die zum Überprüfen der Semantik angewandt werden: Variablen unterschiedlicher Typen dürfen in keiner Form miteinander verrechnet werden, ohne dass eine (implizite oder explizite) Umwandlung stattfindet.
So können Zeichenketten, ganze Zahlen und Gleitkommazahlen nicht ohne eine
Form der Typumwandlung addiert, multipliziert oder auf sonstige Weise verrechnet
werden. Unterschiedliche Einheiten dürfen zwar ebenfalls nicht addiert werden,
Multiplikationen, Divisionen und Potenzen stellen hingegen kein Problem dar.
[Ken94] [Ken10]
2.4 Vergleich mit Typsystemen
13
Weiterhin gibt es Ansätze in einigen Programmiersprachen, zusätzlich zu Typen
auch Angaben von Einheiten zu berücksichtigen. Bspw. können in F# Einheiten
deklariert und anschließend als Erweiterung von Zahlenwerten angegeben werden.
F# unterstützt die
Prüfung von Typen
und Einheiten
Z. B. weist die Angabe von 9.81<m/s^2> auf die Einheit m/s² hin. Damit verfügt F#
nicht allein über ein Typsystem sondern unterstützt weiterhin das Festlegen, Verwenden und Überprüfen von Einheiten beim Programmieren. [Ken10]
2.4.2 Dynamische und statische Typprüfung
Grundsätzlich wird bei Typsystemen zwischen einer dynamischen und einer stati-
Statische Typprüfung
schen Typisierung unterschieden. Statisch bedeutet, dass vor dem Kompilieren alle
aufgrund der annotierten Typen unzulässigen Zuweisungen erkannt werden und
das Erstellen des Programms verhindert wird. Da diese Prüfung auch solche Algorithmen zurückweist, die möglicherweise (aber nicht unbedingt zwangsläufig)
Fehler enthalten, werden im Zweifelsfall auch funktionsfähige Programme zurückgewiesen. Dies ist bspw. dann der Fall, wenn eine aufgrund der Typen unzulässige
Zuweisung innerhalb eines Blocks steht, der nie erreicht wird. [Pie02] [Sco09]
[Kle13] [Mei04]
Die dynamische Typprüfung hingegen findet nicht vor dem Kompilieren, sondern
während der Laufzeit statt. Da Typfehler anstatt bei der Übersetzung erst bei Be-
Dynamische Typprüfung
trieb erkannt werden, ist dieses Vorgehen weniger restriktiv und weist keine gültigen Programme zurück. Auf der anderen Seite verhindert eine dynamische Typprüfung zwar unzulässige Zuweisungen zur Laufzeit, kann dadurch aber auch zu
Programmabstürzen führen. Aus diesem Grund bieten viele typisierte Programmiersprachen beide Arten der Typprüfung: eine statische Komponente prüft den Quelltext vor der Übersetzung, erlaubt dabei aber Typumwandlungen, die erst zur Laufzeit von der dynamischen Komponente geprüft werden. [Pie02] [Sco09] [Kle13]
[Mei04]
Diese Logik lässt sich nicht ohne weiteres auf Excel übertragen, da es hier keine
strikte Trennung zwischen Programm und Eingaben gibt. Sowohl die eingetragenen
Werte, als auch der Algorithmus in Form von Rechenvorschriften werden im Tabellenblatt hinterlegt, sodass hier ein fließender Übergang entsteht. Weiterhin werden
in Excel üblicherweise alle Änderungen direkt verarbeitet und alle zu berechnenden
Werte aktualisiert. Es gibt also keine klare Unterscheidung zwischen Entwicklungsphase und Ausführung des Programms – das Spreadsheet ist sozusagen dauerhaft in
Betrieb. Daher ist im Fall von Excel eher eine dynamische als eine statische Prüfung
von Typen (bzw. Einheiten) zu realisieren.
Dynamische EinheitenPrüfung in Excel
14
2 Grundlagen
2.4.3 Optional Typing
Verpflichtendes und
optionales Typisieren
Die meisten typisierten Programmiersprachen sind unmittelbar mit ihrem Typsystem verbunden, sodass die Syntax fließend von der Sprache zum Typsystem übergeht. Im Gegensatz zu diesem verpflichtenden Typisieren (engl. Mandatory Typing)
gibt es auch den Ansatz des „Optional Typing“ (optionale Typisierung), bei dem das
Typsystem klar von der eigentlichen Programmiersprache getrennt ist. Durch den
modularen Aufbau kann die Syntax einer Sprache bei Bedarf um ein Typsystem
ergänzt werden, indem ein Konstrukt zur Verfügung gestellt wird, über das dieses
angeknüpft werden kann – dabei sind durchaus auch mehrere parallel zueinander
arbeitende Systeme möglich. Trotz der Flexibilität, die sich durch eine optionale
Typisierung bietet, muss der Ansatz noch weiter untersucht werden und stellt nicht
die gängige Praxis dar (als bekanntestes Beispiel gilt Strongtalk, das Smalltalk um
ein Typsystem ergänzt). [Bra04] [Bra93] [Zel09]
Optional Typing als
Einheiten-Prüfung in
Excel
Im gegebenen Fall einer Excel-Erweiterung zur Prüfung von Einheiten findet sich
allerdings genau dieses Konzept wieder. Die Syntax der Spreadsheets bleibt unverändert erhalten, d. h. es ändert sich nichts an den Berechnungen durch Formeln und
Verweise. Das Prüfsystem für Typen (bzw. Einheiten) erweitert die bestehende
Software lediglich und bietet eine Möglichkeit zur Kontrolle, ohne bestehende Strukturen anpassen zu müssen. Da es nicht fester Bestandteil von Excel ist und sich bei
Bedarf aktivieren und deaktivieren lässt, kann es durchaus als Vorbild für eine
optionale Typisierung (bezogen auf Einheiten) angesehen werden.
2.5 Anforderungen
In den folgenden Abschnitten sind die wichtigsten Anforderungen zusammengefasst, die an ein Programm zur Überprüfung von Einheiten gestellt werden. Dabei
wird zwischen der erwarteten Funktionalität und den zusätzlichen Ansprüchen
bezüglich Flexibilität, Übersichtlichkeit und Bedienbarkeit unterschieden. Grundlage jeder Anforderung ist, dass der Anwender durch das Tool tatsächlich unterstützt
und nicht behindert wird – nur so ist es möglich, die Akzeptanz potenzieller Benutzer zu gewinnen.
2.5.1 Funktionalität
Zellen mit Einheiten
versehen
Eine der grundlegenden Funktionen, die ein Programm zur Prüfung von Einheiten
bereitstellen muss, ist das Ergänzen von Zahlen um Einheiten. Da Excel Werte in
Zellen ablegt, muss es also möglich sein, einzelnen Zellen oder Bereichen eine Einheit zuzuordnen. Diese Information muss der Prüfungs-Algorithmus wieder auslesen können, aber auch für den Anwender muss die zugewiesene Einheit ersichtlich
sein. Welche Anforderungen an die Umsetzung und Gestaltung dieser Funktionalität
gestellt werden, erläutern die folgenden Abschnitte.
2.5 Anforderungen
15
Der eigentliche Kern des Tools ist die Prüfung von Einheiten. Anhand der Zuweisun-
Einheiten prüfen
gen durch den Benutzer muss also gefolgert werden, ob im Tabellenblatt logische
Fehler enthalten sind. Sollte bei dieser semantischen Prüfung festgestellt werden,
dass Werte mit inkompatiblen Einheiten ungültig miteinander verrechnet werden
(z. B. bei einer Addition von Metern und Sekunden), muss eine entsprechende Meldung ausgegeben werden.
Diese beiden funktionalen Anforderungen würden eigentlich genügen, um eine aus
der Programmierung mit typisierten Sprachen bekannte Typprüfung auf Einheiten
Implizite Zuweisung
von Einheiten
in Excel abzubilden. Während es in den meisten Programmiersprachen üblich ist,
bei jeder Variablendefinition einen Typ explizit anzugeben, bietet C# seit der Version 3.0 das Schlüsselwort „var“, um eine implizite Typisierung vorzunehmen.3 Die
Variablen erhalten ihren Typ nicht aufgrund einer Zuweisung durch den Programmierer, sondern er wird anhand der Wertzuweisung bzw. Berechnung ermittelt.
Dieser Ansatz soll auf die Prüfung von Einheiten in Excel übertragen und ebenfalls
als Anforderung aufgenommen werden: Sobald ein Wert in einer Zelle mithilfe einer
Formel berechnet wird, soll die daraus resultierende Einheit automatisch ermittelt
und der Zelle zugewiesen werden. Wird bspw. eine Division von zwei Werten
durchgeführt, denen die Einheiten m und s zugeordnet sind, kann das Tool selbst
auf ein Ergebnis in m/s schließen, ohne dass eine Angabe durch den Anwender
nötig ist.
2.5.2 Flexibilität
Eine besondere Stärke von Excel ist die enorme Gestaltungsfreiheit, durch die sich
die Anwendung in vielen Bereichen als universelles Werkzeug etabliert hat. Die
vielen Möglichkeiten können (im Gegensatz zu spezialisierter Software) so genutzt
werden, dass Anpassungen an sich ändernde Anforderungen oder Geschäftsprozesse ohne Programmierkenntnisse vorgenommen werden können. Diese Flexibilität
darf durch das Tool nicht eingeschränkt werden – schließlich soll (und wird) der
Anwender nicht seine gesamte Arbeitsweise umstellen, um einem vermeintlich
unterstützenden Programm gerecht zu werden. Vielmehr muss sich das Programm
an die Bedürfnisse des Benutzers anpassen.
Dazu ist es notwendig, dass nicht bereits bei der Implementierung festgelegt wird,
welche Einheiten gesetzt werden können und wie diese auszusehen haben. Müsste
der Anwender auf eine Menge bestehender Einheiten zurückgreifen, wäre er gezwungen, eine vorher definierte Schreibweise zu verwenden. Diese kann aber je
Nähere Informationen zum Stichwort „var" stellt Microsoft unter
http://msdn.microsoft.com/en-us/library/bb383973.aspx und
http://msdn.microsoft.com/en-us/library/bb384061.aspx bereit.
3
Deklaration von Einheiten durch den
Anwender
16
2 Grundlagen
nach Anwendungsfeld oder Vorlieben des Nutzers völlig unterschiedlich ausfallen.
Während es für einige außer Frage steht, dass die Abkürzung m für Meter steht,
könnte sie ein anderer für Meilen oder gar Minuten verwenden. In einigen Fällen
werden eher kürzere Ausdrücke bevorzugt, in anderen mag es sinnvoll sein, die
Bezeichner explizit auszuschreiben.
Keine systeminternen
Einheiten
Um diesen Präferenzen gerecht zu werden, muss es möglich sein, die Einheiten
selbst zu deklarieren. Zwar spricht nichts gegen eine Vorauswahl von häufig verwendeten Bezeichnern (wie etwa das Euro-Zeichen), grundsätzlich sollte der Anwender aber alle Einheiten anpassen bzw. entfernen und neue hinzufügen können.
Damit dieser Aufwand nicht für jede Datei anfällt ist es notwendig, dass die Deklarationen auf dem Dateisystem des Anwenders abgelegt und von dort auch wieder
geladen werden können. Dabei ist wichtig, dass diese Vorauswahl ebenfalls flexibel
ist, also nachträglich manuell angepasst werden kann. Daraus resultiert die Anforderung, dass keine systeminternen Einheiten fest im Tool hinterlegt sein dürfen,
sondern alle auf änderbaren Deklarationen beruhen. Im Gegensatz zu üblichen
Typsystemen von Programmiersprachen, die in der Regel über vorgegebene Basistypen verfügen, sollen keine Einheiten fest im Quelltext der Anwendung definiert
sein – der Anwender muss frei entscheiden können, welche Einheiten er verwenden
möchte und wie diese aufgebaut sind.
Einheiten exportieren
und importieren
Diese Freiheit hat allerdings nicht nur Vorteile, sondern birgt auch Gefahren, sobald
ein Spreadsheet von mehreren Personen gepflegt wird. Da die Einheiten (unabhängig von der Datei) auf der Festplatte desjenigen gespeichert wird, der sie definiert
hat, könnten sie bei einem anderen Anwender fehlen oder eine andere Bedeutung
haben. Es muss also die Möglichkeit geben, die gesamte Sammlung an Definitionen
in geeigneter Form zu exportieren und weiterzugeben, sodass die Einheiten nicht
bei jedem Benutzer manuell eingegeben werden müssen. Diese Funktion könnte
auch als Sicherung oder Vorlage dienen, indem die exportierte Datei bei Bedarf
eingelesen wird.
Einheiten an der
Formatierung erkennen
In der Regel wird über ein Suffix gekennzeichnet, welche Einheit ein gegebener Wert
hat. Teilweise kann diese Zuordnung aber auch alleine anhand der Darstellung
erfolgen. So ist offensichtlich, dass es sich bei der Zeichenkette „23.03.2015“ um ein
Datum handelt, während „11:42 PM“ eine Zeitangabe ist. Da diese Schreibweise vor
allem im internationalen Gebrauch sehr unterschiedlich ausfallen kann (z. B. wird
ein Datum im Amerikanischen häufig in der Form „03/23/2015“ angegeben), ist
auch hier wichtig, dass der Anwender entscheiden kann, wie ein Wert auszusehen
hat, um als eine bestimmte Einheit erkannt zu werden. Bei der Deklaration muss es
demnach die Möglichkeit geben, eine Schreibweise festzulegen, anhand der die
Einheit auch ohne explizite Angabe herausgefunden werden kann. Es gilt also, dass
der Bezeichner und das verknüpfte Zahlenformat keine fest einprogrammierten,
systeminternen Vorgaben sind, sondern durch den Anwender festgelegt werden.
2.5 Anforderungen
17
Eine letzte Anforderung bezüglich Flexibilität gilt der Entscheidung, ob eine Prüfung
durchgeführt werden soll oder nicht (siehe 2.4.3 Optional Typing, S. 14). In einigen
Prüfung aktivieren und
deaktivieren
Fällen ist diese möglicherweise gar nicht sinnvoll und würde eher stören. Auch hier
gilt der Grundsatz, dass dem Benutzer eine Hilfe angeboten und keine Last auferlegt
werden soll – er muss also in der Lage sein, eine Prüfung zu starten oder eine permanente Überwachung zu aktivieren.
2.5.3 Übersichtlichkeit
Ein weiterer wichtiger Anspruch, der an das Tool gestellt wird, um überhaupt verwendet zu werden, ist die Übersichtlichkeit. Damit ist zunächst der grundsätzliche
Aufbau gemeint, der nicht durch komplexe Konstrukte abschrecken darf, sondern
durch eine verständliche Struktur überzeugen muss. Demnach sollten die grafische
Oberfläche möglichst schlicht ausfallen und alle wichtigen Funktionen leicht erreichbar sein.
Weiterhin ist damit aber auch die Darstellung von Einheiten gemeint. Diese sollten
nicht nur (wie bereits beschrieben) vom Anwender selbst festgelegt werden, son-
Einheiten direkt beim
Wert darstellen
dern auch erkennbar Werten zugewiesen sein. Eine Zuweisungstabelle mit der
Aufschlüsselung, welcher Zelle welche Einheit zugeteilt ist, wäre für Menschen
umständlich und schwer lesbar, weshalb dies kaum eine passable Lösung darstellen
kann. Die Informationen müssen so nahe beieinander stehen, dass auf den ersten
Blick erkennbar ist, welche Einheit ein Wert hat, ohne dass andere Quellen dafür
benötigt werden. Hierfür bietet sich das Ablegen in der Zelle selbst, in einer benachbarten Zelle, in der Überschrift der Spalte (sofern sich der Wert in einer Tabelle
befindet), oder in einem angehängten Kommentarfeld an. Welcher dieser Lösungsansätze gewählt wird, ist dabei unerheblich – wichtig ist, dass dem Benutzer direkt
klar ist, in welcher Einheit ein Wert angegeben ist.
Schließlich ist für die Übersichtlichkeit ebenfalls von Bedeutung, dass nicht mehr
Platz im Tabellenblatt gebraucht wird, als der Anwender bereit ist zur Verfügung zu
Abkürzende Schreibweisen
stellen. Werden bspw. drei Zellen mit der Einheit m multipliziert, ist das Ergebnis
m·m·m zwar korrekt, kann aber durch den hohen Bedarf an Zeichen störend wirken. Hier wäre eine kürzere Schreibweise sinnvoll (wie etwa m³), die statt des
langen Ausdrucks verwendet werden könnte. Dabei ist wichtig, dass der Zusammenhang zwischen diesen Bezeichnern nicht verloren geht, sodass m³ als Potenz
von m erkannt wird und aus einer Division nicht etwa m³/m sondern m² entsteht.
Wie bei allen Einheiten ist auch hier wichtig, dass die Abkürzungen nicht statisch
bestimmt sind, sondern durch den Benutzer selbst festgelegt werden können. Auch
wenn es das Beispiel mit m³ vielleicht suggeriert, sollten die Abkürzungen nicht auf
verschiedene Dimensionen begrenzt sein. Vielmehr sollten sich beliebige Einheiten
in einer nicht vorgegebenen Form zusammensetzen und mit einem Namen versehen
Auch Abkürzungen
durch den Benutzer
definiert
18
2 Grundlagen
lassen. So muss es bspw. möglich sein, den Ausdruck kg·m/s² als N darzustellen,
ohne dass die Bedeutung verloren geht.
2.5.4 Bedienbarkeit
Neben den bereits vorgestellten Rubriken Flexibilität und Übersichtlichkeit ist die
Bedienbarkeit von elementarer Bedeutung, um einen Anwender von dem Tool zu
überzeugen. Eine komplizierte und schwerfällige Bedienung löst Frust aus, wodurch
der Benutzer das Programm kaum verwenden wird.
Integrierte Lösung
Ein wichtiges Kriterium ist, dass auf die Funktionalität direkt aus Excel zugegriffen
werden kann. Falls die Prüfung in einem separaten Programm abläuft, das gesondert
aufgerufen werden muss und über das die zu prüfende Datei ausgewählt wird, ist
ein sehr umständlicher Ablauf nötig. Eine permanente Kontrolle wäre dadurch nicht
möglich und den Anwender würde diese Vorgehensweise wahrscheinlich eher
abschrecken. Entsprechend gilt die Anforderung, dass die Lösung eine Erweiterung
von Excel und kein allein stehendes Tool ist.
Einfache Zuweisung
von Einheiten
Genauso gilt für die Zuweisung von Einheiten, dass diese sich möglichst einfach
durchführen lassen soll. Auf viele Optionen, die sich für Zellen einstellen lassen (wie
die Schriftart, das Zahlenformat, oder die Hervorhebung durch eine Füllfarbe),
können direkt aus dem Menüband in Excel zugegriffen werden, ohne ein separates
Fenster zu öffnen. Da es sich auch bei der Wahl einer Einheit um eine häufig verwendete Funktion handelt, die sich auf eine Zelle oder einen Bereich bezieht, sollte
diese ebenfalls ohne den Aufruf eines externen Programms und ohne das Öffnen
eines Dialogs auskommen – ein Anwender wird sich nicht darauf einlassen, den
anzupassenden Bereich in Form von Referenzen anzugeben. Stattdessen muss es
über die Markierung in Excel (genauso wie bei den anderen auf Zellen bezogene
Optionen) möglich sein, Einheiten zu setzen – das entspricht der üblichen Arbeitsweise und reduziert den Aufwand auf ein Minimum.
Deklaration von Einheiten als optionales
Angebot
Ein weiteres Merkmal der Bedienbarkeit betrifft die bereits vorgestellte Idee, dass
keine Liste möglicher Einheiten fest vorgegeben ist, sondern der Benutzer die Deklaration selbst übernimmt. Diese Freiheit kann schnell negativ ausgelegt werden,
wenn dadurch ein zu großer Aufwand entsteht. Aus diesem Grund sollte auch ohne
deklarierte Einheiten eine Prüfung durchgeführt werden können. Selbst wenn nicht
bekannt ist, dass es die Einheiten m und s gibt, dürfen diese nicht zusammengezählt
werden. Zwar verzichtet der Anwender auf den Luxus von abkürzenden Schreibweisen (siehe 2.5.3 Übersichtlichkeit, S. 17), da ohne Festlegung nicht auf mögliche
Zusammenhänge geschlossen werden kann (z. B. kann nicht verlangt werden, dass
m ohne entsprechende Definition als Meter erkannt wird – schließlich könnten
damit durchaus auch verschiedene Einheiten gemeint sein), aber auch hier gilt der
Grundsatz, dass dem Benutzer keine Last auferlegt werden soll, weshalb er selbst
2.5 Anforderungen
19
entscheiden sollte, ob er eine Sammlung möglicher Einheiten angibt, oder ob er
darauf verzichtet.
Zum Abschluss der Anforderungen an die Bedienbarkeit soll nochmals unterstrichen
werden, dass der Anwender grundsätzlich über dem Tool steht. Sollte bei einer
Zuweisung oder Berechnung ein Fehler entstehen, ist es die Aufgabe des Programms, eine Fehlermeldung in geeigneter Form auszugeben. Falls der Anwender
sich trotz dieser Warnung für die gesetzte Einheit oder Formel entscheidet, übernimmt er selbst die Verantwortung und sollte durch das Add-In nicht davon abgehalten, oder zu komplizierten Manövern gezwungen werden, um seine Vorstellung
durchzusetzen. Eine zu fürsorglich gemeinte Prüfung erschwert dem Nutzer die
Bedienung und hält ihn eher davon ab, die Unterstützung überhaupt in Anspruch zu
nehmen.
Der Anwender steht
über dem Tool
21
3 Bestehende Ansätze
In diesem Kapitel werden zwei Programme (UCheck und XeLda) vorgestellt, die sich
der beschriebenen Problemstellung (also der Prüfung von Einheiten) annehmen und
dabei grundsätzlich verschiedene Ansätze wählen. Die folgenden Abschnitte fassen
die Grundlagen dieser Tools zusammen und bewerten sie; ein Vergleich mit der
eigenen Implementierung folgt in der Diskussion (siehe 5.3 Vergleich mit bestehenden Ansätzen, S. 67).
3.1 UCheck
Ein Ansatz zur Evaluierung von Fehlern bezüglich Einheiten in Excel-Dateien ist
UCheck. In den folgenden Abschnitten werden der Grundgedanke erläutert, die
Funktionsweise zur Zuweisung von Einheiten anhand von Tabellen geklärt, die
Grenzen des Tools untersucht und eine abschließende Bewertung gegeben. Grundlage sind zwei Ausarbeitungen von Martin Erwig, Robin Abraham und Margaret
Burnett, auf die auch für nähere Details an dieser Stelle verwiesen sei. [Erw02]
[Abr07]
3.1.1 Grundlagen
Der Grundgedanke von Martin Erwig, Robin Abraham und Margaret Burnett ist es,
mit UCheck ein Tool zur Verfügung zu stellen, das zum einen in Excel integriert ist
und zum anderen möglichst wenig Aufwand zur Bereitstellung von Informationen
durch den Benutzer erfordert. Sie verfolgen das Ziel, Endanwendern ein verlässliches Entwickeln und Pflegen von Spreadsheets zu ermöglichen und die bislang hohe
Anzahl an Fehlern in Excel-Dateien zu reduzieren.
Das Add-In hat den Anspruch, auf zusätzliche Annotationen durch den Endanwender in Form expliziter Eingaben zu verzichten und damit eine sehr einfache Handhabung zu gewährleisten. Dadurch wird außerdem sichergestellt, dass bereits existierende Dateien ohne besonderen Mehraufwand systematisch analysiert werden
können. Die Entwickler versuchen diesen Ansprüchen gerecht zu werden, indem sie
auf bestehende Tabellenstrukturen zurückgreifen und die Einheiten von Zellen
anhand ihrer Tabellen-Überschriften (oder auch „Header“) ermitteln. Diese Header
können am oberen und am linken Rand der Tabelle stehen, sodass sich eine Zelle
aus bis zu zwei Einheiten zusammensetzen kann.
Als Beispiel verwenden die Autoren ein Spreadsheet, das die Ernte von Früchten
darstellt (siehe Abbildung 2). Den Monaten Mai und Juni werden Mengen der Früchte Äpfel und Birnen zugeordnet (im Originaltext wird der im Englischen bekannte
sprichwörtliche Vergleich von Äpfeln und Orangen verwendet).
Anspruch geringer
Nutzerangaben durch
Auslesen bestehender
Tabellenstrukturen
22
3 Bestehende Ansätze
Abbildung 2: Ernte-Übersicht als Anwendungsfall von UCheck (vgl. [Erw02])
Die Tabelle gibt keinen Aufschluss darüber, ob es sich bei den Werten um Stückzahlen, abgearbeitete Bäume, Säcke oder Sonstiges handelt, sodass lediglich eine Zuweisung zum Monat und zur entsprechenden Frucht erfolgen kann. Die Aufgabe von
UCheck besteht darin, das Zusammenzählen von Äpfeln und Birnen verschiedener
Monate zu verbieten bzw. auf den Fehler hinzuweisen. Bspw. ergibt die Addition der
Äpfel aus dem Monat Mai und der im Juni geernteten Birnen wenig Sinn.
3.1.2 Zuweisung von Einheiten
Eine der größten Herausforderungen an UCheck ist das Identifizieren von Tabellen
in einem Spreadsheet, damit daraus die Zuweisung entsprechender Einheiten abgeleitet werden kann. Dazu schlagen Martin Erwig und Margaret Burnett drei grundsätzliche Verfahren vor:
1. Vordefinierte Informationen: Einige Einheiten könnten vorab festgelegt und
direkt im Tool verankert werden. Bspw. ist die Tatsache, dass es sich bei
„Mai“ um einen Monat handelt, generell bekannt, sodass diese Einheit im
Vorfeld zugewiesen werden kann.
2. Formatierung: Sollte ein Anwender Rahmen oder Hintergrundfarben zum
optischen Hervorheben einer Tabelle verwenden, können diese Informationen zum Abgrenzen der Tabellenränder verwendet werden. Daraus ließen
sich Rückschlüsse über die Header und damit über die Einheiten der Zellen
ziehen.
3. Flächen- und Inhaltsanalyse: Schließlich kann auch der eigentliche Inhalt einer Tabelle und deren Anordnung untersucht werden. Es wird davon ausgegangen, dass statische Texte am oberen oder linken Rand HeaderInformationen darstellen. Die Hauptregion, häufig bestehend aus Zahlen, beinhaltet die Werte, denen die Einheiten aus den Headern der Tabelle zugewiesen werden. Ein letzter Bereich sind Footer, die mithilfe von Formeln
zum Abschluss einer Tabelle die Ergebnisse berechnen, wie etwa die Summe
der Werte einer Spalte oder Zeile.
3.1 UCheck
23
3.1.3 Einschränkungen
Da alle Informationen aus der bestehenden Struktur ausgelesen werden sollen, spart
sich das Tool nicht nur das Ablegen zusätzlicher Daten im Arbeitsblatt, sondern
bietet dem Benutzer auch eine möglichst einfache Handhabung – gleichzeitig ergeben sich daraus aber auch gewisse Einschränkungen.
Zunächst wird grundsätzlich von strukturierten Tabellen innerhalb des Spreadsheets ausgegangen, sodass sich die semantische Prüfung auf einzelne, jeweils zu-
Vorgegebene Struktur
nötig
sammenhängende Bereiche beschränkt. Sobald Werte aus verschiedenen Bereichen
oder gar aus verschiedenen Dateien herangezogen werden, prüft das System nicht
mehr zuverlässig. Das Konzept verspricht also, keine gesonderte Eingabe durch den
Anwender zu benötigen, verlangt aber gleichzeitig eine standardisierte Struktur, die
eingehalten werden muss.
Eine weitere Einschränkung von UCheck ist die Ableitung der Einheit allein aus der
zugehörigen Überschrift der entsprechenden Zelle. Das Tool stößt an seine Grenzen,
sobald im Tabellenkopf nicht der Name der Einheit, sondern eine Beschreibung des
Spaltenüberschrift
darf nur die Einheit
beinhalten
Wertes hinterlegt ist. Als Beispiel ist in Abbildung 3 ist eine beispielhafte Gegenüberstellung von monatlichen Erträgen und Aufwendungen dargestellt. Als Einheiten werden „Ertrag“ und „Aufwendung“ festgelegt, die keine gemeinsame Basis
haben und sich damit nicht zusammenzählen lassen.
Abbildung 3: Gegenüberstellung von Erträgen und Aufwendungen
Selbst wenn in der Kopfzeile jeweils die Angabe „in Euro“ oder „[€]“ ergänzt, oder
die Werte-Zellen in Excel als Währung formatiert werden, sodass ein Euro-Zeichen
auf den numerischen Wert folgt, sieht UCheck in der Berechnung einen Fehler. Um
diesen aufzulösen müsste die Einheit von Ertrag, Aufwendung und Ergebnis explizit
verknüpft werden, indem „Euro“ in der Zelle über „Ertrag“ hinterlegt wird. Diese Art
der Einheiten-Zuweisung ist optisch ungewohnt, sie erlaubt keine klar strukturierte
Tabelle mit einer Überschriften-Leiste und der Anspruch auf zusätzliche Nutzerangaben zu verzichten wird nicht erfüllt.
Schließlich können durch das Tool keine Zusammenhänge zwischen Einheiten
modelliert werden. In Abbildung 4 werden die Kosten zweier Mitarbeiter auf Basis
ihres Stundensatzes und ihres Zeit-Aufwandes berechnet.
Keine Zusammenhänge zwischen Einheiten
modellierbar
24
3 Bestehende Ansätze
Abbildung 4: Berechnung von Kosten für Mitarbeiter
Für den menschlichen Betrachter ist offensichtlich, dass die Multiplikation des
Stundensatzes in Euro pro Stunde mit der aufgewendeten Zeit in Stunden die Kosten
in Euro ergeben. Durch UCheck kann dieser Zusammenhang nicht ermittelt werden,
da jede Überschrift als separate Einheit behandelt wird. Diese Unzulänglichkeit kann
auch durch das Auslagern der Einheit in die darüber liegende Zeile nicht ausgeglichen werden.
3.1.4 Bewertung
Zusammenfassend lässt sich über das vorgestellte Excel-Plugin sagen, dass es auch
ohne nennenswerten Mehraufwand durch den Anwender möglich sein kann, die
zugewiesenen Einheiten einer tabellarischen Übersicht zu ermitteln und eine semantische Prüfung der Berechnungen durchzuführen. Da sich das Tool allein auf
sichtbare Eingaben stützt und keine zusätzlichen Daten versteckt ablegt, können
Dateien problemlos zwischen verschiedenen Benutzern ausgetauscht werden, unabhängig davon, ob sie das Add-In installiert haben, oder nicht. Außerdem lassen
sich auch bereits existierende Spreadsheets evaluieren, ohne dass zusätzliche Eingaben nötig sind.
Voraussetzung für eine funktionsfähige und sinnvolle Analyse ist allerdings immer,
dass die Arbeitsblätter in einem festgelegten Schema vorliegen und keine komplexen Zusammenhänge zwischen den Werten oder deren Einheiten bestehen. Die
Autoren der Ausarbeitungen gehen davon aus, dass die Daten üblicherweise in Form
dedizierter Tabellen dargestellt sind, deren Kopfzeilen die Einheiten der Zellen
definieren. Einen typischen Anwendungsfall stellen die Autoren in ihrer Übersicht
der geernteten Früchte vor, nennen aber kein Beispiel, in dem mehr als nur Stückzahlen aufgelistet sind.
Fazit
Liegt also eine Excel-Datei vor, die der geforderten Struktur entspricht, bzw. die
ohne Umstände in die gewünschte Form abgeändert werden kann, ist die Erkennung
einiger semantischer Fehler möglich. Ansonsten sind teilweise erhebliche Änderungen zu Lasten der Lesbarkeit am Arbeitsblatt nötig, oder (bei Zusammenhängen
zwischen Einheiten) eine sinnvolle Evaluierung der Daten gar nicht möglich.
3.2 XeLda
25
3.2 XeLda
Ein weiterer Ansatz, der ein ähnliches Ziel wie UCheck verfolgt, dabei aber eine
grundsätzlich andere Vorgehensweise wählt, wurde 2004 auf der Konferenz zu
Software Engineering in Schottland vorgestellt. Die folgenden Abschnitte beziehen
sich ausschließlich auf die dazu veröffentlichte Ausarbeitung „Validating the Unit
Correctness of Spreadsheet Programs“ und geben einige Kerngedanken wieder.
[Ant04]
3.2.1 Grundlagen
Während UCheck auf eine möglichst einfache Handhabung setzt und keine Anpassungen durch den Anwender verlangen möchte, hat XeLda einen eher wissenschaftlichen Anspruch. Entsprechend können nicht nur Mengenangaben, sondern auch
komplexe Einheiten (wie m/s²) abgebildet werden.
Ausgangpunkt für eine Überprüfung ist grundsätzlich das XeLda Control Panel
(siehe Abbildung 5), in dem die entsprechende Excel-Datei ausgewählt und die
Analyse gestartet werden. Das Tool öffnet das angegebene Tabellenblatt, ergänzt es
um zugewiesene und berechnete Einheiten in Form von Kommentaren und hebt die
betroffenen Zellen farblich hervor. Gleichzeitig werden Abhängigkeiten mithilfe von
Pfeilen dargestellt, die von der aufrufenden Formel ausgehen und auf die referenzierten Werte zeigen. Schließlich werden aufgetretene Fehler mit einer Beschreibung der Ursache als Kommentar an die Zelle angehängt, in der eine Inkonsistenz
festgestellt wurde.
Abbildung 5: Control Panel von XeLda [Ant04]
3.2.2 Umgang mit Einheiten und Fehlern
Um Einheiten zuzuweisen bietet XeLda zwei grundsätzliche Vorgehensweisen. Zum
einen können sie im ursprünglichen Spreadsheet in Form von Kommentaren eingetragen werden, zum anderen ist es im Control Panel des Tools möglich, gesamte
Bereiche über die Angabe der entsprechenden Bezeichner mit Einheiten zu versehen – dadurch werden diese Zellen ebenfalls um Kommentare ergänzt.
Verwendung von
XeLda
26
Analyse zum Evaluieren gesetzter Einheiten
3 Bestehende Ansätze
Durch die Analyse werden Formeln evaluiert und Einheiten ermittelt, wobei nicht
nur die vier Grundrechenarten, sondern auch einige Excel-Funktionen berücksichtigt werden. Dazu ist jede unterstützte Funktion als eigenes Modul implementiert,
das anhand des Bezeichners und der Parameter eine resultierende Einheit berechnet. Das Ergebnis einer Analyse ist das Tabellenblatt der zuvor gewählten ExcelDatei mit entsprechenden Anpassungen der Kommentare und farblichen Hervorhebungen. Abbildung 6 zeigt ein Beispiel, das aus der Dokumentation von XeLda übernommen wurde und verschiedene Szenarien behandelt.
Abbildung 6: Ergebnis einer Überprüfung durch XeLda [Ant04]
Ergebnis der Analyse
Die durch das Tool eingefügten farblichen Markierungen, die auch in der Abbildung
erkennbar sind, haben unterschiedliche Bedeutungen:

Orange (Zeile 5): Diese Farbe bedeutet, dass eine berechnete Einheit nicht
mit der vom Benutzer zugewiesenen übereinstimmt.

Gelb (Zeile 12): Hier wird auf einen Fehler innerhalb der Formel hingewiesen. Die Operatoren Plus und Minus sowie Vergleichsoperatoren dürfen nur
auf identische Einheiten angewendet werden, ansonsten wird ein solcher
Fehler angezeigt.

Magenta (Zeilen 2 und 9): Diese Zellen beinhalten selbst keinen Fehler, führen aber an anderer Stelle zu einem. Die blauen Pfeile zeigen, in welcher
Formel eine ungültige Berechnung aufgrund der Referenz zu diesem Wert
entsteht.
Neben den zugewiesenen Einheiten werden auch Fehler in Form von Kommentaren
ausgegeben, die auch eine detaillierte Beschreibung für die Ursache der angezeigten
Meldung beinhalten.
Coercion (EinheitenUmwandlung)
Eine Besonderheit bietet das Tool durch die Möglichkeit der EinheitenUmwandlung. Dazu muss im Control Panel (Abbildung 5) unter „Unit Coercions“ der
Bezeichner der Zelle und die gewünschte Umwandlung angegeben werden. Existiert
bspw. ein Wert in cm und einer in inch, können die beiden nicht ohne weiteres
zusammengezählt werden. Um das zu ermöglichen kann der Anwender die Zelle mit
3.2 XeLda
27
der Zoll-Angabe in Zentimeter umrechnen. Dazu ergänzt das Tool die Formel bzw.
den Wert um den Faktor 2,54 und ändert die Einheit zu cm. Da das Tool die Quelldatei nicht manipuliert und die Umrechnung allein für das Ergebnis durchgeführt wird,
ist das Ergänzen um einen Faktor ohne weiteres möglich.
3.2.3 Bewertung
Die Beschreibung zeigt deutlich, dass mit XeLda eine andere Zielgruppe erreicht
werden soll, als es bei UCheck der Fall ist. Das hauptsächliche Anwendungsgebiet ist
im Bereich wissenschaftlicher Berechnungen anzusiedeln. Dazu bietet das Tool
einen großen Funktionsumfang, sodass auch komplexe Sachverhalte analysiert
werden können. Zwar müssen die Einheiten im Gegensatz zu UCheck den Zellen
händisch zugeordnet werden, dafür lassen sich diese tatsächlich verarbeiten und bei
Formeln automatisch ermitteln.
Schwierig kann der Umgang mit dem Programm werden, wenn das zu untersuchen-
Nachteile von XeLda
de Tabellenblatt bereits farbig hinterlegte Zellen beinhaltet, da diese (falls identische Farben verwendet werden) nicht von den durch das Tool ergänzten Markierungen unterschieden werden können. Noch problematischer ist die Verwendung
von Kommentaren, die keine Einheiten, sondern tatsächlich Anmerkungen für den
menschlichen Betrachter beinhalten. Da es keine Möglichkeit gibt, diese gesondert
kenntlich zu machen, werden sie für annotierte Einheiten gehalten und bringen
entsprechende Probleme mit sich.
Insgesamt kann der Ansatz, die Datei in ein externes Programm zu laden, um
schließlich ein Ergebnis separat anzuzeigen, als sehr umständlich bezeichnet werden. Das geöffnete Tabellenblatt ist tatsächlich nur als Darstellung der Ergebnisse zu
betrachten und sollte aufgrund der ergänzten Kommentare, Markierungen und
Pfeile nicht zur weiteren Verarbeitung genutzt werden – stattdessen ist vorgesehen,
wieder auf die ursprüngliche Datei zurückzugreifen.
Gleichzeitig bieten sich dadurch aber auch Chancen, die es bei einer permanenten
Vorteile von XeLda
Prüfung mithilfe eines Add-Ins nicht gäbe. Die vielen Änderungen, die nach der
Analyse am Spreadsheet vorgenommen werden, zeigen genau, an welcher Stelle
Fehler aufgetreten sind und wie sie zustande kommen. Auch die EinheitenUmwandlungen ließe sich schwerer realisieren, wenn sie während der Bearbeitung
durchgeführt werden könnte, da dann nicht mehr unterschieden werden könnte, ob
die Coercion durch das Tool ausgelöst wurde, oder ob der Anwender den Faktor
selbst hinterlegt hat.
Zusammenfassend wirkt sich der von XeLda gewählte Ansatz sowohl positiv als
auch negativ aus: Der Umgang mit einem externen Programm und die Trennung
zwischen Eingabe der zu prüfenden Datei und der reinen Ausgabe der Ergebnisse
bringen eine umständliche Handhabung mit sich. Dafür bieten sich der Implemen-
Fazit
28
3 Bestehende Ansätze
tierung dadurch viele Freiheiten zur detaillierten Darstellung der Ergebnisse, die
andere Ansätze nicht hätten. Insgesamt kommt XeLda seinem Anspruch nach, Experten ein mächtiges Werkzeug mit vielfältigen Möglichkeiten zu bieten. Für den
beruflichen Alltag oder private Anwendungsgebiete ist es hingegen eher ungeeignet,
da sich der durchschnittliche Benutzer durch die entstehenden Mehraufwände
kaum von den Vorteilen überzeugen lässt.
29
4 Implementierung
Das Kernstück dieser Ausarbeitung ist die eigentliche Umsetzung des Tools zur
Prüfung von Einheiten. Dazu werden zunächst mögliche Technologien zur Realisierung vorgestellt und anschließend die Funktionsweise des implementierten Tools
Chexcell ausführlich beschrieben. Dabei werden zwar immer wieder Hinweise zur
Bedienung der Oberfläche gegeben, eine ausführliche Anleitung zur Installation,
Einrichtung und Handhabung befindet sich allerdings im Anhang B. Ebenso wurde
auf die Erklärung von Quelltext verzichtet und der Schwerpunkt auf die verschiedenen Prinzipien und Gedankengänge zur Implementierung gelegt. Der gesamte Code
des Projekts kann über die beigefügte CD eingesehen werden (siehe Anhang C).
4.1 Vergleich möglicher Technologien
Die angestrebte Erweiterung von Excel um einen Automatismus zur Prüfung von
Einheiten lässt sich mithilfe verschiedener Technologien umsetzen. Dabei wurden
Excel-Makros und eine Erweiterung auf Basis von VSTO in Betracht gezogen. Ein
separates Tool, das eine gegebene Datei prüft und das Ergebnis losgelöst von Excel
ausgibt, wird an dieser Stelle ausgeschlossen, da die Anforderung einer integrierten
Lösung mit unmittelbarer Benutzer-Interaktion besteht (siehe 2.5.4 Bedienbarkeit, S.
18).
4.1.1 VBA Makro
Das wohl bekannteste Mittel zum Programmieren in Office ist die Verwendung von
Makros. Der Anwender kann auch ohne Programmier-Kenntnisse Arbeitsabläufe
VBA (Visual Basic for
Applications)
aufzeichnen, aus denen automatisch der entsprechende Code generiert wird. Die
generierte Routine kann anschließend mit Schaltflächen oder Tastenkombinationen
verknüpft und dadurch auf einfache Weise wiederholt ausgeführt werden. Darüber
hinaus können solche Makros auch eigenständig in VBA (Visual Basic for Applications), einer an Visual Basic orientierten Skript-Sprache für Office-Produkte, erstellt
werden. Auf diese Weise lassen sich auch Dialog-Fenster implementieren, die Benutzereingaben entgegennehmen oder Einstellungen verwalten können. [Mac07]
[Buh05]
Eine weitere Fähigkeit von VBA, die häufig in der Literatur vernachlässigt wird, ist
die Möglichkeit zur objektorientierten Programmierung. Während die meisten
kleinen Makros dafür keine Verwendung haben, wird umfangreichen Tools (wie es
bei dem angestrebten Einheiten-Prüfsystem der Fall ist) eine solide Basis für einen
strukturierten Entwurf geboten. Auch wenn der objektorientierte Ansatz von VBA
im Vergleich zu anderen Sprachen sehr rudimentär ist, sind wichtige Merkmale, wie
Polymorphismus und statische Klassen, vorhanden. [Kim04]
Objektorientierte
Programmierung in
VBA
30
Reguläre Ausdrücke in
VBA
4 Implementierung
Die Flexibilität von VBA erlaubt sogar den Aufruf von VBScript (Visual Basic Script),
wodurch reguläre Ausdrücke4 in einem Makro verwendet werden können [Mic99]
[Ste03]. So können eingegebene Daten leicht analysiert und zwischen Wert und
Einheit unterschieden werden. Auch beim Zerlegen von Formeln und zusammengesetzten Einheiten kann auf diese Art der Zeichenketten-Analyse zurückgegriffen
werden. Insbesondere beim Parsen von Eingaben zum Unterscheiden der Werte von
den Einheiten wird auf reguläre Ausdrücke zurückgegriffen – darauf wird in Abschnitt 4.3.2 (S. 37) näher eingegangen.
Nachteile
Durch ein integriertes Makro lässt sich relativ schnell und ohne besondere Umstände eine Unterstützung für den Benutzer entwickeln. Der Nachteil dieses Ansatzes ist,
dass der Quelltext in die Datei eingebettet ist und sich somit nur auf ein bestimmtes
Arbeitsblatt bezieht. Soll das Tool auf andere Daten übertragen werden, muss entweder der Quelltext kopiert werden, oder der Benutzer muss die zu überprüfenden
Zellen in die Datei mit dem hinterlegten Makro transferieren. Es wird also ein sehr
umständliches Vorgehen verlangt.
VBA als Add-In ablegen
Alternativ kann der hinterlegte Quellcode als Add-In abgelegt werden. Damit bezieht
sich das Programm nicht alleine auf das zugehörige Arbeitsblatt, sondern kann auf
beliebige Spreadsheets angewandt werden, als hätte jede dieser Dateien dasselbe
Makro hinterlegt. Außerdem kann das Add-In in Form einer eigenständigen Bibliothek exportiert und weitergegeben werden, sodass es auch andere Anwender installieren können. [Wal11]
4.1.2 VSTO Add-In
VSTO (Visual Studio
for Office)
VSTO steht für „Visual Studio for Office“ und ist eine Plattform zur Entwicklung von
Office Lösungen auf Basis des .NET Frameworks. Vor der Einführung von VSTO 1.0
mit Visual Studio 2003 mussten VBA und COM Interop als Schnittstelle – die als
anspruchsvoll und umständlich beschrieben wird – zwischen .NET und den OfficeProdukten verwendet werden. Mit VSTO will Microsoft eine einfache und umfassende neue Möglichkeit zur Entwicklung von Add-Ins anbieten. [Bru06]
Vorteile
Der Vorteil von VSTO liegt hauptsächlich in der Verwendung des .NET Frameworks,
da der Programmierer nicht zur Nutzung der relativ beschränkten Sprache VBA
gezwungen wird, sondern zwischen VB.NET, C# etc. wählen kann. Außerdem steht
mit Visual Studio ein mächtiges Entwicklungstool zur Verfügung, dessen Möglichkei-
Reguläre Ausdrücke sind Beschreibungen von Mustern bzw. syntaktischer Regeln, die im
gegebenen Anwendungsfall eines Einheiten-Prüfsystems sehr nützlich sind. Sie sind für das
Parsen von Eingaben zum Zuweisen von Einheiten von zentraler Bedeutung (siehe 4.3.2 Über
Eingabe zuweisen, S. 33). Für eine allgemeine Einführung in den Aufbau und die Funktionsweise von regulären Ausdrücken sei auf das umfassende Werk „Mastering Regular Expressions“ von Jeffrey E. F. Friedl verwiesen [Fri06].
4
4.1 Vergleich möglicher Technologien
31
ten durch den schlichten VBA-Editor niemals erreicht werden. Auch die Integration
in die grafische Oberfläche der Office-Anwendungen lässt sich ohne Schwierigkeiten
umsetzen, da neue Menübänder angelegt bzw. bestehende erweitert werden können
und sich weitere Steuerelemente in Aufgabenbereichen innerhalb des Hauptfensters
der Anwendung darstellen lassen. [Ver06] [Tha09]
Bei der Entwicklung von Add-Ins zeigt sich eine Schwachstelle von VSTO, die auf den
unterschiedlichen Datenmodellen von Office und .NET beruht. Während die .NET
Sprachen auf eine starke Typsicherheit bauen, werden die Typen im Office DatenModell teilweise erst zur Laufzeit ermittelt. Damit die Schnittstelle diese Daten
dennoch verarbeiten kann, wird für Zugriffe auf Office-Objekte der mit .NET 4.0
eingeführte Datentyp „dynamic“5 verwendet. Dieser entspricht etwa dem Verhalten
von VBA mit der ausgeschalteten Option zur expliziten Typdefinition („Option Explicit“) und unterbindet die statische Typprüfung durch den Compiler, sodass beim
Zugriff auf Objekte über die Schnittstelle zur Laufzeit Typfehler auftreten können.
Aus diesem Grund sollte auf diesen Datentyp soweit möglich verzichtet bzw. eine
manuelle Prüfung vor dem Verwerten entsprechender Werte durchgeführt werden,
um damit verbundene Programmabstürze zu vermeiden. [Ver06]
Da umfassende Beschreibungen der Architektur mit allen Vor- und Nachteilen oder
detaillierte Einführungen in die Vorgehensweise des Programmierens mit VSTO den
Rahmen dieser Ausarbeitung sprengen würden, bieten sich „VSTO For Dummies“
[Sem11] und der von Microsoft zusammengestellte Leitfaden6 als Einführung und
Lektüre an.
4.1.3 Bewertung
Visual Basic for Applications ist ein mächtiges Tool, das zwar von den meisten Anwendern nur sehr oberflächlich genutzt wird, aber vielfältige Möglichkeiten zur
Entwicklung komplexer Anwendungen bietet. So ist bspw. wenig bekannt, dass sich
mit VBA Add-Ins nach objektorientiertem Ansatz entwickeln lassen, die reguläre
Ausdrücke auswerten. Die beschriebenen Ansprüche (siehe 2.5 Anforderungen, S.
14) ließen sich also durchaus auf Basis gewöhnlicher VBA-Makros lösen.
Dennoch soll die gewünschte Excel-Erweiterung mithilfe der noch jüngeren VSTOTechnologie umgesetzt werden. Zum einen lässt sich das Add-In attraktiver für den
Anwender gestalten, indem die Funktionen in die für den Benutzer bereits bekannte
Der Datentyp „dynamic“ wird unter http://msdn.microsoft.com/enus/library/dd264736.aspx und http://msdn.microsoft.com/en-us/library/dd233052.aspx
genauer beschrieben.
5
Der Leitfaden von Microsoft zum Erstellen von VSTO Add-Ins ist unter
http://msdn.microsoft.com/en-us/library/jj620922(v=vs.110).aspx erreichbar.
6
Schwachstellen
32
4 Implementierung
Struktur von Ribbons und Aufgabenbereiche integriert werden. Zum anderen wurde
bei der Entscheidung berücksichtigt, dass VSTO ein zukunftssicherer Ansatz ist, den
Microsoft weiterentwickeln und verbessern wird, sodass sich auch künftige Anpassungen am Tool ohne Probleme umsetzen lassen.
4.2 Einheiten deklarieren und definieren
Da von Chexcell keine Liste möglicher Einheiten festgeschrieben sein soll, muss der
Anwender die Möglichkeit erhalten, diese selbst festzulegen. Damit ist die Pflege von
Einheiten eine grundlegende Funktionalität, die das Tool unterstützen muss (siehe
2.5.2 Flexibilität, S. 15). In den folgenden Abschnitten werden die verschiedenen
Möglichkeiten zum Deklarieren, Definieren und Weitergeben von Einheiten vorgestellt.
Unterscheidung von
Deklaration und
Definition
Wie in der Softwareentwicklung wird dabei das Festlegen eines Bezeichners Deklaration genannt (insbesondere bei den zunächst vorgestellten Basiseinheiten); die
Definition einer Einheit meint allerdings nicht die Speicherreservierung, wie es beim
Programmieren der Fall ist [Lou10], sondern bezeichnet das Zuweisen der Bedeutung zu einer Einheit, also die Beschreibung der Zusammensetzung von abgeleiteten
Einheiten.
4.2.1 Basiseinheiten
Basiseinheiten (atomare Einheiten)
Grundsätzlich wird zwischen atomaren und abgeleiteten Einheiten unterschieden.
Erstere werden auch Basiseinheiten genannt und erhalten ihre Bedeutung rein aus
ihrem Namen, sodass sich Gleichheit und Ungleichheit zweier Basiseinheiten anhand
ihrer Benennung bestimmt. Dabei kann es sich um SI-Basiseinheiten (siehe 2.3.2
Einheiten, S. 9) wie Meter, Kilogramm oder Sekunde handeln, aber auch um sonstige
grundlegende Einheiten wie Euro oder Stück.
Abbildung 7: Chexcell im Ribbon
Zur Pflege der atomaren Einheiten kann im Ribbon „Überprüfen“ im Bereich von
Chexcell mithilfe des Buttons „Settings Pane“ der Aufgabenbereich des Tools geöffnet werden (siehe Abbildung 7). Dort gibt es den Abschnitt „Base Units“ mit einer
Übersicht der angelegten Basiseinheiten und Buttons zum Hinzufügen und Löschen
atomarer Einheiten (siehe Abbildung 8).
4.2 Einheiten deklarieren und definieren
33
Abbildung 8: Pflege der Basis-Einheiten im Aufgabenbereich
Durch das Deklarieren legt der Anwender fest, welche Basiseinheiten grundsätzlich
existieren. Ob dabei die ausgeschriebenen Bezeichnungen oder Abkürzungen ver-
Deklarieren von
Basiseinheiten
wendet werden, liegt im Ermessen des Benutzers, da dieser die Namenswahl übernimmt. Es werden nur Namen zugelassen, die noch nicht hinterlegt sind und ungültige Zeichen, wie Zahlen oder Operatoren, werden automatisch entfernt, sodass
keine Doppeldeutigkeit zwischen Einheiten und Berechnungen entstehen kann.
Ansonsten ließe sich z. B. eine Basiseinheit mit dem Namen m/s deklarieren, die
nicht von der Division aus m und s unterschieden werden könnte.
In einigen Fällen steht die Einheit nicht hinter dem betreffenden Wert, sondern
ergibt sich aus der Formatierung des Wertes selbst (siehe 2.5.2 Flexibilität, S. 15).
Einheit am Zahlenformat erkennen
Bspw. lässt sich aus der Zeichenkette „23.03.2015“ aufgrund der Darstellung ableiten, dass es sich um ein Datum handelt. Die Differenz zweier Datumsangaben ergibt
in der Regel eine gewisse Anzahl an Tagen, die durch das Tool auch als solche bezeichnet werden sollten.
Dazu können Basiseinheiten im Feld „NumberFormat“ optional um ein Zahlenformat
ergänzt werden, anhand dessen sie erkannt werden. Im gegebenen Fall könnte also
eine Einheit „Tage“ angelegt werden, die mit dem Format „TT.MM.JJJJ“ verknüpft
wird. Sobald diese Zeichenkette im Zahlenformat einer Zelle hinterlegt ist, wird der
Wert automatisch dieser Basiseinheit zugeordnet, sodass die korrekte Einheit auch
ohne entsprechendes Suffix ermittelt wird. Damit wird der Anforderung nachgekommen, dass alle Einheiten vom Benutzer festgelegt werden und nicht im Tool fest
verankert sind (siehe 2.5.2 Flexibilität, S. 15).
4.2.2 Abgeleitete Einheiten
Zu den SI-Einheiten gehören auch solche, die sich aus Potenzprodukten der festgelegten SI-Basiseinheiten zusammensetzen lassen (siehe 2.3.2 Einheiten, S. 9). Analog
dazu können in Chexcell im Arbeitsbereich unter „Derived Units“ Kompositionen
von Einheiten definiert werden (siehe Abbildung 9).
Abgeleitete Einheiten
definieren
34
4 Implementierung
Abbildung 9: Pflege der abgeleiteten Einheiten im Aufgabenbereich
Hier können also Abkürzungen für längere oder alternative Schreibweisen eingeführt werden, indem z. B. der Zusammensetzung von m*m*m der Name m³ zugewiesen wird. Außerdem könnte bspw. festgelegt werden, dass ein Newton durch
kg*m/s² definiert ist. Dabei kann nicht nur auf Basiseinheiten zurückgegriffen
werden, sondern es können beliebig tiefe Verschachtelungen entstehen, indem sich
z. B. ein Joule aus N*m zusammensetzt und dieses wiederum in einer weiteren
abgeleiteten Einheit verwendet wird.
Regeln zur Namenswahl
Bei der Namenswahl gelten dieselben Regeln wie bei Basiseinheiten (siehe 4.2.1
Basiseinheiten, S. 32), bei der Definition der Zusammensetzung dürfen hingegen
Buchstaben, Klammern, sowie die Operatoren für Multiplikation und Division verwendet werden. Additionen und Subtraktionen sind nicht zulässig, da diese niemals
Bestandteil einer Einheitendefinition sein können (siehe 2.3.3 Rechnen mit Einheiten,
S. 10).
Einheiten werden
beim Speichern in die
Normalform konvertiert
Sobald der Anwender die Einheit hinzufügt, wird sie so zerlegt und vereinfacht, dass
sie durch einen Bruch mit Dividend und Divisor, jeweils bestehend aus Produkten
von Einheiten, ausgedrückt werden können. Gleichzeitig wird die Syntax des Ausdrucks validiert, sodass ungültige Klammerungen und falsch verknüpfte Operatoren
zurückgewiesen bzw. korrigiert werden. Die Zeichenkette wird in einer Objektstruktur abgebildet und diese in einer normalisierten Form in der Liste der abgeleiteten
Einheiten angezeigt. Wie im Kapitel zu den Grundlagen bereits festgelegt, symbolisiert der Schrägstrich jeweils einen Bruchstrich, weshalb die Multiplikation im
Divisor ohnehin Vorrang hat und eine Klammerung zugunsten der Übersichtlichkeit
eingespart werden kann (siehe 2.2.2 Konventionen, S. 7).
Zur Verdeutlichung werden in Tabelle 2 einige beispielhafte Benutzereingaben und
deren resultierende Einheit in der entsprechenden Normalform gegenübergestellt.
Eingabe
Einheit in
Normalform
Hinweis
m / s
m/s
In der Normalform werden keine Leerzeichen verwendet.
4.2 Einheiten deklarieren und definieren
35
m//s
m/s
Der überflüssige Operator wird entfernt.
m)/(s
(nicht möglich)
Schließung eines Klammerblocks, der
nicht geöffnet wurde und Öffnung eines
Klammerblocks, der nicht geschlossen
wird.
(kg/s)*m*(((m)/s))
kg*m*m/s*s
Die Klammern werden aufgelöst und
der Ausdruck auf Bruch mit Dividend
und Divisor reduziert.
1000*m
m
Zahlen werden im aktuellen Prototyp
nicht beachtet und aus der Definition
entfernt.
Tabelle 2: Transformation in die Normalform bei abgeleiteten Einheiten
Auffällig ist die Normalisierung in der letzten Zeile, da eine Definition von Kilometern als das Tausendfache eines Meters durchaus sinnvoll wäre, der Faktor jedoch
beim Normalisierungsschritt entfernt wird. Die Unterstützung inkohärenter Einhei-
Keine inkohärenten
abgeleiteten Einheiten
möglich
ten (also von solchen mit Faktoren) war in einer früheren Version des Tools implementiert, wurde für diesen Prototypen allerdings wieder entfernt, da eine automatische Erkennung, ob es sich bei einer Multiplikation um eine übliche Rechnung oder
um einen Umrechnungsfaktor handelt, schwer umzusetzen und fehleranfällig ist.
Diese Problematik und mögliche Hilfskonstruktionen werden im Zusammenhang
möglicher Erweiterungen (siehe 5.2.5 Ergänzung um Faktoren, S. 66) näher behandelt.
4.2.3 Deklarationen und Definitionen speichern
Damit der Anwender die Einheiten nicht bei jedem Laden einer Excel-Datei neu
eintragen muss, kann die Liste der Deklarationen und Definitionen gespeichert
werden. Zur Ablage der Daten sind zwei Orte sinnvoll: anwenderbezogen auf der
Festplatte des Benutzers, oder datenbezogen als Anhang im Tabellenblatt.
Standardmäßig wird die Sammlung aller Einheiten beim Beenden von Excel auf der
Festplatte gespeichert, sodass die gleichen Informationen über angelegte Einheiten
nicht für jedes Arbeitsblatt separat eingegeben werden müssen. Dazu werden die
seit .NET Framework 2.0 angebotenen „Settings“ verwendet, die Programmierern
die eigene Implementierung einer Persistenzschicht erspart. Mit diesem Konstrukt
können Einstellungen während der Entwurfsphase des Programms bzw. Add-Ins in
einer Oberfläche eingetragen und zur Laufzeit, also während der Verwendung des
Tools, verändert werden, wobei das Framework das Ablegen der Daten im Anwendungsordner des Benutzers übernimmt. Alternativ zur grafischen Oberfläche lassen
sich die Einstellungsmöglichkeiten auch als Code hinterlegen, wodurch jedes seriali-
Automatisches Speichern und Laden
36
4 Implementierung
sierbare Objekt gespeichert werden kann [Sto06]. Diese Funktionalität nutzt
Chexcell zum Speichern der Liste aller atomaren und abgeleiteten Einheiten.
Einheiten exportieren
und importieren
Das Ablegen der Daten auf der Festplatte hat den Vorteil, dass der Anwender die
Informationen nicht für jede Datei separat anlegen muss. Sollten allerdings verschiedene Personen am selben Spreadsheet arbeiten, müsste jede die Einheiten
selbst definieren. Da dies nicht nur umständlich, sondern auch fehleranfällig ist,
können die Einheiten in das Arbeitsblatt exportiert und anschließend wieder importiert werden, indem der Anwender im Aufgabenbereich die Schaltflächen „Export
Units to Workbook“ bzw. „Import Units from Workbook“ anklickt (siehe Abbildung
10). Beim Exportieren wird ein exaktes Abbild der deklarierten und definierten
Einheiten im Tabellenblatt hinterlegt, sodass bestehende Einträge überschrieben
werden. Das Importieren hingegen funktioniert additiv, d. h. alle Einheiten bleiben
erhalten und werden um die Einträge aus dem Tabellenblatt ergänzt.
Abbildung 10: Exportieren und Importieren von Einheiten
Dabei legt Chexcell ein Tabellenblatt mit dem Namen „ChexcellCollections“ an, in das
alle vorhandenen Einheiten eingetragen werden. Damit die Daten nicht stören oder
durch den Benutzer manipuliert werden können, wird dieses Tabellenblatt mit der
Sichtbarkeitsstufe „very hidden“ (also „sehr versteckt“) versehen. Im Gegensatz zu
den Sheets, die der Anwender selbst ausblendet, kann dieses nicht einfach über das
Menü händisch wieder eingeblendet werden, da es nicht einmal in dieser Übersicht
erscheint [Bla04]. Auf diese Weise können also Einheitendefinitionen für den Anwender komplett unsichtbar in der Datei abgelegt und an andere Personen weitergegeben werden.
4.3 Einheiten zuweisen
Von zentraler Bedeutung für das Add-In ist die Vorgehensweise zum Zuweisen von
Einheiten zu bestimmten Zellen. Die folgenden Abschnitte zeigen die zwei grundsätzlichen Möglichkeiten, die dem Benutzer dazu zur Verfügung stehen und erklären
die im Hintergrund ablaufenden Prozesse sowie den zentralen Ansatz zum Hinterlegen der Einheit im Zahlenformat der Zelle.
4.3.1 Über Schaltfläche zuweisen
Einheiten zuweisen
Der Bereich von Chexcell im Menüband „Überprüfen“ bietet mit der Schaltfläche
„Assign Unit“ die Möglichkeit, den markierten Zellen die eingetragene Einheit zuzu-
4.3 Einheiten zuweisen
37
weisen (siehe Abbildung 11). Im Feld „Unit“ sind atomare, aber auch zusammengesetzte Einheiten zulässig, sodass den Zellen z. B. kg, aber auch m/s zugewiesen
werden kann. Wie bei der Definition von abgeleiteten Einheiten sind beliebig komplexe Ausdrücke zulässig, die ebenfalls in die Normalform aufgelöst werden (siehe
4.2.2 Abgeleitete Einheiten, S. 33). So könnte z. B. kg*m/kg eingetragen werden,
was zu m reduziert werden würde – über die Sinnhaftigkeit solcher Eingaben lässt
sich allerdings streiten.
Abbildung 11: Schaltfläche "Assign Unit" im Ribbon
Ob die eingegebenen Einheiten zuvor durch den Anwender in der Übersicht deklariert wurden, ist irrelevant. Das Tool könnte also auch ohne eine einzige deklarierte
Einheit sinnvoll eingesetzt werden und es würde lediglich auf die Vorteile der abgeleiteten Einheiten verzichtet. Damit kommt Chexcell der Anforderung nach, möglichst wenig Interaktion durch den Anwender zu erzwingen (siehe 2.5.4 Bedienbarkeit, S. 18). In einer künftigen Version des Programms könnte der Benutzer wählen,
ob bei der Verwendung nicht deklarierter Einheiten gewarnt werden soll, oder
nicht; diese Idee wird bei der Untersuchung von Erweiterungs-Potenzial weiter
vertieft (siehe 5.2.3 Deklaration von Einheiten prüfen, S. 65).
Nach dem Betätigen des Buttons „Assign Unit“ wird die eingetragene Einheit nicht
nur den aktuell ausgewählten Zellen zugewiesen, sondern auch im Auswahlmenü
„Unit“ hinterlegt; dadurch entsteht eine Übersicht der zuletzt verwendeten Einheiten, die der Anwender als Schnellauswahl nutzen kann. Gleichzeitig zeigt das Feld
„Unit“ bei jeder Änderung der Markierung im Tabellenblatt die Einheit des aktuell
selektierten Bereichs an. Sobald nicht alle Zellen im ausgewählten Bereich mit derselben Einheit versehen sind, bleibt das Feld leer – es kann aber nach wie vor zum
Zuweisen verwendet werden, wodurch alle markierten Zellen diese Einheit erhalten.
4.3.2 Über Eingabe zuweisen
Für den Fall, dass ein bereits existierendes Tabellenblatt nachträglich mit Einheiten
versehen werden soll, ist die Schaltfläche „Assign Unit“ (besonders wegen der
Schnellauswahl und der Möglichkeit, mehrere Zellen gleichzeitig zu bearbeiten)
durchaus angenehm für den Anwender. Bei neuen Daten hingegen kann der Wechsel
zwischen der Eingabe von Werten über die Tastatur und dem Zuweisen der Einheiten mithilfe der Maus schnell lästig werden. Da Benutzerfreundlichkeit für die Akzeptanz des Tools ausschlaggebend ist (siehe 2.5 Anforderungen, S. 14), bietet
Chexcell eine weitere Möglichkeit, Zellen mit Einheiten zu versehen.
Liste zuletzt gesetzter
Einheiten
38
Parsen der Eingabe
zum Unterscheiden
zwischen Wert und
Einheit
4 Implementierung
Bei der Eingabe eines Wertes in eine Zelle wird die Zeichenkette geparst: Es wird
versucht, Zahl und Einheit voneinander zu trennen und anschließend geprüft, ob die
Zahl von Excel als solche erkannt wird. Dabei wird berücksichtigt, dass bei der
Eingabe in einer Zelle nicht nur reine Zahlen, sondern auch Dezimaltrennzeichen
(im Deutschen das Komma) und Tausendertrennzeichen (im Deutschen der Punkt)
zulässig sind. Außerdem wird die wissenschaftliche Schreibweise 7 unterstützt,
wodurch Zehnerpotenzen als Faktoren der Zahlenwerte ermöglicht werden.
Sollte das Parsen ergeben, dass es sich beim ersten Teil der Zeichenkette tatsächlich
um eine für Excel lesbare Zahl handelt und der zweite Teil eine gültige Einheit ist,
wird die getätigte Eingabe mit dieser Zahl überschrieben und anschließend die
entsprechende Einheit zugewiesen. Bei der Angabe der Einheit in der Zelle gelten
dieselben Regeln wie beim Zuweisen über den Button „Assign Unit“: Sowohl Basiseinheiten, als auch beliebig komplexe Zusammensetzungen (die durch das Tool
aufgelöst und von Klammern befreit werden) sind erlaubt. Ist das Ergebnis des
Parsens allerdings, dass Zahl oder Einheit nicht der vorgegebenen Form entsprechen (z. B. weil der Anwender Text eintragen möchte), wird keine Änderung vorgenommen, sondern die Eingabe einfach übernommen. Auf die technischen Details
zum Parse-Vorgang wird bei der Beschreibung der Schwierigkeiten näher eingegangen (siehe 4.5.3 Schwierigkeiten aufgrund der Schnittstelle, S. 54).
Der Zusammenhang zwischen eingegebenem Wert und der daraus resultierenden
Zuweisung wird anhand einiger Beispiele in Tabelle 3 verdeutlicht.
Eingabe
Zelleninhalt
Einheit
Hinweis
2m
2
m
Zahl und Einheit werden getrennt.
2,3 m/s
2,3
m/s
Auch Dezimalzahlen werden
erkannt und sind zulässig.
3 (kg/s)*((m)/s) 3
kg*m/s*s
Auch komplexe Angaben von
Einheiten sind zulässig.
2e3 m
m
Die wissenschaftliche Schreibweise in Excel hat standardmäßig zwei Nachkommastellen
und einen zweistelligen Exponenten. In diesem Beispiel
werden 2 km (bzw. 2*10³ m)
dargestellt.
2,00E+03
Unter „wissenschaftliche Schreibweise“ versteht Excel die Darstellung mithilfe einer Dezimalzahl und deren Zehnerpotenz, getrennt durch ein „E“. So wird die Eingabe „2E3“ als 2·10³
interpretiert und drückt die Zahl 2000 aus.
7
4.3 Einheiten zuweisen
39
Text
Text
Texteingaben werden unverändert übernommen.
2,2,2 m
2,2,2 m
Der erste Teil der Eingabe ist
keine gültige Zahl, deshalb
bleibt der Wert unverändert
und wird von Excel als gewöhnlicher Text erkannt; mit dieser
Zelle kann nicht gerechnet
werden.
2,3 (m/s
2,3 (m/s
Die Eingabe wird unverändert
übernommen, da keine korrekte Einheit erkannt wird (die
Klammer wird nicht geschlossen).
Tabelle 3: Beispiele für Eingaben und resultierende Zelleninhalte bzw. Einheiten
Ob der Parse-Vorgang bei jeder Änderung des Spreadsheets durchgeführt werden
soll, kann der Benutzer selbst entscheiden. Im Aufgabenbereich von Chexcell kann
dafür die Option „Automatically Check Cells“ aktiviert bzw. deaktiviert werden. Ist
Automatisches Parsen
aktivieren und deaktivieren
dieser Haken entfernt, werden die oben genannten Beispiele nicht als Zahlen mit
Einheiten erkannt, sondern als gewöhnlicher Text interpretiert. Dieser Vorgang
kann über die Schaltfläche „Check Sheet“ nachgeholt werden, da hier das gesamte
Tabellenblatt analysiert und alle Zellen mit Text geparst werden.
4.3.3 Vorgehensweise zum Hinterlegen der Einheiten
Nachdem geklärt ist, auf welche Weisen der Benutzer Einheiten zuweisen kann und
wie diese strukturiert sind, muss nun noch die Frage geklärt werden, wie die Zellen
mit diesen Informationen versehen werden – also wie die eigentliche Zuweisung
funktioniert. Chexcell liest dazu das Zahlenformat einer Zelle aus bzw. passt es an.
Das Zahlenformat wird von Excel je Zelle gespeichert und definiert, wie die Rohdaten dieser Zelle angezeigt werden sollen. Im Ribbon „Start“ kann im Bereich „Zahl“
zwischen der Darstellung als Zahl, Datum, Bruch, Text und einigen mehr gewählt
werden (siehe Abbildung 12). Je nach Anwendungsfall können durch einen Klick auf
„Mehr…“ weitere Einstellungen (wie etwa die Anzahl der Nachkommastellen oder
farbliche Hervorhebungen negativer Zahlen) getroffen werden. Das wohl am häufigsten verwendete Zahlenformat ist „Standard“, das die Zelle automatisch anhand
ihres Inhalts darstellt. Während Text sich nicht ändert, werden Datumsangaben und
Zahlen als solche erkannt, sodass sie entsprechend optisch abgebildet werden und
mit ihnen gerechnet werden kann.
Zahlenformat
40
4 Implementierung
Abbildung 12: Ausschnitt der Auswahl des Zahlenformats in Excel
Aufbau des Zahlenformats
Letztendlich handelt es sich dabei allerdings nur um eine Schnellauswahl von Excel
– genau genommen ist das Zahlenformat eine Zeichenkette, die nach einem bestimmten Muster aufgebaut ist und vorgibt, wie der Wert einer Zelle dargestellt
werden soll. Im Dialog „Zellen formatieren“ kann in der Liste „Benutzerdefiniert“
ausgewählt und damit die interne Darstellung der Formatierung eingesehen bzw.
angepasst werden. Hier bieten sich viele Möglichkeiten, von denen im Folgenden
nur einige zum besseren Verständnis aufgezeigt werden; eine vollständige Übersicht
des Aufbaus und der erlaubten Zeichen stellt Microsoft online zur Verfügung. 8 Tabelle 4 gibt einen kurzen Überblick über einige wichtige Symbole und welche Bedeutung sie im Zahlenformat einer Zelle haben.
Symbol
Bedeutung
0 (Null)
Platzhalter für eine Ziffer, die auf jeden Fall angezeigt wird.
#
Platzhalter für eine Ziffer, die nur bei Bedarf angezeigt wird.
. (Punkt)
Dient als Tausendertrennzeichen.
, (Komma)
Dient als Dezimalzeichen (darauffolgende Nullen geben an, wie viele
Nachkommastellen angezeigt werden).
@
Dient als Platzhalter für Text, der in die Zelle eingegeben wurde.
yyyy
Zeigt das Jahr als vierstellige Zahl (z. B. „2015“) an.
mmmm
Gibt den ausgeschriebenen Monatsnamen (z. B. „März“) aus.
“text“
Zeigt den zwischen den Anführungszeichen festgelegten Text an.
Tabelle 4: Übersicht einiger Symbole und deren Bedeutung im Zahlenformat
Detaillierte Beschreibungen des Zahlenformats finden sich unter
http://support.microsoft.com/kb/264372/de und https://support.office.com/dede/article/Zahlenformatierung-im-Detail-2d3ad2bf-05c2-442d-afd6-0986d431c9cf.
8
4.3 Einheiten zuweisen
41
Jedes Zahlenformat kann aus bis zu vier Abschnitten bestehen, die jeweils durch ein
Semikolon voneinander getrennt sind:
1. Abschnitt: Darstellung von positiven Zahlen
2. Abschnitt: Darstellung von negativen Zahlen
3. Abschnitt: Darstellung der Zahl 0 (Null)
4. Abschnitt: Darstellung von Text
Je nach Inhalt der entsprechenden Zelle können also unterschiedliche Darstellungen
verwendet werden. Sollte kein Format für den gegebenen Wert festgesetzt worden
sein (z. B. weil die Zelle Null oder Text beinhaltet, aber nur 2 Abschnitte festgelegt
wurden), wird die erste Spezifikation verwendet (also das Format für positive Zahlen).
Die Beispiele in Tabelle 5 verdeutlichen den Aufbau und die Verwendung der Symbole.
Zahlenformat
Erklärung
0,00
Die Zahl wird mit zwei Nachkommastellen abgebildet.
0,00E+00
Die Zahl wird mit zwei Nachkommastellen und
einer zweistelligen Zehnerpotenz dargestellt.
0,0;-0,000
Negative Zahlen werden mit drei Nachkommastellen abgebildet, alle anderen Eingaben mit einer
Nachkommastelle.
0,0;0,0"MINUS";0;"String:"@ Positive Zahlen haben eine Nachkommastelle,
negativen Zahlen wird der Text „MINUS“ angehängt, die Null wird ohne Nachkommastelle angezeigt und bei Texteingaben wird „String:“ vorgestellt.
Standard“ €“
Es wird die automatische Festlegung des Zahlenformats verwendet und die Zeichenkette „ €“
angehängt.
Tabelle 5: Beispielhafte Zahlenformate mit Erklärung
Das letzte Beispiel der Tabelle gibt einen Hinweis darauf, wie sich das Tool die
Zahlenformate zunutze macht, um Einheiten in einer Zelle zu hinterlegen: Bei der
Zuweisung wird das aktuelle Format der entsprechenden Zelle ausgelesen und in
seine bis zu vier Abschnitte unterteilt. Jeder der entnommenen Abschnitte wird
dann um die textuelle Darstellung der Einheit (jeweils in Anführungszeichen gefasst) ergänzt und das Zahlenformat überschrieben. Zum Auslesen der Einheit wird
dieser Vorgang umgekehrt und das Format nach der Zeichenkette innerhalb der
Anführungszeichen am Ende des Ausdrucks gefiltert.
Einheiten im Zahlenformat ablegen
42
Vorteile des Ablegens
der Einheiten im
Zahlenformat
4 Implementierung
Diese Vorgehensweise zum Hinterlegen von Einheiten bietet folgende Vorteile:

Für den Anwender ergibt sich bereits optisch ein übersichtliches Bild, da die
zugewiesene Einheit direkt hinter der entsprechenden Zahl angezeigt wird
und er die Zelle nicht auswählen muss, um diese Information anzuzeigen.

Es müssen keine versteckten Daten in der Datei hinterlegt werden, die aufgrund falscher Handhabung durch den Benutzer verloren gehen könnten.

Da die Einheiten nicht Bestandteil des Wertes sind, sondern lediglich Anhänge der optischen Darstellung, kann mit den Zahlen (wie in Excel üblich)
gerechnet werden; wäre die Zelle als Text formatiert, wären Verrechnungen
in Formeln nicht möglich.

Wird die Datei an eine andere Person weitergegeben, die das Add-In nicht
installiert hat, kann ohne Probleme weiter damit gearbeitet werden. Zwar
kann ohne das Tool keine Prüfung durchgeführt werden, aber die Vorteile
der besseren Übersichtlichkeit bleiben bestehen.

Der Anwender wird vor keinen sonderlich erhöhten Aufwand gestellt: Das
Angebot von Excel, den Wert einer Zelle durch das Anhängen eines EuroZeichens als Währung festzulegen, wird bereits zur optischen Aufbereitung
genutzt. Dieses Spektrum wird durch Chexcell lediglich um weitere Einheiten ergänzt und zusätzlich eine Prüfung angeboten.
Die vorgestellte Vorgehensweise zum Ablegen der Information über die zugewiesene Einheit orientiert sich also am Ansatz von Excel, Euro-Beträge über das Zahlenformat der Zelle kenntlich zu machen und ist nicht nur der zentrale Aspekt dieses
Add-Ins, sondern auch das Alleinstellungsmerkmal von Chexcell im Vergleich zu
anderen Lösungen (siehe 3 Bestehende Ansätze, S. 21).
4.4 Einheiten berechnen
Bisher wurde geklärt, wie Einheiten deklariert, definiert und Werten zugewiesen
werden können. Wenn in einer Zelle kein Wert, sondern eine Formel steht, kann die
zugehörige Einheit automatisch berechnet und angehängt werden – die Anforderung der impliziten Zuweisung wurde bereits im Abschnitt 2.5.1 (S. 14) gestellt.
Welche allgemeinen Regeln dabei angewandt werden, wie Chexcell dabei vorgeht
und welche Sonderfälle es zu berücksichtigen gilt, wird in den folgenden Abschnitten behandelt.
4.4.1 Allgemeine Regeln zur Verarbeitung von Formeln
Mithilfe von Formeln können in Excel Berechnungen durchgeführt werden, die sich
auf andere Zellen beziehen; das Ergebnis wird in der entsprechenden Zelle dann als
Wert angezeigt. Dieser Ablauf wird durch Chexcell nachgebildet, d. h. die Rechen-
4.4 Einheiten berechnen
43
vorgänge werden aufgelöst und auf die Einheiten der betroffenen Zellen bezogen. Je
nach Operator wird dabei eine bestimmte Regel angewendet.
Bei der Multiplikation zweier Zellen ist das Ergebnis das Produkt der beiden entsprechenden Einheiten. Werden bspw. zwei Zellen – jeweils mit zugewiesener Ein-
Einheiten multiplizieren und dividieren
heit m – miteinander multipliziert, ergibt die Rechnung m·m. Analog verhalten sich
Brüche, d. h. anstatt die Division auf die Werte der Zellen zu beziehen, werden die
zugewiesenen Einheiten verwendet. Nach jedem dieser Rechenschritte wird das
Ergebnis gekürzt, also alle Elemente der Einheit, die sich sowohl im Dividend als
auch im Divisor befinden, gestrichen. Werden bspw. m·m durch m geteilt, ergibt
dies einfach m.
Da Additionen und Subtraktionen innerhalb von Einheiten nicht gültig sind, kann die
Funktionsweise dieser Operatoren (im Gegensatz zu der von Multiplikationen und
Einheiten addieren
und subtrahieren
Divisionen) nicht ohne weiteres übernommen werden. Es wurde bereits geklärt,
dass zwei Werte mit verschiedenen Einheiten niemals zusammengezählt oder voneinander abgezogen werden dürfen (siehe 2.3.3 Rechnen mit Einheiten, S. 10). Die
Ergebnisse dieser Rechnungen sind also keine neuen Einheiten, sondern vielmehr
die Prüfung, ob die beiden Eingangsgrößen übereinstimmen. Dies ist nicht der Fall,
sobald z. B. Beträge in Euro und Dollar addiert werden, weshalb anstelle der errechneten Einheit ein Fehler ausgegeben wird.
Diese Rechenregeln müssen rekursiv und entsprechend mathematischer Vorschriften angewendet werden; d. h. der gesamte Ausdruck wird in Teilausdrücke zerlegt
und in der korrekten Reihenfolge (z. B. auch unter Berücksichtigung von Klammern)
ausgewertet. Auf diese Weise ist gewährleistet, dass die gleichen Rechenschritte wie
von Excel durchgeführt werden, mit dem Unterschied, dass sie sich nicht auf den
Wert, sondern auf die Einheit beziehen. Das Ergebnis einer Formel lässt sich immer
in Form einer abgeleiteten Einheit, zusammengesetzt aus Dividend und Divisor
(siehe 4.2.2 Abgeleitete Einheiten, S. 33), darstellen. Diese wird der Zelle automatisch
durch das Add-In zugewiesen, muss also nicht durch den Anwender ermittelt werden.
Wie die genannten Regeln in der Praxis anzuwenden sind wird in Tabelle 6 anhand
einiger Beispiele verdeutlicht. Die erste Spalte gibt dabei die Verrechnung der Einheiten an, die sich aus der Formel und den in den Zellen befindlichen Einheiten
ergibt; die zweite Spalte ist das Ergebnis, das der entsprechenden Zelle zugeordnet
wird.
Rekursive Anwendung
der Rechenregeln
44
4 Implementierung
Rechnung
Ergebnis
Erklärung
m / (s * s)
m/s*s
Multiplikationen und Divisionen
werden auf Einheiten übernommen.
((kg - kg) * m) + kg * m
kg*m
Die subtrahierten und addierten
Einheiten (kg bzw. kg*m) stimmen jeweils überein.
km * km / (km * h)
km/h
Elemente, die sich in Dividend
und Divisor befinden, werden
gekürzt (in diesem Fall km).
m+m/s
Fehler
Da die Division vor der Addition
angewendet wird, stimmen die
beiden zusammenzuzählenden
Einheiten nicht überein.
m+m*s/s
m
Aufgrund der Kürzung nach der
durchgeführten Division, stimmen die beiden Einheiten überein.
Tabelle 6: Beispiele für die Berechnung von Einheiten
Syntaxkontrolle von
Excel
Es fällt auf, dass bei den Formeln grundsätzlich von einer korrekten Syntax ausgegangen wird, obwohl einige Szenarien falscher Eingaben vorstellbar sind:

An falscher Position befindliche oder fehlende Operatoren; z. B. zwei PlusZeichen unmittelbar hintereinander

Falsche Klammerung, z. B. ein nicht schließender Klammerblock

Verweis auf eine nicht existierende Zelle

Berechnungen, die sich auf Zeichenketten beziehen

Zirkelbezüge, also direkt oder indirekt gegenseitig abhängige Zellen
In jedem dieser Fälle gibt Excel von sich aus eine Warnung oder einen Korrekturvorschlag aus, wodurch das Tool von einer korrekten Syntax ausgehen kann, ohne
eine eigene Prüfung durchführen zu müssen.
4.4.2 Verarbeiten von Funktionen
Neben den Grundrechenarten und Verweisen auf andere Zellen können Formeln
auch Funktionsaufrufe enthalten, die jeweils gesondert behandelt werden müssen.
Jede Funktion ist separat definiert und hat eine eigene Liste an (teilweise optionalen) Parametern – entsprechend unterschiedlich kann das Ergebnis ausfallen. Die
Spanne reicht von parameterlosen Funktionen, die sich auf keine Zellen beziehen (z.
B. ZUFALLSZAHL), bis zu komplexen Abfragen mit mehreren Parametern, die sich je
4.4 Einheiten berechnen
45
nach Ergebnis auf verschiedene Zellen beziehen können (z. B. SVERWEIS).Analog zu
Excel muss auch die Bestimmung der Einheit je nach Funktion separat implementiert werden.
Die Funktionen POTENZ und WURZEL bilden (ähnlich wie die bereits vorgestellten
Grundrechenarten) Operatoren ab, die sich auf Einheiten auswirken (siehe 2.3.3
Potenz und Quadratwurzel
Rechnen mit Einheiten, S. 10). Wird einer dieser Bezeichner in der Formel gefunden,
werden diese Aufrufe gesondert behandelt. Beim Berechnen einer Potenz werden
die Dividenden und Divisoren der betroffenen Einheit dupliziert – entsprechend des
angegebenen Exponenten. Aus der Potenz von m und 3 ergibt sich also m*m*m. Da
halbe Einheiten unzulässig sind, werden nur natürliche Zahlen als Exponent zugelassen.
Beim Ziehen von Quadratwurzeln wird von je zwei identischen Elementen eines
entfernt (so ergibt bspw. m*m nachdem die Wurzel gezogen wurde die Einheit m).
Hier stellt sich eine ähnliche Schwierigkeit wie bei Potenzen: Sobald sich von einem
Element keine gerade Anzahl an Vorkommnissen findet, lässt sich keine Quadratwurzel darauf anwenden. Aus diesem Grund wird der Anwender bei einer Eingabe
von m*m*m als Parameter der Wurzel-Funktion darauf hingewiesen, dass ein
Einheiten-Fehler festgestellt wurde.
Weitere Funktionen sind derzeit noch nicht explizit von Chexcell unterstützt, müssten also noch nachgearbeitet werden (siehe 5.2.1 Unterstützung weiterer ExcelFunktionen, S. 62). Damit das Add-In trotzdem bei der Verwendung der meisten
gebräuchlichen Funktionen ordnungsgemäß abläuft, gibt es eine Ersatz-Routine, die
nicht bekannte Bezeichner behandelt. Unabhängig von der Implementierung in
Excel wird der erste Parameter als Berechnungsgrundlage verwendet. Bezieht sich
dieser auf eine einzelne Zelle, wird deren Einheit als Ergebnis angenommen; wird
auf einen Bereich verwiesen, muss zusätzlich sichergestellt werden, dass allen
Zellen dieses Bereichs dieselbe Einheit zugewiesen ist. Damit sind zwar nicht alle
Funktionen abgedeckt, aber zumindest arbeiten einige übliche (wie SUMME oder
MITTELWERT) erwartungsgemäß.
In Tabelle 7 sind einige beispielhafte Funktionsaufrufe und die daraus resultierenden Einheiten aufgelistet. Dabei wird angenommen, dass allen Zellen in Spalte A die
Einheit m und der gesamten Spalte B die Einheit s zugewiesen wurden.
Funktion
Resultierende
Einheit
Erklärung
POTENZ(A1; 3)
m*m*m
Die Einheit aus Zelle A1 wird mit 3 potenziert.
Weitere Funktionen
46
4 Implementierung
WURZEL(B1)
Fehler
Die Einheit s ist nur einmal (also in einer
ungeraden Anzahl) vertreten, weshalb
sich die Wurzel-Funktion nicht anwenden lässt.
MITTELWERT(B1:B4)
s
Alle Zellen im angegebenen Bereich sind
mit der Einheit s versehen.
SUMME(A1:B2)
Fehler
Die Einheiten im angegebenen Bereich
unterscheiden sich, sodass kein Ergebnis
ermittelt werden kann.
Tabelle 7: Beispiele für aus Funktionsaufrufen berechnete Einheiten
4.4.3 Programmablauf
Nachdem geklärt ist, welche Regeln im Umgang mit Rechenzeichen und Funktionen
zu beachten sind, stellt dieser Abschnitt den implementierten Programmablauf vor.
Er wird in Abbildung 13 grafisch visualisiert.
Start
Suche im Ausdruck nach
Operatoren und Klammern:
+, -, *, /, (, )
+ oder –
gefunden?
nein
ja
* oder /
gefunden?
nein
ja
Zerlege in Ausdruck
Teilausdrücke
Zerlege Ausdruck in
Teilausdrücke
) oder (
gefunden?
nein
Einheit bestimmen anhand
der Zellenbezeichnung
ja
Beginnt und
endet je mit
Klammer?
ja
Ermittle Einheiten
der Teilausdrücke
Stimmen
Einheiten
überein?
Ermittle Einheiten
der Teilausdrücke
Entferne erstes und
letztes Zeichen
Ermittle Einheit des
Funktionsaufrufs
Kombiniere ermittelte
Einheiten
Ermittle Einheit
des Teilausdrucks
Verarbeite Einheit entsprechend Funktion
ja
nein
Einheit normalisieren
und vereinfachen
Einheit
zurückgeben
Fehler
zurückgeben
Abbildung 13: Ablaufdiagramm zum Berechnen der Einheit
Ende
4.4 Einheiten berechnen
47
Der erste Schritt ist die Suche nach den Operatoren der vier Grundrechenarten und
Klammern, wobei nur solche Zeichen erfasst werden, die sich nicht innerhalb eines
Verarbeitung der
Grundrechenarten
Klammerblocks befinden. Dazu wird ein Zähler bei jeder öffnenden Klammer um
Eins erhöht, bei jeder schließenden verringert – solange dieser Zähler ungleich Null
ist werden alle Zeichen (auch Operatoren) ignoriert. Auf diese Weise wird jeder
Ausdruck zunächst von außen nach innen zerlegt und innere Blöcke getrennt betrachtet. Gleichzeitig kann der Zähler als Indikator für Syntaxfehler dienen, auch
wenn diese von Excel bereits unterbunden werden: Sollte er jemals negativ werden,
oder am Ende der Auswertung nicht wieder Null sein, wurde ein zuvor nicht geöffneter Klammernblock geschlossen bzw. nicht alle Klammern wieder geschlossen.
Bei Plus- und Minus-Zeichen wird die Formel an den entsprechenden Positionen
getrennt und in Teilausdrücke unterteilt (nach wie vor werden nur diejenigen Zeichen betrachtet, die sich nicht innerhalb von Klammerblöcken befinden). Im nächs-
Verarbeitung von
Additionen und Subtraktionen
ten Schritt beginnt die Rekursion, indem dieselbe Routine zum Ermitteln der Einheit
erneut aufgerufen wird, diesmal mit den zuvor separierten Teilausdrücken. In diesem Ablauf können allerdings keine Additionen und Subtraktionen mehr gefunden
werden, da diese zuvor komplett zerlegt wurden. Falls nicht alle aus den Teilausdrücken errechneten Einheiten übereinstimmen liegt ein Fehler vor und die Analyse
kann abgebrochen werden, ansonsten wird die ermittelte Einheit zurückgegeben.
Zuvor wird diese allerdings normalisiert und vereinfacht, d. h. alle abgeleiteten
Einheiten zu ihren Basiseinheiten aufgelöst und alle überflüssigen Elemente (die
gekürzt werden können, da sie in Dividend und Divisor vorkommen) entfernt. Dies
Normalisierung heißt
auflösen zu Basiseinheiten
ist zum einen notwendig, um bei Additionen bzw. Subtraktionen einen Vergleich der
Einheiten zu ermöglichen, da hierbei die auf Basiseinheiten reduzierten Elemente
aus Dividend und Divisor miteinander verglichen werden (z. B. handelt es sich bei
kg*m und m*kg um die gleiche Einheit); zum anderen werden dadurch unnötig
umständliche Formulierungen (wie m*s/s) vermieden. Diese sind zwar nicht falsch,
behindern aber den Lesefluss und sind lästig für den Anwender.
Falls weder Plus- noch Minus-, aber Mal- oder Geteilt-Zeichen gefunden wurden,
werden ebenfalls Teilausdrücke erzeugt und davon jeweils die Einheiten ermittelt.
Da beliebig komplexe und tief verschachtelte Formeln erlaubt sind, könnten in
Verarbeitung von
Multiplikationen und
Divisionen
diesen Teilausdrücken wiederum Additionen und Subtraktionen gefunden werden.
Die ermittelten Einheiten werden schließlich zu einer Einheit zusammengesetzt.
Dazu werden die Dividenden und Divisoren zusammengeführt, wobei bei vorangegangenen Schrägstrichen diese Zuweisung vertauscht wird (d. h. der Dividend wird
in den Divisor geschrieben und umgekehrt). Mathematisch betrachtet werden also
die aus den Teilausdrücken ermittelten Einheiten miteinander (bzw. im Falle von
Divisionen mit dem Kehrwert) multipliziert.
Sollten sich keine Operatoren im äußeren Ausdruck befinden, aber Klammern in der
Formel vorkommen, müssen diese aufgelöst werden. Dabei wird zwischen Blöcken
Verarbeitung von
Klammerblöcken
48
4 Implementierung
und Funktionsaufrufen unterschieden. Falls die Zeichenkette mit einer öffnenden
Klammer beginnt und mit einer schließenden endet, können diese Zeichen entfernt
werden, da sie einfach den gesamten Ausdruck einfassen (mit dem Rest kann dann
die eigentliche Prüfung durchgeführt werden). Ansonsten muss es sich um eine
Funktion handeln, weshalb die Einheit des übergebenen Parameters ermittelt und
anschließend entsprechend des Funktionsaufrufs verarbeitet werden muss. Hier
erfolgt also eine spezifische Behandlung anhand des gegebenen Bezeichners (siehe
4.4.2 Verarbeiten von Funktionen, S. 44).
Ende des Algorithmus
Sobald sich im zu untersuchenden Ausdruck weder Operatoren noch Klammern
befinden, kann es sich nur um absolute Werte bzw. um Verweise auf andere Zellen
handeln. Erstere können ignoriert werden, da sie ohnehin keine Einheit besitzen. Bei
Referenzen wird anhand des Bezeichners die Zelle ermittelt und ihr Zahlenformat
ausgelesen, woraus sich die zugewiesene Einheit ergibt.
Da beim Erstellen der Teilausdrücke immer mindestens ein Operator- oder Klammer-Zeichen entfernt wird (und damit die zu untersuchende Zeichenkette immer
kürzer wird), ist sichergestellt, dass der Algorithmus mit endlichem Aufwand die
Einheit ermittelt bzw. einen Fehler erkennt.
4.4.4 Automatische Reduktion von Einheiten
Durch die normalisierte Darstellung in Form zusammengesetzter Basiseinheiten
können trotz der Kürzung überflüssiger Elemente unangenehm lange Bezeichnungen entstehen, die in der Zelle viel Platz beanspruchen. Aus diesem Grund wird dem
Anwender im Aufgabenbereich von Chexcell mit der Einstellung „Try To Reduce
Units“ angeboten, dass die errechneten Einheiten zusammengefasst werden, sofern
dies möglich ist.
Vorgehensweise zur
automatischen Reduktion
Dazu wird auf die Liste der abgeleiteten Einheiten zurückgegriffen und geprüft, ob
eine oder mehrere dieser Definitionen einen Teil der gegebenen Elemente ersetzen
können. Dabei wird auch berücksichtigt, dass sich die Reihenfolge unterscheiden
könnte und die abgeleitete Einheit u. U. im Divisor stehen wird. In Tabelle 8 verdeutlichen einige Beispiele den Nutzen dieser Reduktion. Dabei wird von folgender
Definition abgeleiteter Einheiten ausgegangen:

m³ = m*m*m

N = kg*m/s*s

J = N*m
Rechnung
Ergebnis
Ergebnis nach Reduktion
(m * m) * m
m*m*m
m³
(kg * m) / (s * s)
kg*m/s*s
N
4.4 Einheiten berechnen
49
m * (s * s) / (kg * m)
m*s*s/kg*m
m/N
m³ * kg / (s * m * s)
m*m*kg/s*s
J
Tabelle 8: Beispiele für die Reduktion von Einheiten
Das Beispiel in der letzten Zeile deutet bereits eine Schwierigkeit an: Zunächst wird
erkannt, dass ein Teil des Ergebnisses durch die Einheit N ersetzt werden kann,
Doppeldeutigkeiten
bei der Reduktion
wobei sich N*m durch J darstellen lässt. Wäre J als Zusammensetzung von
kg*m*m/s*s definiert, könnte das Reduzieren zu zwei unterschiedlichen Ergebnissen führen. Zum einen könnte aufgrund der neuen Definition ohne Zwischenschritt
auf J geschlossen werden, zum anderen wäre denkbar, dass (wie im vorigen Beispiel
schon) das Vorkommnis von N erkannt und der Ausdruck deshalb auf m*N gekürzt
wird. Im zweiten Fall wäre keine weitere Reduktion möglich.
Während der menschliche Betrachter die erste Lösung als sinnvoller empfindet,
verbirgt sich für die Maschine ein deutlich höherer Aufwand dahinter. So könnten
zunächst alle möglichen Ersetzungen ermittelt und anschließend die kürzeste
Möglichkeiten zum
Lösen der Doppeldeutigkeit
Schreibweise gewählt werden, wobei auch dadurch nicht garantiert ist, dass dies die
bevorzugte Darstellung des Benutzers ist. Auch wäre die Definition von Favoriten
bei der Liste abgeleiteter Einheiten denkbar, die dann bei der Kürzung als erstes
ersetzt werden.
Alternativ ließe sich eine Normalform festlegen, in der bei der Definition von abgeleiteten Einheiten (sofern möglich) auf bereits reduzierte Einheiten zurückgegriffen
werden muss. Damit wäre im obigen Beispiel die Definition von J als kg*m*m/s*s
nicht zulässig, da sich der Ausdruck aufgrund der bestehenden Definition von N zu
N*m reduzieren ließe. Diese Normalform ist zwar nicht implementiert und wird
damit nicht von Chexcell geprüft, dennoch empfiehlt sich die Anwendung dieser
Regel, um Doppeldeutigkeiten zu vermeiden.
4.4.5 Umgang mit gesetzten Einheiten
Die beschriebene automatische Berechnung soll als Unterstützung dienen und dem
Anwender Arbeit ersparen, ihn aber nicht in seiner Freiheit einschränken. Deshalb
ist es immer möglich, Einheiten zuzuweisen – selbst wenn bereits eine andere durch
das Tool berechnet wurde. Dabei muss unterschieden werden, ob die Einheit zuerst
anhand der Formel ermittelt und anschließend durch den Anwender festgelegt
wurde, oder umgekehrt.
Grundsätzlich gilt, dass die Eingabe des Nutzers mehr Gewicht hat, als die automatische Berechnung. Entscheidet sich der Anwender also aktiv dafür, eine Einheit
zuzuweisen, kann dadurch das zuvor ermittelte Ergebnis überschrieben werden.
Trotzdem wird dabei geprüft, ob die beiden Einheiten kompatibel zueinander sind.
Hinweis beim Überschreiben mit einer
inkompatiblen Einheit
50
4 Implementierung
Falls nicht, wird der Benutzer zumindest auf seinen möglichen Irrtum hingewiesen
und eine Sicherheitsabfrage gestellt (siehe Abbildung 14); durch die Bestätigung
dieses Hinweises werden künftige Meldungen zu dieser Zelle automatisch unterdrückt (mehr dazu im Abschnitt 4.4.6, S. 50). Falls die Einheiten ohnehin kompatibel
sind, ist dieser Hinweis nicht nötig. Dadurch ist es trotz des genannten Problems
beim Reduzieren der Einheit (siehe Abschnitt 4.4.4, S. 48) ohne weiteres möglich,
die gewünschte Schreibweise manuell zu einzustellen.
Abbildung 14: Hinweis beim Zuweisen einer inkompatiblen Einheit
Wenn eine Einheit bereits gesetzt ist und anschließend eine Formel in der Zelle
eingetragen wird, prüft Chexcell ebenfalls, ob die beiden Einheiten zueinander
kompatibel sind. Falls ja, wird die vom Nutzer zugewiesene bevorzugt, ansonsten
überschreibt die berechnete Einheit die zuvor gesetzte, sodass hier kein Fehler
entsteht und keine Meldung ausgegeben werden muss.
Leeren und Löschen
von Zellen
Wird eine Zelle nicht überschrieben, sondern ihr Inhalt gelöscht, wird die ihr zugewiesene Einheit zwar nicht mehr angezeigt, bleibt aber erhalten. Sobald wieder ein
Wert eingetragen ist, wird die gesetzte Einheit wieder wie gewohnt angezeigt. Beim
Löschen gesamter Spalten oder Zeilen werden von Excel nicht die Inhalte geleert,
sondern die Zellen tatsächlich entfernt, sodass die zugewiesene Einheit in diesem
Fall verloren geht.
4.4.6 Umgang mit Fehlern
Sobald Einheiten automatisch ermittelt werden, können Fehler entstehen – sei es
aufgrund unzulässiger Rechnungen (siehe 4.4.1 Allgemeine Regeln zur Verarbeitung
4.4 Einheiten berechnen
51
von Formeln, S. 42) oder wegen Zuweisungen von inkompatiblen Einheiten bei
Formeln (siehe 4.4.5 Umgang mit gesetzten Einheiten, S. 49).
Im Abschnitt 4.3.2 (S. 37) wurde die Einstellung „Automatically Check Cells“ als
Möglichkeit vorgestellt, alle Eingaben zu parsen und in Wert und Einheit zu unterteilen. Gleichzeitig wird darüber aber auch gesteuert, ob beim Eintragen oder Ändern
Automatisches Aktualisieren berechneter
Einheiten
einer Formel die Einheit automatisch berechnet und damit auch eine Fehlerprüfung
durchgeführt werden soll. Neben den geänderten Zellen werden aber auch alle
davon abhängigen Formeln aktualisiert, also die Einheiten neu ermittelt. Abbildung
15 zeigt, was unter abhängigen Zellen zu verstehen ist: Links (a) wird die verwendete Formel dargestellt, in der Mitte (b) befindet die Ausgangssituation, die im rechten
Bild (c) so geändert wurde, dass in Zelle A1 km statt m zugewiesen ist; die errechnete Einheit in A3 wurde automatisch angepasst.
(a)
(b)
(c)
Abbildung 15: Automatisches Aktualisieren abhängiger Zellen
Entscheidet sich der Anwender gegen die automatische Prüfung bei jeder Änderung,
kann er (ebenfalls analog zum Parsen von Einheiten) über die Schaltfläche „Check
Sheet“ das gesamte Tabellenblatt analysieren lassen, sodass die Einheiten von Formeln berechnet und Fehler angezeigt werden.
Allgemeine Warnhinweise kennzeichnet Excel in Form eines kleinen grünen Dreiecks in der oberen linken Ecke der betroffenen Zelle an; bei schwerwiegenden Fehlern, die das Berechnen des Wertes unmöglich machen, wird zusätzlich ein entsprechendes Stichwort in der Zelle angezeigt. Weitere Informationen erhält der
Anwender, indem er die Zelle und das daneben erscheinende Ausrufezeichen anklickt. In Abbildung 16 ist ein Fehler aufgrund eines falschen Bezeichners (Zelle B2),
eine Warnung (Zelle D2) sowie ein Fehler mit zusätzlichen Informationen und Hilfestellungen abgebildet.
Abbildung 16: Bekannte Fehler und Warnungen in Excel
Darstellung von ExcelFehlern
52
Darstellung von Einheiten-Fehlern
4 Implementierung
Das Anzeigen von Einheiten-Fehlern mithilfe eines grünen Dreiecks würde die
Philosophie von Excel vervollständigen – allerdings gibt es keine Möglichkeit, diese
Meldungen zu beeinflussen. Stattdessen fügt Chexcell einen Kommentar an die Zelle
an, wodurch sich ein ähnliches Verhalten ergibt: In der oberen rechten Ecke erscheint ein kleines rotes Dreieck; der Hinweis erscheint, sobald die Maus über die
Zelle bewegt wird. Abbildung 17 zeigt, wie die Fehler mithilfe von Kommentaren
kenntlich gemacht werden.
Abbildung 17: Einheiten-Fehler von Chexcell
Falls der Benutzer selbst bereits einen Kommentar hinzugefügt hat, soll dieser nicht
durch den Hinweis überschrieben werden; deshalb wird in solchen Fällen eine
übliche Fehlermeldung in Form eines Dialogfensters angezeigt.
Fehler ignorieren
Wie die Warnungen von Excel über das Kontextmenü ignoriert werden können,
lassen sich auch die von Chexcell erzeugten Hinweise ausblenden, indem bei den
gewünschten Zellen das Feld „Ignore Errors“ im Ribbon des Add-Ins aktiviert wird.
Sollte sich der Anwender also entscheiden, dass eine Formel trotz eines vermeintlichen Einheiten-Fehlers korrekt ist, kann er das Tabellenblatt von irritierenden
Kommentaren befreien. Diese Funktion wird automatisch angewandt, wenn einer
Zelle eine Einheit zugewiesen wird, die nicht mit der aus der Formel errechneten
übereinstimmt (siehe 4.4.5 Umgang mit gesetzten Einheiten, S. 49).
4.5 Umgang mit Herausforderungen
Während der Umsetzung von Chexcell wurden einige Probleme erkennbar, die mit
der Zusammenarbeit mit Excel zusammenhängen. Diese werden, nachdem die Kernfunktionalität erklärt wurde, in den folgenden Abschnitten behandelt.
4.5.1 Automatisches Formatieren
Microsoft versucht mit Excel dem Anwender möglichst viel Komfort zu bieten, indem alle Eingaben geparst und Zahlenformate automatisch angepasst werden,
sofern ein passendes Muster erkannt wird. Z. B. wird an der Zeichenkette
„23.03.2015“ erkannt, dass es sich um ein Datum handelt und das Zahlenformat
dementsprechend umgestellt. Aus der Eingabe „4e2“ wird die wissenschaftliche
Schreibweise erkannt, sodass der Inhalt der Zelle als „4,00E+02“ dargestellt wird.
4.5 Umgang mit Herausforderungen
53
Diese Funktion wirkt zwar zunächst durchaus positiv, birgt aber auch einige Gefahren in sich und kann beim Anwender viel Frust auslösen. So werden bspw. die Eingaben „1.97“ und „1/8888“ als Datum erkannt und in den Januar im Jahr 1997 bzw.
8888 umgewandelt. Trotz aller Freiheiten, die Excel bietet, kann dieser Automatismus nicht deaktiviert werden. Die in Abbildung 18 dargestellten Einstellungen sind
die einzigen, die bezüglich der automatischen Formatierung gesetzt werden können.
Abbildung 18: Einstellungen zur automatischen Formatierung
Während diese Unzulänglichkeiten der mangelnden Einstellungsmöglichkeiten für
den Anwender lästig sein können, stellen sie für Chexcell ein richtiges Problem dar.
Wird bspw. „4 a“ eingegeben, um einer Zelle den Wert 4 mit der Einheit a zuzuwei-
Aus Automatismus
resultierende Schwierigkeiten für Chexcell
sen, nimmt Excel eine Uhrzeit an und korrigiert den Inhalt unmittelbar zu „4:00 AM“.
Sobald das Event von der Schnittstelle ausgelöst wird, das auf eine Änderung im
Tabellenblatt hinweist, wurde diese Anpassung bereits durchgeführt, sodass die
Funktion zum Parsen von Einheiten die ursprüngliche Eingabe nicht ermitteln kann.
Da bei der Eingabe von „4a“ keine automatische Aktion von Excel ausgeführt wird,
sollte der Anwender auf Leerzeichen zwischen dem Wert und der Einheit verzichten
– nach der Transformation durch Chexcell wird ein Leerzeichen aus Gründen der
Übersichtlichkeit ohnehin angezeigt.
Etwas subtiler wirkt sich das Problem aus, wenn „4€“ eingegeben wird, da Excel
diese Zelle automatisch als Währung erkennt und zwischen Wert und Einheit unterscheidet – es übernimmt gewissermaßen die Arbeit des Add-Ins. Der Unterschied
liegt in der verwendeten Syntax: Während Chexcell alle Einheiten in Anführungszeichen gefasst an das Format anhängt, ergänzt Excel das Zahlenformat ohne weitere
Kennzeichnungen um das Euro-Zeichen. Die Einheit kann so nicht durch das Add-In
erkannt und eine Prüfung damit nicht durchgeführt werden.
Da besonders der Umgang mit Geldbeträgen in vielen Szenarien von Bedeutung ist,
berücksichtigt die Implementierung genau diesen Sonderfall: Sobald sich ein EuroZeichen im Zahlenformat befindet, wird die Syntax so angepasst, dass sie von
Chexcell verarbeitet werden kann.
Lösung für EuroZeichen
54
4 Implementierung
4.5.2 Daten in Zellen hinterlegen
Die Repräsentation der Zellen als Objekt hat viele Methoden und Eigenschaften,
über die Werte angepasst werden können – jedoch gibt es kein Feld, zum Ablegen
versteckter Informationen.9 In Abschnitt 4.3 (S. 36) wurde bereits vorgestellt, dass
dies bei zugewiesenen Einheiten kein Problem darstellt, da diese nicht unsichtbar,
sondern im Zahlenformat hinterlegt werden, sodass sie direkt vom Anwender eingesehen werden können.
Anders verhält es sich, wenn ein erkannter Fehler ignoriert werden soll (siehe 4.4.6
Umgang mit Fehlern, S. 50): Es genügt nicht, den erzeugten Kommentar zu entfernen, da die Meldung bei der nächsten Prüfung dieser Zelle wieder erscheinen würde
– das soll dem Benutzer allerdings erspart bleiben. Die Information „Ignore Error“
muss also zellenbezogen und transparent abgespeichert werden.
Lösung zum Hinterlegen von Daten in
Zellen
Um dies zu erreichen wird erneut vom ohnehin für Einheiten verwendeten Zahlenformat Gebrauch gemacht. Da es sich bei der Einstellung, ob Fehler in der betroffenen Zelle ignoriert werden sollen, um ein rein binäres Datum handelt, genügt ein
einzelnes Symbol zum Ablegen dieser Information. Als Indikator wurde das Zeichen
„ZERO WIDTH NO-BREAK SPACE“ mit dem Unicode U+FEFF [Gil03] gewählt, da es
mit einer Breite von Null Pixeln tatsächlich unsichtbar ist und keine störenden
Nebenwirkungen aufweist. Sobald das Zahlenformat dieses Zeichen enthält, werden
in dieser Zelle auftretende Fehler ignoriert. Wählt der Anwender die Option „Ignore
Errors“ wieder ab, wird das Symbol entfernt und damit anzuzeigende Hinweise
nicht mehr unterdrückt.
4.5.3 Schwierigkeiten aufgrund der Schnittstelle
Statische Typprüfung
durch VSTO ausgehebelt
Wie bei der Untersuchung der technischen Möglichkeiten mit VSTO (siehe 4.1.2
VSTO Add-In, S. 30) bereits erkannt wurde, unterscheiden sich die Datenmodelle von
Excel und C#. Da der Datentyp dynamic für den Zugriff auf Excel benötigt wird,
dadurch aber die statische Typprüfung umgangen wird, müssen alle Abfragen durch
eigene Prüfungen abgesichert werden. Wird bspw. über die Eigenschaft „Value“ der
Inhalt eines Bereichs abgefragt, kann der Rückgabewert als String repräsentiert
sein, aber auch (falls der Bereich nicht nur eine, sondern mehrere Zellen umfasst)
als Array von Zeichenketten. Bei jedem Zugriff auf Eigenschaften von Zellen ist also
besondere Vorsicht geboten und häufig sind zusätzliche Prüfungen nötig.
Bei einigen Feldern kann es auch passieren, dass nicht nur unvorhergesehene Datentypen zurückgegeben werden, sondern unter Umständen sogar Ausnahmen
Eine Übersicht der verfügbaren Felder und Methoden findet sich unter
http://msdn.microsoft.com/en-us/library/office/ff197454.aspx.
9
4.5 Umgang mit Herausforderungen
55
geworfen werden. Z. B. tritt beim Zugriff auf die Eigenschaft „DirectDependents“
eines Bereichs ein interner Fehler auf, falls es keine abhängigen Zellen gibt.10 Wird
diese Ausnahme nicht gefangen, bricht der aktuelle Programmablauf einfach ab, was
zu unerwünschtem Verhalten führen kann.
Ein weiterer Schwachpunkt der Schnittstelle ist das Event „SelectionChange“, das
auftritt, sobald die Auswahl im Tabellenblatt geändert wird; dabei wird ein Verweis
auf die neue Markierung als Parameter übergeben.11 Sobald dies passiert, wird die
Fehlverhalten des
Events „SelectionChange“
Einheit aus dem markierten Bereich ausgelesen und die entsprechende Anzeige im
Ribbon aktualisiert. Ungeschickterweise wird dieses Event auch gefeuert, wenn
nach einer Änderung die Abhängigkeiten analysiert werden, wobei die abhängigen
Zellen als neue Markierung angegeben werden, obwohl diese nicht modifiziert
wurden. Damit nach einer Änderung nicht die Einheit der abhängigen Zelle, sondern
die der aktuellen Auswahl im Ribbon angezeigt wird, muss das Event vor der Evaluierung der Abhängigkeiten deaktiviert werden.
Eine letzte Schwierigkeit in Bezug auf die Schnittstelle offenbart sich beim Parsen
von Eingaben zum Zuweisen von Einheiten (siehe 4.3.2 Über Eingabe zuweisen, S.
37). Dazu wäre es sinnvoll, nach dem Aufteilen in Wert und Einheit ein Objekt vom
Keine Möglichkeit
Zahlen über die
Schnittstelle parsen zu
lassen
Typ einer Zelle zu generieren und mit dessen Hilfe zu prüfen, ob es sich beim ersten
Teil um eine von Excel verwertbare Zahl handelt. Es müsste also untersucht werden,
ob durch das Eintragen des Wertes das Zahlenformat automatisch auf die Darstellung von Nummern (egal welcher Form) umgestellt wird. Da es sich bei „Cell“ allerdings um ein Interface handelt, sind Instanziierung und damit diese Art der Prüfung
leider nicht möglich.
Stattdessen muss die Analyse, ob es sich bei der Eingabe um eine zulässige Zahl
handelt, selbst implementiert werden. Dabei gilt zu berücksichtigen, dass es in Excel
zahlreiche Möglichkeiten zur Erfassung von Nummern gibt. Durch das Tool werden
nicht nur Tausender- und Dezimaltrennzeichen (Punkt bzw. Komma) unterstützt,
sondern auch die bereits vorgestellte wissenschaftliche Schreibweise (siehe 4.3.2
Über Eingabe zuweisen, S. 37). An dieser Stelle kommen reguläre Ausdrücke zum
Tragen, die prüfen, ob die getätigte Eingabe eine gültige Zahl ist, die von Excel als
solche erkannt wird.
Die Eigenschaft „DirectDependents“ wird unter http://msdn.microsoft.com/enus/library/office/ff195386.aspx näher erläutert.
10
Eine Beschreibung des Events „SelectionChange“ bietet Microsoft unter
http://msdn.microsoft.com/en-us/library/office/ff194470.aspx an.
11
Parsen der Eingabe
mithilfe von regulären
Ausdrücken
57
5 Diskussion
Zum Abrunden der vorgestellten Implementierung folgen in diesem Kapitel weitere
Ausführungen zur Bewertung der Ergebnisse. Das umfasst Anwendungsfälle, die den
sinnvollen Einsatz des Tools belegen, Ideen, welche Erweiterungen in zukünftigen
Entwicklungen einfließen sollten und Vergleiche mit den in Kapitel 3 beschriebenen
Ansätzen. Zuletzt werden zum Aufzeigen von Grenzen Beispiele angeführt, in denen
sich Fehler auch trotz einer Prüfung von Einheiten nicht hätten vermeiden lassen.
5.1 Praktische Anwendungsfälle
Nachdem der Aufbau und die Funktionsweise von Chexcell geklärt sind, werden in
diesem Abschnitt Anwendungsfälle vorgestellt, die den Nutzen und die Vorteile des
Tools belegen. Die Beispiele beziehen sich auf das berufliche Umfeld, den privaten
Bereich sowie die wissenschaftliche Anwendung und zeigen damit, wie weitläufig
das Add-In eingesetzt werden kann. Dabei werden je Abschnitt unterschiedliche
Schwerpunkte bezüglich der Funktionalität gesetzt, sodass eine Vielfalt an Vorzügen
deutlich wird.
5.1.1 Kosten-Nutzen-Analyse
Als Anwendungsfall aus der Arbeitswelt dient eine Kosten-Nutzen-Analyse12. Grundlage ist eine Software zum Simulieren von physikalischen Einwirkungen auf das
digitale Modell eines Geräts, deren Performance optimiert werden soll. Durch eine
verbesserte Implementierung ist eine Reduzierung der Zeit zum Durchführen einer
Simulation von 45 auf 30 Minuten geplant. Insgesamt sind 21 Mitarbeiter von dieser
Maßnahme betroffen, die im Schnitt jeweils 42 Simulationen pro Jahr durchführen.
Es soll berechnet werden, welcher Betrag aufgrund der Zeiteinsparungen in einem
Jahr gespart wird, und ob diese Verbesserung den geschätzten Aufwand von
170.000 Euro rechtfertigen. Dabei wird je Mitarbeiter ein Satz von 85 Euro pro
Stunde angenommen.
Abbildung 19 zeigt die Kosten-Nutzen-Analyse mit den gegebenen Werten. Der
gesparte Betrag berechnet sich aus der Differenz der beiden Zeiten (also die eingesparte Zeit je Vorgang), multipliziert mit der Häufigkeit, der Anzahl der Mitarbeiter
und dem Stundensatz. Das Ergebnis zeigt, dass die Einsparungen durch die Performance-Optimierung von über einer Mrd. Euro den geschätzten Aufwand weit übersteigen, sodass die Verbesserung auf jeden Fall umgesetzt werden sollte.
Eine Kosten-Nutzen-Analyse soll eine Entscheidungsgrundlage bieten, indem die Kosten
eines Vorhabens dem Nutzen (z. B. anhand der erzielten Zeitersparnis) gegenübergestellt
werden [Wün10].
12
58
5 Diskussion
Abbildung 19: Kosten-Nutzen-Analyse ohne Prüfung von Einheiten
Fehlererkennung
mithilfe von Einheiten
In Abbildung 20 wurden die eingegebenen Werte beibehalten und mit Einheiten
versehen. Die Prüfung von Chexcell führt zu einer Fehlermeldung, die sich auf die
Berechnung des Ergebnisses bezieht. Der eigentliche Fehler offenbart sich jedoch in
Zelle B7: Der jährlich gesparte Betrag wird in min*€/h angegeben, obwohl an
dieser Stelle eigentlich Euro stehen müssten. Ursache ist die Angabe der Durchführungsdauer in Minuten, während der Stundensatz in Euro pro Stunde hinterlegt ist.
Abbildung 20: Kosten-Nutzen-Analyse mit Prüfung von Einheiten
Fehlerbehebung
Dieser Fehler kann aufgelöst werden, indem die Zeit zum Durchführen nicht in
Minuten, sondern in Stunden angegeben wird (siehe Abbildung 21). Die korrekte
Rechnung ergibt einen um Faktor 60 geringeren Betrag von weniger als 20.000
Euro. Die tatsächlichen Einsparungen liegen also unter den nötigen Aufwendungen,
sodass sich nach dem ersten Jahr ein Verlust von über 150.000 Euro ergibt. Es würde theoretisch über 9 Jahre dauern, bis sich die Investition amortisiert hätte. Als
Konsequenz sollte auf die Umsetzung der Performance-Verbesserung (zumindest
aus betriebswirtschaftlicher Sicht) verzichtet werden.
5.1 Praktische Anwendungsfälle
59
Abbildung 21: Kosten-Nutzen-Analyse mit korrekter Berechnung
Dies ist nur eines von vielen möglichen Szenarien, in denen ein kleiner Fehler große
Auswirkungen haben und schließlich zu einer ungünstigen Entscheidung führen
kann.
5.1.2 Protokoll zum Gasverbrauch
Nachdem ein Anwendungsfall aus dem beruflichen Umfeld vorgestellt wurde, folgt
ein Beispiel für Verwendung im privaten Bereich. Dieses legt den Schwerpunkt nicht
auf die Prüfung, sondern auf die Besonderheit von Chexcell, die Einheit einer Zelle
anhand des ihr zugewiesenen Zahlenformats zu erkennen (siehe 4.2.1 Basiseinheiten, S. 32).
Abbildung 22: Berechnung des durchschnittlichen Gasverbrauchs
Als Grundlage dient das in Abbildung 22 gezeigte Tabellenblatt, das zur Protokollierung des durchschnittlichen Gasverbrauchs eines Haushaltes verwendet wird. Dazu
trägt der Anwender in den ersten beiden Spalten das Datum sowie den an diesem
Tag vom Gaszähler abgelesenen Wert ein. Die Einheit m³ kann entweder bei der
60
5 Diskussion
Eingabe der Zahl angehängt werden, sodass sie beim Parsen erkannt wird, oder sie
wird nachträglich über die Funktion im Ribbon zugewiesen (siehe 4.3 Einheiten
zuweisen, S. 36).
Der Verbrauch einer Periode ergibt sich aus der Differenz des aktuellen Zählerstandes und dem in der Zeile darüber eingetragenen Wertes; es wird also der Anstieg
zwischen der letzten und der derzeitigen Messung berechnet. In dieser Spalte muss
der Benutzer keine Einheiten zuweisen, da sie automatisch anhand der Formel
ermittelt werden.
Berechnung der Periodenlänge
Neben dem Verbrauch ist auch die Länge des gemessenen Zeitraums (Spalte D) von
Bedeutung, weshalb vom Tag der aktuellen Zeile die Angabe aus der Zelle darüber
abgezogen wird. Da ein als Datum dargestellter Wert von Excel im Hintergrund als
Zahl abgebildet ist (siehe 2.1.2 Berücksichtigung von Einheiten, S. 4), ergibt die Subtraktion die Anzahl an Tagen, die zwischen den beiden Messungen liegen. Zusätzlich
erkennt das Add-In anhand des Formats, in dem die Datumsangaben hinterlegt sind,
dass die Differenz Tage ergeben und ergänzt die Werte um die Einheit d. Da im Tool
selbst keine Einheiten oder Formate festgelegt sind, um die gewünschte Flexibilität
zu gewährleisten (siehe 2.5 Anforderungen, S. 14), ist eine entsprechende Vorgabe
des Anwenders nötig. Bei der Deklaration der Basiseinheit d muss also das verwendete Zahlenformat „TT.MM.JJJJ“ angegeben werden, an dem die Einheit auch ohne
Suffix erkannt werden soll (siehe 4.2.1 Basiseinheiten, S. 32).
In der letzten Spalte wird schließlich der durchschnittliche Tagesverbrauch (in
m³/d) anhand der tatsächlich verbrauchten Gasmenge und der Periodendauer
ermittelt. Auch hier muss der Anwender die Einheit nicht selbst zuweisen, da sie
anhand der Formel und der Einheiten der verwendeten Zellen bestimmt werden
kann.
5.1.3 Berechnung der Auftriebskraft
Als drittes großes Anwendungsgebiet kann Chexcell neben Problemstellungen aus
dem betrieblichen bzw. privaten Umfeld auch wissenschaftliche Aspekte abdecken.
Dabei werden im Folgenden besonders die Vorteile durch die Verwendung von
abgeleiteten Einheiten (siehe Abschnitt 4.2.2, S. 33) und das automatische Reduzieren berechneter Einheiten (siehe Abschnitt 4.4.4, S. 48) unterstrichen. Als Beispiel
wird ein kleines Tabellenblatt vorgestellt, das auf Basis eines gegebenen Radius die
Auftriebskraft13 einer Kugel in Wasser kalkuliert (siehe Abbildung 23). Dazu wird
Die Auftriebskraft eines Körpers entspricht der Gewichtskraft des verdrängten Mediums.
Aus dem Volumen des Körpers und der Dichte des Mediums kann die verdrängte Masse
berechnet werden, die als Produkt mit der Beschleunigung (bzw. dem Ortsfaktor) die Auftriebskraft ergibt. [Mür09]
13
5.1 Praktische Anwendungsfälle
61
das Volumen der Kugel berechnet und mit der Dichte von Wasser und dem Ortsfaktor multipliziert.
Abbildung 23: Berechnung der Auftriebskraft einer Kugel in Wasser
Während sich der durchschnittliche Anwender vor dem zusätzlichen Aufwand bei
weiteren Angaben sträubt, ist in der Physik eher verpönt, ohne Einheiten zu rech-
Verwenden von Einheiten in der Zelle
nen. Da wesentlich komplexere Größen als z. B. Euro-Zeichen möglich sind, stellt
sich beim Einsatz von Excel die Frage, wie diese sinnvoll dargestellt werden können
– üblicherweise könnten die Einheiten in Kommentaren oder in einer benachbarten
Zelle angegeben werden.
Dem Physiker wird mit Chexcell bereits zur Eingabe der Werte eine große Unterstützung geboten, da das Add-In die eingetragenen Zeichen untersucht und automatisch zwischen Einheit und Wert unterscheidet (siehe 4.3.2 Über Eingabe zuweisen, S.
37). Dadurch ist ein Rechnen mit den Zahlen wie gewohnt möglich, obwohl die
Einheiten direkt in der zugehörigen Zelle stehen. Hier zeigt sich also selbst ohne die
Prüfung der erste Vorteil des Tools für die wissenschaftliche Anwendung.
Sobald im Tabellenblatt Formeln verwendet werden, wie z. B. zur Berechnung des
Volumens der Kugel, wird die zugehörige Einheit automatisch ermittelt (siehe 4.4
Berechnen der Einheiten durch Chexcell
Einheiten berechnen, S. 42). Diese bietet einen ersten Anhaltspunkt darüber, ob die
verwendete Formel korrekt ist oder ob sie Fehler enthält. Ergibt die Berechnung des
Volumens etwa einen Wert in m², liegt offensichtlich ein Irrtum vor (wahrscheinlich
wurde die Potenz nicht korrekt angegeben). An dieser Stelle unterstützt das Tool
den Anwender, da eine erste Validierung durchgeführt werden kann.
Neben der vereinfachten Eingabe, der Prüfung und dem automatischen Berechnen
von Einheiten aus Formeln zeigt sich ein weiterer Komfort im Versuch, ermittelte
Automatische Reduktion
Einheiten möglichst kurz darzustellen (siehe 4.4.4 Automatische Reduktion von
Einheiten, S. 48). Da N im Voraus als Ableitung von kg*m/s² definiert wurde (siehe
4.2.2 Abgeleitete Einheiten, S. 33), wird die errechnete Kraft nicht in kg*m/s², sondern in der kürzeren Schreibweise N angegeben.
Außerdem wird hier der Nutzen der für den üblichen Anwender eher abschreckenden wissenschaftlichen Schreibweise deutlich: Sollten Zahlen sich in Größenord-
Wissenschaftliche
Schreibweise
62
5 Diskussion
nungen weit entfernt von den SI-Einheiten befinden, kann auf die Darstellung mit
Zehnerpotenz gewechselt werden. In Abbildung 24 wurden das Volumen der Kugel,
der Radius und die Auftriebskraft auf die Exponentenansicht umgestellt. Als Ausgangswert wurde ein Radius von 3 ⋅ 10−3 m, also 0,003 m bzw. 3 mm eingetragen,
wodurch sich eine Auftriebskraft von 1,11 mN ergibt.
Abbildung 24: Berechnung der Auftriebskraft in wissenschaftlicher Schreibweise
Durch den gegebenen Anwendungsfall wird deutlich, dass durch das Add-In besonders im wissenschaftlichen Umfeld, etwa bei physikalischen Berechnungen, eine
enorme Erleichterung geboten wird – im Gegensatz zu dem üblichen BüroAnwender wird ein Physiker wahrscheinlich schnell die Sinnhaftigkeit und den
Nutzen von Chexcell erkennen und schätzen.
5.2 Erweiterungspotenzial
Auch wenn die Funktionsfähigkeit des Programms durch praktische Anwendungsfälle belegt wurde, lässt es sich an einigen Stellen noch verbessern und erweitern.
Da sich Chexcell im Stadium eines Prototypen befindet und vor allem als Machbarkeitsnachweis dient, wurden die folgenden Punkte noch nicht im Zuge diese Untersuchung umgesetzt, sondern können in weiteren Entwicklungen an das erzielte
Ergebnis anknüpfen.
5.2.1 Unterstützung weiterer Excel-Funktionen
In Abschnitt 4.4.2 (S. 44) wurde bereits vorgestellt, wie mit den Funktionsaufrufen
POTENZ und WURZEL umgegangen wird. Sonstige Aufrufe werden von der ErsatzRoutine behandelt, wobei nicht die eigentliche Bedeutung, sondern allein das Übereinstimmen der Einheiten des ersten Parameters berücksichtigt wird. Für einige
Funktionen, wie etwa SUMME oder MITTELWERT reicht dieses Vorgehen aus, da nur
geprüft werden muss, ob allen Zellen im angegebenen Bereich dieselbe Einheit
zugewiesen ist. Als erster Schritt wäre also festzustellen, welche Funktionsaufrufe
sich nicht über das Standard-Vorgehen abbilden lassen und separat behandelt werden müssen.
5.2 Erweiterungspotenzial
63
Bspw. ließe sich der häufig verwendete Bezeichner SVERWEIS relativ problemlos
umsetzen: Der erste Parameter (das Suchkriterium) muss mit der zu durchsuchen-
Unterstützung der
Funktion SVERWEIS
den Spalte abgeglichen werden, alle weiteren Angaben sind für die Prüfung der
Einheiten irrelevant. In Abbildung 25 ist ein Beispiel dargestellt, in dem nach einer
Artikelnummer gesucht werden kann, um das Gewicht des Artikels auszulesen. Das
Suchkriterium (Zelle F2) wird mit der ersten Spalte der übergebenen Matrix abgeglichen (Bereich A2:A6). Im gegebenen Fall sind beide frei von Einheiten, sodass
kein Fehler entsteht. Da Excel beim Übernehmen des gefundenen Wertes auch das
Zahlenformat kopiert, wird die entsprechende Einheit automatisch korrekt eingetragen, sodass dafür kein Mechanismus implementiert werden muss.
Abbildung 25: Beispielanwendung für einen SVerweis
Ein weiteres Beispiel für Funktionen, die gesondert untersucht werden müssten, ist
die konditionale Prüfung mithilfe von WENN. In Abbildung 26 wurde die Suche nach
Artikeln um den Test, ob ein festgesetztes Gewichts-Limit überschritten wird, erweitert. Durch dieses Beispiel wird deutlich, dass auch Vergleichsoperatoren berücksichtigt werden müssen: Falls den miteinander verglichenen Werte (in diesem Fall
die Zellen F3 und F4) verschiedene Einheiten zugewiesen sind, handelt es sich um
einen Fehler. Dahingegen handelt es sich beim zweiten und beim dritten Parameter
der Funktion um Ausgaben, deren Einheiten nicht der durch die Prüfung vorgegebene Einheit entsprechen müssen.
Abbildung 26: Beispielanwendung für eine Wenn-Abfrage
5.2.2 Einheiten aus Spalten-Bezeichnungen auslesen
In der Beschreibung von UCheck (siehe Abschnitt 3.1, S. 21)wurde bereits ersichtlich, dass es durchaus sinnvoll sein kann, in den Überschriften von Tabellen nach
Einheiten zu suchen. Auf die komplexe Erkennung von Tabellen anhand von Rah-
Unterstützung der
Funktion WENN
64
5 Diskussion
men oder farblichen Markierungen (siehe 3.1.2 Zuweisung von Einheiten, S. 22) kann
allerdings verzichtet werden, da sich inzwischen eine weitere Möglichkeit zur Erschließung von Tabellen ergeben hat. Mit Office 2007 bietet Microsoft viele Neuerungen, darunter auch die Funktion, Tabellen anzulegen.14 Die Verwendung dieser
Tabellen in Arbeitsblättern bietet dem Anwender die Vorteile, dass die Formatierung automatisch angepasst wird für Tabellen übliche Funktionen wie Filter und
Summen direkt erzeugt werden können.
In Abbildung 27 wurde die zuvor vorgestellte Übersicht von Artikeln aufgegriffen
und um eine Spalte für den Preis ergänzt. Die Einheiten wurden dabei in eckigen
Klammern angegeben15, wodurch sie jeweils der gesamten Spalte zugeordnet werden. Da solche Tabellen in Excel leichter erzeugt werden können16 und sich dadurch
viele gestalterische und funktionale Möglichkeiten bieten, sollte diese Vorgehensweise ohnehin bevorzugt werden.
Abbildung 27: Tabelle mit Einheiten im Titel
Tabellen-Definitionen
zur Ermittlung von
Einheiten nutzen
Gleichzeitig könnte das Tool auf diese Informationen zurückgreifen, da die Semantik
der Zellen durch den Benutzer festgelegt wird. So wird hier (ähnlich wie bei UCheck)
zwischen Überschriften, Werten und Ergebnissen unterschieden. In den Überschriften könnten in einer festgelegten Schreibweise Einheiten durch den Benutzer hinterlegt werden, z. B. indem sie in eckigen Klammern hinter den Bezeichnern stehen.
Wie seit Excel 2007 Tabellen erstellt werden können und welche Vorteile diese den Anwendern bieten wird unter https://support.office.com/de-DE/article/Erstellen-oderL%C3%B6schen-einer-ExcelTabelle-in-einem-Arbeitsblatt-867f3add-0522-493c-94abb1b9933f46ca#bmcreatetable erklärt.
14
Es wurde bereits geklärt, dass die Schreibweise von Einheiten in eckigen Klammern nicht
den offiziellen Vorgaben entsprechen (siehe 2.3.2 Einheiten, S. 9). Allerdings sollte an dieser
Stelle der praktische Nutzen über die theoretischen Ideale gestellt werden und die Bedienbarkeit durch den Anwender berücksichtigt werden.
15
Über das Ribbon „Einfügen“ und die Schaltfläche „Tabelle“ (alternativ über das Tastenkürzel Strg + T) kann eine Tabelle erzeugt werden – der Bereich, den sie umfassen soll, wird
dabei automatisch erkannt. Mehr Details zu dieser Möglichkeit sind auf der Support-Seite
von Microsoft zusammengestellt (siehe oben).
16
5.2 Erweiterungspotenzial
65
Da der Bereich der Tabelle durch die Definition in Excel stattfindet und auch die
Titelzeile semantisch festgelegt ist, müssten lediglich die Einheiten durch einen
Parse-Vorgang aus den Überschriften extrahiert werden. Die gesamte Spalte könnte
auf diese Weise mit einer Einheit versehen werden.
5.2.3 Deklaration von Einheiten prüfen
In der gegenwärtigen Umsetzung des Prototyps dient die Deklaration von Basiseinheiten ausschließlich der Übersicht für den Anwender, da dieser Konventionen
festlegen und erkennen kann. Weder beim Anlegen von zusammengesetzten Einhei-
Derzeit keine Prüfung,
ob verwendete Einheiten deklariert sind
ten, noch bei der Zuweisung von Einheiten zu Zellen wird verlangt, dass die verwendeten Basiseinheiten überhaupt existieren, sodass diese (zumindest für die
maschinelle Verarbeitung) eigentlich gar nicht deklariert werden müssten.
An dem Grundsatz der Flexibilität (siehe 2.5 Anforderungen, S. 14) sollte nach wie
vor festgehalten werden, damit der Anwender die Prüfung auch weiterhin ohne
jegliche Vorbereitung in Anspruch nehmen kann. Es bietet sich allerdings an, zumindest eine Funktion anzubieten, die sicherstellt, dass alle in anderen Definitionen
verwendeten und zugewiesenen Einheiten zunächst durch den Benutzer deklariert
wurden. Diese zusätzliche Prüfung könnte durch einen Button zur expliziten Ausführung realisiert werden, oder es wird über eine Checkbox das Aktivieren bzw.
Deaktivieren einer permanenten Überwachung angeboten.
Eine ähnliche Möglichkeit bietet Visual Basic mit der „Option Explicit“, da darüber
festgelegt wird, dass alle Variablen vor ihrer Verwendung explizit deklariert sein
müssen. Ist diese Option aktiviert und eine Variable wird ohne vorherige Deklaration verwendet, erscheint eine Fehlermeldung. Die Verwendung dieser Einstellung
wird empfohlen, da der Compiler versehentlich falsch geschriebene Variablennamen
als Syntaxfehler erkennt, anstatt eine implizite Deklaration durchzuführen und
während der Laufzeit semantische Fehler (also unerwartetes Verhalten) zu erzeugen.17
Diese Unterstützung sollte auch Programmierern von Spreadsheets angeboten
werden, falls diese sich dafür entscheiden sollten. Wird an einer Stelle bspw. die
Einheit Netwon anstelle von Newton zugewiesen, erfährt der Anwender direkt, dass
diese nicht existiert – Überraschungen aufgrund von unerwarteten Fehlermeldungen, die zunächst nicht plausibel erscheinen, bleiben ihm dadurch erspart. Der
Grundstein dafür ist durch die Deklaration von Basiseinheiten bereits gelegt; eine
entsprechende Prüfung könnte aber in einer künftigen Version des Programms
ergänzt werden.
Nähere Informationen zu „Option Explicit“ in Visual Basic wurden unter
http://msdn.microsoft.com/en-us/library/y9341s4f.aspx von Microsoft zusammengetragen.
17
Freiwillige Prüfung
66
5 Diskussion
5.2.4 Weitere Zahlenformate erkennen
In Excel kann anhand der Eingabe in einigen Fällen bereits das gewünschte Zahlenformat erkannt werden; dies kann eine Entlastung, aber auch eine Beeinträchtigung
für den Anwender darstellen (siehe 4.5.3 Schwierigkeiten aufgrund der Schnittstelle,
S. 54). Da beim kombinierten Eintragen von Wert und Einheit zunächst durch das
Tool erkannt werden muss, ob es sich beim ersten Teil der Zeichenkette um eine von
Excel verwertbare Zahl handelt, muss dieser zunächst analysiert werden.
Erweiterung um
Brüche und weitere
Währungen
Die wissenschaftliche Schreibweise wird bereits unterstützt, sodass die Eingabe
„3e2 m“ als Darstellung von Excel für die Zahl 300 mit der Einheit m erkannt wird.
Genauso gilt bei der Verwendung von Dezimal- oder Tausendertrennzeichen, dass
diese als solche wahrgenommen und entsprechend an Excel weitergegeben werden.
Bisher sind allerdings noch nicht alle Zahlenformate implementiert, sodass die
Zeichenkette „1 2/3 m“ als Text interpretiert wird, obwohl es sich bei „1 2/3“ um
eine Zahl handelt, die von Excel als Bruch dargestellt und verarbeitet werden kann.
Das Tool müsste also zusätzlich berücksichtigen, dass ein Leerzeichen und ein
Schrägstrich zur Abbildung von Brüchen erlaubt sind. Der Vollständigkeit halber
sollten außerdem weitere Symbole von Währungen (neben Euro, Dollar und Yen) in
die Liste gültiger Zeichen aufgenommen werden, sodass Chexcell auch diese Eingaben als zulässige Einheiten erkennt.
5.2.5 Ergänzung um Faktoren
Derzeit werden ausschließlich kohärente Einheiten unterstützt (siehe 2.3 Größen
und Einheiten, S. 8), also nur solche, die sich ohne Faktoren aus Basiseinheiten zusammensetzen lassen. Dieser Ansatz könnte in einer künftigen Version erweitert
werden, sodass auch Faktoren unterstützt werden und sich damit auch inkohärente
Einheiten definieren lassen.
Wissenschaftliche
Schreibweise als
Abhilfe
Abhilfe kann in der aktuellen Lösung durch die wissenschaftliche Schreibweise
geschaffen werden. Anstatt 2 kN anzugeben kann in Excel „2E3 N“ eingetragen
werden, was 2·10³ N (also 2000 Newton) entspricht. Diesem Trick mag zwar für
wissenschaftliche Anwendungen, die ohnehin den Anspruch haben, auf SI-Einheiten
zu basieren, genügen; sobald jedoch Einheiten außerhalb dieser Norm definiert
werden sollen, stößt das Tool an seine Grenzen (z. B. bei der Definition von Zoll).
Einen tatsächlichen Ausweg bietet nur die Unterstützung von Faktoren bei der
Definition von abgeleiteten Einheiten, sodass z. B.
cm = 0,01*m
definiert werden könnte. Dieser Ansatz wurde während der Entwicklung bereits
verfolgt, aufgrund von Problemen allerdings wieder aus dem Prototypen entfernt. Es
5.3 Vergleich mit bestehenden Ansätzen
67
spricht nichts dagegen, diese Funktionalität erneut zu implementieren – dabei müssten jedoch einige Schwierigkeiten berücksichtigt werden.
Sobald zwei Einheiten miteinander verrechnet werden, die über einen Zahlenfaktor
miteinander in Beziehung stehen (wie etwa Sekunden und Minuten), muss geprüft
werden, ob der Benutzer diesen Faktor berücksichtigt. Wird bspw. ein in Minuten
angegebener Wert zunächst mit 60 multipliziert und anschließend mit Sekunden
zusammengezählt, ist für den Betrachter klar, dass das Ergebnis wahrscheinlich
ebenfalls in Sekunden angegeben ist. Dieser Zusammenhang könnte prinzipiell auch
durch den Algorithmus erschlossen werden. Im Gegensatz dazu könnte eine einheitslose Zahl auch einfach Teil einer Formel sein, wie etwa der Radius eines Kreises
verdoppelt wird, um den Durchmesser zu erhalten. Es wäre auch eine Kombination
beider Fälle denkbar, z. B. wenn ein Radius in Zentimetern angegeben ist und daraus
der Durchmesser in Zoll errechnet werden soll – bei dem Faktor von 5,08 lässt sich
nicht mehr sinnvoll erkennen, ob hier eine gültige Umrechnung vorliegt, oder ob
dem Anwender ein Fehler unterlaufen ist.
Weitere Schwierigkeiten ergeben sich, wenn sich die Umrechnung zweier Einheiten
nicht allein durch Faktoren ausdrücken lässt (wie z. B. bei Grad Celsius und
Kelvin18), wenn sie nicht konstant ist (z. B. wegen sich ändernder Wechselkursen
von Währungen), oder wenn sie abhängig vom Betrachter Schwankungen unterliegt
(wie z. B. die Anzahl der Tage eines Jahres, die von Banken auf 360, von einem
Arbeitnehmer aufgrund von Wochenende und Urlaub auf 230 und von einem
Physiker auf 365,25 festgelegt werden könnte).
Auch wenn sich nicht alle diese Probleme lösen lassen, sollten sie bei der Erweiterung von Chexcell um Faktoren zumindest berücksichtigt werden. Zunächst muss
dabei untersucht und entschieden werden, ob die Umrechnung automatisch erfolgen
soll, oder eine durch den Benutzer ausgelöste Funktion, wie XeLda sie anbietet
(siehe Abschnitt 3.2, S. 25), bevorzugt wird.
5.3 Vergleich mit bestehenden Ansätzen
In Kapitel 3 (S. 21) wurden bereits zwei bestehende Ansätze mit ähnlicher Zielsetzung vorgestellt (siehe 3 Bestehende Ansätze, S. 21), die im Folgenden mit Chexcell
verglichen werden. Abschließend wird eine Bewertung zum besten Einsatz der
Lösungen gegeben.
Um eine Temperatur in Kelvin umzurechnen, muss der Wert 273,15 zur Angabe in Grad
Celsius addiert werden [DIN1345]. Es findet also keine Multiplikation statt, wodurch sich
auch kein Umrechnungsfaktor angeben lässt.
18
Schwierigkeiten bei
der Unterstützung von
Faktoren ohne konstanten Umrechnungsfaktor
68
5 Diskussion
5.3.1 Vergleich mit UCheck
Sowohl UCheck als auch Chexcell haben den Vorsatz, den Anwender möglichst
wenig mit zusätzlichem Aufwand zu belasten. Dazu wählt UCheck den Ansatz, auf
die bestehenden Strukturen eines Spreadsheets aufzubauen und Einheiten anhand
von Tabellenüberschriften zuzuweisen. Die Hauptaufgabe liegt also im Erkennen des
durch den Benutzer gewählten semantischen Aufbaus und im Ableiten unlogischer
Zusammenhänge beim Rechnen mit den in den Tabellen enthaltenen Werten.
Verwendung bestehender Informationen
bei UCheck
Da alle Informationen aus existierenden Angaben ermittelt werden sollen, verlangt
das Tool praktisch keinen zusätzlichen Aufwand und kann dennoch auf semantische
Fehler hinweisen. Im Gegenzug hatten die Entwickler aber auch eine klare Vorstellung davon, wie Excel-Dateien üblicherweise strukturiert sein sollten – sobald die
vom Benutzer gewählte Form davon abweicht, wird die Prüfung durch das Tool
mühselig oder unmöglich. Werden bspw. einzelne, von Tabellen losgelöste Felder
oder Querbezüge zwischen verschiedenen Tabellen verwendet, kann der Algorithmus nicht mehr ordnungsgemäß arbeiten.
Explizite Zuweisungen
bei Chexcell
Dem gegenüber steht Chexcell, das vom Anwender explizite Zuweisungen von Einheiten verlangt, da diese nur in wenigen Fällen automatisch ermittelt werden können. Es werden also mehr Interaktion mit dem Add-In und ein größeres Verständnis
im Umgang mit Größen und Einheiten verlangt, als es bei UCheck der Fall ist. Auf der
anderen Seite muss sich der Benutzer nicht an vorgegebene Strukturen halten und
erhält mehr Freiheit.
Vergleich von UCheck
mit Chexcell
Welche der beiden Lösungen zu bevorzugen ist, hängt mit dem gegebenen Anwendungsfall, aber auch mit der Mentalität des Anwenders zusammen. Sollten Spreadsheets vorliegen, die Daten bereits in entsprechender Tabellenform enthalten, bietet
sich die Verwendung von UCheck an – ansonsten ist wahrscheinlich Chexcell die
bessere Wahl. Daraus wird auch deutlich, dass in einer zukünftigen Version des
Tools die Berücksichtigung von Tabellenüberschriften zum Ermitteln von Einheiten
implementiert werden sollte (siehe 5.2.2 Einheiten aus Spalten-Bezeichnungen auslesen, S. 63).
5.3.2 Vergleich mit XeLda
Im Gegensatz zu UCheck wurde mit XeLda ein höchst wissenschaftlicher Ansatz
realisiert, während eine einfache Bedienung durch den Endanwender weniger im
Mittelpunkt steht. Genau wie bei Chexcell werden Einheiten den Zellen explizit
durch den Nutzer zugewiesen und nicht anhand der Tabellenstruktur automatisch
ermittelt.
Wenig geeignet für den
Alltagsgebrauch
Ein für den alltäglichen Gebrauch entscheidender Nachteil von XeLda ist die Umsetzung als autonome Software, die nicht in Form einer Erweiterung in Excel integriert
werden kann. Eine ständige automatische Prüfung während der Bearbeitung ist
5.3 Vergleich mit bestehenden Ansätzen
69
nicht möglich, sodass diese selbstständig durch den Anwender initiiert werden
muss. Weiterhin lässt sich das Ergebnis einer Analyse aufgrund der umfangreichen
Anpassungen der Farben und Ergänzungen um Annotationen kaum weiterverarbeiten – das Resultat des Tools ist entsprechend als reine Ausgabe zu betrachten. Insgesamt findet XeLda also Anwendung für einmalige (oder zumindest seltene) Prüfungen, ist für eine permanente Überwachung aber ungeeignet.
Dieser Nachteil bringt aber auch Möglichkeiten bei der Darstellung der Ergebnisse
mit sich, die Chexcell aufgrund der Prüfung zur Laufzeit nicht bietet. Dazu gehören
die Markierungen in unterschiedlichen Farben zum Hinweisen auf verschiedene
Vorteile von XeLda
aufgrund der separaten Darstellung des
Ergebnisses
Arten von Fehlern und die Pfeile zum Angeben, welche Zellen von inkorrekten Formeln referenziert wurden. Diese zusätzlichen Elemente zur Darstellung der Ergebnisse unterstützen den Anwender beim Verstehen der Zusammenhänge, wären aber
bei der permanenten Analyse in Chexcell sehr aufdringlich und lästig. Außerdem
benötigt XeLda keine Funktion zum Ignorieren von Fehlern, da im eigentlichen
Tabellenblatt, in dem gearbeitet wird, keine Manipulationen durch das Tool vorgenommen werden und damit keine unerwünschten Nebeneffekte auftreten (wie die
erzeugten Kommentare mit Fehlermeldungen).
Neben den Vorteilen, die dem anderen Ansatz der einmaligen Prüfung zuzuschreiben sind, bietet XeLda zwei weitere Vorzüge, die in Chexcell nicht implementiert
Coercion und Fehlerursachen
sind. Zum einen lassen sich Einheiten mithilfe einer Coercions-Funktion umrechnen,
was von der aktuellen Version von Chexcell nicht unterstützt wird, da nur kohärent
abgeleitete Einheiten definiert werden können (also keine Faktoren möglich sind).
Zum anderen werden in XeLda detaillierte Informationen über die Ursache eines
aufgetretenen Fehlers angezeigt, sodass der Nutzer den Ursprung nicht selbst ermitteln muss.
Wie bei UCheck stellt sich auch bei diesem Vergleich heraus, dass beide Tools Vorund Nachteile mit sich bringen, die vor allem den unterschiedlichen Ansätzen ge-
Vergleich XeLda mit
Chexcell
schuldet sind. Während Chexcell mit einer permanenten Prüfung, der leichteren
Bedienung und der besseren Übersichtlichkeit überzeugt, bietet XeLda mit Coercion,
Fehlererklärung und dem Anzeigen von Referenzen ein umfangreicheres Angebot an
Funktionen. Auch hier müssen bei der Entscheidung für eines der beiden Tools die
persönlichen Vorlieben und die konkreten Anwendungsszenarien berücksichtigt
werden.
5.3.3 Abschließende Bewertung
Bezüglich der Interaktion mit dem Nutzer hebt sich UCheck hervor, da keine expliziten Definitionen und Zuweisungen nötig sind. Chexcell ist auf solche Angaben durch
den Anwender angewiesen, bietet dabei aber durch das Parsen von Eingaben angenehmere Methoden als XeLda, da dieses ein Hinterlegen der Einheiten in Kommentaren oder über das Control Panel erfordert.
Vorteile UCheck
70
Vorteile XeLda
5 Diskussion
Dahingegen stellt XeLda, mit der Umrechnung von Einheiten sowie der detaillierten
Beschreibung über die Ursache eines Fehlers mithilfe von Farben und Pfeilen Funktionen zur Verfügung, die von den Add-Ins nicht angeboten werden können. Ob
diese Besonderheiten die umständlichere Bedienung durch die Umsetzung als separates Programm aufwiegen, muss jeder Benutzer je nach Anwendungsgebiet und
persönlichen Vorlieben entscheiden.
Chexcell als Mittelweg
Als Mittelweg zwischen den beiden Lösungen bietet Chexcell eine im Verhältnis zu
den gegebenen Freiheiten (wie eigene Deklarationen atomarer und Definitionen
zusammengesetzter Einheiten) eine einfache Handhabung, gleichzeitig aber auch
einen gewissen Funktionsumfang, der sich trotz der permanenten Prüfung realisieren lässt. Es kann also als Kompromiss betrachtet werden, der sich den anderen
Tools in Bezug auf deren jeweiligen Vorzüge zumindest stark annähert, auch wenn
er diese nicht ganz erreicht.
Idealer Ansatz wäre
die Vereinigung von
UCheck, XeLda und
Chexcell
Aus diesen Betrachtungen ergibt sich die Idee, die jeweiligen Vorzüge der Programme in einem Produkt zu vereinen. Dabei stellen sich zwar gewisse Grenzen heraus, z.
B. weil sich die Markierungen durch Farben und Pfeile nicht mit einer dauerhaften
Prüfung während der Bearbeitung vereinen lassen; dennoch könnten einige der
Merkmale verknüpft werden. So ließe sich die automatische Erkennung anhand von
Tabellenüberschriften in das Modell von Chexcell übertragen (siehe 5.2.2 Einheiten
aus Spalten-Bezeichnungen auslesen, S. 63), wohingegen aus XeLda die Ausgabe einer
detaillierten Beschreibung zur Ursache eines Fehlers und die Umrechnung von
Einheiten derselben Größe mithilfe einer Coercion-Funktion übernommen werden
könnte (siehe 5.2.5 Ergänzung um Faktoren, S. 66).
Fazit
Zusammenfassend lässt sich sagen, dass jedes der drei Tools Besonderheiten,
gleichzeitig aber auch Schwachstellen mit sich bringt. UCheck wirbt mit einer einfachen Bedienung, gibt aber relativ strikte Grenzen vor; XeLda bietet einen enormen
Funktionsumfang, fordert vom Nutzer aber auch einen hohen Zeiteinsatz für das
dedizierte Durchführen von Prüfungen; Chexcell bringt viel Flexibilität und eine
relativ einfache Bedienung mit sich, kann aber das umfassende Angebot an Funktionalität von XeLda und die Zusicherung von UCheck, auf Benutzereingaben zu verzichten, nicht erreichen. Sie alle verfolgen unterschiedliche Ansätze und bringen je
nach Benutzerkreis und Anwendungsgebiet verschiedene Vor- und Nachteile mit
sich – es lässt sich also keine pauschale Aussage treffen, welches das beste der drei
Programme ist.
5.4 Grenzen der Prüfung von Einheiten
In der Problemstellung (siehe Abschnitt 2.1, S. 3) wurde bereits die „European
Spreadsheet Risk Interest Group“ vorgestellt, die öffentlich diskutierte Fehler in
Spreadsheets sammelt. Im Folgenden werden zwei der dort aufgeführten Szenarien
5.4 Grenzen der Prüfung von Einheiten
71
als Beispiele herangezogen, deren Fehler trotz einer Einheiten-Prüfung nicht hätten
verhindert werden können.
5.4.1 Unvollständige Selektion
Auf der Internetseite von „Next New Deal“ berichtet Mike Konczal am 16. April 2013
über die Enthüllung eines Fehlers in einer Excel-Kalkulation [Kon13]. Hintergrund
war die von Carmen Reinhart und Kenneth Rogoff im Jahr 2010 veröffentlichte
Abhandlung „Growth in a Time of Debt.“ [Rei10] Darin kommen die Autoren zu dem
Ergebnis, dass die durchschnittliche Wachstumsrate von Ländern mit einer Verschuldung von mehr als 90 Prozent des Bruttoinlandsprodukts etwa ein Prozentpunkt unter dem weniger verschuldeter Länder liege. Diese Aussage wurde in vielen
weiteren Untersuchungen und Zeitungsartikeln (z. B. in „The Washington Post“
[The13]) als Grundlage verwendet, was die Wichtigkeit der ursprünglichen Analyse
verdeutlicht.
Im Nachhinein wurde ermittelt, dass bei der Bestimmung des durchschnittlichen
Wirtschaftswachstums der Länder mit über 90 Prozent Verschuldung 5 Länder nicht
berücksichtigt wurden: Die Formel zum Berechnen des Durchschnitts hat einen
Falsche Berechnung,
da nicht alle Werte
selektiert wurden
unvollständigen Bereich als Parameter erhalten. Die Ursache liegt also nicht in der
inkorrekten Verwendung von Einheiten, weshalb eine entsprechende Prüfung durch
ein Tool keinen Erfolg hätte.
Für dieses Szenario müsste eher beurteilt werden, ob sich eine Formel nur auf einen
Teil einer Sammlung von Werten bezieht. Um dies zu erreichen muss allerdings kein
Add-In entwickelt werden, da diese Prüfung in Excel bereits implementiert ist – sie
muss lediglich in den Optionen für Formeln aktiviert werden (siehe Abbildung 28).
Abbildung 28: Optionen zur Formel-Prüfung in Excel
Sobald diese Einstellung gesetzt ist, wird eine Warnung ausgegeben, wenn der
Parameter einer Formel nur einen Teil eines zusammenhängenden Bereichs angibt.
Gleichzeitig wird angeboten, diesen Fehler anzupassen, indem der Bezug um die
ausgeschlossenen Zellen erweitert wird, oder einfach zu ignorieren. In Abbildung 29
Problemlösung nicht
mithilfe von EinheitenPrüfung, sondern
durch entsprechende
Excel-Einstellung
72
5 Diskussion
bezieht sich die Funktion SUMME nur auf die Zellen A1 und B1, betrachtet also die
Zahl in der dritten Spalte nicht – genau der Fehler, der auch Carmen Reinhart und
Kenneth Rogoff unterlaufen ist.
Abbildung 29: Warnung von Excel über nicht vollständige Bereiche
Auch wenn eine Prüfung der Einheiten in ihrem Fall nicht hilfreich gewesen wäre,
hätte sich der Fehler durch das Setzen der Einstellung vermeiden lassen.
5.4.2 Fehlerhafte Eingabe
Das zweite Beispiel für Fehler in Spreadsheets bezieht sich auf den Ticketverkauf
zum Synchronschwimmen bei den Olympischen Spielen 2012 in London. Wie „The
Telegraph“ im Januar 2012 berichtete, wurde die Disziplin Synchronschwimmen um
10.000 Tickets überbucht [The12]. Da dieser Irrtum erst ein halbes Jahr nach Verkauf bei der Planung der Sitzplätze aufgefallen ist, musste das Organisationskomitee
viele alternative Angebote während der Weihnachtszeit zusammenstellen und den
Käufern der Tickets ohne Aufpreis bereitstellen. Das Missgeschick war also nicht nur
mit einem Imageschaden, sondern auch mit einem operativen und finanziellen
Aufwand verbunden. [Bru06]
Fehler aufgrund einer
falschen Eingabe durch
den Anwender
Zurückzuführen ist der beschriebene Fehler allerdings nicht auf falsche Formeln
oder gar mangelhafte Berechnungen durch Excel, sondern ganz einfach auf eine
falsche Eingabe durch den Sachbearbeiter. Dieser hat schlichtweg die Zahl 20.000
statt 10.000 im Feld der verbleibenden Menge an Tickets eingetragen.
Das Beispiel macht deutlich, welche Konsequenzen ein trivialer Tippfehler haben
kann – aber auch, dass selbst eine ausgereifte logische Abfrage oder eine durchdachte Lösung zur semantischen Validierung von Eingaben (zumindest ohne vorgegebene Wertebereiche oder weitere Informationsquellen) nicht in der Lage sind, fehlerhafte Eingaben eines Menschen zu erkennen.
73
6 Schlussbetrachtung
Das Ziel dieser Ausarbeitung war die Entwicklung eines Programms, das Fehler im
Zusammenfassung
Umgang mit Einheiten erkennt und den Anwender auf unlogische Zusammenhänge
hinweist. Dazu wurde die Problematik beschrieben, der theoretische Hintergrund in
Bezug auf Größen und Einheiten geklärt und Anforderungen aufgestellt, die an das
Tool gestellt werden. Weiterhin wurden die Ansätze von UCheck und XeLda, sowie
die Hintergründe der Implementierung von Chexcell vorgestellt.
Die Diskussion macht deutlich, dass die realisierte Lösung Chexcell im beruflichen,
privaten und wissenschaftlichen Umfeld bereits eingesetzt werden kann, obwohl
noch einige Punkte offen sind, die in künftigen Versionen umgesetzt werden könnten. Auch der Vergleich zeigt, dass zwar jedes der vorgestellten Tools je nach Anwendungsgebiet unterschiedliche Vor- und Nachteile mit sich bringt, aber Chexcell
aufgrund seiner benutzerfreundlichen und dennoch flexiblen Bedienung hervorsticht und sich als gutes Werkzeug für universelle Einsatzgebiete eignet.
Wie sich Chexcell in Zukunft entwickeln könnte, wird als Erweiterungspotenzial
Ausblick
bereits intensiv behandelt – dabei wird deutlich, dass die meisten Vorteile von
UCheck und XeLda durchaus übernommen werden könnten. Während die Tools
aktuell verschiedene Stärken und Schwächen mitbringen, könnte durch die Kombination der drei Ansätze ein mächtiges Werkzeug geschaffen werden, das viele Anwendungsszenarien abdeckt.
Da bei der Entwicklung von Add-Ins trotz geeigneter Schnittstellen immer Abstriche
gemacht werden müssen, wäre eigentlich Microsoft in der Verantwortung, einen
passenden Ansatz (etwa die Kombination der vorgestellten Lösungen) in Excel zu
integrieren. Die bereits bestehenden Fehler-Prüfungen ließen sich um EinheitenFehler ergänzen, sodass auf die Notlösung mit Kommentaren verzichtet werden
könnte und sich ein schlüssiges Bild ergeben würde. Auch die Zuweisung von Einheiten könnte für den Anwender transparenter gestaltet werden, indem diese Funktion in die Auswahl des Zahlenformats integriert wird und nicht nur darauf aufbaut.
Die Implementierung von Chexcell beweist, dass eine Einheiten-Prüfung in Excel
möglich und sinnvoll ist. Microsoft könnte darauf aufbauen und einen entscheidenden Beitrag zur Unterstützung der Benutzer leisten. Im engen Zusammenhang damit
steht aber auch die Notwendigkeit zur Anerkennung von Excel-Anwendern als
vollwerte Entwickler. Dazu ist nicht nur die Initiative von Microsoft notwendig,
sondern auch die Einsicht der Unternehmen und Anwender, dass die Pflege von
Einheiten keine Zeitverschwendung, sondern eine gute Möglichkeit zum Finden
semantischer Fehler ist. Es gilt zu erkennen, dass durchaus gespart werden darf –
allerdings nicht am falschen Ende.
Fazit
74
Literaturverzeichnis
Literaturverzeichnis
[Abr07] Abraham, Robin; Erwig, Martin (2007): UCheck: A spreadsheet type checker
for end users in: Journal of Visual Languages & Computing 18 (1); S. 71-95
[Ant04] Antoniu, Tudor; Steckler, Paul A.; Krishnamurthi, Shriram; Neuwirth, Erich;
Felleisen, Matthias (2004): Validating the Unit Correctness of Spreadsheet
Programs in: ICSE 2004: Proceedings of the 26th international Conference on
Software Engineering held May 23-28, 2004; ElectronicsIEEEInternational
Conference on Semiconductor (Hrsg.); Los Alamitos: IEEE Computer Society
Press; S. 439-448
[Bae74] Baehr, Hans Dieter (1974): Physikalische Größen und ihre Einheiten;
Düsseldorf: Bertelsmann Universitätsverlag; S. 13-19, 27-30, 38-47
[Bla04] Blattner, Patrick (2004): Using Microsoft Office Excel 2003; Indianapolis:
Que Publishing; S. 709
[Bra04] Bracha, Gilad (2004): Pluggable Type Systems; :
[Bra93] Bracha, Gilad; Griswold, David (1993): Strongtalk: Typechecking Smalltalk
in a Production Environment; New York: Horizon Technologies
[Bru06] Bruney, Alvin (2006): Professional VSTO 2005: Visual Studio 2005 Tools for
Office; Indianapolis: Wiley Publishing, Inc.; S. 2-3
[Buh05] Buhl, Axel; Strauch, Petra (2005): Grundkurs VBA: Einführung in die
Programmentwicklung mit Visual Basic for Applications in Excel; München:
Oldenbourg Wissenschaftsverlag GmbH; S. 1-3, 109-134
[Die14] Dietlein, Monika; Romberg, Oliver (2014): Keine Panik vor
Ingenieurmathematik!: Erfolg und Spaß im e-hoch-wichtig-Fach des
Ingenieurstudiums; Wiesbaden: Springer Fachmedien; S. 10-12
[DIN1301] DIN 1301-1:2010-10: Einheiten - Teil 1: Einheitennamen,
Einheitenzeichen; Berlin: Beuth Verlag
[DIN1304] DIN 1304-8:1994-02: Formelzeichen; Formelzeichen für Stromrichter mit
Halbleiterbauelementen; Berlin: Beuth Verlag
[DIN1313] DIN 1313:1998-12: Größen; Berlin: Beuth Verlag
[DIN1338] DIN 1338:2011-03: Formelschreibweise und Formelsatz; Berlin: Beuth
Verlag
[DIN1345] DIN 1345:1993-12, : Thermodynamik; Grundbegriffe; Berlin: Beuth
Verlag
[Ede14] Eden, Klaus; Gebhard, Hermann (2014): Dokumentation in der Mess- und
Prüftechnik; Wiesbaden: Springer Fachmedien; S. 3-11
Literaturverzeichnis
75
[Erw02] Erwig, Martin; Burnett, Margaret (2002): Adding Apples and Oranges in:
Practical Aspects of Declarative Languages; Berlin, Heidelberg: Springer-Verlag;
S. 173-191
[EuS15] EuSpRIG: EuSpRIG Horror Stories, http://www.eusprig.org/horrorstories.htm (Zugriff: 3. Januar 2015)
[Fri06] Friedl, Jeffrey E. F. (2006): Mastering Regular Expressions; Sebastopol:
O'Reilly Media, Inc.
[Gil03] Gillam, Richard (2003): Unicode Demystified: A Practical Programmer's Guide
to the Encoding Standard; Boston: Addison-Wesley Professional; S. 443
[Hel10] Held, Bernd (2010): Microsoft Excel 2010; Heidelberg: Hüthig Jehle Rehm; S.
17
[Jon03] Jones, Simon Peyton; Burnett, Margaret; Blackwell, Alan (2003): A usercentred approach to functions in Excel in: International Conference on Functional
Programming, Uppsala, Sept 2003 38 (9); S. 165-176
[Ken10] Kennedy, Andrew (2010): Types for Units-of-Measure: Theory and Practice
in: Central European Functional Programming School;
HorváthZoltánPlasmeijerRinusZsókViktória (Hrsg.); Berlin Heidelberg: SpringerVerlag; S. 268-305
[Ken94] Kennedy, Andrew (1994): Dimension Types in: European Symposium on
Programming 788
[Kim04] Kimmel, Paul (2004): Excel 2003 VBA Programmer's Reference;
Indianapolis: Wiley Publishing, Inc.; S. 89-92
[Kle13] Kleinschmager, Sebastian (2013): Can static type systems speed up
programming? An experimental evaluation of static and dynamic type systems;
Hamburg: Diplomica Verlag; S. 8-9
[Kon13] Konczal, Mike (2013): Researchers Finally Replicated Reinhart-Rogoff, and
There Are Serious Problems,
http://www.nextnewdeal.net/rortybomb/researchers-finally-replicatedreinhart-rogoff-and-there-are-serious-problems (Zugriff: 1. Januar 2015)
[Kuc07] Kuchling, Horst (2007): Taschenbuch der Physik; Leipzig: Carl Hanser
Verlag; S. 26-29;37-49
[Lou10] Louis, Dirk (2010): C, C+: das komplette Programmierwissen für Studium
und Job; München: Markt+Technik Verlag; S. 101
[Mac07] MacDonald, Matthew (2007): Excel 2007: The Missing Manual; Sebastopol:
O'Reilly Media, Inc.; S. 745-748
76
Literaturverzeichnis
[Mei04] Meijer, Erik; Drayton, Peter (2004): Static Typing Where Possible, Dynamic
Typing When Needed: The End of the Cold War Between Programming Languages; :
Microsoft Corporation
[Mic99] Microsoft (1999): Microsoft Beefs Up VBScript with Regular Expressions,
http://msdn.microsoft.com/en-us/library/ms974570.aspx (Zugriff: 13.
Dezember 2014)
[Moe08] Frohne, Heinrich; Löcherer, Karl-Heinz; Müller, Hans; Harriehausen,
Thomas; Schwarzenau, Dieter (2008): Moeller Grundlagen der Elektrotechnik;
Wiesbaden: Vieweg+Teubner Verlag; S. 3-7
[Mür09] Mürset, Urs; Dumm, Thomas (2009): Methoden der Physik, Mechanik;
Zürich: Compendio Bildungsmedien; S. 196
[Nar93] Nardi, Bonnie A. (1993): A Small Matter of Programming: Perspectives on
End User Computing; Cambridge: MIT Press; S. 5-9
[Pan98] Panko, Raymond (1998): What We Know About Spreadsheet Errors in:
Journal of End User Computing 10 (2); S. 15-21
[Pie02] Pierce, Benjamin C. (2002): Types and Programming Languages; Cambridge:
MIT Press; S. 1-8
[Raj00] Rajalingham, Kamalasen; Chadwick, David; Knight, Brian; Edwards, Dilwyn
(2000): Quality Control in Spreadsheets: A Software Engineering-Based Approach
to Spreadsheet Development in: System Sciences, 2000. Proceedings of the 33rd
Annual Hawaii International Conference; : IEEE Computer Society Press
[Rei10] Reinhart, Carmen M.; Rogoff, Kenneth S. (2010): Growth in a Time of Debt;
Cambridge: National Bureau of Economic Research
[Sch14a] Schröder, Bernd (2014): Einheiten und Symbole für Ingenieure; Wiesbaden:
Springer Verlag; S. 3-8
[Sch14b] Schels, Ignatz (2014): Excel Formeln und Funktionen; München: Carl
Hanser Verlag; S. 1-3
[Sco09] Scott, Michael L. (2009): Programming Language Pragmatics; Oxford:
Elsevier; S. 289-314
[Sem11] Sempf, Bill; Jausovec, Peter (2011): VSTO For Dummies; Indianapolis: Wiley
Publishing, Inc.
[Ste03] Stephens, Rod (2003): Microsoft Office Programming: A Guide for
Experienced Developers; New York City: Apress; S. 682
[Stö04] Stöcker, Horst (2004): Taschenbuch der Physik; Frankfurt am Main:
Wissenschaftlicher Verlag Harri Deutsch; S. 993-995
Literaturverzeichnis
77
[Sto06] Stoecker, Matt (2006): Using Settings in C#, http://msdn.microsoft.com/enus/library/aa730869.aspx (Zugriff: 27. Dezember 2014)
[Tha09] Thangaswamy, Vivek (2009): VSTO 3.0 for Office 2007 Programming;
Birmingham: Packet Publishing; S. 12-17
[The12] The Telegraph (2012): London 2012 Olympics: lucky few to get 100m final
tickets after synchronised swimming was overbooked by 10,000,
http://www.telegraph.co.uk/sport/olympics/8992490/London-2012-Olympicslucky-few-to-get-100m-final-tickets-after-synchronised-swimming-wasoverbooked-by-10000.html (Zugriff: 3. Januar 2015)
[The13] The Washington Post (2013): Debt reduction hawks and doves,
http://www.washingtonpost.com/opinions/debt-reduction-hawks-anddoves/2013/01/26/3089bd52-665a-11e2-93e1-475791032daf_story.html
(Zugriff: 3. Januar 2015)
[Ver06] Verschuuren, Dr. Gerard M. (2006): From VBA to VSTO: Is Excel's New
Engine Right for You?; Uniontown: Holy Macro! Books; S. 1-6, 49-54
[Wal03] Walkenbach, John (2010): Excel 2010 Bible; Indianapolis: Wiley Publishing;
S. 249-256
[Wal11] Walkenbach, John (2011): Excel 2007 Power Programming with VBA;
Indianapolis: Wiley Publishing, Inc.; S. 699-711
[Wün10] Wünsche, Manfred (2010): BWL für IT-Berufe; Wiesbaden:
Vieweg+Teubner Verlag; S. 32-33
[Zel09] Zelkowitz, Marvin (2009): Social networking and the web in: Advances in
Computers 77
78
Abbildungsverzeichnis
Abbildungsverzeichnis
Abbildung 1: Verwendete Begriffe im Umfeld von Excel..........................................................6
Abbildung 2: Ernte-Übersicht als Anwendungsfall von UCheck (vgl. [Erw02]) .......... 22
Abbildung 3: Gegenüberstellung von Erträgen und Aufwendungen ................................ 23
Abbildung 4: Berechnung von Kosten für Mitarbeiter ........................................................... 24
Abbildung 5: Control Panel von XeLda [Ant04]......................................................................... 25
Abbildung 6: Ergebnis einer Überprüfung durch XeLda [Ant04] ...................................... 26
Abbildung 7: Chexcell im Ribbon..................................................................................................... 32
Abbildung 8: Pflege der Basis-Einheiten im Aufgabenbereich ............................................ 33
Abbildung 9: Pflege der abgeleiteten Einheiten im Aufgabenbereich.............................. 34
Abbildung 10: Exportieren und Importieren von Einheiten ................................................ 36
Abbildung 11: Schaltfläche "Assign Unit" im Ribbon .............................................................. 37
Abbildung 12: Ausschnitt der Auswahl des Zahlenformats in Excel ................................ 40
Abbildung 13: Ablaufdiagramm zum Berechnen der Einheit .............................................. 46
Abbildung 14: Hinweis beim Zuweisen einer inkompatiblen Einheit ............................. 50
Abbildung 15: Automatisches Aktualisieren abhängiger Zellen ........................................ 51
Abbildung 16: Bekannte Fehler und Warnungen in Excel .................................................... 51
Abbildung 17: Einheiten-Fehler von Chexcell ............................................................................ 52
Abbildung 18: Einstellungen zur automatischen Formatierung ........................................ 53
Abbildung 19: Kosten-Nutzen-Analyse ohne Prüfung von Einheiten .............................. 58
Abbildung 20: Kosten-Nutzen-Analyse mit Prüfung von Einheiten.................................. 58
Abbildung 21: Kosten-Nutzen-Analyse mit korrekter Berechnung .................................. 59
Abbildung 22: Berechnung des durchschnittlichen Gasverbrauchs ................................. 59
Abbildung 23: Berechnung der Auftriebskraft einer Kugel in Wasser ............................ 61
Abbildung 24: Berechnung der Auftriebskraft in wissenschaftlicher Schreibweise . 62
Abbildung 25: Beispielanwendung für einen SVerweis ......................................................... 63
Abbildung 26: Beispielanwendung für eine Wenn-Abfrage ................................................. 63
Abbildung 27: Tabelle mit Einheiten im Titel ............................................................................ 64
Abbildung 28: Optionen zur Formel-Prüfung in Excel ........................................................... 71
Abbildung 29: Warnung von Excel über nicht vollständige Bereiche .............................. 72
Tabellenverzeichnis
79
Tabellenverzeichnis
Tabelle 1: SI-Basiseinheiten und ihre Basisgrößen (vgl. [DIN1301]) .............................. 11
Tabelle 2: Transformation in die Normalform bei abgeleiteten Einheiten .................... 35
Tabelle 3: Beispiele für Eingaben und resultierende Zelleninhalte bzw. Einheiten .. 39
Tabelle 4: Übersicht einiger Symbole und deren Bedeutung im Zahlenformat ........... 40
Tabelle 5: Beispielhafte Zahlenformate mit Erklärung .......................................................... 41
Tabelle 6: Beispiele für die Berechnung von Einheiten ......................................................... 44
Tabelle 7: Beispiele für aus Funktionsaufrufen berechnete Einheiten ........................... 46
Tabelle 8: Beispiele für die Reduktion von Einheiten............................................................. 49
80
Glossar
Glossar
Abgeleitete Einheiten
Abgeleitete Einheiten sind solche, die sich mithilfe von Multiplikationen und Divisionen aus anderen Einheiten ergeben. Z. B. setzt sich die Einheit m/s aus den Basiseinheiten m und s zusammen. Sie werden als kohärent bezeichnet wenn für ihre
Definition kein Zahlenfaktor verwendet wird (z. B. N = kg·m/s²). Einheiten, die
einen Zahlenfaktor zur Definition benötigen (z. B. kN = 1000·N) werden als inkohärent bezeichnet.
Siehe 2.3.2 Einheiten (S. 9) und 4.2.2 Abgeleitete Einheiten (S. 33)
Aufgabenbereich
Aufgabenbereich (oder auch Task Pane) ist ähnlich wie ein Dialogfenster Grundlage
für Steuerelemente, kann aber elegant in der Benutzeroberfläche von Excel fixiert
werden (üblicherweise am rechten Rand).
Siehe 2.2.1 Begriffsklärung (S. 5)
Atomare Einheiten
Siehe Basiseinheit
Basiseinheiten
Basiseinheiten (oder auch atomare Einheiten) erhalten ihre Bedeutung rein aus
ihrem Namen, sodass sich Gleichheit und Ungleichheit zweier Basiseinheiten über
ihre Benennung bestimmt. Dabei kann es sich um SI-Basiseinheiten handeln, aber
auch um sonstige grundlegende Einheiten wie Euro oder Stück.
Siehe 2.3.2 Einheiten (S. 9) und 4.2.1 Basiseinheiten (S. 32)
Definition
Im Gegensatz zur Software-Entwicklung meint die Definition einer Einheit nicht die
Speicherreservierung, sondern das über die Deklaration hinausgehende Zuweisen
einer Bedeutung. Im Speziellen bezieht sich die Definition auf das Beschreiben der
Zusammensetzung von abgeleiteten Einheiten.
Siehe 4.2 Einheiten deklarieren und definieren (S. 32)
Glossar
81
Deklaration
Die Deklaration bezeichnet (in Anlehnung an die Softwareentwicklung) im Vergleich
zur Definition das reine Festlegen eines Bezeichners von Einheiten, also das Bekanntmachen, welche Bezeichner es überhaupt gibt.
Siehe 4.2 Einheiten deklarieren und definieren (S. 32)
Dynamische Typprüfung
Bei der dynamischen wird im Gegensatz zur statischen Typprüfung erst zur Laufzeit
geprüft, ob die Restriktionen der zugewiesenen Typen eingehalten werden. Falls
ungültige Zuweisungen stattfinden, die nicht abgefangen werden, führt dies zu
einem Programmabsturz.
Siehe 2.4.2 Dynamische und statische Typprüfung (S. 13)
Größen
Größen sind Eigenschaften von Objekten, die miteinander verglichen werden können (z. B. die Länge eines Autos).
Siehe 2.3.1 Größen (S. 8)
Größenarten
Verschiedene Größen können in Größenarten zusammengefasst werden. Der Unterschied liegt darin, dass Größen Merkmale von Dingen sind, also sich immer auf ein
bestimmtes Objekt beziehen, wohingegen Größenarten ohne Sachbezug Größen
zusammenfassen. So sind bspw. die Distanz zweier Autos, die Länge eines Fußballplatzes und die Höhe eines Hauses verschiedene Größen, die sich in der Größenart
Länge zusammenfassen lassen.
Siehe 2.3.1 Größen (S. 8)
Inkohärente Einheiten
Siehe Abgeleitete Einheiten
Kalkulationstabelle
Siehe Spreadsheet
Kohärente Einheiten
Siehe Abgeleitete Einheiten
82
Glossar
Optional Typing
Optional Typing bedeutet, dass ein Typsystem nicht unmittelbar mit einer Programmiersprache verknüpft ist, sondern dass diese beiden Komponenten losgelöst voneinander betrachtet werden und sich eine Sprache um Typsysteme nach Bedarf
erweitern lässt. Dadurch sind auch mehrere gleichzeitig prüfende Typsysteme
möglich.
Siehe 2.4.3 Optional Typing (S. 14)
Reguläre Ausdrücke
Reguläre Ausdrücke sind Beschreibungen von Mustern bzw. syntaktischer Regeln,
die im gegebenen Anwendungsfall eines Einheiten-Prüfsystems sehr nützlich sind.
Sie sind für das Parsen von Eingaben zum Zuweisen von Einheiten von zentraler
Bedeutung.
Siehe 4.1.1 VBA Makro (S. 29), 4.3.2 Über Eingabe zuweisen (S. 37) und 4.5.3 Schwierigkeiten aufgrund der Schnittstelle (S. 54)
Ribbon
Seit Office 2007 befindet sich am oberen Rand nicht mehr die gewohnte Menüleiste,
sondern ein Ribbon (oder auch Menüband). Jedes Ribbon ist in verschiedene Abschnitte oder Bereiche eingeteilt, die jeweils durch eine senkrechte Linie voneinander getrennt sind.
Siehe 2.2.1 Begriffsklärung (S. 5)
SI-Basiseinheiten
SI steht für „Système International d’Unités“ und ist ein international festgelegtes
Einheitensystem, das sieben Basiseinheiten kennt: Sekunde, Meter, Kilogramm,
Ampere, Kelvin, Candela und Mol.
Siehe 2.3.2 Einheiten (S. 9) und 4.2.1 Basiseinheiten (S. 32)
Spreadsheet
Spreadsheet (oder auch Kalkulationstabelle bzw. Tabellenkalkulation) wird in dieser
Ausarbeitung mit einem Excel-Tabellenblatt gleichgesetzt, in dem die Eingaben und
Berechnungen stattfinden.
Siehe 2.2.1 Begriffsklärung (S. 5)
Glossar
83
Statische Typprüfung
Bei der statischen wird im Gegensatz zur dynamischen Typprüfung nicht erst zur
Laufzeit, sondern vor dem Kompilieren geprüft, ob die durch Typen festgelegten
Bedingungen unter allen Umständen eingehalten werden. Diese Prüfung erfolgt sehr
konservativ, sodass Programme zurückgewiesen werden können, die eigentlich
keine unzulässigen Zuweisungen durchführen (z. B. wenn eine unzulässige Zuweisung innerhalb eines Blocks steht, der nie erreicht wird).
Siehe 2.4.2 Dynamische und statische Typprüfung (S. 13)
Tabellenblatt
Siehe Spreadsheet
Tabellenkalkulation
Siehe Spreadsheet
Task Pane
Siehe Aufgabenbereich
Typen
Typen geben in der Software-Entwicklung Beschränkungen von Variablen an, sodass diese nur Werte eines festgelegten Bereiches annehmen können (z. B. ganze
Zahlen oder Zeichenketten). Typsysteme stellen sicher, dass diese Grenzen bei Zuweisungen eingehalten werden.
Siehe 2.4.1 Einheiten und Typen (S. 12)
Typsysteme
Typsysteme prüfen, dass die durch Typen festgelegten Beschränkungen bei allen
Zuweisungen eingehalten werden. Dabei wird zwischen dynamischer und statischer
Typprüfung unterschieden.
Siehe 2.4 Vergleich mit Typsystemen (S. 12)
Zusammengesetzte Einheiten
Siehe Abgeleitete Einheiten
84
Index
Index
Abgeleitete Einheiten ....................... 9, 33
inkohärente ......... Siehe Inkohärente
Einheiten
kohärente ..................Siehe kohärente
Einheiten
Aufgabenbereich........... Siehe Task Pane
Automatically Check Cells.............39, 51
Automatisches Formatieren ............... 52
Basiseinheiten ..................................... 9, 32
Check Sheet .........................................39, 51
Coercion ...............................................26, 69
Einheiten ........................................................ 9
atomare ............ Siehe Basiseinheiten
berechnen ............................................ 42
definieren .............................. 15, 32, 33
deklarieren ........................... 32, 33, 65
exportieren ...................................16, 36
importieren ..................................16, 36
inkohärente ......................................... 35
rechnen ..........................................10, 43
reduzieren ....... Siehe Reduktion von
Einheiten
umwandeln ................. Siehe Coercion
zuweisen ................................ 14, 18, 36
Einheitengleichungen ............................ 10
Excel................................................................. 3
Faktor .......................... Siehe Zahlenfaktor
Fehler ........................................................... 58
Behandlung.......................................... 50
Darstellung .......................................... 52
ignorieren............................................. 52
Funktionen .................................. 26, 44, 62
Größen ............................................................ 8
abgeleitete............................................... 8
Schreibweise .......................................... 9
skalare ......................................................8
vektorielle ...............................................8
Größenarten .................................................8
Inkohärente Einheiten .............................9
Kohärente Einheiten .................................9
Mandatory Typing................................... 14
Menüband.............................. Siehe Ribbon
Optional Typing ................................14, 17
Parsen ........................................... 38, 55, 66
Physikalische Größen ...... Siehe Größen
Reduktion von Einheiten...............48, 61
Reguläre Ausdrücke ........................30, 55
Ribbon .............................................................6
Spreadsheet ..................................................5
Task Pane.......................................................6
Try To Reduce Units ............................... 48
Typen............................................................ 12
Typisieren................................................... 13
optionales ..... Siehe Optional Typing
verpflichtendes ..... Siehe Mandatory
Typing
Typprüfung ........................................... 4, 13
dynamisch ............................................ 13
statisch................................................... 13
Typsysteme ........................................... 4, 12
UCheck .......................................... 21, 68, 69
VBA ................................................................ 29
Visual Basic for ApplicationsSiehe VBA
Visual Studio for Office........ Siehe VSTO
VSTO ......................................................30, 54
Wissenschaftliche Schreibweise 38, 61
XeLda ............................................. 25, 68, 70
Zahlenfaktor .......................... 9, 26, 35, 66
Zahlenformat............... 33, 39, 40, 52, 66
Erklärung zur selbstständigen Anfertigung
85
Erklärung zur selbstständigen Anfertigung
Ich erkläre, dass ich die vorliegende Abschlussarbeit mit dem Thema Erweiterung
von Excel um die Prüfung von Einheiten selbstständig und ohne unzulässige Inanspruchnahme Dritter verfasst habe. Ich habe dabei nur die angegebenen Quellen
und Hilfsmittel verwendet und die aus diesen wörtlich, inhaltlich oder sinngemäß
entnommenen Stellen als solche den wissenschaftlichen Anforderungen entsprechend kenntlich gemacht. Die Versicherung selbstständiger Arbeit gilt auch für
Zeichnungen, Skizzen oder graphische Darstellungen. Die Arbeit wurde bisher in
gleicher oder ähnlicher Form weder derselben noch einer anderen Prüfungsbehörde
vorgelegt und auch noch nicht veröffentlicht. Mit der Abgabe der elektronischen
Fassung der endgültigen Version der Arbeit nehme ich zur Kenntnis, dass diese
mithilfe eines Plagiatserkennungsdienstes auf enthaltene Plagiate überprüft und
ausschließlich für Prüfungszwecke gespeichert wird.
Datum
Unterschrift Dominik Joder
Anhang
A. Kleine Verbesserungsvorschläge
Folgende Punkte sind Ideen, die in künftigen Versionen von Chexcell den Komfort bei der Bedienung des Programms erhöhen könnten, aber nicht ausführlich in der Ausarbeitung behandelt
werden:

Eine Potenz über das Zeichen ^ zulassen, anstatt nur die Funktion POTENZ zu unterstützen.

Einer Basiseinheit sollten mehrere Formate zugeordnet werden können, sodass z. B.
„TT.MM.JJJJ“, aber auch „TT.MM.JJ“ der Basiseinheit Tag zugeordnet werden könnten.

Im Aufgabenbereich eine Fehler-Übersicht einblenden, die alle im Tabellenblatt gefundenen Fehler auflistet und durch einen Klick an die betroffene Stelle springt.

Benutzereinstellung, ob ein Fehler als Meldung, als Kommentar, oder in der FehlerÜbersicht angezeigt werden soll.

Unterstützung von Vergleichs-Operatoren (<, >, =), die sich wie Additionen bzw. Subtraktionen verhalten; d. h. nur Vergleiche identischer Einheiten sind möglich.

Verhindern von Zirkelbezügen beim Definieren von zwei zusammengesetzten Einheiten,
die sich aufeinander beziehen (z. B. x = y und y = x).

Bei fehlerhaften Formeln die Einheit auf ? umstellen.
B. Bedienungsanleitung von Chexcell
1 Installation
Die Installation von Chexcell ist denkbar einfach: Schließen Sie alle Instanzen von Excel und
starten Sie die Installations-Anwendung (setup.exe). Bitte berücksichtigen Sie, dass die Erweiterung ausschließlich in Excel 2010 lauffähig ist.
Sobald Sie auf „Installieren“ klicken, wird das Add-In eingerichtet und als Erweiterung von Excel
registriert.
Nach dem Abschluss können Sie Excel wie gewohnt starten – dabei wird automatisch auch das
Add-In geladen.
Excel wird weiterhin wie gewohnt funktionieren, wurde aber im Ribbon „Überprüfen“ um den
Eintrag von Chexcell ergänzt.
2 Einrichtung
2.1
Überblick
Wenn Sie nach der Installation Excel starten, befindet sich im Ribbon „Überprüfen” der Abschnitt von Chexcell:
Über die Schaltfläche „Settings Pane” können Sie den Aufgabenbereich des Tools ein- und ausblenden. Dieser erscheint zunächst am rechten Rand des Fensters, kann aber beliebig verschoben werden:
Im oberen Bereich des angezeigten Aufgabenbereichs können
Sie über die Schaltfläche „Check Sheet” das gesamte angezeigte Tabellenblatt überprüfen lassen. Außerdem können Sie
hier die Optionen zum automatischen Prüfen von geänderten
Zellen und zum Reduzieren der Einheiten aktivieren bzw.
deaktivieren. Die zwei letzten Buttons dienen dem Abspeichern und Laden der definierten Einheiten in das Arbeitsblatt, sodass sie an andere Personen weitergegeben werden
können.
Die Basiseinheiten („Base Units”) sind solche, die durch ihre
Bezeichnung definiert und nicht weiter zusammengesetzt
sind (z. B. m oder kg oder Minuten). In der Liste sehen Sie
alle vorgenommenen Definitionen, die Sie markieren und
über den Button „Del” löschen können. Die Schaltfläche „Add”
fügt eine neue Einheit mit dem gegebenen Namen und dem
Zahlenformat (sofern eingetragen) hinzu.
Im unteren Abschnitt werden alle zusammengesetzten (bzw.
abgeleiteten) Einheiten aufgelistet. Neue Definitionen können
aufgenommen werden, indem Sie den Namen (z. B. Newton)
bei „Name” und die Zusammensetzung bei „Composition”
eintragen (z. B. kg*m/s*s). Ein markiertes Element kann
über „Del” wieder gelöscht werden.
2.2
Basiseinheiten definieren
Basiseinheiten sind die Grundlage für weitere Definitionen.
Die Prüfung funktioniert zwar auch, wenn Sie an dieser Stelle
nichts festlegen, dennoch sollten Sie sich angewöhnen, an
dieser Stelle zu protokollieren, welche Einheiten grundsätzlich zur Verfügung stehen. Das hilft Ihnen und anderen Anwendern die Namenskonventionen der verwendeten Einheiten zu erkennen, wodurch Sie vermeiden in einer Zelle m und
in einer anderen Meter zu verwenden (die beiden würden nämlich als unterschiedliche Einheiten erkannt).
Außerdem haben Sie hier die Möglichkeit, unter dem Namen
das „NumberFormat” (also das Zahlenformat) festzulegen, an
dem die Einheit erkannt werden soll. Im Beispiel links wurde
bereits die Einheit m in der Liste hinterlegt, außerdem wird
gerade d definiert und mit dem Zahlenformat „TT.MM.JJJJ”
verknüpft. Das bedeutet, sobald in Ihrem Tabellenblatt ein
Datum in dieser Form vorkommt, erkennt das Tool, dass
damit eigentlich Tage dargestellt werden. Subtrahieren Sie
dann bspw. zwei Zellen, die jeweils ein Datum beinhalten, um die Differenz auszurechnen, wird
die Ergebnis-Zelle automatisch mit d versehen.
2.3
Abgeleitete Einheiten definieren
Im unteren Abschnitt des Aufgabenbereichs sehen Sie die
abgeleiteten Einheiten. Damit sind solche Einheiten gemeint,
die sich aus anderen zusammensetzen; Sie können sie aber
ebenfalls für synonyme Abkürzungen verwenden. Auch hier
legen Sie wieder einen Namen fest und definieren im Feld
„Composition”, aus welchen Einheiten Sie bestehen soll. Als
Rechenoperatoren zum Verknüpfen der verwendeten Einheiten sind Multiplikationen über das Sternchen (*) und Bruch-
striche in Form von Schrägstrichen (/) zulässig.
Im Beispiel links wurde bereits die Einheit m³ mit der Zusammensetzung m*m*m angelegt. Sollten Sie einmal mit
Kubikmetern rechnen, entfällt die lange Angabe und wird
durch die kürzere Bezeichnung m³ ersetzt. Außerdem wird
eine neue Einheit N hinzugefügt, die sich aus kg*m/s*s
zusammensetzt. Wichtig ist, dass der Schrägstrich nicht etwa
wie in Formeln in Excel ein Divisionszeichen, sondern einen
Bruch darstellt. Die Einheiten vor dem Bruchstrich sind der
Zähler, die folgenden geben den Nenner an. Aus diesem Grund müssen keine Klammern gesetzt
werden, um den Teilausdruck s*s zusammenzufassen. Es steht Ihnen frei, einen beliebigen
Ausdruck (auch mit Klammern und mehreren Bruchstrichen) einzutragen, dieser wird durch das
Programm automatisch vereinfacht und in normalisierter Form hinterlegt. Die in der Zusammensetzung verwendeten Einheiten können Basiseinheiten oder selbst wieder zusammengesetzt sein. Zwar müssen diese nicht definiert sein, aber auch hier sollten Sie sich an die Empfehlung halten, nur deklarierte Einheiten zu verwenden. Da an dieser Stelle auch abgeleitete
Einheiten referenzieren dürfen, können Sie J als N*m festlegen – achten Sie aber darauf, dass
Sie keine Zirkelbezüge erzeugen (z. B. indem Sie N als J/m definieren).
2.4
Einheiten exportieren und importieren
Alle definierten Einheiten werden beim Schließen von Excel auf Ihrer Festplatte gespeichert.
Sobald Sie eine Datei an eine andere Person weitergeben, soll diese nicht denselben Aufwand
mit der Definition haben – zumal der Empfänger unter Umständen nicht weiß, welche Einheiten
Sie wie angelegt haben.
Zum Exportieren der beiden Listen (Basiseinheiten und
abgeleitete Einheiten), wählen Sie im Aufgabenbereich von
Chexcell die Schaltfläche „Export Units to Workbook“ –
dadurch werden alle Informationen als Datensatz unsichtbar
an das Arbeitsblatt angehängt. Sollte bei einer Datei ein
solcher Datensatz existieren, können Sie die hinterlegten Einheiten mithilfe des Buttons „Import
Unit from Workbook“ aktivieren und damit wieder in die Übersichts-Listen laden.
3 Handhabung
3.1
Einheiten über das Ribbon zuweisen
Unabhängig davon, ob Sie eine Einheit definiert haben oder nicht, kann sie im Ribbon zugewiesen werden. Markieren Sie dazu eine oder auch gleich mehrere Zellen im Tabellenblatt, geben
Sie im Ribbon „Überprüfen“ bei „Unit“ den entsprechenden Bezeichner ein (z. B. s) und bestätigen Sie mit Enter oder durch den Button „Assign Unit“. Die Einheit wird an die Zellen angehängt,
sodass Sie mit der Zahl wie gewohnt in Excel rechnen können und direkt sehen, welche Einheit
dem Wert zugewiesen wurde.
Ähnlich wie bei zusammengesetzten Einheiten lassen sich an dieser Stelle beliebig komplexe
Ausdrücke zuweisen, die durch das Tool automatisch normalisiert werden. Dadurch ist z. B. eine
Zuweisung von m³ oder m/s möglich.
Die über das Ribbon zugewiesenen Einheiten werden in der
Dropdown-Liste gesammelt und bilden eine Art Verlauf,
sodass Sie schnell auf zuletzt verwendete Einheiten zugreifen können. Der erste Eintrag bleibt immer leer – darüber
können Sie zugewiesene oder berechnete Einheiten wieder
entfernen.
3.2
Einheiten bei der Eingabe zuweisen
Das beschriebene Vorgehen ist sinnvoll, um bereits bestehende Tabellenblätter um Einheiten zu
ergänzen. Tragen Sie hingegen neue Inhalte ein, können Sie von vornherein den Wert inklusive
Einheit in die Zelle eingeben. Auch hier sind beliebig komplexe Ausdrücke erlaubt, sodass die
Eingabe „8 m/s²“ automatisch zerlegt und zwischen Wert und Einheit unterschieden wird.
Diesen Automatismus können Sie deaktivieren, indem Sie im Arbeitsbereich den Haken von
„Automatically Check Cells“ entfernen – dadurch wird keine Prüfung mehr durchgeführt und
keine Einheiten anhand der Eingabe ermittelt.
3.3
Einheiten berechnen
Sobald Sie mit Zellen rechnen, denen Einheiten zugewiesen sind, ermittelt Chexcell anhand der
Formel, welche Einheit die Berechnung ergeben muss. Multiplizieren Sie bspw. eine Masse in kg
mit einer Beschleunigung in m/s², kann auf kg*m/s² geschlossen werden.
Daraus ergibt sich für Sie ein erstes Indiz, ob die Formel korrekt ist oder evtl. einen Fehler enthält.
3.4
Abhängigkeiten
Sobald Sie eine Formel anpassen, wird auch die zugewiesene Einheit erneut berechnet. Aber
auch beim Ändern einer Zelle, die in der Formel referenziert wird, aktualisiert Chexcell die
ermittelten Einheiten. Im folgenden Screenshot wurde die Masse von kg auf g umgestellt,
wodurch die Berechnung der Kraft automatisch erneuert wurde und nun g*m/s² ergibt.
3.5
Fehler bei der Berechnung
Sollte sich aufgrund der Rechenschritte ergeben, dass die Berechnung an sich unstimmig ist (z.
B. weil kg und m/s² zusammengezählt werden), wird eine Fehlermeldung in Form eines Kommentars angezeigt.
Sollten Sie in einem Feld, das einen Fehler beinhaltet, bereits selbst einen Kommentar eingefügt
haben, wird dieser nicht überschrieben, sondern eine Fehlermeldung in Form eines Dialogfensters angezeigt.
3.6
Ignorieren von Fehlern
Sollte bei einer Formel ein Fehler festgestellt werden, obwohl die Berechnung eigentlich korrekt
ist, können Sie den Hinweis dazu unterdrücken. Löschen Sie dazu nicht einfach das Kommentarfeld, da bei der nächsten Prüfung eine neue Meldung erzeugt werden würde. Verwenden Sie
stattdessen die dafür vorgesehene Funktion „Ignore Errors“, die alle ausgewählten Zellen nicht
nur von Kommentaren befreit, sondern auch entsprechend markiert, sodass die auftretenden
Fehler bei künftigen Prüfungen nicht berücksichtigt werden.
In diesem Beispiel sollen Sekunden und Minuten zusammengezählt werden, wodurch das Tool
einen Fehler feststellt. Da die Angabe der Minuten allerdings mit dem Faktor 60 multipliziert
und damit korrekt in Sekunden umgerechnet wurde, wird hier eigentlich eine korrekte Berech-
nung durchgeführt. Durch das Markieren dieser Zelle mit der Eigenschaft „Ignore Errors“ verschwindet die Warnung und erscheint auch bei künftigen Prüfungen nicht mehr.
Genießen Sie diese Funktion mit Vorsicht, da Sie die Prüfung für die entsprechenden Zellen
komplett deaktivieren und Ihnen dadurch Fehler entgehen könnten. Es empfiehlt sich, die Berechnungen oder Werte eher anzupassen (z. B. die Minuten von vornherein in Sekunden anzugeben).
3.7
Überschreiben berechneter Einheiten
Auch wenn eine Einheit anhand einer Formel berechnet wurde, können Sie der Zelle nachträglich eine andere Einheit zuordnen. Geben Sie dazu wie gewohnt den Bezeichner der Einheit ein
und bestätigen Sie mit Enter oder mithilfe der Schaltfläche „Assign Unit“.
In diesem Beispiel stimmt aufgrund der Definition der abgeleiteten Einheit N die errechnete
Einheit kg*m/s² überein, sodass die Zuweisung unmittelbar durchgeführt wird. Sind die beiden
nicht kompatibel (z. B. falls Sie dieser Zelle J zuordnen wollten), wird zunächst eine Warnung
angezeigt, die auf die Unzulänglichkeit hinweist. Auf diese Weise können Sie auch eine ungültige
Zuweisung für einen Wert erzwingen, auch wenn von diesem Vorgehen entschieden abgeraten
wird. Beim Überschreiben einer berechneten Zelle mit einer inkompatiblen Einheit, wird die
Zelle automatisch so markiert, dass Fehler ignoriert werden.
3.8
Automatisches Reduzieren
Wenn Sie im Aufgabenbereich den Haken „Try To Reduce Units“ gewählt haben, versucht
Chexcell bei berechneten Einheiten möglichst viele Elemente des Ergebnisses durch abgeleitete
Einheiten zu ersetzen, um eine kürzere Schreibweise zu erzielen. Im vorgestellten Beispiel mit
kg*m/s² würde automatisch der alternative Bezeichner N gewählt werden. Dabei werden auch
Teilausdrücke, Kehrwerte und verschachtelte Abhängigkeiten berücksichtigt. Bei entsprechender Zuweisung würde bspw. bei einem Ergebnis von s*s*s/kg*m zunächst s*s als Zusammensetzung von s² erkennen und aus der daraus resultierenden Einheit s²*s/kg*m aufgrund des
Vorkommens von Newton (im Kehrwert) auf s/N schließen. Dazu müssten lediglich folgende
abgeleitete Einheiten definiert sein:
Sollte die automatische Reduzierung nicht zu dem von Ihnen gewünschten Ergebnis führen,
können Sie – wie bereits im vorangegangenen Abschnitt erläutert – die Einheit nach wie vor
überschreiben.
3.9
Gesamtes Tabellenblatt evaluieren
Über die Einstellung „Automatically Check Cells“ können Sie
festlegen, dass bei jeder Änderung von Zellen die Einheit
automatisch geparst bzw. (im Falle einer Formel) berechnet
wird. Unabhängig davon können Sie mithilfe der Schaltfläche
„Check Sheet“ das gesamte Tabellenblatt parsen und prüfen
lassen. Je nach Größe Ihres Spreadsheets kann dies einige Zeit in Anspruch nehmen.
4 Deinstallation
Um Chexcell zu deinstallieren, öffnen Sie die Systemsteuerung über das Startmenü und wählen
Sie „Programm deinstallieren“ aus.
In der angezeigten Liste sehen Sie alle installierten Programme. Wählen Sie „Chexcell“ aus und
klicken Sie „Deinstallieren“.
Nachdem Sie das Entfernen der Software bestätigt haben, wird das Add-In aus Excel entfernt
und von Ihrer Festplatte gelöscht.
C. Inhalt der beigefügten CD
Folgende Daten befinden sich auf der beigefügten CD:

Diese Abhandlung in digitaler Form

Die Bedienungsanleitung von Chexcell

Gespeicherte Internetquellen zum Zugriffsdatum

Die Routine zum Installieren von Chexcell

Der Quelltext der gesamten Projektmappe
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement