06.10.2013 Aufrufe

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />

30.3 Extreme Programm<strong>in</strong>g (XP)<br />

E<strong>in</strong> völlig neuer Ansatz ist das Extreme Programm<strong>in</strong>g (XP). Dieser Ansatz widerspricht <strong>in</strong> vielem<br />

der gängigen Lehrme<strong>in</strong>ung <strong>und</strong> wird kontrovers diskutiert, ist aber e<strong>in</strong>e <strong>in</strong>teressante Alternative.<br />

Modularisiertes <strong>und</strong> Diszipl<strong>in</strong>iertes Vorgehen s<strong>in</strong>d auch bei <strong>die</strong>sem Ansatz <strong>die</strong> wichtigsten Voraussetzungen.<br />

Beim Extreme Programm<strong>in</strong>g wird nicht mehr das ganze System auf e<strong>in</strong>mal entworfen <strong>und</strong> implementiert,<br />

sondern das ganze Projekt durchläuft kurze (1-3 Wochen) Iterationszyklen. Zu Beg<strong>in</strong>n<br />

e<strong>in</strong>es jeden Iterationszyklus wird mit dem K<strong>und</strong>en besprochen, welche Funktionalität <strong>in</strong> <strong>die</strong>sem<br />

Zyklus realisiert werden soll. Am Ende e<strong>in</strong>es jeden Zyklus erhält der K<strong>und</strong>e e<strong>in</strong> stabiles, getestetes<br />

System, <strong>in</strong> dem alle bisher implementierten, sowie <strong>die</strong> neuen Features e<strong>in</strong>gebaut s<strong>in</strong>d <strong>und</strong> fehlerfrei<br />

funktionieren. Die Iterationszyklen werden solange wiederholt, bis das Produkt den K<strong>und</strong>enwünschen<br />

entspricht.<br />

Beim XP gelten folgende, für alle verb<strong>in</strong>dlichen 12 Regeln<br />

1. The Plann<strong>in</strong>g Game: Management <strong>und</strong> Entwicklung arbeiten zusammen um den maximalen Verkaufswert so schnell wie<br />

möglich zu erreichen. Das Spiel kann auf verschiedenen Ebenen ablaufen, <strong>die</strong> gr<strong>und</strong>legenden Regeln s<strong>in</strong>d immer <strong>die</strong>selben:<br />

1. Das Management erstellt e<strong>in</strong>e Liste mit den gewünschten Funktionen für das System.<br />

2. Die Entwicklung schätzt den Aufwand für <strong>die</strong> Funktionen, <strong>und</strong> wieviel davon <strong>in</strong> e<strong>in</strong>er Iteration implementiert werden<br />

kann.<br />

3. Das Management entscheidet, welche Funktionen <strong>in</strong> welcher Reihenfolge zu Implementieren s<strong>in</strong>d.<br />

2. Small Releases: Beg<strong>in</strong>ne mit der kle<strong>in</strong>sten nutzbr<strong>in</strong>genden Menge von Funktionen. Gib früh <strong>und</strong> oft neue Versionen frei,<br />

füge nur wenig neue Funktionalität pro Schritt h<strong>in</strong>zu.<br />

3. System Metaphor: Jedes Projekt hat e<strong>in</strong>e organisierte Ausdrucksweise, welche für leicht lernbare Regeln für Namensgebung<br />

sorgt.<br />

4. Simple Design: Benutze immer den e<strong>in</strong>fachst möglichen Entwurf der den Zweck erfüllt. Die Anforderungen können schon<br />

morgen ändern, deshalb mache nur was für <strong>die</strong> aktuelle Iteration Ziel nötig ist.<br />

5. Cont<strong>in</strong>uous Test<strong>in</strong>g: Bevor <strong>die</strong> Entwickler e<strong>in</strong>e neue Funktionalität h<strong>in</strong>zufügen wird e<strong>in</strong> Test dafür geschrieben. Wenn <strong>die</strong><br />

Applikation den Test erfüllt ist <strong>die</strong> Arbeit erledigt. Tests können gr<strong>und</strong>sätzlich <strong>in</strong> 2 Formen erfolgen.<br />

1. Unit Tests s<strong>in</strong>d automatische Tests, <strong>die</strong> von den Entwicklern geschrieben werden <strong>und</strong> <strong>die</strong> neuen Funktionen testen sobald<br />

