Kurs 1793 Software Engineering I Hauptklausur am 07.08.1999



Ähnliche Dokumente
Kurs 1793 Software Engineering I Hauptklausur am Gründung eines E-Commerce-Unternehmens ER-Analyse

Kurs 1793 Software Engineering I Nachklausur am

Kurs 1793 Software Engineering I Nachklausur am

Kurs 1793 Software Engineering I Nachklausur am

Programmierkurs Java

m n 1 Kurs Fach KursNr Art Abb. 1.1: Das ER-Diagramm

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

1 Konto für HBCI/FinTS mit Chipkarte einrichten

Elexis-BlueEvidence-Connector

Bauteilattribute als Sachdaten anzeigen

1 Mathematische Grundlagen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Print2CAD 2017, 8th Generation. Netzwerkversionen

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Hilfe zur Urlaubsplanung und Zeiterfassung

Folgeanleitung für Fachlehrer

Synchronisations- Assistent

Kurs 1613 Einführung in die imperative Programmierung

Anleitung zur Konfiguration eines NO-IP DynDNS-Accounts mit der TOOLBOXflex-3.2

Kurzanleitung MAN E-Learning (WBT)

Handbuch B4000+ Preset Manager

Folgeanleitung für Klassenlehrer

Import und Export von Übergängern

AutoCAD Dienstprogramm zur Lizenzübertragung

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

1 Vom Problem zum Programm

Outlook-Daten komplett sichern

Codex Newsletter. Allgemeines. Codex Newsletter

Artikel Schnittstelle über CSV

1. So beginnen Sie eine Kalkulation

Datenübernahme aus Profi-Cash

Hinweise zum Übungsblatt Formatierung von Text:

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Software Engineering I. Musterlösungen zur Hauptklausur vom Aufgabe 1

Eine Anleitung, wie Sie in Ihren Moodle-Kursen die Funktionen Sicherung Wiederherstellen Import Zurücksetzen zur Kursverwaltung nutzen können.

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Anleitung zur Benutzung des jobup.ch Stellensuchendekontos

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis 1

Schrittweise Anleitung zur Installation von Zertifikaten der Bayerischen Versorgungskammer im Mozilla Firefox ab Version 2.0

Persönliches Adressbuch

Kursangebot gesammelt einlesen

EMIS - Langzeitmessung

Einführung in die Programmierung für Wirtschaftsinformatik

AUF LETZTER SEITE DIESER ANLEITUNG!!!

Datenexport aus JS - Software

Einrichtung eines Zugangs mit einer HBCI-Chipkarte bei der Commerzbank

FIS: Projektdaten auf den Internetseiten ausgeben

How to do? Projekte - Zeiterfassung

SAMMEL DEINE IDENTITÄTEN::: NINA FRANK :: :: WINTERSEMESTER 08 09

Zeichen bei Zahlen entschlüsseln

Pfarrverwaltung (Pfarrpaket)

Verwendung des IDS Backup Systems unter Windows 2000

Dokumentation zum Spielserver der Software Challenge

1. Allgemeines. Mit der Vertragsverwaltung können u.a.

A. Ersetzung einer veralteten Govello-ID ( Absenderadresse )

Ihr CMS für die eigene Facebook Page - 1

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

-Inhalte an cobra übergeben

Programmiersprachen und Übersetzer

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Übungen zur Softwaretechnik

Anleitung für die Version von online 1. Schritt: Rufen Sie die Website auf...

Enigmail Konfiguration

" -Adresse": Geben Sie hier bitte die vorher eingerichtete Adresse ein.

Agentur für Werbung & Internet. Schritt für Schritt: Newsletter mit WebEdition versenden

Neue Zugangsdaten für sg-online erstellen

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Programmteil Bautagebuch

OP-LOG

Einstellungen für SEPA-Lastschriften oder SEPA Dauerlastschriften in der VR-NetWorld Software 5.0

Übung 4. Musterlösungen

a) In der Aufgabenstellung war ein möglichst einfaches Klassendiagramm gefordert. Abb. 1 zeigt eine mögliche Lösung. * * * Aufbau 1..

Outlook und Outlook Express

Mediumwechsel - VR-NetWorld Software

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Lehrer: Kurs wiederherstellen

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Einstellungen für SEPA-Lastschriften in der VR-NetWorld-Software

RAID Software. 1. Beginn

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Carolo Knowledge Base

