WEBVTT

00:05.600 --> 00:09.120
So, es geht gleich los, bitte nehmen Sie Platz, machen Sie Ihre

00:09.120 --> 00:11.660
Ablenkungsgeräte aus.

00:15.820 --> 00:17.200
Und machen Sie mit.

00:18.800 --> 00:20.120
Ein paar Sekunden gibt es noch.

00:24.110 --> 00:29.190
So, also wir waren jetzt bei den Schätzmethoden, die machen wir heute

00:29.190 --> 00:29.670
fertig.

00:30.570 --> 00:34.750
Und dann fangen wir an mit den Prozessmodellen, da kommen natürlich

00:34.750 --> 00:40.550
alte Bekannte, wie das FAST-Modell nochmal vor, aber auch Extreme

00:40.550 --> 00:43.730
Programming und Scrum und das Microsoft-Modell.

00:44.250 --> 00:46.850
Ich habe da was Interessantes für die nächste, für die letzte

00:46.850 --> 00:48.450
Vorlesung aufbewahrt.

00:48.510 --> 00:49.370
Muss ja sein, oder?

00:50.070 --> 00:51.150
Etwas, was Spaß macht.

00:52.110 --> 00:55.030
Und also heute machen wir jetzt die Schätzmethoden fertig.

00:55.170 --> 00:58.990
Wir hatten letztes Mal von der sogenannten Analogie-Methode gehört.

00:59.630 --> 01:03.130
Die Analogie-Methode sagt einfach nur, wir haben ein ähnliches Projekt

01:03.130 --> 01:03.990
schon mal durchgeführt.

01:04.270 --> 01:07.350
Wir wissen, wie teuer das war.

01:08.330 --> 01:12.010
Wir können in etwa abschätzen, was wir von dem alten Projekt wieder

01:12.010 --> 01:13.490
benutzen können, wenn es sowas gibt.

01:14.370 --> 01:18.290
Wir wissen, wie viel davon wir überarbeiten können, müssen und wie

01:18.290 --> 01:19.270
viel neu hinzukommt.

01:19.770 --> 01:21.130
Und das schätzen wir einfach mit den gleichen

01:24.710 --> 01:27.170
Aufwandsfaktoren wie bei der ursprünglichen Entwicklung.

01:27.430 --> 01:30.490
Wenn etwas komplizierter ist, dann legen wir da noch etwas zu.

01:30.490 --> 01:32.310
Das war die Analogie-Methode.

01:32.530 --> 01:35.690
Es ist natürlich einfach, global Schätzung.

01:36.050 --> 01:43.230
Es wird nicht aufgeteilt in große Unterprojekte oder so etwas.

01:45.790 --> 01:47.770
Ist aber relativ ungenau.

01:48.550 --> 01:53.090
Es gibt noch eine Variante davon, die heißt der Planungspoker.

01:53.690 --> 01:55.270
Den schauen wir uns aber noch genauer an.

01:55.270 --> 02:00.350
Da sagt man einfach in einem Treffen, wie viel man meint, dass es

02:00.350 --> 02:01.650
kosten wird oder dauern wird.

02:02.210 --> 02:06.050
Und dann schaut man sich die verschiedenen Schätzungen der Teilnehmer

02:06.050 --> 02:06.770
der Gruppe an.

02:07.350 --> 02:13.430
Und dann diskutiert man so lange rum, bis man auf eine gemeinsame

02:13.430 --> 02:15.010
Schätzung kommt.

02:15.490 --> 02:17.550
Aber ich werde Ihnen das noch einmal genauer zeigen.

02:17.990 --> 02:19.530
Da gibt es sogar Spielkarten dazu.

02:19.690 --> 02:21.030
Darum heißt es Planungspoker.

02:24.590 --> 02:26.770
Jetzt schauen wir uns noch etwas anderes an.

02:26.870 --> 02:33.970
Das ist eigentlich verwandt mit den Methoden, die wir als übernächstes

02:33.970 --> 02:34.150
nehmen.

02:34.250 --> 02:35.250
Die Kokomo-Methode.

02:35.450 --> 02:41.970
Und zwar wird hier schon mal so hergegangen, dass man das entstehende

02:41.970 --> 02:47.430
Produkt in Teilprodukte zerlegt und diese einzeln schätzt.

02:47.550 --> 02:51.910
Und zwar sowohl vom Umfang her als auch vom zusätzlichen Aufwand, ob

02:51.910 --> 02:55.730
der nominal ist oder höher ist, zurechnend ist.

02:56.170 --> 02:57.310
Ich zeige Ihnen ein Beispiel.

02:58.470 --> 03:01.650
Angenommen, wir unterscheiden uns Steuerprogramme, Ein- und

03:01.650 --> 03:04.830
Ausgabeprogramme, also die, die eine Ausgabe betätigen,

03:05.210 --> 03:07.210
Datenverwaltungsroutinen, Algorithmen.

03:08.570 --> 03:12.070
Das wäre eine mögliche Kategorisierung, aber die Kategorisierung ist

03:12.070 --> 03:12.610
nicht fest.

03:12.610 --> 03:16.910
Die können Sie festlegen, so wie Sie für Ihren Betrieb oder

03:16.910 --> 03:18.270
Softwarehaus benötigen.

03:19.930 --> 03:23.410
Dann schaut man sich die Anzahl der Teilprodukte an, die zu jedem

03:23.410 --> 03:27.550
dieser Kategorien gehören und multipliziert mit dem Aufwand diese

03:27.550 --> 03:31.730
Kategorie und dann addiert man das Ganze auf.

03:32.110 --> 03:34.750
Man nennt das auch Aufwand-pro-Einheit-Methode.

03:35.150 --> 03:36.850
Hier wäre also ein Beispiel.

03:37.010 --> 03:41.150
Man hat hier vier Kategorien, Steuerprogramme, Ein- und Ausgabe,

03:41.290 --> 03:42.590
Datenverwaltung, Algorithmen.

03:43.830 --> 03:47.830
Man schaut sich an, wie viele Teilprodukte man hat und wie umfangreich

03:47.830 --> 03:48.230
die sind.

03:48.490 --> 03:52.250
Also zum Beispiel hat man ein Steuerprogramm mitgeschätzt, also wieder

03:52.250 --> 03:56.310
die Schätzung, 500 Zeilen und nachdem ein Steuerprogramm teuer ist,

03:56.470 --> 04:00.430
aufwendig ist, kompliziert ist, gibt man einen Aufwandsfaktor von 1,8.

04:00.930 --> 04:04.890
Dann sagt man also, das ist so gut wie 900 Zeilen normal.

04:06.890 --> 04:10.750
Dann bei den Ein- und Ausgabe-Programmen, das haben wir drei, nämlich

04:10.750 --> 04:14.470
einmal mit 700 Zeilen geschätzt, einmal mit 500, zweimal mit 500

04:14.470 --> 04:18.770
Zeilen geschätzt, gibt 1.700, der Aufwandsfaktor ist auch etwas höher

04:18.770 --> 04:23.090
als nominell, einfach nur runterschreiben kann, also gibt das aus der

04:23.090 --> 04:27.410
1.700 Summe bewerte 2.500.

04:29.150 --> 04:33.470
Datenverwaltung ist einmal 800, zweimal 250, insgesamt 1.300, der

04:33.470 --> 04:36.130
Aufwandsfaktor ist hier nominell, das ist ein relativ einfaches

04:36.130 --> 04:36.450
Programm.

04:36.990 --> 04:38.830
Also gut, das ist gleich 1.300.

04:39.330 --> 04:42.750
Unsere Algorithmen sind wieder kompliziert, da gibt es also sechs

04:42.750 --> 04:47.510
Stück davon, einmal 300, einmal 5 mal 100 wären eigentlich 800, aber

04:47.510 --> 04:49.670
da weiß man, dass man viele Fehler macht.

04:50.250 --> 04:53.170
Daher sagen wir, das ist der doppelte Aufwand verglichen mit einem

04:53.170 --> 04:55.690
Datenverwaltungsanwendung.

04:55.970 --> 05:00.990
Und dann addiert man das auf und schon hat man 6.350 Zeilen Code.

05:01.850 --> 05:05.090
Und jetzt muss man natürlich sagen, okay, und jetzt?

05:05.730 --> 05:08.230
Jetzt muss ich das nur in Personenmonate umwandeln.

05:08.890 --> 05:14.310
Dazu brauchen Sie auch wieder einen Aufwandsfaktor, den man auch

05:14.310 --> 05:16.510
wieder aus der Erfahrung gewinnen kann.

05:17.070 --> 05:20.910
Also auch hier wieder die Erfahrung, ich sagte Ihnen ja gerade mal, so

05:20.910 --> 05:27.190
drei Zeilen Code pro Tag ist extrem wenig.

05:29.270 --> 05:33.310
Und das hoffe ich, dass dann meistens etwas mehr herauskommt.

05:34.270 --> 05:37.930
Aber Sie müssen bedenken, dass bei dieser geringen Zahl eben alles

05:37.930 --> 05:38.730
eingerechnet ist.

05:38.890 --> 05:41.750
Nicht nur das Zeilen Code, das man schreibt, sondern auch die

05:41.750 --> 05:45.750
Vorbereitung, Planung, Definition und Entwurf und Test.

05:45.970 --> 05:47.290
Gehört also alles dazu.

05:48.130 --> 05:51.330
Und dann kommt letztendlich ein niedrigerer Wert raus, als man wohl

05:51.330 --> 05:54.390
denkt, wenn man am Anfang nur vor sich hin programmiert.

05:54.390 --> 05:57.110
Los drauf los programmiert, ohne lange Planung.

05:58.970 --> 06:02.170
Jetzt brauchen Sie also eine umfangreiche empirische Datensammlung,

06:02.230 --> 06:06.630
damit Sie diese Aufwandsfaktoren kennen und die Umwandlung in

06:06.630 --> 06:09.650
Personenmonate.

06:11.330 --> 06:15.730
Und man muss sie permanent überprüfen, ob sie noch stimmen.

06:16.010 --> 06:19.250
Weil es sich ja mit neuen Methoden, neuen Programmiersprachen, anderen

06:19.250 --> 06:22.850
Programmiersprachen, neuen Werkzeugen, verbesserten Werkzeugen,

06:22.850 --> 06:26.530
verbesserten Testwerkzeugen, neue Strategien beim Testen.

06:26.690 --> 06:31.310
Also ich kann sich der Aufwand wieder verschieben.

06:31.410 --> 06:32.390
Aber so ist es.

06:33.330 --> 06:35.890
Wir arbeiten hier mit Schätzungen.

06:36.030 --> 06:40.290
Wir können hier nicht exakt sagen, auf das Personenmonat genau, wie

06:40.290 --> 06:41.150
viel wir brauchen werden.

06:43.990 --> 06:49.030
Okay, dann kommt als nächstes das Kokomo 2.

06:49.030 --> 06:51.710
Kokomo 2 heißt, es gab auch ein Kokomo 1, natürlich.

06:53.210 --> 06:54.970
Das ist jetzt sehr kompliziert.

06:55.130 --> 06:57.070
Das ist ein typisches Berechnungsmodell.

06:59.170 --> 07:02.930
Und das schätzt die Gesamthauer eines Softwareprojektes in

07:02.930 --> 07:04.910
Personenmonaten.

07:06.790 --> 07:08.630
Vorausgesetzt man hat natürlich Zahlencode.

07:09.870 --> 07:13.070
Und hat auch so etwas wie diese zusätzlichen Aufwandsfaktoren mit

07:13.070 --> 07:13.850
berücksichtigt.

07:14.810 --> 07:23.330
Außerdem berücksichtigt dieses Modell, dass bei steigender Größe die

07:23.330 --> 07:25.430
Dauer überproportional steigt.

07:29.550 --> 07:34.070
Wenn Sie Millionen Zahlencode erfordern, ist die Produktivität

07:34.070 --> 07:37.830
geringer, als wenn Sie nur 1.000 Zahlencode benötigen.

07:38.370 --> 07:39.410
Und das erkläre ich Ihnen jetzt.

07:39.430 --> 07:40.830
Da gibt es eine komplizierte Formel.

07:41.610 --> 07:42.570
Ist aber nicht so wild.

07:44.030 --> 07:46.510
Wir wollen also ausreichend Personenmonate.

07:46.870 --> 07:48.270
Das ist das PM.

07:49.770 --> 07:52.790
A ist eine Konstante für die Kalibrierung des Modells.

07:53.290 --> 07:55.530
Es wird an allen Ecken und Enden an dem Modell kalibriert.

07:55.650 --> 07:59.770
Aber das ist diejenige, die sagt, arbeite ich z.B.

07:59.890 --> 08:05.630
mit Lines of Code oder arbeite ich mit sogenannten Funktionspunkten.

08:06.070 --> 08:07.350
Funktionspunkte kennen wir nicht.

08:07.530 --> 08:09.270
Das ist auch eine weitere Schätzmethode.

08:09.270 --> 08:11.330
Wir würden es also zu weit führen.

08:11.450 --> 08:13.510
Aber bei Funktionspunkten, da sagt man, man hat eine

08:13.510 --> 08:18.010
Geschäftsanwendung und man zählt die einzelnen Funktionen und deren

08:18.010 --> 08:22.970
Komplexität, ohne überlegen zu müssen, wie viel Zahlencode man dafür

08:22.970 --> 08:23.490
braucht.

08:24.270 --> 08:26.830
Und die Funktionen können also sein Verarbeitung, sie können sein

08:26.830 --> 08:29.850
Eingabe, sie können sein Ausgabe, sie können Benutzerschnittstelle

08:29.850 --> 08:30.730
sein oder so etwas.

08:31.670 --> 08:34.530
Und da rächt man also Funktionspunkte aus.

08:34.610 --> 08:37.210
Und die sind natürlich mehr wert als eine Zeile Code.

08:37.210 --> 08:39.930
Und diese Kalibrierung steckt dann z.B.

08:40.130 --> 08:41.130
in diesem A.

08:43.190 --> 08:43.470
Gut.

08:44.030 --> 08:46.250
Das nächste, das ist die Größe.

08:46.910 --> 08:49.350
Und zwar in 1000 Zeilen Codeneinheiten.

08:50.090 --> 08:51.790
Das müssen Sie also leider schätzen.

08:52.670 --> 08:53.610
Kann ich jetzt z.B.

08:53.710 --> 08:54.810
in Planungsbroker schätzen.

08:55.670 --> 08:59.690
Oder mit den anderen Methoden, mit der Analogie-Methode, die wir

08:59.690 --> 09:00.210
vorhin hatten.

09:01.370 --> 09:06.050
So, und jetzt kommt ein Exponent drüber über die Größe und dieser

09:06.050 --> 09:10.830
Exponent verursacht jetzt, dass die Anzahl Personenmonate mit der

09:10.830 --> 09:15.430
Größe nicht linear steigt, sondern etwas überlinear, also etwas

09:15.430 --> 09:16.570
überproportional.

09:16.730 --> 09:24.050
Sie sehen schon, der Exponent ist 1,01 plus dieses Zeug hier, 0,01 mal

09:24.050 --> 09:24.770
die Summen hier.

09:25.530 --> 09:26.850
Ich erkläre gleich, was das ist.

09:27.270 --> 09:32.510
Und am Schluss wird er auch noch mit weiteren Faktoren multipliziert.

09:33.090 --> 09:34.610
Erkläre ich auch natürlich noch.

09:35.230 --> 09:37.770
Also, SF, das sind die Dinger hier.

09:38.390 --> 09:40.490
Das sind die sogenannten Skalierungsfaktoren.

09:41.290 --> 09:44.870
Die variieren von 1 bis 5.

09:47.090 --> 09:49.410
Es gibt 5 dieser Skalierungsfaktoren.

09:49.490 --> 09:51.590
Ich zeige Ihnen gleich, jetzt muss ich das erste Rechnen erklären.

09:53.050 --> 09:53.930
Es gibt 5 Stück.

09:54.910 --> 09:55.770
Wenn ich also z.B.

09:55.930 --> 10:02.810
den niedrigsten Wert wählen würde, dann wäre das eine 0.

10:03.830 --> 10:06.250
Dann kommt hier eben kein Beitrag hinzu.

10:07.010 --> 10:09.130
Wenn ich den größten Wert habe, dann kommt hier immer eine 5.

10:09.590 --> 10:15.850
Mal 5 ist 25, aber ich nehme mal 0,01, also bleibt mir höchstens 0,25

10:15.850 --> 10:17.650
Zusatz hier übrig.

10:18.450 --> 10:23.050
Das heißt, diese Skalierungsfaktoren erhöhen die exponentielle

10:23.050 --> 10:23.450
Steigung.

10:23.970 --> 10:27.010
Aber die ist sehr schwach wegen 1,0 irgendwas.

10:28.870 --> 10:31.890
Das waren also die sogenannten Skalierungsfaktoren.

10:32.030 --> 10:33.630
Ich erkläre gleich, was da alles reingeht.

10:35.070 --> 10:39.230
Und schließlich, das sind multiplizative Kostenfaktoren.

10:40.430 --> 10:44.090
Die stehen jetzt nicht im Exponenten, sondern die wirken sich einfach

10:44.090 --> 10:45.350
auf die Gesamtdauer aus.

10:47.850 --> 10:51.050
Dann schauen wir mal, was diese komischen Skalierungsfaktoren sind.

10:51.850 --> 10:53.850
Die gehen also von 0 bis 5.

10:53.850 --> 10:55.290
Von 0 bis 5.

10:55.330 --> 10:56.510
0 heißt kein Einfluss.

10:57.010 --> 10:59.770
5 ist der maximale Einfluss, wohlgemerkt.

11:00.150 --> 11:02.590
Multipliziert mal mit 0,01.

11:03.670 --> 11:06.150
Und diese Skalierungsfaktoren sind also folgendes.

11:07.050 --> 11:09.570
Das eine ist die Presidentedness.

11:10.970 --> 11:11.990
Presidentedness könnte...

11:11.990 --> 11:13.850
Ich weiß nicht so recht, wie ich das übersetzen soll.

11:14.730 --> 11:15.570
Erfahrung damit.

11:15.910 --> 11:19.270
Hat man diesen Typ von System schon geschrieben?

11:20.610 --> 11:22.430
Hier drüben wäre also...

11:22.430 --> 11:24.970
Ich bin total vertraut damit, mit dieser Anwendung.

11:25.110 --> 11:26.850
Und hier noch nie gesehen.

11:28.330 --> 11:30.590
Und hier drin, somewhat unprecedented.

11:30.830 --> 11:32.690
Also ein bisschen neu.

11:33.450 --> 11:35.690
Da gibt es eine Abstimmung von 0 bis 5.

11:36.490 --> 11:37.950
Und die anderen gehen etwa ähnlich.

11:38.070 --> 11:39.910
Auch immer von 0 bis 5.

11:41.310 --> 11:43.430
Development Flexibility, die man hat.

11:44.570 --> 11:46.970
Allgemeine Ziele bei der Flexibilität.

