Logo - Fakultät für Mathematik und Informatik Illustration
Rubriken

FAQ Modul 21780

Häufig gestellte Fragen

Übersicht


Fragen zu den Kursen

Frage:
Gibt es für die Kurse im Modul 21780 eine Print-Version oder handelt es sich um reine Online-Kurse?
Antwort:
Sämtliche Kurse im Modul 21780 sind reine Online-Kurse. Der Übungsbetrieb wird in Moodle-Kursen abgewickelt. Korrekturen bzw. Rückmeldungen zu den Aufgaben, die Sie in Moodle-Kurse eingestellt haben, werden Ihnen in den Moodle-Gruppen zugänglich gemacht. Musterlösungen wird es für die Kurse 21781 und 21782 auf der Kursportalseite geben bzw. werden aus Moodle heraus verwendbar, sobald der Einsendetermin für die entsprechende Aufgabe abgelaufen ist.

Zugang zu den Moodle-Gruppen wird auf "Zuruf" an den Betreuer per Email gewährt.


Prüfung

Frage:
Sind die Einsendeaufgaben Voraussetzung zur Prüfung?
Antwort:
Nur die Einsendeaufgabe zum Kurs 21786 (Praktikum Softwarearchitektur) ist eine Pflichtaufgabe.

Die Einsendeaufgaben zu den Kursen 21781 (Softwareentwicklungswerkzeuge), 21782 (Softwarearchitektur) und 21785 (Praktikum Softwareentwicklungswerkzeuge) sind freiwillig und dienen Ihnen als Richtschnur, wie gut Sie ein Thema verstanden haben. Wir empfehlen Ihnen aber dringend, diese Aufgaben zu bearbeiten, damit Sie vor unangenehmen Überraschungen in der Prüfung gewahrt sind.


Frage:
Welche Voraussetzungen muss ich erfüllen, um an der Prüfung teilnehmen zu können?
Antwort:
Um an der Modulprüfung über das Modul 21780 teilnehmen zu können, müssen Sie die drei Kurse 21781 (Softwareentwicklungswerkzeuge), 21782 (Softwarearchitektur) und 21785 (Praktikum Softwareentwicklungswerkzeuge) absolviert haben.


Frage:
Gibt es Klausuren im Modul 21780?
Antwort:
Das ändert sich von Semester zu Semester. Siehe Seite Modulprüfung.

Frage:
Wie lange dauert die Modulprüfung?
Antwort:
Zwischen 35 und 45 Minuten mündlich und 120 Minuten schriftlich.


Frage:
Welche Fragen werden in der Prüfung gestellt?
Antwort:
Grundsätzlich wird das gesamte Kursmaterial aus den Kursen 21781 (Softwareentwicklungswerkzeuge), 21782 (Softwarearchitektur) und 21785 (Praktikum Softwareentwicklungswerkzeuge) abgefragt. Der Kurs 21786 (Praktikum Softwarearchitektur) ist nicht Bestandteil der Prüfung.

Sie werden zwar keine vollständigen C-Programme schreiben müssen, jedoch ist ein gutes Verständnis der erlernten Skripte und Skriptsprachen unbedingt erforderlich. Kleinere syntaktische Ungenauigkeiten sind noch kein Beinbruch, aber Sie werden auch kleinere Programme schreiben müssen.


Frage:
Sind Hilfsmittel während der Prüfung erlaubt?
Antwort:
Während der mündlichen Prüfung sind keine Hilfsmittel erlaubt. Für schriftliche Prüfungen gelten die Bestimmungen, die in der Broschüre des Prüfungsamts zur aktuellen Prüfungsperiode aufgeführt sind.Beachten Sie auch die Seite "Prüfungen" (Navigation links).


Frage:
Sind auch keine Taschenrechner/Handys/Skripte... in der Prüfung erlaubt?
Antwort:
Für schriftliche Prüfungen gelten die Bestimmungen, die in der Broschüre des Prüfungsamts zur aktuellen Prüfungsperiode aufgeführt sind. Beachten Sie auch die Seite "Prüfungen" (Navigation links). Bringen Sie aber unbedingt Personalausweis und Studierendenausweis mit.


Frage:
Muss ich zur Prüfung etwas mitbringen?
Antwort:
Ihren Personalausweis und Ihren Studierendenausweis und bei schriftlichen Prüfungen eigenes Schreibmaterial und normalerweise Papier für die Bearbeitung der Aufgaben. Verbindlich ist auch hier der Inhalt der Broschüre des Prüfungsamts.

