WEBVTT

00:04.280 --> 00:08.740
Sie haben eine Aktion, die in mehreren anderen Aktionen mitbenutzt

00:08.740 --> 00:09.000
wird.

00:09.480 --> 00:12.740
Also gewissermaßen, wenn Sie eine Übung halten, da dürfen Sie Fragen

00:12.740 --> 00:13.140
stellen.

00:13.580 --> 00:16.260
Und wenn Sie nicht vorlesen halten, dürfen Sie natürlich auch Fragen

00:16.260 --> 00:16.580
stellen.

00:16.920 --> 00:21.040
Wenn das Fragen stellen eine eigene Aktion wäre, dann würde ich das

00:21.040 --> 00:23.820
herausziehen und in dieser Art und Weise beschreiben.

00:24.600 --> 00:29.820
Das heißt also, der Pfeil geht immer dahin, wo ein Teil mitbenutzt

00:29.820 --> 00:30.060
wird.

00:30.060 --> 00:35.380
Man könnte auch sagen, es ist eine Bestandshierarchie.

00:36.100 --> 00:39.880
Das kann man natürlich auch über mehrere Ebenen beschreiben, aber

00:39.880 --> 00:45.200
wichtig ist, dass ich nicht alles wiederholt mehrfach beschreiben

00:45.200 --> 00:48.060
muss, wenn es an verschiedenen Stellen vorkommt.

00:50.420 --> 00:52.780
Jetzt sehen wir uns die textuelle Beschreibung an.

00:52.920 --> 00:55.820
Die textuelle Beschreibung sagt, das ist an der Stelle Hausarbeit.

00:57.480 --> 01:00.380
Ein Anwendungsfall, ein Teilnehmer, der Akteur ist der Student.

01:02.620 --> 01:04.340
Eingangsbedingung, Student hält Übungsblatt.

01:05.120 --> 01:07.260
Student ist gesund, sonst kann er nichts machen.

01:07.920 --> 01:09.520
Ausgangsbedingung, Student gibt Lösung ab.

01:09.900 --> 01:11.000
Das ist eigentlich relativ klar.

01:11.400 --> 01:12.640
Und der Ereignisschluss steht hier.

01:13.120 --> 01:15.760
Student holt aktuelles Übungsblatt ab, liest sich Aufgaben durch, löst

01:15.760 --> 01:18.420
die Aufgaben, gibt sie in den Rechner ein, drückt die Lösung aus, gibt

01:18.420 --> 01:18.960
die Lösung ab.

01:20.380 --> 01:22.160
Spezielle Anforderungen haben wir hier keine.

01:23.440 --> 01:25.800
Fällt mir keine ein, aber vielleicht fällt Ihnen eine ein.

01:28.640 --> 01:29.860
So einfach ist es.

01:31.360 --> 01:37.380
Die Syntax, wie man das beschreibt, ist ziemlich einfach.

01:38.040 --> 01:40.760
Das ist in der Programmiersprache ein viel komplexeres Tier.

01:41.500 --> 01:44.920
Das Problem ist hier nicht so sehr die Syntax zu beherrschen, sondern

01:44.920 --> 01:47.560
tatsächlich die Aufgabenbeschreibung zu finden.

01:50.700 --> 01:56.740
Ich gebe Ihnen jetzt ein Beispiel aus dem Praxium der

01:56.740 --> 01:59.260
Softwareengineering, das eine Gruppe Studenten gemacht hat.

01:59.360 --> 02:00.960
Das war etwas Außergewöhnliches.

02:02.480 --> 02:05.040
Und zwar geht es dabei um Abgastests.

02:05.960 --> 02:09.860
Sie wissen ja, dass es diesen Skandal gab oder gibt über gefälschte

02:09.860 --> 02:10.560
Abgaswerte.

02:11.360 --> 02:19.240
Daraufhin hat die Europäische Union sogenannte Real Driving Emissions

02:19.240 --> 02:20.460
Tests definiert.

02:20.920 --> 02:28.060
RDE heißt also Real Driving Emissions oder echte Abgasmessungen.

02:28.720 --> 02:33.160
Das geht so, dass man an das Fahrzeug hintendran so ein Huckepack

02:33.160 --> 02:33.980
Rucksack hängt.

02:34.440 --> 02:35.280
Das ist ein Messgerät.

02:36.140 --> 02:39.720
Die Kiste ist mit dem Auspuff verbunden und kann eine große Zahl von

02:39.720 --> 02:42.240
Messungen vornehmen, während das Auto fährt.

02:43.280 --> 02:46.800
Aber dann kann ich natürlich auf der Straße messen und nicht nur im

02:46.800 --> 02:47.060
Labor.

02:47.180 --> 02:51.780
Das ist schon mal die Grundvoraussetzung, damit ich diese Tricks mit

02:51.780 --> 02:53.040
dem Labor nicht mehr machen kann.

02:53.740 --> 02:57.480
Nur, wie soll ich jetzt Fahrten vergleichen?

02:59.040 --> 03:04.160
Also ich könnte mir vorstellen, dass eine Firma ganz reell fährt hier

03:04.160 --> 03:08.640
irgendwo um Karlsruhe rum und sagt, ich bin 120 Kilometer gefahren,

03:09.180 --> 03:12.220
der Ausstoß der Emissionen ist so und so viel.

03:12.340 --> 03:15.520
Wunderbar, dann gibt es aber eine andere Firma, die fährt erstmal den

03:15.520 --> 03:18.500
Großglockner hoch und dann fährt es nur noch bergab, während sie

03:18.500 --> 03:18.880
misst.

03:19.760 --> 03:22.960
Da braucht es natürlich kaum Benzin und die Startstoffwerte wären

03:22.960 --> 03:23.260
super.

03:23.880 --> 03:26.700
Also wir brauchen vergleichbare Routen.

03:28.060 --> 03:31.580
Und wir können aber nicht alle Fahrzeuge, die es gibt, auf der

03:31.580 --> 03:32.700
gleichen Route messen.

03:33.380 --> 03:36.340
Beispiel Nürburgring oder hier in der Stadt oder sowas, das ginge auch

03:36.340 --> 03:36.580
nicht.

03:36.920 --> 03:39.420
Wir brauchen unterschiedliche, aber vergleichbare Routen.

03:39.960 --> 03:43.340
Was sich die Kommission jetzt ausgedacht hat, ist, ich gebe Ihnen

03:43.340 --> 03:48.120
einen Prozentsatz vor, nämlich wie lange es dauern soll, zwei Stunden

03:48.120 --> 03:53.240
sagen wir, auf welcher Meereshöhe der Test laufen darf, wie stark sich

03:53.240 --> 03:54.840
die Höhendifferenz auswirken darf.

03:55.020 --> 04:03.560
Man darf dann nicht mehr als 100 Höhenmeter Differenz haben während

04:03.560 --> 04:04.520
der Fahrt.

04:05.000 --> 04:07.060
Da geht also ein dauerndes Bergabfahren nicht.

04:08.080 --> 04:13.320
Und der Anteil an Stadtstraßen, Landstraßen und Autobahnen ist

04:13.320 --> 04:13.820
vorgegeben.

04:13.820 --> 04:17.220
Also Sie kriegen eine Vorgabe, die sagt, Sie brauchen zwischen, ich

04:17.220 --> 04:21.080
weiß jetzt nicht, was die Daten sind, 25 bis 35 Prozent Stadtverkehr.

04:21.620 --> 04:31.900
Sie brauchen 20 bis 30 Prozent Landstraße und den Rest Autobahn.

04:32.080 --> 04:36.240
Es ist nicht exakt eine Prozentzahl, sondern immer ein Bereich.

04:38.380 --> 04:42.680
Und jetzt ist das Problem, wie finde ich solche Straßen?

04:43.840 --> 04:45.260
Wie finde ich solche Straßen?

04:46.700 --> 04:48.100
Das ist kein Navigationsproblem.

04:48.260 --> 04:50.560
Sie haben nämlich keine Vorgabe, die sagt, von A nach B fahren,

04:50.680 --> 04:54.460
sondern Sie sagen, ich bin hier, was weiß ich, am Fasanengarten oder

04:54.460 --> 04:57.120
hier in der Nähe der Uni oder am Dollacher Tor und jetzt brauche ich

04:57.120 --> 05:01.120
so eine RDI-Route, die bestimmte Prozentzahl an Dingen einhält, an

05:01.120 --> 05:01.920
Straßen einhält.

05:02.240 --> 05:03.300
Wie finde ich denn so eine Route?

05:04.860 --> 05:07.120
Das ist den Studenten eingefallen.

05:08.420 --> 05:11.900
Und die haben also das Problem formuliert, so ungefähr wie ich es

05:11.900 --> 05:12.760
Ihnen jetzt auch sage.

05:13.420 --> 05:16.580
Ich muss Routen finden, die bestimmte Bedingungen einhalten, nämlich

05:16.580 --> 05:18.940
der Anteil an Typen von Straßen.

05:20.080 --> 05:21.640
Höhendifferenz muss eingehalten werden.

05:22.340 --> 05:27.240
Die Start- oder die Meereshöhe des Testes überhaupt muss festgelegt

05:27.240 --> 05:29.900
sein, muss in dem vorgeschriebenen Bereich liegen.

05:34.780 --> 05:37.580
Wenn Sie das per Hand machen wollten, können Sie sich vorstellen, wie

05:37.580 --> 05:38.380
aufwendig das ist.

05:38.580 --> 05:42.880
Sie müssen gewissermaßen jeden Streckenabschnitt von einer Kreuzung

05:42.880 --> 05:44.580
zur nächsten, die Länge wissen.

05:44.840 --> 05:47.420
Sie müssen seine Steigung kennen, die Meereshöhe kennen.

05:48.280 --> 05:50.660
Und wenn Sie an der Kreuzung sind, haben Sie wahrscheinlich noch drei

05:50.660 --> 05:52.260
Möglichkeiten, um zu fahren.

05:52.620 --> 05:53.900
Die müssen Sie jetzt alle durchprobieren.

05:54.280 --> 05:57.000
Versuchen Sie sich da mal so eine Route zu finden, die die Bedingungen

05:57.000 --> 05:57.340
erfüllt.

05:59.040 --> 06:03.080
So, was haben sich die Studenten ausgedacht und entsprechend

06:03.080 --> 06:03.640
beschrieben?

06:04.780 --> 06:06.140
Den Anwendungsfall.

06:06.240 --> 06:07.580
In diesem Fall gibt es nur einen.

06:08.420 --> 06:11.120
Es gibt noch zwei kleinere Anwendungsfälle.

06:11.260 --> 06:13.840
Der eine ist, die gefundene Route exportieren.

06:15.820 --> 06:19.840
Oder die Route auf ein Navigationsgerät runterzuladen.

06:20.580 --> 06:24.100
Das fährt dann irgendwo durch die Gegend, endet irgendwo in der Pampa,

06:24.100 --> 06:26.260
oder an der Autobahn oder sonst wo.

06:27.360 --> 06:29.600
Aber nicht am Ausgangspunkt zum Beispiel.

06:30.020 --> 06:33.320
Und das nächste Problem war dann auch noch Routen zu finden, die an

06:33.320 --> 06:34.560
den Ausgangspunkt zurückkehren.

06:36.260 --> 06:41.980
Okay, das wäre so ein Beispiel, dass man eben was wissen muss, bis man

06:41.980 --> 06:47.780
das Problem gut beschreiben kann.

06:49.440 --> 06:50.880
So, was machen wir jetzt noch?

06:53.200 --> 06:58.200
Achso, unser Beispiel, das Vorfall melden, könnten wir auch noch als

06:58.200 --> 07:00.500
ein Anwendungsfalldiagramm zeichnen.

07:01.320 --> 07:03.820
Nämlich, da gibt es einen Polizisten, einen Disponent, der macht die

07:03.820 --> 07:05.060
Funktion Melden Vorfall.

07:05.720 --> 07:09.440
Und der Disponent öffnet einen Vorfall, das gab es, das ist passiert.

07:10.300 --> 07:12.120
Feuer oder Einbruch oder sonst was.

07:12.120 --> 07:16.760
Oder er fordert Ressourcen an, die Ressourcen können, wie gesagt,

07:20.380 --> 07:25.500
die Feuerwehr sein oder weitere Polizisten oder Sanker oder

07:25.500 --> 07:26.820
Wasserholtanfänger.

07:26.960 --> 07:28.300
Ich weiß nicht, was da noch alles gibt.

07:29.320 --> 07:30.580
So würde das aussehen.

07:33.880 --> 07:34.920
Wahr oder falsch?

07:35.100 --> 07:38.080
Szenarien können nach Abschluss der Planungsphase weggeworfen werden,

07:39.320 --> 07:42.100
da sie ein Anwendungsfalldiagramm festgehalten sind.

07:42.360 --> 07:47.720
Szenarien wegschmeißen, wenn ich Anwendungsfalldiagramme draus gemacht

07:47.720 --> 07:48.100
habe.

07:49.560 --> 07:51.320
Würden Sie Szenarien wegschmeißen?

07:53.080 --> 07:54.540
So würden Sie sagen, wer ist für Nein?

07:56.800 --> 07:57.960
Wer ist für Weg damit?

08:00.040 --> 08:01.520
Die Neinen haben recht, das ist klar.

08:01.840 --> 08:05.100
Das würden Sie nie wegschmeißen, weil in dem Anwendungsfall,

08:05.100 --> 08:08.980
Entschuldigung, in der Szenarienbeschreibung möglicherweise Details

08:08.980 --> 08:11.220
stehen, die im Anwendungsfalldiagramm nicht mehr auftauchen.

08:12.300 --> 08:16.260
Ach so, der Szenario basiert den Turf, wo ich einen ganz konkreten

08:16.260 --> 08:19.320
Ablauf beschreibe, kann nur eingesetzt werden, wenn man einen Kunden