11:46.970 --> 11:50.470
Und hier hat man sehr große...

11:52.310 --> 11:55.430
Anforderungen an die Produktentwicklung.

11:57.530 --> 12:01.070
Dann sagt man, was ist das Risiko an der Architektur?

12:01.210 --> 12:05.490
Beziehungsweise daran, die Risiko...

12:05.490 --> 12:08.830
die Risikoauflösung zu betreiben.

12:09.990 --> 12:12.350
Und da sagt man...

12:12.350 --> 12:16.510
Ist das sehr groß?

12:17.050 --> 12:23.110
Also sind wir hier voll vertraut, dann kommt hier der Faktor 0 dazu.

12:23.250 --> 12:24.070
Andernfalls 5.

12:24.890 --> 12:27.630
Team Cohesion, also der Zusammenhalt des Teams.

12:28.210 --> 12:30.290
Das ist also seamless interactions.

12:30.450 --> 12:32.930
Wir passen alle wunderbar zusammen, verstehen uns.

12:33.410 --> 12:37.510
Bis zu very difficult interactions, wenn das Team nicht gut

12:37.510 --> 12:38.510
miteinander auskommt.

12:42.350 --> 12:47.190
Dann kann man auch noch die Prozessreife mit berücksichtigen, die

12:47.190 --> 12:48.050
Process Maturity.

12:48.490 --> 12:55.050
Da gibt es einen CMM Capability Maturity Model, heißt das.

12:55.550 --> 12:59.870
Einen Fragebogen, den man ausfüllen kann, um auch hier einen Wert zu

12:59.870 --> 13:00.250
bekommen.

13:00.970 --> 13:04.170
Und zwar die Anzahl der Antworten, Ja-Antworten.

13:07.210 --> 13:10.010
Sehen wir natürlich auch nicht, aber Sie sehen schon, wir haben da 1,

13:10.130 --> 13:11.650
2, 3, 4, 5 Stück.

13:12.550 --> 13:17.030
Maximal ist es 5, also haben wir maximal den Wert 25 und minimal den

13:17.030 --> 13:17.450
Wert 0.

13:17.950 --> 13:23.290
Also der Skalierungsfaktor wird irgendwo zwischen 0,25 und 0

13:23.290 --> 13:23.950
variieren.

13:24.330 --> 13:25.730
Und kommt im Exponenten vor.

13:26.350 --> 13:27.570
Jetzt kommen die anderen.

13:29.090 --> 13:30.610
Das sind ziemlich viel Stück.

13:31.110 --> 13:35.230
Da gibt es also Produktfaktoren, Plattformfaktoren, Personalfaktoren

13:35.230 --> 13:36.290
und Projektfaktoren.

13:38.010 --> 13:40.870
Oh Gott, das muss ich jetzt alles ausfüllen.

13:43.010 --> 13:45.170
Es sind 17 Faktoren.

13:46.230 --> 13:50.090
Normalerweise wird ein Nominalwert von 1 eingestellt, aber den kann

13:50.090 --> 13:50.730
man erhöhen.

13:50.970 --> 13:52.790
Meistens will man den nur erhöhen und nicht erniedrigen.

13:54.770 --> 13:59.590
Zum Beispiel die Zuverlässigkeit, die Datenbankgröße, die

13:59.590 --> 14:04.810
Produktkomplexität, die erforderte Wiederverwendbarkeit, die treibt

14:04.810 --> 14:12.830
natürlich die Kosten hoch, die Dokumentation, die den entsprechenden

14:12.830 --> 14:16.890
Phasen im Entwicklungszyklus angepasst sein muss, Plattformfaktoren

14:16.890 --> 14:21.510
haben, gibt es Beschränkungen bei der Laufzeit, gibt es Probleme mit

14:21.510 --> 14:25.810
dem Hauptspeicher, muss ich mich da sorgfältig darum kümmern, dass

14:25.810 --> 14:30.850
nicht zu viel Hauptsparer verbraucht wird, wie schnell, Plattform

14:30.850 --> 14:34.470
Volatility heißt natürlich, wie oft ändert sich die Plattform, auf der

14:34.470 --> 14:39.950
ich laufe, laufen kann, und wie schnell muss die Antwortzeit sein, die

14:39.950 --> 14:40.810
Turnaroundzeit.

14:41.170 --> 14:44.290
Dann gibt es noch die Personalfaktoren, wie gut sind die Leute, die

14:44.290 --> 14:47.950
ich habe, die Analystenfähigkeiten, die Programmierfähigkeiten, die

14:47.950 --> 14:52.090
Erfahrung mit der Anwendung, die Erfahrung mit der Plattform, auf der

14:52.090 --> 14:56.030
es laufen soll, die Erfahrung mit Sprache und Werkzeugen und

14:56.030 --> 15:02.250
Personalkontinuity, das heißt also, bleibt das Personal dabei oder

15:02.250 --> 15:05.270
habe ich mit einem hohen Personalwechsel zu rechnen.

15:06.870 --> 15:10.310
Und schließlich Projektfaktoren, nehme ich moderne

15:10.310 --> 15:16.450
Programmierpraktiken her, moderne Werkzeuge nehme ich her, muss ich

15:16.450 --> 15:20.970
die Entwicklung an mehreren Stellen durchführen, also geografisch

15:20.970 --> 15:24.970
verteilt, möglicherweise sogar über Kontinente hinweg, das kann also

15:24.970 --> 15:32.310
sehr viel extra Aufwand erfordern, ist der Entwicklungszyklusplan sehr

15:32.310 --> 15:36.010
stark komprimiert, das kennen wir schon vom Teufelsquadrat, das wird

15:36.010 --> 15:41.950
uns auch zusätzliche Kosten verursachen und muss ich außerdem noch

15:41.950 --> 15:45.210
eine sichere Anwendung machen, die außerdem noch klassifiziert werden

15:45.210 --> 15:45.490
muss.

15:46.730 --> 15:49.670
Okay, wie soll man das alles machen?

15:50.750 --> 15:52.450
Naja, da gibt es einen Rechner dafür.

15:52.870 --> 15:56.030
Erst schauen wir uns mal das überproportionale Wachstum an.

15:56.730 --> 16:00.110
Also, wir schauen uns ein vereinfachtes Modell an, das ist nochmal die

16:00.110 --> 16:00.490
Formel.

16:01.750 --> 16:03.290
Wir nehmen jetzt folgendes an.

16:04.950 --> 16:06.670
Wir nehmen an, A hat den Wert 3.

16:08.130 --> 16:13.230
Ist auch egal, warum der gerade 3 ist, ist uns jetzt mal egal.

16:16.530 --> 16:20.570
Dann sagen wir, alle Kostenfaktoren haben den Wert 1, also den

16:20.570 --> 16:22.630
Nominalwert, das war das Produkt hier hinten.

16:23.230 --> 16:24.610
Das sind diese Kostenfaktoren.

16:26.210 --> 16:32.770
Dann nehmen wir an, die Skalierungsfaktoren, da schauen wir uns drei

16:32.770 --> 16:33.710
verschiedene Fälle an.

16:33.830 --> 16:36.550
Wir nehmen einmal an, alle haben den Wert 5.

16:36.990 --> 16:42.430
Dann kommt der 1,01 plus 0,01 mal 25 dazu, also 1,26.

16:42.950 --> 16:45.170
Dann nehmen wir an, wir haben einen mittleren Wert, nämlich 3 für

16:45.170 --> 16:45.490
alle.

16:46.350 --> 16:50.890
Da käme dann 1,16 raus und schließlich hätten alle den Wert 0.

16:51.290 --> 16:54.750
Dann kommt eben hier ein 0 raus und wir haben als Ergebnis für das B

16:54.750 --> 16:55.630
nur 1,01.

16:57.830 --> 17:00.130
Damit vereinfacht sich unsere Formel.

17:01.470 --> 17:02.810
Nämlich zu dem hier.

17:03.150 --> 17:05.230
Dreimal die Größe hoch diesen B.

17:05.610 --> 17:06.730
Drei verschiedene Varianten.

17:07.890 --> 17:09.350
Also dreimal Size hoch B.

17:09.470 --> 17:10.650
Das ist das, was rauskommt.

17:10.790 --> 17:17.030
Wir variieren die Größe zwischen 10.000 und 200.000.

17:17.250 --> 17:18.650
Dann schauen wir uns mal die Kurve an.

17:19.370 --> 17:20.270
Die Kurve sieht so aus.

17:21.130 --> 17:22.710
Schauen Sie sich erst die Kurve an.

17:22.810 --> 17:25.710
Die Zahlen brauchen wir im Augenblick noch nicht.

17:30.610 --> 17:34.090
Hier haben wir also, die Skalierungsfaktoren sind hoch, weil unsere

17:34.090 --> 17:35.850
Fähigkeiten sehr flach sind.

17:36.270 --> 17:41.290
Beziehungsweise hier sind unsere Skalierungsfaktoren niedrig, weil wir

17:41.290 --> 17:43.070
große Fähigkeiten haben.

17:43.310 --> 17:46.190
Zum Beispiel das System ist uns vertraut.

17:46.850 --> 17:49.570
Die Teaminteraktionen funktionieren problemlos und so weiter.

17:49.890 --> 17:50.790
Diese fünf Faktoren.

17:52.130 --> 17:55.410
Sie sehen schon, es ist ein leichter Anstieg hier zu verzeichnen.

17:57.510 --> 18:00.650
Vergleichen wir mal 205.000 Zeilencode.

18:01.610 --> 18:04.670
Das kann man hier in der Tabelle ablesen.

18:05.430 --> 18:12.810
205.000 Zeilencode, Einheitenpersonenmonate und hier 2648 zu 2454.

18:13.210 --> 18:17.090
Das ist also schon mal eine Spanne von Faktor 4, der dazwischen liegen

18:17.090 --> 18:17.410
kann.

18:17.950 --> 18:22.850
Zwischen dem optimistischsten Wert und dem pessimistischsten Wert.

18:23.610 --> 18:24.690
Faktor 4.

18:25.170 --> 18:30.410
Aufgrund der exponentiellen Wachstums, wir sind noch ganz am Anfang

18:30.410 --> 18:34.590
des exponentiellen Wachstums hier, wird der Unterschied natürlich

18:34.590 --> 18:35.170
immer größer.

18:35.270 --> 18:37.210
Wenn wir in die Richtung gehen, wird er kleiner.

18:37.830 --> 18:39.870
Schauen wir uns zum Beispiel den Hunderttausender an.

18:40.070 --> 18:41.750
Ne, haben wir den Wert nicht.

18:42.810 --> 18:43.910
Was haben wir denn für einen Wert?

18:44.310 --> 18:45.230
20.000.

18:45.970 --> 18:49.210
Schauen wir uns dafür den Wert bei 20.000 Zeilencode an.

18:49.850 --> 18:52.410
Da ist ein Verhältnis von 61 zu 130.

18:53.050 --> 18:54.550
Das ist nur ein Faktor 2.

18:57.090 --> 19:01.130
Okay, das haben wir also verstanden, dass diese Kurven dann

19:01.130 --> 19:07.870
berücksichtigen, dass mit größeren Projekten die Ineffizienz schlimmer

19:07.870 --> 19:08.130
wird.

19:09.110 --> 19:13.010
Das ist die Erfindung von dem Barry Boehm, der das gemacht hat.

19:13.910 --> 19:16.210
Und natürlich gibt es dazu einen Rechner.

19:17.110 --> 19:18.770
Das ist der Kokomo 2 Rechner.

19:19.550 --> 19:21.850
Das werden Sie jetzt wahrscheinlich nicht lesen, aber oben ist die

19:21.850 --> 19:22.390
Webseite.

19:22.490 --> 19:25.150
Wenn nicht, dann gehen Sie halt aufs Internet und suchen Kokomo 2.

19:25.370 --> 19:28.850
Dann finden Sie genügend Zeugs, unter anderem diese Webseite.

19:29.830 --> 19:32.150
Und da können Sie einfach alles eintragen, was Sie brauchen.

19:32.270 --> 19:33.750
Im Moment steht noch gar nichts drin.

19:34.010 --> 19:37.490
Also hier zum Beispiel können Sie antragen, wie viel Zeilencode Sie

19:37.490 --> 19:38.050
neu brauchen.

19:38.450 --> 19:42.310
Sie können auch sagen, wie viel davon Sie wieder benutzen können, wie

19:42.310 --> 19:48.170
viel davon Sie modifizieren können oder ein paar andere Anteile mit

19:48.170 --> 19:48.990
eintragen.

19:49.130 --> 19:51.730
Also wir haben jetzt nur diesen Fall betrachtet, dass wir alle neue

19:51.730 --> 19:52.690
Zeilen berechnen.

19:53.490 --> 19:54.890
Das kann das also auch.

19:55.670 --> 20:01.370
Und dann sind hier die ganzen Kostentreiber mit eingefügt.

20:01.450 --> 20:04.610
Zum Beispiel Analyst Capability, also die Plattform, der Personal, das

20:04.610 --> 20:05.070
Produkt.

20:07.410 --> 20:09.970
Presidentedness, Development Flexibility, alles Zeug, was wir vorhin

20:09.970 --> 20:10.750
hatten, die fünf Stück.

20:10.750 --> 20:14.430
Hier stehen sie, dürfen sie dann einstellen, nominal oder schlimmer

20:14.430 --> 20:15.770
oder besser.

20:18.330 --> 20:20.970
Und dann kommt hier unten irgendwo, und das ist jetzt nicht mehr auf

20:20.970 --> 20:23.330
dem Bildschirm natürlich, die Ergebnisse.

20:25.570 --> 20:26.410
Das ist ja praktisch, oder?

20:27.210 --> 20:32.170
Also Sie können sich die Excel-Seite Cocoboat 2 bei uns herunterladen,

20:32.250 --> 20:34.270
da können Sie es mit einer Excel-Seite berechnen.

20:34.650 --> 20:37.070
Brauchen Sie niemanden dazu, brauchen Sie kein Internet, gar nichts.

20:37.070 --> 20:41.650
Ist allerdings nicht ganz so schön wie dieser Rechner hier, auf CSS,

20:41.890 --> 20:42.850
EUSC, EDU.

20:43.710 --> 20:44.970
Entschuldigung, das ist der hier.

20:45.430 --> 20:48.830
Das hier ist noch mal eine Beschreibung von den Leuten, die das

20:48.830 --> 20:49.510
gemacht haben.

20:51.370 --> 20:54.650
Und dann gibt es natürlich noch Veröffentlichungen dazu, zum Beispiel

20:54.650 --> 21:01.110
diesen Barry Bim, ist einer der bekanntesten Leute im Gebiet der

21:01.110 --> 21:01.850
Software -Schätzung.

21:03.670 --> 21:07.950
Auch das Cocoboat und Cocoboat 2 und andere Methoden entwickelt hat.

21:08.990 --> 21:10.210
Gibt es Fragen dazu?

21:20.340 --> 21:23.800
Wenn ich unterschiedliche Systeme verwende, kommt dann das gleiche

21:23.800 --> 21:24.080
raus?

21:24.620 --> 21:25.540
Sehr unwahrscheinlich.

21:27.700 --> 21:30.900
In einem gewissen Bereich wahrscheinlich, wenn nicht, dann kann ich ja

21:30.900 --> 21:32.540
immer sagen, haben Sie schlecht geschätzt.

21:33.560 --> 21:36.740
Das ist wirklich eine schwierige Angelegenheit, weil man ja nicht

21:36.740 --> 21:38.280
weiß, was die Wahrheit ist.

21:38.280 --> 21:41.260
Dadurch kann ich nicht sagen, ist der falsch oder ist der falsch, wenn

21:41.260 --> 21:42.340
Sie divergieren.

21:44.320 --> 21:47.920
Aber ja, man könnte mal versuchen, Cocoboat zu vergleichen mit der

21:47.920 --> 21:49.200
Analogie -Methode, die ich hatte.

21:49.700 --> 21:52.540
Aber Sie sehen auch, dass das Cocoboat natürlich sehr viel mehr

21:52.540 --> 21:53.680
berücksichtigt.

21:54.080 --> 21:56.300
Das kann die Analogie-Methode gar nicht.

21:57.380 --> 22:02.680
Das kann sie auch, also was es neu wiederverwendet und modifiziert.

22:04.240 --> 22:05.760
Und das war es dann aber schon.

22:05.760 --> 22:08.740
Wenn es also noch auf die Fähigkeiten der Entwickler eingehen würde,

22:08.820 --> 22:10.720
das kann ich in der Analogie-Methode nicht sagen.

22:11.700 --> 22:13.820
Darum wird da sicher etwas anderes rauskommen.

22:16.100 --> 22:17.180
Gibt es sonst noch Fragen?

22:24.820 --> 22:25.060
Okay.

22:28.740 --> 22:31.780
Es gibt aber noch andere Schätzmethoden, ein paar erwähne ich noch.

22:33.020 --> 22:34.080
Entschuldigung, zwei erwähne ich noch.

22:34.080 --> 22:36.400
Das Planungsblock hatte ich schon erwähnt, das schauen wir uns nochmal

22:36.400 --> 22:36.960
genauer an.

22:36.960 --> 22:41.100
Und dann gibt es noch die sogenannte Delphi-Methode nach dem Orakel

22:41.100 --> 22:41.800
von Delphi.

22:42.580 --> 22:46.680
Die Delphi setzt eine Menge von Schätzern, die mit der geplanten

22:46.680 --> 22:47.700
Software Erfahrung haben.

22:49.080 --> 22:51.480
Und in einer oder mehreren Runden wird folgendes gemacht.

22:51.600 --> 22:54.640
Jeder Schätzer gibt anonym einen Schätzwert plus eine Begründung dabei

22:54.640 --> 22:55.160
ab.

22:55.660 --> 23:00.880
Kostet uns, zwei Personenjahre oder sowas.

23:01.080 --> 23:04.100
Der Moderator fasst das Ergebnis zusammen und sucht sich vor allen

23:04.100 --> 23:08.240
Dingen die am weitesten entfernt liegenden Schätzungen aus.

23:09.580 --> 23:14.560
Wenn die Werte noch weit auseinander liegen, wird eine neue Runde

23:14.560 --> 23:19.420
gemacht, in der die Schätze ihre Schätzung ändern dürfen.

23:20.720 --> 23:23.220
Und die Hoffnung ist, dass dann die Schätzwerte irgendwann mal zu

23:23.220 --> 23:29.660
einem richtigen Wert konvergieren.

23:29.860 --> 23:33.580
Man muss eben dann diskutieren, warum der eine meint, dass es sehr

23:33.580 --> 23:36.600
lange dauert und der andere meint, es ist sehr schnell zu machen.

23:37.720 --> 23:42.280
Und diese Diskussion führt dann meistens zu einem besseren Ergebnis

23:42.280 --> 23:45.640
als einfach so, ich meine, das ist zwei Personenjahre und fertig.

23:47.400 --> 23:49.700
Und wenn sich dann nichts mehr ändert, dann nimmt man einfach den

23:49.700 --> 23:50.380
Durchschnittswert.

