PRÜFUNG. Softwaretechnik I WS 10/11

Größe: px
Ab Seite anzeigen:

Download "PRÜFUNG. Softwaretechnik I WS 10/11"

Transkript

1 PRÜFUNG Softwaretechnik I WS 10/11 Name: Matrikelnummer: Note: Prüfungstag: Prüfungsdauer: 120 Minuten Prüfungsumfang: 4 Aufgaben (10 Seiten inklusive Lösungsblatt) Hilfsmittel: alle, außer programmierbare elektronische Hilfsmittel und Kommunikationsgeräte Hinweise: 1.) Verlangt sind alle Aufgaben. 2.) Bitte verwenden Sie keinen Rotstift / Bleistift. 3.) Bitte tragen Sie in den Kasten Ihren Namen und Ihre Matrikelnummer ein. 4.) Verwenden Sie für jede Aufgabe ein separates Lösungsblatt. 5.) Verweise auf Skriptseiten oder Übungsaufgaben werden nicht gewertet. 6.) Geben Sie dieses Deckblatt zusammen mit Ihren Lösungsblättern ab. 7.) Schreiben Sie auf alle Lösungsblätter Ihren Namen und Matrikelnummer Nicht vom Studierenden auszufüllen

2 Aufgabe 1: Analyse und Entwurf (ca. 40 min) Nach den Enthüllungsvorfällen durch WikiLeaks wird geplant ein neues Hardware-basiertes Verschlüsselungsverfahren für den behördlichen -Versand einzusetzen. Ihre Firma wird beauftragt, die Entwicklung des in der folgenden Abbildung skizzierten Systems durchzuführen. Abbildung 1: Prinzipskizze Die -Anwendung verteilt sich auf eine zentrale Serveranwendung (SecuMail), Hardware für die serverseitige Entschlüsselung (Crypto-HW) und die Clientanwendungen der einzelnen Nutzer. Um das gezielte Abfangen von Nachrichten zu verhindern, werden nicht nur der Nachrichteninhalt, sondern auch die Addressdaten (Sender und Empfänger) verschlüsselt und nur über den zentralen Server versandt. Jeder Nutzer und der Server haben jeweils ein Schlüsselpaar (öffentlicher und privater Schlüssel). Mit dem öffentlichen Schlüssel (Key) können Daten verschlüsselt werden, die nur mit dem passenden privaten Schlüssel entschlüsselt werden können. Die Serveranwendung besteht aus einem Webserver, auf dem die Geschäftslogik läuft, mit der der Versand und die Verund Entschlüsselung verwaltet werden und einer -Datenbank in der die Postfächer und die öffentlichen Schlüssel abgelegt sind. Die privaten Schlüssel sind in Chipkarten der Nutzer und in der Crypto-HW hinterlegt und können nicht ausgelesen werden. D. h. verschlüsselte Daten werden den Chipkarten bzw. der Crypto-HW übergeben, die dann die entschlüsselten Daten zurückgeben. Der Versandvorgang für eine soll folgendermaßen ablaufen: 1) Ein Nutzer (Sender) will eine versenden und lädt den ServerKey herunter. 2) Der Sender schickt dem Server die mit dem ServerKey verschlüsselten Addressdaten. 3) Der Server entschlüsselt die Addressdaten, lädt den SenderKey und den ReceiverKey und schickt dem Sender den mit dem SenderKey verschlüsselten ReceiverKey. 4) Der Sender entschlüsselt den ReceiverKey und verschlüsselt mit dessen Hilfe den Nachrichteninhalt. Die Nachricht (verschlüsselter Nachrichteninhalt und die Addressdaten) werden mit dem ServerKey verschlüsselt und an den Server geschickt. 5) Der Server entschlüsselt die Nachricht, lädt den ReceiverKey, verschlüsselt die Nachricht mit dem ReceiverKey und legt diese im Postfach des Empfängers ab. 6) Ein Nutzer (Empfänger) will seine Nachrichten abrufen und lädt den ServerKey herunter. 7) Der Empfänger schickt dem Server seine mit dem ServerKey verschlüsselten Login-Daten. 8) Der Server entschlüsselt die Login-Daten, lädt die verschlüsselte Nachricht vom Postfach des Empfängers und schickt dem Empfänger die verschlüsselte Nachricht. Sie sollen nun die Analyse und den Entwurf für die Serveranwendung (SecuMail) durchführen. 2

