Klausur SE26 ims SS'95

Name: _____________________________________________ Matrikel-Nr.: __________

Platz: Reihe: __________ Sitz: _______ erster ( ) zweiter ( ) letzter ( ) Versuch

Pseudonym: __________________ (nur wenn Sie möchten, daß Ihr Klausurergebnis als Aushang veröffentlicht wird)

Unterlagen und Hilfsmittel sind nicht zugelassen. Kommunikation während der Klausur ist nur mit dem Dozenten erlaubt, der Mißverständnisse und Unklarheiten klären kann. Schreiben Sie die Lösungen auf diese Blätter, gegebenenfalls auf ein numeriertes leeres Blatt mit Ihrem Namen; kennzeichnen Sie die Aufgabennummer eindeutig. Geben Sie alle Blätter (auch die Schmierblätter) ab. Für falsche oder nicht einleuchtende Lösungen bekommen Sie grundsätzlich keine Punkte. Wenn aber aus Ihren Notizen oder Bemerkungen ersichtlich ist, daß Ihr Gedankengang richtig war, können Sie Teilpunkte bekommen. Sie verlieren jedoch diese Möglichkeit, wenn Abschreiben oder Kommunikation während der Klausur nachgewiesen werden kann. Der Kern der Fragen wurde kursiv gesetzt. Neben der Punktzahl der einzelnen Aufgaben steht als Orientierung ein geschätzter maximaler Zeitaufwand (insg. 90 Minuten). In den letzten 15 Minuten werden keine Fragen mehr beantwortet.