Einsendeaufgaben

Frage:
Gibt es Musterlösungen zu den Einsendeaufgaben?
Antwort:
Zu den Kursen 21781 (Softwareentwicklungswerkzeuge) und 21782 (Softwarearchitektur) gibt es Musterlösungen. Diese erscheinen immer nach dem Einsendeschluss der aktuellen Aufgabe in der LVU (unter Übungen). Musterlösungen für die beiden Praktika (21785, Praktikum Softwareentwicklungswerkzeuge und 21786, Praktikum Softwarearchitektur) gibt es nicht, obwohl Sie in dieser FAQ einige Hinweise auf die Lösung der Aufgaben zum Praktikum Softwareentwicklungswerkzeuge finden.

Frage:
Müssen die Einsendeaufgaben bearbeitet werden, oder ist die Bearbeitung freiwillig?
Antwort:
Nur die Einsendeaufgabe zum Kurs 21786 (Praktikum Softwarearchitektur) ist eine Pflichtaufgabe.

Die Einsendeaufgaben zu den Kursen 21781 (Softwareentwicklungswerkzeuge), 21782 (Softwarearchitektur) und 21785 (Praktikum Softwareentwicklungswerkzeuge) sind freiwillig und dienen Ihnen als Richtschnur, wie gut Sie ein Thema verstanden haben. Wir empfehlen Ihnen aber dringend, diese Aufgaben zu bearbeiten, damit Sie vor unangenehmen Überraschungen in der Prüfung gewahrt sind.


Technische Fragen zum Kurs Softwareentwicklungswerkzeuge

Frage:
Beim Compilieren der Lex-Datei "lex.yy.c" tritt der Fehler "cannot find -ll" auf. Was mache ich falsch?
Antwort:
Auf vielen Unix-System (und auch unter CygWin) wird mittlerweile nicht mehr "lex" benutzt, sondern "flex". Für den Aufruf des eigentlichen Lexers ändert sich dabei nichts, da "lex" als Alias für "flex" benutzt wird. Zum Compilieren der entsprechenden Datei muss aber "-lfl" statt "-ll" angegeben werden. Dann wird es funktionieren.


Frage:
Bei meiner Linux-Distribution (oder unter CygWin) ist ANTLR nicht installiert. Wie kann ich die Aufgaben bearbeiten?
Antwort:
Laden Sie sich das jar-package von der ANTLR Homepage herunter: http://www.antlr.org/download.html, wählen Sie dort das "jar-file only" unter dem Punkt "Stand-alone ANTLR Tool executables". Die momentan aktuelle Version (Stand 07.12.2005) ist 2.7.5.

Um ANTLR dann benutzen zu können, müssen Sie es in Ihren Java Classpath einbinden.


Frage:
Ich habe ANTLR heruntergeladen, kann aber die Beispiele nicht compilieren. Ich erhalte die Fehlermeldung "class **" not found. Was mache ich falsch?
Antwort:
Damit Java-Programme (ganz generell) compiliert und gestartet werden können, muss der Java-Umgebung mitgeteilt werden, wo die einzelnen Quell- und Bibliotheksdateien gefunden werden können. Das geschieht über den sogenannten "Classpath" oder "Pfad zu den Klassen", "Klassenpfad" auf Deutsch. In diesem Classpath müssen sämtliche für das aktuelle Programm benötigte Dateien und Verzeichnisse angegeben werden.

Sie können den Classpath entweder durch Setzen einer Umgebungsvariable oder durch explizites Angeben beim Aufrufen des Java Compilers, bzw. der Java Virtual Machine spezifizieren.

Ich beschreibe zunächst das Setzen der Umgebungsvariable unter Windows, dann das setzen der Umgebungsvariable unter Linux und dann das explizite Angeben während des Aufrufs.

Setzen des Classpaths als Umgebungsvariable unter Windows:

  • Wählen Sie in der Systemsteuerung unter "System" den Punkt "Erweitert" an. Dort klicken Sie auf "Umgebungsvariablen"
  • Durchsuchen Sie die Systemvariablen auf das Vorhandensein eines Eintrags namens "CLASSPATH". Ist ein solcher Eintrag vorhanden, selektieren Sie ihn mit der Maus und klicken Sie auf "Bearbeiten". Ist der Eintrag nicht vorhanden, klicken Sie auf "Neu" und setzen den Namen der Variablen auf "CLASSPATH".
  • Tragen Sie beim Wert der Variablen den gewünschten Classpath-Wert ein (dazu unten mehr) und bestätigen Sie mit "OK". Beachten Sie, dass das Trennzeichen zwischen zwei Classpath-Einträgen unter Windows ein Semikolon (";") ist.