3 Frage 1.1: Architekturmuster Welche aus der Vorlesung und den Übungen bekannten Architekturmuster können Sie in der Prinzipskizze in Abbildung 1 identifizieren? Frage 1.2: Strukturierte Analyse und Strukturierter Entwurf Zunächst führen Sie die Analyse und den Entwurf strukturiert durch und erhalten das folgende Kontextdiagramm. Abbildung 2: Kontextdiagramm der SecuMail-Software Bei verschlüsselten Daten ist jeweils der genutzte Schlüssel in tief gestellten spitzen Klammern angegeben. Sie haben außerdem die folgenden drei Teilfunktionen identifiziert: 0.1) versenden : Liefert dem Sender den ServerKey und den mit dem SenderKey verschlüsselten ReceiverKey und benötigt dazu neben den Schlüsseln aus der -Datenbank die entschlüsselten Addressdaten. Zu versendende entschlüsselte Nachrichten werden mit dem ReceiverKey verschlüsselt und im Postfach des Empfängers abgelegt. 0.2) abrufen : Liefert dem Empfänger den ServerKey, um die Login-Daten zu verschlüsseln. Nach Erhalt gültiger entschlüsselter Login-Daten werden zudem die Nachrichten aus dem Postfach des Empfängers geladen und an seinen Client versandt. 0.3) Daten entschlüsseln : Empfängt alle mit dem ServerKey verschlüsselten Daten der Clients, gibt diese an die Crypto-HW zur Entschlüsselung, nimmt die entschlüsselten Daten von der Crypto- HW entgegen und leitet sie an die entsprechende Teilfunktion weiter. a) Erstellen sie das Datenflussdiagramm der Ebene 0 unter Verwendung der gegebenen Teilfunktionen, der Ablaufbeschreibung und des Kontextdiagramms. b) Erstellen sie das MD-Diagramm der Serveranwendung (SecuMail). Hinweis: Modellieren Sie die -Datenbank als Speicher. Benennen Sie die Datenflüsse vom und zum Speicher so, dass ersichtlich ist welche der enthaltenen Daten fließen. 3

4 Frage 1.3: Objektorientierte Analyse und Objektorientierter Entwurf Da die bisherigen Ergebnisse für die Betrachtung nicht ausreichen, sollen Sie Analyse und Entwurf objektorientiert durchführen. Es wurde schon das folgende Klassendiagramm entwickelt. Abbildung 3: Klassendiagramm Nehmen Sie an, dass der Nutzer Sender dem Nutzer Empfänger eine Nachricht übermitteln will und erstellen Sie das Sequenzdiagramm für den oben beschriebenen Versandvorgang bis einschließlich Vorgangsschritt 5 (Ablage der Nachricht im Postfach des Empfängers). Um einen Schlüssel aus der Datenbank zu Laden wird der String Sender, Empfänger oder Server angegeben. Hinweise: Verwenden Sie nur die Methoden, die im Klassendiagramm modelliert sind. Modellieren Sie die Rückgabe des Kontrollflusses nur, wenn eine Methode einen Rückgabewert hat. Modellieren Sie nur den angegebenen Anwendungsfall. Die Aktionen auf Client-Seite müssen nicht modelliert werden. Modellieren Sie unabhängig von den Ergebnissen aus Frage 1.2. Frage 1.4: Vergleich der Entwicklungsmethoden Vergleichen Sie die Strukturierte und die Objektorientierte Entwicklungsmethode. a) Welche Gemeinsamkeiten haben die Entwicklungsmethoden? b) Welche Unterschiede haben die Entwicklungsmethoden? Welches Problem ergibt sich bei der Strukturierten Entwicklungsmethode? Wodurch wurde dies bei der Objektorientierten Entwicklungsmethode gelöst? 4