08:19.320 --> 08:19.800
hat.

08:20.440 --> 08:22.780
Denn sonst ist das Diskutieren unmöglich.

08:24.420 --> 08:26.140
Wenn Sie sagen, ich brauche immer einen Kunden.

08:27.780 --> 08:28.400
Wer ist für Nein?

08:29.760 --> 08:30.580
Wer ist für Ja?

08:33.340 --> 08:35.020
Nein, den Kunden brauchen Sie nicht immer.

08:35.460 --> 08:36.940
Sie müssen ihn aber dann irgendwie simulieren.

08:37.040 --> 08:38.840
Sie müssen sich vorstellen, was gemacht werden muss.

08:39.400 --> 08:42.280
Der Kunde ist natürlich besser, denn der weiß es.

08:45.020 --> 08:48.640
Wenn ich mir denke, ich müsste eine Buchungssoftware schreiben, dann

08:48.640 --> 08:55.920
müsste ich wohl auch erst einen Kurs nehmen, wie verbucht man in einem

08:55.920 --> 08:59.020
Geschäft einzelne Zahlungen und Zahlungseingänge usw.

08:59.020 --> 09:02.980
und die Löhne und die Steuern.

09:03.840 --> 09:07.460
Es ist sehr umfangreich und ich habe keine Ahnung, was es da alles

09:07.460 --> 09:07.680
gibt.

09:08.180 --> 09:11.240
Das müsste ich mir entweder sagen lassen von einem Steuerberater oder

09:11.240 --> 09:12.520
ich muss einen entsprechenden Kurs besuchen.

09:13.920 --> 09:17.160
So, wie findet man jetzt Anwendungsfälle?

09:17.860 --> 09:21.540
Da gibt es folgende, eigentlich wieder offensichtliche Methoden.

09:21.860 --> 09:23.960
Man nimmt einen vertikalen Ausschnitt des Systems.

09:24.680 --> 09:27.980
Man sagt, man geht von Anfang bis in das Tiefen des Systems hinunter

09:27.980 --> 09:32.360
mit allen Funktionen durch und diskutiert im Detail mit dem Benutzer,

09:33.040 --> 09:35.520
um den Interaktionsstil zum Beispiel herauszufinden.

09:36.240 --> 09:40.420
Oder man nimmt einen horizontalen Ausschnitt, man nimmt viele mögliche

09:40.420 --> 09:44.420
Anwendungen gleichzeitig, reißt sie gewissermaßen auseinander, um

09:44.420 --> 09:47.880
einen größeren Bereich des Systems zu definieren und diskutiert diesen

09:47.880 --> 09:48.980
Bereich mit dem Benutzer.

09:52.000 --> 09:56.100
Okay, das wird Ihnen jetzt vielleicht nicht sehr viel helfen, wenn man

09:56.100 --> 09:57.640
das nicht einmal durchprobiert hat.

09:58.920 --> 10:02.640
Schließlich ist auch noch eine gute Hilfe der sogenannte Prototyp.

10:03.820 --> 10:04.620
Was heißt sogenannt?

10:04.660 --> 10:08.060
Ein Prototyp oder ein Mockup zur visuellen Unterstützung.

10:10.180 --> 10:16.400
Das kann so einfach sein, dass Sie einen Block Papier hernehmen und

10:16.400 --> 10:19.940
auf dem Block Papier die grafische Benutzerschnittstelle skizzieren.

10:20.140 --> 10:23.120
Also hier haben wir ein Fenster, da stehen die und die Einträge,

10:23.120 --> 10:28.320
Entnahme, Vorname, Geburtsdatum, Adresse und von wo nach wo Sie

10:28.320 --> 10:29.440
hinwollen oder so etwas.

10:29.960 --> 10:31.340
Würde Sie das tun?

10:31.420 --> 10:32.580
Würden Sie damit alles angeben?

10:32.980 --> 10:34.800
Und fragen den Benutzer auf diese Art und Weise.

10:34.980 --> 10:37.560
Er sagt, ja, aber dann muss ich auch noch Folgendes angeben.

10:37.940 --> 10:42.540
Ich bin Vegetarier und da muss ich noch irgendwie einen Sonderfall

10:42.540 --> 10:45.820
einbauen, einen zweiten Bildschirm aufmachen und sagen, okay, da kommt

10:45.820 --> 10:46.800
jetzt ein zweiter Bildschirm.

10:46.800 --> 10:54.020
Da können Sie angeben, welche Besonderheiten Sie beim Essen zu

10:54.020 --> 10:54.640
beachten wären.

10:57.300 --> 10:59.900
Wie gesagt, ich brauche da keinen Prototyp zu programmieren.

11:00.040 --> 11:01.800
Das Einfachste ist einfach, das Ding zu zeichnen.

11:01.980 --> 11:05.200
Das geht viel schneller, als wenn ich Prototypen programmieren will.

11:05.620 --> 11:09.480
Kann ich natürlich auch machen, aber wie gesagt, lohnt sich nur, wenn

11:09.480 --> 11:14.380
die Funktionen etwas komplexer sind.

11:17.040 --> 11:19.200
Okay, das sind hinter uns.

11:21.200 --> 11:24.000
Man muss also im Wesentlichen herausfinden, was der Benutzer tut.

11:24.580 --> 11:26.720
Entweder man beobachtet ihn oder man befragt ihn.

11:27.380 --> 11:30.220
Da bekommt man manchmal ungenaue Antworten, das zeige ich Ihnen gleich

11:30.220 --> 11:31.820
später, was da passieren kann.

11:32.580 --> 11:35.700
Suche alle Anwendungsfälle im Szenario, die alle Instanzen angeben,

11:35.740 --> 11:36.820
wie man vorher melden kann.

11:36.940 --> 11:38.840
Beispiel Meldenotfall im ersten Absatz.

11:39.440 --> 11:41.520
Das ist ein Kandidat für einen Anwendungsfall.

11:42.380 --> 11:44.980
Beschreibe jedem dieser Anwendungsfälle so genau wie möglich.

11:46.060 --> 11:47.280
Teilnehmende Akteure.

11:47.460 --> 11:49.900
Beschreibe die Eingangsaktionen, den Ereignisfluss, die

11:49.900 --> 11:53.400
Ausgangsaktionen, die Ausnahmen und die nicht funktionalen

11:53.400 --> 11:53.900
Anforderungen.

11:54.360 --> 11:57.920
So, das ist jetzt wieder ein Beispiel.

11:58.440 --> 12:00.240
Ereignisfluss kommt in der nächsten Methode.

12:01.160 --> 12:05.200
Das Ding von Brügge heißt zum Beispiel Friends, so nannte er das.

12:08.080 --> 12:13.400
So, Anwendungsfall Meldenotfall.

12:13.400 --> 12:17.800
Ich bekomme zuerst ein Antwort, in dem es ein Formular anzeigt.

12:18.080 --> 12:19.320
Der Polizist füllt das Formular aus.

12:19.400 --> 12:20.860
Das sind jetzt alle zusammengefasst.

12:21.220 --> 12:25.360
Dem er die Notfallstufe, den Einsatzort, die Adresse sowie eine kurze

12:25.360 --> 12:26.840
Beschreibung der Situation eingibt.

12:26.920 --> 12:30.340
Der Polizist beschreibt ebenfalls eine Reaktion auf die

12:30.340 --> 12:33.660
Notfallsituation, wenn es eine gibt.

12:35.000 --> 12:37.760
Der Exponent erstellt einen Vorfall in der Datenbank durch Aufrufen

12:37.760 --> 12:38.540
des Anwendungsfalls.

12:38.800 --> 12:39.560
Öffne Vorfall.

12:40.440 --> 12:42.920
Er wählt eine Reaktion und bestätigt die Meldung.

12:43.960 --> 12:46.660
Der Polizist empfängt die Bestätigung und wählt die Reaktion.

12:47.040 --> 12:52.440
Das wäre also die textuelle Beschreibung dieses Meldevorfalls.

12:53.580 --> 12:56.800
Das geht jetzt noch weiter, aber wie gesagt, das wird jetzt in der

12:56.800 --> 12:59.440
Vorlesung ein bisschen langweilig, das immer detailliert zu

12:59.440 --> 12:59.880
besprechen.

13:00.720 --> 13:02.900
Darum überlasse ich es Ihnen, dass Sie das lesen.

13:05.020 --> 13:10.140
Und wie gesagt, studieren Sie die Beispiele durch im Brücke-Buch.

13:10.460 --> 13:11.580
Das haben wir auch schon gehabt.

13:11.980 --> 13:13.580
Probleme der Anforderungsermittlung.

13:14.340 --> 13:16.160
Da kommen wir noch dazu.

13:17.920 --> 13:23.120
Das eine ist, falls wir ein seichtes Bereichswissen haben, wenn das

13:23.120 --> 13:26.520
Wissen, wie etwas gemacht wird, über viele Quellen verteilt wird, die

13:26.520 --> 13:28.360
es von diversen Spezialisten gibt.

13:29.000 --> 13:30.920
Die sind selten explizit festgehalten.

13:30.920 --> 13:34.260
Das heißt, der Einzelne weiß vom ganzen Amtssystem nichts.

13:35.220 --> 13:36.120
Weiß jedenfalls nicht alles.

13:36.940 --> 13:41.900
Die verschiedenen Quellen können sich jetzt widersprechen, denn die

13:41.900 --> 13:44.760
Betroffenen haben unterschiedliche Ziele, haben unterschiedliches

13:44.760 --> 13:46.360
Problemverständnis.

13:48.400 --> 13:50.860
Und dann das größte Problem ist das stillschweigende Wissen.

13:51.360 --> 13:54.980
Die Leute können gar nicht sagen, was sie sagen sollten, weil sie es

13:54.980 --> 13:58.700
irgendwie internalisiert haben und nicht mehr konkret beschreiben

13:58.700 --> 13:59.040
können.

13:59.040 --> 14:01.740
Wissen, das man tagtäglich nutzt.

14:06.240 --> 14:07.260
Beschränkte Beobachtbarkeit.

14:07.740 --> 14:09.320
Es gibt diese Betriebsblindheit.

14:09.460 --> 14:12.740
Die Einzelnen wissen nicht genau, was dahinter steckt, können sich

14:12.740 --> 14:17.280
eine andere Verarbeitung nicht vorstellen und die Gegenwart des

14:17.280 --> 14:19.020
Beobachters verändert das Verhalten.

14:19.160 --> 14:22.600
Gelegentlich kommen sie ein bisschen ins Schwitzen, werden gestresst,

14:22.980 --> 14:25.280
werden gestört und ändern ihr Verhalten.

14:26.120 --> 14:27.680
Arbeiten also ein bisschen anders.

14:30.060 --> 14:32.900
Und schließlich gibt es das Problem der Verzerrung.

14:34.220 --> 14:38.580
Die Betroffenen, die sie befragen, geben ihnen manchmal nicht die

14:38.580 --> 14:39.480
wirklichen Richtlinien.

14:40.520 --> 14:43.900
Entweder weil es am politischen Klima nicht korrekt ist, dass man

14:43.900 --> 14:44.680
nichts sagen darf.

14:45.620 --> 14:47.180
Oder organisatorische Faktoren.

14:47.320 --> 14:50.300
Sie verhindern das zu sagen, was sie gerne sagen würden oder könnten.

14:51.540 --> 14:54.580
Sie haben außerdem Angst vor der Wegrationalisierung.

14:54.580 --> 14:57.080
Stellen Sie sich vor, Sie kommen da rein und sagen, hallo, ich bin

14:57.080 --> 15:00.160
Herr so und so, ich soll für Sie ein System bauen, das in Zukunft Ihre

15:00.160 --> 15:00.980
Arbeit übernimmt.

15:02.540 --> 15:03.680
Dann haben Sie schon verloren.

15:04.200 --> 15:05.660
Da würde Ihnen keiner helfen wollen.

15:08.480 --> 15:09.940
Deswegen ist das zu beachten.

15:11.820 --> 15:15.060
Betroffene versuchen, den Anforderungs- für ihre eigenen Zwecke zu

15:15.060 --> 15:16.020
instrumentalisieren.

15:16.280 --> 15:19.340
Zum Beispiel, indem sie mehr Befugnisse bekommen.

15:19.460 --> 15:22.140
Sagen, ich mache das und mache das und mache das und gebe auch noch

15:22.140 --> 15:23.720
das Okay und die Unterschrift usw.

15:23.720 --> 15:25.680
Was in Wirklichkeit gar nicht der Fall ist.

15:26.160 --> 15:30.320
Könnten Sie zum Beispiel versuchen, also den Beobachter für Ihre

15:30.320 --> 15:34.500
eigenen Zwecke und Wünsche missbrauchen oder beeinflussen.

15:35.560 --> 15:36.900
Da muss man alles bedenken.

15:40.960 --> 15:44.860
Vielleicht komme ich da heute noch weiter.

15:45.520 --> 15:49.780
Hier kommt ein ganz einfaches Beispiel für Missverständnisse.

15:50.700 --> 15:53.100
Das ist eines dieser bekannten Beispiele.

15:53.100 --> 15:59.680
Ein Laser-Experiment sollte zur Raumfähre geschickt werden und dort

15:59.680 --> 16:00.580
auf den Spiegel treffen.

16:02.000 --> 16:05.080
Es wurde erwartet, dass der Strahl zu der Spitze eines Berges in der

16:05.080 --> 16:07.520
Höhe von 10.000 Fuß reflektiert wird.

16:09.600 --> 16:10.500
In etwa.

16:11.260 --> 16:15.040
Der Verantwortliche gab die Höhe als 10.023 ein.

16:16.080 --> 16:18.480
Der Laserstrahl traf aber nie die Spitze des Berges.