23:52.900 --> 23:55.920
Was soll ich denn sonst machen?

23:57.500 --> 24:00.560
Wichtig ist aber, dass die erste Schätzung unbeeinflusst ist von den

24:00.560 --> 24:00.820
anderen.

24:00.940 --> 24:03.280
Die weiteren Schätzungen nicht mehr, weil dann muss man ja

24:03.280 --> 24:03.840
diskutieren.

24:09.380 --> 24:12.440
Und der Planungsfokus ist einfach nur eine Variante davon.

24:13.000 --> 24:16.160
Die Variante sieht so aus, dass alle Teile immer einen Kartenstapel

24:16.160 --> 24:18.520
bekommen mit stark wachsenden Werten.

24:19.300 --> 24:25.020
Zum Beispiel 0, 1,5, 1, 2, 3, 5, 8, 13, 20, 40 und dann so eine Skala

24:25.020 --> 24:29.920
immer stärker in jeder Größenordnung wieder springen.

24:31.680 --> 24:36.460
100 unendlich, werden wir nie fertig und Fragezeichen kann ich dich

24:36.460 --> 24:36.820
schätzen.

24:39.740 --> 24:43.120
Jeder Teil legt jetzt eine Karte für seine Schätzung mit der Zahl nach

24:43.120 --> 24:44.100
unten auf, verdeckt.

24:45.720 --> 24:47.860
In Einheit kann man sagen, was man will.

24:48.040 --> 24:51.380
Wir schätzen das in Tagen oder in Monaten oder in Jahren oder in

24:51.380 --> 24:52.260
Stunden, wenn Sie wollen.

24:53.440 --> 24:56.420
Das wird vorher abgemacht und ich lege also meine Karte auf und Sie

24:56.420 --> 25:01.740
auch und alle anderen auch und dann sagen wir okay, jetzt umdrehen und

25:01.740 --> 25:04.060
dann schauen wir uns mal die Werte an und jetzt erfolgt die

25:04.060 --> 25:04.560
Diskussion.

25:04.640 --> 25:07.060
Wieso meinst du denn eigentlich, das soll jetzt 10 Jahre dauern?

25:07.960 --> 25:11.400
Quatsch, das können wir doch viel schneller, weil wir haben diese und

25:11.400 --> 25:13.280
jene Software schon mal geschrieben, wir können das und das

25:13.280 --> 25:16.040
wiederverwenden und dann machst du das mit der und der Sprache und

25:16.040 --> 25:17.320
dann bist du in einem halben Jahr fertig.

25:17.320 --> 25:19.920
So ungefähr geht die Diskussion dann.

25:20.860 --> 25:23.620
Die Schätzer mit den hohen und niedrigsten Werten begründen ihre

25:23.620 --> 25:28.040
Schätzung und dann hofft man, dass man einen Konsens herstellt.

25:30.340 --> 25:38.580
Wir wären natürlich nicht auf dieser Welt, wenn es dazu nicht auch

25:38.580 --> 25:40.580
noch Apps gäbe, die das natürlich machen.

25:41.340 --> 25:45.100
Wir können das mit normalen Spielkarten, die gibt es übrigens auch,

25:45.100 --> 25:50.640
können Sie im Internet bestellen, bei Amazon, oder aber Sie haben eben

25:50.640 --> 25:54.040
diese Bewertung, das sind die Werte, die Sie vorher auch gesehen

25:54.040 --> 26:00.900
haben, geben Sie ein und dann werden Ihre verschiedenen Mobilgeräte

26:00.900 --> 26:03.460
schon irgendwie zusammenarbeiten, sodass Sie die Schätzungen der

26:03.460 --> 26:04.720
anderen zu sehen bekommen.

26:08.380 --> 26:10.040
Wir sprechen jetzt aber hier nicht weiter.

26:11.340 --> 26:13.080
Das ist eine ganz witzige Methode.

26:14.280 --> 26:16.040
Und was soll ich jetzt machen?

26:17.000 --> 26:19.360
Welche dieser Methoden soll ich denn eigentlich anwenden?

26:20.980 --> 26:26.240
Und da gibt es so etwas, je nach Zeitpunkt und was Sie schon wissen

26:28.420 --> 26:32.920
über die Anwendung, wenn Sie zum Beispiel schon einen Teil der

26:32.920 --> 26:38.380
Anwendung geschrieben haben, in einem Vorprodukt, in der Forschung, in

26:38.380 --> 26:41.260
der Vorentwicklung oder so etwas, dann wissen Sie schon etwas über die

26:41.260 --> 26:42.000
Anwendung.

26:42.480 --> 26:45.860
Und daran hängt davon ab, welche Schätzmethode wir nehmen.

26:46.580 --> 26:50.920
Also für frühzeitige, grobe Schätzungen, ganz grobe Schätzungen,

26:51.300 --> 26:53.820
können Sie natürlich den Planungsbroker nehmen oder die Analogie

26:53.820 --> 26:54.300
-Methode.

26:54.920 --> 26:56.500
Da haben Sie nur ganz grobe Schätzungen.

26:57.860 --> 26:59.680
Die Relationsmethode haben wir nicht besprochen.

27:00.800 --> 27:05.240
Die können Sie jetzt mal ignorieren, auch für die Klausur.

27:05.520 --> 27:09.260
Sind die Einflussfaktoren während der Entwicklung schon bekannt, dann

27:09.260 --> 27:11.780
kann ich natürlich, und ich habe eine Schätzung für die Zeilencode,

27:12.100 --> 27:13.620
dann würde ich CoCoMo2 benutzen.

27:17.180 --> 27:20.880
Wenn Daten im Unternehmen gesammelt werden über Schwierigkeiten, Sie

27:20.880 --> 27:25.320
erinnern sich, ich muss Zeilencode für die einzelnen Typen von

27:25.320 --> 27:31.040
Teilprodukten schätzen und ich weiß, was die mir kosten in Aufwand,

27:31.180 --> 27:38.360
sowohl die Erhöhung des Aufwandsfaktors als auch die Umrechnung in

27:38.360 --> 27:41.580
Personenmonate, dann würde ich die Multiplicator-Methode benutzen.

27:42.220 --> 27:46.380
Die erfordert aber zum Beispiel, wenn Sie sehen, ich kann das erst

27:46.380 --> 27:52.020
machen, wenn ich die einzelnen Kategorien kenne und deren Anzahl, zum

27:52.020 --> 27:56.160
Beispiel eine Ausgabe Steuersoftware oder so etwas, das wiederum

27:56.160 --> 27:59.360
bedeutet, dass ich schon einen Vorentwurf, einen Grobentwurf gemacht

27:59.360 --> 28:01.940
haben muss, damit ich das überhaupt sagen kann.

28:02.700 --> 28:07.260
Während hier oben CoCoMo2 und da, da gehen wir einfach nur von wilden

28:07.260 --> 28:08.660
Schätzungen der Zeilencode aus.

28:10.340 --> 28:13.100
Hier brauche ich ja schon eine Unterteilung.

28:13.660 --> 28:15.520
Also ich muss einen Grobentwurf gemacht haben.

28:17.900 --> 28:20.420
Ich muss also nicht die einzelnen Schnittstellen bestimmt haben, ich

28:20.420 --> 28:23.600
muss mindestens wissen, was die einzelnen Komponenten sein werden in

28:23.600 --> 28:24.620
meinem Gesamtsystem.

28:26.860 --> 28:28.820
Genau, an der Stelle sind wir fertig.

28:29.920 --> 28:32.680
Nur einmal zurück, wenn ich Glück habe.

28:33.000 --> 28:34.080
Gibt es jetzt noch Fragen?

28:38.660 --> 28:41.400
Das waren die Schätzmethoden, also keine Angst haben davor, Sie als

28:41.400 --> 28:42.120
Informatiker.

28:45.720 --> 28:49.940
Wir müssen halt machen, wir müssen halt etwas tun, so gut wir können,

28:50.880 --> 28:54.160
um die Kosten vorauszusehen, denn sonst wagt sich keiner an ein großes

28:54.160 --> 28:54.620
Projekt.

28:56.820 --> 29:01.460
Ein kleines Projekt ist nicht so problematisch, wenn man sich

29:01.460 --> 29:03.900
verschätzt oder so, aber bei einem großen Projekt muss man sich halt

29:03.900 --> 29:05.240
doch Gedanken machen.

29:11.170 --> 29:12.250
Ja, gibt es eine Frage?

29:16.580 --> 29:20.400
Ob ich ein Beispiel für eine Firma, die CoCoMo2 benutzt, kenne.

29:20.780 --> 29:23.920
Jetzt aus dem Stehgreif nicht, aber ich würde mal in die Literatur

29:23.920 --> 29:26.620
schauen, die Literaturstellen anschauen, die es da gibt.

29:27.540 --> 29:28.940
Da stehen sicher welche drin.

29:33.880 --> 29:37.460
Also CoCoMo2 wird vielfach übersehen, dabei ist es so einfach.

29:38.320 --> 29:41.600
Die schlimmste Schätzung ist, wenn Sie alle Skalfaktoren auf Nominal

29:41.600 --> 29:44.500
oder 1 stellen und einfach nur Zahlen und Code eingehen, dann kriegen

29:44.500 --> 29:46.020
Sie schon eine erste Schätzung.

29:46.360 --> 29:48.180
Dann sagen Sie, oh, das ist aber viel zu viel.

29:48.540 --> 29:50.520
Was ist, wenn wir da ein besonders gutes Team hätten?

29:52.460 --> 29:53.880
Würde es sich dann verbessern?

29:54.880 --> 29:57.160
Ist ziemlich praktisch.

30:03.840 --> 30:05.760
Noch Fragen?

30:07.600 --> 30:08.740
Okay.

30:12.870 --> 30:16.350
So, jetzt kommen wir zu den Prozessmodellen.

30:18.310 --> 30:20.130
Wir werden uns heute noch beschäftigen.

30:25.140 --> 30:27.940
Da habe ich schon mal gesucht.

30:31.620 --> 30:39.310
Da habe ich aber schon, oder?

30:44.650 --> 30:45.670
Machen wir es nochmal auf.

30:48.390 --> 30:49.770
Entschuldigung, das waren die falschen.

30:50.450 --> 30:51.570
Die kommen erst am Schluss.

30:53.450 --> 30:54.610
Die kommen jetzt.

30:58.230 --> 30:59.110
Prozessmodelle, ja?

31:02.010 --> 31:02.350
So.

31:07.250 --> 31:07.810
Erstmal, was ist das?

31:07.810 --> 31:09.370
Was ist eigentlich ein Prozessmodell?

31:10.470 --> 31:14.270
Ein Prozessmodell sagt mir lediglich, wer was wann macht.

31:14.610 --> 31:16.570
Das ist, was ein Prozessmodell sagt.

31:17.410 --> 31:19.050
Was sind die Aufgaben?

31:20.030 --> 31:22.650
Und in welcher Reihenfolge werden sie ausgeführt?

31:23.370 --> 31:25.270
Von welcher Art von Personal?

31:26.170 --> 31:27.990
Das ist einfach ein Prozessmodell.

31:28.810 --> 31:31.630
Wie wir uns anschauen, ist Programmieren durch Probieren.

31:31.730 --> 31:34.790
Das Wasserfallmodell, das kennen wir ja schon in- und auswendig.

31:34.790 --> 31:37.910
Das V-Modell ist eine Variante des Wasserfallmodells.

31:38.570 --> 31:43.930
Prototypmodell, iterative Modelle, sind nochmal Varianten vom

31:43.930 --> 31:44.770
Wasserfallmodell.

31:45.290 --> 31:46.970
Zu sich synchronisieren, stabilisieren.

31:47.450 --> 31:49.250
Das ist das Microsoft-Modell.

31:49.670 --> 31:50.990
Ich weiß nicht, ob wir heute noch dazukommen.

31:51.490 --> 31:53.210
Und dann kommen die agilen Methoden.

31:54.770 --> 31:59.650
Also, Programmieren durch Probieren, oder auch Code and Fix genannt,

31:59.650 --> 32:01.990
ist, ich fange einfach mit dem Codieren an.

32:03.270 --> 32:05.130
Und dann teste ich ein bisschen.

32:05.390 --> 32:08.810
Und wenn es nicht stimmt, dann korrigiere ich das halt.

32:09.930 --> 32:13.390
Das ist so, wie Sie wahrscheinlich Ihre Aufgaben bearbeiten.

32:14.970 --> 32:17.970
Sie machen sich keine Gedanken über, was der Kunde will.

32:18.110 --> 32:21.150
Sie haben keinen wirklich durchdachten Entwurf gemacht.

32:21.470 --> 32:23.310
Und Sie fangen einfach zu Programmieren an.

32:24.390 --> 32:25.690
Und ja, kann man machen.

32:25.690 --> 32:27.750
Aber was sind die Nachteile davon?

32:28.250 --> 32:32.010
Die Nachteile sind, das Vorgehen ist, erst ein vorläufiges Programm

32:32.010 --> 32:33.670
erstellen, Entwurf testen und warten.

32:33.890 --> 32:36.330
Und dann Entwurf testen, warten und überlegen.

32:36.890 --> 32:38.870
Und dann das Programm entsprechend verbessern.

32:39.190 --> 32:39.650
Fehler suchen.

32:43.850 --> 32:46.410
Das hat den Vorteil, dass ich schnell einen Code habe, der vielleicht

32:46.410 --> 32:49.330
läuft, ohne einen nutzlosen Zusatzaufwand.

32:49.470 --> 32:52.150
Ich habe keine Dokumentation zu schreiben, muss keinen Entwurf machen,

32:52.150 --> 32:55.870
muss mich nicht blöden Kunden rumplagen und fragen, was sie wollen.

32:56.230 --> 32:57.870
Es geht doch so viel schneller.

32:58.950 --> 33:02.890
Und erzeugt natürlich auch unstrukturierten Code, der nicht so wartbar

33:02.890 --> 33:03.170
ist.

33:04.250 --> 33:05.750
Hat keine Entwurfsphase.

33:07.490 --> 33:10.550
Die Probleme sind natürlich, ich habe eine mangelnde

33:10.550 --> 33:14.290
Aufgabenerfüllung, denn ich habe mir keine Gedanken darüber gemacht.

33:14.450 --> 33:16.190
Ich dachte einfach, ich weiß das.

33:18.250 --> 33:19.930
Warten und Pflege ist kostspielig.

33:20.050 --> 33:21.350
Das Programm ist nicht darauf vorbereitet.

33:21.590 --> 33:22.750
Es gab keinen Entwurf.

33:22.870 --> 33:23.830
Es gibt keine Struktur.

33:23.990 --> 33:25.310
Es ist wahrscheinlich Spaghetti-Code.

33:25.730 --> 33:27.950
Der ist 23.000 Mal korrigiert worden.

33:28.370 --> 33:31.610
Es kennt sich nur der Erfinder drin aus, wenn überhaupt noch.

33:32.150 --> 33:35.310
Das ist alles ganz schlecht für Wartung und für Erweiterungen.

33:36.750 --> 33:38.570
Und Dokumentation gibt es ja auch keine.

33:38.670 --> 33:39.710
Haben wir ja keine gemacht.

33:40.850 --> 33:42.370
Wir wollten ja schnell sein.

33:42.370 --> 33:47.870
Und für Teamarbeit ist es noch dazu verständlich ungeeignet, denn es

33:47.870 --> 33:48.690
gibt keinen Entwurf.

33:49.210 --> 33:53.330
Der Entwurf war ja das, was uns erlaubte, das Problem in Teile zu

33:53.330 --> 33:56.950
zerlegen und die Teile dann unabhängig voneinander zu bearbeiten.

33:58.010 --> 33:59.750
Ich sehe da Beine rumwandern.

34:01.910 --> 34:03.520
Es gab also keine Aufgabenverteilung.

34:06.530 --> 34:10.770
Und wissen Sie, die Probleme mit dem...

34:10.770 --> 34:12.710
Es gibt übrigens auch keine Testphase.

34:12.890 --> 34:15.850
Ich bin halt immer am Codieren, Testen, Codieren, Testen.

34:16.270 --> 34:18.630
Es gibt keine ordentliche Integrationsphase.

34:18.730 --> 34:19.870
Es gibt keinen Abnahmetest.

34:20.330 --> 34:22.650
Ich habe einfach irgendwas geschrieben, so wie am Anfang.

34:23.570 --> 34:27.470
Und um diese Probleme zu beseitigen, hat man das Wasserfallmodell

34:27.470 --> 34:28.650
eingeführt.

34:30.270 --> 34:34.650
Das Wasserfallmodell hat mir gesagt, hier überlegen wir uns, was der

34:34.650 --> 34:37.690
Kunde will, damit wir das nicht falsch machen und am Schluss

34:37.690 --> 34:40.190
feststellen, oh, das hätte es ja gar nicht gebraucht, den Software,

34:40.250 --> 34:41.090
den wir geschrieben haben.

34:41.410 --> 34:43.510
Und es fehlt an allen Ecken und Enden.

34:44.010 --> 34:47.710
Die Definitionsphase spezifiziert das Problem dann genauso, dass

34:47.710 --> 34:50.730
andere Leute damit arbeiten können, unabhängig davon.

34:51.050 --> 34:53.670
Wir haben einen Entwurf, der bereitet uns darauf vor, erstens auf

34:53.670 --> 35:00.030
Parellverarbeitung und auf Arbeitsteilung und später auf die Wartung

35:00.030 --> 35:03.590
und die Pflege des Systems, die überarbeitet werden müssen.

35:03.750 --> 35:05.430
Und dann erst kommt die Implementierung.

35:06.070 --> 35:07.350
Das ist das Phasenmodell.

35:08.450 --> 35:11.690
Und dann haben wir noch einen Integrationstest, eine Phase und einen

35:11.690 --> 35:12.410
Systemtest.

35:15.290 --> 35:19.430
Dann gibt es im Phasenmodell natürlich auch eine Rückkopplung.

35:19.590 --> 35:22.610
Wenn Sie in der Implementierung feststellen, dass der Entwurf verkehrt

35:22.610 --> 35:25.430
ist, dann bessere ich den Entwurf eigentlich nach.

35:26.690 --> 35:31.210
Allerdings gibt es im Phasenmodell keine phasenübergreifende

35:31.210 --> 35:31.450
Rückkopplung.

35:34.450 --> 35:37.490
Das scheint zwar darzustellen, weil immer wieder diese Pfeile sind,

35:37.650 --> 35:41.230
aber die Wahrheit ist, wenn wir bei der Definition einen Fehler in der

35:41.230 --> 35:43.270
Planung finden, dann wird die Planung korrigiert.

35:43.690 --> 35:47.030
Wenn wir bei dem Entwurf einen Fehler in der Planung finden, dann ist

35:47.030 --> 35:47.470
es blöd.

35:47.470 --> 35:51.810
Dann müssen wir von vorn anfangen und die Definition durchlaufen und

35:51.810 --> 35:52.390
nochmal machen.