5 Aufgabe 2: Basistechniken und Test (ca. 25 min) Sie arbeiten bei der Firma Carsisstant Automation, die sich auf die Software für Fahrerassistenzsysteme spezialisiert hat. In ihrem nächsten Projekt sollen Sie die Entwicklung eines Assistenzsystems für autonome Fahrzeugführung (Autopilot) für das in Abbildung 4 schematisch dargestellte Kraftfahrzeug übernehmen. Abbildung 4: Steuerung des Kraftfahrzeugs (Quelle: Das Kraftfahrzeug verfügt über ein elektronisches Lenksystem mit dem der Lenkwinkel eingestellt werden kann. Über das Motorsteuergerät kann die Geschwindigkeit gesteuert werden. Die aktuell erlaubte Geschwindigkeit wird über das Navigationssystem des Kraftfahrzeugs ermittelt. Das Kraftfahrzeugs verfügt über einen Geschwindigkeitsmesser zur Feststellung der aktuellen Geschwindigkeit (zu schnell, ok, zu langsam). Außerdem hat das Kraftfahrzeug ein Radar, das andere Fahrzeuge im Fahrweg detektiert und den Abstand zu diesen Fahrzeugen (ok, zu gering, Kollisionsalarm) ausgibt. Die aktuelle Fahrspurposition (zu weit rechts, ok, zu weit links) des Kraftfahrzeugs wird über eine Kamera ermittelt. Frage 2.1: Entscheidungstabelle a) Sie sollen für den Autopiloten des oben beschriebenen Kraftfahrzeugs eine Entscheidungstabelle entwickeln (siehe Lösungsblatt im Anhang), damit er das Kraftfahrzeug nach den folgenden Regeln steuert: 1) Abstand zu gering: Wenn der Abstand zum vorausfahrenden Fahrzeug zu gering ist, wird eine Geschwindigkeitskorrektur durchgeführt. 2) Richtungsabweichung: Wenn das Kraftfahrzeug zu weit links oder zu weit rechts fährt, wird eine Richtungskorrektur durchgeführt. 3) Geschwindigkeitsabweichung: Wenn die Geschwindigkeit des Kraftfahrzeugs von der erlaubten Geschwindigkeit abweicht, wird eine Geschwindigkeitskorrektur durchgeführt. Diese Anpassung wird nur durchgeführt wenn der Abstand zum Vorausfahrenden und die Richtung des Kraftfahrzeugs keine Korrekturen notwendig machen. 4) Kollisionsalarm: Wenn ein Kollisionsalarm ausgelöst wird, wird eine Notbremsung durchgeführt, die Priorität vor allen anderen Aktionen hat. 5) Normale Fahrt: Wenn Richtung, Geschwindigkeit und Abstand ok sind, wird keine spezielle Aktion durchgeführt. b) Zeigen Sie dass die Entscheidungstabelle nicht frei von Redundanz ist. Erklären Sie die Ursache der Redundanz. Ergänzen bzw. verändern Sie die bisherigen Regeln und geben Sie eine weitere Regel an, sodass die Entscheidungstabelle redundanzfrei ist. 5

6 In einem weiteren Schritt sollen Sie die Teilfunktion des Autopiloten testen. Die Funktion ist in Listing 1 dargestellt. Die Funktion coloradaptation() dient dazu ein Kamerabild in Graustufen zu einem Schwarz-weiß-Bild zu transformieren, auf dem im Idealfall nur noch die Fahrspur zu sehen ist. void coloradaptation(bild, farbefahrbahnmarkierung, korrektur) { if(bild!= null){ for(x = 0; x < bild.breite; x++) { } for(y = 0; y < bild.hoehe; y++) { } if ((bild.getpixel(x, y) > farbefahrbahnmarkierung + korrektur) OR n4 else (bild.getpixel(x, y) < farbefahrbahnmarkierung - korrektur)) bild.setpixel(x, y, 0); bild.setpixel(x, y, farbefahrbahnmarkierung) } } ne Listing 1: Die Funktion coloradaptation() ns n1 n2 n3 n5 n6 n7 Der Parameter bild repräsentiert das Kamerabild mit den Attributen breite und hoehe und den Methoden getpixel() und setpixel(), die zur Abfrage bzw. zum Setzen des Pixelgrauwerts an der Stelle (x, y) des Bildes dienen. Zudem wird der Farbwert für die Fahrbahnmarkierung farbefahrbahnmarkierung übergeben und ein Korrekturwert korrektur zu Korrektur von Umgebungseinflüssen (z. B. Umgebungslicht). Die Werte für Graustufen sind Ganzzahlen und haben einen gültigen Wertebereich von 0 (= schwarz) bis 255 (= weiß). Frage 2.2: Kontrollflussgraph Zeichnen Sie den Kontrollflussgraphen für die im Listing 1 angegebene Funktion coloradaptation(). Frage 2.3: Test a) Stellen sie Testfälle auf mit denen sie die Funktion coloradaptation() aus Listing 1 auf 100%- C1-Überdeckung überprüfen können. Geben Sie die Pixelfarbwerte für das Bild in einer Matrix an. b) Welche Festlegung müsste getroffen werden, um eine 100%-C2-Überdeckung zu ermöglichen? c) Mit welchen Werten für den Parameter farbefahrbahnmarkierung würden Sie die Funktion coloradaptation() bei einer Grenzwertanalyse testen? 6