16:19.360 --> 16:20.760
Was war falsch mit der Software?

16:20.760 --> 16:23.200
Das Problem war ein Einheitenproblem.

16:23.620 --> 16:27.280
Der Rechner oder der Programmierer hatte die Daten als Meilen

16:27.280 --> 16:30.440
interpretiert und so einen hohen Berg gibt es hier nicht.

16:35.140 --> 16:36.280
Unbeabsichtigte Funktion.

16:37.320 --> 16:39.020
Das ist auch ein tatsächlicher Fall.

16:39.360 --> 16:42.320
In London verlässt eine U-Bahn die Station ohne Zugführer.

16:42.980 --> 16:45.580
Das ist vielleicht heute nicht mehr so dramatisch, weil man dann

16:45.580 --> 16:47.200
denkt, das ist eh automatisch.

16:47.680 --> 16:51.380
Aber damals, jedenfalls auch heute noch in London, fahren die Züge

16:51.380 --> 16:52.040
noch mit Fahrer.

16:53.880 --> 16:57.420
Jedenfalls stellen Sie sich vor, was passiert.

16:57.860 --> 16:59.300
Eine Fahrgasttür hing fest.

17:00.020 --> 17:00.980
Wollte sie nicht schließen.

17:01.440 --> 17:04.700
Der Zugführer verließ den Zug, um die Tür zu schließen.

17:04.820 --> 17:08.620
Der ließ die Fahrertür offen, wissend, dass wenn eine Tür offen ist,

17:08.680 --> 17:09.380
der Zug nicht fährt.

17:09.540 --> 17:11.300
Deswegen konnte er schon von vornherein nicht fahren.

17:11.300 --> 17:17.580
Also, die Gäste raus und gibt der Tür einen Tritt.

17:17.940 --> 17:20.680
Die Tür schließt sich und der Zug fährt ab.

17:21.720 --> 17:22.680
Was war das Problem?

17:23.180 --> 17:26.160
Die Fahrertür war im Steuerprogramm nicht das Tür verzeichnet.

17:27.700 --> 17:30.680
Sonderfall andere, keine Fahrgasttür.

17:31.380 --> 17:33.180
Und damit entstand dieses Problem.

17:35.040 --> 17:37.960
Jetzt kommen wir zum nächsten Problem.

17:38.680 --> 17:40.100
Oder zum nächsten Punkt.

17:40.100 --> 17:45.480
Das heißt, wenn man diese Anforderungen erst mal als textuell,

17:45.720 --> 17:50.100
informell oder mit UML-Anwendungsdiagrammen aufgeschrieben hat,

17:50.540 --> 17:51.900
erstmal die Dinge auch analysieren.

17:53.140 --> 17:56.160
Die Anforderungsspezifikation nimmt also jetzt die natürliche Sprache

17:56.160 --> 17:56.440
her.

17:57.000 --> 18:01.500
Das Analyse-Modell kann mit natürlicher Sprache meist wenig

18:01.500 --> 18:02.760
durchführen.

18:04.780 --> 18:07.140
Es braucht also jetzt formale Modelle.

18:07.140 --> 18:10.500
Einige dieser formalen Modelle werden wir später noch einführen.

18:11.840 --> 18:16.940
Ein Anwendungsfall-Diagramm ist kein formales Modell, dass ein Analyse

18:16.940 --> 18:18.840
-Programm irgendetwas damit anfangen könnte.

18:21.260 --> 18:25.040
Jetzt schauen wir uns mal noch generell die Anforderungen an.

18:25.440 --> 18:28.560
Eigentlich wissen wir das schon aus der Definition der Software

18:28.560 --> 18:29.020
-Technik.

18:29.480 --> 18:31.880
Wir brauchen zunächst mal funktionale Anforderungen.

18:32.040 --> 18:35.180
Sie erinnern sich, Software-Technik ist die organisatorische,

18:35.180 --> 18:41.080
technologische Disziplin, um Systeme systematisch zu erstellen und zu

18:41.080 --> 18:45.660
erwarten und die die vorgegebene Anforderungen, nämlich nicht

18:45.660 --> 18:47.460
-funktional und funktionale Anforderungen erfüllt.

18:47.760 --> 18:49.820
Jetzt schauen wir uns mal die nicht-funktionalen und nicht

18:49.820 --> 18:50.920
-funktionalen Anforderungen an.

18:51.620 --> 18:55.920
Also die beschreiben jetzt die Interaktion zwischen dem System und der

18:55.920 --> 18:58.240
Systemumgebung, unabhängig von der Implementierung.

18:59.720 --> 19:01.620
Das ist eine funktionale Anforderung.

19:02.040 --> 19:09.760
Eine nicht-funktionale Anforderung, das sind Aspekte, die zum Beispiel

19:09.760 --> 19:12.960
die Antwortzeit beschreiben oder die Zuverlässigkeit.

19:13.640 --> 19:19.040
Also nicht die Funktionalen, sondern die etwas sagen über wie gut oder

19:19.040 --> 19:24.200
schlecht oder wie zuverlässig die Funktionen ausgeführt werden sollen.

19:25.920 --> 19:28.460
Oder auch innere Qualitäten der Software, das hatten wir auch schon

19:28.460 --> 19:28.940
mal besprochen.

19:32.100 --> 19:34.140
Es kann auch noch Einschränkungen geben.

19:35.460 --> 19:38.900
Zum Beispiel könnte der Kunde es aber in Java implementiert haben,

19:38.960 --> 19:40.600
damit ich später selbst warten kann.

19:41.960 --> 19:43.620
Das kann eine Einschränkung sein.

19:43.900 --> 19:46.660
Normalerweise würde aber ein Kunde das nicht vorschreiben.

19:48.520 --> 19:51.660
Funktional beschreiben Benutzeraufgaben, die das System unterstützen

19:51.660 --> 19:53.640
muss, werden als Aktionen formuliert.

19:53.780 --> 19:57.100
Benachrichtige zum Beispiel Interessenten, melde Vorfallen, erstelle

19:57.100 --> 19:57.860
eine neue Tabelle.

19:57.860 --> 20:01.620
Nicht Funktional beschreiben Eigenschaften des Systems oder der

20:01.620 --> 20:04.880
Domäne, werden als Einschränkungen oder Zusicherungen formuliert.

20:05.500 --> 20:08.740
Jede Benutzereingabe muss in weniger als einer Sekunde erkannt werden.

20:09.620 --> 20:11.780
Ein Systemabschluss darf nicht zu Datenverlust führen.

20:12.220 --> 20:14.860
Das sind keine Funktionen, sondern Einschränkungen.

20:21.360 --> 20:22.220
Benutzbarkeit.

20:22.220 --> 20:25.980
Also jetzt kommen einige dieser qualitativen Anforderungen oder auch

20:25.980 --> 20:28.220
nicht funktionalen Anforderungen.

20:30.240 --> 20:32.960
Qualitätsattribute, Benutzbarkeit, wie einfach ist das System zu

20:32.960 --> 20:38.000
benutzen, wie zuverlässig ist es, dazu gehören auch Robustheit und

20:38.000 --> 20:38.360
Sicherheit.

20:39.780 --> 20:46.160
Robustheit heißt, wie das System reagiert, wenn es fehlbedient wird

20:46.160 --> 20:50.200
oder in Situationen läuft, die es eigentlich nicht gedacht ist.

20:51.160 --> 20:54.260
Geschwindigkeit, da gibt es ganz verschiedene Ansagen.

20:55.120 --> 20:58.660
Die Antwortzeit ist klar, die Antwortzeit sagt, wenn ich eine Frage

20:58.660 --> 21:02.680
stelle, in wie vielen Sekunden oder Minuten kommt die Antwort zurück.

21:04.560 --> 21:06.360
Durchsatz ist anders.

21:06.640 --> 21:13.580
Durchsatz sagt, wie viele Anforderungen von Kunden von außen kann ich

21:13.580 --> 21:14.800
pro Sekunde verarbeiten.

21:14.800 --> 21:19.160
Also stellen Sie sich vor, Sie arbeiten für Amazon oder sonst

21:19.160 --> 21:25.380
irgendeinen Internetladen und da will man natürlich wissen, wie viele

21:25.380 --> 21:27.860
Anfragen der Kunden kann ich pro Sekunde schaffen.

21:28.520 --> 21:29.980
Das sagt nicht, wie schnell sie sind.

21:30.440 --> 21:32.000
Es kann durchaus sein, dass sie eine Minute dauern.

21:32.340 --> 21:35.600
Aber ich kann sagen, ich werde 10.000 Anfragen im Betrieb haben pro

21:35.600 --> 21:36.080
Sekunde.

21:36.620 --> 21:39.980
Dann müssen natürlich auch pro Sekunde 10.000 Antworten herauskommen.

21:40.540 --> 21:43.020
Aber bis die Antworten kommen, kann es durchaus dauern.

21:45.700 --> 21:48.680
Die Antwortzeit sind zwei verschiedene, ganz verschiedene Zahlen.

21:50.440 --> 21:53.240
Skalierbarkeit sagt, wie weit kann ich, wie viele Benutzer zum

21:53.240 --> 21:56.900
Beispiel oder wie viele Datenmengen kann das System verkraften.

21:58.800 --> 22:00.080
Das wäre die Skalierbarkeit.

22:00.620 --> 22:03.580
Oder wie groß darf das Problem werden, das das System bearbeiten kann.

22:04.200 --> 22:10.780
Zum Beispiel das Routenfindungsproblem würde Schwierigkeiten bekommen,

22:10.780 --> 22:15.500
sobald, sagen wir mal, die Fahrten über zwei Stunden laufen müssten,

22:16.000 --> 22:20.160
weil dann die zu verwaltenden Daten in einem Suchproblem überhand

22:20.160 --> 22:20.400
nehmen.

22:21.160 --> 22:22.160
Das wäre die Antwortzeit.

22:22.280 --> 22:27.980
Skalierbarkeit, Durchsatz und Verfügbarkeit sagt, wie viele Stunden

22:27.980 --> 22:31.940
pro Woche muss das System verfügbar sein oder was ist die maximale

22:31.940 --> 22:34.000
Zeit, dass das System nicht verfügbar sein darf.

22:34.560 --> 22:39.200
Also 24 Stunden, sieben Tage die Woche muss es verfügbar sein und

22:39.200 --> 22:41.100
nicht verfügbar höchstens fünf Minuten.

22:42.180 --> 22:44.700
Das wäre eine harte Anforderung.

22:45.760 --> 22:48.080
Wartbarkeit, das hatte ich letztes Mal auch schon erklärt.

22:48.660 --> 22:49.220
Was ist das?

22:49.320 --> 22:52.740
Wartbarkeit, Maintainability, das ist die Frage, ob ich das System an

22:52.740 --> 22:57.320
neue Gegebenheiten, neue Benutzerwünsche anpassen kann oder sie mit

22:57.320 --> 22:59.060
neuen Funktionen erweitern kann.

23:01.480 --> 23:04.740
Einschränkungen beziehen sich meistens auf den Implementierungsarten,

23:04.860 --> 23:06.020
die Schnittstellen, die zu bedienen.

23:07.140 --> 23:11.140
Einsatzumgebung, wie gesagt, ist es im Büro oder im Auto oder im Mobil

23:11.140 --> 23:18.620
oder im Flugzeug oder in der Wüste, im Wasser, Einsatzumgebung,

23:18.820 --> 23:22.000
Lieferumfang, was gehört alles dazu, Rechtliches, das sind die

23:22.000 --> 23:25.120
Lizenzen, die man braucht, die Zertifikate und der Datenschutz.

23:27.320 --> 23:30.600
Die nicht funktionalen Anforderungen sind ein sehr breites Spektrum,

23:31.260 --> 23:32.820
breiter als man zunächst mal denkt.

23:32.820 --> 23:36.800
Es ist also nicht nur, wie schnell oder welche Antwortzeit, sondern

23:36.800 --> 23:43.500
habe ich alle Lizenzen, Zertifikate, das gehört alles dazu.

23:45.180 --> 23:48.920
Was wir jetzt noch nicht besprochen haben, ist die Benutzbarkeit.

23:49.300 --> 23:52.460
Benutzbarkeit ist ein bisschen schwammig, wenn Sie mal denken, wie

23:52.460 --> 23:57.940
einfach ist jetzt Word oder Excel wirklich zu bedienen oder wie

23:57.940 --> 23:59.400
einfach ist es zu bedienen.

24:01.140 --> 24:04.680
Wenn ich in der Anforderung schreibe, das System muss einfach

24:04.680 --> 24:07.420
benutzbar sein, was soll das heißen?

24:11.220 --> 24:13.960
Also man möchte eigentlich die Leichtigkeit, mit der Akteurin, mit

24:13.960 --> 24:15.760
einem System eine Funktion ausführen können.

24:15.900 --> 24:21.940
Das intuitiv möchte man haben, aber es muss auch messbar sein, sonst

24:21.940 --> 24:24.140
ist es einfach nur Schwall oder Marketing.

24:24.960 --> 24:28.620
Das kann man zum Beispiel so machen, dass man sagt, ich nehme mir

24:28.620 --> 24:31.940
messbare Eigenschaften der Benutzerschnittstelle heraus.

24:32.120 --> 24:36.180
Zum Beispiel, wie viele Eingaben brauche ich, um eine Bestellung

24:36.180 --> 24:36.740
abzuschicken.

24:38.880 --> 24:42.300
Wie viele Eingaben brauche ich oder wie viele Seiten muss ich

24:42.300 --> 24:46.940
besuchen, um eine Bestellung abzuschicken.

24:47.860 --> 24:54.080
Ich kann auch fragen, bei Hot-Wheels benutzten Schnittstellen, sagen

24:54.080 --> 24:59.480
wir im Büro, wo man permanente Eingaben geben muss, wenn der Nutzer

