Chair for Applied Software Engineering Lehrstuhl für Angewandte Softwaretechnik

Home  |  People  |  Projects  |  Teaching  |  Publications  |  Internal  |  Changes  |  Index Software Engineering  |  Search

Bachelorarbeit: Entwicklung eines RDF Schemas für Java-Programme

bearbeitet von Safak Ökmen

Zusammenfassung

Manipulierbare Systeme erlauben Endbenutzern das Verändern des Quellcodes eines Programms zur Laufzeit. Dabei bedienen sich die Endanwender eines Editors, der die Komplexität des zugrunde liegenden Programms verbirgt. Je nach Expertise des Endanwenders kann er mit Hilfe des Editors verschieden tief greifende Änderungen in einem Programm durchführen.

Zur Realisierung eines solchen Editors ist es wichtig, die Programmen bereits vorgegebene Struktur zu nützen. Das Ziel der Bachelorarbeit ist es, diese greifbar und durch Programme abfragbar zu machen. Beispielsweise soll eine Abfrage der Art ?Liefere alle Klassen vom Typ Event? an. Hierzu ist es nötig verschiedene, abstrakte Präsentationsformen (Modelle) von Programmen (UML-Modelle, hypergraphbasierte, ... ) zu vergleichen. Zudem soll das Modell auch die Abfrage bestimmter Tags, die als Kommentare im Programmcode enthalten sind (ähnlich Javadoc), ermöglichen. Auf Basis dieses Modells sind dann Abfragen zu realisieren. Das Werkzeug soll dann in einen bestehenden Editor für die Manipulation von Anwendungen für Endanwender integriert werden.

Arbeitsergebnisse

* Ausarbeitung


Some Notes

Notes and toDo's

  • Kommentaretags im Quellcode
  • kleine Beispiele versuchen zu parsen
  • Hyena installieren
  • RDF Darstellung und Java Quellcode sollten möglichst synchron sein jederzeit.
  • RDF ändern (hinzufügen, löschen, etc.) und zurück zum Java Quellcode wechseln können.
  • RDF präsentation is Wissen über ein Java Programm mit Verweis auf änderbarem Code.
  • Event ist ein "passieren" das dem Endanwender vertraut ist.

Action Items

TODO Bearbeiter Deadline Status
RDF zu kleinen JAVA Programm (HelloWorld) schreiben SafakOekmen 25.04.05 DONE
GraphViz Export von RDF AxelRauschmayer 29.04.05 DONE
Beispiel für Syntaxbaum eines kleinen JAVA Programms (Hello World) SafakOekmen ? OPEN
Hyena Plugin zum Laufen bringen KorbinianHerrmann 13.05.05 OPEN
Ontologieideen aufschreiben SafakOekmen 18.05.05 OPEN

Beispiel für einen Syntaxbaum (engl. parse tree) (WHILE - Sprache)

"Semantics with Applications: A formal Introduction", ISBN: 0-471-92980-8, http://www.daimi.au.dk/%7Ebra8130/Wiley_book/wiley.html

n Num (numerals), x Var (variables), a Aexp (arithmetic expression), b Bexp (boolean expression), S Stm (statement)

BNF-Notation:

a ::= n | x | a1 + a2 | a1 * a2 | a1 - a2

b ::= true | false | a1 = a2 | a1 a2 | ¬ b | b1 b2

S ::= x := a | skip | S1 ; S2 | if b then S1 else S2 | while b do S

syntaxbaum.jpeg