Zum Testen schließen Sie das Systemeigenschaften-Fenster, öffnen eine neue Eingabeaufforderung und geben Sie "echo %CLASSPATH%" ohne die Anführungszeichen gefolgt von einem Druck auf ENTER ein. In der Ausgabezeile sollte nun der von Ihnen definierte Wert der Classpath-Variable stehen.

Setzen des Classpaths als Umgebungsvariable unter Linux: Je nach verwendeter Linux-Distribution können Sie entweder mit

 CLASSPATH=<Eintrag> export CLASSPATH 
oder mit
 setenv CLASSPATH <Eintrag> 
die Umgebungsvariable setzen, wobei Sie statt <Eintrag> die Pfade Ihres Classpaths angeben müssen. Beachten Sie, dass das Trennzeichen zwischen zwei Classpath-Einträgen unter Linux ein Doppelpunkt (":") ist und nicht wie bei Windows ein Semikolon. Wenn Sie möchten, dass die Umgebungsvariable automatisch beim Start Ihres Linux-Systems gesetzt wird, müssen Sie das Setzen der Variable in eines Ihrer Startskripte schreiben (s. auch "Welche Startskripte führt mein Linux-System aus?").

Setzen des Classpaths als explizite Anweisung beim Start des Java Compilers, bzw. der Java Virtual Machine:

Es gibt sowohl unter Linux als auch unter Windows auch noch die Möglichkeit, den Classpath direkt beim Aufruf von Java anzugeben. Dazu schreiben Sie:

 javac -classpath <Eintrag> <weitere Optionen> 
bzw.
 java -cp <Eintrag> <weitere Optionen> 
Es gelten die gleichen Regeln wie oben: Unter Linux ist das Trennzeichen zwischen zwei Einträgen ein Doppelpunkt, unter Windows ein Semikolon.

Wenn Sie sich für die letzte Alternative entscheiden und beim Programmaufruf direkt angeben, welchen Wert Ihr Classpath hat, müssen Sie dies bei jedem Aufruf von Java erneut angeben.

Beispiele für gültige Classpath-Einträge:

Ein Standardfall ist, dass Sie nach dem Aufruf eines Java Programms Namens "Test" die Fehlermeldung bekommen "Exception in thread "main" java.lang.NoClassDefFoundError: Test", obwohl Sie sich im richtigen Verzeichnis befinden. Das liegt daran, dass Sie das aktuelle Verzeichnis zum Classpath hinzufügen müssen:

 java -cp . Test 
Wenn "Test" in einem Paket (package) definiert wurde, das "programm" heißt, dann müssen Sie Test aus dem Verzeichnis heraus starten, in dem das Paket "programm" liegt und Sie müssen dem Classpath sagen, wo sich das Paket befindet, der Aufruf ändert sich nur im Programmnamen, nicht aber im Classpath:
 java -cp . programm.Test 
Und wenn Sie nun die ANTLR-Bibliotheken hinzufügen möchten, sieht der Aufruf folgendermaßen aus:
 (Windows:) java -cp c:\studium\antlr\antlr-2.7.5.jar;. Test 
 (Linux:) java -cp /home/studium/antlr/antlr-2.7.5.jar:. Test 
Wobei Sie natürlich die Pfade Ihrer Verzeichnisorganisation entsprechend verändern müssen.

Bleibt noch eine Besonderheit unter CygWin. Wenn Sie Java unbedingt unter CygWin benutzen möchten (wovon ich aufgrund der folgenden Hässlichkeit abraten möchte; nehmen Sie lieber entweder Windows oder Linux), dann geht das auch, aber beim Classpath gibt es eine Besonderheit. Sie befinden Sich unter einem emulierten Linux-System, das heißt insbesondere, dass Pfade wie unter Windows eingegeben werden müssen (also mit Semikolon als Trennung zwischen zwei Einträgen), aber Linux interpretiert ein Semikolon als Trennung zwischen zwei Argumenten, daher funktioniert eigentlich nur ein Doppelpunkt. Wie kommen Sie aus dem Dilemma?

Folgendermaßen:

 (CygWin:) java -cp /home/studium/antlr/antlr-2.7.5.jar\;. Test 
