Sie sind auf Seite 1von 13

Software-Engineering WS 2020 / 2021

Prof. Dr. Th. Fuchß


Hochschule Karlsruhe – Technik und Wirtschaft
Fakultät für Informatik und Wirtschaftsinformatik
Fachgebiet Informatik
Übungsblatt (Klausurvorbereitung)

Aufgabe 1

Erklären Sie anhand der folgenden Skizze verschiedene Elemente eines Klassendiagramms.

→ Komposition ist
• Was ist der Unterschied zwischen „1“ und „2“. 1. Komposition 2. Aggregation abhängig
• Was ist „3“ und wozu wird es verwendet? 3. Qualifier
• Was unterscheidet „4“ und „5“. 4. Realisierung 5 Binly durch << birds)
.

• Um was handelt es sich bei „6“? 6. Template Parameter


• Was ist „7“ und „8“? 7. Abhängigkeit Dependency durch Stereotyp definiert
• Was unterscheidet „9“ und „10“.
8. Objekt
Propst 9.
Eigenschaft
10
Stereotyp
{ }
.

Aufgabe 2
der Klasse
. . .

Erstellen Sie zu den folgenden Sachverhalten jeweils ein Klassendiagramm, das die wesentlichen
Punkte beschreibt:

• „Der Stier springt über Stock und Stein stets ganz allein.“

• „Fischers Fritz fischt frische Fische.“

• „Menschen nutzen Sätze, um sich zu verständigen. Insbesondere bilden sie Sätze beim Spre-
chen und Schreiben. Sätze verfügen im Allgemeinen über ein Subjekt, ein Prädikat und ein
Objekt. Besondere Sätze sind Tautologien, sie sind immer wahr. Kontradiktionen dagegen
sind immer falsch und Kontingenzen sind manchmal wahr und manchmal falsch.

Seite 1
Fischer Aggregat zu Fritz
<
Ö
]t
F
t
stiert
Hinlege
a-
an

s.i.EE
?
^ .

Aufgabe 3

Stellen Sie jedes der folgenden Java-Codefragmente in einem eigenen Klassendiagrammen dar.

• class P <T> {}

¥
• class E{
public F op(){
return new F();
}
-

}

• class B extends C implements D {}

• class A implements I{
protected final S s; „
public A(){
this.s = new S(this);
}
}

Aufgabe 4

Im Rahmen der Analyse eines Bestellsystems wird folgende Gesprächsnotiz festgehalten:

„Der Kunde kommt zu uns, und zusammen mit einem Vertriebsmitarbeiter wird die Bestellung erfasst.
Dabei werden nicht nur die Kundendaten und Wünsche aufgenommen, sondern auch direkt die Bestel-
lung elektronisch aufgegeben und an die Produktion weitergegeben. Bei Bedarf wird unser elektroni-
scher Katalog eingesetzt. Typischerweise bedeutet dies, wir müssen die Adresse erfassen, prüfen, ob es
sich um einen Neukunden oder Bestandskunden handelt. Eventuell ist die Adresse abzugleichen. Dank
des elektronischen Katalogs kann jedoch sehr schnell auch auf Komponenten von Drittanbietern zu-
rückgegriffen werden, um Sonderwünsche zu berücksichtigen.“

Erstellen Sie ein Use-Case-Diagramm für das Bestellsystem, das diesen Sachverhalt modelliert.

Aufgabe 5
1. Name System 2. Akteure 3. Use Cases
Im Rahmen der Entwicklung eines firmeninternen Dokumentenmanagementsystems wird während
eines frühen Analysemeetings folgendes Statement des Produktmanagers festgehalten:

„Sobald das neue Dokumentenmanagementsystem zur Verfügung steht, wird endlich Schluss sein mit
dem Chaos. Katastrophen wie letzte Woche wird es nicht mehr geben. Alle Dokumente sind in Zukunft
sicher und klassifiziert. Es kann einfach nicht sein, dass Mitarbeiter auf Daten Zugriff gewährt wird,
die nicht für sie bestimmt sind. Wir können uns so einen Zustand einfach nicht mehr leisten. Aus die-
sem Grund muss das neue Dokumentenmanagementsystem folgende Anforderungen erfüllen:

• Jeder Mitarbeiter darf firmenöffentliche Dokumente einsehen.

• Abteilungsinterne Dokumente dürfen nur von den Mitarbeitern eingesehen werden, die zur
entsprechenden Abteilung gehören oder über die entsprechende Freigabe verfügen.

• Die Rechtezuteilung erfolgt, nachdem der Nutzer sich erfolgreich authentisiert hat, unter
Verwendung des bestehenden Rechte-Management-Servers.

• Abteilungsinterne Dokumente publizieren und bearbeiten dürfen nur Mitarbeiter der entspre-
chenden Abteilung, die als Editoren geführt sind.

Seite 2
§ ßevlellsysten

:
"

iii
5) Dokus
Ddmnek DB

sitzen
-

Däne -

niiiii
..

(
Vererbung)
• Die firmenöffentliche Freigabe eines Dokuments kann nur im Vier-Augen-Prinzip unter Mit-
wirkung eines Editors und des entsprechenden Abteilungsleiters erfolgen.“

Als Teil des Entwicklungsteams sind Sie in der Analysephase mit der Erstellung von Use-Case-
Diagrammen beauftragt. Skizzieren Sie den obigen Sachverhalt.

Aufgabe 6

Im Rahmen der Analyse einer digitalen Spiegelreflexkamera wird das folgende Use-Case-Diagramm
erstellt. Was ist in diesem Diagramm richtig und was ist falsch? Beachten Sie dabei insbesondere die
gestellte Aufgabe (Analyse einer digitalen Spiegelreflexkamera). Begründen Sie Ihre Antworten.

[Funktionalität der 1. Phase) Spiegelreflexkamera


ein Bild <<include>>

×
aufnehmen Verschluss zur
.
Bildbelichtung
öffnen
<<include>> <<extend>>×

blitzen


Verschluss
schließen
Fotograf PC

Speicherkarte Bilder auf den


wechseln PC übertragen

Aufgabe 7

Die nachfolgende Skizze zeigt ein UML Activity-Diagramm.

Kondition →

Erklären Sie einige der im Diagramm vorkommenden UML-Elemente, beantworten Sie hierzu die folgenden
Fragen:
i. (0,5 P) Was verbirgt sich hinter „1“ , „2“ und „3“? ^ split
'
2. Join 3. Decision
ii. (0,5 P) Was trennt „4“? die zwei Swim " µ Abgrenzung
.
der Swim ""
ist eine Action
iii.
iv.
(0,5 P) Worin unterscheiden sich „5“, „6“ und „7“?
(0,5 P) Was unterscheidet „8“ und „9“?
6. viele
dito 7. Objekt kneten
8. lokales Ende
9. globales Ende
Seite 3
Aufgabe 8

Im Rahmen der Analyse des Use Case „Zwischenergebnisse erfassen“, für die mobile Erweiterung
„MyArcheryTournamentAPP“ eines Turnierplanungssystems wird das folgende Activity-Diagramm
erstellt. Bestimmen Sie die sich aus dem Diagramm ergebende funktionale Schnittstelle.

Welche für die App zu erwartenden System-Operationen können Sie diesem Diagramm entnehmen?
Skizzieren Sie hierzu ein System-Sequenz-Diagramm.

O
:
Seite 4

s ①

÷:
:
1. ergebnisseerfassen

÷:*
::֟րh
Aufgabe 9
Skizzieren Sie die folgenden Elemente eines UML-Component-Diagramms und erklären Sie kurz,
wozu man sie verwendet.

a) Eine Komponente A mit Port p, an dem das Interface I bereitgestellt wird.


