Tabellenkalkulationen als Werkzeug zur Entwicklung von Geschäftsanwendungen

Excel wird häufig als vielseitiges Tool für die Entwicklung von Geschäftsanwendungen verwendet. In diesem Artikel möchte ich Tabellenkalkulationen, die seit über 30 Jahren unverändert existieren, mit dem modernen klassischen Paradigma der imperativen Programmierung aus der Sicht eines Softwarearchitekten vergleichen. Anschließend möchte ich über meine Arbeit an einem neuen Tabellenkalkulationsprozessor sprechen, der viele der beim Vergleich festgestellten Schwachstellen behebt und es Ihnen ermöglicht, zuverlässigere, skalierbarere und einfacher zu wartende und zu entwickelnde Geschäftsanwendungen zu erstellen.







Tabellenkalkulationen und ihre Funktionen



Das Prinzip, nach dem moderne Tabellenkalkulationen funktionieren (Microsoft Excel, LibreOffice Calc oder Google Sheets), wurde Ende der 70er und Mitte der 80er Jahre eingeführt. Eine zweidimensionale Anordnung von Zellen als Datenmodell und die Fähigkeit zur automatischen Berechnung mithilfe von Formeln wurden 1979 in VisiCalc veröffentlicht. Eine dreidimensionale Anordnung von Zellen (die Fähigkeit, mehrere Blätter zu verwenden) erschien erstmals 1985 in Boeing Calc.



Theoretisch sind Tabellenkalkulationen so gut wie jede Programmiersprache. Es gibt eine Turing-Maschine, die auf Excel-Formeln ( Link ) basiert. Dies bedeutet, dass jeder Algorithmus, der mit einem Computer implementiert werden kann, in Excel implementiert werden kann. Die Frage ist nur die Bequemlichkeit und Effizienz einer solchen Implementierung.



In der Praxis bin ich auf sehr komplexe Systeme gestoßen, die in Excel implementiert sind. Zum Beispiel ein Finanzmodell für die Entwicklung eines internationalen Flughafens mit der Fähigkeit, viele verschiedene Arten von Objekten (Parkplätze, Lagerhäuser, Fahrspuren usw.) beizutragen und Quadratmeter und Parkplätze im Cashflow neu zu berechnen (Kosten für Baujahre vs. Gewinn für Betriebsjahre), wobei verschiedene Modelle berücksichtigt werden Inflation. Es kann mehrere Personenmonate bis zu mehreren Personenjahren dauern, um ein solches „Excel“ in Java mithilfe einer relationalen Datenbank neu zu schreiben. In diesem speziellen Fall bestand das relationale Modell in der Datenbank aus über 50 Tabellen. Interessanterweise hätte dieses "Umschreiben" vermieden werden können, wenn Tabellenkalkulationen nicht nur die Erstellung von Software ermöglichten, sondern auch die Pflege und Skalierung ermöglichten.Für den Endbenutzer (Ökonomen) ist das Java-System ein Rückschritt, da er keine Zwischenergebnisse mehr sieht und das Modell selbst nicht ändern oder ergänzen kann.



Es stellt sich heraus, dass das gleiche Problem sowohl mit einer Tabelle als auch mit einer universellen Programmiersprache gelöst werden kann. Dies bedeutet, dass wir die Stärken und Schwächen dieser beiden Tools vergleichen können, um Geschäftsanwendungen zu erstellen. Hier werden wir versuchen, Excel mit den Augen eines Architektenprogrammierers zu betrachten und die Regeln der Softwarearchitektur anzuwenden, die in der klassischen Softwareentwicklung bereits gut etabliert sind.



Vorteile von Tabellenkalkulationen



  1. Intuitives Konzept : Jeder von uns in der Schule sah und füllte Schilder auf Papier in einer Schachtel aus und spielte Seeschlacht. Die meisten Leute, die mit Excel arbeiten, haben noch nie eine spezielle Schulung erhalten (bestenfalls zeigte ein Kollege, welche Tasten in einer halben Stunde gedrückt werden müssen). Dies ist ein großer Vorteil gegenüber Programmiersprachen, in denen "C ++ in 21 Tagen" sogar zu optimistisch klingt.
  2. : , , - . breakpoints . . , .
  3. : , . , UI, .




  1. : . Notepad, Java . . . , E5 . VLOOKUP . -, .
  2. : DRY (Don’t repeat yourself — ). , (, /) . . , , , . . .
  3. Mangelnde Interaktivität der Benutzeroberfläche : In Tabellenkalkulationen können Sie die Anzeige von Daten nicht dynamisch ändern. Es ist auch nicht möglich, programmierte Operationen zu erstellen, die beispielsweise durch Drücken einer Taste ausgeführt werden.


Wie kann man Tabellen besser machen?