Installationsanweisung Gruppenzertifikat

Barcodedatei importieren

Mediumwechsel - VR-NetWorld Software

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Betriebshandbuch. MyInTouch Import Tool

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Übungen Programmieren 1 Felix Rohrer. Übungen

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Transkript:

Kurs 793 Software Engineering I Seite: 5 Aufgabe (2 Punkte) Dienstverträge Problembeschreibung An einem Informatik-Lehrstuhl der FernUni werden studentische Hilfskräfte beschäftigt. Die Hilfskräfte können die Einsendeaufgaben eines Kurses korrigieren, Verwaltungstätigkeiten für einen bestimmten Kurs ausführen oder bei einem Forschungsprojekt mitarbeiten. Der Arbeitsort hängt vom Tätigkeitsbereich ab: Korrekturkräfte arbeiten normalerweise zu Hause, während die Kursverwaltung z.b. immer eine Präsenzaufgabe ist. Jede Hilfskraft bekommt jeweils einen auf einen bestimmten Zeitraum befristeten Dienstvertrag, in dem die wöchentliche Arbeitszeit und die Tätigkeitsbereiche (Korrektur, Kursverwaltung oder Forschungsprojekt) festgehalten sind. Beim Tätigkeitsbereich Korrektur muß die Kursnummer und die wöchentliche Anzahl der zu korrigierenden Einsendeaufgaben festgehalten werden, bei der Kursverwaltung wird nur die Kursnummer gespeichert und beim Forschungsprojekt wird ein Projektname und der Name eines verantwortlichen Mitarbeiters gespeichert. Manche Hilfskräfte haben mehrere Tätigkeitsbereiche gleichzeitig und arbeiten für mehrere Kurse und Projekte, bekommen aber trotzdem nur einen Dienstvertrag, in dem die jeweiligen Tätigkeitsbereiche aufgelistet sind. Ausgehend von der Problembeschreibung ist es Ihre Aufgabe, die Daten des Systems durch ein ER-Diagramm so zu modellieren, daß ein daraus entworfenes Programm die folgenden Anfragen beantworten kann:. Welche Hilfskräfte waren am.4.999 am Lehrstuhl beschäftigt? 2. Welche Aufgaben hatte die Hilfskraft X in den Verträgen von 996-998? 3. Welche Hilfskräfte waren am.4.999 für die Verwaltung des Kurses 793 verantwortlich? 4. Welche Hilfskräfte haben sowohl in der Kursverwaltung als auch in der Korrektur von Einsendeaufgaben Erfahrung? 5. Wie heißt der verantwortliche Mitarbeiter für das Projekt P? 6. Welche Hilfskräfte arbeiten zu Hause (an Korrekturen oder Forschungsprojekten)? (b.w.)

Seite: 6 Kurs 793 Software Engineering I Aufgabenstellung Stellen Sie das ER-Diagramm graphisch dar und geben Sie zu jedem Entitätstyp durchschnittlich zwei Attribute an. Anhand der obigen Anfragen können Sie überprüfen, ob Ihr Modell ausreicht.

Kurs 793 Software Engineering I Seite: 7

Seite: 8 Kurs 793 Software Engineering I Aufgabe 2: (2 + 4 = 6 Punkte) Mini-Taschenrechner In dieser Aufgabe sollen Sie das Ereignismodell eines einstelligen boolschen Taschenrechners (vgl. Abb. 2.) weiterentwickeln: mini + = Abb. 2.: Mini-Taschenrechner Der Taschenrechner rechnet nach folgenden Regeln: + = + = + = + = und basierte bisher auf dem Ereignismodell in Abb. 2.2 (s.u.). Die Anwender des Rechners wünschen sich für die nächste Generation von Minitaschenrechnern die Möglichkeit, auch mehr als zwei Summanden addieren zu können. Nach jedem Betätigen der Plustaste soll das aktuelle Zwischenergebnis angezeigt werden: Beispiel: + + + = gedrückte Taste + + + = anschließend angezeigte Zahl Außerdem soll man eine falsch eingetippte Zahl korrigieren können, indem man nach der falschen Zahl direkt die richtige Zahl eintippt. Es wird immer die zuletzt eingegebene Zahl (bzw. Ziffer, da alle Zahlen einstellig sind) gewertet:

Kurs 793 Software Engineering I Seite: 9 Beispiel: + + = gedrückte Taste + + = anschließend angezeigte Zahl Aufgabenstellung: a) Ergänzen Sie in dem Ereignisdiagramm in Abb. 2.2 zusätzliche Zustandsübergänge und/oder Zustände, so daß die zwei Wünsche der Anwender erfüllt werden. b) Überlegen Sie sich einen Ansatz, wie man die Zustände und Zustandsübergänge des Ereignisdiagramms in einen Implementationsentwurf (z.b. eine Prozedur) umsetzen könnte und skizzieren Sie Ihre Idee kurz (z.b. in strukturierter Sprache). gedrückte Taste angezeigte Zahl + + + + = = Start + + + = + = Abb. 2.2: Ereignisdiagramm des Mini-Taschenrechners

Seite: Kurs 793 Software Engineering I Aufgabe 3 (9 + 4 + 5 + 4 = 22 Punkte) Hierarchischer Modulgraph Für das Software-Praktikum an der FernUni soll ein graphischer Editor entworfen werden, mit dem man die graphische Darstellung einer modularen Architektur (bestehend aus Modulen und Teilsystemen sowie Benutzungsbeziehungen, die die Module und Teilsysteme miteinander verbinden) erstellen und editieren kann. Das ER-Diagramm in Abb. 3. beschreibt einen Ausschnitt der von dem graphischen Editor zu verwaltenden Daten: Benutzungsbez. n Objekt n verbindet 2 Modul Knoten enthält Teilsystem Abb. 3.: ER-Diagramm für einen graphischen Editor In dieser Aufgabe soll das ER-Diagramm aus Abb. 3. in einen datenstrukturorientierten Grobentwurf übertragen werden.

Kurs 793 Software Engineering I Seite: Aufgabenstellung: a) Übertragen Sie die Entitätstypen Objekt, Benutzungsbeziehung, Knoten, Teilsystem und Modul, indem Sie die resultierenden Moduln und Teilsysteme (aus der Sicht des Entwerfers) graphisch darstellen. Ignorieren Sie zunächst die Beziehungen verbindet und enthält. Hinweis: Die IDs sollen automatisch vom System vergeben werden. b) Beschreiben Sie, wie die (,n)-beziehungen enthält und und die (2,n)-Beziehung verbindet übertragen werden, indem Sie die folgenden Fragen beantworten:. In welchen ADTs müssen jetzt zusätzlich Fremdschlüssel gespeichert werden? 2. Aus welchem Modul werden die Schlüssel jeweils importiert? c) Skizzieren Sie die Architektur des Gesamtsystems (aus der Sicht des Verwenders). d) In Ihrem Entwurf sollte ein Behälter-ADO vorkommen. Von welchem Typ sind die in diesem Behälter gespeicherten Elemente? Sehen Sie Probleme bei der Umsetzung des Entwurfs in Modula-2?

Seite: 2 Kurs 793 Software Engineering I

Kurs 793 Software Engineering I Seite: 3

Seite: 4 Kurs 793 Software Engineering I Aufgabe 4 (3 + 7 + 8 = 28 Punkte) Generische ID-Verwaltung Im Kap. 6.2 des Kurstextes (S. 272) wurde am Beispiel des Teilsystems Daueraufträge demonstriert, wie man durch Verwendung von generischen Komponenten Redundanz vermeiden kann. In dieser Aufgabe soll das Prinzip auf das Teilsystem Kunden übertragen werden: Kunden TS KundenOrdner ADO Jeder Kunde wird durch eine KundenID eindeutig identifiziert. Die Vergabe von KundenIDs geschieht im ADT KundenIDVerwaltung, der aus dem generischen ADT ID- Verwaltung abgeleitet ist. Zur Speicherung der zurückgegebenen IDs verwendet die IDVerwaltung den GADT SortierteObjektliste (vgl. Kurstext S. 29). Die Module Kundenordnerschablone und Kundenordner werden in dieser Aufgabe nicht weiter betrachtet. KundenOrdnerschablone ADT KundenID- Verwaltung ADT Kunde ADT KundenID ADT IDVerwaltung GADT Sortierte- Objektliste GADT Abb. 4.:: Das Teilsystem Kunden

