Dieses Kapitel gibt einen überblick über Extreme Programming.
Was ist Agil?
Das Wort „agil“ bedeutet −
-
In der Lage, Ihren Körper schnell und einfach zu bewegen.
-
in der Lage, schnell und klar zu denken.,
In der Wirtschaft wird „agile“ zur Beschreibung von Planungs-und Arbeitsweisen verwendet, wobei davon ausgegangen wird, dass Änderungen nach Bedarf ein wichtiger Teil der Arbeit sind. Business ‚agility‘ bedeutet, dass ein Unternehmen immer in der Lage ist, den Marktveränderungen Rechnung zu tragen.
Ref: Cambridge Wörterbücher online.
In der Softwareentwicklung wird der Begriff „agil“ so angepasst, dass er “ die Fähigkeit bedeutet, auf Veränderungen zu reagieren − Veränderungen von Anforderungen, Technologie und Menschen.,‘
Agiles Manifest
Ein Team von Softwareentwicklern veröffentlichte das Agile Manifest im Jahr 2001 und hob die Bedeutung des Entwicklungsteams hervor, indem es sich ändernden Anforderungen und der Kundenbindung anpasste.
Das Agile Manifest besagt −dass –
Wir bessere Wege finden, Software zu entwickeln, indem wir es tun und anderen dabei helfen. Durch diese Arbeit sind wir zu Wert gekommen −
-
Individuen und Interaktionen über Prozesse und Werkzeuge.
-
Arbeitssoftware über umfassende Dokumentation.,
-
Kundenzusammenarbeit über Vertragsverhandlungen.
-
Reagieren auf Änderungen nach einem Plan.
Das heißt, während die Elemente rechts einen Wert haben, schätzen wir die Elemente links mehr.
Merkmale der Agilität
Im Folgenden werden die Merkmale der Agilität −
-
Agilität in Agile Software Entwicklung konzentriert sich auf die Kultur des gesamten Teams mit Multi-Disziplin, cross-funktionale Teams, die befähigt sind und selbst zu organisieren.
-
Es fördert die gemeinsame Verantwortung und Rechenschaftspflicht.,
-
Erleichtert effektive Kommunikation und kontinuierliche Zusammenarbeit.
-
Der ganzheitliche Ansatz vermeidet Verzögerungen und Wartezeiten.
-
Häufige und kontinuierliche Lieferungen sorgen für ein schnelles Feedback, das es dem Team wiederum ermöglicht, sich an die Anforderungen anzupassen.
-
Die Zusammenarbeit ermöglicht es, verschiedene Perspektiven zeitnah in der Implementierung, Fehlerbehebungen und Anpassung an Änderungen zu kombinieren.
-
Fortschritt ist konstant, nachhaltig und vorhersehbar und betont Transparenz.,
Software Engineering Trends
Im Software Engineering werden folgende Trends beobachtet:
-
Anforderungen vor Beginn der Entwicklung erfassen. Wenn die Anforderungen jedoch später geändert werden sollen, wird normalerweise Folgendes bemerkt −
-
Widerstand gegen die Änderungen in einem späteren Entwicklungsstadium.
-
Es ist ein strenger Änderungsprozess erforderlich, der eine Änderungssteuerplatine beinhaltet, die die Änderungen sogar auf spätere Versionen übertragen kann.,
-
Die Lieferung eines Produkts mit überholten Anforderungen, das die Erwartungen des Kunden nicht erfüllt.
-
Unfähigkeit, die unvermeidlichen Domänenänderungen und Technologieänderungen innerhalb des Budgets unterzubringen.
-
-
Defekte frühzeitig im Entwicklungslebenszyklus finden und beseitigen, um die Defektbeseitigungskosten zu senken.
-
Die Prüfung beginnt erst, nachdem die Codierung abgeschlossen ist und das Testen als Verantwortung des Testers angesehen wird, obwohl der Tester nicht an der Entwicklung beteiligt ist.
-
Messen und verfolgen Sie den Prozess selbst., Dies wird teuer, weil –
-
Überwachung und Verfolgung auf Aufgabenebene und auf Ressourcenebene.
-
Definieren von Messungen zur Anleitung der Entwicklung und Messung jeder Aktivität in der Entwicklung.
-
Management intervention.
-
-
Erarbeiten, analysieren und verifizieren Sie die Modelle vor der Entwicklung.
-
Ein Modell soll als Framework verwendet werden. Konzentrieren Sie sich jedoch auf das Modell und nicht auf die Entwicklung, die entscheidend ist, wird nicht die erwarteten Ergebnisse liefern.,
-
-
Die Codierung, die das Herzstück der Entwicklung darstellt, wird nicht ausreichend betont. Die Gründe dafür sind –
-
Entwickler, die für die Produktion verantwortlich sind, stehen in der Regel nicht in ständiger Kommunikation mit den Kunden.
-
Codierung wird als eine Übersetzung des Designs angesehen und die effektive Implementierung im Code wird kaum jemals in das Design zurückgeschleift.
-
Die Prüfung gilt als das Tor, um vor der Auslieferung auf Mängel zu prüfen.,
-
Terminüberschreitungen früherer Entwicklungsstadien werden durch Übersehen der Prüfanforderungen ausgeglichen, um eine rechtzeitige Lieferung zu gewährleisten.
-
Dies führt zu Kostenüberschreitungen bei Mängeln nach Lieferung.
-
Tester werden für die Produktqualität verantwortlich und verantwortlich gemacht, obwohl sie während der gesamten Entwicklung nicht involviert waren.
Die Begrenzung der Ressourcen (hauptsächlich des Teams) auf Budget führt zu −
-
Ressourcenüberweisung
-
Team Burnout.,
-
Verlust der effektiven Nutzung von team-Kompetenzen.
-
Abrieb.
Extreme Programming − Eine Art behandeln, die gemeinsame Mängel
das Software-Engineering umfasst −
-
Kreativität
-
Lernen und Verbesserung durch versuche und Fehler
-
Iterationen
Extreme Programming stützt sich auf diese Aktivitäten und Codierung. Es ist die detaillierte (nicht die einzige) Entwurfsaktivität mit mehreren engen Rückkopplungsschleifen durch effektive Implementierung, Testen und Refactoring kontinuierlich.,
Extreme Programmierung basiert auf folgenden Werten –
-
Kommunikation
-
Einfachheit
-
Feedback
-
Mut
-
Respekt
Was ist Extreme Programmierung?
XP ist eine leichte, effiziente, risikoarme, flexible, vorhersehbare, wissenschaftliche und unterhaltsame Art, eine Software zu entwickeln.
eXtreme Programming (XP) wurde konzipiert und entwickelt, um die spezifischen Anforderungen der Softwareentwicklung von kleinen Teams angesichts vager und sich ändernder Anforderungen zu erfüllen.,
Extreme Programming ist eine der agilen Softwareentwicklungsmethoden. Es bietet Werte und Prinzipien, um das Verhalten des Teams zu leiten. Das Team soll sich selbst organisieren. Extreme Programming bietet spezifische Kernpraktiken, bei denen –
-
Jede Praxis einfach und vollständig ist.
-
Die Kombination von Praktiken führt zu komplexerem und aufkommendem Verhalten.
Programmänderung
Eine wichtige Annahme extremer Programmierung ist, dass die Kosten für das Ändern eines Programms im Laufe der Zeit größtenteils konstant gehalten werden können.,>Dies kann erreicht werden mit −
-
Betonung des kontinuierlichen Feedbacks des Kunden
-
Kurze Iterationen
-
Design und Redesign
-
Häufiges Codieren und Testen
-
Frühzeitige Beseitigung von Fehlern, wodurch die Kosten
-
Den Kunden während der gesamten Entwicklung
-
Lieferung eines Arbeitsprodukts an den Kunden
Extreme Programming in a Nutshell
Extreme Programming involves −
-
Schreiben von Unit-Tests vor der Programmierung und Halten Sie alle Tests jederzeit laufen., Die Komponententests sind automatisiert und beseitigen Mängel frühzeitig, wodurch die Kosten gesenkt werden.
-
Beginnend mit einem einfachen Design, das gerade ausreicht, um die vorhandenen Funktionen zu codieren und bei Bedarf neu zu gestalten.
-
Paarweise Programmierung (paarweise Programmierung genannt) mit zwei Programmierern auf einem Bildschirm, die abwechselnd die Tastatur verwenden. Während sich einer von ihnen auf der Tastatur befindet, überprüft und liefert der andere ständig Eingaben.
-
Das gesamte System mehrmals täglich integrieren und testen.,
-
Setzen Sie ein minimales Arbeitssystem schnell in die Produktion und aktualisieren Sie es bei Bedarf.
-
Den Kunden stets involviert zu halten und ständiges Feedback zu erhalten.
Die Iteration erleichtert die Anpassung an Änderungen, wenn sich die Software mit den sich ändernden Anforderungen weiterentwickelt.
Warum heißt es „Extreme?“
Extreme Programming nimmt die effektive Prinzipien und Praktiken auf extremen Ebenen.
-
Codeüberprüfungen sind wirksam, da der Code ständig überprüft wird.,
-
Tests sind wirksam, da es kontinuierliche Regression und Tests gibt.
-
Design ist effektiv, da jeder täglich Refactoring durchführen muss.
-
Integrationstests sind wichtig, da sie mehrmals täglich integriert und getestet werden.
-
Kurze Iterationen sind als Planungsspiel für Release-Planung und Iterationsplanung wirksam.
Geschichte des Extreme Programming
Kent Beck, Ward Cunningham und Ron Jeffries formuliert extreme Programming in 1999. Die anderen Mitwirkenden sind Robert Martin und Martin Fowler.,
Mitte der 80er Jahre initiierten Kent Beck und Ward Cunningham die Paarprogrammierung bei Tektronix. In den 80er und 90er Jahren produzierte Smalltalk Culture Refactoring, kontinuierliche Integration, ständige Tests und enge Kundenbindung. Diese Kultur wurde später auf die anderen Umgebungen verallgemeinert.
Anfang der 90er Jahre wurden innerhalb der Patterns-Community Hillside Group Kernwerte entwickelt. 1995 fasste Kent diese in Smalltalk Best Practices zusammen und 1996 fasste Ward sie in Episoden zusammen.
1996 fügte Kent Unit Testing und Metapher bei Hewitt hinzu., 1996 hatte Kent das Chrysler C3-Projekt übernommen, zu dem Ron Jeffries als Trainer hinzugefügt wurde. Die Praktiken wurden auf C3 verfeinert und im Wiki veröffentlicht.
Scrum-Praktiken wurden als Planungsspiel integriert und angepasst. 1999 veröffentlichte Kent sein Buch „Extreme Programming Explained“. Im selben Jahr veröffentlichte Fowler sein Buch Refactoring.
Seitdem hat sich die extreme Programmierung weiterentwickelt, und die Entwicklung geht bis heute weiter.
Erfolg in der Industrie
Der Erfolg von Projekten, die extremen Programmierpraktiken folgen, ist auf −
-
Schnelle Entwicklung zurückzuführen.,
-
Sofortige Reaktion auf die sich ändernden Anforderungen des Kunden.
-
Fokus auf niedrigen Fehlerraten.
-
System, das konstante und konsistente Werte an den Kunden zurückgibt.
-
Hohe Kundenzufriedenheit.
-
Reduziert die Kosten.
-
Teamzusammenhalt und Mitarbeiterzufriedenheit.
Extreme Programming Vorteile
Extreme Programming löst die folgenden Probleme oft in der software-Entwicklung-Projekte −
-
Rutschte Zeitpläne − und erreichbar Entwicklung Zyklen gewährleisten pünktliche Lieferungen.,
-
Stornierte Projekte-Der Fokus auf eine kontinuierliche Kundenbeteiligung sorgt für Transparenz beim Kunden und sofortige Lösung von Problemen.
-
Kosten für Änderungen-Umfangreiche und laufende Tests stellen sicher, dass die Änderungen die vorhandene Funktionalität nicht beeinträchtigen. Ein laufendes Arbeitssystem sorgt immer für genügend Zeit, um Änderungen so aufzunehmen, dass die aktuellen Vorgänge nicht beeinträchtigt werden.
-
Produktions-und Nachlieferungsfehler: Der Schwerpunkt liegt auf-das Gerät prüft, um die Mängel frühzeitig zu erkennen und zu beheben.,
-
Missverständnis des Geschäfts und/oder der Domäne − Das Machen des Kunden zum Teil des Teams sorgt für ständige Kommunikation und Klarstellungen.
-
Geschäftsänderungen-Änderungen gelten als unvermeidlich und werden zu jedem Zeitpunkt berücksichtigt.
-
Fluktuationsintensive Teamzusammenarbeit sorgt für Begeisterung und guten Willen. Der Zusammenhalt der verschiedenen Disziplinen fördert den Teamgeist.