7 Aufgabe 3: Projektmanagement (ca. 30 min) Sie arbeiten als Projektleiter in einem Softwareunternehmen. Ihr Unternehmen hat den Auftrag erhalten die Vertriebs- und die Produktionssoftware eines Produktionsunternehmens zu integrieren und zu modernisieren. Sie sind mit der Projektplanung und -durchführung betraut. Bei einer ersten Projektleitersitzung wurden die in Tabelle 1 dargestellten Arbeitspakete (AP) identifiziert. AP Beschreibung Dauer (M) Vorgänger A Analyse der Anforderungen aus dem Controlling 8 - B Entwurf der Controllinganwendung 10 A C Implementierung der Controllinganwendung 5 B D Test der Controllinganwendung 4 C E Integration der Controlling- und der Vertriebsanwendung 3 D, I F Analyse der Anforderungen aus dem Vertrieb 11 - G Entwurf der Vertriebsanwendung 3 B, F H Implementierung der Vertriebsanwendung 2 G I Test der Vertriebsanwendung 9 B, F, H, K J Analyse der Anforderungen aus der Produktion 12 - K Entwurf der Produktionssteuerungssoftware 6 J L Implementierung der Produktionssteuerungssoftware 7 B, F, K M Test der Produktionssteuerungssoftware 7 L N Integration von Auftragsverwaltung und Produktionssteuerung 6 M, Q O Entwurf der Anwendung zur Auftragsverwaltung 2 J P Implementierung der Anwendung zur Auftragsverwaltung 2 O Q Test der Anwendung zur Auftragsverwaltung 5 P R Integration des Gesamtsystems 2 E, N Tabelle 1: Arbeitspakete Ihr Unternehmen dokumentiert seine Projekte und hat daher sehr genaue Abschätzungen zur Aufwandsverteilung, die in Tabelle 2 dargestellt sind. Tätigkeit (APs) Recherche, Analyse und Entwurf (A, B, C, F, G, J, K, O) Implementierung und Test (D, E, H, I, L, M, N, P, Q, R) Phase Analyse 20% Entwurf 20% Implementierung 40% Integration und Test 50% 40% 10% 80% Tabelle 2: Aufwandsverteilungsmatrix 7