"Backslash-Semikolon" ist die Lösung. Damit sagen Sie CygWin, dass das folgende Semikolon als Trennungssymbol zwischen zwei Pfadeinträgen aufzufassen ist. Hässlich, aber es funktioniert.


Frage:
Beim Ausführen der ANTLR-Programme mit Java, bekomme ich die Fehlermeldung, dass meine Hauptklasse (mit der main-Methode) nicht gefunden wird, obwohl ich mich im richtigen Verzeichnis befinde. Warum?
Antwort:
s. o.


Frage:
Wo finde ich Anleitungen zu <beliebiges Unix-Werkzeug hier einsetzen>?
Antwort:
Es gibt drei hauptsächliche Informationsquellen zu jedem Unix-Werkzeug:
  1. Geben Sie in Ihrer Unix-Umgebung "man <Name des Werkzeugs>" ohne die Anführungsstriche gefolgt von RETURN ein. Z.B. "man cvs" oder "man man" oder "man ls".
  2. Statt "man" können Sie auch "info" benutzen: "info cvs", "info info" oder "info ls". (Ich empfehle Ihnen zunächst in der Tat "man info" zu benutzen, wenn Sie das Werkzeug noch nicht kennen).
  3. Google. Wenn Sie unter http://www.google.de nach "<Werkzeugname> Anleitung" suchen, finden Sie meist eine brauchbare deutsche Anleitung zum entsprechenden Werkzeug.
Wenn Sie diese drei Schritte schon ausprobiert haben (oder zumindest Schritt 3 und einen der beiden anderen) und immer noch nicht weiterkommen, können Sie Ihre Anfrage gerne per Mail oder Telefon an uns richten, dann helfen wir Ihnen, so gut es geht, weiter.


Frage:
Ich erhalte beim Auschecken des CVS-Archivs aus Übungsblatt 1 vom Praktikum Softwareentwicklungswerkzeuge die Fehlermeldung "There is no version here", obwohl ich Ihre Anleitung genauestens befolgt habe. Was ist falsch?
Antwort:
Im Kursmaterial steht bei den Anweisungen zum Anlegen des CVS-Archivs in Schritt 2(c):
 $ cvs import -m "Import GNU Hello 1.3" \ hello GNU HELLO_1_3 