35:52.850 --> 35:58.930
Es ist eigentlich im Phasenmodell äußerst aufwendig, mehrere Phasen zu

35:58.930 --> 35:59.430
überspringen.

35:59.590 --> 36:03.690
Wenn Sie also hier hinten im Integrationstest einen Fehler in der

36:03.690 --> 36:06.930
Planung entdecken, das ist ganz schlecht im Phasenmodell.

36:07.050 --> 36:10.350
Dann ist alles wirklich an Arbeit schon geschehen, die Sie jetzt nicht

36:10.350 --> 36:11.630
mehr rückgängig machen können.

36:13.350 --> 36:17.550
Außer indem Sie im wahrsten Fall von neu starten.

36:18.770 --> 36:25.930
Gut, die stammen also von einem Bennington von 1956 erstaunlicherweise

36:25.930 --> 36:31.930
und wurde dann von Royce für Software nochmal überarbeitet, in diese

36:31.930 --> 36:34.670
Phasen aufgeteilt und die Rückkopplung mit eingeführt.

36:35.250 --> 36:39.810
Stören Sie sich nicht daran, wenn bei manchen Phasenmodellen die

36:39.810 --> 36:41.690
Anzahl der Phasen variiert.

36:42.010 --> 36:45.630
Zum Beispiel wird manchmal der Entwurf aufgeteilt in einen groben

36:45.630 --> 36:47.230
Entwurf und einen feinen Entwurf.

36:49.550 --> 36:52.690
Manche haben Planung und Definition in einer Phase.

36:54.770 --> 36:58.710
Da gibt es Variationen des Phasenmodells.

36:59.130 --> 37:04.390
Wichtig ist für uns, dass beim Vorgehen jede Aktivität in der

37:04.390 --> 37:07.150
angegebenen Reihenfolge vollständig durchgeführt wird.

37:07.150 --> 37:12.230
Es geht nicht an, dass wir die Planung halb machen und dann mit der

37:12.230 --> 37:15.210
Definition und Entwurf und der Implementierung schon starten, ohne

37:15.210 --> 37:17.170
dass wir die Planungsphase komplett haben.

37:18.230 --> 37:26.430
Das ist der große Nachteil des Phasenmodells, dass die einzelnen

37:26.430 --> 37:33.230
Phasen im Prinzip komplett abgeschlossen sein müssen, bevor wir in die

37:33.230 --> 37:34.370
nächste Phase eintreten.

37:34.370 --> 37:38.530
Dadurch kriegen wir Probleme mit Sachen, die wir nicht besonders gut

37:38.530 --> 37:41.250
verstanden haben und daher nicht spezifizieren können.

37:41.430 --> 37:45.770
Es gibt ein streng sequentielles Vorgehen und am Ende jeder dieser

37:45.770 --> 37:50.670
Aktivität steht ein Dokument oder mehrere, die das Ergebnis dieses

37:50.670 --> 37:53.050
Phasenmodells sind.

37:54.890 --> 37:58.150
Daher nennt man dieses Modell auch manchmal Dokumentgetriebenes.

37:58.150 --> 38:02.890
Die Planung muss am Schluss die vorgesehenen Planungsdokumente liefern

38:02.890 --> 38:05.110
und der Entwurf muss die Entwurfsdokumente liefern.

38:05.670 --> 38:07.490
Dann muss man dieses Zeug schreiben.

38:08.150 --> 38:13.610
Was wir übrigens im PSE machen werden, also im Praktikum Software

38:13.610 --> 38:18.350
Engineering, das im nächsten Semester auf Sie zukommt, da wird nicht

38:18.350 --> 38:21.210
agil gearbeitet, sondern nach dem Phasenmodell.

38:21.210 --> 38:25.130
Auch wieder aus pädagogischen Gründen, damit Sie die einzelnen

38:25.130 --> 38:25.990
Tätigkeiten lernen.

38:26.170 --> 38:29.730
Die Projekte sind ja nicht so groß, dass man das nicht machen könnte.

38:30.350 --> 38:32.870
Und außerdem haben Sie Hilfe, sodass Sie tatsächlich die

38:32.870 --> 38:36.790
Planungsphase, Definitionsphase abschließen können, bevor Sie sich in

38:36.790 --> 38:37.730
den Entwurf stürzen.

38:39.350 --> 38:41.450
Das ist einfach und verständlich.

38:42.210 --> 38:44.950
Benutzerbeteiligung ist nur in der Definitionsphase gedacht,

38:45.490 --> 38:49.410
vorgesehen, aber die Probleme sind keine phasenübergreifende

38:49.410 --> 38:52.170
Rückkopplung, Parallelisierungspotenzial möglicherweise nicht

38:52.170 --> 38:56.770
ausgeschöpft, weil Leute warten, dass sie mit der Planung und der

38:56.770 --> 39:00.130
Definition fertig sind und die dürfen nichts machen.

39:01.190 --> 39:05.690
Dürfen also nicht schon einen Teil des Systems schon mal vorentwerfen

39:05.690 --> 39:08.330
und sofort mit der Implementierung beginnen, bis sich die anderen

39:08.330 --> 39:09.130
Sachen klären.

39:09.610 --> 39:14.570
Wenn ich eine gute Aufteilung habe, dann wäre das möglich, aber das

39:14.570 --> 39:17.090
Phasenmodell sieht das einfach nicht vor.

39:19.730 --> 39:25.030
Und es zwingt dadurch auch zur Spezifikation der Definitionsphase, da

39:25.030 --> 39:28.270
muss ich ja sogar Benutzerschnittstellen schon angeben, skizzieren,

39:28.890 --> 39:32.230
auch schlecht verstandene Benutzerschnittstellen und Funktionen, die

39:32.230 --> 39:35.770
ich nicht gut verstanden habe, die muss ich jetzt exakt spezifizieren.

39:36.190 --> 39:40.110
Wenn es besser wäre, einen Prototyp zu schreiben und zu sagen, ach so

39:40.110 --> 39:43.950
geht das ja oder so funktioniert es ja gar nicht oder das will der

39:43.950 --> 39:47.410
Benutzer nicht oder das muss ich umstellen oder erst muss ich das

39:47.410 --> 39:50.030
angeben, bevor ich das überhaupt abfragen darf und so fort.

39:50.630 --> 39:54.630
Und das führt eben dann oftmals zu auf dem Papier fertig

39:54.630 --> 39:58.590
spezifizierten Zeug, das aber nicht stimmt und das muss ich dann schön

39:58.590 --> 40:02.050
brav entwerfen, implementieren, testen und dann erst stelle ich fest,

40:02.390 --> 40:04.150
das ist ja gar nicht, was der Benutzer wollte.

40:07.070 --> 40:10.970
Also habe ich nutzlosen Code und Arbeit geleistet.

40:12.850 --> 40:16.910
Daher benutze ich natürlich auch in unserer Vorlesung als auch im PSE

40:16.910 --> 40:20.250
eher das als pädagogisches Modell, sodass wir die verschiedenen

40:20.250 --> 40:21.450
Tätigkeiten kennenlernen.

40:22.270 --> 40:29.910
Es wäre schlecht vom Lehren und Lernen Standpunkt, wenn Sie Planung

40:29.910 --> 40:33.190
und Definition ohne Turf und auch gleich die Implementierung und den

40:33.190 --> 40:35.890
Test dazu alles immer auf einmal machen müssten.

40:37.530 --> 40:42.090
Wir werden später andere Gliederungen sehen, wo das dann besser

40:42.090 --> 40:42.670
funktioniert.

40:44.970 --> 40:47.250
Leider ist das Code und Fix noch sehr üblich.

40:49.810 --> 40:55.690
So, dem Namen nach gibt es jetzt noch eine Variante, über die Sie

40:55.690 --> 40:57.810
wenigstens ein bisschen Bescheid wissen müssen.

40:57.930 --> 41:01.430
Das ist das V-Modell 97 und es gibt auch ein neueres V-Modell.

41:03.410 --> 41:05.590
Manche denken, das kommt von diesem V hier.

41:06.410 --> 41:07.810
Die Benennung, das stimmt aber nicht.

41:07.910 --> 41:12.890
Das V kommt eigentlich von Vorgehensmodell oder Prozessmodell.

41:15.650 --> 41:20.630
Wir sehen also hier auch eigentlich ein Phasenmodell, eine

41:20.630 --> 41:21.930
Anforderungsdefinition.

41:21.930 --> 41:25.470
Wir hatten dafür Planung und Definitionsphase gehabt.

41:25.630 --> 41:27.290
Das ist hier zum Beispiel zusammengefasst.

41:27.930 --> 41:31.250
Dann ist der Turf aufgegliedert in grob und feine Turf.

41:32.150 --> 41:35.770
Dann gibt es die Modulimplementierung und zugehörig der Modultest.

41:36.430 --> 41:42.730
Und so wird es in dieser schönen Struktur angezeigt, dass jede Phase

41:42.730 --> 41:46.770
hier drüben eine weitere Phase des Überprüfens hat.

41:47.490 --> 41:51.550
Und ich sage also, Modulimplementierung wird natürlich im Modultest

41:51.550 --> 41:54.210
oder im Unitest geprüft.

41:54.730 --> 41:58.630
Der feine Turf wird im Integrationstest geprüft, denn da prüfe ich das

41:58.630 --> 41:59.330
Zusammenspiel.

41:59.450 --> 42:04.070
Sie erinnern sich, Integration war Zusammenspiel der Module oder

42:04.070 --> 42:05.390
Klassen oder Pakete.

42:06.230 --> 42:08.850
Und der grobe Turf sind das Systemtests.

42:09.110 --> 42:12.550
Da ist die Gesamtstruktur getestet und schließlich der Abnahmetest

42:12.550 --> 42:14.450
überprüft die Anforderungen.

42:14.450 --> 42:19.710
Und da sehen Sie natürlich auch, wie im normalen PaaS-Modell auch,

42:20.190 --> 42:24.330
diese Abprüfung im Abnahmetest ist erst ganz am Schluss.

42:25.250 --> 42:29.030
Und wenn wir hier etwas falsch definiert haben, haben wir ein Problem,

42:29.130 --> 42:30.710
denn das merken wir erst ganz am Schluss.

42:32.410 --> 42:38.850
Darum brauchen wir andere Methoden oder Kompensationen dafür, dass wir

42:38.850 --> 42:42.050
in den Anforderungsdefinitionen manchmal einfach nicht alles wissen

42:42.050 --> 42:47.650
können über das, was der Kunde will, wie die interne Struktur aussieht

42:49.050 --> 42:51.290
oder wie die Benutzerschnittstelle aussieht.

42:51.710 --> 42:55.350
Oder ob ein bestimmter Algorithmus überhaupt funktioniert.

42:56.490 --> 42:59.990
Und dazu gibt es dann später die Prototypmodelle und die iterativen

42:59.990 --> 43:03.130
Modelle, die diesen Nachteil ausgleichen.

43:04.150 --> 43:05.230
So weit, so gut.

43:06.430 --> 43:09.510
Jetzt gibt es auch noch das XP-Modell XT.

43:10.070 --> 43:15.950
Das ist also eine Flexibilisierung dieses Vorgehensmodells, das wir

43:15.950 --> 43:16.830
gerade gesehen haben.

43:17.270 --> 43:19.350
Da können Sie eigentlich alles definieren.

43:19.450 --> 43:22.270
Sie können sich einen neuen eigenen Prozess definieren.

43:22.770 --> 43:25.770
Auch einen, der Hardwareentwicklung mit einschließt, wenn Sie wollen.

43:26.450 --> 43:28.670
Werden wir aber nicht im Einzelnen besprechen.

43:29.290 --> 43:30.750
Ich möchte nur, dass Sie es wissen.

43:31.610 --> 43:35.150
Der Standard dafür ist über 500 Zeiten lang.

43:35.410 --> 43:39.010
Möglicherweise ist er inzwischen gewachsen, weil er verbessert werden

43:39.010 --> 43:39.270
ist.

43:40.490 --> 43:45.330
Wenn Sie jemals in einer Firma arbeiten, die für die Regierung

43:45.330 --> 43:49.270
Software entwickelt, dann werden Sie nach diesem Modell noch vorgehen

43:49.270 --> 43:51.150
müssen, denn das wird die Regierung vorschreiben.

43:52.590 --> 43:54.950
Und dann müssen Sie die 500 Seiten lesen.

43:55.590 --> 43:57.630
Aber das machen wir jetzt in dieser Vorlesung nicht.

43:59.090 --> 44:01.110
Ich gebe nur einen kleinen Ausblick.

44:03.150 --> 44:06.670
Es gibt also Aktivitäten, Produkte und Verantwortlichkeiten.

44:08.830 --> 44:12.190
Aber keine feste Phasenreihenfolge.

44:13.510 --> 44:16.270
Diese Phasenreihenfolge können Sie selbst bestimmen.

44:16.890 --> 44:21.370
Sie können also jeden Prozess in der Reihenfolge anordnen, wie Sie

44:21.370 --> 44:21.730
wollen.

44:21.990 --> 44:24.790
Oder wie es am geeignetsten ist für das, was Sie haben.

44:25.270 --> 44:29.390
Eine Aktivität, also eine Tätigkeit, die genau beschrieben werden

44:29.390 --> 44:33.610
kann, zum Beispiel implementieren oder definieren oder entwerfen oder

44:33.610 --> 44:37.290
testen oder integrieren oder System testen und so fort.

44:37.790 --> 44:39.490
Das können wir also alles beschreiben.

44:39.950 --> 44:42.170
Produkt ist das Ergebnis einer Aktivität.

44:42.730 --> 44:46.730
Ich kann selbstverständlich im V-Modell XT das ganz normale

44:46.730 --> 44:48.470
Wasserfallmodell definieren.

44:49.250 --> 44:53.190
Sie sehen schon, die Aktivitäten sind die einzelnen Phasen und die

44:53.190 --> 44:56.270
Produkte sind das Ergebnis, das aus der Phase herauskommt, die in die

44:56.270 --> 44:57.210
nächste übergeben wird.

44:59.170 --> 45:00.510
Insofern passt das.

45:03.690 --> 45:06.870
Das Projekt wird auch noch aus verschiedenen Perspektiven und Rollen

45:06.870 --> 45:07.350
beschrieben.

45:07.530 --> 45:09.470
Auf das gehe ich jetzt nicht weiter ein.

45:10.330 --> 45:15.310
Aber was noch wichtig ist, dass jedes Produkt vier Zustände hat.

45:16.870 --> 45:20.510
Nämlich in Planung, das ist das erste, in Bearbeitung, vorgelegt und

45:20.510 --> 45:21.290
fertiggestellt.

45:22.250 --> 45:23.970
Schauen wir uns mal diesen Automaten an.

45:23.970 --> 45:25.970
Das ist ein Zustandsautomat, das wissen wir schon.

45:26.610 --> 45:29.310
Wir sind Informatiker, das können wir gut lesen.

45:29.830 --> 45:31.670
Die erste Version des Produktes wird erstellt.

45:31.730 --> 45:34.650
Da gebe ich von Inplanung in die Inbearbeitung.

45:35.670 --> 45:38.830
Da werde ich wohl die meiste Zeit in diesem Zustand in Bearbeitung

45:38.830 --> 45:39.630
verbringen.

45:40.530 --> 45:44.110
Dann erfolgt eine Prüfung durch eine eigenständige Qualitätssicherung

45:44.790 --> 45:46.410
und die Konsistenz ist geprüft.

45:47.230 --> 45:49.670
Dann geht es in den Zustand vorgelegt.

45:50.510 --> 45:52.230
Vorgelegt heißt noch nicht endgeprüft.

45:53.990 --> 45:56.610
Und schließlich noch ein Überprüfungsschritt am Schluss.

45:56.730 --> 45:58.970
Das Produkt ist formal und inhaltlich korrekt.

45:59.310 --> 46:00.510
Dann ist es fertiggestellt.

46:01.290 --> 46:03.510
In der Regel wird das nicht so geradlinig gehen.

46:03.930 --> 46:07.070
Das heißt, es gibt da Abkürzungen und Rücksprünge.

46:07.610 --> 46:10.950
Also wenn die Prüfung durch die Qualitätssicherung nicht erfolgreich

46:10.950 --> 46:12.730
war, dann gehe ich zurück in die Bearbeitung.

46:13.430 --> 46:15.030
Andernfalls gehe ich in den Fertigstellen.

46:15.970 --> 46:20.230
Also in diesem Schritt hier, wenn ich bereits vorgelegt bin, dann ist

46:20.230 --> 46:23.770
es einfach nur noch ein Überprüfen, ob die Prüfungen alle durchgeführt

46:23.770 --> 46:25.490
wurden und erfolgreich waren.

46:26.710 --> 46:29.330
Also vollständig inhaltlich und formal korrekt.

46:30.650 --> 46:34.150
Ich kann natürlich in der blöden Situation sein, dass ich zwar schon

46:34.150 --> 46:35.850
fertiggestellt habe, aber was vergessen.

46:36.830 --> 46:38.470
Oder was doch Mist gebaut.

46:38.730 --> 46:41.690
Dann gibt es eine erneute Bearbeitung des Produktes, was heißt, es

46:41.690 --> 46:42.850
geht zurück in Bearbeitung.

46:45.490 --> 46:47.950
Und schließlich gibt es dann hier noch eine Abkürzung.

46:48.450 --> 46:51.290
Fertiggestellt in Bearbeitung und fertiggestellt, wenn keine Prüfung

46:51.290 --> 46:57.190
durch eine Qualitätssicherungsinstanz notwendig ist, aber Konsistenz

46:57.190 --> 47:00.410
geprüft und das Produkt inhaltlich und formal korrekt ist.

47:01.650 --> 47:07.850
Also das könnte ich zum Beispiel in einem Prozess definieren, in dem

47:07.850 --> 47:09.230
ich Inspektionen durchführe.

47:09.230 --> 47:16.070
Inspektionen haben wir gehört, also ein Kompliment zum Test, der sehr

47:16.070 --> 47:17.450
früh eingesetzt werden kann.

47:17.870 --> 47:19.030
Und da kann ich natürlich sagen,

47:22.310 --> 47:26.370
die Prüfung, die hier durchgeführt wird in der Qualitätssicherung, ist

47:26.370 --> 47:27.230
eine Inspektion.

47:29.250 --> 47:31.270
Mit vorgeschriebenen Inspektionslisten.

47:33.870 --> 47:37.470
Das kann ich also mit diesen Produktzuständen machen, dass ich die

47:37.470 --> 47:41.330
Übergänge von einem Zustand in den nächsten genau sage, was da zu tun

47:41.330 --> 47:42.170
ist.

47:43.510 --> 47:46.550
Kann ich mit bestimmter Klasse von Produkt machen, zum Beispiel

47:46.550 --> 47:49.550
implementieren, kann ich natürlich auch mit den Türfen oder

47:49.550 --> 47:51.190
Spezifikationen machen.

47:52.990 --> 47:57.070
Das ist eigentlich alles, was ich zum XT-Modell sagen will.

