DE102008037869B4 - Verfahren und Vorrichtung zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm - Google Patents

Verfahren und Vorrichtung zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm Download PDF

Info

Publication number
DE102008037869B4
DE102008037869B4 DE102008037869.0A DE102008037869A DE102008037869B4 DE 102008037869 B4 DE102008037869 B4 DE 102008037869B4 DE 102008037869 A DE102008037869 A DE 102008037869A DE 102008037869 B4 DE102008037869 B4 DE 102008037869B4
Authority
DE
Germany
Prior art keywords
java
program
java program
uml
svg
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102008037869.0A
Other languages
English (en)
Other versions
DE102008037869A1 (de
Inventor
Hermann Höschen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Diebold Nixdorf Systems GmbH
Original Assignee
Wincor Nixdorf International GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wincor Nixdorf International GmbH filed Critical Wincor Nixdorf International GmbH
Priority to DE102008037869.0A priority Critical patent/DE102008037869B4/de
Publication of DE102008037869A1 publication Critical patent/DE102008037869A1/de
Application granted granted Critical
Publication of DE102008037869B4 publication Critical patent/DE102008037869B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

Verfahren zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm mithilfe eines Computers, wobei das JAVA-Programm auf einem Datenspeicher abgelegt ist:
- Erzeugen eines UML-Diagramms des JAVA-Programms;
- Umwandeln des UML-Diagramms in eine grafische Benutzeroberfläche, die eine Auswahl der Objekte und deren Methoden erlaubt;
- Initialisieren des JAVA-Programms;
- Umleiten der Auswahl aus der Benutzeroberfläche in JAVA-Refelection-Aufrufe.

Description

  • Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm, bei dem der Benutzer durch eine UML-Darstellung des Programms navigieren kann und die einzelnen Objekte und deren Methoden ausführen kann.
  • Gebiet der Erfindung
  • Die Analyse von Programmen wird in der Regel durch Debugger erreicht.
  • Die Funktionen eines Debuggers sind im Wesentlichen:
    • - die Steuerung des Programmablaufs, insbesondere durch Haltepunkte und die Einzelschritt-Verarbeitung von Befehlen;
    • - das Inspizieren von Daten, z. B. die Register, den aktuellen Programmcode als Assembler oder Hochsprachenquelltext, die allgemeinen Daten in festen und flüchtigen Speichern, die Erzeugung von fortgeschrittenen Daten-Interpretationen, etwa durch eine Callstack-Funktionalität oder das Anzeigen von Ein-/Ausgabe-Registern, Tabellen und Hochsprachen-Strukturen;
    • - das Modifizieren von Speicherinhalten, z. B. des Hauptspeichers, der externen Ein-/Ausgabe-Zustände und der Register des Prozessorkerns
  • Je nach Debugger und Beschaffenheit der Hardware ist es auch möglich, Rückmeldungen und Fehlerzustände (Exceptions) des Zielsystems aufzufangen. Hier sind vor allem Speicherzugriffsfehler, ungültige Opcodes und Befehlsfolgen, bei denen Eingangs- oder Ausgangsgrößen fraglich sind, etwa eine versuchte Division durch null, interessant.
  • Man unterscheidet grundsätzlich zwischen Remote-Debugging von entfernten Systemen und Debugging, das innerhalb des zu untersuchenden Prozessorsystems mit Bord-Mitteln vorgenommen wird. Eine Spezialversion ist das Remote-Debugging mittels einer Simulation des Zielsystems durch eine Prozessor-Simulation und weitere Elemente. Das Debuggen einer virtuellen Maschine stellt eine Zwischenform zwischen den beiden Typen dar, wobei die virtuelle Maschine prinzipiell sowohl den Charakter einer lokalen Anwendung, wie auch eines eigenständigen Systems hat. Die Überwindung der Prozessor-Architektur stellt zumindest grundsätzlich einen gewissen Aufwand dar. Je nach Art der Konzeption sind beim Debugging sogar taktgenaue Bestimmungen des Laufzeitverhaltens möglich, wobei z. B. eine Simulation hierbei nicht zwangsweise in Echtzeit ablaufen muss. Bei Simulationen von Halbleitern der Kategorie ASIC, FPGA oder PLC sind sowohl Hardware- wie auch Software-Simulationen gängige Hilfsmittel, die über einen entsprechend speziellen Debugger für den Entwickler zugänglich sind.
  • Einfache Fehlersuche auf Assembler-Ebene ist bei einem dafür ausgelegten System jederzeit möglich. Manche Hochsprachen, wie etwa Skripte oder diverse BASIC-Varianten, lassen sich dagegen oft nur zeilenbasiert auf Quelltextebene untersuchen. Erweiterte Funktionalitäten, z. B. das Auflösen von Symbolen, Strukturen und Funktionsnamen, werden mit dem Vorhandensein von Symbol-Informationen in einer speziellen Datei oder eingebettet in einem Binärprogramm (z. B. DWARF-Debug-Information) möglich. Fortgeschrittene Debugger- und Entwicklungssysteme können weiterhin z. B. im laufenden Betrieb Daten mitschneiden, Leistungsanalysen anfertigen und nebenläufige Vorgänge visualisieren.
  • Moderne Debugger haben die Möglichkeit, Änderungen am Quelltext während der Programmausführung direkt zu übersetzen und anschließend das Programm fortzusetzen. Diese Technik wird auch als just in time Debugging bezeichnet. Ein Debugger ist oft Bestandteil einer Programm-Entwicklungsumgebung.
  • Bei der Fehlerkorrektur und -lokalisierung mit einem Debugger spricht man auch von Debuggen. Der Wortbestandteil Bug für „Programmierfehler“ wurde von der Computerpionierin Grace Hopper geprägt. Mit Bugfix (engl. fix für reparieren, ausbessern) wird die Behebung eines Programmfehlers bezeichnet.
  • Darüber hinaus kann ein Debugger beim Reverse Engineering auch dazu eingesetzt werden, um mit der Ablaufverfolgung und dem Untersuchen von Variablen Fremdprogramme besser und schneller zu verstehen.
  • In objektorientierten Laufzeitsystemen, bei der parallelen Programmierung oder in verteilten Systemen ist es sehr schwierig, oder in der Praxis sogar unmöglich, eine genaue Programmabfolge zu definieren. Einige Entwicklungssysteme verzichten daher auf den Einsatz von Laufzeit-Debuggern, lassen aber in der Regel die Definition von Haltepunkten zu, an dem der Zustand aller Variablen nach dem Programmstopp analysiert werden kann. Auch bei der Ausnahmebehandlung, also nach Programmunterbrechungen, die zum Beispiel durch einen Fehler erzwungen werden, werden sogenannte Post-Mortem-Debugger in diesem Sinne eingesetzt.
  • Aus dem Airporti Blog (EX Bot-Trap Blog), http://www.airport1.de/blog/ vom 22 November 2008 ist bekannt, dass aus Java UML-Diagramme erzeugt werden.
  • Aus http://mrfoo.de/archiv/70-UML-Diagramme-aus-Java-Klassen-Generieren-JAVA2UML vom Donnerstag den 17 August 2006 ist eine Umwandlung von Java-Klassen in UML bekannt.
  • Aus http://www.jeckle.de/umltools.htm sind unified modeling language (UML) tools bekannt, die in einer Tabelle zusammengefasst sind.
  • Aufgrund der Schwierigkeiten beim Ablaufverständnis von objektorientierten Laufzeitsystemen, wie JAVA eines ist, sind Debugger im herkömmlichen Sinne oftmals nicht sinnvoll einzusetzen.
  • Überblick über die Erfindung
  • Aufgabe der Erfindung ist eine Alternative zu einem Debugger Ansatz, der eine einfache Analyse und Untersuchung von JAVA-Programmen erlaubt. Gelöst wird diese Aufgabe durch eine Erfindung mit den Merkmalen der Ansprüche.
  • Bevor auf die Erfindung im Detail eingegangen wird, werden einige Begriffe erklärt.
  • Java ist eine objektorientierte Programmiersprache und als solche ein eingetragenes Warenzeichen der Firma Sun Microsystems. Sie ist eine Komponente der Java-Technologie.
  • Java-Programme werden in Bytecode übersetzt und dann in einer speziellen Umgebung ausgeführt, die als Java-Laufzeitumgebung oder Java-Plattform bezeichnet wird. Deren wichtigster Bestandteil ist die Java Virtual Machine (Java-VM), die die Programme ausführt, indem sie den Bytecode interpretiert und bei Bedarf kompiliert (Hotspot-Optimierung).
  • Java-Programme laufen in aller Regel ohne weitere Anpassungen auf verschiedenen Computern und Betriebssystemen, für die eine Java-VM existiert. Sun selbst bietet Java-VMs für die Betriebssysteme Linux, Solaris und Windows an. Andere Hersteller lassen ihre Java-VM für ihre Plattform zertifizieren, zum Beispiel die Firma Apple für Mac OS X.
  • Von Portierung spricht man bei Java in der Regel, wenn Quelltext oder Bytecode auf den Stand einer anderen Java-Version angepasst werden soll. Meistens sind Java-Programme nur für bestimmte Java-Versionen getestet oder zertifiziert.
  • Java bietet eine Reflection-API als Bestandteil der Laufzeitumgebung. Damit ist es möglich, zur Laufzeit auf Klassen und Methoden zuzugreifen, deren Existenz oder genaue Ausprägung zur Zeit der Programmerstellung nicht bekannt war. In der Programmierung bedeutet Reflexion (engl. reflection) bzw. Introspektion, dass ein Programm seine eigene Struktur kennt, und diese, wenn nötig, modifizieren kann.
  • Bei der Reflexion kann auf unterster Ebene Maschinencode im RAM, der von einem Mikroprozessor ausgeführt wird, als reflexiv bezeichnet werden. Ein solches Programm ist dazu in der Lage, seine Anweisungen wie Daten zu behandeln und kann deshalb seine Struktur analysieren und verändern. Reflexion wird häufig von Hochsprachen wie Java und Smalltalk unterstützt, die in einer virtuellen Maschine ausgeführt werden.
  • Eine wichtige Rolle spielt Reflexion im Zusammenhang mit typensicherer Programmierung, aber auch in Fragen der Persistenz (persistente Datenhaltung von Objekten und deren Beziehungen).
  • Reflexion ermöglicht es, bei objektorientierter Programmierung, beispielsweise zur Laufzeit Informationen über Klassen oder deren Instanzen abzufragen. Bei einer Methode sind das unter anderem deren Sichtbarkeit, der Datentyp des Rückgabewertes oder der Typ der Übergabeparameter. Die Umsetzung der Abfragemöglichkeiten ist sprachspezifisch.
  • Für die Realisierung der Reflexion ist das Speichern von Metainformation im Binärcode des Programms notwendig. Bei interpretierenden Programmiersprachen liegt zur Ausführungszeit der ursprüngliche Programmcode vor, was neben dem Zugriff auf die Strukturinformation (Methodendeklaration) auch den Zugriff auf die Implementierung ermöglicht. Beispiele dafür sind Lisp und Python.
  • Aber auch Java und alle Sprachen für die Verwendung mit dem .NET-Framework, wie z.B. C#, VB.NET oder IronPython unterstützen die Reflexion, da das .NET Framework von sich aus Reflexion zur Verfügung stellt. Alle Sprachen, die das .NET-Framework verwenden, müssen laut CLS (Common language specification) die entsprechenden Informationen als Metadaten speichern.
  • Javadoc ist ein Software-Dokumentationswerkzeug, das aus Java-Quelltexten automatisch HTML-Dokumentationsdateien erstellt. Javadoc wurde ebenso wie Java von Sun Microsystems entwickelt und ist seit Version 2 ein Bestandteil des Java Development Kits.
  • Die Dokumentation kann somit durch spezielle Kommentare im Quelltext erstellt werden. Dadurch können Beschreibungen für Interfaces, Klassen, Methoden und Felder über spezielle Doclet-Tags definiert werden.
  • Funktionsweise: Javadoc erhält beim Aufruf Optionen mit Angaben über die zu dokumentierenden Java-Quelltexte. Javadoc parst die Quelltexte nach allen Javadoc-Kommentaren (beginnend mit /**) und den darauf folgenden nicht-lokalen Symbolen. Jeder Javadoc-Kommentar wird nach darin enthaltenen Javadoc-Tags (beginnend mit @ oder {@) gescannt. Diese enthalten Metadaten mit dokumentativem Charakter über das jeweilige Symbol. Mithilfe sogenannter Taglets kann der bestehende Tag-Wortschatz von Javadoc erweitert werden. Das Doclet erzeugt anschließend die Ausgabe. Das Standard-Doclet erzeugt eine Ausgabe in HTML. Es existieren aber auch weitere Doclets, um die Dokumentation in anderen Formaten wie RTF, XML, PDF, Framemaker, Windows Help und einigen mehr zu erzeugen.
  • yDoc ist eine Javadoc™ Erweiterung, die automatisch klare und übersichtliche UML Diagramme von den Klassen des Software-Projekts generiert, und diese in die erzeugte Java API Dokumentation integriert.
  • Die Unified Modeling Language (UML, engl. Vereinheitlichte Modellierungssprache) ist eine von der Object Management Group (OMG) entwickelte und standardisierte Sprache für die Modellierung von Software und anderen Systemen. Im Sinne einer Sprache definiert die UML dabei Bezeichner für die meisten Begriffe, die für die Modellierung wichtig sind, und legt mögliche Beziehungen zwischen diesen Begriffen fest. Die UML definiert weiter grafische Notationen für diese Begriffe und für Modelle von statischen Strukturen und von dynamischen Abläufen, die man mit diesen Begriffen formulieren kann.
  • yDoc bedient sich der ausgezeichneten Layoutalgorithmen unserer Visualisierungsbibliothek yFiles, um die UML-Diagramme zu erzeugen.
  • Die Liste der yDoc Merkmale beinhaltet:
    • • Einen XML-basierten Mechanismus, um eigene Javadoc-Tags zu definieren.
    • • Die Möglichkeit, gezielt Klassen, Methoden und Felder von der Dokumentation auszuschließen. Dies wird einfach durch einen Exklusions-Tag an den unerwünschten Klassen, Methoden oder Feldern erreicht. Darüber hinaus stellen wir ein Interface zur Verfügung, das den Einsatz von anspruchsvollen und individuellen Exklusionskriterien erlaubt.
    • • Automatische Generierung von UML Diagrammen für alle dokumentierten Klassen und Pakete.
      • o Die Diagramme können als SVG (Scalable Vector Graphics), SWF, PNG, GIF oder JPG in die erzeugten HTML-Seiten eingebunden werden.
      • ◯ Alle Diagramme sind mit Hyperlinks hinterlegt, die direkt auf die Dokumentation der dargestellten Pakete, Typen, Methoden und Felder verweisen.
      • ◯ Alle Diagramme können über Stildefinitionen an Benutzerwünsche angepasst werden.
  • Ein weiterer Standard ist SVG (Scalable Vector Graphics (SVG, deutsch skalierbare Vektorgrafiken)), der in einer bevorzugten Ausführungsform der vorliegenden Erfindung eingesetzt wird. Es ist ein Standard zur Beschreibung zweidimensionaler Vektorgrafiken in der XML-Syntax. SVG wurde im September 2001 vom W3C als Empfehlung veröffentlicht und ein Großteil des Sprachumfangs kann von den meistverwendeten Webbrowsern von Haus aus dargestellt werden. Beim Internet Explorer ist die Darstellung durch ein Plug-in wie den SVG-Viewer von Adobe möglich. Ein alternatives Produkt ist z.B. Apache Squiggle.
  • Animationen werden von SVG mittels SMIL unterstützt. Manipulationen des SVG-DOM sind mithilfe eingebetteter Funktionen via Skriptsprachen möglich.
  • Da SVG ein XML-basiertes Dateiformat ist, können SVG-Dateien mithilfe eines Texteditors bearbeitet werden. Dies bedeutet, dass die Texte, die in SVG-Dateien verwendet werden, auch für gegebenenfalls erforderliche computerunterstützte Übersetzung leichter zugänglich sind. Es gibt jedoch auch spezielle Programme zur Bearbeitung, zum Beispiel die freien Vektorgrafik-Programme Sodipodi und Inkscape.
  • Im Einzelnen handelt es sich um Verfahren zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm mithilfe eines Computers, wobei das JAVA-Programm auf einem Datenspeicher abgelegt ist. Dieser Datenspeicher ist in der Regel eine Festplatte oder ein Flash Speicher.
  • Aus dem JAVA-Programm soll eine grafische Oberfläche erzeugt werden, die ein einfaches Verständnis des Programms erlaubt, und eine schnelle Navigation durch Objekte.
  • Eine solche Darstellung kann ein UML-Diagramm des JAVA-Programms sein. Ein mögliche automatische Erstellung von UML-Diagrammen umfasst zuerst das Erzeugen von Javadocs, um dann diese in UML-Diagramme umzuwandeln. In einer bevorzugten Ausführungsform werden die UML-Diagramme automatisch durch das Programm Ydoc erzeugt. Es sind natürlich auch andere Alternativen denkbar, die das JAVA-Programm direkt in UML umwandeln. Ein entscheidender Punkt ist jedoch, dass eine Verlinkung zwischen dem Java-Code und der UML-Darstellung bestehen bleibt.
  • Um eine grafisch Oberfläche zu erhalten, sind weitere Schritte notwendig. Als besonders geeignet hat sich die Umwandlung der UML-Information in ein SVG-Bild gezeigt. Da SVG ein XML basiertes Format ist, kann es mit einem Editor automatisch editiert werden. Ferner ist es geeignet, in einem Browser angezeigt zu werden, sodass das Browserfenster die Benutzeroberfläche zum Testen darstellt.
  • Aus diesem Grunde wird in der bevorzugten Ausführungsform das UML-Diagramm in das SVG-Format als SVG-Datei umgewandelt. In dieser SVG-Datei ist ein Auswählen von Objekt und deren Methoden über den Browser per Mausklick möglich erlaubt. Damit aus der SVG-Datei ein Zugriff auf das JAVA-Programm möglich ist, bedarf es eines Initialisierens des INIT-JAVA-Programms/Klasse. Dieses INIT-JAVA-Programm nimmt Zugriffe auf die Objekte entgegen und leitet die Auswahl aus der Benutzeroberfläche als JAVA-Refelection-Aufrufe an das JAVA-Programm, das zu untersuchen/ analysieren ist, weiter. Die Zugriffe auf die Objekte sind z.B. Methoden-Aufrufe des INIT-JAVA-Programms, die als Parameter das Objekt bzw. die Methode des Objektes des JAVA-Programms übergeben bekommen.
  • Da das SVG-Format, das Ydoc erstellt, hierzu ursprünglich nicht in der Lage ist, wird die SVG-Datei durch einen Konverter (Parser, Scanner, Ersetzer) so angepasst, dass eine Auswahl in der Benutzeroberfläche eine CALL-Funktion einleitet, die per JAVA-Reflection an das JAVA-Programm weitergegeben werden. In der bevorzugten Ausführungsform werden die ursprünglich von Ydoc erzeugten JAVA-Script-Aufrufe, die zu einem Navigieren an den Quelltext dienten, umgewandelt in Methoden-Aufrufe des INIT-JAVA-Programms.
  • Die INIT-Java-Klasse selber ist in die SVG-Datei eingebettet, sodass beim Aufrufen der SVG-Datei, die INIT-Java-Klasse z. B. durch den Browser gestartet wird. Sind z. B. noch Parametereingaben für die Methode oder die Klasse-Initialisierung notwendig, so werden diese in Dialogen abgefragt.
  • Es ist zu beachten, dass der Begriff JAVA-Programm nicht nur auf Programme in der Sprache JAVA beschränkt ist, sondern es ist beabsichtigt, dass diese Begriff eine Programmklasse abdeckt, die eine automatische Generierung von UML-Diagrammen/SVG-Files erlauben und die Reflexion- Technologie unterstützen.
  • Durch den beschriebenen Ansatz ergibt sich ein neues Verfahren, um Testprogramme zu entwickeln. Hierdurch ist das Testprogramm immer synchron mit der zu testenden Software. Erweiterungen stehen in Echtzeit sofort auch im Testprogramm zur Verfügung und können benutzt werden. Es sind keine weiteren Entwicklungsaufwände notwendig. Der entwickelte SVG-Converter und die Connectorklasse sind generisch und somit auch für andere Produkte einsetzbar.
  • Figurenliste
    • 1 zeigt die automatische Generierung des Testprogramms;
    • 2 zeigt den Ablauf des Testprogramms;
    • 3 zeigt die Benutzeroberfläche nach dem Start eines SVG-Viewers bzw. Browsers, das die Klasse IPOS anzeigt;
    • 4 zeigt die Benutzeroberfläche nach dem Klicken auf getsafe(), wie sie in 3 aufgeführt wurde;
    • 5 zeigt die Benutzeroberfläche nach dem Klick auf getMotor(), wie sie in 4 aufgeführt wurde;
    • 6 zeigt die Benutzeroberfläche nach dem Aufruf der Methode moveSteps(int) und die daraus resultierende Eingabeaufforderung für die int-Paramter;
    • 7 zeigt die die Maske nach Aufruf der Funktion moveSteps(5), woraus sich ergibt, dass der Motor sich 5 Schritte bewegt.
  • Detaillierte Beschreibung der Ausführungsformen
  • Aus der 1 wird der Ablauf der Erzeugung der Testumgebung deutlich. Zu jeder Java-Schnittstelle bzw. den Java-Source-Files können bekanntermaßen automatisch Javadocs generiert werden. Durch eine Erweiterung der Firma yWorks Namens Ydoc, kann diese Dokumentation automatisch durch UML Diagramme ohne weitere manuelle Anpassung ergänzt werden.
  • Diese UML-Diagramme im SVG-Format dienen als grafische Oberfläche des Testprogramms, da sie die API vollständig abbilden.
  • Ein Converter leitet die durch Ydoc vorverlinkten Methodenaufrufe an eine entwickelte Connectorklasse um, die den Aufruf per Java Reflection direkt aus der Software aufruft.
  • Im Folgenden werden die genauen Schritte erläutert. Generierung:
    • - Javadocs mit Ydoc Erweiterung generieren
    • - Alle erzeugten SVG-Grafiken kopieren und mit Converter die nötigen Erweiterungen einbauen, die die Aufrufe aus dem UML-Diagramm an eine Javaklasse weiterleitet.
    • - Diese Javaklasse implementiert eine INIT Funktion, die die initiale Verbindung zur Software herstellt und eine CALL Funktion, die per Reflection die Aufrufe an die Software weiterleitet. Sind für einen Aufruf Parametereingaben nötig, zeigt diese Klasse ein Fenster mit den nötigen Eingabefeldern an.
  • Die 2 zeigt die Erfindung zur Laufzeit.
    • - Das Eingangs-SVG wird mit einem SVG Viewer (z. B. Apache Squiggle) geladen. Andere Browser sind ebenfalls denkbar.
    • - Beim Laden des SVG wird die Initfunktion (INIT-Programm) aufgerufen und die Verbindung zur Software hergestellt.
    • - Ein Aufruf erfolgt durch einfaches Anklicken der Funktion in der Grafik.
    • - Nötige Parametereingaben werden in einem kleinen Fenster abgefragt.
  • Die 3 bis 7 zeigen die Benutzeroberfläche zur Laufzeit für einen Selbstbedienungsautomaten, wie z.B. einem Geldautomaten, der aus einer Reihe von Objekten besteht. Ein Unterobjekt kann z. B. ein Stellmotor sein, der eine bestimmte Anzahl von Schritten bewegt werden muss. Das JAVA-Programm steuert diesen Motor, sodass durch den beschriebenen Ansatz ein Selbstbedienungsautomat unter Echtzeitbedingungen gezielt manipuliert werden kann.
  • Ein reales Objekt ist ein Stellmotor, der als Unterkomponente in diesem Selbstbedienungsautomaten verwendet wird.
  • In 3 wird die Benutzeroberfläche nach dem Start eines SVG-Viewers bzw. Browsers dargestellt. Es handelt sich hierbei um die SVG-Datei, die die Klasse IPOS in UML-Form anzeigt.
  • Die 4 zeigt die Benutzeroberfläche nach dem Klicken auf die getsafe(), die Teil der Klasse IPOS ist. Diese Methode wurde in 3 aufgeführt. Es ist zu erkennen, dass die UML-Darstellung baumförmig ist, und sich immer weiter verästeln lässt.
  • Die 5 zeigt die Benutzeroberfläche nach dem Klick auf die getMotor(), wie sie in 4 aufgeführt wurde. Es wird somit die Klasse getMotor() geöffnet.
  • Die 6 zeigt die Benutzeroberfläche nach dem Aufruf der Methode moveSteps(int) und die daraus resultierende Eingabeaufforderung für die int-Paramter. Da die Anzahl der Schritte nicht bekannt ist, wird der Benutzer zur Laufzeit aufgefordert, diese einzugeben, und erreicht somit, dass der Motor im Selbstbedienungsautomat bewegt wird. Der Benutzer gibt nun die Zahl 5 ein.
  • Die 7 zeigt die Maske nach Aufruf der Funktion moveSteps(5), woraus sich ergibt, dass der Motor sich 5 auch tatsächlich Schritte bewegt.
  • Die beschriebenen Beispiele dienen nicht zur Beschränkung der Erfindung, sie sollen lediglich das Verständnis der Erfindung erleichtern. Der Schutzumfang soll sich ausschließlich aus den Ansprüchen ergeben.

Claims (6)

  1. Verfahren zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm mithilfe eines Computers, die ein Debuggen vereinfacht, durch die Möglichkeit der Parametereingabe für Java-Klassen, wobei das JAVA-Programm auf einem Datenspeicher abgelegt ist: - Erzeugen eines UML-Diagramms des JAVA-Programms; - Umwandeln des UML-Diagramms in eine grafische Benutzeroberfläche, die eine Auswahl der Objekte und deren Methoden erlaubt, wobei das Umwandeln des UML-Diagramms in eine grafische Benutzeroberfläche durch die Umwandlung der UML-Diagramme in das SVG-Format als SVG-Datei erfolgt, wobei das SVG-Format durch einen Konverter so angepasst wird, dass eine Auswahl in der Benutzeroberfläche eine CALL-Funktion einleitet, die per JAVA-Refelection an das JAVA-Programm weitergegeben werden, wobei eine INIT-Java-Klasse verwendet wird, die die initiale Verbindung zum JAVA-Programm herstellt, und die die CALL-Funktion per JAVA-Refelection an das JAVA-Programm weiterleitet, wobei der Aufruf der INIT-Java-Klasse selber in die SVG-Datei eingebettet ist, sodass beim Aufrufen der SVG-Datei, die INIT-Java-Klasse gestartet wird; - Starten des JAVA-Programms durch Aufrufen der SVG-Datei; - Umleiten der Auswahl von Objekten oder Methoden und deren über Dialoge abgefragte Parameter, aus der Benutzeroberfläche in JAVA-Refelection-Aufrufe an das ausgeführte JAVA-Programm, so dass die Parameter unmittelbar vom ausgeführten JAVA-Programm verarbeitet werden, um die Methoden der Objekte zu testen.
  2. Das Verfahren nach dem vorhergehenden Anspruch, wobei die Erzeugung von UML-Diagrammen umfasst: - Erzeugen von Javadocs, - Umwandeln der Javadocs in UML-Diagramme
  3. Das Verfahren nach dem vorhergehenden Anspruch, wobei die UML-Diagramme automatisch durch das Programm Ydoc erzeugt wird.
  4. Vorrichtung zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm, die ein Debuggen vereinfacht, durch die Möglichkeit der Parametereingabe für Java-Klassen,bestehend aus einem Prozessor und Speichereinheiten, wobei das JAVA-Programm auf einem Datenspeicher abgelegt ist, gekennzeichnet durch eine Konfiguration und Mittel zum - Erzeugen eines UML-Diagramms des JAVA-Programms; - Umwandeln des UML-Diagramms in eine grafische Benutzeroberfläche, die eine Auswahl der Objekte und deren Methoden erlaubt wobei Mittel vorhanden sind, um das Umwandeln des UML-Diagramms in eine grafische Benutzeroberfläche durch die Umwandlung der UML-Diagramme in das SVG-Format als SVG-Datei vorzunehmen, wobei Mittel vorhanden sind, um das SVG-Format durch einen Konverter so anzupassen, dass eine Auswahl in der Benutzeroberfläche eine CALL-Funktion einleitet, die per JAVA-Refelection an das JAVA-Programm weitergegeben werden, wobei Mittel vorhanden sind, die eine INIT-Java-Klasse verwenden, die die initiale Verbindung zum JAVA-Programm herstellt, und die die CALL-Funktion per JAVA-Refelection an das JAVA-Programm weiterleitet, wobei der Aufruf der INIT-Java-Klasse selber in die SVG-Datei eingebettet ist, sodass beim Aufrufen der SVG-Datei, die INIT-Java-Klasse gestartet wird; - Initialisieren des JAVA-Programms durch Aufrufen der SVG-Datei; - Umleiten der Auswahl von Objekten oder Methoden und deren über Dialoge abgefragte Parameter, aus der Benutzeroberfläche in JAVA-Refelection-Aufrufe an das ausgeführte JAVA-Programm, so dass die Parameter unmittelbar vom ausgeführten JAVA-Programm verarbeitet werden, um die Methoden der Objekte zu testen..
  5. Die Vorrichtung nach dem vorhergehenden Vorrichtungsanspruch, wobei die Mittel so ausgelegt sind, dass eine Erzeugung von UML-Diagrammen mit folgenden Schritten möglich ist: - Erzeugen von Javadocs, - Umwandeln der Javadocs in UML-Diagramme
  6. Die Vorrichtung nach dem vorhergehenden Vorrichtungsanspruch, wobei Mittel vorhanden sind, sodass die UML-Diagramme automatisch durch das Programm Ydoc erzeugt werden.
DE102008037869.0A 2008-08-15 2008-08-15 Verfahren und Vorrichtung zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm Active DE102008037869B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102008037869.0A DE102008037869B4 (de) 2008-08-15 2008-08-15 Verfahren und Vorrichtung zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102008037869.0A DE102008037869B4 (de) 2008-08-15 2008-08-15 Verfahren und Vorrichtung zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm

Publications (2)

Publication Number Publication Date
DE102008037869A1 DE102008037869A1 (de) 2010-02-18
DE102008037869B4 true DE102008037869B4 (de) 2019-05-09

Family

ID=41528023

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008037869.0A Active DE102008037869B4 (de) 2008-08-15 2008-08-15 Verfahren und Vorrichtung zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm

Country Status (1)

Country Link
DE (1) DE102008037869B4 (de)

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
100 UML-Tools. Internet: http://www.jeckle.de/umitools.htm *
JAVA 2 UML: Bestehenden Java-Code in UML zurückverwandeln. Internet: http:// www.airport1.de/blog/plugin/articlepdf_354 *
UML-Diagramme aus Java-Klassen generieren - Java2UML. Internet: http://mrfoo. de/archiv/70-UML-Diagramme-aus-Java-Klassen-generieren-Java2UML.html *

Also Published As

Publication number Publication date
DE102008037869A1 (de) 2010-02-18

Similar Documents

Publication Publication Date Title
DE69516891T2 (de) Verfahren zum übersetzen von quellkode aus einer computer-hochsprache in eine andere
DE60001916T2 (de) Plattformunabhängige speicherabbild analysearchitektur zur programmfehlerbeseitigung
DE69316210T2 (de) Fehlerbeseitiger, der die zuordnung zwischen dem quellprogramm und optimierten objektcode beinhaltet.
DE69720821T2 (de) Fehlersuchsystem für Programme mit einer graphischen Benutzerschnittstelle
DE69604347T2 (de) Bestimmung der dynamischen Eigenschaften von Programmen
EP1723513B1 (de) Verfahren zur konfiguration eines computerprogramms
DE112010004980T5 (de) Verbessern der Leistungsfähigkeit von auf Vorlagen beruhenden Javascript-Fensterobjekten
US20080052684A1 (en) Stepwise source code refactoring
WO2011087569A2 (en) Design time debugging
Garzón et al. Umple: A framework for model driven development of object-oriented systems
Lethbridge et al. Merging modeling and programming using Umple
Pantelic et al. Software engineering practices and Simulink: bridging the gap
US20030145252A1 (en) Test executive system having XML object representation capabilities
Bruntink et al. Simple crosscutting concerns are not so simple: analysing variability in large-scale idioms-based implementations
Dinh et al. Modern front-end web development: how libraries and frameworks transform everything
US11593076B2 (en) Method for merging architecture data
US20030145280A1 (en) Test executive system having XML reporting capabilities
EP2787437A1 (de) Verfahren zur Überprüfung und/oder Transformation eines Computerprogramms mit statischen Funktionen erster Klasse
Santos et al. Formal modelling of environment restrictions from natural-language requirements
DE102019008598A1 (de) Identifikation und Visualisierung von Assoziationen zwischen Code, der von einem Modell generiert ist, und Quellen, welche die Codegeneration beeinflussen
DE69219420T2 (de) Verfahren und gerät zur rechnercode-verarbeitung in einem codeübersetzer
DE102008037869B4 (de) Verfahren und Vorrichtung zur automatischen Generierung einer grafischen Testumgebung für ein JAVA-Programm
Tkachuk et al. Environment generation for validating event-driven software using model checking
DE69322800T2 (de) Verfahren zur Leistungsverbesserung in einem automatischen Testsystem
Barbosa et al. A transformation tool for ODE based models

Legal Events

Date Code Title Description
OM8 Search report available as to paragraph 43 lit. 1 sentence 1 patent law
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: DIEBOLD NIXDORF SYSTEMS GMBH, DE

Free format text: FORMER OWNER: WINCOR NIXDORF INTERNATIONAL GMBH, 33106 PADERBORN, DE

R082 Change of representative