8 Frage 3.1: Netzplan Zeichen Sie einen Netzplan in Vorgangspfeiltechnik (Critical Path Method, CPM) für die in Tabelle 1 angegebenen Arbeitspakete, Arbeitspaketdauern und Vorgängerbeziehungen und geben Sie den kritischen Pfad an. Verwenden Sie Scheinvorgänge nur dann, wenn diese zwingend erforderlich sind. Frage 3.2: Aufwandsabschätzung Eine erste Schätzung hat ergeben, dass das Projekt insgesamt Quellcodezeilen umfassen wird. Davon müssen Quellcodezeilen neu erstellt werden. Die anzupassenden Quellcodezeilen können zu einem Anteil von 85% automatisiert transformiert werden. Dabei hat die Codetransformation eine durchschnittliche Produktivität von 340 Quellcodezeilen pro Personenmonat. Aus Erfahrung schätzen Sie die Fähigkeiten Ihres Projektteams bezüglich der Wiederverwendung und den dazu nötigen Anpassungen als durchschnittlich mit einem Faktor 1 gegenüber neu erstelltem Code ein. Außerdem gehen Sie bei diesem Projekt von einer Größenänderung durch die Änderung von Anforderungen von 9,4% aus. a) Berechnen Sie nach dem COCOMO II Verfahren den Gesamtaufwand in Personenmonaten. b) Berechnen Sie mit den Angaben aus Tabelle 2 die Mindestanzahl an Personen, die jeweils für die einzelnen Arbeitspakete innerhalb der Tätigkeit Recherche, Analyse und Entwurf (A, B, C, F, G, J, K, O) erforderlich sind, damit diese in der vorgesehenen Zeit abgeschlossen werden können. Vervollständigen Sie dazu zunächst die Angaben in Tabelle 2 und berechnen Sie die Verteilung des Gesamtaufwands auf die einzelnen Phasen. Bestimmen Sie dann den Aufwandsanteil der einzelnen Tätigkeiten über alle Phasen und teilen Sie diesen auf die in der Tätigkeit enthaltenen Arbeitspakete auf. Hinweise: Der Aufwand für eine Tätigkeit verteilt sich gleichmäßig auf alle enthaltenen APs. Es wird vereinfachend angenommen, dass die über die Phasen verteilten Aufwandsanteile vollständig in den bei den einzelnen Tätigkeiten angegebenen APs bearbeitet werden können. Geben Sie sinnvoll gerundete ganze Anzahlen für Personen und Personenmonate an. Frage 3.3: Personalplanung a) Wie viele Personen können Sie in AP O einsparen, wenn Sie den freien Puffer möglichst voll ausnutzen? b) Um welchen Zeitraum verschiebt sich der Projektendtermin, wenn bei Arbeitspaket G drei Viertel der in Mitarbeiter für die komplette Bearbeitungszeit ausfällt? Hinweise: Verwenden Sie für die Berechnungen, die gerundeten Ergebnisse aus Frage 3.2. Geben Sie sinnvoll gerundete Ergebnisse an und begründen Sie ihre Antworten. 8

9 Aufgabe 4: Verständnisfragen (ca. 25 min) Frage 4.1: Charakteristika von Software Nennen Sie 4 Charakteristika von Software. Veranschaulichen Sie an jeweils einem passenden Beispiel warum Software so fehleranfällig ist oder sich Fehler so gravierend auswirken können. Frage 4.2: Projektziele Welche 3 Ziele verfolgt das Software-Projektmanagement? Können diese Ziele gleichermaßen erfüllt werden? Begründen Sie ihre Aussagen beispielhaft, durch Gegenüberstellung zweier dieser Ziele. Frage 4.3: Softwarepflege Warum ist die Software-Pflege (Wartung und Weiterentwicklung) bezüglich des Kostenaspekts und bezüglich des Lebensdaueraspekts bei großen Systemen schon während der Entwicklung so bedeutend? Frage 4.4: Requirements Engineering Es soll das Requirements Engineering für die Software einer Produktionsanlage für Kraftfahrzeuge durchgeführt werden. a) Nennen Sie 4 verschiedene Anforderungskategorien. b) Definieren Sie für jede der von Ihnen genannten Anforderungskategorien beispielhaft eine sinnvolle Anforderung an die Software für die Produktionsanlage. Frage 4.5: Use-Case-Diagramm Was kann mit einem Use-Case-Diagramm beschrieben werden? Was ist das Ziel dieser Beschreibung? Veranschaulichen Sie dieses Ziel anhand eines einfachen Beispiels. Frage 4.6: Phasen der Software-Entwicklung Warum wird die Entwicklung von Software in Phasen eingeteilt? 9

10 Lösungsblatt zu Frage 2.1 Autopilot R1 R2 R3 R4 R5 R6 R7 R8 R9 B1 B2 B3 B4 A1 A2 A3 A4 Hinweis: Die Anzahl an Spalten für die Regeln und die Anzahl an Zeilen für die Bedingungen und Aktionen ist rein zufällig!