Ich heiße Vadim. Ich bin CTO bei CubeWeaver und entwickle seit einiger Zeit eine neue Tabelle. Vor einigen Jahren habe ich bereits über eine frühe Version des Systems geschrieben ( Link ), aber seitdem hat sich viel geändert und dieses Jahr hat das Projekt das kommerzielle Stadium erreicht.



Hier ist eine Liste von Innovationen in meinem Projekt, die die oben genannten Nachteile beheben und gleichzeitig versuchen, die Vorteile von Tabellenkalkulationen beizubehalten:



Mehrdimensionales Datenmodell



Das mehrdimensionale Datenmodell wird häufig in Business Intelligence- und OLAP-Systemen zur Datenanalyse verwendet. Das Wesentliche des Modells besteht darin, Daten in den Zellen eines mehrdimensionalen Würfels zu speichern, dessen Kanten durch die Überschriften von Geschäftsobjekten signiert sind:





Die Programmoberfläche zeigt nicht den gesamten mehrdimensionalen Würfel an, sondern seinen zweidimensionalen Schnitt, der der von uns ausgewählten Filterkombination entspricht:





Bei der Implementierung eines solchen Modells in einem relationalen BI-System wird häufig das Schneeflockenschema verwendet. Cubes werden durch Faktentabellen implementiert, und Gesichtskopfzeilen werden in Dimensionstabellen gespeichert.



Auf meinem System werden Würfel als Arbeitsblätter bezeichnet, und die Titel an den Rändern des Würfels werden als Listenelemente bezeichnet.



Jede Zelle eines solchen mehrdimensionalen Arbeitsblatts hat eine eindeutige Adresse, die aus Beschriftungen an den Rändern besteht. Zum Beispiel hat der Wert 935 im Bild die Adresse: Bikes, 2020, Paris.

Jedes Element in der Liste hat einen Namen und eine ID. Zellreferenzen verwenden Bezeichner, und die obige Adresse in einer Formel könnte folgendermaßen aussehen (Referenzen sind in eckigen Klammern eingeschlossen):



[PROD:23, YEAR:2020, CITY:24]Dabei ist PROD die Kennung für die Produktliste und 23 die Kennung für den Artikel "Bikes".



Die Verwendung eines mehrdimensionalen Modells kann die Situation mit dem Nachteil Nummer 1 erheblich verbessern. Erstens werden Überschriften jetzt getrennt von numerischen Daten gespeichert. Zweitens ermöglicht die Einführung einer zusätzlichen Dimension „Metrik“ (oder „Berichtsposition“) die Adressierung von Zellen nicht anhand ihrer Ordnungszahl, sondern anhand ihrer semantischen Bedeutung, wodurch Fehler aufgrund des Hinzufügens oder Entfernens von Spalten oder Zeilen vermieden werden.



Natürlich muss gesagt werden, dass dieser Ansatz die Situation mit Vorteil Nummer 1 leicht verdirbt. Alle spielten Seeschlacht, und nur wenige Mathematikstudenten spielten 4-D-Schach. Die Erfahrung zeigt jedoch, dass sich die meisten Benutzer dank der zweidimensionalen Darstellung des Cubes schnell an das neue Datenmodell gewöhnen.



JOIN-Funktion und Metadaten



Mit dem mehrdimensionalen Modell können Sie Metadaten zur Beschreibung von Zellen verwenden. Die oben beschriebene Adressierungsmethode bedeutet, dass jede Zelle im Arbeitsblatt einem bestimmten Satz von Listenelementen entspricht (z. B. Jahr, Produkt und Verkaufsstelle). Listen können wiederum Attribute (Spalten) haben, wodurch sie wie normale relationale Tabellen aussehen. Sie können beispielsweise einer POS-Liste eine Währungsspalte hinzufügen und so die POS- und Währungslisten zu einer Kardinalitätsbeziehung von vielen zu eins verknüpfen.



Die JOIN-Funktion ermöglicht es, Zellen mithilfe einer solchen Beziehung dynamisch zu referenzieren. Diese Funktion ersetzt VLOOKUP und macht die Arbeit mit Indizes überflüssig.



Beispiel: Um die Umsatzmenge für die Welt zu berechnen, müssen Sie zunächst die Umsatzmenge für jedes Land in eine einheitliche Währung umrechnen (multiplizieren Sie die Position „Umsatz“ mit dem Wechselkurs). In Excel würden wir zwei Tabellen speichern: eine Liste von Ländern mit einer Währung für jedes Land und eine Liste von Währungen mit einem Wechselkurs. Um den richtigen Kurs zu finden, würden wir die VLOOKUP-Funktion zweimal verwenden: Suchen Sie den Währungscode anhand des Ländernamens und den Wechselkurs anhand des Währungscodes.