Klausurtermin: Mittwoch, den 19.6.1995 um 18:00 im Vorlesungsraum

  • Ergebnisse: Mittwoch, den 26.6.1995 um 17:30
  • Letzte Reklamationsmöglichkeit: Mittwoch, den 3.7.1995 um 17:30
  • Die Klausurnote (rot) wird abwärts gerundet vergeben. Übungsnote (blau), Semesternote (gelb):
  • 5 15 25 35 45 55 65 75 85 95 105 115 125 135 145 155 165 175 185 195

  • 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200
  • 6,0 5,7 5,3 5,0 4,7 4,3 4,0 3,7 3,3 3,0 2,7 2,3 2,0 1,7 1,3 1,0
  • _______________________________________________________________________________________________

    Aufgabe 1. (40 Punkte, 10 Min, ca. 10 Programmzeilen): Das Modul mit der Schnittstelle in der Datei FOURIER.ADS (bzw. FOURIER.H) ist geeignet, Fourier-Kurven auf dem Bildschirm darzustellen. Es stellt ein abstraktes Datenobjekt zur Verfügung, in dem eine Fourier-Kurve gespeichert werden kann. Dazu muß seine Methode Laden aufgerufen werden, die einen Float-Parameter braucht. Die Methode Anzeigen (mit zwei Integer-Parmetern) läßt die gespeicherte Kurve auf dem Bildschirm sichtbar werden (die Parameter geben die x- und y-Koordinaten der Darstellung der Fourier-Kurve an).

    Das Modul stellt nicht nur ein abstraktes Datenobjekt für Fourier-Kurven zur Verfügung, sondern exportiert auch den abstrakten Datentyp TFourier, um eine beliebige Anzahl von Fourier-Objekten anlegen zu können. Sie können mit den parametrisierten Versionen der obigen Methoden manipuliert werden.

    Entwickeln Sie nun eine Hauptprozedur (in Ada oder in C), die drei Fourier-Kurven, eine abstrakte (namenlose) und zwei konkrete (benannte) bedient. Laden Sie alle drei mit beliebigen Parametern, dann machen Sie sie an beliebigen Koordinaten sichtbar.

    Lösung auf dem Extrablatt Nr. _________ ( 0 5 10 15 20 25 30 35 40 )

    _______________________________________________________________________________________________

    Aufgabe 2. (20 Punkte, 15 Min): Zeichnen Sie die Modulhierarchie mit Steuer- und Datenflüssen für die folgenden 4 Module auf:

  • module A module C
  • import D.Z import A, B, D.T
  • export export
  • procedure P (out real) procedure V (out string)
  • end end
  • module D module B

  • export import A, D
  • procedure Z (in string) export
  • procedure T (inout real) procedure M (in real)
  • end end
  • Lösung auf dem Extrablatt Nr. _________ ( 0 5 10 15 20 25 30 )

    Name: _____________________________________________ Matrikel-Nr.: __________

    _______________________________________________________________________________________________

    Aufgabe 3. (40 Punkte, 15 Min): Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stichworten dazu. Ohne Begründung gilt Ihre Antwort als falsch.

    ( ) Richtig Datenabstraktionsmodule exportieren nie einen Datentyp.

    ( ) Falsch

    Grund:

    ( ) Richtig Die Dokumentationsphase folgt dem Integrationstest

    ( ) Falsch und findet noch vor der Übergabe statt.

    Grund:

    ( ) Richtig Alle Datentypen werden in der Implementierungsphase definiert.

    ( ) Falsch

    Grund:

    ( ) Richtig Der Benutzer kann aufgrund der Schnittstelle eines Moduls seine Funktionen aufrufen.

    ( ) Falsch

    Grund:

    ( ) Richtig In der Entwurfsphase werden die Modultesttreiber definiert.

    ( ) Falsch

    Grund:

    ( ) Richtig Die Robustheit des Software-Produkt schützt es vor kostspieligen Umstellungen

    ( ) Falsch beim Wechsel der Hardware.

    Grund:

    ( ) Richtig Die Adressen der dynamisch angelegten Datenobjekten werden immer

    ( ) Falsch in einem Zeigerobjekt gespeichert.

    Grund:

    ( ) Richtig Durch die Strukturierte Analyse entstehen Struktogramme.

    ( ) Falsch

    Grund:

    ( 0 5 10 15 20 25 30 35 40 )

    _______________________________________________________________________________________________

    Aufgabe 4. (30 Punkte, 10 Min, ca. 12 Programmzeilen): Die Klasse Fenster mit der folgenden Schnittstelle ermöglicht das Anzeigen einer Textzeilen in einem Fenster auf dem Bildschirm:

    class Fenster {

    public:

    Fenster (int, int); // Konstruktor, legt ein Fenster mit den angegebenen Koordinaten an

    void fuellen (char *); // Mutator, füllt das Fenster mit einer Zeichenkette

    char* holen () const; // Informator,

    void anzeigen () const; // zeigt das Fenster am Bildschirm an

    int leer () const; // Informator, besagt, ob das Fenster mit einer Zeichenkette gefüllt wurde

    protected: ... // Implementierung der Datenstruktur

    Leiten Sie aus dieser Klasse eine weitere durch Vererbung (gezwungenermaßen mit Datenkapselung, da sie die Datenkomponenten von Fenster nicht kennen) ab (inkl. Implementierung), die ihren Benutzer auch über die Anzahl der gespeicherten Zeichen informieren kann. Die Länge einer Zeichenkette können Sie mit der Funktion strlen(char *) errechnen. Sie können hierfür auch eine andere Sprache oder (z.B. Ada-ähnliche) Notation verwenden

    Lösung auf dem Extrablatt Nr. _________ ( 0 5 10 15 20 )

    Name: _____________________________________________ Matrikel-Nr.: __________

    _______________________________________________________________________________________________

    Aufgabe 5. (10 Punkte, 5 Min): Schreiben Sie ein Beispiel auf, wo der Zusammenhang der Begriffe des Software Engineering Qualität, Prinzip, Methode und Werkzeug verwirklicht wird

    Antwort:

    ( 0 5 10 15 20 )

    _______________________________________________________________________________________________

    Aufgabe 6. (50 Punkte, 30 Min, ca. 10 Programmzeilen): Die folgende Prozedur trägt ein neues Element in eine vorwärts verkettete Liste ein:

    1. void eintragen (const Typ x, const Knoten * k) { procedure Eintragen (X: Typ; K: Knoten) is
    2. const Knoten * h = new Knoten; H: constant Knoten := new Knoten;
    3. h -> wert = x; begin H.Wert := X;
    4. h -> next = k -> next; H.Next := K.Next;
    5. h -> next = k; H.Next := K;
    6. } end;

    Zeichnen Sie die Datenstruktur (mit mindestens 3 Elementen) auf. Tragen Sie die Veränderungen, die die obige Methode bewirkt, in Ihre Zeichnung ein und versehen Sie sie mit den Nummern der bewirkenden Programmzeilen.

    Schreiben Sie den Rumpf der Prozedur austragen (Knoten * k) bzw. Austragen (K: Knoten), die das ein Element aus der Liste löscht. (Es wird empfohlen, hierfür auch eine Zeichnung anzufertigen.) Schreiben Sie die Schnittstelle des Moduls mit diesen beiden Operationen auf. Versehen Sie die Operationsvereinbarungen mit Kommentaren über ihre Funktionalität. Vergessen Sie nicht zu beschreiben, wohin eingetragen bzw. welches Element gelöscht wird.

    Lösung auf dem Extrablatt Nr. _________

    ( 0 5 10 15 20 25 30 35 40 45 50 )

    _______________________________________________________________________________________________

    Aufgabe 7. (10 Punkte, 5 Min): Geben Sie die Definition für fünf der folgenden Qualitätseigenschaften von Software: assimilativ, autark, brauchbar, kompakt, robust, selbsterklärend, zugänglich, zuverlässig.

    Lösung:

    ( 0 5 10 15 20 )