Analysieren als Entscheidungsvorbereitung

Aus IV
(Weitergeleitet von Analysieren und Problem lösen)
Zur Navigation springen Zur Suche springen
<yambe:breadcrumb>Analysieren|Analysieren</yambe:breadcrumb>
Tabellenkalkulationsprogramme können sowohl für Dokumentationsaufgaben wie auch für Modellierungsaufgaben eingesetzt werden; nur mit Letzterem beschäftigt sich dieses Kapitel. Die unterschiedliche Ausrichtung der beiden Aufgabenkategorien soll Ihnen bewusst werden. Tabellenkalkulationsprogramme sind selbst die Implementierung eines Modells – und daraus ergeben sich Restriktionen, die Sie kennen müssen, um darauf Ihre eigenen Modelle aufbauen zu können. Schlussendlich werden Sie erfahren, wie Sie solche Funktionen einsetzen, um Modelle zweckmäßig für Analyseaufgaben aufzubauen. Die Beispiele werden am Open-Source-Produkt OpenOffice demonstriert; die Unterschiede zum Marktführer Microsoft-Excel sind aber selten größer als zwischen unterschiedlichen Versionen von Excel. Wenn Sie also Excel schon kennen, was der Normalfall sein dürfte, so ist die Verwendung von OpenOffice eine willkommene Prüfung Ihrer Fähigkeit, vorhandenes Wissen auf zwar andere, aber ähnliche Umgebungen übertragen zu können – eine Fähigkeit, die immer wieder von Ihnen gefordert werden wird.

Spreadsheet programs can be used either for documentation tasks as well as for modelling tasks; however, this chapter deals with the latter function only. Still, you should be aware of the different aspects of the two categories of tasks. Spreadsheet programs themselves are the implementation of a model – a fact which causes restrictions you should know, if you want to build up your own models. Finally you will learn how to apply such functions, in order to develop adequate and useful models for analyzing tasks. The examples shall be illustrated by means of the open source product OpenOffice; the differences between OpenOffice and the leading product Microsoft-Excel are hardly any bigger than between the different versions of Excel. If you happen to know Excel, which is normally the case, the usage of OpenOffice might be a welcome chance to test your ability to transfer previous knowledge to similar, but still slightly different, environments – which is a frequently expected ability.



(K)Ein Modell?

Es wurde eingangs behauptet, man könne Tabellenkalkulationsprogramme sowohl für Dokumentationsaufgaben wie auch für Modellierungsaufgaben verwenden. Wie kann man aber nun erkennen, um welchen Aufgabentyp es sich handelt - bzw. handeln soll?

Modelle sind, so haben Sie aus Schauer [1] in Erinnerung, "(stark) vereinfachte Abbilder der Realität, die entwickelt werden, um komplexe Zusammenhänge in den Betrieben wie in der Wirtschaft überschaubarer zu machen und auf wesentliche Elemente oder Eigenschaften zu reduzieren". Weiters wird dort in Erklärungsmodelle und Entscheidungsmodelle unterschieden und rein deskriptive Beschreibungsmodelle als Vorstufe zu Erklärungsmodellen dargestellt.

Mit dem in der Einleitung formulierten "Vorbehalt" verwenden wir das Beispiel einer Tätigkeitsaufzeichnung, wie Sie von Ihnen selbst stammen könnte. Sie sollen (rein deskriptiv) aufzeichnen, welcher Zeitaufwand für Sie bei der Absolvierung dieser Lehrveranstaltung entsteht und dabei zwischen den Lernphasen "Selbststudium", "Tutorium" und "Präsenz" unterscheiden und den Gesamtaufwand je Woche in einer Grafik darstellen. Diese Aufzeichnung stellt eine wesentliche Grundlage für die Entscheidung dar, ob die ECTS-Punktegewichtung mit den Inhalten in Einklang steht - und ist somit Bestandteil eines Entscheidungsmodells.

Abb. 1: Lern-Logbuch Informationsverarbeitung 1 - Variante 1