sie implementiert s<strong>in</strong>d. Jeder Unit-Test testet e<strong>in</strong>e Klasse, e<strong>in</strong> Modul oder e<strong>in</strong>e kle<strong>in</strong>e Gruppe von Klassen.<br />

2. Acceptance Tests werden vom K<strong>und</strong>en def<strong>in</strong>iert <strong>und</strong> testen das gesamte System auf <strong>die</strong> Funktion gemäss den Spezifikationen.<br />

Wenn alle Akzeptanztests für e<strong>in</strong>e bestimmte Funktion erfüllt s<strong>in</strong>d, gilt <strong>die</strong>se als implementiert.<br />

6. Refactor<strong>in</strong>g: Entferne durch Umbau das Systems Codeduplikate, <strong>die</strong> während der Co<strong>die</strong>rung entstanden s<strong>in</strong>d. Dank den<br />

Tests kannst Du sicherstellen, das dabei ke<strong>in</strong>e bereits implementierte Funktionalität verloren geht.<br />

7. Pair Programm<strong>in</strong>g: Jedes Codestück wird von zwei Programmieren geme<strong>in</strong>sam geschrieben, <strong>die</strong> zusammen vor dem selben<br />

Rechner sitzen. Dadurch wird jedes Codestück noch während dem Schreiben e<strong>in</strong>em Review unterzogen.<br />

8. Collective Code Ownership: Ke<strong>in</strong> Modul gehört e<strong>in</strong>er bestimmten Person. Jeder Entwickler darf jederzeit an jedem Modul<br />

arbeiten <strong>und</strong> Änderungen vornehmen.<br />

9. Cont<strong>in</strong>uous Integration: Alle Änderungen werden m<strong>in</strong>destens täglich <strong>in</strong>s Gesamtsystem <strong>in</strong>tegriert. Die Tests müssen vor<br />

<strong>und</strong> nach der Integration zu 100% erfüllt werden.<br />

10. 40-Hour Work Week: Programmierer gehen pünktlich nach Hause. In kritischen Phasen ist während e<strong>in</strong>er Woche Überzeit<br />

erlaubt. Mehrere aufe<strong>in</strong>anderfolgende Wochen mit Überzeit s<strong>in</strong>d e<strong>in</strong> Zeichen für ernsthafte Probleme mit der Methode.<br />

11. On-site Customer: Das Entwicklungsteam hat ständigen Kontakt zu e<strong>in</strong>em realen K<strong>und</strong>en, also jemanden der das System<br />

benutzen wird. Der K<strong>und</strong>e kann auch e<strong>in</strong> Vertreter des Managements se<strong>in</strong>.<br />

12. Cod<strong>in</strong>g Standards: Jeder benutzt <strong>die</strong> gleichen Co<strong>die</strong>r-Richtl<strong>in</strong>ien. Man sollte idealerweise e<strong>in</strong>em Stück Code nicht ansehen,<br />

von wem es stammt.<br />

Extreme Programm<strong>in</strong>g eignet sich besonders, wenn <strong>die</strong> Anforderungen an das System nicht vollständig<br />

bekannt s<strong>in</strong>d, oder fortlaufend ändern. Die Methode eignet sich für Teams von bis zu 12<br />

Entwicklern, alle Entwickler müssen zur gleichen Zeit am selben Ort arbeiten.<br />

E<strong>in</strong> ungelöstes Problem bei <strong>die</strong>sem Ansatz ist besonders <strong>die</strong> Dokumentation, da ke<strong>in</strong>e Analyse des<br />

Gesamtsystems erfolgt, <strong>und</strong> das System iterativ ständig erweitert wird. Weitere Schwierigkeiten<br />

ergeben sich durch <strong>die</strong> geme<strong>in</strong>same Codebasis, da jeder jederzeit Änderungen vornehmen kann<br />

stimmt <strong>die</strong> Ausgangslage für e<strong>in</strong>en anderen plötzlich nicht mehr. Die ständigen Änderungen <strong>und</strong><br />

Erweiterungen erfordern besonders sorgfältiges aktualisieren der Tests, da bei den Tests Korrektheit<br />

zw<strong>in</strong>gend vorausgesetzt wird. Trotz all <strong>die</strong>sen Problemen wurde XP schon bei vielen Projekten erfolgreich<br />

e<strong>in</strong>gesetzt.<br />

Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 121/147

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!