b) Zwei Komponenten A und B, die beide an definierten Ports ein Interface I bereitstellen, wobei A
dies über einen Delegation-Konnektor von B bezieht.
c) Zwei Komponenten A und B, die über einen Assembly-Konnektor verbunden sind. Das verbinden-
de Interface I wird von B bereitgestellt und von A benutzt.

Aufgabe 10
Zur Trennung von User-Interface und Business-Logik wird oftmals auf das MVC-Pattern zurückge-
griffen.

a) Beschreiben Sie die Aufgaben von Model, View und Controller.


b) Vervollständigen Sie nachfolgendes Klassendiagramm, bestehend aus Subject, Observer und Mo-
del. (Welche Klassen sind abstrakt, welche sind konkret, wobei handelt es sich um ein Interface,
welche Beziehungen existieren, ...?)
Subject Model Observer

c) Ordnen Sie alle Klassen aus b) (auch die, die Sie hinzugefügt haben) der jeweiligen Schicht zu, zu
der sie gehören (Business-Logik, User-Interface).
d) Beschreiben Sie mithilfe eines Sequenz-Diagramms einen typischen Ablauf, der sich in Folge einer
Benutzereingabe ergibt.

Aufgabe 11
Gegeben sei folgende Struktur einer verketteten Liste:

insert() fügt einen neuen Wert ein


Elem() Konstruktor der Klasse Elem
setBase() setzt das Anfangselement
setNext() setzt das nächste Element
Klient getNext() selektiert das nächste Element
next

0..1

List Elem
base
+insert(Value v) :void +setNext(Elem e):void
+setBase(Elem e) :void 0..1 +getNext():Elem
<<constructor>>
+Elem(Value v)

1
Value
Skizzieren Sie das Einfügen eines neuen Wertes X (Instanz der Klasse Value) in eine verkettete Liste
durch Anhängen am Anfang der Liste. Vervollständigen Sie hierzu das folgende Sequenzdiagramm.

:List

insert(x)

Seite 5
i

ä:

Elend) es
-4
:

| ¥]"
t.EE] base 4)

etbasele )


Aufgabe 12

Gegeben seien die folgenden Teile der Spezifikation und Implementierung einer Queue (FIFO).

a) Vervollständigen Sie das nachfolgende Design und spezifizieren Sie die Operation write der Klas-
se FIFO mithilfe eines Sequenzdiagramms.

b) Vervollständigen Sie die Implementierung der Klasse FIFO, indem Sie die Methoden read und
write implementieren. Nutzen Sie hierzu Ihr Design aus Teil a).
write fügt einen neuen Wert hinten in den FIFO ein
read liest den vordersten Wert des FIFO aus und entfernt ihn
empty prüft, ob der FIFO leer ist

setSucc setzt das nachfolgende Element


getSucc selektiert das nachfolgende Element
getValue liefert den Wert des Elements

Elem erzeugt ein neues Element mit entsprechendem Wert

1
Value
-value

1
-first -succ
FIFO Elem
0..1
1 0..1

+write (v : Value) + getSucc():Elem


+read () : Value -last + setSucc(e:Elem)
+empty () : boolean + getValue():Value
1 0..1 <<constructor>>
+ Elem(v:Value)

sd read() : Value

: FIFO first:Elem
-first : Elem
read()

v := null
empty()
res = empty()

opt getValue()

[ not res] v =getValue()

getSucc()

first =getSucc()

setSucc(null)

read():v

Seite 6
'

t
äfft :
.

i:/ jt-last.ee

H
):
class FIFO {
private Elem first;
private Elem last;

public boolean empty(){


return this.first == null;
}
private void setFirst(Elem e){
this.first = e;
}
private void setLast(Elem e){
this.last = e;
}

public void write(Value v){


/*
hier ergänzen
*/
}

public Value read(){


/*
hier ergänzen
*/
}
}

Seite 7

Das könnte Ihnen auch gefallen