Wie können Sie nun beurteilen, ob die in Abb. 1 dargestellte Lösung ein geeignetes "Modell" darstellt? Manche Faktoren sind "von außen" - also schon von der Abbildung her erkennbar, andere jedoch nur "von innen" - also nur unter Beachtung der Eingabe in den jeweiligen Zellen, da eine feste Eingabe und ein berechnetes Ergebnis "von außen" nicht unterscheidbar sind.

  • Der Zeitraum "von - bis" in einer Zelle bedeutet, dass das als Textfeld eingegeben wurde. Damit ist eine Berechnung - etwa der Dauer - auf Basis dieser Eingabe zwar nicht unmöglich, aber doch so komplex, dass sie nicht zu erwarten ist.
  • Die getrennte Aufzeichung der Aktivitäten je Lernphase macht eine "modellhafte" Berechnung der Summe je Woche unmöglich.
  • Kontrollieren würde man dann noch, ob die Kalenderwoche fix eingetragen wurde oder ob das mit einer Formel berechnet wurde; der Wert hängt zweifellos vom Datum ab und wenn diese Beziehung nicht durch eine Formel abgebildet wird, dann ist ein wesentliches Merkmal des Modells nicht abgebildet.

Die Lösung in Abb. 1 ist also ein typisches Beispiel, in dem das Tabellenkalkulationsprogramm fürs Dokumentieren eingesetzt wurde - dasselbe hätte man auch mit einem Textverarbeitungsprogramm erreichen können; selbst einfache Formeln kann man dort nämlich in Tabellen verwenden.

Wie sonst?

Manche werden sich angesichts Abb. 1 nun fragen, wie denn sonst man eine solche Aufgabe lösen sollte. Eine mögliche Lösung zeigt Abb. 2:

Abb. 2: Lern-Logbuch Informationsverarbeitung 1 - Variante 2


Was sind nun die Vorzüge dieser Lösung? Von außen betrachtet, ist wenig erkennbar - einige werden wohl sogar die erste Lösung "schöner" finden. Das wird wohl auch stimmen - denn grafische Gestaltung steht manchmal in Widerspruch zu zweckmäßiger Modellierung. Ein paar Indizien für sinnvolle Modellierung sind aber doch erkennbar:

  • Manche Zellen sind kursiv, andere in Normaldruck und unterstrichen. Auf den zweiten Blick sollten Sie erkennen, dass die einen berechnet werden, die anderen Eingabedaten sind. Wenn Sie mit der Tabelle arbeiten, werden Sie feststellen, dass Sie mit der TAB-Taste automatisch nur auf jene Zellen kommen, die durch die Unterstreichung gekennzeichnet sind.
  • Die Zeiten von und bis sind in getrennten Spalten; es ist daher einfach möglich, die Stunden als Differenz zu berechnen.
  • Die Phase ist nun als eigene Spalte ausgewiesen - das ermöglicht es einfach, durch die Anwendung des Befehls "Sortieren" auch eine Gruppierung nach Phase herzustellen.
  • Die Summe je Kalenderwoche ist ebenfalls in einer eigenen Spalte ausgewiesen. Das deutet darauf hin, dass dieses Modell einfach erweiterbar sein kann, indem neue Zeilen leicht einfügbar sind. Mehr als die Option kann man von außen nicht erkennen, der Rest ist anhand der Formeln nur von innen prüfbar.

Wenn Sie eine Lehrveranstaltung aus Informationsverarbeitung besuchen, wird Ihnen im Tutorium auch die Tabelle zur Prüfung "von innen" zur Verfügung stehen. Dann können Sie auch die folgenden Modellmerkmale prüfen:

  • Die Kalenderwoche wird automatisch berechnet; Sie können diese Zelle nicht ändern, weil diese Zelle gesperrt ist. Sie ist daher auch kursiv gekennzeichnet.
  • Datum, von und bis sind Eingabezellen; sie sind durch entsprechend benannte Formate als nicht gesperrt definiert und zur visuellen Kennzeichnung für den User unterstrichen (Vertiefungsthema Tabellen schützen).
  • Stunden werden wiederum berechnet; ebenso die Summe je Kalenderwoche.
  • Diese Summe enthält eine relativ einfache Formel, die in jeder Zeile berechnet wird, aber durch eine bedingte Formatierung nur in der jeweils letzten Zeile einer Kalenderwoche angezeigt wird (Vertiefungthema Bedingte Formatierung).

Diese Tabelle stellt sicher, dass alle Beziehungen zwischen den Elementen des Modells, die da wären,

  • die Kalenderwoche ergibt sich aus dem Datum,
  • die Stunden ergeben sich aus Beginn- und Endzeit,
  • die Summe je Kalenderwoche ergibt sich aus den Stunden je Arbeitsphase in derselben Kalenderwoche,
  • die Gesamtsumme ergibt sich aus der Stundensumme aller Tage,