generated by Graphviz wink
(i don't recommend manually specifying a graph with Graphviz- so far)


An Ontology is a conceptual schema within a given domain, typically a hierarchical data structure containing all the relevant
entities and their relationships and rules.

An Ontology is a specification (formal description) of a conceptualization.

RDF is a framework to model meta-data about a resource on the web.

RDF is a knowledge modeling language.

RDF defines a set of meta-data properties (e.g. 'creator') that can be associated with ressources.


Eine Liste für uns relevanter Eigenschaften von Java Programmen:

  • Konstruktoren,
  • packeges,
  • Klassen /Subklassen /Superklassen /abstrakte Klassen /innere Klassen,Konstruktoren,
  • Methoden /main Methode (Applets?),
  • Attribute (Typinformationen),
  • Interfaces,
  • (Javadoc),
  • (import Statements),
  • (Modifikatoren (public /private /protected)),
  • (Eingabe -, und Übergabeparameter an Methoden (Konstruktoren)),
  • Kommentare.


Beispiel für einen Syntaxbaum (JAVA)


//% The source file must be named HelloWorld.java
public class HelloWorld{
 //% The main method is passed an array of command-line parameters
 public static void main(String[] args){
  System.out.println("Hello World!");
 }
}

(http://en.wikipedia.org/wiki/Java_programming_language#Hello_World)

native (RDF) Statements:

  • Das Java Programm enthält eine Klasse "HelloWorld".
  • Die Klasse "HelloWorld" hat eine Beschreibung "The source file must be named HelloWorld.java".
  • Die Klasse "HelloWorld" hat einen Modifikator "public".
  • Die Klasse "HelloWorld" enthält eine Methode "main".
  • Die Methode "main" hat eine Beschreibung "The main method is passed an array of command-line parameters".
  • Die Methode "main" hat einen Modifikator "public".
  • Die Methode "main" hat einen Modifikator "static".
  • Die Methode "main" hat einen Rückgabewert "void".
  • Die Methode "main" enthält eine Anweisung "System.out.println("Hello World!");". (Hier vielleicht schon zu detailliert?)

RDF Graph:

nky:= not known yet

  • <nky:javaProgram nky:consistOf nky:"HelloWorld">
  • <nky:"HelloWorld" rdf:type nky:class>
  • <nky:"HelloWorld" nky:own nky:"The source file must be named HelloWorld.java">
  • <nky:"The source file must be named HelloWorld.java" rdf:type nky:comment>
  • <nky:"HelloWorld" nky:own nky:"public">
  • <nky:"public" rdf:type nky:modificator>
  • <nky:"HelloWorld" nky:consistOf nky:"main">
  • <nky:"main" rdf:type nky:method>
  • <nky:"main" nky:own nky:"The main method is passed an array of command-line parameters">
  • <nky:"The main method is passed an array of command-line parameters" rdf:type nky:comment>
  • <nky:"main" nky:own nky:"public">
  • <nky:"main" nky:own nky:"static">
  • <nky:"static" rdf:type nky:modificator>
  • <nky:"main" nky:own nky:"void">
  • <nky:"void" rdf:type nky:modificator>
  • <nky:"main" nky:own nky:"System.out.println("Hello World!");">
  • <nky:"System.out.println("Hello World!");" rdf:type nky:expression>

XML Serialization (RDF/XML):

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:nky="URI zur eigenen Syntaxdefinition (literal, javaProgram, class, modificator, comment, method, expression, own, consistOf)">

<nky:javaProgram rdf:about="Link zum Einstiegspunkt in das Programm">
<nky:consistOf>"Hello World" </nky:consistOf>
</nky:javaProgram>

<nky:literal rdf:about="Hello World"> //(link zum Anfang von Klasse HelloWorld?)
<rdf:type>class</rdf:type>
<nky:own>"The source file must be named HelloWorld.java"
<nky:own>"public"</nky:own>
<nky:consistOf>"main"</nky:consistOf>
</nky:literal>

<nky:literal rdf:about="The source file must be named HelloWorld.java">
<rdf:type>comment </rdf:type>
</nky:literal>

<nky:literal rdf:about="public">
<rdf:type>modificator </rdf:type>
</nky:literal>

<nky:literal rdf:about="main">
<rdf:type>method </rdf:type>
<nky:own>"The main method is passed an array of command-line parameters"</nky:own>
<nky:own>"public"</nky:own>
<nky:own>"static"</nky:own>
<nky:own>"void"</nky:own>
<nky:own>"System.out.println("Hello World!");"</nky:own>
</nky:literal>

<nky:literal rdf:about="The main method is passed an array of command-line parameters">
<rdf:type>comment</rdf:type>
</nky:literal>

<nky:literal rdf:about="static">
<rdf:type>modificator</rdf:type>
</nky:literal>

<nky:literal rdf:about="void">
<rdf:type>modificator</rdf:type>
</nky:literal>

<nky:literal rdf:about="System.out.println("Hello World!);">
<rdf:type>expression</rdf:type>
</nky:literal>

</rdf:RDF>


Menge aller Modifikatoren = {

  • abstract,
  • final,
  • native,
  • private,
  • protected,
  • public,
  • strictfp,
  • static,
  • synchronized,
  • transient,
  • volatile.

}

"Java in a Nutshell", ISBN: 3-89721-190-4, Seite: 142


Sonderzeichen aus ISO-8859-1 oder ISO-8859-15 oder unicode (utf-8)

 

Lehrstuhl: RDF4JAVA .
Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r7 < r6 < r5 < r4 < r3 | More topic actions
r7 - 17 Apr 2007 - 10:31:30 - KorbinianHerrmann
Copyright © 1999-2008 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding the website? Send feedback