• Keine Ergebnisse gefunden

Methoden des Software Engineering

N/A
N/A
Protected

Academic year: 2021

Aktie "Methoden des Software Engineering"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Methoden des Software Engineering

WS 2014/15, Dr. Philip Mayer, Dipl. Medien-Inf. Lenz Belzner

Anmerkung: Dieses Blatt und die dazugehörige Übung am 16.12.2014 wird vertretungsweise präsentiert von Christian Kroiß (kroiss@pst.ifi.lmu.de).

Übungsblatt 9

Laden Sie die Datei mse_ws14-15_homework_09.zip von der Homepage der Vorlesung herunter und importieren Sie das darin enthaltene Projekt in Ihren Eclipse-Workspace. Das Projekt enthält bereits alle für die Aufgabe benötigten Bibliotheken und Klassen.

Für diese Aufgabe soll ein vereinfachter Ausschnitt aus einer fiktiven elektronischen Schließanlage betrachtet werden.

Das Schloss, bzw. dessen Benutzerschnittstelle, sei für das aktuelle Szenario wie folgt aufgebaut:

Um ein Schloss bedienen zu können, muss eine berechtigte Karte im Karten-Einschub eingeschoben sein. Ist dies der Fall, dann kann durch einen Knopf auf dem Schloss-Panel das Schloss geöffnet bzw.

geschlossen werden. Das Schloss bietet eine grüne und eine rote LED, die anzeigen, ob die eingelegte Karte korrekt gelesen wurde und berechtigt ist.

Das Schloss wird durch ein vom Hersteller bereitgestellten Treiber ins System eingebunden. Dieser Treiber implementiert das Interface ILock, das eine Methode setLockController() anbietet, mit dem der sogenannte Lock Controller des Systems mit dem Schloss-Treiber verbunden werden kann.

Das Schloss selbst übernimmt das Lesen der Kartennummer von der eingelegten Karte, falls ein Lesefehler auftritt, wird ein Fehler durch die Rote LED angezeigt und keine Daten werden an das System übertragen. Ist das Lesen erfolgreich, so wird die Kartennummer an den Lock Controller übermittelt. Der Lock Controller überprüft daraufhin die Berechtigung der eingelegten Karte und steuert durch die Methoden des Interfaces ILock das Verhalten des Schlosses.

1 Status-LEDs

Karten-Einschub Knopf zum Öffnen/

Schließen

(2)

Etwas detaillierter sei folgende Spezifikation für die Klasse LockController gegeben:

1. Beim Aufruf der Methode LockController.cardInserted(ILock

lock,String cardNumber) wird per Datenbank-Abfrage über ein Data Access Object der Klasse CardDAO überprüft, ob die angegebene Kartennummer einer Karte entspricht, die für das angegebene Schloss freigeschaltet ist.

a. Falls die Berechtigung nicht gegeben ist, dann wird die rote LED am Schloss eingeschaltet und der Zugriff wird verweigert. Dies ist in folgenden Fällen der Fall:

i. Es kann in der Datenbank keine Karte mit der gelesenen Nummer gefunden werden.

ii. Es wird eine Karte mit der gelesenen Nummer gefunden, aber diese hat keine Berechtigung für das Schloss, an dem die Karte eingelesen wurde.

iii. Es tritt bei der Abfrage ein Datenbank-Fehler auf (eine SQLException wird geworfen).

b. Falls die Karte berechtigt ist, wird der Zugriff gewährt und die grüne LED wird aktiviert.

2. Wenn der Knopf an einem Schloss gedrückt wird, dann überprüft der Controller, ob die richtige Karte im Slot dieses Schlosses eingelegt ist.

a. Falls ja wird das Schloss entriegelt wenn es vorher verriegelt war bzw. verriegelt wenn es vorher entriegelt war.

b. Falls nein passiert gar nichts, d.h. der Knopfdruck wird ignoriert.

3. Wenn eine Karte aus dem Slot eines Schlosses entfernt wird, dann erlischt an diesem Schloss die aktive LED.

Aufgaben:

1. Machen Sie sich zunächst mit den Grundlagen der beiden Test-Framework JUnit

(www.junit.org) und EasyMock (www.easymock.org) vertraut. Die jeweiligen Web-Seiten der Projekte liefern dazu genügent frei zugängliche Dokumentation.

2. Schreiben Sie eine JUnit-Testklasse, die die Klasse LockController testet. Lesen Sie dazu die Spezifikation genau durch und schreiben Sie Testmethoden für alle relevanten Fälle.

Setzen Sie das Framework EasyMock ein, um Mock Objects für die Interfaces ICardDao und ILock zu erzeugen. Verwenden Sie anschließend diese Mock Objects, um das Verhalten von LockController zu testen.

3. Die Klasse LockController enthält einen Fehler, der zu einer Sicherheitslücke führt.

Schreiben Sie einen Test, der diesen aufdeckt, und erklären Sie den Fehler in einem Kommentar zu diesem Test. Beheben Sie anschließend den Fehler im Code der Klasse LockController.

Hinweis: berücksichtigen Sie, dass der Lock Controller normalerweise nicht nur ein Schloss verwaltet.

2

Referenzen

ÄHNLICHE DOKUMENTE

Formulare sind übersichtlicher als Endlostabellen. Es lassen sich von einer fertigen Tabelle Formulare erstellen oder auch ein Formular für alle Tabellen zusammen. Zudem

10 Load the device driver for your SCSI or network adapter 11 Load the device driver for your hard disk's adapter 12 Load any additional device drivers you need 13 Select

• If you're installing NEXTSTEP on an Intel-based computer using a device driver that isn't on the original NEXTSTEP Device Drivers floppy disk, you may see the

This cycle-the event cycle-usually starts at launch time when the application (which includes all the OpenStep frameworks it's linked to) sends a stream of PostScript code to

Higher-order logic, interactive provers (Isabelle/HOL) fragments of C and their specification languages Hoare logic (specification of pre and post conditions) embedded systems,

❍   Beim Prüfen erkannte Fehler müssen anschließend korrigiert werden (indem die verursachenden Defekte erkannt und behoben werden)!... Software

●  Entwicklungsteam schätzt Aufwand pro Position und wählt Positionen für anstehende Iteration aus (scrum backlog)!. ❍   Durchführung

●  Wie soll das Risiko im Projekt verfolgt werden?. ●  Kann das Risiko auf Dritte