automatisch richtig berechnet werden; eine versehentliche falsche Verknüpfung durch den User kann nicht vorkommen. Sie können nach Aufhebung des Tabellenschutzes auch Zeilen einfügen - die einzige Aktion, die ggf. erforderlich sein wird, ist das Sortieren der Tabelle. Eine Voraussetzung für das Funktionieren des Modells ist nämlich, dass die Daten nach dem Datum aufsteigend sortiert sind.

Diese Voraussetzung können Sie auch nicht "automatisch" beheben - wieso das so ist, erfahren Sie später im Abschnitt "Prozedural vs. Non-Prozedural".

Wenn Ihnen noch Verbesserungsvorschläge für die dargestellte Lösung einfallen, dann haben Sie zweifellos recht - auch der Autor hatte solche. Wir wollen es für den Moment dennoch bei diesem Stand belassen und uns der Frage zuwenden, auf welchem Fundament man bei der Arbeit mit Tabellenkalkulationsprogrammen aufbaut und wieso man manche Probleme mit Tabellenkalkulationsmodellen nicht lösen kann.

Was hat Programmierung mit Tabellenkalkulation zu tun?

Die Antwort wird Sie möglicherweise überraschen: Die Erstellung von Tabellenkalkulationsmodellen ist eine Form der Programmierung. Grundprinzip der Programmierung ist es, Regeln zu formulieren, die aufgrund von gegebenen Eingabedaten neue Ergebnisse erzeugen. Es ist eine sehr spezialisierte und benutzernahe Form von Programmierung, die Sie mit Hilfe von Tabellenkalkulationsprogramme betreiben - aber die Grundprinzipien sind dieselben. Vieles wird Ihnen bei Tabellenkalkulationsprogrammen "abgenommen" - aber für die Gestaltung komplexerer Modelle, insb. bei Grenzfällen bzw. bei der Fehlersuche, sind die allgemeinen Prinzipien für die Beurteilung der Softwarequalität auch in Zusammenhang mit Tabellenkalkulationsmodellen von Belang.

Sie sollten daher Modelle so entwickeln, dass Andere (und auch Sie selbst nach längerer Pause) den Sinn des Modells rasch erkennen und auch nachprüfen können. Es sollte gleichzeitig auf neue Anforderungen anpassbar sein, was einen klar strukturierten Aufbau voraussetzt. Es sollte gleichzeitig die Daten in einer Form bereitstellen, die auch eine anschließende Weiterverarbeitung sicherstellt. Das erfordert ein Grundverständnis über die folgenden Programmierkonzepte:

Variable

Allen Programmiersprachen ist gemeinsam, dass Sie Variable verwenden, um wechselnde Werte, mit denen im Programm gearbeitet wird, aufzunehmen. Immer sind diesen Variablen Speicheradressen zugeordnet - bei der Tabellenkalkulation auch. Die "Speicheradressen" der Variablen sind hier die Zellreferenzen: Von A1 bis AS65535 zum Beispiel. Bei der Programmierung verwendet man üblicherweise "sprechende" Bezeichnungen. "Bruttobetrag - MWSt" liefert wesentlich mehr Bedeutung ("Semantik") als "B1-B2". Auch wenn es selten verwendet wird, bieten auch Tabellenkalkulationsprogramme die erstgenannte Möglichkeit: Man kann für Zellen oder Zellbereiche Namen vergeben und diese dann statt der Zelladressen verwenden. Namen werden dabei standardmäßig als absolute Adressen definiert. Die Verwendung von Namen ist etwas umständlich; man wird daher nicht in jeder Formel Namen anwenden. Sehr zu empfehlen ist dies jedoch dort, wo eine Verweis auf weiter entfernte Zellen erfolgt, die außerhalb des sichtbaren Umfelds liegen und deren Bedeutung daher nicht "auf einen Blick" klar wird.

Datentypen