Der Backslash ("\") dient hier nur als Hinweis, dass diese Zeile als eine Zeile einzugeben ist. Er darf nicht mit abgetippt werden. Die korrekte Eingabe muss also lauten:
 cvs import -m "Import GNU Hello 1.3" hello GNU HELLO_1_3 
dann sollte es funktionieren.


Frage:
Welche Startskripte führt mein Linux-System aus?
Antwort:
Das ist etwas kniffelig zu beantworten. Generell werden beim Start eines Linux-Systems mehrere Dateien ausgeführt und es hängt auch von Ihren Einstellungen ab, um welche Dateien es sich dabei handelt.

Unter der "Bash" (wie auch CygWin sie benutzt; bzw. standardmäßig benutzt), gibt es die Dateien ".bashrc", ".bash_profile", ".profile" und "boot.local". Diese Dateien müssen bei Ihnen nicht vorhanden sein, aber schauen Sie mal nach (mit "ls -la"). Wenn Sie sich nicht sicher sind, welche dieser Dateien beim Start Ihres Systems ausgeführt werden, dann editieren Sie jede dieser Dateien mit Ihrem bevorzugten Editor ("vi" oder "emacs" oder "xemacs" oder ...) und schreiben in die oberste Zeile "echo xxx" (ohne die Anführungszeichen), wobei "xxx" für den Namen der jeweiligen Datei steht. Beim Start des Systems bekommen Sie dann eine Liste der ausgeführten Dateien auf dem Bildschirm präsentiert.

Nun können Sie sich eine dieser Dateien aussuchen, um Umgebungsvariablen zu setzen.

Wir hoffen, Sie konnten mit dieser Erklärung zumindest einen Schritt weiterkommen. Ansonsten kontaktieren Sie uns gerne per Mail oder per Telefon.


Frage:
Ich habe kein lex auf meinem Rechner. Was kann ich tun?
Antwort:
Unter CygWin, wie auch unter einigen anderen Linux-Distributionen, wurde lex durch das neuere "flex" ersetzt. Schreiben Sie nicht lex xxx, sondern flex xxx und achten Sie beim Compileraufruf darauf, dass Sie nicht das Flag "-ll" sondern "-lfl" angeben müssen.


Frage:
Ich benutze CygWin: Wie kann ich DDD benutzen?
Antwort:
Um DDD unter CygWin benutzen zu können, müssen Sie die grafische Ausgabe aktivieren. Das geht so:

 startxwin.sh 
Dann dauert es ein paar Sekunden und ein neues Fenster wird aufgehen. In diesem können Sie nun DDD folgendermaßen starten:

 ddd -display :0 
So können Sie ddd benutzen; allerdings wird es sehr (sehr sehr!) langsam sein.


Frage:
Bei der Eingabe "javac" (oder "java") bekomme ich nur die Rückmeldung: "bash: javac command not found". Was fehlt?
Antwort:
Sie haben kein Java SDK installiert. Laden Sie sich eine Version hier herunter: http://java.sun.com/j2se/1.4.2/download.html

(Sie können auch eine neuere Java 5 Version herunterladen, wenn Sie möchten).

Beachten Sie, dass Sie Java für Windows benötigen, wenn Sie unter CygWin arbeiten.


Frage:
Ich benutze gcj (statt javac) und habe Probleme beim Compilieren der Beispielprogramme mit antlr. Was kann ich machen?
Antwort:
Nun, zunächst einmal müssen Sie auch bei gcj Ihren Classpath richtig setzen, wie es hier beschrieben wird. Am besten setzen Sie ihn in einer Umgebungsvariable, damit Sie ihn nicht ständig neu setzen müssen. Neben der antlr.jar-Datei müssen Sie auch das aktuelle Verzeichnis und die gcj-Bibliothek in den Classpath schreiben. Unter CygWin sieht ein möglicher Classpath so aus:

 C:\CygWin\usr\share\java\libgcj-3.4.4.jar;C:\CygWin\usr\share\antlr-2.7.5\antlr.jar;. 
Aber damit sind die Probleme leider noch nicht gelöst. Um eine Java-Anwendung mit gcj compilieren zu können, müssen Sie immer die Hauptklasse (die mit der main-Methode) angeben. Aus dem Aufruf

 javac L.java LTokenTypes.java 
wird zum Beispiel

 gcj --main=LTokenTypes L.java LTokenTypes.java 
Doch auch damit wird es wahrscheinlich noch nicht funktionieren. Auf der Webseite von antlr können Sie nur jar-Dateien herunterladen, die nicht kompatibel zu gcj sind. Damit Sie also antlr mit gcj benutzen können, müssen Sie es zunächst neu mit gcj compilieren. Ein (englisches) Kochrezept zum Neucompilieren von antlr unter gcj finden Sie hier.

Wahrscheinlich ist es aber einfacher, von gcj zu java und javac zu wechseln und sich eine java SDK herunterzuladen. Sie bekommen die Sun Java SDK 1.4.2 hier und die Sun Java SDK 5 hier.


Fragen zum Kurs und Praktikum Software-Architektur

Frage:
Welches UML-Tool kann/soll ich für das Praktikum verwenden?
Antwort:
Eine Liste von UML-Werkzeugen finden Sie hier. Zum reinen Zeichnen von UML-Diagrammen können Sie beispielsweise Microsoft Visio oder den Violet UML Editor verwenden.
Der Vorteil: Sie können genau zeichnen, was Sie möchten.
Der Nachteil: Es kann kein Quellcode importiert werden. Sie müssen alles von Hand zeichnen.

Zum Anfertigen von UML-Diagrammen aus Java-Quelltexten können Sie ArgoUML oder Omondo's EclipseUML Free verwenden.
Der Vorteil: Diagramme können automatisch aus Quelltext erzeugt werden.
Der Nachteil: Die Diagramme sind in der Regel unübersichtlich und zu detailreich.
Bitte beachten Sie: Die Diagramme müssen in der Ausarbeitung lesbar und übersichtlich sein. Um dies zu erreichen ist es nötig, die Diagramme nachzubearbeiten und insbesondere nicht benötigte Informationen zu verstecken (z.B. mit dem Befehl Hide von EclipseUML). Die unveränderte Übernahme von automatisch generierten Diagrammen ist in der Regel nicht akzeptabel!

Fritz Heinrichmeyer | 08.08.2011
FernUni-Logo FernUniversität in Hagen, Fakultät für Mathematik und Informatik, Lehrgebiet Elektronische Schaltungen, 58084 Hagen, Tel.: +49 2331 987-2823, E-Mail: Fritz.Heinrichmeyer@fernuni-hagen.de