Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

Frage zu einer Klausur - Software Engineering

Spaceboy800 / 2 Antworten / Flachansicht Nickles

Hi,

also unser Prof. war leider fast das ganze Semester krank und nun schreiben wir bald ne Klausur. Er hat 2 Klausuren rausgegeben (1x mit Lösung, 1x ohne Lösung). Ich habe allerdings keine Ahnung, wie das zu Lösen ist (die anderen aus meinem Studiengang auch nicht). Ich poste einfach mal die Klausur und hoffe, daß mir jemand weiterhelfen kann..

Aufgabe 1 Objektorientierte Programmentwicklung 50 min

Die Vorgabe der Sollgeschwindigkeit eines Eisenbahntriebwagens kann wahlweise von einem der beiden Führerstände, oder von einer externen Leitzentrale erfolgen.
Die Anzeige der eingestellten Geschwindigkeiten erfolgt auf den beiden Führerständen, in der Leitzentrale und im Fahrgastraum.

1.1.
Auf welcher als - Stand der Technik allgemein anerkannten - Grundlage können Sie das Problem systematisch lösen. (nur Begriffe!)

1.2.
Stellen Sie die Grundlage des Verfahrens dar. (unabhängig vom speziellen Fall)

1.3.
Stellen Sie ausgehend von den Grundlagen die Lösung für unseren speziellen Fall dar. Verlangt ist ein Klassendiagramm und ein Sequenzdiagramm mit einer ausführlichen Beschreibung. Im Sequenzdiagramm ist darzustellen, wie eine Änderung des Sollwertes durch den Triebfahrzeugführer auf Führerstand 1 behandelt wird.
Sie erleichtern sich Ihre Arbeit wenn Sie sowohl für das Klassendiagramm als auch für das Sequenzdiagramm ein Blatt A4 quer verwenden.


Der Sollwert der Geschwindigkeit wird als Führungsgröße für die Geschwindigkeitsregelung verwendet. Außerdem werden die erreichte Position und die dort gefahrene Geschwindigkeit einmal pro Sekunde nicht flüchtig aufgezeichnet. Für die Anzeige und Bedienung gibt es einen Rechner in der Leitzentrale, je einen pro Führerstand und einen für die Fahrgastinformation sowie allgemeine Aufgaben der Dateneingabe und der Darstellung.
Weiter gibt es einen gemeinsamen Bordrechner für die Geschwindigkeitsregelung und die Positionsermittlung und einen weiteren Bordrechner für die Datenspeicherung.

1.4.
Stellen Sie die gesamte beschriebene Software als 3-Schichten-Lösung (ohne Verteilung auf mehrere Rechner) dar und erläutern Sie genau, welche Schicht welche Aufgaben übernimmt.

1.5.
Wie und in welcher Schicht realisieren Sie den Sollwert für die Geschwindigkeit? Was ist problematisch? Wie kommen Sie zu einer sauberen Lösung?

1.6.
Zeichnen Sie das Schichtenmodell unter Berücksichtigung der eingesetzten Rechner.


Aufgabe 2 Qualitätssicherung 25 min

In einem Programm für die Landvermessung sind an mehreren Stellen Längenwerte zu vergleichen. Dabei ist zu berücksichtigen, dass die Längenwerte mit einer Genauigkeit von 10-4m archiviert werden. Und dass es aufgrund der Messungen 100-%-ig genaue Längenangaben nicht gibt.

2.1.
Erstellen Sie für diese Anwendung eine C++-Funktion LenCompare, die true ausgibt, wenn die beiden Längen Len1 und Len2 (Dimension m) in praktischer Hinsicht gleich sind. In allen anderen Fällen soll false ausgegeben werden.

2.2.

Gestalten Sie dieselbe Funktion so, dass sie sich für jeden Anwendungsfall eignet.

2.3.
Ein Programm soll Klausurergebnisse, die in %-Angaben vorliegen in Noten (1 bis 6) umrechnen. Die Ergebnisse liegen als ganze Zahlen vor sie werden durch eine Zahl vom Typ unsigned int (16 Bit) repräsentiert.
Die Zuordnung der prozentualen Ergebnisse zu den Noten ist wie folgt:

Prozentuale Ergebnisse Note
100 - 90 1
89 - 78 2
77 - 65 3
64 - 50 4
49 - 32 5
31 - 0 6

Der Quelltext sei dem Tester nicht bekannt.

2.3.1.
Wieviele Testfälle erfordert ein kompletter Programmtest? (Begründung!!)

2.3.2.
Durch Äquivalenzklassenbildung kann die Zahl der erforderlichen Testfälle erheblich reduziert werden.
Erstellen Sie einen beispielhaften Testdatensatz. In welchem Umfang reduziert sich durch die Anwendung dieses Testdatensatzes die Zahl der Testfälle?

2.3.3.
Einen schärferen Test liefert die Grenzwertanalyse. Erläutern Sie Anhand der obigen Aufgabenstellung beispielhaft, warum das so ist. Ermitteln Sie den Testdatensatz für die Grenzwertanalyse und geben Sie an, in welchem Umfang sich dabei der Umfang der Testfälle im Vergleich zum vollständigen Test reduziert.
2.3.4.
Man muss damit rechnen, dass bei der Programmerstellung sabotiert wurde. Z. B. könnte einem 20-% Resultat das Ergebnis 1 zugewiesen werden. Wie finden Sie unter den genannten Voraussetzungen derartige Fehler?

2.3.5.
Zeichnen Sie ein Struktogramm des Programms (nur mit einfachen Verzweigungen (ifs)). Mit welchem Testdatensatz erreichen Sie gerade eben eine Befehlsabdeckung (Beispiel)? Schauen Sie den Testdatensatz genau an. Fällt Ihnen dabei etwas auf?
Verwenden Sie zum Zeichnen des Struktogramms ein Blatt A4 quer.

2.3.6
Die Berechnung der nachstehenden Ausdrücke erfolge im 64-Bit-Gleitkommaformat. Welche Resultate erwarten Sie bei der Berechnung (worst/case) dieser Ausdrücke?
Lösung bitte direkt hier eintragen.

(3.0 == 10.0 * 0.3)

(300.0 == 10.0 * 30.0)

(300.0 == 1000.0 * 0.3)

(300.0 == 600.0 * 0.5)

( 5.0 == 8.0 * 0.625)

(5.0 == 2.0 / 0.4)

(5.0 == 2.500001 / 0.5)

So, das war die Klausur. Hat jemand eine Idee dazu??

Gruss

Spaceboy

bei Antwort benachrichtigen