Ein Verweis auf eine Zelle mit einem Wechselkurs könnte folgendermaßen aussehen:

EX_RATES.[COUNTRY.join(CURRENCY)]Wo

EX_RATESist der Name des Arbeitsblatts mit Wechselkursen

COUNTRY- Dimension mit Ländern

CURRENCY- Dimension mit Währungen



Linkketten können beliebig lang sein, zum Beispiel:STORE.join(COUNTRY).join(CURRENCY)



Tatsächlich erstellen wir beim Erstellen des Modells einen Schneeflockenumriss. Mit der Funktion JOIN können Formeln mithilfe von Verknüpfungen zwischen Tabellen (Listen) dieses Schemas dynamisch auf Zellen in Arbeitsblättern verweisen. In diesem Fall werden die Abhängigkeiten zwischen den Zellen in den Argumenten der JOIN-Funktion explizit angegeben.



Gültigkeitsbereich der Formeln



Die Möglichkeit, den Wirkungsbereich anzugeben, macht das Kopieren von Formeln überflüssig.



Für jede Dimension des Würfels definieren wir eine Reihe von Elementen, auf die die Formel einwirkt, z. B.: Alle Jahre Produkte des Typs "Fahrrad", der Posten des Berichts "Einnahmen". In der Praxis sieht es so aus (Das Ziel der Formel ist blau markiert, die Argumente sind rot und orange markiert. Die Liste der ausgewählten Elemente für jede Dimension befindet sich am unteren Bildschirmrand):





Dieser Ansatz behebt den Fehler Nummer 2 und ermöglicht das Hinzufügen und Entfernen von Elementen oder sogar Bemaßungen, ohne die Formel zu ändern. Außerdem müssen Sie nicht jedes Mal nach allen Zellen suchen, in die die Formel kopiert wurde, wenn Sie sie ändern möchten.



Zellinteraktivität



Mit dieser Innovation können Sie interaktive Schnittstellen mithilfe von Formeln erstellen. Formeln können nicht nur zum Berechnen des Werts einer Zelle verwendet werden, sondern auch zum Formatieren von Zellen (Zellenformatierung), zum Ändern der Farbe von Zellen (Zellenfarbe) und zum Ausblenden oder Anzeigen einer Gruppe von Zellen oder ganzen Spalten oder Zeilen (Sichtbarkeit von Zellen). Zellen können nicht nur als Zahlen, Datumsangaben und Text formatiert werden, sondern auch als Schaltflächen, Kontrollkästchen und Dropdowns.



So kann sich beispielsweise die Farbe der Zellen in Abhängigkeit vom Wert der Zelle ändern. Ein Kontrollkästchen oder eine Auswahlliste in einem Blatt kann Zellen in einem anderen Blatt anzeigen, ausblenden oder sperren.



Mit Schaltflächen in Zellen können Sie ziemlich komplexe Operationen für Zellenwerte erstellen. Durch Erstellen der Schaltfläche legen wir das Ziel der Operation (Zellbereich) und die Formel fest, die für jede der Zielzellen einmal ausgeführt wird. Es können mehrere Vorgänge auf einer Taste ausgeführt werden. Durch Drücken einer Taste können beispielsweise Daten aus dem vorherigen Jahr in das nächste kopiert oder der Inhalt einer Zelle proportional zu einem bestimmten Wert auf mehrere andere Zellen verteilt werden (Spritzen).



Schaltflächen in Kombination mit Benutzerzugriffsbeschränkungen ermöglichen irreversible Funktionen. So kann beispielsweise ein Benutzer, der auf eine Schaltfläche zugegriffen hat, aber keinen Zugriff auf die Zielzelle erhalten hat, nur in die Zelle schreiben, was die Formel in der Schaltfläche ihm erlaubt.



Fazit



Der neue Tabellenkalkulationsprozessor ermöglicht wesentlich komplexere Modelle als dies in anderen Systemen möglich ist. Gleichzeitig bleiben die Modelle klar und pflegeleicht. Die Wahrscheinlichkeit von Fehlern in Formeln ist ebenfalls erheblich verringert.



Der Preis für diese Vorteile ist die erhöhte Komplexität des Systems. Vor Arbeitsbeginn muss der Benutzer ein Datenmodell in Form von Listen und Cubes erstellen.



Im Allgemeinen ist das System für einen technisch versierteren Benutzer als Excel konzipiert (z. B. Wirtschaftswissenschaftler mit grundlegenden Programmierkenntnissen oder Programmierer, die an Wirtschaftsmodellen arbeiten).



Gerne beantworte ich Ihre Fragen in den Kommentaren oder privaten Nachrichten. Im Internet finden Sie außerdem Dokumentation zum System und mehrere Schulungsvideos.



All Articles