Kurs 793 Software Engineering I Seite: 5 a) Ergänzen Sie in der folgenden Modulspezifikation des ADT-Moduls KundenID die Prozeßspezifikationen für die Operationen Create, Duplicate, und Equalize. Als Berechnungsvorschrift für die Schlüssel können Sie die Identitätsfunktion verwenden (d.h. der Schlüssel ist gleich der SeqNr): MODULSPEZIFIKATION ADT KundenID ENTHALTEN IN Kunden; SCHNITTSTELLENSPEZIFIKATION EXPORTE DATENTYPEN TKundenID; OPERATIONEN Create (IN SeqNr : CARDINAL) : TKundenID, Dispose (INOUT ID : TKundenID), Duplicate (IN QuellID : TKundenID) : TKundenID, IsEqual (IN ID, ID2 : TKundenID) : BOOLEAN, Equalize (INOUT ZielID : TKundenID; IN QuellID : TKundenID), SameSeqNr (IN ID, ID2 : TKundenID) : BOOLEAN, SmallerSeqNr (IN ID, ID2 : TKundenID) : BOOLEAN; SEMANTIK (* -- Dispose, Duplicate, IsEqual, Equalize mit üblicher Semantik *) Create : Vorbed.: keine Berechnet aus SeqNr den entsprechenden Identifikator der IDFolge Nachbed.:RückgabeADO ID existiert; Duplicate : Vorbed.: keine Erzeugt eine exakte Kopie (neueid) der QuellID Nachbed.: (neueid existiert) und (IsEqual(QuellID, neueid)) und (neueid ist nicht identisch mit QuellID) Equalize : Vorbed.: keine Gleicht die Attribute der ZielID an die QuellID an, wobei die Identität der ADOs nicht verändert wird. Nachbed.: (QuellID alt = QuellID neu ) und (ZielID alt = ZielID neu ) und IsEqual(QuellID alt, ZielID neu ) SameSeqNr : Vorbed.: keine Prüft, ob ID und ID2 aus dem gleichen Folgeglied generiert wurden Bezeichne same den booleschen Rückgabeparamenter, dann gilt: Nachbed.:same ID und ID2 haben die gleiche SeqNr SmallerSeqNr :Vorbed.: keine Prüft, ob ID aus einem kleineren Folgeglied generiert wurden als ID2 Bezeichne smaller den booleschen Rückgabeparamenter, dann gilt: Nachbed.:smaller ID hat eine kleinere SeqNr als ID2 (***************************************************************************************************)

Seite: 6 Kurs 793 Software Engineering I RUMPFSPEZIFIKATION TKundenID = RECORD SeqNr, Schluessel : CARDINAL END; Prozeßspezifikation Create END Create; Prozeßspezifikation Duplicate END Duplicate; Prozeßspezifikation Equalize END Equalize; SPEZIFIKATIONSENDE MODUL KundenID. Abb. 4.2: Der Modul KundenID

Kurs 793 Software Engineering I Seite: 7 b) Ergänzen Sie die Rumpfspezifikation des ADT KundenIDVerwaltung: MODULSPEZIFIKATION ADT KundenIDVerwaltung ENTHALTEN IN Daueraufträge; SCHNITTSTELLENSPEZIFIKATION IMPORTE AUS KundenID IMPORTIERE TKundenID; EXPORTE DATENTYPEN TKundenIDVerwaltung, TKundenID; OPERATIONEN Create : TKundenIDVerwaltung, Dispose (INOUT DIV: TKundenIDVerwaltung), HoleNeueID (INOUT DIV : TKundenIDVerwaltung) : TKundenID, ÜberlasseAlteID (INOUT DIV : TKundenIDVerwaltung; IN ID : TKundenID); SEMANTIK Die Semantik der Operationen bleibt gegenüber der IDVerwaltung (s. folgende Seite) unverändert. (****************************************************************************************************) RUMPFSPEZIFIKATION SPEZIFIKATIONSENDE MODUL KundenIDVerwaltung. Abb. 4.3: Der Modul KundenIDVerwaltung