24:59.480 --> 25:03.260
trainiert worden ist, also eingewiesen worden ist auf das System, wie

25:03.260 --> 25:04.860
viele Fehler pro Stunde macht er?

25:05.780 --> 25:09.840
Wie viele Tippfehler, falsche Eingaben, Korrekturen, die sich später

25:09.840 --> 25:16.240
schlecht auswirken würden oder solche, die das System auffangen muss.

25:16.760 --> 25:19.160
Wie viele Fehler werden gemacht pro Stunde?

25:19.320 --> 25:23.240
Das wäre eine weitere Möglichkeit, die Benutzbarkeit zu messen.

25:25.140 --> 25:29.040
Robustheit ist die Fähigkeit eines Systems, die Funktion vorzusetzen,

25:29.360 --> 25:33.220
selbst wenn der Benutzer eine falsche Eingabe macht, bedient das Ding

25:33.220 --> 25:34.480
einfach verkehrt.

25:35.100 --> 25:38.120
Oder die Betriebsbemühungen nicht eingehalten werden, die

25:38.120 --> 25:41.440
Betriebstemperatur von minus 10 bis 50 Grad Celsius nicht eingehalten

25:41.440 --> 25:43.840
wird, dann wird wahrscheinlich mein Rechner streiken.

25:45.280 --> 25:45.820
Oder was?

25:46.220 --> 25:49.200
Ist ein Kühlapparat vorgesehen, eine starke Kühlung da?

25:49.200 --> 25:55.260
Oder wenn es heißt, die maximale Anzahl von Anfragen pro Sekunde ist 2

25:55.260 --> 25:58.940
.000, was ist, wenn ich 3.000 habe oder 5.000?

25:59.400 --> 26:02.540
Geht das System in die Knie und stürzt ab oder wird es einfach nur

26:02.540 --> 26:02.820
langsam?

26:03.540 --> 26:05.340
Das ist eine Frage der Robustheit.

26:06.980 --> 26:10.460
Wenn es so eine Anforderung gibt, muss man die Robustheit natürlich

26:10.460 --> 26:11.060
auch testen.

26:11.760 --> 26:17.640
Das heißt, ich muss das System in einen Stresstest setzen, wo diese

26:17.640 --> 26:23.880
Bedingungen für das korrekte Funktionieren des Systems überschritten

26:23.880 --> 26:24.180
werden.

26:27.960 --> 26:30.800
Genau, Verfügbarkeit, auch das habe ich schon angesprochen.

26:31.360 --> 26:33.520
Verhältnis betriebsfreier Betriebszeit zur Gesamtzeit.

26:34.400 --> 26:38.960
Ich könnte also sagen, dass pro Woche das System nicht mehr als 5

26:38.960 --> 26:40.220
Minuten nicht verfügbar ist.

26:40.440 --> 26:41.600
Das hatte ich vorhin schon erwähnt.

26:46.180 --> 26:48.540
Das kommt jetzt ein bisschen komisch daher, wenn Sie sagen, was ist

26:48.540 --> 26:49.080
jetzt los?

26:51.200 --> 26:51.880
Wettkämpfe und sowas.

26:52.100 --> 26:55.720
Das ist auch ein Beispiel aus Brücke, auf das ich wieder explizit

26:55.720 --> 26:57.260
hinweise, damit Sie es sich anschauen.

26:57.820 --> 27:00.800
Da geht es darum, dass er ein System gebaut hat, mit dem man

27:00.800 --> 27:02.620
Wettkämpfe verfolgen kann auf dem Bildschirm.

27:03.300 --> 27:03.640
Mehr nicht.

27:05.160 --> 27:08.160
Und Zuschauer müssten also in der Lage sein, Wettkämpfe zur Verfügung,

27:08.300 --> 27:09.600
ohne Vorwissen.

27:11.180 --> 27:13.080
Zehn gleichzeitige Wettkämpfe.

27:13.680 --> 27:16.140
Der Verwalter muss in der Lage sein, einen Wettkampf hinzuzufügen,

27:16.240 --> 27:17.960
ohne bereits existierende ändern zu müssen.

27:18.420 --> 27:22.160
Das sind so qualitative und nicht funktionale Anforderungen.

27:24.140 --> 27:25.100
Das überspringen wir.

27:26.600 --> 27:28.780
Was gehört zu den Anforderungen?

27:29.780 --> 27:33.460
Die Systemstruktur, normalerweise wird Ihnen nicht vorgeschrieben,

27:33.560 --> 27:34.920
sollte Ihnen auch nicht vorgeschrieben sein.

27:35.980 --> 27:38.560
Die Entwicklungsmethoden, Implementierungsdetails,

27:39.920 --> 27:42.060
Entwicklungsumgebung, meistens auch nicht vorgeschrieben ist.

27:42.160 --> 27:45.320
Die Programmiersprache, Wiederverwendbarkeit, das ist dann meistens

27:45.320 --> 27:45.820
Ihr Problem.

27:46.580 --> 27:49.560
Es ist klar, dass keine Punkte Einschränkungen vom Kunden sind.

27:49.960 --> 27:53.240
Es kann natürlich sein, dass Ihnen der Kunde trotzdem die

27:53.240 --> 27:55.700
Entwicklungsumgebung vorschreibt, weil er Ihre Software später

27:55.700 --> 27:56.380
übernehmen will.

27:57.820 --> 28:01.120
Zum Beispiel nehmen wir an, Sie machen ein Projekt für Bosch.

28:01.980 --> 28:06.480
Irgendeine Steuerung, die ein Automobilzulieferer braucht, und Sie

28:06.480 --> 28:07.180
entwickeln das.

28:07.540 --> 28:11.780
Aber wir wollen das in der Programmiersprache geschrieben haben, mit

28:11.780 --> 28:14.960
der und der Spezifikationsmethode, mit der und der Testmethode und so

28:14.960 --> 28:15.240
weiter.

28:16.940 --> 28:24.100
Aber das ist eben eher unnormal, dass so etwas vorgeschrieben wird.

28:24.320 --> 28:25.620
Dass es vom Kunden kommt.

28:28.020 --> 28:31.560
So, jetzt nehmen wir mal an, wir haben jetzt entweder Szenarien

28:31.560 --> 28:36.600
aufgeschrieben oder Anwendungsfalldiagramme geschrieben oder beides.

28:37.440 --> 28:40.240
Jetzt ist die Frage der Validierung.

28:40.420 --> 28:42.640
Das ist eine Art Qualitätsüberprüfung.

28:43.000 --> 28:43.920
Die kommt jetzt auch.

28:44.540 --> 28:46.020
Wie macht man das eigentlich?

28:47.180 --> 28:49.060
Und auf was muss man achten?

28:50.240 --> 28:52.140
Erstmal ist die Frage der Korrektheit.

28:52.620 --> 28:54.980
Sind die Anforderungen aus der Sicht des Kunden korrekt?

28:55.540 --> 28:57.760
Das kann natürlich auch nur der Kunde sagen.

28:58.340 --> 29:00.500
Hauptsächlich sind sie vollständig.

29:00.500 --> 29:01.580
Haben wir was vergessen?

29:01.720 --> 29:04.380
Haben wir zum Beispiel bei dem Anwendungsfallmelden einen

29:04.380 --> 29:05.460
Anwendungsfall vergessen?

29:07.420 --> 29:10.860
Zum Beispiel, ich weiß nicht, irgendwie ein Aufstand?

29:12.620 --> 29:15.640
Oder Schlägerei vor dem Stadion oder so etwas?

29:15.840 --> 29:17.040
Haben wir da irgendwas vergessen?

29:18.200 --> 29:19.760
Eins ist der Fehler und Fehlbedingungen.

29:20.340 --> 29:20.900
Konsistenz.

29:21.700 --> 29:25.880
Gibt es keine Situation, in der sich irgendetwas widerspricht, dass

29:25.880 --> 29:28.520
ich an einer Stelle etwas sage und an einer anderen Stelle etwas

29:28.520 --> 29:29.880
anderes, das sich widerspricht?

29:33.500 --> 29:34.540
Und was haben wir noch?

29:34.980 --> 29:35.460
Eindeutigkeit.

29:36.360 --> 29:40.340
Die Frage ist, wird das, was ich beschrieben habe, auch sicher richtig

29:40.340 --> 29:41.040
verstanden werden?

29:41.580 --> 29:45.040
Sie wissen, viele Wörter haben mehrere Bedeutungen.

29:45.860 --> 29:51.380
Oder auch ganze Sätze können mehrfach interpretiert werden.

29:52.160 --> 29:54.840
Und das sollte natürlich nicht der Fall sein, in meiner

29:54.840 --> 29:56.580
Anforderungsdokumentation.

29:56.920 --> 30:01.600
Die sollte es so sein, dass ich es sicher richtig verstehen kann, also

30:01.600 --> 30:03.780
präzise geschrieben ist.

30:04.560 --> 30:05.160
Realisierbarkeit.

30:05.240 --> 30:06.660
Kann ich sie auch erfüllen?

30:06.760 --> 30:10.000
Oder stehen da Traumvorstellungen drin, die nicht realisierbar sind?

30:10.700 --> 30:16.920
Und Verfolgbarkeit sagt, dass ich jede Systemfunktion, die später mal

30:16.920 --> 30:20.680
geschrieben wird, einer Anforderung zuweisen kann, die die Funktion

30:20.680 --> 30:21.280
benötigt.

30:22.240 --> 30:25.600
Dass die Verfolgbarkeit, das kann ich jetzt natürlich noch nicht

30:25.600 --> 30:29.620
erfüllen, weil ja noch nichts von den Funktionen geschrieben worden

30:29.620 --> 30:29.860
ist.

30:30.140 --> 30:33.500
Aber im Prinzip sollte ich mein Anforderungsdokument so strukturieren,

30:33.940 --> 30:36.980
dass ich bei jeder Funktion später anklemmen kann und sage, diese

30:36.980 --> 30:40.020
Funktion wird erledigt von den folgenden Methoden.

30:40.440 --> 30:45.260
Oder Prozeduren, oder Klassen, oder was immer meine Konstrukte in der

30:45.260 --> 30:45.800
Software sind.

30:47.360 --> 30:48.500
Das wäre Verfolgbarkeit.

30:49.580 --> 30:52.500
Das Problem mit der Validierung sind, dass sie natürlich die

30:52.500 --> 30:53.820
Anforderungen ändern.

30:53.920 --> 30:55.400
Der Kunde ändert seine Ansichten.

30:55.760 --> 30:58.200
Sagt dann plötzlich, so habe ich mir das nicht vorgestellt.

30:58.320 --> 30:59.260
Ich hätte das gerne anders.

31:00.220 --> 31:02.820
Oder mein Konkurrent macht das aber inzwischen so.

31:02.900 --> 31:04.100
Das muss ich jetzt auch so machen.

31:04.520 --> 31:08.260
Und schon haben sie Änderungen, die während der Erstellung dieser

31:08.260 --> 31:09.740
Anforderungen auftauchen.

31:10.200 --> 31:12.600
Dann müssen sie natürlich die Validierung nachziehen.

31:14.200 --> 31:16.460
Die Assistenten können bei jeder Änderung auftreten.

31:16.600 --> 31:19.500
Das heißt, dann müssen sie halt nochmal alles durchsehen.

31:23.020 --> 31:23.540
Entschuldigung.

31:27.540 --> 31:33.280
Wie werden jetzt, wenn ich jetzt diese sechs Eigenschaften hier

31:33.280 --> 31:36.720
überprüfen möchte, dass alles korrekt ist, dass alles vollständig ist,

31:37.120 --> 31:43.400
konsistent ist, eindeutig realisierbar und dann später auch verfolgbar

31:43.400 --> 31:43.600
ist.

31:43.960 --> 31:45.020
Ich kann ja nicht testen.

31:45.100 --> 31:46.980
Ich habe kein Programm, das ich laufen lassen könnte.

31:47.520 --> 31:49.620
Bin immer noch auf Papier.

31:50.570 --> 31:52.180
Ohne echte Software.

31:52.820 --> 31:54.460
Ohne jegliche Software eigentlich.

31:55.060 --> 31:59.440
Nun, das mache ich eben mit Inspektionen bzw.

31:59.580 --> 32:00.200
Durchsichten.

32:00.380 --> 32:05.280
Das heißt also, ich kann entweder anderen Kollegen oder mir selbst die

32:05.280 --> 32:06.120
Aufgabe stellen.

32:07.080 --> 32:10.260
Lies bitte die Anforderungen durch und sie nach, ob du Inkonsistenzen

32:10.260 --> 32:14.700
findest, ob du Mehrdeutlichkeiten findest, ob du Realisierungsprobleme

32:14.700 --> 32:18.800
findest, ob du Unvollständigkeit findest, ob du Lücken entdecken

32:18.800 --> 32:19.160
kannst.

32:19.620 --> 32:24.320
Man sucht also nach diesen Eigenschaften, die man zu vermeiden hat.

32:24.620 --> 32:29.260
Nämlich die Inkonsistenzen, Lücken, Mehrdeutigkeit, Nicht

32:29.260 --> 32:34.080
-Realisierbarkeit und auch die Strukturierung, das sich später

32:34.080 --> 32:35.240
verfolgbar machen kann.

32:36.300 --> 32:37.880
So, es gibt soweit Fragen.

32:38.380 --> 32:44.640
Jetzt ist es so, dass diese Anforderungsdokumente

32:49.160 --> 32:52.640
für realistische Projekte ziemlich groß werden können.

32:55.360 --> 32:59.120
Ich glaube, die Anforderungsdokumentation von Toll Collect System, was

32:59.120 --> 33:03.520
ich schon mehrmals erwähnt habe, ist über 2000 Seiten.

33:03.980 --> 33:05.260
2000 Seiten.

33:05.980 --> 33:09.220
Und an diesem Dokument arbeiten natürlich eine Vielzahl von Personen.

33:10.400 --> 33:12.320
Das ist nicht der einzige, der das alles im Kopf hat.

33:12.520 --> 33:13.140
Versuchen Sie es mal.

33:13.520 --> 33:15.380
Das sind also fünf Bücher.

33:15.880 --> 33:17.920
Fünf Bücher voll Anforderungsdokumenten.

33:18.580 --> 33:21.740
Das kann kein einzelner komplett zusammenstellen.

33:22.300 --> 33:25.220
Also brauchen Sie auch hier eine Möglichkeit zusammenzuarbeiten.

33:26.120 --> 33:29.220
Das heißt, Sie brauchen irgendwelche Versionsverhaltungssysteme wieder

33:29.220 --> 33:29.540
mal.

33:30.020 --> 33:33.440
Das heißt, Sie nehmen GIT dafür her oder SVN oder was anderes.

33:34.840 --> 33:37.200
Gemeinsames Verzeichnis für Konfigurationsmanagement.

33:38.400 --> 33:39.520
Mehr Benutzerunterstützung.

33:39.620 --> 33:42.460
Es müssen mehrere Leute gleichzeitig daran arbeiten können, aber sich

33:42.460 --> 33:43.480
nicht in die Quere kommen.

33:43.920 --> 33:47.560
Das heißt, ich muss diese Überlappungen vermeiden.

33:48.840 --> 33:51.960
Und schließlich arbeiten dann die Einzelnen an unterschiedlichen

33:51.960 --> 33:52.580
Kapiteln.

33:53.620 --> 33:57.880
Diese Dokumentation, das sind dann meistens einzelne Dateien.

33:58.680 --> 34:01.380
Ich brauche also wieder ein System, das die Gesamtdokumentation

34:01.380 --> 34:04.320
zusammenführt und also ein einzelnes, komplettes Dokument.

34:05.040 --> 34:08.520
Das geht also nicht, indem ich Google Docs nehme zum Beispiel.

34:08.520 --> 34:11.360
Google Docs wäre durchaus eine Möglichkeit für kleinere

34:11.360 --> 34:16.700
Spezifikationen, dass ich im Internet ein Dokument habe, das ich mit

34:16.700 --> 34:18.800
mehreren Leuten bearbeiten lasse.

34:18.900 --> 34:22.220
Aber das geht letztendlich, wenn das nur eine einzige Datei ist, nur

34:22.220 --> 34:22.940
für zwei dabei.

34:23.400 --> 34:26.300
Dann beginnt man plötzlich sich gegenseitig zu stören.

34:27.120 --> 34:30.000
Das heißt, man muss die Dateien eigentlich zerlegen können.

34:31.580 --> 34:33.620
Vielleicht hat Google Docs das inzwischen, das weiß ich jetzt gar

34:33.620 --> 34:33.820
nicht.

34:34.000 --> 34:34.900
Musste ich gleich nachschauen.

34:39.120 --> 34:42.680
Und natürlich ist es bereits, ich weiß nicht, ob Sie Google Docs schon

34:42.680 --> 34:45.440
mal benutzt haben, da ist es auch schon so, dass man die Änderungen

34:45.440 --> 34:46.280
rückverfolgen kann.

34:46.660 --> 34:51.700
Jedenfalls einigermaßen vernünftig kann man sich anzeigen lassen, was

34:51.700 --> 34:52.360
geändert wurde.

34:54.780 --> 34:57.880
So, es gibt aber noch andere Werkzeuge, die erwähne ich jetzt kurz,

34:58.180 --> 34:59.080
falls Sie das mal brauchen.

34:59.200 --> 35:02.940
Das müssen Sie natürlich jetzt üben damit oder sonst etwas.

35:03.380 --> 35:04.740
Eines heißt das Doors.

35:06.160 --> 35:09.700
Das ist zum Beispiel für mehrere Plattformen, wo beide Entwicklerteams

35:09.700 --> 35:10.840
am selben Ort arbeiten.

35:11.700 --> 35:14.620
Und dann gibt es noch eine Erweiterung, die ist für Teams gedacht.

35:14.720 --> 35:16.480
Die sind also netzwerkfähig.

35:16.980 --> 35:20.680
Das ist also zum Verwalten von Anforderungsdokumenten gedacht.

35:21.140 --> 35:23.920
Mit der entsprechenden Versionsverhaltung und Konfigurationssicherung

35:23.920 --> 35:27.320
eines Gesamtdokumentes oder mehrer natürlich.

35:28.080 --> 35:30.960
Und es gibt auch noch von IBM etwas, das heißt Requisite Pro.

35:31.600 --> 35:33.900
Das geht dann zusammen mit Word.

35:36.300 --> 35:42.640
Die aktuelle Forschung geht jetzt mehr darauf hin, dass man den Inhalt

35:42.640 --> 35:44.180
der Texte untersucht.

35:44.400 --> 35:47.900
Also die Systeme, die ich Ihnen bis jetzt vorgestellt habe, machen nur

35:47.900 --> 35:52.160
gibt man die Texte, ich bewahre sie auf, merke mir, welche Versionen

35:52.160 --> 35:54.640
es gab, aber ich habe keine Ahnung, was da drin steht.

35:55.260 --> 36:00.060
Und jetzt versucht man mehr und mehr die Texte selbst zu verarbeiten.

36:00.060 --> 36:02.720
Natürlich sprache ich im Text auch Deutsch oder Englisch, aber ich

36:02.720 --> 36:03.440
sprache auch immer.

36:05.200 --> 36:08.780
Und da ist zum Beispiel eines, was wir gemacht haben, ist

36:10.380 --> 36:12.500
Nominalisierungen und Passivsätze zu finden.

36:13.980 --> 36:16.280
Eine Nominalisierung ist zum Beispiel folgende.

36:16.780 --> 36:20.040
Nach der Anmeldung wird der Kunde auf die Startzeit weitergeleitet.

36:20.940 --> 36:22.000
Nach der Anmeldung.

36:22.160 --> 36:25.000
Das ist eine typische Nominalisierung, da habe ich nämlich das Verb

36:26.120 --> 36:29.800
durch einen Nomen ersetzt und damit Informationen verloren.

36:30.200 --> 36:33.240
Wenn ich nämlich das Verb benutzt hätte, dann hätte ich sagen müssen,

36:33.760 --> 36:41.380
der Anwender meldet sich selbst an oder jemand im Büro meldet ihn an.

36:41.800 --> 36:43.440
Oder jemand anderer meldet ihn an.

36:44.340 --> 36:48.040
Und nur einfach Anmeldung hinzuschreiben, heißt wieder, ich habe eine

36:48.040 --> 36:48.240
Lücke.

36:49.140 --> 36:52.320
Und diese Lücken können wir inzwischen automatisch finden.

36:53.460 --> 36:54.900
Also das ist noch ein weiteres...

36:54.900 --> 36:56.780
Nach dem Transport der Paletten.

36:57.060 --> 36:57.740
Ja, wunderbar.

37:00.740 --> 37:03.700
Paletten transportiert.

37:03.880 --> 37:05.420
Aber wer macht das Transportieren?

37:06.380 --> 37:08.820
Ist das jetzt so ein Palettenwägelchen oder ist das ein Laster?

37:09.820 --> 37:12.040
Und welche Person steuert das alles?

37:12.720 --> 37:14.040
Und von wo wird transportiert?

37:14.120 --> 37:14.840
Wo wird abgeholt?

37:14.980 --> 37:16.740
Und wo wird hingeliefert?

37:17.220 --> 37:21.460
All das steht in dem kurzen Nominalisierung Transport der Paletten

37:21.460 --> 37:21.880
nicht drin.

37:23.240 --> 37:27.800
Was man da also macht, technisch gesehen geht das folgendermaßen.

37:29.460 --> 37:34.120
Wenn immer man einen Nomen sieht, diese Form in einem kurzen Satz,

37:34.900 --> 37:38.920
geht man her und sucht das zugehörige Verb.

37:40.200 --> 37:41.700
Das wäre in diesem Fall Transportieren.

37:42.640 --> 37:46.800
Dann geht man mit diesem Verb Transportieren in eine Datenstruktur,

37:46.900 --> 37:47.860
die heißt Ontologie.

37:48.320 --> 37:51.860
Eine Ontologie, das ist, sagen wir mal, eine Begriffshierarchie.

37:52.400 --> 37:55.360
Die beschreibt insbesondere, was Transportieren bedeutet.

37:56.220 --> 37:59.560
Diese Begriffshierarchie wird sagen, wenn man etwas transportiert,

38:00.340 --> 38:02.800
dann braucht man einen Transporteur.

38:04.880 --> 38:09.320
Und der Transporteur ist dann entweder ein Mensch oder ein Gerät.

38:10.140 --> 38:13.100
Und man muss wissen, von wo nach wo man transportiert.

38:15.080 --> 38:19.300
Und mit dieser Information kann ich dann dem Benutzer eine Meldung

38:19.300 --> 38:22.580
geben und sagen, in diesem Satz, wo der Transport der Paletten

38:22.580 --> 38:24.580
vorkommt, fehlt mir Information.

38:25.800 --> 38:30.040
Es muss nicht heißen, dass die Information immer fehlt.

38:30.760 --> 38:34.860
Das heißt, ich könnte auch sagen, es könnte auch dastehen, nach dem

38:34.860 --> 38:38.040
Transport der Paletten durch den Spediteur.

38:39.660 --> 38:41.180
Das wäre der Transporteur.

38:42.420 --> 38:45.660
Das heißt, ich muss dann auch noch den Satz analysieren und sagen,

38:45.820 --> 38:49.600
okay, bevor ich da eine Fehlermeldung gebe, hallo, du hast da

38:49.600 --> 38:51.200
Transport benutzt und das ist böse.

38:52.680 --> 38:56.240
Transport benutzt, transportieren würde mir ein Transporteur

38:56.240 --> 38:56.540
erfordern.

38:56.660 --> 38:58.120
Mal schauen, ob ich den im Satz finde.

38:58.760 --> 39:00.460
In dem gleichen Satz oder im Satz danach.

39:01.680 --> 39:05.560
Sie sehen schon, das ist dann komplexe Textverarbeitung und wichtig

39:05.560 --> 39:11.460
dabei ist immer, dass man die Texte, die Fehlermeldungen wichtig sind

39:11.460 --> 39:15.440
und nicht nur ärgerlich sind.

39:16.100 --> 39:17.460
Es steht doch alles da.

39:17.960 --> 39:21.220
Wie zum Beispiel nach dem Transport durch den Spediteur vom Bahnhof

39:21.220 --> 39:24.100
ins Geschäft oder so, was immer die Sache ist, wäre natürlich

39:24.100 --> 39:24.840
vollständig.

39:25.220 --> 39:28.200
Es ist nicht so, dass jede Normalisierung automatisch böse ist.

39:29.040 --> 39:32.800
Das muss man vermeiden, dass man den Benutzer ärgert mit unnötigen

39:35.740 --> 39:36.220
Fehlermeldungen.

39:36.620 --> 39:38.940
So, Entwicklung auf der grünen Wiese.

39:39.560 --> 39:44.480
Da ist es schön, denn ich kann von null an, es gibt kein System, auf

39:44.480 --> 39:45.540
welches man aufbauen kann.

39:45.980 --> 39:48.040
Anforderungen kommen von den Benutzern und Kunden.

39:48.580 --> 39:51.000
Es wird also direkt durch Wünsche des Kunden ausgelöst.

39:52.000 --> 39:54.720
Re-Engineering heißt, ich brauche einen Neuentwurf oder

39:54.720 --> 39:58.840
Neuimplementierung eines existierenden Systems unter Verwendung neuer

39:58.840 --> 39:59.600
Technologien.

40:00.080 --> 40:04.320
Neue Schnittstellen, bessere Programmiersprache, neue Datenbank, ich

40:04.320 --> 40:06.160
weiß nicht, was da alles sich ändern kann.

40:06.340 --> 40:07.980
Jedenfalls ist es ziemlich vielfältig.

40:08.680 --> 40:13.220
Das wäre also eine ausgelöst durch neue Technologien oder neue

40:13.220 --> 40:13.880
Anforderungen.

40:14.540 --> 40:18.680
Oder aber, ich muss eine Benutzerschnittstellenentwicklung machen.

40:20.960 --> 40:24.400
Bereitstellung von existierenden Diensten in neuer Umgebung.

40:24.540 --> 40:29.540
Es kann also sein, dass ich eine Web-Schnittstelle erzeugen muss.

40:29.860 --> 40:31.700
Sie werden lachen, das hat noch nicht jede Software.

40:32.120 --> 40:33.800
Nicht jede Software ist internetfähig.

40:34.100 --> 40:36.720
Die internetfähig zu machen, ist ein bisschen Aufwand.

40:37.700 --> 40:41.960
Da muss ich meistens keine neuen Funktionen erstellen, aber dafür eine

40:41.960 --> 40:44.220
Webseite, die die Funktionen ansteuert.

40:44.380 --> 40:45.200
Die muss ich erstellen.

40:45.900 --> 40:49.620
Oder aber sie müssen eine grafische Benutzeroberfläche erstellen, für

40:49.620 --> 40:51.780
die es noch kein Vorbild gab.

40:52.100 --> 40:57.220
Oder in Zukunft wohl eine sprachliche Schnittstelle bereitstellen,

40:57.620 --> 40:58.960
dass ich mit dem Ding sprechen kann.

41:00.540 --> 41:02.100
Oder ein Chatbot bauen.

41:02.100 --> 41:02.800
Ja.

41:06.030 --> 41:06.990
Einen Quatschbot.

41:07.550 --> 41:07.710
So.

41:09.090 --> 41:14.490
Jetzt kommen wir endlich mal... Wir haben also jetzt gesehen, was wir

41:14.490 --> 41:15.790
arbeiten müssen.

41:16.450 --> 41:21.590
Jetzt, was uns jetzt wichtig ist, ist, wie strukturiere ich das Ganze?

41:21.790 --> 41:22.830
Wie gliedere ich das Ganze?

41:23.750 --> 41:27.390
So, und da beziehe ich mich jetzt auf ein anderes Buch, nämlich das

41:27.390 --> 41:30.310
Buch von Balzert, das Sie ja elektronisch bekommen können.

41:31.050 --> 41:35.910
Der hat eine ziemlich gute Gliederung für ein sogenanntes Lastenheft.

41:36.090 --> 41:39.230
Sie erinnern sich, die Planungsphase muss dieses Lastenheft liefern,

41:39.710 --> 41:43.370
das ja die Funktionalität und nicht-funktionalen Eigenschaften des

41:43.370 --> 41:48.270
zukünftigen Produktes in Worten des Kunden beschreibt.

41:48.710 --> 41:51.230
Das ist also das sogenannte Lastenheft.

41:52.330 --> 41:55.470
Das ist übrigens auch keine Erfindung der Informatiker, Lastenhefte

41:55.470 --> 41:56.170
und Pflichtenhefte.

41:56.350 --> 41:58.690
Gibt es für alle möglichen Entwicklungen.

41:59.550 --> 42:02.650
Das ist eine ganz normale Idee, dass man erst beschreibt, was man

42:02.650 --> 42:05.030
haben will, bevor man beginnt, es zu bauen.

42:06.110 --> 42:09.330
Da gibt es also eine Zielbestimmung, das sagt also, ich will das und

42:09.330 --> 42:11.590
das erreichen.

42:11.830 --> 42:14.210
Das ist meistens nur ein Absatz, ein einziger Absatz.

42:15.410 --> 42:16.470
Gleiches Beispiel sehen.

42:18.790 --> 42:21.270
Ich beschreibe den Produkteinsatz.

42:21.490 --> 42:22.970
Wo läuft dieses System?

42:23.190 --> 42:30.090
Zum Beispiel im Büro, auf dem Mobiltelefon, in einem autonomen

42:30.090 --> 42:34.730
Fahrzeug, wo immer das Produkt eingesetzt wird.

42:37.330 --> 42:41.590
Ich beschreibe die Liste der funktionalen Anforderungen.

42:43.250 --> 42:46.610
Die werden also auch wieder als Satz oder mehrere Sätze beschrieben.

42:47.750 --> 42:49.010
Dann kommt, was kommt jetzt?

42:49.770 --> 42:52.570
Nein, noch nicht die nicht-funktionalen, sondern erst kommen noch die

42:52.570 --> 42:53.810
Produktdaten.

42:53.810 --> 42:56.990
Das sind die Daten, die in das System eingegeben werden, dort

42:56.990 --> 42:59.410
gespeichert werden, gelöscht, vielleicht auch wieder gelöscht werden,

42:59.730 --> 43:00.410
geändert werden.

43:01.130 --> 43:02.630
Das sind die Produktdaten.

43:04.070 --> 43:06.370
Was wird also an Information aufbewahrt?

43:06.550 --> 43:09.850
Dann kommen die nicht-funktionalen Anforderungen und schließlich die

43:09.850 --> 43:10.930
Systemmodelle.

43:11.610 --> 43:14.630
Das sind die, die wir gerade besprochen haben, nämlich Szenarien oder

43:14.630 --> 43:15.350
Anwendungsfälle.

43:16.290 --> 43:17.690
Und schließlich ein Glossar.

43:18.130 --> 43:21.350
Glossar hilft mir übrigens, eines der Probleme bei der

43:21.350 --> 43:23.770
Anforderungsermittlung zu beseitigen, die Mehrdeutigkeit.

43:24.450 --> 43:28.370
Im Glossar, das ist im Wesentlichen ein Begriffslexikon, das sagt für

43:28.370 --> 43:33.110
jeden Begriff, ich definiere jeden Begriff.

43:34.310 --> 43:37.710
Definitionen hatten wir ja in der letzten Vorlesung einige gehabt.

43:38.310 --> 43:42.990
Die stehen dann auch im Glossar, damit die Fachbegriffe eindeutig

43:42.990 --> 43:44.030
verstanden werden können.

43:46.270 --> 43:48.250
Das müssen wir uns jetzt leider irgendwie merken.

43:48.470 --> 43:51.610
Ist aber nicht so schwer, denn wir wissen ja bereits, funktionale und

43:51.610 --> 43:53.250
nicht -funktionale Anforderungen sind wichtig.

43:53.370 --> 43:56.410
Die kommen also hier als Punkte 3 und 5 vor.

43:56.790 --> 43:59.490
Dazwischen noch die Produktdaten, das können wir uns auch ziemlich gut

43:59.490 --> 43:59.810
merken.

43:59.990 --> 44:01.210
Klar muss ich Daten halten.

44:02.250 --> 44:04.010
Der Rest ist einfach.

44:04.750 --> 44:07.190
Glossar brauchen wir, um die Begriffe sich zu merken.

44:08.290 --> 44:11.690
Zielbestimmung ist einfach, Produkteinsatz klar, ich muss sagen, wo

44:11.690 --> 44:12.650
das Ding laufen soll.

44:13.610 --> 44:16.010
Und dann brauche ich noch meine Systemmodelle und fertig ist das.

44:20.430 --> 44:21.910
Jetzt kommt so ein Beispiel.

44:22.710 --> 44:25.430
Das ist jetzt, glaube ich, interessant mal zu sehen.

44:26.590 --> 44:29.970
Das stammt aus dem Buch von Balzert.

44:31.310 --> 44:33.910
Software Engineering, glaube ich, heißt es, aber da merken Sie mich

44:33.910 --> 44:35.290
nicht auf den genauen Titel fest.

44:36.130 --> 44:38.130
Da schauen wir uns erstmal durch, was da so drin steht.

44:39.670 --> 44:40.710
Das ist die Zielbestimmung.

44:43.630 --> 44:45.990
Zielbestimmung, ja.

44:54.090 --> 44:56.590
Also es gibt eine Firma, die heißt Teachware.

44:57.030 --> 44:57.810
Für die machen wir das.

44:58.490 --> 44:58.930
Ein Kunde.

45:00.830 --> 45:03.430
Der veranstaltet offenbar Seminare und braucht da irgendwelche

45:03.430 --> 45:03.910
Unterstützung.

45:05.230 --> 45:07.430
Das gibt uns schon mal eine gute Vorstellung, wo wir das wollen.

45:07.550 --> 45:10.030
Dann gab es noch mehrere Versionen.

45:10.550 --> 45:14.370
Die werden hier numerisch, wir finden das etwas verkürzt, aber werden

45:14.370 --> 45:16.990
hier kurz aufgeführt, was die Aktualisierung der aktuelle Version ist.

45:18.190 --> 45:22.570
Und ich sage zum Beispiel hier unten, das F115, das ist eine Funktion,

45:22.630 --> 45:23.430
die hinzugefügt wurde.

45:24.150 --> 45:24.710
Produkteinsatz.

45:25.730 --> 45:29.630
Produkte hin zu Kunden und Seminarverwaltung der Firma Zielgruppe.

45:30.010 --> 45:31.190
Die Mitarbeiter dieser Firma.

45:31.930 --> 45:33.050
Von Internet steht hier nichts.

45:33.710 --> 45:36.310
Die Plattform PC mit der aktuellen Version von Windows.

45:37.250 --> 45:38.950
Und das wäre der Produkteinsatz.

45:39.870 --> 45:41.470
Jetzt kommen die funktionalen Anforderungen.

45:41.930 --> 45:45.870
Jetzt gehe ich mal wieder an den Rechner, damit das mit den Blättern

45:45.870 --> 45:47.010
nicht zu kompliziert ist.

45:48.030 --> 45:48.050
So.

45:49.130 --> 45:50.230
Funktionale Anforderungen.

45:51.570 --> 45:53.390
Funktionale Anforderungen Nummer 10.

45:53.730 --> 45:54.410
Erster Fassung.

45:54.570 --> 45:56.350
Änderung und Löschung von Kunden.

45:57.810 --> 45:59.330
Teilnehmer oder Interessenten.

46:00.250 --> 46:04.550
Das würde man jetzt zum Beispiel im Glossar haben.

46:05.390 --> 46:09.270
Der Kunde wird definiert als Teilnehmer an Seminaren oder

46:09.270 --> 46:10.390
Interessenten.

46:10.390 --> 46:11.890
An Seminaren.

46:12.310 --> 46:17.010
Erster Fassung heißt, ich erfasse deren Namen, Adresse und was ich

46:17.010 --> 46:18.110
sonst noch an Details brauche.

46:18.570 --> 46:21.470
Was ich da an Details brauche, das wird wahrscheinlich erscheinen in

46:21.470 --> 46:22.430
den Produktdaten.

46:22.770 --> 46:24.810
Die sind ja der nächste Abschnitt, der vierte Abschnitt.

46:30.680 --> 46:32.020
Funktion Nummer 20.

46:32.480 --> 46:33.540
Benachrichtigung der Kunden.

46:33.760 --> 46:36.780
Anmelde, Bestätigung, Abmelde, Bestätigung, Änderungsmitteilung,

46:36.860 --> 46:37.520
Rechnung, Werbung.

46:38.720 --> 46:41.860
Sie sehen jetzt, dass ich das als FA bezeichnet habe und nummeriere in

46:41.860 --> 46:42.460
10er Schritten.

46:42.860 --> 46:47.100
Das mache ich, dass wenn mir später noch eine neue funktionale

46:47.100 --> 46:50.100
Anforderung einfällt, die logischerweise irgendwo dazwischen gehört,

46:50.480 --> 46:51.900
dann habe ich noch neun Plätze frei.

46:52.160 --> 46:55.480
Nämlich FA21 bis FA29.

46:56.120 --> 47:00.280
Das ist immer dann praktisch, wenn ich diese Neunummerierung vermeiden

47:00.280 --> 47:00.640
möchte.

47:01.300 --> 47:03.080
Das ist ein ganz triviales Ding.

47:03.280 --> 47:09.360
Wenn Sie plötzlich irgendwo Funktionsanforderungen einfügen und damit

47:09.360 --> 47:12.360
die Nummerierung und alles andere verschieben und dann haben Sie

47:12.360 --> 47:15.220
Querbezüge, das sagt, eine Anforderung bezieht sich auf eine andere,

47:15.300 --> 47:16.340
dann stimmt das alles nicht mehr.

47:16.620 --> 47:20.920
Sie müssen es entweder so machen, genügend Lücken lassen oder es

47:20.920 --> 47:24.680
automatisieren, indem Sie, wie bei manchen Dokumenten,

47:28.940 --> 47:32.140
automatische Korrektur der Verweise haben können.

47:32.360 --> 47:37.760
Das geht zum Beispiel bei bei bei manchen textuellen

47:37.760 --> 47:38.540
Verarbeitungssystemen.

47:38.640 --> 47:42.020
Da brauche ich dann, kann ich das numerisch durchnummerieren und wenn

47:42.020 --> 47:45.020
sich die Nummern verschieben, dann werden die Querverweise korrigiert.

47:45.520 --> 47:48.180
Allerdings ist das Querverweis eingeben dann etwas aufwendiger.

47:49.600 --> 47:52.900
So, erste Fassung, Änderung und Löschung von Seminarveranstaltungen

47:52.900 --> 47:54.140
und Seminartypen.

47:55.340 --> 47:57.360
Seminarveranstaltungen und Seminartypen.

47:57.920 --> 48:03.320
Also Softwaretechnik 1 ist eine Vorlesungsveranstaltung, also keine

48:03.320 --> 48:04.220
Seminarveranstaltung.

48:04.500 --> 48:09.020
Ein Typ von Vorlesung, der wird jedes Jahr wiederholt und wenn es

48:09.020 --> 48:11.760
wiederholt wird und tatsächlich stattfindet, dann ist es eine

48:11.760 --> 48:12.420
Veranstaltung.

48:12.600 --> 48:17.020
Also wir sitzen gerade in der Veranstaltung zum Typ Softwaretechnik 1.

48:18.520 --> 48:19.880
Das zur Unterscheidung.

48:20.500 --> 48:22.600
Erste Fassung, Änderung und Löschung von Dozenten.

48:23.240 --> 48:24.960
Aha, derjenige, der das Seminar halten kann.

48:25.480 --> 48:28.860
Zuordnungen zu Seminarveranstaltungen und Seminartypen.

48:28.860 --> 48:33.880
Ein Dozent kann eine bestimmte Veranstaltung halten, ein Seminartypen,

48:34.700 --> 48:38.200
aber die aktuelle Veranstaltung kann von einem anderen gehalten sein,

48:38.280 --> 48:40.120
der ebenfalls natürlich in der Lage sein muss.

48:40.980 --> 48:42.300
Also brauchen wir diese Information.

48:43.880 --> 48:46.260
Erste Fassung, Änderung und Löschung von Seminarbuchungen.

48:46.740 --> 48:48.220
Jemand, der sagt, ich möchte teilnehmen.

48:48.920 --> 48:51.280
Erstellung von Rechnungen, Erstellung verschiedener Listen,

48:51.400 --> 48:54.220
Teilnehmerliste, Umsatzliste, Teilnehmerbescheinigungen.

48:55.680 --> 48:58.460
Das könnte dann später nochmal ausgearbeitet werden.

48:58.900 --> 49:00.820
Anfragen auf folgende Art sollten möglich sein.

49:01.560 --> 49:03.920
Wann findet das nächste Seminar vom Typ X statt?

49:04.660 --> 49:07.560
Welche Mitarbeiter der Firma Y haben das Seminar X besucht?

49:08.220 --> 49:11.180
Das sind ein paar Anfragen an die kleine Datenbank, die dann dahinter

49:11.180 --> 49:11.720
stecken wird.

49:12.980 --> 49:14.020
Jetzt kommen die Produktdaten.

49:14.140 --> 49:15.340
Das sind schon die Funktionen, ja?

49:17.180 --> 49:20.080
Ich denke, das ist für ein Seminarverwaltungssystem schon mal

49:20.080 --> 49:21.360
ausreichend, zunächst mal.

49:21.840 --> 49:24.260
Jetzt schreiben wir nochmal auf, was wir an Produktdaten brauchen.

49:24.260 --> 49:28.460
Und das sind jetzt, eigentlich geht es schon hervor aus den

49:28.460 --> 49:33.340
Anforderungen, die so heißen wie Ersterfassung, Änderungen und

49:33.340 --> 49:33.640
Löschen.

49:35.580 --> 49:37.900
Daten für den Kunden, über die Kunden.

49:38.680 --> 49:43.880
Das sind wahrscheinlich Namen, Adresse, vielleicht auch

49:43.880 --> 49:44.480
Bankverbindung.

49:45.100 --> 49:48.040
Falls ein Kunde zu einer Firma gehört, dann sind relevanten Daten für

49:48.040 --> 49:49.120
die Firma zu speichern.

49:49.680 --> 49:52.980
Daten über Seminarveranstaltungen, Seminartypen und Dozenten zu

49:52.980 --> 49:53.440
speichern.

49:54.200 --> 49:54.940
Also, ich weiß nicht.

49:55.960 --> 49:59.200
Eine Zusammenfassung des Inhalts eines Seminartyps.

49:59.780 --> 50:02.720
Die Seminarveranstaltungen natürlich gehen von einem bestimmten

50:02.720 --> 50:05.320
Zeitpunkt bis zu einem bestimmten Zeitpunkt, von einer bestimmten

50:05.320 --> 50:06.700
Uhrzeit zu einer bestimmten Uhrzeit.

50:07.040 --> 50:09.340
Das sind die typischen Daten, die ich für Seminarveranstaltungen

50:09.340 --> 50:09.720
brauche.

50:10.180 --> 50:12.020
Und für Dozenten brauche ich natürlich auch deren Namen und

50:12.020 --> 50:13.100
Telefonnummern und so weiter.

50:13.640 --> 50:17.120
Und welche Seminare sie veranstalten können und welche Veranstaltungen

50:17.120 --> 50:19.620
sie gerade durchgeführt haben.

50:22.560 --> 50:26.320
Relevante Daten sind immer so ein bisschen abgekürzt.

50:26.540 --> 50:30.520
Das heißt, an einer anderen Stelle, nämlich wenn wir das Lastenheft

50:30.520 --> 50:33.740
nochmal aufbohren zum Pflichtenheft, müssen wir dann explizit sagen,

50:33.860 --> 50:35.220
was die relevanten Daten sind.

50:36.640 --> 50:39.400
Bucht ein Kunde eine Seminarveranstaltung, dann sind entsprechende

50:39.400 --> 50:40.800
Buchungsdaten zu speichern.

50:41.440 --> 50:48.040
Also Kunde oder Kundennummer, welche Seminarveranstaltung gebucht hat.

50:49.440 --> 50:50.540
Nichtfunktionale Anforderungen.

50:50.540 --> 50:51.960
Aha, was haben die denn da?

50:53.680 --> 50:57.760
Da haben wir Leistungsdaten, das ist relativ einfach hier.

50:59.220 --> 51:02.560
Nicht länger als 15 Sekunden Interaktionszeit benötigen.

51:03.020 --> 51:06.040
Alle anderen Reaktionen müssen unter zwei Sekunden sein.

51:06.420 --> 51:08.580
Die FA80, das war die Abfrage.

51:09.700 --> 51:13.620
Welche Seminartypen hat Firma Y gebucht?

51:14.400 --> 51:16.960
Die dürfen 15 Sekunden dauern, alles andere muss in zwei Sekunden

51:16.960 --> 51:17.180
gehen.

51:20.620 --> 51:23.880
Kann man als ausreichend sehen oder kann man sagen, das ist viel zu

51:23.880 --> 51:24.180
langsam?

51:25.120 --> 51:28.840
Es müssen maximal 50.000 teilnehmen und maximal 10.000 Seminare

51:28.840 --> 51:29.960
verwaltet werden können.

51:31.360 --> 51:34.520
Dabei ist jetzt mal wieder was unklar, sind das jetzt Seminartypen

51:34.520 --> 51:36.440
oder sind das Seminarveranstaltungen?

51:37.340 --> 51:38.640
Müsste man nochmal nachfragen.

51:39.700 --> 51:43.160
Und dann kommen die Systemmodelle und da schauen wir uns mal das kurz

51:43.160 --> 51:46.600
an, das ist also ein Seminarorganisation Anwendungsfall.

51:46.700 --> 51:49.740
Wir haben die Kundenverwaltung, wir haben die Rechnungsstellung, wir

51:49.740 --> 51:53.160
haben die Anfragebearbeitung, die Zuzentenverwaltung, die

51:53.160 --> 51:55.660
Listenverwaltung und die Seminarverwaltung.

51:56.380 --> 51:59.700
Es gibt zwei Typen von Bearbeitern, die Kundensachbearbeiter und die

51:59.700 --> 52:00.780
Seminarsachbearbeiter.

52:03.200 --> 52:06.420
Die Kundensachbearbeiter haben nicht die gleiche Rechte wie die

52:06.420 --> 52:10.200
Seminarsachbearbeiter, das heißt die Kundensachbearbeiter kümmern sich

52:10.200 --> 52:16.020
hauptsächlich um die Kunden, die Seminarbearbeiter um die Seminare.

52:16.020 --> 52:20.400
Und hier gibt es eine Überlappung Anfragebearbeitung trifft wohl

52:20.400 --> 52:20.640
beide.

52:22.860 --> 52:25.320
Okay, das wäre also so ein Beispiel.

52:25.840 --> 52:27.740
Achso, Glossar fehlt uns noch.

52:28.500 --> 52:31.500
Dozent, Kunde, Seminartyp, Seminarveranstaltung.

52:32.040 --> 52:35.440
Zehner, Dozent, Leiter eines oder mehrerer Seminartypen, zahlende

52:35.440 --> 52:39.800
Teilnehmer, eine oder mehrere Seminarveranstaltungen, zahlende

52:39.800 --> 52:45.380
Teilnehmer, Seminartyp, Typ einer Lehrveranstaltung, ein normaler

52:45.380 --> 52:48.420
Anfängerkurs, Seminarveranstaltung, tatsächlich stattfindende

52:48.420 --> 52:51.800
Lehrveranstaltung, zum Beispiel Anfängerkurs Sommer 2014.

52:55.410 --> 52:55.590
Genau.

52:56.210 --> 53:00.930
Also sehen, das hat Hand und Fuß und gibt mir ein Gerüst, so dass ich

53:00.930 --> 53:06.850
sage, das und das und das und das muss ich sagen und im PSC halten Sie

53:06.850 --> 53:10.150
sich einfach an dieses Gerüst, da müssen wir nicht diskutieren.

53:11.470 --> 53:12.350
Fehlt da was?

53:12.350 --> 53:13.610
Und was fehlt?

53:14.270 --> 53:15.430
Ist das überflüssig?

53:15.490 --> 53:16.090
Brauchen wir das?

53:16.390 --> 53:18.610
Einfach nach diesem Schema vorgehen.

53:19.350 --> 53:22.230
Funktionale, Datentypen, nicht funktionale, Zielbestimmung,

53:22.410 --> 53:23.530
Einsatzort.

53:26.250 --> 53:27.490
Was hatten wir noch?

53:27.950 --> 53:32.330
Die Modelle, in diesem Fall absolut einfach und schließlich das

53:32.330 --> 53:32.730
Glosar.

53:33.130 --> 53:33.670
Sieben Stück.

53:34.470 --> 53:35.210
Rückzahl.

53:35.730 --> 53:40.910
Also Anforderungsbestimmung oder Anforderungsermittlung ist an sich

53:40.910 --> 53:42.650
auch ein Forschungsgebiet.

53:43.970 --> 53:47.450
Da gäbe es noch sehr, sehr, sehr viel mehr zu sagen darüber.

53:48.110 --> 53:54.070
Wie das geht, aber auf dem Level, wo wir uns befinden, reicht das

53:54.070 --> 53:54.410
erstmal.

53:55.470 --> 53:58.430
Wir können damit schon das Praktikum gestalten und wissen wenigstens,

53:58.990 --> 54:01.330
was funktionale und nicht funktionale Anforderungen sind und wie man

54:01.330 --> 54:01.850
sie aufschreibt.

54:04.410 --> 54:05.970
So, jetzt fehlen uns noch

54:09.150 --> 54:09.950
die Durchfahrkeitsuntersuchungen.

54:12.370 --> 54:17.090
Ich habe also jetzt die Anforderungen ermittelt und während ich das

54:17.090 --> 54:20.290
mache oder danach kann ich hier gerne sagen und kann ich das

54:20.290 --> 54:20.710
überhaupt?

54:23.210 --> 54:26.710
Es kann sein, dass ich die fachliche Durchfahrbarkeit nicht habe.

54:27.190 --> 54:29.010
Das heißt also, ich weiß einfach nicht, wie das geht.

54:30.070 --> 54:33.970
Dann kann ich sagen, na ist mir egal, das lerne ich halt, bevor das

54:33.970 --> 54:34.730
Projekt losgeht.

54:35.170 --> 54:36.390
So schwierig kann es nicht sein.

54:37.610 --> 54:40.450
Es kann sein, dass ich die Entwicklungsumgebung nicht habe oder die

54:40.450 --> 54:41.470
Zielmaschine nicht habe.

54:41.630 --> 54:42.350
Was mache ich dann?

54:43.370 --> 54:45.670
Brauche ich einen Simulator oder muss man Zugang verschaffen?

54:47.290 --> 54:53.750
Schließlich muss ich oder sollte ich alternative Lösungsvorschläge

54:53.750 --> 54:57.890
ansehen, könnte ich das ganze Problem zum Beispiel mit Kauf oder

54:57.890 --> 54:59.690
Anpassung von Standardsoftware erledigen.

54:59.690 --> 55:03.590
Könnte ich zum Beispiel hergehen und sagen, gut, dann nehme ich ein

55:03.590 --> 55:08.090
Datenbank -Verwaltungssystem für meine Teachware-Aufgaben und schreibe

55:08.090 --> 55:08.830
ein paar Skripte.

55:09.710 --> 55:10.510
Vielleicht tut es das.

55:11.570 --> 55:12.370
Könnte ja sein.

55:12.670 --> 55:13.470
Muss ich mir überlegen.

55:15.810 --> 55:18.670
Individualentwicklung oder Kauf, das ist eine typische Frage immer.

55:19.910 --> 55:24.870
Dann ist natürlich klar, ich muss auch sagen, habe ich auch die Leute?

55:26.250 --> 55:32.310
Erstens die Leute, die die fachliche Eignung haben und das können und

55:32.310 --> 55:34.130
wenn ich sie habe, haben die überhaupt auch Zeit.

55:34.810 --> 55:38.270
Kann ich dem Auftrag überhaupt entgegennehmen oder würde ich mir da

55:38.270 --> 55:42.610
etwas auf, das ich nicht in der vorgeschriebenen Zeit erledigen kann.

55:44.170 --> 55:45.870
Verfügbarkeit qualifizierter Fachkräfte.

55:46.670 --> 55:49.790
Das macht die Durchführbarkeitsstudie.

55:59.470 --> 56:03.610
Also muss ich das eben überprüfen, die fachliche, die personelle und

56:03.610 --> 56:05.050
die alternativen Lösungsvorschläge.

56:06.150 --> 56:07.990
Prüfende Risiken, die damit hereingehen.

56:09.650 --> 56:14.770
Und dann die ökonomische Durchführbarkeit, nämlich die Aufwands- und

56:14.770 --> 56:17.590
Terminschätzung und die Wirtschaftlichkeitsrechnung.

56:17.710 --> 56:23.930
Die Wirtschaftlichkeitsrechnung sieht so aus, dass ich sage, ich nehme

56:23.930 --> 56:27.930
die Aufwandsschätzung her, weiß ich, wie lange ich dran arbeiten muss,

56:27.990 --> 56:29.130
mit wie vielen Personen hoffentlich.

56:29.710 --> 56:31.790
Kann man davon ausrechnen, wie viel das kostet.

56:32.550 --> 56:34.550
Personalkosten im Wesentlichen, vielleicht auch Rechner.

56:35.630 --> 56:39.290
Wenn ich sie zusätzlich kaufen muss und dann sage ich, okay, die

56:39.290 --> 56:40.530
Kosten müssen aber hereinkommen.

56:42.030 --> 56:43.070
Wie rechne ich das aus?

56:43.190 --> 56:50.110
Ich nehme einfach meine Kostenrechnung her und ziehe davon ab, das

56:50.110 --> 56:53.690
Produkt von der Anzahl Kopien, das ich verkaufe, vielleicht nur eine,

56:54.450 --> 56:55.250
mal den Preis.

56:57.750 --> 57:00.470
Und dann noch die laufenden Kosten davon abziehen.

57:01.270 --> 57:03.450
Die Wirtschaftlichkeitsrechnung ist natürlich wichtig.

57:05.050 --> 57:07.290
Dann prüfen Sie rechtliche Gesichtspunkte.

57:08.250 --> 57:11.090
Können Sie Datenschutzbedingungen erfüllen?

57:11.630 --> 57:15.050
Brauchen Sie eine Zertifizierung, um die Software durchzuführen?