47:58.050 --> 48:03.370
Ich hatte früher noch mehr Material dazu, aber ich fand das nicht

48:03.370 --> 48:06.190
besonders erhellend, wenn man es eigentlich nicht machen muss.

48:06.330 --> 48:09.090
Wenn man es machen muss, dann schaut man sich das genau an und dann

48:09.090 --> 48:10.470
sagt man, so ist das gedacht.

48:11.170 --> 48:14.690
Jetzt wissen Sie von mir, dass es das V-Modell XT gibt, wird für

48:14.690 --> 48:16.370
Regierungsarbeiten benötigt

48:19.610 --> 48:21.490
und da gibt es Aktivitäten.

48:22.370 --> 48:25.050
Das sind eigentlich die Prozesse, die man durchführt, die Schritte und

48:25.050 --> 48:29.790
es gibt Produkte und Leute, die es machen, rollen.

48:32.030 --> 48:34.170
Gibt es Fragen zum V-Modell XT?

48:35.210 --> 48:36.250
Vorgehensmodell XT?

48:38.330 --> 48:38.910
Bitteschön.

48:45.650 --> 48:49.350
Das weiß ich jetzt nicht, wer die Marke hat, wer die Marke besitzt.

48:49.490 --> 48:55.230
Ich denke nicht die Bundesregierung, sondern wahrscheinlich eine Firma

48:55.230 --> 48:58.970
in München, die von der TU München entwickelt wurde.

49:02.530 --> 49:03.330
Ja, bitte.

49:06.830 --> 49:08.730
Das habe ich jetzt akustisch nicht verstanden.

49:11.770 --> 49:12.690
Zum Normalfachmodell.

49:13.130 --> 49:14.410
Ja, okay, ich gehe eins zurück.

49:15.950 --> 49:17.210
Moment, machen wir gleich.

49:18.630 --> 49:19.870
Noch eins, jawohl.

49:24.520 --> 49:24.760
Hier.

49:28.910 --> 49:32.530
Ach so, nein, nein, nein, man macht die Tests nicht gleichzeitig, sie

49:32.530 --> 49:36.750
werden erst hier durchgeführt, aber sie werden beschrieben.

49:36.750 --> 49:38.810
Ja, genau, da haben Sie recht.

49:39.510 --> 49:43.230
Also hier beschreibe ich zum Beispiel, welche Anforderungstests

49:43.230 --> 49:48.490
später, Abnahmetests später durchgeführt werden müssen und führe es

49:48.490 --> 49:49.810
dann im Abnahmetest durch.

49:50.470 --> 49:54.470
Also die Planung ist auf der Seite und die Durchführung auf der

49:54.470 --> 49:55.050
rechten Seite.

49:55.310 --> 49:57.170
Ja, sehr gute Frage, das hatte ich nicht klar gesagt.

49:58.670 --> 49:58.930
Danke.

50:03.920 --> 50:04.620
Weitere Fragen?

50:07.280 --> 50:12.200
Okay, dann gehen wir...

50:17.400 --> 50:19.280
Heute Morgen war da noch voll.

50:22.660 --> 50:24.040
So, das haben wir da.

50:24.100 --> 50:25.340
Jetzt kommt das Prototypmodell.

50:26.320 --> 50:32.380
Also Prototyp ist, wenn Sie keine vollständige Spezifikation geben

50:32.380 --> 50:33.900
können, genau für den Fall.

50:33.900 --> 50:39.320
Sie wissen nicht, ob ein bestimmter Algorithmus schnell genug läuft.

50:40.480 --> 50:41.860
Vielleicht müssen Sie dann einen anderen wählen.

50:42.340 --> 50:45.460
Sie wissen nicht, was die grafische Benutzoberfläche zeigen soll.

50:46.200 --> 50:50.660
Also bauen Sie mal eine und arbeiten mit ihr ein bisschen, um zu

50:50.660 --> 50:51.660
sehen, ob sie so stimmt.

50:52.680 --> 50:56.980
Sie müssen also erstmal explorativ etwas ein bisschen entwickeln und

50:56.980 --> 50:59.060
dann sagen, jetzt wissen wir, wie es geht, jetzt können wir

50:59.060 --> 51:01.940
spezifizieren und dann gehen wir über in den ganz normalen

51:01.940 --> 51:02.560
Phasenmodell.

51:03.520 --> 51:07.240
Das ist also die Kompensation dafür, dass ich nicht alles komplett

51:07.240 --> 51:12.960
spezifizieren kann im Phasenmodell, Wasserfallmodell.

51:14.320 --> 51:17.460
Der Prototyp kann außerdem die Zusammenarbeit und die Zusammenarbeit

51:17.460 --> 51:20.220
mit dem Kunden verbessern und das Vertrauen des Kunden in die

51:20.220 --> 51:22.600
Entwicklungsabteilung erhöhen.

51:25.840 --> 51:31.360
Und ein berühmtes Zitat heißt If you plan to throw one away, you will

51:31.360 --> 51:31.760
anyhow.

51:32.300 --> 51:38.940
Das ist ein bestimmter Fred Brocks, der das erste große Betriebssystem

51:38.940 --> 51:43.800
für IBM geschrieben hat, das OS 360, und ein Buch geschrieben hat, das

51:43.800 --> 51:45.980
The Mythical Man-Month bedeutet.

51:46.240 --> 51:50.980
Das heißt, es ist ein Klassiker, der ist schon uralt, stammt aus den

51:50.980 --> 51:54.780
70er Jahren, wenn ich mich täusche, war es immer noch toll zu lesen.

51:54.780 --> 51:59.340
Also der hat zum Beispiel auch schon gesagt, er sagt zum Beispiel so

51:59.340 --> 52:06.020
etwas wie Adding people to a late project makes it later.

52:08.420 --> 52:12.320
Also zu einem verspäteten Projekt nochmal Leute hinzuzufügen,

52:13.460 --> 52:16.300
verspätet es noch mehr, denn die Leute müssen erst eingearbeitet

52:16.300 --> 52:18.580
werden und erklärt werden, was alles schon gesehen ist, bis sie

52:18.580 --> 52:20.960
überhaupt produktiv werden können, zum Beispiel.

52:21.820 --> 52:26.460
Und er hat nichts von einem Prototyp gesagt, sondern er sagt, wenn du

52:26.460 --> 52:29.940
ein großes System schreibst, plan daran, dass du eins wegwerfen wirst,

52:30.360 --> 52:35.560
die erste Version wegwerfen wirst, das wird bestimmt passieren.

52:36.120 --> 52:39.240
Und das ist eigentlich so etwas, was man im Prototyp-Modell macht.

52:39.520 --> 52:44.280
Also Prototyp ist gedacht dafür, dass das wirklich nicht ein

52:44.280 --> 52:47.960
flugfähiger Prototyp ist, sondern einen, den ich benutze, um meine

52:47.960 --> 52:52.700
Spezifikation zu schärfen und den plane ich also auch wegzuwerfen.

52:54.500 --> 52:57.180
Wie läuft das also jetzt ab?

52:57.960 --> 53:03.500
Was wir brauchen, ist Klärung wichtiger Fragen oder Unsicherheiten.

53:04.300 --> 53:06.220
Die muss ich natürlich erkennen können.

53:07.500 --> 53:14.540
Dazu mache ich eine vorläufige Systemanalyse, einen Prototyp-Entwurf

53:14.540 --> 53:18.400
und Implementierung und dann meistens eine Vorführung.

53:18.580 --> 53:19.060
Also z.B.

53:19.240 --> 53:22.420
für die Benutzeroberfläche würde ich eine Vorführung machen.

53:22.540 --> 53:25.780
Wenn ich das so und so und so mache, mit diesen drei Fenstern und

53:25.780 --> 53:30.020
diesen 28 Webseiten, ist das so, wie Sie gedacht haben?

53:30.080 --> 53:33.360
Nein, nein, nein, das ist viel zu umständlich, das muss anders gehen.

53:33.720 --> 53:35.220
Okay, wie denn?

53:35.560 --> 53:39.860
Und dann versuchen Sie das eben hinzukriegen, dass es praktisch ist

53:39.860 --> 53:43.740
für den Benutzer, so wie er es in seinem Arbeitsablauf am besten

53:43.740 --> 53:44.800
brauchen kann.

53:45.660 --> 53:50.280
Nach der Vorführung haben Sie wahrscheinlich ein bisschen Nacharbeit

53:50.280 --> 53:54.240
zu leisten, aber dann können Sie spezifizieren und mit diesem

53:54.240 --> 53:59.300
Erkenntnis gehen Sie dann über in den ganz normalen Wasserfall.

54:01.040 --> 54:02.420
So ist das gedacht.

54:02.960 --> 54:05.500
Prototyp oben drüber, wichtige Unsicherheiten klären.

54:06.580 --> 54:09.580
Wohlgemerkt, Sie können ja sagen, im Wasserfall ist das

54:09.580 --> 54:12.760
Prototypisieren einfach noch mal eine Phase, die da vorgestellt ist,

54:12.940 --> 54:17.680
die Analyse hat, die ein Turf hat und eine Implementierung und eine

54:17.680 --> 54:18.240
Vorführung.

54:19.460 --> 54:20.660
So können Sie das sehen.

54:21.440 --> 54:23.500
Das ist also eine Strukturierung.

54:28.700 --> 54:31.160
Dann gibt es das iterative Modell.

54:31.340 --> 54:34.680
Das iterative Modell ist wahrscheinlich dasjenige, was am besten

54:34.680 --> 54:35.420
funktioniert.

54:35.960 --> 54:40.720
Das iterative Modell liegt zum Beispiel auch XP zugrunde und es liegt

54:40.720 --> 54:44.860
dem Microsoft-Modell zugrunde und es liegt Scrum zugrunde.

54:44.940 --> 54:50.960
Das iterative Modell sagt einfach, ich baue das System nicht als

54:50.960 --> 54:54.020
Ganzes, sondern ich baue es in mehreren Iterationen.

54:54.100 --> 54:58.240
Ich füge also zu einer ersten Version weitere Funktionalität hinzu,

54:58.940 --> 55:02.440
überprüfe die erneut, füge ein drittes oder ein viertes Inkrement

55:02.440 --> 55:02.900
hinzu.

55:03.220 --> 55:05.460
Das ist es, was das iterative Modell macht.

55:07.080 --> 55:11.700
Da sagt man zumindest, Teile davon lassen sich schon mal spezifizieren

55:11.700 --> 55:14.800
und die baue ich und realisieren.

55:16.520 --> 55:20.280
Wird also Produkt, Schritt für Schritt werden neue Funktionalitäten

55:20.280 --> 55:25.240
hinzugefügt, hat jetzt die gleichen Vorteile wie Einsatzgebiete wie

55:25.240 --> 55:26.480
das Prototyp-Modell.

55:26.480 --> 55:29.480
Wenn ich etwas nicht weiß, dann mache ich es als erstes.

55:31.240 --> 55:35.300
Erledige das, habt die Unsicherheit erklärt und kann weitermachen.

55:37.340 --> 55:43.500
Es wäre blöd, das, was unsicher ist, erst am Schluss zu machen.

55:45.560 --> 55:50.960
Denn dann habe ich schon möglicherweise viel Falsches gebaut, das

55:50.960 --> 55:57.640
jetzt natürlich mit diesem Unbekannten nicht mehr zusammenpasst, wenn

55:57.640 --> 55:58.720
es geändert werden muss.

56:00.980 --> 56:04.900
Und man versucht, im iterativen Modell eben nichts wegzuwerfen,

56:04.980 --> 56:06.520
sondern möglichst viel weiter zu verwenden.

56:10.620 --> 56:15.260
Da gibt es jetzt zwei verschiedene Ansätze, diese Iterationen zu

56:15.260 --> 56:16.520
planen und durchzuführen.

56:16.640 --> 56:20.660
Das eine ist das sogenannte evolutionäre Modell und das andere ist das

56:20.660 --> 56:21.900
inkrementelle Modell.

56:22.020 --> 56:24.760
Ich zeige Ihnen das am besten am Bild, dann verstehen Sie das besser.

56:26.680 --> 56:30.000
Nehmen wir mal an, das ist unser ganz normaler Wasserfall-Modell, das

56:30.000 --> 56:31.740
Bild kennen wir schon gut.

56:32.960 --> 56:38.560
Und es ist so, dass Sie jetzt hier hinten in den Betrieb gehen können,

56:38.740 --> 56:42.680
wenn das System in der ersten Iteration gut genug ist.

56:42.920 --> 56:48.480
Aber Sie haben meistens dann eine Evaluierung und wenn Sie nicht

56:48.480 --> 56:51.960
zufrieden sind, nicht fertig sind oder nicht zufrieden sind, dann

56:51.960 --> 56:53.560
gehen Sie zurück in die Entwurfsphase.

56:54.000 --> 57:02.800
Das heißt aber, dass Sie Planung und Definition für alle Iterationen

57:02.800 --> 57:04.540
als erstes gemacht haben.

57:05.060 --> 57:09.600
Also Sie haben bereits alle drei oder vier Versionen des Systems und

57:09.600 --> 57:12.060
Iterationen, wie wir das nennen, schon vorausgeplant.

57:12.740 --> 57:16.740
Das heißt, Sie müssen, ist hier alles schon definiert, Sie müssen es

57:16.740 --> 57:17.380
nur noch machen.

57:17.580 --> 57:18.920
Das heißt, Sie gehen dann in den Entwurf.

57:19.740 --> 57:22.740
Das muss aber nicht so sein, ich könnte auch in die Planung

57:22.740 --> 57:26.920
zurückgehen und sagen, ich mache auch die Planung inkrementell.

57:27.700 --> 57:30.680
Eine inkrementelle Planung heißt dann das sogenannte Evolutionäre

57:30.680 --> 57:31.060
Modell.

57:31.360 --> 57:36.060
Ich plane ein Stück, entwerfe, implementiere, teste, führe vor,

57:36.840 --> 57:40.200
bewerte und gehe dann zurück in die Planung für das nächste Inkrement.

57:40.880 --> 57:47.380
So machen es hauptsächlich die agilen Methoden, die sagen, wir machen

57:47.380 --> 57:51.460
nur, planen nur das, was wir als nächstes machen und nicht mehr.

57:53.840 --> 57:57.500
Und selbstverständlich gibt es dann auch noch den hier, dass Sie hier

57:57.500 --> 58:01.800
in die Definitionsphase eingreifen und die Planung nicht mehr geändert

58:01.800 --> 58:02.120
wird.

58:03.380 --> 58:07.560
Aber wichtig ist, dass beim inkrementellen Vorgehen die einzelnen

58:07.560 --> 58:09.420
Versionen fertig durchgeplant sind.

58:09.600 --> 58:12.900
So, jetzt gehen wir zurück zu meiner Schreibung.

58:19.040 --> 58:21.020
Manchmal geht es, manchmal geht es nicht.

58:25.540 --> 58:28.980
Evolutionär, Phase und Analysieren nur den Teil, der als nächstes

58:28.980 --> 58:29.920
hinzugeführt wird.

58:30.160 --> 58:33.020
Das ist also gewissermaßen ein x-faches Wasserfallmodell.

58:35.060 --> 58:37.480
Das kann natürlich sein, dass der nächste Teil aufgrund der

58:37.480 --> 58:39.600
strukturellen Schwierigkeiten sich nicht mehr anpassen lässt.

58:39.740 --> 58:41.800
Das heißt, ich muss dann nochmal extra Arbeit machen.

58:45.640 --> 58:50.040
Dafür hat man jetzt in den agilen Methoden ein neues Wort entdeckt,

58:50.140 --> 58:51.360
das heißt Refactoring.

58:51.520 --> 58:54.260
Das heißt also, gut, wenn das nicht passt, dann müssen wir halt

58:54.260 --> 58:57.620
refactoren oder neu umstrukturieren.

58:58.980 --> 59:02.520
Das ist eine anerkannte Aufgabe, die müssen wir halt dann durchführen.

59:03.140 --> 59:04.580
Damit müssen wir rechnen.

59:05.240 --> 59:09.780
Inkrementell ist Plane und Analyse alles und nur iteriere dann einmal.

59:09.920 --> 59:14.180
Sie analysieren also Plane und analysieren alle N-Iterationen und

59:14.180 --> 59:15.260
führen sie dann nur noch durch.

59:17.160 --> 59:20.300
Und das erfordert wieder mal eine vollständige Analyse und Planung,

59:20.360 --> 59:22.960
was ich einfach eigentlich in diesem Modell verhindern wollte.

59:25.220 --> 59:27.720
Daher ist wohl das Evolutionäre besser.

59:28.860 --> 59:33.460
Weil es auch auf Änderungen, die spät kommen, noch reagieren kann.

59:33.720 --> 59:36.140
Das kann zum Beispiel das inkrementelle Modell nicht mehr.

59:36.600 --> 59:39.780
Wenn ich zum Beispiel einen Konkurrenten habe, der mit einer neuen

59:39.780 --> 59:42.980
Funktionalität daherkommt, ich habe schon alles durchgeplant, dann

59:42.980 --> 59:45.620
stehe ich ein bisschen blöd da, denn ich kann das nicht mehr einfügen.

59:46.480 --> 59:47.920
Evolutionäre Modelle können das.

59:49.320 --> 59:51.500
Ja, jetzt hatte ich da kurz eine Hand gesehen.

59:51.580 --> 59:52.420
Hat sich das erledigt?

59:55.550 --> 59:56.570
Keine Meldung?

59:56.910 --> 59:57.090
Okay.

59:57.810 --> 59:58.490
Gut.

59:59.810 --> 01:00:01.650
Also, das haben wir jetzt gesehen.

01:00:01.770 --> 01:00:03.390
Das haben wir als Prototyp-Modell gesehen.

01:00:04.850 --> 01:00:08.310
Und das Sprungziel hängt, wie gesagt, davon ab, ob ich evolutionär

01:00:08.310 --> 01:00:10.290
oder inkrementell arbeite.

01:00:15.990 --> 01:00:22.930
Als nächstes kommt das synchronisierende und stabilisierende Modell

01:00:22.930 --> 01:00:24.810
oder auch das Microsoft-Modell.

01:00:25.230 --> 01:00:28.410
Das wurde in einem Buch veröffentlicht, das hatte den reißerischen

01:00:28.410 --> 01:00:31.370
Titel Microsoft Secrets.

01:00:32.990 --> 01:00:36.830
Das ist ein richtig dicker Wälzer und das ist die Essenz daraus.

01:00:39.250 --> 01:00:42.810
Diesen 500 Seiten Wälzer handeln wir jetzt in ein paar Folien ab.

01:00:44.110 --> 01:00:49.790
Also, die Idee ist, organisiere eine große Anzahl von Programmierern,

01:00:49.790 --> 01:00:54.250
sagen wir 200, für ein riesiges Projekt, das war z.B.

01:00:54.350 --> 01:00:57.430
Windows 95, Windows 98 und später dann XP.

01:00:58.470 --> 01:01:00.150
Ich weiß nicht, wie es heute gemacht wird.