Programmiersprachen weisen meist ein sehr rigides Konzept an Datentypen auf; man muss vor jeder Verwendung einer Variablen angeben, welchem Datentyp sie zugeordnet ist. Der Datentyp definiert, welche Symbolkombinationen eine Variablen enthalten kann und welche Operationen auf diese Variable zugelassen sind. Die vorherige Typfestlegung ermöglichst es den Übersetzungsprogrammen (Compiler), schon vor der Laufzeit des Programms bestimmte Fehler zu erkennen. Eine Typfestlegung in diesem Sinne ist Ihnen bei Tabellenkalkationsprogrammen noch nie untergekommen - und dennoch gibt es Datentypen auch hier. Ihnen ist sicher schon aufgefallen, dass Eingaben manchmal linksbündig, manchmal rechtsbündig angeordnet werden. Das ist eine Konsequenz der Zuordnung des Datentyps. Zahlen werden rechtsbündig, Texte werden linksbündig dargestellt - wobei das natürlich durch den User verändert werden kann. Normalerweise erfolgt die Zuordnung des Datentyps implizit - d. h. dass anhand der eingegebenen Zeichen das Programm selbständig den passendsten Datentyp zuordnet.

  • Die Matrikelnummer 0755345 wird daher als Zahl erkannt und typischerweise ohne führende 0 dargestellt. Das die Matrikelnummer aber immer siebenstellig sein muss, wäre hier der Datentyp "Text" zu wählen. Auch das können Sie erreichen, indem Sie das "Erkennungszeichen" ' für den Datentyp Text eingeben. Die Zahl wird dann als Datentyp Text zugeordnet und mit führender Null (rechtsbündig) in der Zelle angezeigt.
  • Wenn Sie die Artikelnummer "2/2/4" in eine Zelle eingeben, dann wird das ebenfalls nicht als Text erkannt, sondern implizit dem Datentyp "Datum" zugeordnet.
  • Der 1. 1. 20000 dagegen wird möglicherweise nicht als Datum erkannt werden, weil der Datumsbereich z. B. in Open Office im Jahr 9999 endet. Das wird zwar in aller Regel als Planungshorizont ausreichen - kann aber bei Tippfehlern durchaus unerwartete Konsequenzen haben.

Konsequenzen hat die Zuordnung von Datentypen insbesondere bei Formeln, die Zellen unterschiedlicher Datentypen verknüpfen. Hier unterscheiden sich teilweise die Tabellenkalkulationsprogramme. Alle konvertieren Datentypen, sofern das inhaltlich eindeutig möglich ist (z. B. Verkettung von Text und Zahl). Wenn das nicht möglich ist, ignorieren manche Programme die nicht konvertierbaren Werte einfach - andere geben einen Fehlerwert aus. Beides kann je nach Situation nützlich sein. Zu wissen, was das eigene Programm macht, ist allerdings bei der Fehlersuche sehr nützlich!

Prozedural vs. Non-Prozedural

Die meisten Programmiersprachen arbeiten "prozedural", d. h. dass der Weg zur Lösung des Problems Schritt für Schritt in einer formalen Sprache definiert werden muss. Das ist bei Tabellenkalkulation (und auch in SQL) anders: Bei diesen Werkzeugen, die dann als "Non-prozedural" bezeichnet werden, sind die Lösungswege bereits "vorgedacht" und nur mehr durch die eingegebenen Daten "modifizierbar". Solche non-prozeduralen Tools sind daher auch auf eine bestimmte Kategorie von Problemstellungen beschränkt und nicht wie prozedurale Programmiersprachen universell einsetzbar.

Wenn Sie an Beispiel 2 zurückdenken: Sie würden sich vielleicht wünschen, dass die Tabelle sich automatisch aufsteigend nach Datum sortiert, falls einmal ein Datum außerhalb der Reihenfolge eingegeben wird. Eine solche Forderung ist mit dem Prinzip der "Non-Prozeduralität" nicht vereinbar - solange es nicht durch eine entsprechende Funktion im Programm "vorgedacht" ist. Vieles, was heute etwa durch die bedingte Formatierung möglich ist, hätte man vor einigen Jahren noch als Beispiel für das Erfordernis prozeduraler Programmierung verwendet.

Auch wenn diese Entwicklung sicher weitergehen wird, werden immer Aufgaben verbleiben, die nur durch prozedurale Programmierung lösbar sind. Wenn ein Großteil der Aufgabe aber durch Tabellenkalkulation lösbar ist, wäre es sinnlos, das alles prozedural "nachzuprogrammieren". Jedes moderne Tabellenkalkulationswerkzeug bietet daher als Zusatzfeature auch die Erweiterung von prozeduralen Lösungen im Form von Makros an. In der einfachsten Version können Sie ein Makro erzeugen, indem Sie eine Aktion manuell ausführen und diesen Vorgang aufzeichnen. Sie erzeugen damit den Sourcecode eines Makros, das Sie weiter bearbeiten - wenn Sie es können. Im Rahmen dieses Kurses werden Sie das nicht lernen.


Literatur

Quellen

  1. Schauer, Reinbert, Betriebswirtschaftslehre, Grundlagen, 2., erw. Auflage, Wien 2009, S. 28

Zitiervorschlag

Höller in Höller, Informationsverarbeitung, Analysieren als Entscheidungsvorbereitung (mussswiki.idb.edu/ivwiki)