Extremes Programmieren

Extremes Programmieren (XP) ist ein Softwareentwicklungsmethode sollen sich verbessern Softwarequalität und Reaktionsfähigkeit auf sich ändernde Kundenanforderungen. Als eine Art von Art von Agile Software Entwicklung,[1][2][3] Es befürwortet häufig Veröffentlichungen In kurzen Entwicklungszyklen, die die Produktivität verbessern und Kontrollpunkte einführen sollen, an denen neue Kundenanforderungen angenommen werden können.
Weitere Elemente der extremen Programmierung sind: Programmierung in Paaren oder umfangreich Code-Review, Unit -Tests von allen Code, Nicht programmierende Funktionen, bis sie tatsächlich benötigt werden, Eine flache Verwaltungsstruktur, die Einfachheit und Klarheit, die Erwartung von Änderungen der Kundenanforderungen im Laufe der Zeit und das Problem wird besser verstanden und häufige Kommunikation mit dem Kunden und unter den Programmierern.[2][3][4] Die Methodik hat ihren Namen von der Idee, dass die vorteilhaften Elemente traditioneller Software -Engineering -Praktiken auf "extreme" Ebenen gebracht werden. Als Beispiel, Code -Bewertungen werden als vorteilhafte Praxis angesehen; Der Code kann zum Extreme überprüft werden ständig (d. h. die Praxis von Paar-Programmierung).
Geschichte
Kent Beck entwickelte extreme Programme während seiner Arbeit am Chrysler umfassendes Kompensationssystem (C3) Gehaltsabrechnung Projekt.[5] Beck wurde der C3 Projektleiter im März 1996. Er begann, die im Projekt verwendete Entwicklungsmethode zu verfeinern, und schrieb ein Buch über die Methodik (Extreme Programmierung erklärt, veröffentlicht im Oktober 1999).[5] Chrysler stornierte das C3 -Projekt im Februar 2000 nach sieben Jahren, wann Daimler-Benz erwarb das Unternehmen.[6] Ward Cunningham war ein weiterer großer Einfluss auf XP.
Viele extremprogrammierende Praktiken gibt es schon seit einiger Zeit. Die Methodik nimmt "empfohlene Vorgehensweise"Auf extremen Ebenen. Zum Beispiel wurde bereits bei der NASA die" Praxis der Testentwicklung, Planung und Schreiben von Tests vor jeder Micro-Increment "verwendet Projekt Mercuryin den frühen 1960er Jahren.[7] Um die gesamte Entwicklungszeit zu verkürzen, einige formelle Testdokumente (z. Akzeptanzprüfung) wurden parallel zu (oder kurz zuvor) entwickelt, die Software zum Testen bereitet. Eine unabhängige NASA -Testgruppe kann die Testverfahren auf basierend auf formalen Anforderungen und logischen Grenzen schreiben, bevor Programmierer die Software schreiben und in die Hardware integrieren. XP bringt dieses Konzept auf die extreme Ebene und schreibt automatisierte Tests (manchmal innerhalb von Softwaremodulen), die den Betrieb selbst kleiner Abschnitte der Softwarecodierung validieren, anstatt nur die größeren Funktionen zu testen.
Ursprünge
Zwei Haupteinflüsse formierte Softwareentwicklung in den 1990er Jahren:
- Im Inneren, Objekt orientierte Programmierung ersetzt Verfahrensprogrammierung als Programmierparadigma, das von einigen Entwicklern bevorzugt wird.
- Extern der Aufstieg des Internets und der Dot-Com-Boom betonte Speed-to-Market- und Unternehmenswachstum als wettbewerbsfähige Geschäftsfaktoren.
Sich schnell verändernde Anforderungen kürzer erfordern Produktlebenszyklenund oft mit traditionellen Methoden der Softwareentwicklung in Konflikt geraten.
Das Chrysler Comprehensive Compensation System (C3) begann, um die beste Möglichkeit zu ermitteln, Objekttechnologien zu verwenden, wobei die Gehaltsabrechnungssysteme bei Chrysler als Forschungsobjekt verwendet werden, mit Smalltalk als Sprache und Edelstein als die Datenzugriffsschicht. Chrysler brachte herein Kent Beck,[5] ein prominenter SmallTalk -Praktiker, um zu tun Leistungsstimmung Auf dem System, aber seine Rolle erweiterte sich, als er mehrere Probleme mit dem Entwicklungsprozess feststellte. Er nutzte diese Gelegenheit, um einige Änderungen in der Entwicklungspraktiken vorzuschlagen und umzusetzen - basierend auf seiner Arbeit mit seinem häufigen Mitarbeitern. Ward Cunningham. Beck beschreibt die frühe Konzeption der Methoden:[8]
Als ich das erste Mal gebeten wurde, ein Team zu führen, bat ich sie, ein wenig von den Dingen zu tun, die ich für sinnvoll hielt, wie Tests und Bewertungen. Das zweite Mal stand noch viel mehr auf dem Spiel. Ich dachte: "Verdammt, die Torpedos, zumindest wird dies einen guten Artikel machen" [und] bat das Team, alle Knöpfe auf 10 zu steigern, was ich für wesentlich hielten und alles andere weglassen.
Beck eingeladen Ron Jeffries zum Projekt zur Entwicklung und Verfeinerung dieser Methoden. Jeffries war danach als Trainer, um die Praktiken als Gewohnheiten im C3 -Team zu vermitteln.
Informationen über die Prinzipien und Praktiken hinter XP, die durch Diskussionen über das Original in die breitere Welt verbreitet wurden Wiki, Cunninghams Wikiwikiweb. Verschiedene Mitwirkende diskutierten und erweiterten die Ideen, und einige Spin-off-Methoden resultierten (siehe Agile Software Entwicklung). Außerdem wurden XP -Konzepte erklärt[von wem?]für mehrere Jahre lang a Hypertext Systemkarte auf der XP -Website unter http://www.extremeprogramming.org ca. 1999.
Beck bearbeitete eine Reihe von Büchern über XP, beginnend mit seinen eigenen Extreme Programmierung erklärt (1999, ISBN0-201-61641-6), die seine Ideen auf ein viel größeres Publikum verbreitet. Die Autoren in der Serie haben verschiedene Aspekte durchgeführt, die an XP und ihren Praktiken teilnahmen. Die Serie enthielt ein Buch, das die Praktiken kritisch ist.
Aktuellen Zustand
XP weckte in den späten 1990er und frühen 2000er Jahren ein wesentliches Interesse an Software -Communities, wobei die Einführung in einer Reihe von Umgebungen radikal von seinen Ursprüngen unterschieden wurde.
Die hohe Disziplin, die von den ursprünglichen Praktiken erforderlich ist, gingen häufig auf der Strecke, was dazu führte, dass einige dieser Praktiken, wie z. Zum Beispiel die Praxis des Tages am Ende des Tages Integrationstests Für ein bestimmtes Projekt könnte auf einen Zeitplan am Ende der Woche geändert oder einfach auf Tests an gegenseitig vereinbarten Daten reduziert werden. Ein so entspannterer Zeitplan könnte es vermeiden, dass sich die Menschen überrascht fühlen, um künstliche Stubs zu erzeugen, nur um die Tests zum Ende des Tages zu bestehen. Ein Zeitplan mit weniger geringer ermöglicht stattdessen die Entwicklung komplexer Merkmale über einen Zeitraum von mehreren Tagen.
In der Zwischenzeit sind andere agile Entwicklungspraktiken nicht still und ab 2019 gestanden[aktualisieren] XP entwickelt sich weiterentwickelt und assimiliert mehr Lehren aus Erfahrungen im Bereich, um andere Praktiken zu nutzen. In der zweiten Ausgabe von Extreme Programmierung erklärt (November 2004), fünf Jahre nach der ersten Ausgabe, fügte Beck mehr hinzu Werte und Praktiken und differenziert zwischen Primär- und Folgepraktiken.
Konzept
Ziele
Extreme Programmierung erklärt Beschreibt die extreme Programmierung als Disziplin der Softwareentwicklung, die Menschen organisiert, um produktiver Software mit höherer Qualität zu produzieren.
XP versucht, die Kosten für Änderungen der Anforderungen durch mehrere kurze Entwicklungszyklen zu senken, anstatt durch lange. In dieser Lehre sind Änderungen ein natürlicher, unausweichlicher und wünschenswerter Aspekt von Softwareentwicklungsprojekten und sollten geplant werden, anstatt zu versuchen, eine stabile Reihe von Anforderungen zu definieren.
Extreme Programmierung führt auch eine Reihe von Grundwerten, Prinzipien und Praktiken über die agile Methodik ein.
Aktivitäten
XP beschreibt vier grundlegende Aktivitäten, die im Rahmen des Softwareentwicklungsprozesses durchgeführt werden: Codierung, Testen, Hören und Entwerfen. Jede dieser Aktivitäten wird unten beschrieben.
Codierung
Die Befürworter von XP argumentieren, dass das einzig wirklich wichtige Produkt des Systementwicklungsprozesses Code ist - Softwareanweisungen, die ein Computer interpretieren kann. Ohne Code gibt es kein Arbeitsprodukt.
Die Codierung kann verwendet werden, um die am besten geeignete Lösung zu finden. Die Codierung kann auch helfen, Gedanken über Programmierprobleme zu kommunizieren. Ein Programmierer, der sich mit einem komplexen Programmierproblem befasst oder es schwierig findet, die Lösung für andere Programmierer zu erklären, kann es vereinfacht codieren und den Code verwenden, um zu demonstrieren, was er bedeuten. Code, sagen die Befürworter dieser Position, sind immer klar und präzise und können nicht mehr als in eine Weise interpretiert werden. Andere Programmierer können Feedback zu diesem Code geben, indem sie auch ihre Gedanken codieren.
Testen
Tests sind von zentraler Bedeutung für die extreme Programmierung.[9] Der Ansatz von Extreme Programing ist, dass bei einiger Prüfung, die einige Fehler beseitigen können, viele weitere Fehler beseitigen können.
- Unit -Tests Bestimmen Sie, ob eine bestimmte Funktion wie beabsichtigt funktioniert. Programmierer schreiben so viele automatisierte Tests, wie sie sich vorstellen können, dass dies den Code "brechen" könnte. Wenn alle Tests erfolgreich ausgeführt werden, ist die Codierung abgeschlossen. Jedes Code, der geschrieben wird, wird getestet, bevor Sie mit der nächsten Funktion übergehen.
- Akzeptanztests Stellen Sie sicher, dass die von den Programmierern verstandenen Anforderungen die tatsächlichen Anforderungen des Kunden erfüllen.
Systemweit Integrationstests wurde zunächst als tägliche Aktivität am Ende des Tages für die frühzeitige Erkennung inkompatibler Schnittstellen ermutigt, sich wieder zu verbinden, bevor die getrennten Abschnitte weitgehend von kohärenten Funktionen abzeichneten. Systemweite Integrationstests wurden jedoch je nach Stabilität der Gesamtschnittstellen im System auf wöchentlich oder seltener reduziert.
Hören
Programmierer müssen sich anhören, was die Kunden das System benötigen, was ", was"Geschäftslogik"ist erforderlich. Sie müssen diese Bedürfnisse gut genug verstehen, um dem Kunden Feedback zu den technischen Aspekten des Problems zu geben oder nicht gelöst zu werden. Die Kommunikation zwischen dem Kunden und dem Programmierer wird weiter angegangen. Planungsspiel.
Entwerfen
Aus Sicht der Einfachheit könnte man natürlich sagen, dass die Systementwicklung nicht mehr als Codierung, Testen und Zuhören benötigt. Wenn diese Aktivitäten gut ausgeführt werden, sollte das Ergebnis immer ein System sein, das funktioniert. In der Praxis wird dies nicht funktionieren. Man kann einen langen Weg ohne Entwerfen erreichen, aber zu einem bestimmten Zeitpunkt wird man stecken. Das System wird zu komplex und die Abhängigkeiten innerhalb des Systems hören auf, klar zu sein. Man kann dies vermeiden, indem man eine Entwurfsstruktur erstellt, die die Logik im System organisiert. Gutes Design vermeidet viele Abhängigkeiten innerhalb eines Systems. Dies bedeutet, dass das Ändern eines Teils des Systems andere Teile des Systems nicht beeinflusst.
Werte
Extreme Programmierung erkannte 1999 anfänglich vier Werte: Kommunikation, Einfachheit, Feedback und Mut. Ein neuer Wert, Respekt, wurde in der zweiten Ausgabe von hinzugefügt Extreme Programmierung erklärt. Diese fünf Werte werden nachstehend beschrieben.
Kommunikation
Erstellen von Softwaresystemen erfordert die Kommunikationssystemanforderungen an die Entwickler des Systems. Bei formalen Methoden zur Softwareentwicklung wird diese Aufgabe durch Dokumentation erledigt. Extreme Programmierechniken können als Methoden zur raschen Aufbau und Verbreitung von institutionellen Kenntnissen unter Mitgliedern eines Entwicklungsteams angesehen werden. Ziel ist es, allen Entwicklern eine gemeinsame Sicht auf das System zu geben, die der Ansicht der Benutzer des Systems entspricht. Zu diesem Zweck bevorzugt extreme Programmierungen einfache Designs, gemeinsame Metaphern, Zusammenarbeit von Benutzern und Programmierern, häufige verbale Kommunikation und Feedback.
Einfachheit
Extreme Programmierung fördert mit der einfachsten Lösung. Zusätzliche Funktionen können dann später hinzugefügt werden. Der Unterschied zwischen diesem Ansatz und den konventionelleren Systementwicklungsmethoden ist der Fokus auf das Entwerfen und Codieren der Bedürfnisse von heute anstelle der von morgen, nächsten Woche oder nächsten Monat. Dies wird manchmal als das zusammengefasst "Du wirst es nicht brauchen"(Yagni) Ansatz.[10] Befürworter von XP erkennen den Nachteil an, dass dies manchmal mehr Anstrengungen beinhalten kann, um das System zu verändern. Ihre Behauptung ist, dass dies durch den Vorteil, nicht in mögliche zukünftige Anforderungen zu investieren, die sich ändern könnten, bevor sie relevant werden könnten, mehr als entschädigt. Die Codierung und Gestaltung für unsichere zukünftige Anforderungen impliziert das Risiko, Ressourcen für etwas auszugeben, das möglicherweise nicht benötigt wird, während möglicherweise entscheidende Merkmale verzögert werden. Im Zusammenhang mit dem Wert "Kommunikation" sollte die Einfachheit in Bezug auf Design und Codierung die Qualität der Kommunikation verbessern. Ein einfaches Design mit sehr einfachem Code könnte von den meisten Programmierern im Team leicht verstanden werden.
Feedback
Innerhalb der extremen Programmierung bezieht sich Feedback auf verschiedene Dimensionen der Systementwicklung:
- Feedback aus dem System: durch Schreiben Unit -Tests,[5] oder ausgeführtes periodische Integrationstests haben die Programmierer nach der Implementierung von Änderungen ein direktes Feedback aus dem Status des Systems.
- Feedback vom Kunden: Die Funktionstests (auch bekannt als AKA Akzeptanztests) werden vom Kunden und den Tester geschrieben. Sie erhalten ein konkretes Feedback zum aktuellen Stand ihres Systems. Diese Überprüfung ist alle zwei oder drei Wochen einmal geplant, sodass der Kunde die Entwicklung problemlos steuern kann.
- Feedback aus dem Team: Wenn Kunden im Planungsspiel neue Anforderungen erfüllen, gibt das Team eine Schätzung der Zeit, die für die Implementierung erforderlich ist.
Feedback hängt eng mit Kommunikation und Einfachheit zusammen. Mängel im System können leicht mit dem Schreiben eines Unit -Tests kommuniziert werden, der beweist, dass ein bestimmtes Stück Code brechen wird. Das direkte Feedback des Systems fordert die Programmierer auf, diesen Teil neu zu erholen. Ein Kunde kann das System regelmäßig entsprechend den funktionalen Anforderungen testen benutzergeschichten.[5] Zitieren Kent Beck"Optimismus ist eine berufliche Gefahr der Programmierung. Feedback ist die Behandlung."[11]
Mut
Mehrere Praktiken verkörpern Mut. Eines ist das Gebot, immer für heute und nicht für morgen zu entwerfen und zu codieren. Dies ist ein Anstrengung, um zu vermeiden, dass Sie sich im Design festsetzen und viel Anstrengungen erfordern, um etwas anderes zu implementieren. Mit Mut ermöglicht es den Entwicklern, sich wohl zu fühlen Refactoring ihren Code bei Bedarf.[5] Dies bedeutet, das vorhandene System zu überprüfen und es zu ändern, damit zukünftige Änderungen einfacher implementiert werden können. Ein weiteres Beispiel für Mut ist das Wissen, wann Code wegwerfen muss: Mut, um den Quellcode zu entfernen, der veraltet ist, unabhängig davon, wie viel Aufwand verwendet wurde, um diesen Quellcode zu erstellen. Außerdem bedeutet Mut Ausdauer: Ein Programmierer könnte einen ganzen Tag lang an einem komplexen Problem festgehalten und das Problem dann am nächsten Tag schnell lösen, aber nur, wenn sie anhaltend sind.
Respekt
Der Respektwert beinhaltet Respekt für andere und Selbstachtung. Programmierer sollten niemals Änderungen begehen, die die Zusammenstellung brechen, die bestehenden Einheitentests scheitern lassen oder die Arbeit ihrer Kollegen auf andere Weise verzögern. Mitglieder respektieren ihre eigene Arbeit, indem sie stets nach hoher Qualität streben und nach dem besten Design für die vorliegende Lösung durch Refactoring suchen.
Die Annahme der vier früheren Werte führt zu Respekt, der von anderen im Team gewonnen wurde. Niemand im Team sollte sich nicht geschätzt oder ignoriert fühlen. Dies gewährleistet ein hohes Maß an Motivation und fördert die Loyalität gegenüber dem Team und zum Ziel des Projekts. Dieser Wert hängt von den anderen Werten ab und orientiert sich auf die Teamarbeit.
Regeln
Die erste Version der Regeln für XP wurde 1999 von Don Wells veröffentlicht[12] Auf der XP -Website. 29 Regeln finden Sie in den Kategorien Planung, Verwaltung, Gestaltung, Codierung und Tests. Planen, Verwaltung und Entwerfen werden ausdrücklich aufgefordert, Behauptungen entgegenzuwirken, dass XP diese Aktivitäten nicht unterstützt.
Eine andere Version von XP -Regeln wurde von Ken Auer vorgeschlagen[13] In XP/Agile Universe 2003. Er war der Ansicht, dass XP durch seine Regeln definiert wurde, nicht durch seine Praktiken (die mehr Variation und Ambiguität unterliegen). Er definierte zwei Kategorien: "Regeln des Engagements", die die Umgebung bestimmen, in der Softwareentwicklung effektiv erfolgen kann, und "Spielregeln", die die winzigen Aktivitäten und Regeln im Rahmen der Regeln des Engagements definieren.
Hier sind einige der Regeln (unvollständig):
Codierung
- Der Kunde ist immer verfügbar
- Codieren die Gerätetest Erste
- Nur ein Paar integriert Code gleichzeitig
- Verlassen Optimierung Bis zuletzt
- Nein im Laufe der Zeit
Testen
- All Code muss haben Unit -Tests
- Der gesamte Code muss alle übergeben Unit -Tests Bevor es veröffentlicht werden kann.
- Wenn ein Insekt Es wird gefunden, Tests werden erstellt, bevor der Fehler angesprochen wird (ein Fehler ist kein Fehler in der Logik; es ist ein Test, der nicht geschrieben wurde)
- Akzeptanztests werden oft ausgeführt und die Ergebnisse werden veröffentlicht
Prinzipien
Die Prinzipien, die die Grundlage von XP bilden, basieren auf den gerade beschriebenen Werten und sollen Entscheidungen in einem Systementwicklungsprojekt fördern. Die Prinzipien sollen konkreter sein als die Werte und leichter in eine praktische Situation in Führung übersetzt.
Feedback
Extreme Programmierung sieht Feedback als am nützlichsten an, wenn es häufig und prompt erledigt ist. Es wird betont, dass eine minimale Verzögerung zwischen einer Aktion und ihrem Feedback für das Lernen und Vorgehen von Änderungen von entscheidender Bedeutung ist. Im Gegensatz zu herkömmlichen Systementwicklungsmethoden tritt der Kontakt mit dem Kunden in häufigeren Iterationen auf. Der Kunde hat einen klaren Einblick in das System, das entwickelt wird, und kann Feedback geben und die Entwicklung nach Bedarf steuern. Mit häufiger Feedback des Kunden wird eine falsche Entwurfsentscheidung des Entwicklers schnell bemerkt und korrigiert, bevor der Entwickler viel Zeit damit verbringt, sie zu implementieren.
Unit -Tests tragen zum schnellen Feedback -Prinzip bei. Beim Schreiben von Code bietet das Ausführen des Unit -Tests ein direktes Feedback, wie das System auf die vorgenommenen Änderungen reagiert. Dies umfasst nicht nur die Einheitstests, die den Code des Entwicklers testen, sondern auch alle Unit -Tests gegen die gesamte Software ausführen, wobei ein automatisierter Prozess verwendet wird, der durch einen einzigen Befehl initiiert werden kann. Auf diese Weise, wenn die Änderungen des Entwicklers einen Fehler in einem anderen Teil des Systems verursachen, über den der Entwickler wenig oder gar nichts weiß, zeigt die automatisierte Alleinit-Test-Suite den Fehler sofort, was den Entwickler über die Inkompatibilität ihrer Änderung mit der Veränderung aufmerksam macht Andere Teile des Systems und die Notwendigkeit, ihre Veränderung zu entfernen oder zu ändern. Unter traditionellen Entwicklungspraktiken bedeutete das Fehlen einer automatisierten, umfassenden Einheits-Test-Suite, dass eine solche Codeänderung, die vom Entwickler harmlos war, angenommen worden wäre, und erschien nur während der Integrationstests-oder schlimmer noch in der Produktion. und zu bestimmen, welcher Codeänderung das Problem verursachte, war eine gewaltige Aufgabe, unter allen Änderungen aller Entwickler in den Wochen oder sogar Monaten vor dem Integrationstest vorgenommen.
Einfachheit annehmen
Hier geht es darum, jedes Problem zu behandeln, als ob seine Lösung "extrem einfach" wäre. Traditionelle Systementwicklungsmethoden sagen, dass sie für die Zukunft planen und den Code für Wiederverwendbarkeitskodex haben. Extreme Programmierung lehnt diese Ideen ab.
Die Befürworter der extremen Programmierung sagen, dass es nicht funktioniert. Extreme Programmierung wendet inkrementelle Änderungen an: Beispielsweise kann ein System alle drei Wochen kleine Veröffentlichungen haben. Wenn viele kleine Schritte unternommen werden, hat der Kunde mehr Kontrolle über den Entwicklungsprozess und das System, das entwickelt wird.
Veränderung umarmen
Das Prinzip der Veränderung geht darum, nicht gegen Veränderungen zu arbeiten, sondern sie zu umarmen. Wenn bei einem der iterativen Besprechungen beispielsweise die Anforderungen des Kunden dramatisch geändert haben, sollen Programmierer dies annehmen und die neuen Anforderungen für die nächste Iteration planen.
Praktiken Methoden Ausübungen
Extreme Programmierung wurde als 12 Praktiken beschrieben, die in vier Bereiche eingeteilt wurden:
Fein-Skala-Feedback
Kontinuierlicher Prozess
- Kontinuierliche Integration
- Refactoring oder Designverbesserung[5]
- Kleine Veröffentlichungen
Programmierer Wohlbefinden
Kontroverse Aspekte
Die Praktiken in XP wurden stark diskutiert.[5] Befürworter von extremer Programmierung behaupten, dass durch den Kunden vor Ort[5] Fordernänderungen informell, der Prozess wird flexibel und spart die Kosten für den formellen Gemeinkosten. Kritiker von XP behaupten, dies kann zu kostspieligen Nacharbeiten und Projekten führen Scope Creep Jenseits dessen, was zuvor vereinbart oder finanziert wurde.
Änderungskontrollplatten sind ein Zeichen dafür, dass es potenzielle Konflikte in Projektzielen und Einschränkungen zwischen mehreren Benutzern gibt. Die beschleunigten Methoden von XP sind etwas abhängig davon, dass Programmierer einen einheitlichen Client -Standpunkt annehmen können, damit sich der Programmierer auf die Codierung konzentrieren kann, anstatt die Kompromissziele und -beschränkungen zu dokumentieren.[14] Dies gilt auch, wenn mehrere Programmierorganisationen beteiligt sind, insbesondere Organisationen, die um Projektanteile konkurrieren.
Andere potenziell kontroverse Aspekte der extremen Programmierung sind:
- Die Anforderungen werden eher als automatisierte Akzeptanztests als als Spezifikationsdokumente ausgedrückt.
- Anforderungen werden inkrementell definiert, anstatt zu versuchen, sie alle im Voraus zu erhalten.
- Softwareentwickler müssen in der Regel paarweise arbeiten.
- Es gibt kein Big Design vorne. Der größte Teil der Designaktivität findet im laufenden und inkrementell statt "Das Einfachste, was möglicherweise funktionieren könnte" und das Hinzufügen von Komplexität nur dann, wenn es durch Versagen von Tests erforderlich ist. Kritiker vergleichen dies mit "Debuggen Ein System in das Aussehen "und Angst, dies führt zu mehr Umstiegsanstrengungen als nur neu zu gestalten, wenn sich die Anforderungen ändern.
- A Kunden Vertreter ist an das Projekt beigefügt. Diese Rolle kann zu einem Einzelpunkt für das Projekt werden, und einige Menschen haben festgestellt, dass es sich um eine Stressquelle handelt. Außerdem besteht die Gefahr von Mikromanagement Durch einen nichttechnischen Vertreter, der versucht, die Verwendung technischer Softwarefunktionen und Architektur zu diktieren.
Kritiker haben mehrere potenzielle Nachteile festgestellt,[5] Einbeziehung von Problemen mit instabilen Anforderungen, keine dokumentierten Kompromisse bei Benutzerkonflikten und einem Mangel an Gesamtdesignspezifikation oder Dokument.
Skalierbarkeit
Gedankenwerke hat einen angemessenen Erfolg bei verteilten XP -Projekten mit bis zu sechzig Personen erzielt.
Im Jahr 2004, industrielle extreme Programmierung (IXP)[15] wurde als Entwicklung von XP eingeführt. Es ist beabsichtigt, in großen und verteilten Teams zu arbeiten. Es hat jetzt 23 Praktiken und flexible Werte.
Trennbarkeit und Antworten
In 2003, Matt Stephens und Doug Rosenberg veröffentlicht Extreme Programmierung neu gestaltet: Der Fall gegen XP, der den Wert des XP -Prozesses in Frage stellte und vorschlug, wie er verbessert werden konnte.[6] Dies löste eine lange Debatte in Artikeln, Internet-Newsgroups und Websites-Chat-Bereichen aus. Das Kernargument des Buches ist, dass die Praktiken von XP voneinander abhängig sind, aber nur wenige praktische Organisationen bereit/in der Lage sind, alle Praktiken zu übernehmen. Daher schlägt der gesamte Prozess fehl. Das Buch macht auch andere Kritikpunkte und es entspricht einer Ähnlichkeit mit XPs "kollektivem Eigentum" -Modell für den Sozialismus negativ.
Bestimmte Aspekte von XP haben sich seit der Veröffentlichung von verändert Extreme Programmierung neu gestaltet; Insbesondere erfüllt XP jetzt Änderungen an den Praktiken, solange die erforderlichen Ziele noch erreicht sind. XP verwendet auch immer generische Begriffe für Prozesse. Einige argumentieren, dass diese Veränderungen frühere Kritikpunkte ungültig machen; Andere behaupten, dass dies einfach den Prozess senkt.
Andere Autoren haben versucht, XP mit den älteren Methoden in Einklang zu bringen, um eine einheitliche Methodik zu bilden. Einige dieser XP wollten ersetzen, wie die Wasserfallmethode; Beispiel: Projektlebenszyklen: Wasserfall, Schnelle Anwendungsentwicklung (Rad) und all das. JPMorgan Chase & Co. versuchte XP mit den Computerprogrammiermethoden von zu kombinieren Integration der Fähigkeitsreifemodellintegration (CMMI) und Six Sigma. Sie stellten fest, dass sich die drei Systeme gut verstärkten, was zu einer besseren Entwicklung führte und sich nicht gegenseitig widersprach.[16]
Kritik
Das anfängliche Summen und kontroverse Grundsätze von Extreme Programing, wie z. Paar-Programmierung und kontinuierliches Design, haben bestimmte Kritikpunkte angezogen, wie die von McBreen stammenden Kritikpunkte[17] und Boehm und Turner,[18] Matt Stephens und Doug Rosenberg.[19] Viele der Kritikpunkte werden jedoch von agilen Praktikern als Missverständnisse der agilen Entwicklung angesehen.[20]
Insbesondere extreme Programme wurde von Matt Stephens und Doug Rosenbergs überprüft und kritisiert Extreme Programmierung neu gestaltet.[6]
Siehe auch
- Agile Software Entwicklung
- Kontinuierliche Veralterung
- Extreme Fertigung
- Extreme Projektmanagement
- Extreme Programmierpraktiken
- Kaizen
- Liste der Softwareentwicklungsphilosophien
- Paar-Programmierung
- Scrum (Entwicklung)
- Software Handwerkskunst
- Stand-up-Meeting
- Zeitboxing
Verweise
- ^ "Human Centered Technology Workshop 2006", 2006, PDF, Human Centered Technology Workshop 2006
- ^ a b Upenn-Lectures-Design-Patterns "Entwurfsmuster und Refactoring", University of Pennsylvania, 2003.
- ^ a b USFCA-EDU-601-LIEBLUNDE EXTREME-Programmierung.
- ^ "Manifest für agile Softwareentwicklung". Agilemanifesto.org. 2001. Abgerufen 26. März, 2019.
- ^ a b c d e f g h i j k l m Computerworld-Appdev-92 "Extreme Programmierung", Computerwelt (Online), Dezember 2001.
- ^ a b c Rosenberg, Doug; Stephens, Matt (2003). Extreme Programmierung neu gestaltet: Der Fall gegen XP. Apress. ISBN 978-1-59059-096-6.
- ^ Larman 2003.
- ^ Interview mit Kent Beck und Martin Fowler. Informit.com. 23. März 2001.
- ^ Lisa Crispin; Tipp House (2003). Testen extremer Programmieren. ISBN 9780321113559.
- ^ "Jeder ist ein Programmierer" von Clair Tristram. Technologieüberprüfung, November 2003. p. 39.
- ^ Beck, K. (1999). Extreme Programmierung erklärt: Veränderung annehmen. Addison-Wesley. ISBN 978-0-321-27865-4.
- ^ "Extreme Programmierregeln". extremeprogramming.org.
- ^ Ken Auer Archiviert 20. September 2008 bei der Wayback -Maschine
- ^ John Carroll; David Morris (29. Juli 2015). Agile Projektmanagement in Easy Steps, 2. Auflage. In einfachen Schritten. p. 162. ISBN 978-1-84078-703-0.
- ^ Cutterkonsortium. "Industrial XP: XP in großen Organisationen arbeiten - Cutter Consortium". Cutter.com.
- ^ Extreme Programmierung (XP) Six Sigma CMMI.
- ^ McBreen, P. (2003). Fragen zu extremen Programmieren. Boston, MA: Addison-Wesley. ISBN 978-0-201-84457-3.
- ^ Boehm, B.; R. Turner (2004). Beweglichkeit und Disziplin ausbalancieren: ein Leitfaden für Verblüffte. Boston, MA: Addison-Wesley. ISBN 978-0-321-18612-6.
- ^ Stephens, Matt; Doug Rosenberg (2004). Die Ironie der extremen Programmierung. MA: Dr. Dobbs Journal.
- ^ sdmagazin Archiviert 16. März 2006 bei der Wayback -Maschine
Weitere Lektüre
- Ken Auer und Roy Miller. Extreme Programmierung angewendet: Spielen, um zu gewinnen, Addison - Wesley.
- Ken Auer; Ron Jeffries; Jeff Canna; Glen B. Alleman; Lisa Crispin; Janet Gregory (2002). "Sind Tester ausgestorben? Wie können Tester zu XP -Teams beitragen?" Extreme Programmier- und Agile -Methoden - XP/Agile Universe 2002. Vorlesungsnotizen in Informatik. Vol. 2418. Springer-Verlag. p. 287. doi:10.1007/3-540-45672-4_50.
- Kent Beck: Extreme Programmierung erklärt: Veränderung annehmen, Addison - Wesley. Erstausgabe, 1999. Zweite Ausgabe, mit Cynthia Andres, 2004.
- Kent Beck und Martin Fowler: Planung der extremen Programmierung, Addison - Wesley.
- Alistair Cockburn: Agile Software Entwicklung, Addison - Wesley.
- Martin Fowler: Refactoring: Verbesserung des Designs des vorhandenen CodeMit Kent Beck, John Brant, William Opdyke und Don Roberts (1999). Addison-Wesley.
- Harvey Herela (2005). Fallstudie: Das Chrysler -umfassende Kompensationssystem. Galen Lab, U.C. Irvine.
- Jim Highsmith. Agile Softwareentwicklungsökosysteme, Addison - Wesley.
- Ron Jeffries, Ann Anderson und Chet Hendrickson (2000), Extreme Programmierung installiert, Addison - Wesley.
- Craig Larman & V. Basili (2003). "Iterative und inkrementelle Entwicklung: Eine kurze Geschichte", Computer (IEEE Computer Society) 36 (6): 47–56.
- Matt Stephens und Doug Rosenberg (2003). Extreme Programmierung neu gestaltet: Der Fall gegen XP, Apress.
- Waldner, JB. (2008). "Nanokomputer und Swarm Intelligence". In: ite, 225–256.
Externe Links
- Eine sanfte Einführung
- Industrielle extreme Programmierung
- Probleme und Lösungen für die XP -Implementierung
- Verwendung eines agilen Softwareprozesses mit Offshore -Entwicklung – Gedankenwerke'Erfahrungen mit der Implementierung von XP in großen verteilten Projekten