57:15.810 --> 57:17.670
Und welche Standards müssen eingehalten werden?

57:17.750 --> 57:21.970
Bei unserer TeachWare-Software ist höchstens der Datenschutz hier ein

57:21.970 --> 57:22.230
Thema.

57:22.570 --> 57:25.250
Das ist ganz sicher ein Thema hier, denn ich habe Kundentaten.

57:26.310 --> 57:31.250
Ich muss also dafür sorgen, dass diese Daten nicht in die falschen

57:31.250 --> 57:31.870
Hände gelangen.

57:34.740 --> 57:35.480
Unser Beispiel.

57:35.760 --> 57:40.060
So, da wären wir hier am Ende dieses Abschnittes.

57:41.220 --> 57:44.580
Dann wären wir eigentlich schon mit dem ersten Abschnitt der Planung

57:44.580 --> 57:45.040
fertig.

57:45.740 --> 57:49.820
Und es passt ganz gut, dass wir jetzt noch ein paar Minuten haben für

57:49.820 --> 57:52.280
die Definitionsphase.

57:52.840 --> 57:53.960
Die Definitionsphase.

57:54.140 --> 57:55.140
Wir sind also jetzt hier.

57:56.320 --> 57:57.500
Wir haben jetzt die Definition.

57:58.240 --> 58:01.960
Wir haben das Lastenheft bekommen mit den Funktionen und den

58:01.960 --> 58:03.240
nichtfunktionalen Anforderungen.

58:04.660 --> 58:09.880
Und was die Definition jetzt macht, ist, dieses Lastenheft nehmen und

58:09.880 --> 58:11.600
eine Spezifikation entwickeln.

58:12.260 --> 58:14.460
Und die steht dann in einem Pflichtenheft.

58:15.380 --> 58:16.940
Die beiden bringt man gerne durcheinander.

58:18.240 --> 58:19.820
Daher eine kurze Essensbrücke.

58:21.560 --> 58:23.380
Wie wissen Sie, was zuerst kommt?

58:24.160 --> 58:28.940
Einfach die Anfangsbuchstaben hernehmen im alphabetischen Reihenfolge.

58:29.020 --> 58:30.260
Lastenheft vor Pflichtenheft.

58:30.900 --> 58:32.160
So habe ich es mir jedenfalls gemerkt.

58:33.560 --> 58:36.580
Das Pflichtenheft ist nichts weiter als ein ausführlicheres

58:36.580 --> 58:37.260
Lastenheft.

58:37.800 --> 58:39.820
Es hat sogar fast die gleiche Gliederung.

58:42.160 --> 58:46.120
hat jetzt aber zusätzliche Modelle drin, nämlich das Objektmodell,

58:47.440 --> 58:51.160
Klassenmodelle, dynamische Modelle und ein Konzept für die

58:51.160 --> 58:52.020
Benutzungsoberfläche.

58:52.260 --> 58:53.380
Das kommt also noch hinzu.

58:54.660 --> 58:55.720
Zusätzlich zu dem...

58:56.460 --> 58:58.380
Das ist dann das gesamte Pflichtenheft.

58:59.320 --> 59:02.640
Das Pflichtenheft ist jetzt für den Informatiker geschrieben.

59:03.160 --> 59:04.100
Sie erinnern sich noch mal?

59:04.140 --> 59:07.480
Hier hatte ich immer, das Lastenheft soll das zukünftige Produkt aus

59:07.480 --> 59:08.640
Sicht des Kunden beschreiben.

59:09.720 --> 59:14.020
Das Pflichtenheft ist jetzt so genau aufgestellt, dass ich es einem

59:14.020 --> 59:17.520
Informatiker geben kann und sagen, hier, mach das mit deinem Team.

59:18.300 --> 59:20.180
Und es gibt keine Rückfragen mehr.

59:20.980 --> 59:24.240
Es sei denn, es gibt Änderungen im Pflichtenheft oder in den

59:24.240 --> 59:25.600
Anforderungen, das wäre natürlich blöd.

59:27.980 --> 59:34.040
Das Lastenheft und das Pflichtenheft zusammen, das Pflichtenheft, wird

59:34.040 --> 59:36.900
auch in dem Vertrag mit meinem Kunden eingehen.

59:37.180 --> 59:38.800
Da sagt er, bauen wir das?

59:38.800 --> 59:40.620
Und ich sage, ist das das, was du haben willst?

59:40.680 --> 59:41.460
Hier, das Lastenheft.

59:42.300 --> 59:44.400
Auf das Lastenheft einigt man sich im Vertrag.

59:44.700 --> 59:48.100
Das Lastenheft wird dann zu einem Anhang des Vertrages.

59:49.320 --> 59:51.340
Und das hat eine ganz wichtige Funktion.

59:52.460 --> 59:55.040
Das Lastenheft schützt sie nämlich vor Nachforderungen.

59:56.860 --> 01:00:01.300
Also es ist typischerweise so, dass der Kunde sagt, hm, das

01:00:01.300 --> 01:00:03.960
Lastenheft, ja wunderbar, implementiert das alles und dann bin ich

01:00:03.960 --> 01:00:04.200
happy.

01:00:05.280 --> 01:00:09.120
Und ein halbes Jahr später, kurz nachdem wir fertig sind, sagt er

01:00:09.120 --> 01:00:12.460
aber, ich hätte noch gerne übrigens ja so und so, da fällt mir gerade

01:00:12.460 --> 01:00:14.420
ein, da habe ich ja was vergessen.

01:00:14.780 --> 01:00:17.700
Wir haben noch diese Funktion, die brauche ich ja unbedingt auch noch.

01:00:18.240 --> 01:00:20.000
Das müssen Sie mir unbedingt auch noch machen.

01:00:20.500 --> 01:00:24.040
Dann sagen sie, machen wir gerne für Sie, aber im Lastenheft stand

01:00:24.040 --> 01:00:24.820
davon nichts.

01:00:25.600 --> 01:00:29.340
Das heißt, wir brauchen jetzt eine Vereinbarung über die zusätzlichen

01:00:29.340 --> 01:00:29.780
Kosten.

01:00:31.740 --> 01:00:34.420
Wenn Sie kein Lastenheft hätten, hätten Sie keine Basis.

01:00:34.420 --> 01:00:37.280
Ja, das habe ich immer gedacht, dass wir das brauchen, ist doch klar.

01:00:37.580 --> 01:00:39.880
Das müsste Ihnen doch von vornherein klar gewesen sein, dass wir diese

01:00:39.880 --> 01:00:40.660
Funktion brauchen.

01:00:40.980 --> 01:00:42.200
Dann stehen Sie ganz dumm da.

01:00:42.640 --> 01:00:46.480
Das Lastenheft schützt Sie vor Nachforderungen.

01:00:47.880 --> 01:00:48.320
Unentgeltlich.

01:00:48.600 --> 01:00:49.040
Nachforderungen.

01:00:50.080 --> 01:00:50.280
So.

01:00:52.440 --> 01:00:53.440
Ist also wichtig.

01:00:54.980 --> 01:00:56.540
Jetzt schauen wir uns an, was wir da machen.

01:00:57.280 --> 01:00:58.580
Jetzt wird es etwas technischer.

01:00:59.800 --> 01:01:04.000
Zunächst mal die Rolle der Definitionsphase erklären können,

01:01:04.100 --> 01:01:06.480
Objektmodelle und dynamische Modelle erstellen können.

01:01:06.780 --> 01:01:08.480
Da werden wir uns ziemlich lange unterhalten.

01:01:08.960 --> 01:01:14.540
Wir werden auch da wieder Auszüge aus der UML nehmen, aus der Unified

01:01:14.540 --> 01:01:16.020
Modeling Language.

01:01:17.080 --> 01:01:20.060
Für vorgegebene Aufgaben stellen wir ein Pflichtenheft, entsprechend

01:01:20.060 --> 01:01:22.060
dem beschriebenen Pflichtenheftschema erstellen können.

01:01:22.320 --> 01:01:25.260
Wie gesagt, Pflichtenheft ist sehr ähnlich dem Lastenheft, nur

01:01:25.260 --> 01:01:25.880
ausführlicher.

01:01:27.220 --> 01:01:31.700
Und das hatten wir schon gesagt, das Pflichtheft definiert, modelliert

01:01:31.700 --> 01:01:35.320
das zu erstellende System oder Änderung an einem existierenden System

01:01:35.320 --> 01:01:39.620
so vollständig und exakt, dass Entwickler das System implementieren

01:01:39.620 --> 01:01:43.160
können, ohne nachfragen oder raten zu müssen, was zu machen ist.

01:01:44.820 --> 01:01:44.860
Ja.

01:01:47.300 --> 01:01:50.580
Das Pflichtenheft, wie das Lastenheft übrigens auch, beschreibt nicht

01:01:50.580 --> 01:01:52.600
wie, sondern was zu implementieren ist.

01:01:52.720 --> 01:01:55.700
Das sagt nicht, welche Algorithmus wir benutzen müssen, welche

01:01:55.700 --> 01:01:59.060
Datenstrukturen benutzen müssen, welche Programmiersprache in der

01:01:59.060 --> 01:02:04.120
Regel, welche Programmierumgebung, es sei denn, für den Sonderfall,

01:02:04.180 --> 01:02:07.180
den ich erwähnte, dass der Kunde die Software weiter pflegen möchte,

01:02:07.780 --> 01:02:12.940
aber in der Regel ist es so, dass wie sie das umsetzen, mit welchen

01:02:12.940 --> 01:02:15.820
Techniken, mit welcher Datenbank, mit welcher Programmiersprache, mit

01:02:15.820 --> 01:02:20.580
welchem Versionsmanagement-System, mit welchem Testwerkzeug, mit

01:02:20.580 --> 01:02:26.420
welchem Maven oder was immer, das ist eigentlich die Aufgabe des

01:02:26.420 --> 01:02:29.400
Entwicklers, das zu bestimmen und festzulegen.

01:02:30.820 --> 01:02:34.180
Aber es muss so vollständig sein, dass ich in der Informatik jederzeit

01:02:34.180 --> 01:02:36.340
weiß, was zu machen ist, ohne raten zu müssen.

01:02:38.100 --> 01:02:38.280
So.

01:02:39.940 --> 01:02:41.520
Wir haben jetzt mehrere Modelle.

01:02:44.280 --> 01:02:46.760
Davon gehören erstmal die funktionalen Modelle, die

01:02:46.760 --> 01:02:49.540
Anwendungsfalldiagramme, die nehmen wir gleich mit.

01:02:49.540 --> 01:02:51.620
Die werden auch wieder auftauchen.

01:02:52.180 --> 01:02:54.520
Dann kommt das sogenannte Objektmodell.

01:02:54.640 --> 01:02:57.540
Da werden wir Klassen- und Objektdiagramme zeichnen.

01:02:58.840 --> 01:03:04.400
Und zwar diejenigen Klassen, die in der Anforderung Dokumentation

01:03:04.400 --> 01:03:07.940
genannt, also implizit genannt sind, nicht die, die ich zur

01:03:07.940 --> 01:03:09.940
Implementierung zusätzlich brauche.

01:03:10.240 --> 01:03:13.040
Das heißt, wir werden dann Diagramme mit kleinen Kästchen malen und

01:03:13.040 --> 01:03:18.180
Vererbungspfeilen und Assoziationspfeilen und dergleichen, um uns

01:03:18.180 --> 01:03:21.520
einen Überblick über die benötigten Klassen zu geben.

01:03:22.680 --> 01:03:26.200
Und dann brauchen wir noch das dynamische Modell oder die dynamischen

01:03:26.200 --> 01:03:26.760
Modelle.

01:03:28.600 --> 01:03:31.980
Die zeigen uns die Abläufe, die wir brauchen.

01:03:32.680 --> 01:03:34.900
Da gehört zum Beispiel ein Sequenzdiagramm dazu.

01:03:35.520 --> 01:03:39.020
Ein Sequenzdiagramm sagt Ihnen eigentlich, in welcher Reihenfolge die

01:03:39.020 --> 01:03:41.720
Aufrufe passieren in einer gegebenen Funktion.

01:03:42.920 --> 01:03:43.840
Das machen die Sequenzdiagramme.

01:03:44.920 --> 01:03:50.560
Zustandsdiagramme sind einfach bestimmt normale endliche Automaten mit

01:03:50.560 --> 01:03:52.080
endlicher Anzahl von Zuständen.

01:03:52.360 --> 01:03:55.720
Zustandsübergängen, Grundlagen der Informatik sind das.

01:03:56.340 --> 01:03:57.860
Mit kleinen Änderungen.

01:03:58.860 --> 01:04:00.960
Zustandsdiagramm oder einfach endlicher Automat.

01:04:01.740 --> 01:04:03.300
Und dann gibt es noch was Komplizierteres.

01:04:03.400 --> 01:04:04.800
Das sind Aktivitätsdiagramme.

01:04:05.320 --> 01:04:08.780
Die erlauben Ihnen auch parallele Abläufe zu beschreiben.

01:04:13.080 --> 01:04:15.420
Das stört ein bisschen, wenn Sie direkt vor mir quatschen.

01:04:16.360 --> 01:04:17.220
Ich verliere den Faden.

01:04:19.800 --> 01:04:20.780
Jetzt habe ich ihn gerade verloren.

01:04:20.880 --> 01:04:21.280
Wo waren wir?

01:04:23.280 --> 01:04:23.540
So.

01:04:25.520 --> 01:04:26.180
Jetzt schauen wir mal.

01:04:26.340 --> 01:04:27.420
Jetzt hätten wir noch 2 Minuten.

01:04:27.900 --> 01:04:30.340
Aber das mit dem Modell, das kriege ich jetzt nicht mehr durch.

01:04:31.600 --> 01:04:33.120
Das mit dem Modell machen wir nächstes Mal.

