Articles

Was ist Extreme Programmierung und wie benutzt man sie?

Extreme Programming software-Entwicklungsmethodik dient der Verbesserung der Qualität der software und seine Fähigkeit, richtig zu Anpassung an die ändern Bedürfnisse der Kunden oder Klienten. Während der Arbeit an dem Chrysler Comprehensive Compensation System (C3) zur Verwaltung der Gehaltsabrechnung entwickelte der Software-Ingenieur Ken Beck Mitte und Ende der neunziger Jahre zunächst die Extreme Programming Methodology., Im Oktober 1999 veröffentlichte er Extreme Programming Explained, das die gesamte Methode für andere detailliert beschreibt, und kurz darauf wurde auch die offizielle Website gestartet.

Ähnlich wie bei anderen agilen Entwicklungsmethoden zielt Extreme Programming darauf ab, iterative und häufige kleine Releases während des gesamten Projekts bereitzustellen, sodass sowohl Teammitglieder als auch Kunden den Fortschritt des Projekts während des gesamten SDLC untersuchen und überprüfen können.,

In diesem Artikel werden wir genau untersuchen, was Extreme Programmierung ist und wie es funktioniert, von den Werten und Prinzipien, die dahinter stehen, bis hin zu den Regeln und prozeduralen Best Practices, die zur Implementierung eines neuen Extreme-Programmierprojekts verwendet werden.,/td>

Rational Unified Process Urknallmodell V-Modell Konzeptionelles Modell Kaizenmodell Kanbanmodell Spiralmodell

Extremwerte

Diese fünf Grundwerte bilden die Grundlage, auf der das gesamte Extreme Programmierparadigma aufgebaut ist, sodass die am Projekt beteiligten Personen sich sicher fühlen können, in welche Richtung das Projekt geht, und ihr persönliches Feedback und ihre Einsicht zu verstehen ist so notwendig und willkommen wie jeder andere auch.,

Einfachheit: Wir werden tun, was gebraucht und verlangt wird, aber nicht mehr. Dadurch wird der für die bisher getätigte Investition geschaffene Wert maximiert. Wir werden kleine einfache Schritte zu unserem Ziel unternehmen und Fehler abmildern. Wir werden etwas schaffen, auf das wir stolz sind, und es langfristig zu vernünftigen Kosten aufrechterhalten.

Kommunikation: Jeder ist Teil des Teams und wir kommunizieren täglich von Angesicht zu Angesicht. Wir werden gemeinsam an allem arbeiten, von Anforderungen bis Code. Wir werden die beste Lösung für unser Problem schaffen, die wir zusammen können.,

Feedback: Wir werden jede Iterationsverpflichtung ernst nehmen, indem wir funktionierende Software liefern. Wir demonstrieren unsere Software frühzeitig und hören dann oft genau zu und nehmen alle erforderlichen Änderungen vor. Wir werden über das Projekt sprechen und unseren Prozess daran anpassen, nicht umgekehrt.

Respekt: Jeder gibt und fühlt den Respekt, den er als geschätztes Teammitglied verdient. Jeder trägt Wert bei, auch wenn es einfach nur Begeisterung ist. Entwickler respektieren die Expertise der Kunden und umgekehrt. Das Management respektiert unser Recht, Verantwortung zu übernehmen und Autorität über unsere eigene Arbeit zu erhalten.,

Mut: Wir werden die Wahrheit über Fortschritt und Schätzungen sagen. Wir dokumentieren keine Ausreden für das Scheitern, weil wir planen, erfolgreich zu sein. Wir fürchten nichts, weil niemand alleine arbeitet. Wir werden uns an Veränderungen anpassen, wenn sie jemals passieren.

Extreme Rules

Ursprünglich 1999 von Don Wells, dem Inhaber der Website Extreme Programming, veröffentlicht, sollte dieser Satz extremer Programmierregeln ursprünglich dazu beitragen, den Behauptungen entgegenzuwirken, dass Extreme Programmierung einige der für die moderne Entwicklung erforderlichen prominenten Disziplinen nicht unterstützt.,

  • User Stories werden geschrieben.
  • Release planning erstellt den Release Schedule.
  • Machen Sie häufige kleine Veröffentlichungen.
  • Das Projekt ist in Iterationen unterteilt.
  • Iterationsplanung startet jede Iteration.

Verwalten

  • Geben Sie dem Team einen dedizierten offenen Arbeitsbereich.
  • Setzen Sie ein nachhaltiges Tempo.
  • Jeden Tag beginnt ein Stand-up-Meeting.
  • Die Projektgeschwindigkeit wird gemessen.
  • Menschen bewegen.
  • Fix Extreme Programmierung, wenn es bricht.

Design

  • Einfachheit.,
  • Wählen Sie eine Systemmetapher.
  • Verwenden Sie CRC-Karten für Design-Sitzungen.
  • Erstellen Sie Spike-Lösungen, um Risiken zu reduzieren.
  • Frühzeitig wird keine Funktionalität hinzugefügt.
  • Refactor wann und wo immer möglich.

Codierung

  • Der Kunde ist immer verfügbar.
  • Code muss nach vereinbarten Standards geschrieben werden.
  • Code die einheit test erste.
  • Alle produktion code ist paar programmiert.
  • Jeweils nur ein Paar Code.
  • Oft integrieren.
  • Richten Sie einen dedizierten Integrationscomputer ein.
  • Verwenden kollektives Eigentum.,

Testing

  • Alle Codes müssen Unit-Tests haben.
  • Der gesamte Code muss alle Komponententests bestehen, bevor er freigegeben werden kann.
  • Wenn ein Fehler gefunden wird, werden Tests erstellt.
  • Abnahmetests werden häufig durchgeführt und die Punktzahl veröffentlicht.

Extreme Practices

Diese zwölf Extreme Programming Best Practices, die mit den damals als Best Practices der Softwareentwicklung geltenden Methoden erstellt wurden, beschreiben die spezifischen Verfahren, die bei der Implementierung eines Projekts mit extremer Programmierung befolgt werden sollten.,

Feinskalige Rückmeldung

Paarprogrammierung

Im Wesentlichen bedeutet Paarprogrammierung, dass zwei Personen bei der Entwicklung eines Produktionscodes auf demselben System zusammenarbeiten. Durch häufig wechselnde Partner im gesamten Team fördert Extreme Programming eine bessere Kommunikation und Teambildung.

Planungsspiel

Dies geschieht häufig in Form eines Meetings in einem häufigen und genau definierten Intervall (alle ein oder zwei Wochen), in dem der Großteil der Planung für das Projekt stattfindet.,

Innerhalb dieses Verfahrens besteht die Release-Planungsphase, in der festgelegt wird, was für bevorstehende Releases erforderlich ist. Abschnitte der Release-Planung umfassen:

  • Explorationsphase: Story-Karten werden verwendet, um die wertvollsten Anforderungen von Kunden detailliert darzustellen.
  • Verpflichtungsphase: Planung und Zusagen des Teams werden getroffen, um die Anforderungen der nächsten Planversion zu erfüllen und sie pünktlich herauszuholen.,
  • Lenkphase: Dadurch können zuvor entwickelte Pläne an die sich entwickelnden Bedürfnisse des Projekts angepasst werden, ähnlich wie bei vielen anderen agilen Modellmethoden.

Nach der Release-Planung folgt auch der Abschnitt Iterationsplanung, der aus den gleichen drei eigenen Teilphasen besteht, jedoch Varianten zu deren Implementierungen enthält:

  • Explorationsphase: Alle Projektanforderungen werden notiert.
  • Commitment-Phase: Notwendige Aufgaben, die noch nicht abgeschlossen sind, um die bevorstehende Iterationsfreigabe zu erfüllen, werden Entwicklern zugewiesen und entsprechend geplant.,
  • Lenkungsphase: Die Entwicklung findet statt und nach Abschluss wird die resultierende Iteration mit den skizzierten Story Cards verglichen, die zu Beginn des Planungsverfahrens erstellt wurden.

testgetriebene Entwicklung

Während ein ganzer Artikel über testgetriebene Entwicklung geschrieben werden könnte, ist das Konzept bei Entwicklern ziemlich bekannt und bedeutet effektiv, dass Tests für jede Anforderung generiert werden des Projekts, und erst dann wird Code entwickelt, der diese Tests erfolgreich bestehen wird.,

Gesamtes Team

Wie bei vielen anderen SDLC-Methoden und-Praktiken fördert Extreme Programming die Einbeziehung von Kunden und Kunden während des gesamten Prozesses und nutzt ihr Feedback, um das Projekt jederzeit mitzugestalten.

Kontinuierlicher Prozess

Kontinuierliche Integration

Eine weitere gängige Praxis in der modernen Entwicklung ist die Idee der kontinuierlichen Integration, dass der gesamte Code, der im gesamten Team entwickelt wurde, mehrmals am Tag zu einem gemeinsamen Repository zusammengeführt wird., Dies stellt sicher, dass alle Probleme mit der Integration über das gesamte Projekt hinweg so schnell wie möglich bemerkt und behoben werden.

Code Refactoring

Eine weitere sehr verbreitete Praxis, die Idee hinter Code Refactoring ist einfach zu verbessern und die Struktur der bereits vorhandenen Code neu zu gestalten, ohne sein grundlegendes Verhalten zu ändern. Einfache Beispiele für Refactoring umfassen das Beheben unsachgemäßer Namensvariablen oder-methoden und das Reduzieren wiederholten Codes auf eine einzelne Methode oder Funktion.,

Kleine Releases

Dieses Konzept steht im Einklang mit den Praktiken des iterativen Modells und stellt sicher, dass das Projekt häufig iterierte kleine Releases enthält, sodass sowohl der Kunde als auch alle Teammitglieder ein Gefühl dafür bekommen, wie sich das Projekt entwickelt.

Gemeinsames Verständnis

Codierungsstandards

Der Codierungsstandard ist einfach eine Reihe von Best Practices innerhalb des Codes selbst, wie Formatierung und Stil, die das gesamte Team während des gesamten Lebenszyklus des Projekts einhält., Dies fördert ein besseres Verständnis und Lesbarkeit des Codes nicht nur für aktuelle Mitglieder, sondern auch für zukünftige Entwickler.

Kollektives Codeeigentum

Diese Praxis ermöglicht es jedem Entwickler im gesamten Team, bei Bedarf einen beliebigen Abschnitt des Codes zu ändern. Während diese Praxis für einige gefährlich klingen mag, beschleunigt sie die Entwicklungszeit, und potenzielle Probleme können mit ordnungsgemäßen Komponententests behoben werden.

Einfaches Design

Es gibt wenig Grund, Dinge zu komplizieren, wenn eine einfachere Option verfügbar ist., Diese grundlegende Praxis, alle Komponenten und den Code so einfach wie möglich zu halten, stellt sicher, dass das gesamte Team immer prüft, ob die Dinge einfacher erledigt werden können.

Systemmetapher

Am besten als Teil der Codierungsstandards gedacht, ist die Systemmetapher die Idee,dass jede Person im Team in der Lage sein sollte, den entwickelten High-Level-Code zu betrachten und ein klares Verständnis dafür zu haben, welche Funktionalität dieser Code ausführt.,

Programmierer Wohlfahrt

Nachhaltiges Tempo

Ein Schlüsselkonzept für eine bessere Work-Life-Balance mit Entwicklern in einem extremen Programmierprojekt ist die Vorstellung, dass niemand über die normale geplante Arbeitswoche hinaus arbeiten muss. Überstunden sind verpönt, ebenso wie das Konzept der „Crunch-Zeit“, bei der von Entwicklern erwartet wird, dass sie gegen Ende einer Veröffentlichung extreme Stunden arbeiten, um alles pünktlich abzuschließen.