01:01:00.610 --> 01:01:03.550
Microsoft ist so groß, dass man sicher alles findet.

01:01:05.190 --> 01:01:10.450
Aber man möchte also kleine Hacker-Teams zulassen und eine Freiheit

01:01:10.450 --> 01:01:14.690
für die eigenen Ideen und Entwürfe zugestehen und das trotzdem

01:01:14.690 --> 01:01:16.970
irgendwie organisiert bekommen.

01:01:17.990 --> 01:01:23.150
Das machen wir so, dass wir täglich oder nächtlich synchronisieren.

01:01:23.970 --> 01:01:27.490
Das heißt, nächtlich wird das Gesamtsystem zusammengebaut, übersetzt,

01:01:27.830 --> 01:01:29.310
zusammengebaut und getestet.

01:01:30.270 --> 01:01:33.450
Das nennen sie synchronisieren nächtlich, am nächsten Morgen weiß man

01:01:33.450 --> 01:01:35.570
dann, welche Fehler aufgetreten sind.

01:01:36.250 --> 01:01:37.870
Wir stabilisieren regelmäßig.

01:01:39.750 --> 01:01:47.010
Es gibt also Meilensteine ungefähr alle 3 Monate und eigentlich geht

01:01:47.010 --> 01:01:50.070
mein Ding hier zum Verrücktwerden.

01:01:50.510 --> 01:01:52.110
Liegt vielleicht von meinem Standort weg.

01:01:53.330 --> 01:01:56.350
Und es gibt 3 Phasen.

01:01:57.350 --> 01:01:58.810
Es gibt immer Phasen.

01:01:59.650 --> 01:02:02.670
Eine Planungsphase, dann eine Entwicklungsphase.

01:02:02.770 --> 01:02:07.230
Die Entwicklungsphase ist in 3 verschiedenen Stufen 2 Subphasen oder

01:02:07.230 --> 01:02:09.150
Subprojekten organisiert, so muss ich sagen.

01:02:09.530 --> 01:02:12.210
Und es ist eine Stabilisierungsphase, da werden Fehler gesucht und

01:02:12.210 --> 01:02:13.330
gefunden und beseitigt.

01:02:16.110 --> 01:02:17.830
Ich bleibe besser gleich hier.

01:02:19.650 --> 01:02:19.950
Okay.

01:02:20.290 --> 01:02:21.670
Das ist die Grundidee.

01:02:21.770 --> 01:02:24.250
Ich zeige Ihnen ein kleines Bildchen, damit das deutlicher wird.

01:02:25.010 --> 01:02:29.350
Also hier oben ist diese Planungsphase, die soll also 3 bis 12 Monate

01:02:29.350 --> 01:02:29.810
dauern.

01:02:31.110 --> 01:02:34.210
Dann kommt ja die Entwicklungsphase, das sind 3 Stufen.

01:02:34.370 --> 01:02:37.230
Da gibt es also 3 Meilensteine, Meilensteine 1, 2 und 3.

01:02:37.230 --> 01:02:40.170
Das ist auf der nächsten Folie, das sind also Entwicklungsphasen hier.

01:02:41.110 --> 01:02:41.590
Entwicklungsschritte.

01:02:43.570 --> 01:02:46.850
Und die schauen also etwa so genau aus.

01:02:46.930 --> 01:02:47.930
Da kommen wir gleich dazu.

01:02:49.150 --> 01:02:51.430
Dann schauen wir uns als erstes die Planungsphase an.

01:02:52.570 --> 01:02:55.270
Da gibt es zum Beispiel...

01:02:55.270 --> 01:02:57.830
der Project Plan Approval, das ist das Ende der Planungsphase.

01:02:58.030 --> 01:03:01.270
Dauert, wie gesagt, zwischen 3 Monaten und 12 und einem Jahr.

01:03:01.430 --> 01:03:03.510
Das ist ungefähr die Größenordnung.

01:03:04.430 --> 01:03:09.970
Begonnen wird mit einem Vision Statement, einer Vorstellung des

01:03:09.970 --> 01:03:11.070
zukünftigen Systems.

01:03:11.890 --> 01:03:13.870
Das ist ziemlich kurz, wenige Seiten.

01:03:14.670 --> 01:03:18.350
Dann soll ein Spezifikationsdokument daraus werden, das ist dann etwas

01:03:18.350 --> 01:03:18.630
umfangreicher.

01:03:19.190 --> 01:03:22.450
Das wird in einem Specification Review untersucht, geprüft, ob es

01:03:22.450 --> 01:03:23.210
vollständig ist.

01:03:23.470 --> 01:03:26.330
Man merkt, aha, die machen Inspektionen.

01:03:26.870 --> 01:03:29.570
In der Tat, machen Inspektionen oder Reviews hier eigentlich.

01:03:30.450 --> 01:03:34.190
Dann soll es in der Planungsphase bereits erst die Prototypen geben.

01:03:34.190 --> 01:03:36.410
Aha, die Prototypen gibt es da auch noch.

01:03:38.190 --> 01:03:41.070
Die Erkenntnisse fließen eigentlich schon alle mit ein.

01:03:41.130 --> 01:03:42.150
Das sieht man ganz deutlich.

01:03:45.570 --> 01:03:46.610
Für Unsicherheiten.

01:03:47.150 --> 01:03:49.810
Dann soll es Design Feasibility Studies geben.

01:03:50.110 --> 01:03:52.130
Das heißt, kann ich überhaupt etwas erreichen?

01:03:53.010 --> 01:03:55.050
Kann ich überhaupt eine Lösung dafür finden?

01:03:55.530 --> 01:03:57.350
Oder wie müsste die Lösung denn aussehen?

01:03:57.350 --> 01:04:00.710
Dann gibt es eine Teststrategie, die festgelegt wird und schließlich

01:04:00.710 --> 01:04:02.070
ein Project Review.

01:04:02.410 --> 01:04:04.710
Achso, den Plan gibt es natürlich auch noch.

01:04:06.770 --> 01:04:11.410
Ist aber, wie soll ich sagen, im Gegensatz zum Phasenmodell, wo ich ja

01:04:11.410 --> 01:04:15.330
auch die Planungs- und Definitionsphase habe, nicht so ausführlich.

01:04:15.630 --> 01:04:19.270
Da gibt es keine so riesen Dokumente, die alles bis ins kleinste

01:04:19.270 --> 01:04:20.190
Detail festlegen.

01:04:20.650 --> 01:04:22.710
Sondern da gibt es mehr so eine Vorstellung davon.

01:04:22.710 --> 01:04:25.350
Was hätte ich denn gerne von einem Excel?

01:04:25.750 --> 01:04:28.810
Von einer Tabellenkalkulation, was muss das alles können?

01:04:31.690 --> 01:04:33.130
Und dann gibt es Prototypen.

01:04:33.290 --> 01:04:34.630
Ist das überhaupt schnell genug?

01:04:34.730 --> 01:04:37.090
Kann ich überhaupt im Gegenwärtigen...

01:04:37.090 --> 01:04:38.210
Das war übrigens nicht klar.

01:04:38.550 --> 01:04:41.230
Heute nimmt man an, das funktioniert ja alles so wunderbar.

01:04:41.630 --> 01:04:44.270
Ich fahre mit der Maus herum und alles mögliche flackert und leuchtet

01:04:44.270 --> 01:04:46.630
auf und wird aktiv und wieder deaktiviert.

01:04:46.630 --> 01:04:50.710
Das hat am Anfang nicht so toll funktioniert, weil die Rechner einfach

01:04:50.710 --> 01:04:53.430
nicht schnell genug waren, die grafischen Benutzeroberflächen

01:04:53.430 --> 01:04:55.390
durchzusteuern auf diese Art und Weise.

01:04:55.470 --> 01:04:57.090
Das ist schon ein großer Fortschritt geworden.

01:04:58.350 --> 01:05:00.070
Dann gibt es einen Implementierungsplan.

01:05:00.710 --> 01:05:01.970
Und dann gehen wir in die Implementierung.

01:05:02.030 --> 01:05:05.190
Die Implementierung ist jetzt diese drei Phasen.

01:05:05.190 --> 01:05:06.290
Ich sage immer Phasen dazu.

01:05:07.810 --> 01:05:09.990
Das ist eigentlich nicht so ganz richtig.

01:05:09.990 --> 01:05:12.350
Wir hatten ein Subprojekt, dem wird es eigentlich immer genannt.

01:05:13.510 --> 01:05:14.610
In drei Stufen.

01:05:14.810 --> 01:05:17.430
Dann fragt man sich, wie drei Stufen?

01:05:17.590 --> 01:05:19.930
Das ist wie beim iterativen Modell.

01:05:20.830 --> 01:05:24.210
Ich habe die ersten, die wichtigsten Funktionalitäten.

01:05:24.610 --> 01:05:25.970
Die werden hier durchgeführt.

01:05:26.170 --> 01:05:30.370
Dann kommen die nächstwichtigsten Funktionalitäten und anschließend

01:05:30.370 --> 01:05:34.550
die schönen Sachen, die Abrundungen am Schluss.

01:05:35.330 --> 01:05:36.990
Die werden hinzugefügt.

01:05:38.290 --> 01:05:40.390
Natürlich auch ganz nützlich.

01:05:40.910 --> 01:05:44.730
Ich habe dann möglichst schon ein funktionierendes System an dieser

01:05:44.730 --> 01:05:45.050
Stelle.

01:05:45.310 --> 01:05:48.410
Wenn ich die wichtigsten Funktionen bereits habe, dann kann ich schon

01:05:48.410 --> 01:05:49.430
etwas damit anfangen.

01:05:49.970 --> 01:05:55.010
Und das werden wir auch wiederfinden im Scrum-Modell, als auch im XP

01:05:55.010 --> 01:05:55.370
-Modell.

01:05:55.650 --> 01:05:59.950
Die Idee ist, nach jeder Entwicklungsstufe, das heißt, die haben dann

01:05:59.950 --> 01:06:07.030
andere Namen, die heißen dann Sprint oder sowas, dass dann ein

01:06:07.030 --> 01:06:09.410
funktionsfähiges System entsteht.

01:06:09.870 --> 01:06:15.770
Des Weiteren ist wichtig bei diesen drei Phasen, dass ich neue

01:06:15.770 --> 01:06:19.490
Funktionalitäten natürlich hier an diesen Stellen einfügen kann.

01:06:20.650 --> 01:06:29.310
Das steht jetzt nicht einzeln auf den Folien, aber von den Browser

01:06:29.310 --> 01:06:31.050
-Wars wissen Sie wahrscheinlich nichts mehr.

01:06:31.050 --> 01:06:34.810
Haben Sie einen Film gesehen, Browser-Wars vielleicht?

01:06:35.010 --> 01:06:35.870
Hat den jemand gesehen?

01:06:38.190 --> 01:06:43.130
Also es ging darum, dass in der Mitte der 90er-Jahre eine Firma gab,

01:06:43.230 --> 01:06:46.390
die heißt Netscape, die hat den ersten Internetbrowser entwickelt.

01:06:47.770 --> 01:06:50.070
Und das hat Microsoft lange verschlafen.

01:06:51.090 --> 01:06:57.330
Aber dann war Microsoft drauf und hat dann eine Aufholjagd gestartet.

01:06:58.830 --> 01:07:02.830
Und dann gab es also wirklich so eine Phase, wo sowohl Netscape als

01:07:02.830 --> 01:07:05.450
auch Microsoft irgendeine neue Funktionalität eingeführt haben.

01:07:05.550 --> 01:07:06.950
Das wurde dann in der Presse besprochen.

01:07:07.210 --> 01:07:08.570
Das war alles furchtbar wichtig.

01:07:08.970 --> 01:07:13.910
Manchmal so trivial, dass man sagt, ich kann jetzt zum Beispiel eine

01:07:13.910 --> 01:07:19.750
der Verbesserungen war, ich kann jetzt eine Internet- oder WWW-Adresse

01:07:20.670 --> 01:07:22.190
direkt an jemand anderen verschicken.

01:07:24.430 --> 01:07:26.270
So toll ist das auch wieder nicht.

01:07:29.750 --> 01:07:33.310
Aber es ging eben um all diese Funktionalitäten und da wurde wirklich

01:07:33.310 --> 01:07:35.370
mit harten Bandagen gespielt.

01:07:35.910 --> 01:07:39.150
Die härteste Bandage war natürlich, dass Netscape Geld gekostet hat

01:07:39.150 --> 01:07:42.650
und Microsoft hat seinen als Teil des Betriebssystems vertrieben, also

01:07:42.650 --> 01:07:44.730
für nichts, für umme.

01:07:45.870 --> 01:07:50.530
Und das hat letztendlich Netscape trotz immer wieder technisch

01:07:51.410 --> 01:07:54.730
Vorreiter zu sein, das Genick gebrochen.

01:07:55.010 --> 01:07:57.750
Das war das Ergebnis der Browser Wars.

01:07:58.290 --> 01:08:02.710
Und da war es tatsächlich so, dass einfach neue Funktionalität erdacht

01:08:02.710 --> 01:08:05.570
wurde und Microsoft musste meistens hinten nachziehen.

01:08:08.970 --> 01:08:12.350
Und das geht gerade in so einem Modell ziemlich gut, wo ich sage, ich

01:08:12.350 --> 01:08:17.250
habe hier ein lieferbares System, das ist der Internet Explorer, der

01:08:17.250 --> 01:08:21.790
wird jetzt geliefert und ein paar Wochen später gibt es eine neue

01:08:21.790 --> 01:08:25.190
Version, die hat jetzt noch diese Funktionalität hinzu, die Netscape

01:08:25.190 --> 01:08:25.910
schon längst hatte.

01:08:28.190 --> 01:08:32.130
So ist das gedacht, dass ich auch neue Funktionalität hinzufügen kann.

01:08:33.650 --> 01:08:35.410
Wie sieht so eine Phase aus?

01:08:35.490 --> 01:08:40.410
Es sieht so aus, dass ich also sechs, zehn Wochen habe, da wird

01:08:40.410 --> 01:08:41.010
gehackt.

01:08:41.390 --> 01:08:43.890
Da wird einfach, sagen wir es ganz offen, hier wird gehackt.

01:08:43.890 --> 01:08:46.950
Man hat eine Vorstellung, was gemacht werden muss und das machen wir

01:08:46.950 --> 01:08:47.430
jetzt einfach.

01:08:47.990 --> 01:08:51.490
Also entwickeln, testen und stabilisieren.

01:08:52.110 --> 01:08:56.450
Dann gibt es zwei bis fünf Wochen Integration, Integrationstest, jetzt

01:08:56.450 --> 01:08:59.650
wird alles zusammengefügt und wieder getestet.

01:09:00.170 --> 01:09:03.510
Und dann haben wir noch eine Pufferzeit von zwei bis fünf Wochen,

01:09:03.670 --> 01:09:07.450
sodass wir, falls wir einen ganz großartigen Mist gemacht haben, den

01:09:07.450 --> 01:09:08.390
noch ausbessern können.

01:09:08.390 --> 01:09:11.870
Ja, so ist die Idee.

01:09:12.010 --> 01:09:16.150
Immer wieder stabilisieren hier drin, zwischendrin nächtlich natürlich

01:09:16.150 --> 01:09:22.330
fertig integrieren, aber am Schluss dann diese Integrationsphase, wo

01:09:22.330 --> 01:09:25.570
diese Fehler, die erst in der Integration auftauchen, beseitigt

01:09:25.570 --> 01:09:26.390
werden.

01:09:28.710 --> 01:09:35.050
Noch etwas, was man hinzufügen muss, bei diesem Modell gibt es genauso

01:09:35.050 --> 01:09:36.530
viele Tester wie Entwickler.

01:09:36.530 --> 01:09:40.610
Jeder Entwickler hat gewissermaßen seinen eigenen Tester.

01:09:42.050 --> 01:09:44.810
Entwickler und Tester sind umgleich viele Leute.

01:09:45.770 --> 01:09:49.490
Da wird ein sehr hoher Wert gelegt, bei Microsoft jedenfalls in diesem

01:09:49.490 --> 01:09:53.170
Modell, auf das Testen.

01:09:53.590 --> 01:09:56.110
So, gut, dann können wir das noch durchgehen.

01:09:56.410 --> 01:09:57.990
Diese Milestones werden dann erledigt.

01:09:59.050 --> 01:10:04.210
Hier ist also die dritte Phase passiert, das dritte Subprojekt an der

01:10:04.210 --> 01:10:04.830
Stelle fertig.

01:10:04.830 --> 01:10:08.770
Und jetzt kommt nochmal eine Stabilisierungsphase, das ist die hier.

01:10:09.150 --> 01:10:12.150
Das sind insgesamt fünf Phasen.

01:10:13.750 --> 01:10:16.450
Eins, zwei, drei, fünf Stück.

01:10:17.970 --> 01:10:19.170
Was passiert dann?

01:10:19.370 --> 01:10:23.090
Da wird noch optimiert und Probleme gesucht.

01:10:26.630 --> 01:10:30.230
Da kommt zuerst mal ein Visual Freeze, das heißt, die

01:10:30.230 --> 01:10:33.270
Benutzeroberfläche wird festgehalten, die wird jetzt eingefroren und

01:10:33.270 --> 01:10:34.150
die bleibt jetzt so.

01:10:34.910 --> 01:10:38.450
Und dann gibt es Feature Complete, da werden also auch noch die

01:10:38.450 --> 01:10:41.810
letzten Funktionen implementiert und fertiggestellt.

01:10:42.470 --> 01:10:44.110
Und schließlich kommt der Punkt Code Complete.

01:10:44.530 --> 01:10:52.550
Der Punkt heißt, jetzt beginnt das interne Testen des Gesamtsystems

01:10:52.550 --> 01:10:56.030
und das externe Testen danach, das sind also die Alpha- und die Beta

01:10:56.030 --> 01:10:56.470
-Tests.

01:10:56.650 --> 01:10:58.830
Das ist normalerweise der Begriff dafür.

01:10:58.830 --> 01:11:04.490
Beta heißt, ich suche mir Organisationen oder auch Freiwillige, die

01:11:04.490 --> 01:11:07.270
mein System testen und die freuen sich, die neueste Software von mir

01:11:07.270 --> 01:11:13.050
zu haben und die schenken mir ihre Zeit, indem sie mein System auf

01:11:13.050 --> 01:11:15.270
Fehler untersuchen und mir die dann checken, sodass ich sie

01:11:15.270 --> 01:11:16.250
korrigieren kann.

01:11:17.850 --> 01:11:23.790
Auch da war Microsoft führend, sich über externe Tester Zeit und Geld

01:11:23.790 --> 01:11:24.270
zu sparen.

01:11:25.050 --> 01:11:29.090
Und am Schluss kommt die sogenannte Zero-Bug-Release.

01:11:30.650 --> 01:11:34.370
Zero-Bug, wer es glaubt, aber so heißt es.

01:11:35.410 --> 01:11:39.230
Release to Manufacturing heißt, zu dem Zeitpunkt hat man noch weniger

