Clean Agile. Die Essenz der agilen Softwareentwicklung (eBook)
192 Seiten
MITP Verlags GmbH & Co. KG
978-3-7475-0113-9 (ISBN)
- Lernen Sie aus Uncle Bobs jahrzehntelanger Erfahrung, worauf es bei der agilen Softwareentwicklung wirklich ankommt
- Die ursprünglichen agilen Werte und Prinzipien kurz und prägnant für den Praxiseinsatz erläutert
- Von den unternehmerischen Aspekten über die Kommunikation im Team bis zu den technischen Praktiken wie Test-Driven Development (TDD), einfaches Design und Pair Programming
Fast 20 Jahre nach der Veröffentlichung des agilen Manifests ruft der legendäre Softwareentwickler Robert C. Martin (»Uncle Bob«) dazu auf, sich wieder auf die ursprünglichen Werte und Prinzipien zurückzubesinnen, die den eigentlichen Kern der agilen Softwareentwicklung ausmachen und die für die Praxis von zentraler Bedeutung sind. Mit Clean Agile lässt er alle an seiner jahrzehntelangen Erfahrung teilhaben und räumt mit Missverständnissen und Fehlinterpretationen auf, die im Laufe der Jahre entstanden sind. Dabei wendet er sich gleichermaßen an Programmierer und Nicht-Programmierer.
Uncle Bob macht deutlich, was agile Softwareentwicklung eigentlich ist, war und immer sein sollte: ein einfaches Konzept, das kleinen Softwareteams hilft, kleine Projekte zu managen - denn daraus setzen sich letztendlich alle großen Projekte zusammen. Dabei konzentriert er sich insbesondere auf die Praktiken des Extreme Programmings (XP), ohne sich in technischen Details zu verlieren.
Egal, ob Sie Entwickler, Tester, Projektmanager oder Auftraggeber sind - dieses Buch zeigt Ihnen, worauf es bei der Umsetzung agiler Methoden wirklich ankommt.
Aus dem Inhalt:- Ursprünge der agilen Softwareentwicklung
- Agile Werte und Prinzipien
- Der richtige Einsatz von Scrum
- Agile Transformation
- Extreme Programming
- Unternehmensbezogene Praktiken: User Stories, Velocity, kleine Releases und Akzeptanztests
- Teambezogene Praktiken: gemeinsame Eigentümerschaft, kontinuierliche Integration und Stand-up-Meetings
- Technische Praktiken: TDD, Refactoring, einfaches Design und Pair Programming
- Zertifizierung und Coaching
- Software Craftsmanship
»Bobs Frustration spiegelt sich in jedem Satz des Buchs wider - und das zu Recht. Der Zustand, in dem sich die Welt der agilen Softwareentwicklung befindet, ist nichts im Vergleich zu dem, was sie eigentlich sein könnte. Das Buch beschreibt, auf was man sich aus Bobs Sicht konzentrieren sollte, um das zu erreichen, was sein könnte. Und er hat es schon erreicht, deshalb lohnt es sich, ihm zuzuhören.«
- Kent Beck
»Uncle Bob ist einer der klügsten Menschen, die ich kenne, und seine Begeisterung für Programmierung kennt keine Grenzen. Wenn es jemandem gelingt, agile Softwareentwicklung zu entmystifizieren, dann ihm.«
- Jerry Fitzpatrick
Robert C. Martin (»Uncle Bob«) ist bereits seit 1970 als Programmierer tätig. Neben seiner Beraterfirma Uncle Bob Consulting, LLC gründete er gemeinsam mit seinem Sohn Micah Martin auch das Unternehmen The Clean Coders, LLC. Er hat zahlreiche Artikel in verschiedenen Zeitschriften veröffentlicht und hält regelmäßig Vorträge auf internationalen Konferenzen. Zu seinen bekanntesten Büchern zählen Clean Code, Clean Coder und Clean Architecture.
Kapitel 2:
Die Bedeutung agiler Softwareentwicklung
Bevor wir uns mit den Details der agilen Softwareentwicklung befassen, möchte ich erklären, was auf dem Spiel steht. Agile Softwareentwicklung ist von großer Bedeutung, nicht nur für Software, sondern auch für unsere gesamte Branche, unsere Gesellschaft und letzten Endes sogar für unsere Zivilisation.
Entwickler und Manager setzen agile Softwareentwicklung oftmals aus Gründen ein, die nur vorübergehend sind. Vielleicht probieren sie es aus, weil es sich »richtig« anfühlt oder weil sie von dem versprochenen Tempo und der Qualität angetan sind. Solche Gründe sind jedoch ungreifbar, unklar und können leicht wieder umgestoßen werden. Viele haben agile Softwareentwicklung wieder aufgegeben, weil sie nicht sofort die vermeintlich versprochenen Ergebnisse erzielen konnten.
Diese vergänglichen Gründe sind nicht dafür verantwortlich, dass agile Softwareentwicklung von so großer Bedeutung ist. Sie ist aus sehr viel tiefer gehenden philosophischen und ethischen Gründen wichtig. Diese Gründe haben mit Professionalität und den berechtigten Erwartungen unserer Kunden zu tun.
2.1 Professionalität
Ich habe mich ursprünglich mit agiler Softwareentwicklung beschäftigt, weil dabei die Disziplin deutlichen Vorrang vor zeremoniellen Handlungen hat. Bei der agilen Softwareentwicklung musste man als Paar arbeiten, erst Tests schreiben, Refactorings vornehmen und sich auf einfache Designs festlegen. Man musste in kurzen Zyklen arbeiten und nach jedem Zyklus ein ausführbares Ergebnis vorweisen. Und man musste regelmäßig und kontinuierlich mit den geschäftlichen Unternehmensbereichen kommunizieren.
Sehen Sie sich den Kreis des Lebens noch einmal an und betrachten Sie die einzelnen Praktiken als ein Versprechen, eine Verpflichtung, dann werden Sie verstehen, was ich meine. Für mich bedeutet agile Softwareentwicklung die Zusage, meinen Einsatz zu erhöhen – professionell zu handeln und professionelles Verhalten in der gesamten Softwareentwicklungsbranche zu fördern.
Die Softwarebranche hat es bitter nötig, die Professionalität zu erhöhen. Wir scheitern viel zu oft. Wir liefern zu viel Mist aus. Wir nehmen zu viele Missstände hin. Wir gehen hanebüchene Kompromisse ein. Wir verhalten uns zu oft wie unbändige Teenager, die eine neue Kreditkarte bekommen. Früher war ein solches Verhalten noch tolerierbar, weil nicht viel auf dem Spiel stand. In den 1970er-, 1980er- und sogar Anfang der 1990er-Jahre waren die Kosten für fehlerhafte Software zwar hoch, aber begrenzt und überschaubar.
2.1.1 Software ist allgegenwärtig
Heutzutage ist das anders.
Sehen Sie sich um, genau jetzt. Bleiben Sie, wo Sie sind, und betrachten Sie den Raum, in dem Sie sich aufhalten. Wie viele Computer befinden sich darin?
Ich mach’ das jetzt mal. Ich befinde mich gerade in meiner Sommerhütte in den nördlichen Wäldern Wisconsins. Wie viele Computer befinden sich hier?
-
4: Ich schreibe diese Zeilen auf einem MacBook Pro mit einem Vierkernprozessor. Ich weiß, angeblich sind es acht Kerne, aber »virtuelle« Kerne zähle ich nicht mit. Und die ganzen Hilfsprozessoren im MacBook zähle ich auch nicht.
-
1: Meine Apple Magic Mouse 2. Ich bin mir sicher, dass sie mehr als einen Prozessor hat, aber ich zähle das nur als einen.
-
1: Mein iPad, auf dem die Software Duet läuft, damit ich es als zweiten Bildschirm nutzen kann. Mir ist bewusst, dass das iPad auch eine Reihe von Hilfsprozessoren enthält, aber ich zähle wieder nur einen.
-
1: Mein Autoschlüssel (!)
-
3: Meine Apple AirPods. Ein Prozessor pro Ohrhörer und einer im Etui.
-
1: Mein iPhone. Tatsächlich hat es wohl mehr als ein Dutzend Prozessoren, aber ich zähle abermals nur einen.
-
1: Ein Ultraschall-Bewegungsmelder in Sichtweite (Es gibt noch einige mehr im Haus, aber nur einen, den ich sehen kann.)
-
1: Ein Thermostat
-
1: Das Bedienfeld der Alarmanlage
-
1: Ein Fernseher mit Flachbildschirm
-
1: Ein DVD-Player
-
1: Ein Roku-Internet-TV zum Streamen von Videos und Fernsehsendungen
-
1: Ein Apple Airport Express
-
1: Ein Apple-TV
-
5: Verschiedene Fernbedienungen
-
1: Ein Telefon (Ja, ein richtiges Telefon.)
-
1: Ein elektronischer Kamin-Simulator (Sie würden sich wundern, wie viele Modi er unterstützt.)
-
2: Ein älteres computergesteuertes Teleskop, ein Meade LX 200 EMC. Ein Prozessor befindet sich im Antrieb, der andere im Handsteuergerät.
-
1: Ein USB-Stick in meiner Hosentasche
-
1: Ein Apple Pencil
Das sind schon mindestens 30 Computer, nur in diesem einen Raum. Die tatsächliche Zahl dürfte rund doppelt so groß sein, denn die meisten Geräte haben mehrere Prozessoren. Aber bleiben wir für Erste bei 30.
Wie viele haben Sie entdeckt? Ich könnte wetten, dass die meisten Leser eine ähnlich hohe Zahl ermittelt haben. Ich würde sogar darauf wetten, dass die meisten der 1,3 Milliarden Menschen, die in westlichen Gesellschaften leben, sich ständig in der Nähe von mehr als einem Dutzend Computern befinden. Das gab es früher nicht. Anfang der 1990er-Jahre lag dieser Wert wohl eher in der Nähe von null.
Was haben all diese Computer gemeinsam? Sie müssen programmiert werden. Sie benötigen Software – Software, die wir schreiben. Und was ist Ihrer Ansicht nach von der Qualität der Software zu halten?
Ich möchte das Ganze in einem anderen Licht betrachten. Wie oft am Tag verwendet Ihre Großmutter ein Softwaresystem? Sofern Ihre Großmutter noch lebt, dürfte die Zahl bei einigen Tausend liegen, denn in der heutigen Gesellschaft kann man praktisch nichts mehr erledigen, ohne mit einem Softwaresystem zu interagieren. Folgendes funktioniert beispielsweise nicht:
-
Telefonieren
-
Etwas kaufen oder verkaufen
-
Mikrowelle, Kühlschrank oder sogar Toaster benutzen
-
Wäsche waschen oder trocknen
-
Geschirrspülen
-
Musik hören
-
Autofahren
-
Der Versicherung einen Schaden melden
-
Die Heizung aufdrehen
-
Fernsehen
Es kommt aber noch schlimmer. In der heutigen Gesellschaft kann man praktisch nichts von Bedeutung erledigen, ohne mit einem Softwaresystem zu interagieren. Gesetze können nicht verabschiedet oder durchgesetzt werden. Die Regierungspolitik kann nicht debattiert werden. Flugzeuge können nicht geflogen werden. Autos können nicht gefahren werden. Raketenflugkörper können nicht gestartet werden. Boote können nicht gesegelt werden. Straßen können nicht gepflastert werden. Ernten können nicht eingebracht werden. Stahlwerke können keinen Stahl produzieren. Autohersteller können keine Autos bauen. Süßwarenhersteller können nichts zum Naschen produzieren. Aktien können nicht gehandelt werden ...
Ohne Software kommt unsere Gesellschaft zum Stillstand. Jeder wache Augenblick ist von Software geprägt. Und so mancher von uns überwacht sogar den Schlaf mit Software.
2.1.2 Wir beherrschen die Welt
Unsere Gesellschaft ist mit Haut und Haaren von Software abhängig. Software ist der Treibstoff, der unsere Gesellschaft am Laufen hält. Ohne sie wäre die Zivilisation, an der wir uns gegenwärtig erfreuen, nicht möglich.
Und wer schreibt all diese Software? Sie und ich. Wir, die Programmierer, beherrschen die Welt.
Andere Menschen glauben, die Welt zu beherrschen, aber dann übergeben sie die Vorschriften und Gesetze, die sie sich ausgedacht haben, doch an uns, und wir verwirklichen die Regeln, denen die Maschinen gehorchen, die praktisch jede Aktivität des modernen Lebens überwachen und steuern.
Wir, die Programmierer, beherrschen die Welt.
Und wir erledigen diese Aufgabe ziemlich schlecht.
Was glauben Sie, wie viel der Software, die für nahezu alles verantwortlich ist, ordnungsgemäß getestet wurde? Wie viele Programmierer können von sich behaupten, dass sie eine Testsuite verwenden, die mit an Sicherheit grenzender Wahrscheinlichkeit beweist, dass die von ihnen geschriebene Software korrekt arbeitet?
Funktionieren die hundert Millionen Codezeilen, die in Ihrem Auto ausgeführt werden, wirklich richtig? Oder sind Ihnen Bugs aufgefallen? Mir schon. Und was ist mit dem Code, der die Bremsen, das Gaspedal und die Lenkung steuert? Gibt es irgendwelche Bugs? Gibt es eine Testsuite, die mit an Sicherheit grenzender Wahrscheinlichkeit beweist, dass Ihr Auto tatsächlich anhält, wenn Sie das Bremspedal betätigen?
Wie viele Todesopfer hat es gegeben, weil die Software in ihren Fahrzeugen versagt hat, als die Fahrer das Bremspedal betätigten? Das wissen wir nicht genau, aber die Antwort lautet viele. In einem Fall, der sich 2013 zugetragen hat, zahlte Toyota Schadensersatz in Höhe von mehreren Millionen Dollar, weil die Software »möglicherweise Bitfehler (Soft Errors) aufwies, Speicherdefekte und abstürzende Prozesse auftraten, die Sicherheitsmaßnahmen aushebelten, der Schutz vor Stack- und Pufferüberläufen unzureichend war, einzelne Fehler sich anhäuften und Tausende globale Variablen verwendet wurden«, all das in einem Wust aus »Spaghetti-Code«.[1]
Unsere Software tötet jetzt Menschen. Sie und ich laufen vielleicht nicht Gefahr, in so etwas verwickelt zu werden. Viele von uns sind...
Erscheint lt. Verlag | 28.7.2020 |
---|---|
Reihe/Serie | mitp Professional |
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge |
Schlagworte | Agile Softwareentwicklung • Agilität • Buch • Pair-Programming • Programmierung • Refactoring • Release • Scrum • TDD • Test driven development • Testing • Unit Test • User Stories |
ISBN-10 | 3-7475-0113-3 / 3747501133 |
ISBN-13 | 978-3-7475-0113-9 / 9783747501139 |
Haben Sie eine Frage zum Produkt? |
Größe: 4,9 MB
Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopierschutz. Eine Weitergabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persönlichen Nutzung erwerben.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegeräte ist EPUB daher gut geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich