Bei der Entwicklung einer individuellen Datenbankanwendung stehen folgende Ziele im Vordergrund:
  • optimale Umsetzung des gewünschten Workflows
  • überschaubare Entwicklungs- und Betriebskosten
  • Erweiterbarkeit und Anpassbarkeit auch nach Inbetriebnahme
  • signifikante Effizienzsteigerung und/oder Kostenersparnis
Im folgenden soll ein Einblick in unsere SmartObjects Pro Technologie vermittelt werden, die eigens für die kosteneffiziente Entwicklung komplexer Datenbankanwendungen entwickelt wurde. Wir kommen dabei nicht ganz ohne Rückgriff auf Fachbegriffe (Entity, Relationship, DisplayGroup,) aus der Informatik aus, möchten aber auch dem technisch nicht ganz so versierten Leser (Entscheidungsträger) empfehlen, das Dokument wenigstens zu überfliegen, um einen Eindruck der unseren Lösungen zugrunde liegenden Technologie zu erhalten.

Eine Geschäftsanwendung besteht aus einem Datenbankmodell (beschreibt die für die Haltung der Daten in der RDBMS benötigte Struktur), einem User-Interface und der Business-Logik (z.B. eine Rechnung soll erst nach Setzen eines Steuersatzes oder eines Buchungskontos gespeichert werden können). Sollen mehre Geschäftsbereiche abgedeckt werden, z.B. Handel, Logistik, Marketing, macht es Sinn, die Gesamtlösung in entsprechende Module zu untergliedern, die unabhägig von einander entwickelt und im Zuge eines Deployments zu einer Lösung verschmolzen werden können. Die folgende Abbildung zeigt eine Liste von definierten Modulen in einem Project Repository.


Ein Modul kann dabei von einem übergeordneten Modul abgeleitet werden. So erbt z.B. das Modul CRM alle Klassen, User-Interfaces, des Basis-Modules Contacts, das die Klassen Person, Firma, usw. bereitstellt. CRM fügt dann eigene Klasse wie Kreditor, Debitor, usw. hinzu. Diese aus der objekt-orientierten Programmierung bekannte Vererbung auf Modul-Ebene übertragen ermöglicht die Wiederverwendung nicht nur von geschriebenem Code, sondern auch von GUIs und custom logic und sorgt damit für eine hohe Effizienz bei der Entwicklung und damit geringe Kosten.


Innerhalb eines Moduls wird zunächst das Daten-Modell objekt-orientiert modelliert. In obigem Beispiel wurde eine Klasse Contact erstellt, von der dann die Klassen Company, Person, abgeleitet werden. Die Klasse Company erbt damit alle Eigenschaften der Klasse Contact, hat also auch telecommunications (also Telefon-, Fax, EMail) einen Namen usw. Bei der Modellierung von Properties kann nicht nur auf die Basis-Typen Integer, String, Float, zurück gegriffen werden, sondern auch auf bereits modellierte Klassen. Das Property telecommunications referenziert beispielsweise die zuvor erstellte Klasse Telecommunication.

Aus dem so erfassten Objekt-Model generiert das Tool automatisch ein entsprechendes Entity-Relationship-Model, das die Grundlage für den späteren Datenbankzugriff der Anwendung und für die Generierung des Datenbank-Schemas in der RDBMS (Tabellen, Spalten,) darstellt.


Hier wurde für das im Objekt-Modell erzeugte Property Contact::telecommications automatisch eine One-To-Many-Relationship vom Entity Contact zum Entity Telecommunication angelegt. In der oberen TableView ist erkennbar, dass automatisch ein generischer PrimaryKey txobjectId erzeugt wurde sowie Attribute (Spalten) für alle weiteren Properties.

Das Tool erlaubt auf der nächsten Pane die Erzeugung von User-Interfaces und die Anbindung von GUI-Elementen an die Datenbank-Struktur via Drag & Drop. UI-Elemente (Textfeld, TableView,) können von einer Palette auf die Form gezogen werden. Das Draggen eines Entities aus obigem EOModel bewirkt die Anlage einer enstrechenden DisplayGroup (hält Instanzen einer gegebenen Klasse, in diesem Fall Country-Instanzen und stellt diese als DataSource der angebunden TableView zur Verfügung).


Hierbei wird mit Spacers, vertical und horizontal Boxes gearbeitet, um die Stellung der GUI-Elemenete zueinander festzulegen, was zu sklaierbaren und automatisch lokalisierten User-Interfaces führt.

Auf der Pane Logic kann dann direkt im Entwicklungs-Tool die custom logic in Objective-C implementiert werden, hier z.B. das Verhalten der Anwendung, wenn sich das Property Contact::creditorPaymentCondition einer Contact-Instanz ändert.


Controller-Klassen und Resourcen können auf der Pane Controllers hinterlegt und per Drag & Drop ins User-Interface (Anbindung von Outlets) integriert werden.


Die gesamte Lösung (Modell, GUI, Logic) wird so modulweise mit einem einzigen Tool erstellt und im Projekt-Repository abgelegt (selbst eine Datenbank). Zum Zwecke des Deployments kann ein beliebiges Set von Modulen zu einer Anwendung zusammengefasst und für diese Zusammenstellung von Modulen ein Bundle mit der custom logic erstellt werden.


Dieses Bundles braucht dann nur noch durchkompiliert werden. Es wird bei Start einer generischen Client-Anwendung SOObjectBrowser.app automatisch geladen. Das Datenmodel und die für einen gegebenen Benutzer frei gegebenen Forms zieht sich die generische Anwendung direkt aus der Datenbank.


Die modulare und konsequent objekt-orientierte Modulierung und Implementation verschafft Nutzern der SmartObjects Technologie einen signifikanten Wettbewerbsvorteil und ermöglicht die wirtschaftliche Entwicklung komplexer Geschäftsanwendungen sogar für Nischenbereiche.

News

22.05.2019SQLite Adaptor released
28.01.2016OSM Services 3.x released
18.01.2016Gebrochene Transporte
30.06.2015Business Apps für Mac OS X
17.06.2015Web Interface für LogiPlan
20.01.2015SmartObjects Web
14.03.2014OpenStreetMap Karten
11.09.2013TimberNav Waldnavigation
11.09.2013LogiPlan Rundholzlogistik
11.09.2013ContainerPlan Schüttgüter
11.09.2013TimberPlan Rundholzhandel
06.11.2012Latest FAQ

Partner

 · YellowFox
 · NavKonzept
 · FrontBase
 · ICELT
 · Sunit
 · PTV

Youtube

30.06.2015LogiPlan - Rundholz Logistik

Impressum

Smartsoft GmbH, Birkenweg 11a 21483 Gülzow
Telefon: + 49 (40) 22820930-0
Telefax: + 49 (40) 22820930-9
Email: info@smartsoft.de

Steuernummer: 22 / 294 / 04071
Umsatzsteuer ID: DE218819838
HRB 17503 HL
Geschäftsführer: Andreas Höschler
          © Smartsoft GmbH 2018