Seite: 8 Kurs 793 Software Engineering I c) Ergänzen Sie die Prozeßspezifikation für die Operationen Dispose und UeberlasseAlteID in der folgenden Modulspezifikation des GADT-Moduls IDVerwaltung: GENERISCHE MODULSPEZIFIKATION GADT IDVerwaltung; FORMALE GENERISCHE PARAMETER GENERISCHE DATENTYPEN TID; (* -- Identifikatortyp*) GENERISCHE OPERATIONEN SameSeqNr (IN Id, Id2 : TID) : BOOLEAN, SmallerSeqNr (IN Id, Id2 : TID) : BOOLEAN; (******************************************************************************************************) SCHNITTSTELLENSPEZIFIKATION EXPORTE DATENTYPEN TIDVerwaltung [TID], TID; OPERATIONEN Create : TIDVerwaltung [TID], Dispose (INOUT IV: TIDVerwaltung [TID]), HoleNeueID (INOUT IV : TIDVerwaltung [TID]) : TID, ÜberlasseAlteID (INOUT IV : TIDVerwaltung [TID]; IN ID : TID); SEMANTIK (* -- Create, Dispose mit üblicher Semantik *) HoleNeueID : Vorbed.: keine Liefert eine z.z. unbenutzte ID. Sei aktid der Rückgabeparameter, dann gilt: Nachbed.:(aktID existiert) AND (aktid NOT IN inoutiv); ÜberlasseAlteID : Vorbed.: (ID NOT IN IV) Übergibt eine z.z. unbenutzte ID an die ID-Verwaltung. Sie wird bis zur nächsten Verwendung intern gespeichert. Nachbed.:(inID IN inoutiv); (*****************************************************************************************************) RUMPFSPEZIFIKATION IMPORTE IMPORTIERE SortierteObjektliste; TIDVerwaltung [TID] =RECORD IDFolge : CARDINAL; FreieIDs [TID] : SortierteObjektliste.TSortierteObjektliste[TID]; END;...

Kurs 793 Software Engineering I Seite: 9 Prozeßspezifikation Dispose END Dispose;... Prozeßspezifikation UeberlasseAlteID END UeberlasseAlteID; SPEZIFIKATIONSENDE GENERISCHER MODUL IDVerwaltung. Abb. 4.4: Der Modul IDVerwaltung

Seite: 2 Kurs 793 Software Engineering I Aufgabe 5 ( + + 2 = 22 Punkte) Umkodierung Die in Modula-2 geschriebene Prozedur ZahlUmwandeln (Abb. 5.) wandelt eine deutsche Fließkommazahl in eine englische um und umgekehrt, indem Punkte in Kommata und Kommata in Punkte verwandelt werden. Beispiel: 2.,2 wird zu 2,.2 2,.2 wird zu 2.,2 Hinweis: Wenn ein ARRAY OF CHAR länger ist als der darin gespeicherte String, so wird das Ende des Strings durch das Zeichen CHR() markiert. PROCEDURE ZahlUmwandeln(inZahl:ARRAY OF CHAR; 2 VAR outzahl:array OF CHAR); 3 (* -- Vorbed.: HIGH(outZahl) >= HIGH(inZahl) *) 4 5 VAR 6 Index : CARDINAL; 7 8 BEGIN 9 Index := ; WHILE Index <= HIGH(inZahl) DO IF inzahl[index] =. THEN 2 outzahl[index] :=, 3 ELSIF inzahl[index] =, THEN 4 outzahl[index] :=. 5 ELSE 6 outzahl[index] := inzahl[index]; 7 END; 8 Index := Index + ; 9 END; 2 (* -- Nachbed.: Length(outZahl) = Length(inZahl) AND 2 -- in outzahl sind Punkte durch Kommata 22 -- und Kommata durch Punkte ersetzt. *) 23 END ZahlUmwandeln; Abb. 5.: Die Modula-2-Prozedur ZahlUmwandeln.

Kurs 793 Software Engineering I Seite: 2 Aufgabenstellung: a) Erstellen Sie für die Prozedur ZahlUmwandeln einen kompaktifizierten Kontrollflußgraphen. Geben Sie dabei zu jedem Knoten bzw. Block an, welche Programmzeilen von diesem Knoten bzw. Block repräsentiert werden. Dies kann z.b. in der folgenden Form geschehen: n block 57-63 Numerieren Sie die Knoten anschließend von oben nach unten durch.

Seite: 22 Kurs 793 Software Engineering I b) Testen Sie die Prozedur ZahlUmwandeln mit Hilfe des Boundary interior-pfadtests, indem Sie für jeden Testfall eine Eingabe und die erwartete Ausgabe angeben. Geben Sie zu mindestens vier Testfällen auch den Pfad (als Folge von Knotennummern) an: Eingabe Ausgabe Pfad c) Arbeitet die Prozedur ZahlUmwandeln immer fehlerfrei?