01:11:39.230 --> 01:11:42.670
über Internet verteilt, sondern hat man eben diese Kisten gemacht und

01:11:42.670 --> 01:11:52.670
CDs gebrannt und Handbücher gedruckt und in Plastik eingewickelt und

01:11:52.670 --> 01:11:55.330
jetzt liefert man natürlich alles über das Internet.

01:11:56.230 --> 01:11:58.770
Aber da muss ich natürlich auch eine Vorbereitung treffen, damit das

01:11:58.770 --> 01:11:59.030
geht.

01:12:00.910 --> 01:12:05.210
Das funktioniert als das Synchronisieren und Stabilisieren effektiv

01:12:05.210 --> 01:12:10.410
durch kurze Produktzyklen, Projizierung nach Funktionen, das heißt,

01:12:10.550 --> 01:12:13.490
ich mache erst die wichtigsten zuerst, dann die zweitwichtigsten, den

01:12:13.490 --> 01:12:17.330
drittwichtigsten und kann jederzeit neue Funktionalität einführen.

01:12:17.330 --> 01:12:22.870
Natürliche Modularisierung nach diesen Funktionen habe ich, ich kann

01:12:22.870 --> 01:12:26.370
weitermachen auch ohne vollständige Spezifikation, unser großes

01:12:26.370 --> 01:12:28.250
Problem beim Wasserfall.

01:12:29.270 --> 01:12:32.650
Viele Entwickler arbeiten in kleinen Teams zusammen und damit genauso

01:12:32.650 --> 01:12:40.770
effektiv wie wenige und Rückmeldungen können frühzeitig Wettbewerber,

01:12:42.690 --> 01:12:44.990
Wettbewerbsfunktionen können jederzeit eingefügt werden.

01:12:46.070 --> 01:12:47.990
Es gibt natürlich auch ein Kontra.

01:12:48.590 --> 01:12:49.530
Das Kontra sagt,

01:12:53.450 --> 01:12:58.210
ungeeignet für manche Art von Software, also für Software, die

01:12:58.210 --> 01:13:02.790
Architekturprobleme aufweisen kann, wo die Architektur sehr wichtig

01:13:02.790 --> 01:13:08.650
ist, wo ich, dieses Verfahren führt auch zu mangelhafter

01:13:08.650 --> 01:13:12.550
Fehlertoleranz und bei Echtzeitfähigkeit ist es auch nicht möglich.

01:13:14.330 --> 01:13:21.510
Haben Sie diesen berühmten Film mit Bill Gates von Windows 98 schon

01:13:21.510 --> 01:13:21.910
gesehen?

01:13:23.130 --> 01:13:25.350
Eine Vorführung von Windows 98?

01:13:26.230 --> 01:13:28.090
Wer hat das gesehen?

01:13:31.170 --> 01:13:36.130
Suchen Sie es mal auf dem Internet Windows 98 Bill Gates führt es also

01:13:36.130 --> 01:13:39.930
vor und das System bricht in der Vorführung ab.

01:13:39.930 --> 01:13:44.310
Also stürzt ab, das gesamte Betriebssystem schaltet sich aus.

01:13:44.590 --> 01:13:48.510
Blaue Blue Screen am Schluss.

01:13:49.590 --> 01:13:54.450
Ja, das ist mangelhafte Fehlertoleranz, Architekturprobleme durch

01:13:54.450 --> 01:13:58.070
diese mangelhafte Kooperation zwischen den einzelnen Teams entsteht

01:13:58.070 --> 01:13:58.330
das.

01:13:59.190 --> 01:14:02.490
Es sind Ad-Hoc-Prozesse in jedem Team, da ist leider nichts

01:14:02.490 --> 01:14:03.110
vorgeschrieben.

01:14:03.110 --> 01:14:07.190
Also im Team selbst, jedes Team kann machen, was es will.

01:14:08.390 --> 01:14:12.230
Sie haben ja gesehen, dass wir zwar Reviews vorgeschrieben haben, aber

01:14:12.230 --> 01:14:15.970
nur in der Planungsphase, nicht in der Entwicklungsphase.

01:14:17.010 --> 01:14:21.070
Und es hat sich dann herausgestellt, dass innerhalb von 18 Monaten 50%

01:14:21.070 --> 01:14:22.950
des Kodens überarbeitet werden musste.

01:14:23.350 --> 01:14:24.250
Das ist ziemlich viel.

01:14:24.570 --> 01:14:27.390
In eineinhalb Jahren die Hälfte der Software neu schreiben oder

01:14:27.390 --> 01:14:29.350
überarbeiten ist problematisch.

01:14:29.350 --> 01:14:30.870
Das ist ein großer Aufwand.

01:14:34.510 --> 01:14:39.170
Und hängt eben damit zusammen, dass es sonst in den Entwicklungsphasen

01:14:39.170 --> 01:14:40.930
eigentlich keine weiteren Regeln mehr gibt.

01:14:42.370 --> 01:14:44.850
Da können Sie natürlich viel dazu lesen.

01:14:46.510 --> 01:14:47.150
Das...

01:14:48.670 --> 01:14:49.310
Moment...

01:14:56.960 --> 01:14:57.600
Moment...

01:14:58.500 --> 01:15:02.000
Microsoft Secrets, ich glaube so heißt das, das ist der Untertitel

01:15:02.000 --> 01:15:03.340
Microsoft Secrets.

01:15:03.580 --> 01:15:04.780
Das ist das Buch dazu.

01:15:05.320 --> 01:15:06.660
Gibt es Fragen dazu?

01:15:12.500 --> 01:15:16.780
Also wir haben jetzt gesehen Code & Fix

01:15:20.940 --> 01:15:25.100
Phasenmodell, Prototypmodell wir haben das iterative Modell mit zwei

01:15:25.100 --> 01:15:32.540
Varianten gesehen iteratives Modell und jetzt haben wir Synchronize &

01:15:32.540 --> 01:15:33.000
Stabilize.

01:15:33.080 --> 01:15:36.480
Sie sehen schon, dass die Modelle besser werden, in gewisser Weise

01:15:36.480 --> 01:15:38.560
voneinander gelernt haben.

01:15:40.720 --> 01:15:47.780
Und die sage ich mal zur Zeit üblichen Modelle sind aber andere.

01:15:48.240 --> 01:15:52.660
Das sind XP für Extreme Programming und Scrum.

01:15:52.860 --> 01:15:54.120
Und das zeige ich Ihnen als nächstes.

01:15:54.120 --> 01:15:57.160
Da haben wir heute sogar noch eine Viertelstunde Zeit dafür.

01:15:57.400 --> 01:16:00.840
Das ist gut, denn am Freitag müssen wir auch noch etwas anderes

01:16:00.840 --> 01:16:05.760
machen, nämlich eine Preisverleihung für den Paralysierungswettbewerb.

01:16:06.480 --> 01:16:11.800
Gut, also agile Prozesse

01:16:22.990 --> 01:16:31.010
agil wie leicht, physisch, schnell und da gibt es ein agiles Manifest

01:16:31.010 --> 01:16:36.730
eine Gegenreaktion zu den plangetriebenen Prozessen, insbesondere dem

01:16:36.730 --> 01:16:37.170
Wasserfall.

01:16:38.110 --> 01:16:41.190
Sie müssen sich jetzt in folgende Situation stecken.

01:16:41.830 --> 01:16:46.910
Stellen des Microsoft Modell ist noch nicht so richtig bekannt, aber

01:16:46.910 --> 01:16:53.630
das was man permanent predigt in allen Schulungen, Universitäten als

01:16:53.630 --> 01:16:56.990
auch in der Industrie ist das Wasserfallmodell mit Prototyp davor und

01:16:56.990 --> 01:16:57.350
so weiter.

01:16:58.310 --> 01:17:02.530
Und Sie wissen, dass das Zeug dokumentgetrieben ist.

01:17:02.630 --> 01:17:07.250
Man muss jede Menge an Dokumenten machen, mehr noch als wir besprochen

01:17:07.250 --> 01:17:11.770
haben, weil man sagt, da gibt es ein Problem, da erfinden wir noch

01:17:11.770 --> 01:17:16.290
einen weiteren Überprüfungsschritt dazu und dieser Überprüfungsschritt

01:17:16.290 --> 01:17:19.570
wird natürlich aufgrund eines Dokumentes gemacht.

01:17:20.150 --> 01:17:24.330
Das heißt, ich muss immer noch mehr in diesen Planungsprozess

01:17:24.330 --> 01:17:31.110
hineinpacken, noch mehr Dokumente beschreiben und irgendwann mal wurde

01:17:31.110 --> 01:17:32.390
das den Entwicklern zu viel.

01:17:32.670 --> 01:17:35.270
Das ist wirklich, das müssen Sie wirklich so sehen.

01:17:35.510 --> 01:17:37.350
Das wird ja immer noch schlimmer.

01:17:37.610 --> 01:17:40.470
Ich muss immer noch mehr, werde ich vom Programmieren abgehalten,

01:17:40.850 --> 01:17:43.070
gewissermaßen, indem ich irgendwelche Dokumente schreibe.

01:17:43.530 --> 01:17:49.830
Das war also gewissermaßen eine anarchische Gegenreaktion zu dem

01:17:49.830 --> 01:17:51.350
übermäßigen Planen.

01:17:52.170 --> 01:17:56.590
Und dann haben sich Leute zusammengesammelt, Schluss damit, Schluss

01:17:56.590 --> 01:17:57.790
damit, wir machen das anders.

01:17:58.250 --> 01:18:01.210
Uns sind jetzt nicht mehr die Dokumente so wichtig, sondern was uns

01:18:01.210 --> 01:18:04.970
wichtig ist, Individuen und die Interaktion dazwischen ist wichtiger

01:18:04.970 --> 01:18:07.630
als Prozesse und Werkzeuge, wie man es macht und so weiter.

01:18:08.650 --> 01:18:12.550
Die Zusammenarbeit, laufende Software ist wichtiger als vollständige

01:18:12.550 --> 01:18:13.450
Dokumentation.

01:18:14.370 --> 01:18:16.790
Kundenmitarbeit ist wichtiger als Vertragsverhandlungen.

01:18:17.230 --> 01:18:21.990
Im Extreme Programming geht das so weit, dass es verlangt, dass bei

01:18:21.990 --> 01:18:25.630
größeren Softwareentwicklungen immer ein Kunde vor Ort ist, der also

01:18:25.630 --> 01:18:28.630
beim Entwicklungsteam anwesend ist, den man dann fragen kann.

01:18:29.510 --> 01:18:32.630
Und sich auf Änderungen einstellen ist wichtiger als Verfolgung eines

01:18:32.630 --> 01:18:33.150
Plans.

01:18:35.170 --> 01:18:36.950
Das ist das agile Manifesto.

01:18:37.990 --> 01:18:41.010
Manifest finden Sie auch am Internet, das ist natürlich klar, mit

01:18:41.010 --> 01:18:41.910
jeder Menge

01:18:46.410 --> 01:18:47.310
Argumentation dazu.

01:18:47.310 --> 01:18:52.630
Aber ich glaube, ein Manifest muss sich auch selbst erklären und ich

01:18:52.630 --> 01:18:53.790
glaube, die Sätze tun das.

01:18:56.550 --> 01:18:56.910
Okay.

01:18:58.330 --> 01:19:02.970
Was ein agiler Prozess jetzt sagt, wir arbeiten mit einem Minimum an

01:19:02.970 --> 01:19:06.730
Vorausplanung, denn die ganze Planung kann verkehrt sein und dann

01:19:06.730 --> 01:19:08.910
haben wir uns nur einen Haufen Arbeit gemacht und das ist

01:19:08.910 --> 01:19:09.970
verschwendete Zeit.

01:19:10.550 --> 01:19:14.530
Die Planung erfolgt inkrementell, genauso wie wir es gesehen haben, im

01:19:14.530 --> 01:19:19.990
iterativen Modell, vermeiden unterstützende Dokumente, das ist auch

01:19:19.990 --> 01:19:23.170
ganz lustig zu sagen, wir brauchen keine Dokumente, der Code muss sich

01:19:23.170 --> 01:19:27.290
selbst erklären, aber wenn du Dokumente haben willst, wenn du

01:19:27.290 --> 01:19:29.830
Dokumentation haben willst, dann machen wir das, kostet halt extra.

01:19:30.130 --> 01:19:32.330
Wir machen das, wäre erforderlich, aber eigentlich nicht.

01:19:33.950 --> 01:19:35.630
Im Grundzustand erstmal nicht.

01:19:36.470 --> 01:19:41.050
Wir wollen aber schnell reagieren auf Änderungen, auf Änderungswünsche

01:19:41.050 --> 01:19:46.210
des Kunden, das wollen wir möglich machen und möglichst den Kunden in

01:19:46.210 --> 01:19:47.550
die Entwicklung mit einbeziehen.

01:19:47.730 --> 01:19:48.970
Das ist der Kunde vor Ort.

01:19:49.730 --> 01:19:52.730
Da gibt es mehrere Vertreter, das Extreme Programming, das ich jetzt

01:19:52.730 --> 01:19:56.830
Nexus nenne und das Scrum, das wir über Nexus durchbesprechen und da

01:19:56.830 --> 01:20:02.330
gibt es noch weitere, inzwischen wahrscheinlich noch fünf andere, aber

01:20:02.330 --> 01:20:07.210
die beiden sind die wichtigsten Vertreter und die schauen wir uns

01:20:07.210 --> 01:20:07.650
jetzt an.

01:20:08.530 --> 01:20:13.710
Das Extreme Programming geht also so vor, das sind die 1, 2, 3, 4, 5,

01:20:13.770 --> 01:20:20.190
6, 7, 8, 9, 10 wichtigsten Techniken, die benutzt werden im Extreme

01:20:20.190 --> 01:20:20.730
Programming.

01:20:21.090 --> 01:20:26.130
Das ist übrigens auch ein Extreme Programming, das lehnt sich so an,

01:20:26.150 --> 01:20:27.450
an Extreme Sports.

01:20:28.910 --> 01:20:32.770
Das ist also auch ein guter Marketing-Ausdruck.

01:20:33.370 --> 01:20:35.110
So, was kommt da vor?

01:20:38.870 --> 01:20:40.570
Manches davon kennen wir noch gar nicht.

01:20:40.710 --> 01:20:42.250
Das eine heißt das Paar-Programmieren.

01:20:42.710 --> 01:20:48.570
Paar-Programmieren heißt, das heißt, jede Zeile Produktiv-Code wird

01:20:48.570 --> 01:20:52.250
von zwei Leuten geschrieben, vor einem Rechner.

01:20:53.890 --> 01:20:54.450
Revolutionär.

01:20:55.310 --> 01:20:55.510
Wie?

01:20:56.970 --> 01:20:59.010
Das verdoppelt ja meine Kosten.

01:21:00.090 --> 01:21:02.950
Die Kosten gehen zwar hoch, aber die Qualität geht auch hoch.

01:21:02.950 --> 01:21:04.590
Darüber werden wir noch sprechen.

01:21:05.250 --> 01:21:09.550
Paar-Programmieren, immer Produktions-Code.

01:21:09.830 --> 01:21:12.530
Das Test-Code zum Beispiel ist kein Produktions-Code.

01:21:12.610 --> 01:21:13.750
Den dürfen Sie alleine schreiben.

01:21:14.170 --> 01:21:18.250
Aber das, was in das endgültige System geht, immer mit einem zweiten

01:21:18.250 --> 01:21:24.550
Kollegen oder Kollegin, die gewissermaßen eine Inspektion durchführt,

01:21:24.590 --> 01:21:25.370
während wir arbeiten.

01:21:26.490 --> 01:21:28.350
Dann gibt es das getriebene Entwicklung.

01:21:30.270 --> 01:21:32.190
Ist ganz schwierig zu erklären.

01:21:33.170 --> 01:21:36.290
Test-Getriebene Entwicklung heißt, wenn Sie eine neue Methode

01:21:36.290 --> 01:21:40.550
schreiben, also eine Methode hinzufügen zu einer Klasse, dann

01:21:40.550 --> 01:21:42.170
schreiben Sie zuerst den Test-Code.

01:21:43.270 --> 01:21:46.590
Zuerst alle Tests schreiben für diese Methode.

01:21:46.670 --> 01:21:48.450
Nur für diese Methode, nicht für alle Methoden.

01:21:48.770 --> 01:21:54.030
Für diese Methode die Tests schreiben und dann den Code dafür und den

01:21:54.030 --> 01:21:58.250
Code so lange massieren, bis alle Tests bestehen, es sei denn, wir

01:21:58.250 --> 01:21:59.790
müssen noch weitere Tests hinzufügen.

01:22:00.150 --> 01:22:01.530
Das ist Test-Getriebene Entwicklung.

01:22:01.970 --> 01:22:04.310
Das stellt den Entwicklungsprozess auf den Kopf.

01:22:05.230 --> 01:22:08.270
Normal sagt man, ich schreibe erst mal mein Zeugs und dann teste ich

01:22:08.270 --> 01:22:08.350
es.

01:22:08.430 --> 01:22:09.030
Das ist normal.

01:22:09.350 --> 01:22:10.630
Wir sagen genau umgekehrt.

01:22:10.710 --> 01:22:11.850
Schreib erst deine Tests.

01:22:14.010 --> 01:22:15.810
Das hat eine wichtige Funktion.

01:22:16.530 --> 01:22:20.770
Da es keine Dokumentation gibt, gibt es auch keine Spezifikation.

01:22:20.870 --> 01:22:23.790
Niemand sagt dir, was die Schnittstellen sein sollen zwischen den

01:22:23.790 --> 01:22:24.210
Modulen.

01:22:24.690 --> 01:22:30.110
Aber die Test-Getriebene Entwicklung zwingt den Programmierer dazu,

01:22:30.430 --> 01:22:30.930
das festzulegen.

01:22:31.830 --> 01:22:35.750
Denn er kann den Test nicht schreiben, wenn er nicht weiß, welche

01:22:35.750 --> 01:22:38.210
Parameter die Methode braucht und was die Funktion ist.

01:22:38.590 --> 01:22:41.890
Er kann nur Rückgabewert ist und was er sonst alles anstellt.

01:22:42.190 --> 01:22:44.050
Das muss ja dann getestet werden im Test.

01:22:44.050 --> 01:22:49.950
Also muss ich mir jetzt statt ein Spezifikationsdokument zu schreiben

01:22:49.950 --> 01:22:53.870
einen Test und damit lege ich die Spezifikation fest.

01:22:54.230 --> 01:23:01.330
Die dokumentiere ich dann natürlich als Kommentar à la JavaDoc im Code

01:23:01.330 --> 01:23:01.690
selbst.

01:23:02.670 --> 01:23:04.210
Das ist die Test-Getriebene Entwicklung.

01:23:05.110 --> 01:23:08.080
Dann inkrementelle Entwurfung und Mitumstrukturierung.

01:23:09.210 --> 01:23:12.110
Das hatte ich vorhin schon erwähnt bei der inkrementellen oder

