-
Die
vorliegende Erfindung betrifft eine Vorrichtung zum automatisierten
Erzeugen von auf einer nutzerseitigen Ablaufeinheit lauffähigem Programmcode
eines Nutzerprogrammes nach dem Oberbegriff des Hauptanspruches.
-
Derartige
Vorrichtungen sind aus dem Stand der Technik allgemein bekannt,
insbesondere in Form sogenannter Software-Entwicklungssuiten, wie sie beispielsweise
von der Firma Microsoft als integrierte Entwicklungswerkzeuge für die Programmiersprachen
Visual Basic oder Visual C# angeboten und von typischerweise spezialisierten
Softwareentwicklern benutzt werden.
-
Wesentliches
Merkmal derartiger bekannter Vorrichtungen ist die visuelle Unterstützung der
Programmierarbeit durch die Bedienperson, nämlich das Vorsehen geeigneter,
baukastenartig strukturierter Objekte in Form von Steuer- oder Bedienfeldern, symbolischen
Darstellungen von Daten, Datenbanken oder anderen Elementen des
Nutzerprogrammes, welche es dem Programmierer erlauben, einfach
und übersichtlich
Masken, Formulare, Reports od.dgl. durch einfaches Auswählen, Bewegen
und Verknüpfen
derartiger Objekte bzw. Elemente zu erzeugen, woraufhin dann aus
einer solchen visuellen und vom Programmierer erzeugten Darstellung durch
die gattungsgemäß bekannte
Codegeneratoreinheit Quellcode in der jeweils vorgesehenen Programmiersprache
erzeugt wird.
-
Auf
diese Weise lässt
sich nicht nur der manuelle Programmieraufwand für den Programmierer reduzieren,
auch lassen sich ansprechende Gestaltungen in geringer Entwicklungszeit
und mit kleiner Fehlerrate erzeugen.
-
Allerdings
unterstützen
derartige, bekannte Vorrichtungen die Entwicklung gerade von komplexen,
auf repetetiven Vor gängen
aufgebauten Anwendungen, wie etwa von Geschäftsprozess-Anwendungen, Transaktionssystemen
od.dgl., nur bedingt, denn bereits die durch das jeweilige Dateisystem
bestimmte Ablage der von der Editiereinheit erzeugten Objekte und
die begrenzte visuelle Unterstützung
gerade von Prozessabläufen
macht es erforderlich, dass der Programmierer noch beträchtliche
Codebestandteile durch manuelle, zeilenweise (und textbasierte)
Programmierarbeit erstellt und darüber hinaus -- aufwändig --
durch zusätzliche
Programmierarbeit die von der Codegeneratoreinheit erzeugten, etwa eine
Eingabemaske entsprechenden Codefragmente geeignet zusammenstellen
und verbinden muss. Hierdurch bleibt dem Programmierer als Softwareentwickler
zwar größtmögliche Flexibilität und Variabilität in der
-- visuell unterstützten
-- Entwicklung des Nutzerprogrammes, komplexe Anwendungen bewirken
jedoch eine (überproportional)
hohe Komplexität, die
nur von besonders erfahrenen Programmierern als Bedienpersonen eines
gattungsbildenden Systems bewältigt
werden kann.
-
Entsprechend
waren daher bislang gängige, visuell
unterstützte
Programmierumgebungen der gattungsbildenden Art nur begrenzt Anwendungen zugänglich,
bei welchen auf der Basis weitgehend standardisierter Abläufe, Objekte
und Nutzerschnittstellen, für
ein jeweils spezifisches Nutzerprogramm nur geringe Anpassungen
vorgenommen werden mussten.
-
Aufgabe
der vorliegenden Erfindung ist es daher, eine gattungsbildende Vorrichtung
zum Erzeugen von lauffähigem
Programmcode eines Nutzerprogramms im Hinblick auf eine Eignung
für komplexe
Anwendungen, insbesondere im Umfeld der Geschäftsprozessmodellierung und
-unterstützung,
zu verbessern, wobei insbesondere die Ablage von durch die Codegeneratoreinheit
erzeugten Quellcodes in der jeweils betreffenden Programmiersprache
im Hinblick auf eine zu verwaltende Vielzahl von Codefragmenten,
ein einfaches und zuverlässiges Wieder-Auffinden
und -Benutzen sowie bessere Übersichtlichkeit
zur Vermeidung von Fehlern optimiert werden soll.
-
Damit
ist es dann auch Aufgabe der vorliegenden Erfindung, Systemprogrammierung
und -pflege mit der gattungsbildenden Vorrichtung einem weiteren
Nutzerkreis als Programmierern, insbesondere auch weniger erfahrenen
und weniger spezialisierten Programmierern, zugänglich zu machen.
-
Die
Aufgabe wird durch die Vorrichtung mit den Merkmalen des Hauptanspruches
gelöst;
vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen beschrieben.
-
Ferner
wird Schutz beansprucht für
eine Verwendung der Erfindung zur Erstellung von Nutzerprogrammen
als ERP- und/oder
Transaktionssysteme im geschäftlichen
Umfeld, wobei eine Verwendung zur einfachen Anbindung von mobilen
nutzerseitigen Ablaufeinheiten (Clients) als besonders bevorzugt gelten
soll.
-
In
erfindungsgemäß vorteilhafter
Weise setzt die Codegenerator und/oder Codeumsetzereinheit das Ausgabesignal
der Editiereinheit datenmäßig und
automatisiert in Klassen oder Methoden der C#-Programmierumgebung
um, wobei diese Klassen bzw. Methoden dann datenbankmäßig in einer
Quellcode-Programmierdatenbank, die der Codespeichereinheit zugeordnet
ist, abgelegt werden.
-
Durch
diese Maßnahme
wird zunächst
erreicht, bekannte und technologisch gut beherrschte Datenbanktechnologien
(bevorzugt ist hier der Einsatz einer SQL-Datenbank, weiter bevorzugt
die Verwendung einer generischen, SQL-fähigen Datenbankschicht, welche
mit gängigen
Engines und Applikationen, etwa MS SQL oder Oracle, zusammenarbeitet)
zu nutzen, um in optimal organisierter, leistungsmäßig optimierter
und insbesondere auch für große (Code-)
Datenmengen und eine Vielzahl von Codefragmenten geeigneter Weise
Quellcode abzulegen, vorzuhalten und für spätere Pflege oder Überarbeitung
oder für
das Erzeugen des lauffähigen
Programmcodes bereitzuhalten.
-
Im
Gegensatz zu der gängigen,
file- bzw. dateisystembasierten Organisation werden dadurch nicht
nur erhöhte
Qualitätsmaßstäbe in der
Softwarerealisierung durchsetzbar, auch eignet sich die erfindungsgemäße Vorrichtung
damit für
komplexe Anwendungen mit einer bislang nur schwer beherrschbaren
Vielzahl von automatisiert zu erzeugenden Quellcode-Komponenten, so dass,
insbesondere im Umfeld der Geschäftsprozessanwendungen,
ein bislang unerreichbarer Anteil an Programmieraufgaben durch die
Vorrichtung unterstützt
werden kann (und damit nicht mehr -- aufwändig und fehlerträchtig -- programmiert
werden muss). In der praktischen Realisierung wird erwartet, dass
etwa 95 % des Quellcodes für
eine Geschäftsanwendung
mit Hilfe der vorliegenden Erfindung durch Wirkung der Editiereinheit
und der Codegenerator- bzw. Codeumsetzereinheit unterstützt bzw.
automatisiert werden kann und nur die verbleibenden 5 % durch manuelle
Programmierung (weiterbildungsgemäß auch durch entsprechende
Funktionalität
der erfindungsgemäßen Editiereinheit
ermöglicht)
realisiert werden müssen.
-
Besonders
vorteilhaft im Rahmen der Erfindung wird zudem die C#-Programmierumgebung verwendet,
da diese -- als Bestandteil des ansonsten bekannten Net-Umfeldes
-- nicht nur günstig
für die Realisierung
von und Verbindung mit Internet-Technologien ist, sondern zudem
auch spracheninhärente Eigenschaften
-- insbesondere die Vererbung -- die günstige Möglichkeit bieten, einmal durch
den Programmierer erzeugte Objekte (z.B. eine Maske oder ein Formular)
mit ihren spezifischen Eigenschaften auf weitere Objekte derselben
Anwendung (d.h. des betreffenden Nutzerprogramms) automatisiert
zu übertragen.
-
Erfindungsgemäß ist zudem
vorgesehen, dass die Ablaufcode-Erzeugungseinheit
aus dem (Quellcode-) Inhalt der Codespeichereinheit (genauer gesagt:
der Quellcode-Programmdatenbank der Codespeichereinheit) den lauffähigen Programmcode
so erzeugt, dass dieser -- geeignet in einem Verzeichnis eines Webservers
abgelegt -- unter Nutzung ansonsten be kannten Technologien lauffähig ist und
insbesondere auf der Basis eines Internetprotokolls (bevorzugt HTTP)
durch stationäre
oder mobil angebundene Clients ausgeführt werden kann. Insoweit bietet
dann der Webserver für
den lauffähigen Programmcode
eine geeignete Laufzeitumgebung an, weiterbildungsgemäß (und insbesondere
im Hinblick auf mobile Clients) auch durch geeignetes Session-Management
bzw. das Vorsehen einer Serialisierungseinheit, mit welcher temporär getrennte
Clients laufende Benutzersessions wieder aufleben lassen und weiterführen können.
-
In
besonders vorteilhafter Weise wird zudem XML als Basis für die Kommunikation
zwischen der nutzerseitigen Ablaufeinheit (Client) und den Webserver
verwendet; auf diese Weise kann damit die Nutzerseite nicht nur
von der auf dem Webserver ablaufenden Anwendungen (Nutzerprogramm)
logisch und syntaktisch getrennt werden, auch wird der Zugriff für eine Vielzahl
von Client-Plattformen ermöglicht,
solange diese XML-basiert zugreifen: Im Rahmen der Erfindung und
mit besonderer Eignung für portable
Clients kann daher ein nutzerseitig weiterbildungsgemäß eingerichteter
Viewer nicht nur auf der Basis von Java und/oder HTML arbeiten,
sondern etwa auch portable Systeme in Form von PDAs (mittels z.B.
ASP .Net für
ein Microsoft Pocket PC-Umfeld) einschließen.
-
Im
Ergebnis entsteht durch die vorliegende Erfindung in überraschend
einfacher und leistungsfähiger
Weise ein System zur unterstützten
Software-Erstellung, welches das Potential und die Leistungsfähigkeit
existierender, visuell unterstützter Software-Entwicklungsplattformen
im Hinblick auf deutlich erhöhten
Unterstützungs-
und Automatisierungsgrad bei der Software-Erstellung, insbesondere für komplexe,
Geschäftsprozess-orientierte
Anwendungen, erhöht,
dabei den Komfort und die Sicherheit kommerzieller Datenbanktechnologie
für die
Behandlung des (überwiegend
automatisiert) generierten Codes nützt und die Vorteile gerade
des .Net-Umfeldes realisiert, um mobile Anwendungen (bzw. gemischt
mobile und stationäre
Anwendungen) wirkungsvoll zu unterstützen. Am Ende wird mit der
erfindungsgemäßen Vorrichtung
ein System geschaffen, welches in wesentlich weitgehenderer Weise auch
unternehmensnahem und spezialisierten Programmierern die Nutzung
der leistungsfähigen
Software-Entwicklungsumgebungen
zur System-(Weiter-)Entwicklung und -pflege von komplexen, unternehmensnahen
Anwendungen zugänglich
macht, ohne dass die Mitwirkung spezialisierter Programmierer erforderlich
sein sollte.
-
Weitere
Vorteile, Merkmale und Einzelheiten der Erfindung ergeben sich aus
der nachfolgenden Beschreibung bevorzugter Ausführungsbeispiele sowie anhand
der Zeichnungen; diese zeigen in
-
1:
ein schematisches Blockschaltbild der erfindungsgemäßen Vorrichtung
zum automatisierten Erzeugen von auf einer nutzerseitigen Ablaufeinheit
lauffähigem
Programmcode eines Nutzerprogrammes gemäß einer ersten, bevorzugten
Ausführungsform
der Erfindung und
-
2:
ein schematisches Blockschaltbild zum verdeutlichen logischer relationaler
Datenbankstrukturen für
eine Datenbankablage von Formulardaten in der Codespeichereinheit
gemäß 1.
-
Wie
in der 1 schematisch durch horizontal verlaufende, gestrichelt
gezeichnete Trennstriche angedeutet, lässt sich das gezeigte Ausführungsbeispiel
in verschiedene, mittels einer oder mehreren Datenverarbeitungseinrichtungen
realisierter Funktionsgruppen aufteilen und begreifen: So ist eine
erste Funktionsgruppe 30 für die Programmentwicklung vorgesehen,
nämlich
mittels einer (durch einen Programmierer als Bedienperson) betätigbaren
Editiereinheit 10, einer dieser zugeordneten und nachgeschalteten
Codegeneratoreinheit 12 sowie einer mit der Codegeneratoreinheit 12 zusammenwirkenden Codespeichereinheit 14,
welche eine SQL-Datenbank für
durch die Einheit 12 erzeugten C#-Quellcode (sowie zusätzlich für die mit
der Editiereinheit 10 erzeugten visuellen oder symbolischen
Elemente in einer Editorspezifischen Codierung) ist und eine mittels
einer relationalen Datenbank realisierte, standardisierte Datenbank
aufweist.
-
Der
Funktionsgruppe 30 benachbart in 1 ist als
Funktionsgruppe 32 eine Ablaufcodeerzeugungseinheit in
der Art einer Compilereinheit 18 gezeigt, welche (mit schematisch
gezeigtem Zugriff auf die SQL-Datenbank 14) zum Erzeugen
lauffähigen Programmcodes
aus dem C#-Quellcode der Datenbank 14 ausgebildet ist.
Angestoßen
wird dieser Erzeugungsvorgang durch ein schematisch gezeigtes Triggersignal 20,
welches automatisch oder z.B. durch Benutzereingabe erfolgen kann.
-
Wiederum
logisch (und üblicherweise
auch physikalisch) getrennt von der Funktionsgruppe 32 ist
die einen Webserver 22 aufweisende Funktionsgruppe 34,
wobei der Webserver zum Ausführen
des (von der Einheit 18 erzeugten) lauffähigen Programmcodes
mit Hilfe geeigneter Runtime-Module ausgebildet ist und zu diesem
Zweck auf die in einer schematisch gezeigten Dateisystemeinheit 28 abgelegten
lauffähigen
Programmcodes zufgreift. Die schematisch gezeigte Datenbankeinheit 24 verdeutlicht
noch etwaige Datenbankfunktionalität sowie Datenquellen des lauffähigen Nutzerprogrammes,
so dass die im Bereich 34 angeordnete Funktionsgruppe als
(Weberserver-basierte) Ablaufumgebung für das fertig erstellte, lauffähige Nutzerprogramm
verstanden werden kann.
-
Nutzerseitig
(im Bereich 36) greift nunmehr eine schematisch gezeigte
Clienteinheit (Ablaufeinheit) 26 zum Ausführen der
Anwendung (Nutzerprogramm) auf den Webserver 22 zu, wobei
die Kommunikation auf der Basis eines Internet-Protokolls (HTTP)
sowie XML-basiert erfolgt, so dass -- mobil oder stationär -- die
Clienteinheit 26 mittels nahezu beliebiger Plattformen
realisiert werden kann.
-
Auf
die so beschriebene Weise entsteht damit ein gerade auch für leistungsfähige Geschäftsprozess-Anwendungen
geeignetes, flexibles, mobil einsetzbares und einfach skalierbares
Entwicklungs- und Ablaufsystem, welches die Bedürfnisse einfacher und effizienter
Programmentwicklung mit leistungsfähigen und sicheren Ablaufbedingungen
kombiniert, dies bei größtmöglicher
Flexibilität
im Nutzerzugriff.
-
Durch
die Nutzung von Webtechnologien in der Client-Kommunikation können dabei
zudem geeignete Sicherheitstechnologien (z.B. SSL oder VPN) implementiert
werden, ohne dass dies andere Funktionsbereiche des Systems beeinflusst.
-
Ein
typischer Bedien- und Prozessablauf der in 1 schematisch
gezeigten Vorrichtung würde sich
wie folgt darstellen: Eine Bedienperson als Programmierer erstellt
mit Hilfe der Editiereinheit 10 und der ihm darüber zugänglichen
(typischerweise standardisiert vorliegenden) Bibliotheken geeignete
Ein- und/oder Ausgabemasken des zu erstellenden Nutzerprogramms,
ferner gewünschte
Formulare, Prozessablaufdarstellungen, Datentypen in Form von Variablen
und weitere Elemente bzw: Objekte, wie sie für die Realisierung einer typischen
Geschäftsprozessanwendung
erforderlich sind.
-
In
weiterbildungsgemäßer Weise
ist zudem die Editiereinheit für
eine Gruppe von Bedienpersonen geeignet, wobei vorteilhaft und wirksam
verhindert werden kann, dass mehrere Programmierer (Bedienpersonen)
gleichzeitig dasselbe Objekt (z.B. Maske oder Formular) editieren
können.
-
Die
Codegeneratoreinheit 12 setzt dann die von der Einheit 10 visuell
unterstützt
erstellten Objekte in C#-Quellcode um, welcher -- geeignet indiziert und
weitergehend datenbankmäßig aufbereitet
-- in der SQL-Datenbank 14 abgelegt wird. Genauer gesagt,
erzeugt die Einheit 14 nicht nur die jeweiligen Objekten
entsprechenden Codefragmente in Form von C#-Klassen und/oder Methoden,
auch werden diese geeignet als Datenbankeinträge für die Datenbank 14 aufbereitet
und in dieser abgelegt.
-
Nachfolgende Änderungen
oder Modifikationen dieses C#-Quellcodes
erfolgen dann wiederum nicht unmittelbar durch Editieren des Datenbankinhaltes,
sondern durch (visuell unterstütztes)
Bearbeiten im Editor, woraufhin wiederum die Codegeneratoreinheit 12 entsprechend
geänderten
C-Sharp-Code für die Datenbank 14 erzeugt.
-
Während die überwiegende
Mehrzahl der vom Programmierer mittels der Editiereinheit 10 durchzuführenden
Programmierarbeit visuell bzw. objektmäßig durch existierende Muster
oder Vorlagen unterstützt
ist, bietet die Editiereinheit die zusätzliche Möglichkeit, in der Art eines
traditionellen text- bzw. zeilenbasierten Programmcode-Editors,
zusätzliche
Methoden zu kreieren, wobei diese dann mittels der Einheit 12 unmittelbar
in die Datenbank 14 eingepflegt werden.
-
2 verdeutlicht
in stark vereinfachter und abstrahierter Form eine relationale Datenbankstruktur
für das
datenbankbasierte Ablegen in der Codespeichereinheit 14;
im Beispiel der 2 werden in Form der schematisch
gezeigten Datenbanktabelle 40 bis 46 Formulardaten
und diesbezüglicher
Programmcode gespeichert, wobei analog für weitere Objekte (etwa Reports,
Komponenten, Metadatentypen und Workflows usw.) entsprechende Tabellen und
relationale Tabellenverknüpfungen
vorgesehen sind.
-
Die
durch die Editiereinheit 10 visuell unterstützt erzeugten
Reports werden einerseits durch unmittelbaren Zugriff auf die Einheit 14 (für nicht-C#-Programmcode)
sowie mittels der Einheit 12 (für dadurch erzeugten C#-Quellcode)
in die Datenbankeinheit 14 eingetragen, entsprechend der
in 2 gezeigten Tabellenstruktur. Genauer gesagt erfasst
eine zentrale Tabelle 42 (tblRep_Form) eine Bezeichnung
des jeweiligen Formulars im Datenfeld F-Name, ferner zugehörige Eigenschaftsdaten
(im Feld F-Data) und stellt ein Index-Datenfeld (F-ID) zur relationalen
Verknüpfung
mit weiteren Tabellen bereit; so ist dieser Index über eine
1:n-Verknüpfung
mit der Tabelle 44 verknüpft, welche, zu einem zugehörigen Indexfeld,
durch einen Benutzer eingegebenen C#-Quellcode (als Methoden) im Datenfeld
FM-Code ablegt. Der durch Wirkung der Einheit 12 erzeugte C#-Quellcode
wird in einer Tabelle 40 abgelegt (Datenfeld lblF_SavedCode),
verknüpft über eine 1:1-Relation
zum Index der Tabelle 42. Schematisch zeigt 2 noch
eine weitere Tabelle 46 (tblRep Controls), welche, wiederum über 1:n
mit der Tabelle 42 verknüpft, Daten über Steuerelemente jeweiliger Formulare
beinhaltet. Die Darstellung der 2 ist dabei
als rein schematisch, stark verkürzt
und lediglich exemplarisch für
Formulare (als eine Gattung von vielen weiteren möglichen
Elementen) zu verstehen; im Hinblick auf zahlreiche weitere, datenbankmäßig im Rahmen
der vorliegenden Erfindung zu unterstützende Elemente mit zugehörigem C#-Quellcode
und umfangreiche Anwendungen stellt dabei die Datenspeichereinheit 14 eine
leistungsfähige
Datenbankanwendung dar, welche auf der Systemebene dann geeignet
von entsprechend leistungsfähigen,
ansonsten bekannten Engines (im vorliegenden Beispiel MS SQL) realisiert
wird.
-
Das
Auslösen
eines Steuersignals 20 aktiviert dann die Ablaufcodeerzeugungseinheit 18,
welche zunächst
den für
das gewünschte
Nutzerprogramm relevanten C#-Quellcode aus der Datenbank 14 vollständig zusammenfügt und diesen
dann in eine ablauffähige
Form in der Art eines Compilers überführt; im
praktischen Ausführungsbeispiel
hieraus MSIL oder .DLL-Dateien erzeugt, welche dann in einer geeigneten
Runtime-Umgebung unmittelbar ausgeführt werden können. Abgelegt
wird das Ergebnis der Ablauferzeugungseinheit im Dateisystem 28, welches
dem Webserver 22 zugeordnet ist.
-
Die
Ausführung
des Nutzerprogramms erfolgt dann durch nutzerseitigen (26)
Zugriff auf den Webserver 22, wobei auf diesem dann der
lauffähige Programmcode
ausgeführt
wird. Durch die Verwendung einer XML-Kommunikationsbasis zwischen
Client 26 und Webserver 22 wird damit die erzeugte
Anordnung multiplattformfähig;
die Verwendung von gängigen
Webtechnologien ermöglicht
zudem geeignete Sicherheitskonfigurationen sowie das geeignete Vorsehen
von mobilen und/oder stationären
Clientzugriffen.