01:23:12.110 --> 01:23:13.270
prototypischen Entwicklung.

01:23:13.410 --> 01:23:15.210
Wir haben mehrere Phasen.

01:23:15.590 --> 01:23:18.270
Da ist jetzt keine Festlegung auf drei Phasen wie bei Microsoft,

01:23:18.510 --> 01:23:19.950
sondern es sind beliebig viele Phasen.

01:23:20.870 --> 01:23:24.790
Und die fügen einfach immer wieder ein neues Inkrement hinzu.

01:23:25.130 --> 01:23:29.210
Und wenn es nicht passt, dann wird einfach umstrukturiert.

01:23:29.370 --> 01:23:30.470
Das ist Teil der Aufgabe.

01:23:31.230 --> 01:23:35.230
Wenn ich keinen vorausschauenden Turf gemacht habe, der sagt, ich bin

01:23:35.230 --> 01:23:38.670
vorbereitet auf die und jene Änderung und jetzt kommt diese Änderung,

01:23:39.710 --> 01:23:46.030
bin aber nicht vorbereitet drauf, dann strukturiere ich halt um.

01:23:47.010 --> 01:23:49.070
Das ist auch etwas auf den Kopf gestellt.

01:23:49.390 --> 01:23:51.810
Sie erinnern sich, wenn ich über den Turf gesprochen habe, da sagte

01:23:51.810 --> 01:23:56.690
ich immer, Vorsicht beim Entwurf, achten Sie drauf, was noch kommen

01:23:56.690 --> 01:23:57.230
könnte.

01:23:57.690 --> 01:24:01.270
Ich könnte die Algorithmen ändern, ich könnte die Datenstrukturen

01:24:01.270 --> 01:24:06.490
ändern, ich könnte eine Ausgabeformate ändern, ich könnte ziemlich

01:24:06.490 --> 01:24:10.230
viel anpassen müssen und denk dran, dass du eine Schnittstelle machst,

01:24:10.370 --> 01:24:11.690
die änderungsunempfindlich ist.

01:24:11.990 --> 01:24:13.730
Wir sagen, die ist nicht erforderlich.

01:24:15.170 --> 01:24:17.570
Mach nur so viel, wie gerade notwendig.

01:24:18.430 --> 01:24:23.690
Also, iterative Planung in kurzen Zyklen, das nennen sie Planungsspiel

01:24:23.690 --> 01:24:26.550
oder Planning Game, ich weiß nicht, warum das ein Spiel ist, das ist

01:24:26.550 --> 01:24:28.970
todernst, aber so heißt es.

01:24:30.050 --> 01:24:32.210
Aktive Beteiligung des Kunden, hatte ich schon erwähnt.

01:24:32.810 --> 01:24:33.770
Der Kunde ist vor Ort.

01:24:35.230 --> 01:24:39.410
Fortlaufende Integration, das kennen wir auch schon von Synchronize &

01:24:39.410 --> 01:24:39.950
Stabilize.

01:24:40.490 --> 01:24:44.190
Hier wird permanent auf Knopfdruck, mehrmals am Tag, wenn Sie wollen,

01:24:44.430 --> 01:24:45.610
integriert.

01:24:46.150 --> 01:24:51.710
Allerdings mit dem Kaviar, das machen Sie in Ihrer eigenen Sandbox, in

01:24:51.710 --> 01:24:53.050
Ihrer eigenen Entwicklungsumgebung.

01:24:53.210 --> 01:24:56.790
Und erst wenn das bei Ihnen alles stimmt, wird es sichtbar gemacht für

01:24:56.790 --> 01:24:57.590
das Gesamteam.

01:24:57.950 --> 01:25:01.970
Und derjenige, der etwas Unfertiges abliefert, der kriegt eine kleine

01:25:01.970 --> 01:25:02.470
Strafe.

01:25:04.450 --> 01:25:07.690
Es gibt Programmierrichtlinien, das wissen Sie, was das ist, das

01:25:07.690 --> 01:25:08.930
bespreche ich jetzt nicht mehr weiter.

01:25:09.970 --> 01:25:13.850
Gemeinsamer Quelltextbesitz, das heißt, niemand ist der alleinige

01:25:13.850 --> 01:25:18.130
Besitzer einer bestimmten Komponente und nur er oder sie darf sie

01:25:18.130 --> 01:25:19.090
ändern und verbessern.

01:25:19.230 --> 01:25:20.930
Das ist kein persönlicher Besitz.

01:25:21.550 --> 01:25:26.750
Jeder, der kompetent ist, darf das Ding ändern, wenn es notwendig ist.

01:25:27.410 --> 01:25:29.110
Betonung auf kompetent.

01:25:32.770 --> 01:25:35.410
Textuelle Beschreibung der Anwendungsfälle auf Karteikarten.

01:25:36.550 --> 01:25:38.470
40 Stunden in der Woche verstehen Sie auch.

01:25:39.830 --> 01:25:41.850
Textuelle Beschreibung der Anwendungsfälle.

01:25:42.350 --> 01:25:45.530
Anwendungsfälle gibt es, so viel Planung muss sein.

01:25:45.530 --> 01:25:49.110
Es gibt die Anwendungsfälle, die ich Ihnen ja schon beschrieben habe,

01:25:49.210 --> 01:25:52.530
ganz am Anfang der Vorlesung, die gibt es, die werden auf Karteikarten

01:25:52.530 --> 01:25:54.030
notiert, natürlich digital.

01:25:55.250 --> 01:25:59.410
Und wie man dann vorgeht, in diesem iterativen Planung, ist, dass man

01:25:59.410 --> 01:26:03.470
sich aus diesen Karteikarten die nächsten Funktionalität herausholt

01:26:03.470 --> 01:26:05.890
und sagt, die machen wir in der nächsten Iteration.

01:26:08.850 --> 01:26:12.490
Okay, jetzt zu einigen diesen Punkten etwas mehr Detail.

01:26:13.190 --> 01:26:13.750
Bitteschön.

01:26:18.810 --> 01:26:22.870
Die Frage ist, werden die 40 Stunden wirklich eingehalten oder gibt es

01:26:22.870 --> 01:26:23.830
da auch Überstunden?

01:26:24.490 --> 01:26:25.410
Die gibt es sicher auch.

01:26:27.590 --> 01:26:32.470
Aber es ist so, dass sowohl Powerprogrammieren und Testgetrieben

01:26:32.470 --> 01:26:36.710
Entwicklung, wenn Sie es richtig machen, richtig anstrengend sind.

01:26:38.470 --> 01:26:40.290
Also denken Sie mal an Powerprogrammieren.

01:26:40.370 --> 01:26:42.190
Sitzen Sie mit dem Kollegen vor dem Spielschirm.

01:26:42.190 --> 01:26:44.030
Es ist nicht so, dass Sie da Kaffee trinken.

01:26:48.150 --> 01:26:53.430
Sie sind ein gut eingespieltes Paar, das arbeitet wirklich intensiv.

01:26:53.590 --> 01:26:55.790
Und Sie schaffen nicht mehr als 8 Stunden am Tag.

01:26:57.130 --> 01:26:59.210
So intensiv zu arbeiten, das geht gar nicht.

01:27:00.250 --> 01:27:02.590
Also genau.

01:27:02.910 --> 01:27:06.810
Aber es ist ein Ziel, sagen wir mal so.

01:27:09.010 --> 01:27:11.570
Jetzt schauen wir uns Powerprogrammieren genauer an.

01:27:11.670 --> 01:27:12.150
Was haben wir noch?

01:27:12.290 --> 01:27:13.210
5, 6 Minuten.

01:27:14.110 --> 01:27:16.950
Arbeiten an einer Tastatur einer Maus, einem Bildschirm.

01:27:17.710 --> 01:27:19.650
Obwohl es da auch schon Abwandlungen gibt.

01:27:19.830 --> 01:27:22.310
Es kann auch sein, dass Sie einen Bildschirm haben, aber zwei

01:27:22.310 --> 01:27:23.970
Tastaturen, zwei Mäuse.

01:27:24.770 --> 01:27:26.930
Dass man nicht dauernd um die Tastatur kämpfen muss.

01:27:27.270 --> 01:27:29.210
Sonst muss man sich immer so hin und her schubsen.

01:27:31.450 --> 01:27:34.590
Diejenigen, die mit zwei Tastaturen Maus arbeiten, sagen, das ist

01:27:34.590 --> 01:27:35.170
eigentlich besser.

01:27:37.670 --> 01:27:41.670
Dann gibt es eine Rollenverteilung, die sagt Fahrer und Beifahrer.

01:27:42.250 --> 01:27:45.850
Der Fahrer denkt die Implementierung des augenblicklichen Algorithmus

01:27:47.850 --> 01:27:49.610
und tippt eigentlich den Code ein.

01:27:51.270 --> 01:27:54.210
Während der Beifahrer strategisch denkt, dann sagt er, der macht jetzt

01:27:54.210 --> 01:27:54.570
das.

01:27:55.110 --> 01:27:56.710
Ich schaue mal schon, ob das jetzt stimmt.

01:27:57.290 --> 01:27:58.890
Führt also ständig eine Durchsicht durch.

01:27:59.550 --> 01:28:03.530
Betrachtet also den Code oder denkt voraus und sagt, ok, als nächstes

01:28:03.530 --> 01:28:07.410
müssen wir die und die Funktion machen und die mit der und der

01:28:07.410 --> 01:28:09.910
Bibliothek, die brauche ich jetzt kombinieren.

01:28:10.010 --> 01:28:11.310
Da müssen wir gleich mal nachschauen.

01:28:13.490 --> 01:28:16.610
Aber die Hauptaufgabe ist die Durchsicht.

01:28:18.250 --> 01:28:22.970
Das führt jetzt zu nachweisbar höherer Qualität und auch höherem

01:28:22.970 --> 01:28:23.350
Tempo.

01:28:25.530 --> 01:28:29.830
Und dieses Paarprogrammieren könnten Sie sagen, kompensiert für das,

01:28:29.950 --> 01:28:33.610
was wieder mal fehlt, nämlich die fehlenden Inspektionen und Reviews.

01:28:35.770 --> 01:28:41.870
Drittig ist jetzt, ob das wirklich ein Vorteil ist.

01:28:43.830 --> 01:28:47.490
Also man weiß jetzt, es gibt endlose Studien übrigens über

01:28:47.490 --> 01:28:48.330
Paarprogrammierung.

01:28:49.090 --> 01:28:52.090
Man weiß zum Beispiel, dass die meisten Leute erstmal mit großer

01:28:52.090 --> 01:28:55.210
Begeisterung Paarprogrammieren beginnen, auch wirklich

01:28:55.210 --> 01:28:58.110
Paarprogrammieren durchführen, aber über die Zeit, sagen wir ein

01:28:58.110 --> 01:29:01.230
halbes bis zum ganzen Jahr, der Anteil der Paarprogrammierung immer

01:29:01.230 --> 01:29:02.210
weiter absinkt.

01:29:02.490 --> 01:29:05.930
Anscheinend finden Sie, dass es nicht mehr erforderlich ist, im Paar

01:29:05.930 --> 01:29:07.250
zu programmieren oder so etwas.

01:29:09.230 --> 01:29:12.050
Man weiß nicht genau, warum das absinkt.

01:29:13.110 --> 01:29:17.670
Außerdem ist das Paarprogrammieren sehr, sehr günstig für das

01:29:17.670 --> 01:29:20.630
Einführen eines Neulings in die Software.

01:29:20.630 --> 01:29:25.410
Jemand, der sich noch nicht in der Software auskennt oder der

01:29:25.410 --> 01:29:29.110
vielleicht die Programmierumgebung nicht so gut kennt, wissen Sie, was

01:29:29.110 --> 01:29:36.070
jeder Schalter in ihrer Programmierumgebung, in Eclipse oder so etwas,

01:29:36.490 --> 01:29:36.770
tut.

01:29:37.570 --> 01:29:41.930
Sie kennen wahrscheinlich 10% dessen, was Sie machen könnten.

01:29:42.830 --> 01:29:47.050
Das lernt man also im Paarprogrammieren sehr schnell, aber die Kosten

01:29:47.050 --> 01:29:48.330
verdoppeln sich nahezu.

01:29:48.330 --> 01:29:53.150
Wenn man nur Zahlencode liest, die überzeugt werden, dann sind die

01:29:53.150 --> 01:29:58.550
Kosten etwa, naja, ich weiß es nicht genau, eine letzte Studie sagt so

01:29:58.550 --> 01:30:01.950
zwischen 80 und 90% höhere Kosten.

01:30:02.930 --> 01:30:04.110
Und es ist nicht klar,

01:30:07.350 --> 01:30:10.730
ob das durch die höhere Qualität kompensiert wird.

01:30:10.950 --> 01:30:12.510
Dazu gibt es noch keine Studie.

01:30:13.110 --> 01:30:17.330
Was heißt also eine Studie, die sagen würde, ja, wir investieren die

01:30:17.330 --> 01:30:21.370
extra Zeit und die extra Kosten, aber dann fällt hinterher beim Testen

01:30:21.370 --> 01:30:23.690
weniger Zeitaufwand an.

01:30:23.930 --> 01:30:28.530
So eine Studie kann ich Ihnen leider nicht verweisen, denn ich denke,

01:30:29.170 --> 01:30:30.810
es gibt sie nicht.

01:30:31.470 --> 01:30:36.210
Es gibt aber ein großes Experiment mit 300 Teilnehmern über

01:30:36.210 --> 01:30:36.950
Paarprogrammieren.

01:30:37.730 --> 01:30:41.550
200 wurden in Paaren eingesetzt und 100 als Einzelprogrammierer und

01:30:41.550 --> 01:30:44.170
deren Qualität und Produktivität verglichen.

01:30:44.730 --> 01:30:48.350
Und da hat man unter anderem festgestellt, erstens, dass die Kosten

01:30:48.350 --> 01:30:55.510
eben um 80-90% hochgehen, aber dass das der Nutzen für den erfahrenen

01:30:55.510 --> 01:31:00.830
Entwickler keiner ist und er eher den unerfahrenen Entwicklern nützt.

01:31:02.270 --> 01:31:02.850
Okay.

01:31:03.290 --> 01:31:04.770
Also da gibt es jede Menge Studien.

01:31:05.210 --> 01:31:08.510
Wenn Sie später mal in Vorlesungen gehen, dann bespreche ich die

01:31:08.510 --> 01:31:10.530
empirische Softwaretechnik genauer.

01:31:13.330 --> 01:31:13.850
Moment.

01:31:16.270 --> 01:31:16.790
Ferner.

01:31:17.790 --> 01:31:19.510
Und das hatte ich jetzt vorhin übersprungen.

01:31:19.770 --> 01:31:24.850
Ich sagte ja Ihnen, dieser Beifahrer führt quasi ein Review durch,

01:31:25.210 --> 01:31:27.970
während der Fahrer arbeitet.

01:31:29.050 --> 01:31:30.230
Das kann ich natürlich auch sagen.

01:31:30.290 --> 01:31:32.030
Na gut, das könnte ich doch auch trennen.

01:31:32.030 --> 01:31:36.010
Ich könnte also hergehen und sagen, ich programmiere einzeln, führe

01:31:36.010 --> 01:31:41.810
aber dann ein Review durch und was sind dann die Qualität und die

01:31:41.810 --> 01:31:42.210
Kosten.

01:31:44.370 --> 01:31:49.170
Und es stellt sich also heraus, dass die vergleichbar sind.

01:31:49.350 --> 01:31:52.570
Ich kann also entweder ein paar programmieren oder einzeln

01:31:52.570 --> 01:31:57.430
programmieren, aber dann eine Inspektion nachschalten, dann bekomme

01:31:57.430 --> 01:32:01.570
ich den gleichen Qualitätsvorteil für etwa die gleichen Kosten.

01:32:03.310 --> 01:32:08.550
Das heißt, Sie müssen gar nicht, um hohe Qualität zu erreichen, ein

01:32:08.550 --> 01:32:09.690
paar programmieren.

01:32:10.010 --> 01:32:12.590
Sie können das auch erreichen, indem Sie Inspektionen durchführen.

01:32:13.610 --> 01:32:15.870
Aber Sie wissen ja, die kostet natürlich auch Zeit.

01:32:16.750 --> 01:32:19.530
Vielleicht etwas weniger als permanent ein paar zu programmieren.

01:32:21.450 --> 01:32:24.630
Okay, das wäre also das, was zu Ihr paar Programmieren zu sagen ist.

01:32:27.550 --> 01:32:30.710
Wir haben auch Praktika durchgeführt mit paar Programmieren.

01:32:30.990 --> 01:32:33.210
Ich kann Ihnen sagen, Studenten sind immer begeistert.

01:32:35.890 --> 01:32:37.090
Sie finden das gut.

01:32:38.350 --> 01:32:39.650
Das kann ich auch gut verstehen.

01:32:40.910 --> 01:32:45.010
Aber als Dauerzustand ist so die Frage, ob man das wirklich die ganze

01:32:45.010 --> 01:32:45.670
Zeit durchhält.

01:32:47.250 --> 01:32:48.430
Gibt es Fragen dazu?

01:32:54.390 --> 01:32:57.790
Okay, wenn es keine Fragen mehr gibt, das nächste Punkt wäre das

01:32:57.790 --> 01:32:58.930
Testen.

01:32:59.010 --> 01:33:03.830
Ist natürlich zeitnah zum Programmieren, automatisiert und damit

01:33:03.830 --> 01:33:04.330
wiederholbar.

01:33:04.410 --> 01:33:05.850
Das machen Sie ja schon alles selber.

01:33:06.490 --> 01:33:09.310
Sollte Spaß machen, das heißt, dass man sich schnell schreiben kann.

01:33:09.410 --> 01:33:12.030
Man hat entsprechende Umgebung, das JUnit und Ähnliches.

01:33:12.210 --> 01:33:15.570
Das JUnit kommt übrigens aus dem Extreme Programming Teil her.

01:33:16.250 --> 01:33:19.150
Und man soll Fehler finden, nicht Fehlerfreiheit beweisen.

01:33:23.290 --> 01:33:29.890
Der Erfinder oder Apostel von XP sagt also, any program feature

01:33:29.890 --> 01:33:33.330
without an automated test simply doesn't exist.

01:33:34.630 --> 01:33:37.650
Programmierer schreiben also automatische Komponententests, Kunden

01:33:37.650 --> 01:33:41.610
spezifizieren Akzeptanztests, die die Programmierer implementieren und

01:33:41.610 --> 01:33:44.730
andere Testarten, Testtests und so weiter sind natürlich auch möglich.

01:33:45.010 --> 01:33:48.130
Testausführung häufig und automatisch.

01:33:48.130 --> 01:33:51.830
Was wir nächstes anschauen müssen, ist die testgetriebene Entwicklung,

01:33:52.050 --> 01:33:53.930
aber das machen wir dann am Freitag.

01:33:54.070 --> 01:33:54.770
Vielen Dank.

01:33:55.290 --> 01:33:55.910
Bis Freitag.

