Agile Softwareentwicklung Klassische Erfolgsfaktoren neu verpackt? Volker Brosche, Michael Koch, Dr. Achim Selz 1822 S inform Software GmbH OOP 2004 München, 21. Januar 2004 2003 1822 S inform
Inhalt Beispiel für erfolgreiche Softwareentwicklung Agile Softwareentwicklung Klassische Erfolgsfaktoren der Softwareentwicklung Analyse anhand der Prinzipien des agilen Manifests Ergebnisse Seite 2
Inhalt Beispiel für erfolgreiche Softwareentwicklung Agile Softwareentwicklung Klassische Erfolgsfaktoren der Softwareentwicklung Analyse anhand der Prinzipien des agilen Manifests Ergebnisse Seite 3
Beispiel für erfolgreiche Softwareentwicklung Die 1822 S inform Software GmbH Softwarehaus für maßgeschneiderte Lösungen Ausschließlich Projektgeschäft, kein Produktgeschäft Softwareentwicklung überwiegend für die Finanzdienstleistungsbranche Webarchitekturen, Integration von Legacy-Systemen 50 Mitarbeiterinnen und Mitarbeiter In 2003 ca. 10,4 Mio Umsatz Großer Anteil Stammkunden Seite 4
Beispiel für erfolgreiche Softwareentwicklung Projekte der 1822 S inform in 2003 Alle termingerecht Alle im vereinbarten Budget Alle in tadelloser Qualität Seite 5
Inhalt Beispiel für erfolgreiche Softwareentwicklung Agile Softwareentwicklung Klassische Erfolgsfaktoren der Softwareentwicklung Analyse anhand der Prinzipien des agilen Manifests Ergebnisse Seite 6
Was ist agil? Merriam-Webster Dictionary: Main Entry: ag ile Pronunciation: 'a-j&l, -"jil Function: adjective Etymology: Middle French, from Latin agilis, from agere to drive, act -- more at AGENT Date: 1581 1 : marked by ready ability to move with quick easy grace 2 : having a quick resourceful and adaptable character <an agile mind> Duden: a gil [lat.] flink, beweglich, behände; A gi li tät Flinkheit, Beweglichkeit Seite 7
Was ist Agility? (1) Agility-Team Buxtehude: Agility ist eine verhältnismäßig junge Hundesportart, die ihren Ursprung in England hat. Agility ist ein dem Springreiten nachempfundener Sport, bei dem Hund und Mensch als Team immer wieder neue Aufgaben in einem Parcour mit hundgerechten Geräten erfüllen müssen. [ ] Aber nicht nur die Behendigkeit von Hund und Hundeführer ist wichtig für das Ausüben von Agility, sondern auch ein großes Maß an Harmonie zwischen diesen Beiden. [ ] Wichtig ist auch zu erwähnen, daß den Hunden beim Agility nichts unnatürliches abverlangt wird, sondern sämtliche Bewegungsabläufe im Wesentlichen denen der Jagd im Rudel entsprechen. Seite 8
Was ist Agility? (2) Bevor man jedoch mit seinem Hund ein gezieltes Agility- Training beginnt, sollte es für jeden Hundeführer eine Selbstverständlichkeit sein, seinen Hund einem Gesundheitscheck beim Tierarzt zu unterziehen[ ]. Diese Vorsorgemaßnahmen sind wichtig, weil Hunde wegen der Freude am gemeinsamen Sport und Spiel ihre Schmerzen meistens erst sehr spät anzeigen. Seite 9
Das Manifest der Agilen Software-Entwicklung Durch das Entwickeln von Software und indem wir anderen bei der Entwicklung helfen, erschließen wir bessere Wege der Software- Entwicklung. Durch diese Arbeit haben wir folgende Werte zu schätzen gelernt: Individuen und Interaktionen sind wichtiger als Prozesse und Werkzeuge. Funktionierende Software ist wichtiger als umfassende Dokumentation. Kundenzusammenarbeit ist wichtiger als Vertragsverhandlungen. Auf Änderungen reagieren ist wichtiger als einem Plan zu folgen. Wir schätzen die Punkte auf der rechten Seite, aber wir bewerten die Punkte auf der linken Seite höher. (Kent Beck, Alistair Cockburn, Martin Fowler et al., Feb 2001) Seite 10
Inhalt Beispiel für erfolgreiche Softwareentwicklung Agile Softwareentwicklung Klassische Erfolgsfaktoren der Softwareentwicklung Analyse anhand der Prinzipien des agilen Manifests Ergebnisse Seite 11
Klassische Erfolgsfaktoren der Software-Entwicklung Quellen: Die Entwicklung von Software-Systemen: Prinzipien, Methoden, Sprachen, Werkzeuge. (Helmut Balzert, 1982) In diesem Buch wird [ ] der Versuch gemacht, allgemeingültige Prinzipien in den Vordergrund zu stellen, die unabhängig von Methoden und Sprachen bei jeder Software-Entwicklung beachtet werden sollen. Wien wartet auf Dich! ( Peopleware ) (Tom DeMarco u. Timothy Lister, 1987) Der Faktor Mensch im DV-Management Seite 12
Inhalt Beispiel für erfolgreiche Softwareentwicklung Agile Softwareentwicklung Klassische Erfolgsfaktoren der Softwareentwicklung Analyse anhand der Prinzipien des agilen Manifests Ergebnisse Seite 13
Prinzipien hinter dem agilen Manifest Die 17 Unterzeichner des Agile Manifesto konnten sich auf 12 Prinzipien einigen, die hinter diesem Manifest stehen. Auf detaillierteren Ebenen war keine Einigung mehr möglich. 12 Prinzipien als Grundlage des Vergleichs mit den klassischen Erfolgsfaktoren aus Balzert und DeMarco : Prinzipien des agilen Manifests Klassische Erfolgsfaktoren Erfolgsfaktoren der 1822 S inform Seite 14
Prinzipien Nr. 1 + 2 Die höchste Priorität liegt darin, den Kunden durch frühe und zahlreiche Lieferungen hochwertiger Software zufrieden zu stellen. Funktionierende Software muss regelmäßig geliefert werden, innerhalb weniger Monate, wobei der kürzeren Zeitspanne eindeutig der Vorzug zu geben ist. Im Rahmen der Software-Entwicklung bedeutet Prototyp ein funktionsfähiges Produkt, das bereits vor der Entwicklung des endgültigen Software-Produkts vorliegt. (Balzert) Releasezyklen von 2 bis 6 Monaten. Dabei Ca. 30% Analyse als Aufwandsprojekt Ca. 70% Umsetzung als Festpreisprojekt Seite 15
Prinzip Nr. 3 Funktionierende Software ist der primäre Maßstab für den Fortschritt. Notwendig zur Planung gehört die Kontrolle, d. h. das möglichst lückenlose Messen des Entwicklungsfortschritts am Plan. [ ] Meilensteinberichte oder Projektstatusberichte dienen zur Information des Projektleiters. (Balzert) Analyse: Status anhand fertiggestellter Dokumente Projekte in vertrautem Kontext: Status durch Statusberichte Projekte in neuem Kontext: Status anhand fertiggestellter Software Seite 16
Prinzip Nr. 4 Veränderte Anforderungen sollten immer positiv aufgenommen werden, selbst wenn sie sich erst spät in der Entwicklung zeigen. Agile Verfahren nutzen Änderungen zum Wettbewerbsvorteil des Kunden. [ ] ein System [muß] so strukturiert sein, daß Änderungen während der Systementwicklung und am fertigen System überschaubar und leicht durchführbar sind. (Balzert) Reduzierung der Änderungsanforderungen durch gute Analyse Sammlung der Änderungsanforderungen für nächstes Release Seite 17
Prinzip Nr. 5 Geschäftsleute und Entwickler arbeiten täglich gemeinsam im Projekt. Erstellung der Anforderungen im Dialog mit dem Auftraggeber und u. U. den Benutzern. (Balzert) Analyse als eigenes Aufwandsprojekt Softwareentwickler verfügen auch über Fachwissen Im Realisierungsprojekt fachliche Ansprechpartner beim Kunden Seite 18
Prinzip Nr. 6 Bauen Sie ihr Projekt um einzelne motivierte Mitarbeiter herum auf. Geben Sie diesen Mitarbeitern die Umgebung und die Unterstützung, die sie benötigen, und vertrauen Sie darauf, dass sie ihre Arbeit gut machen. gute Leute einstellen diese glücklich machen, damit sie bleiben sie möglichst frei arbeiten lassen (DeMarco) Vielseitige und wechselnde Aufgaben für alle Management by Objectives Eigenverantwortliche Teams Seite 19
Prinzip Nr. 7 Die effizienteste und effektivste Methode zur Informationsübermittlung für und innerhalb eines Entwicklungsteams besteht in der direkten Kommunikation. Die kontrollierte dezentralisierte Organisationsstruktur [ ] Jeder kommuniziert mit jedem und tauscht auch seine erstellten Teilprodukte [ ] aus. (Balzert) Keine räumlich verteilte Entwicklung Kleine Teams bzw. Teilteams von max. 7 Leuten Open-Door-Policy Seite 20
Prinzipien Nr. 8 und 9 Die besten Architekturen, Anforderungen und Designs entwickeln sich in Teams, die sich selbst organisieren. Ständige Aufmerksamkeit gegenüber technisch hervorragender Qualität sowie gutem Design verbessert die Agilität. Änderbarkeit (modifiability): Grad, in dem ein Produkt den Einbau von Änderungen erleichtert, wenn die Art der gewünschten Änderung festgelegt ist. (Balzert) Eigenverantwortliche Teams Projektkultur der Zielorientierung Rolle Chefarchitekt Refactoring nach Releasezyklen Seite 21
Prinzip Nr. 10 Agile Prozesse fördern nachhaltige Entwicklung. Geldgeber, Entwickler und Benutzer sollten endlos ein beständiges Tempo beibehalten können. (Keine Entsprechung) Regelmäßige Releasezyklen (2 3 pro Jahr) Berechenbare Projekte durch Termin- und Budgettreue Wochenendarbeit ist absolute Ausnahme Seite 22
Prinzip Nr. 11 Schlichtheit - die Kunst, die Menge der nicht geleisteten Arbeit zu maximieren - ist essenziell. (Keine Entsprechung) Schlankes Vorgehensmodell, das jeweils an Projektsituation angepasst wird Kein unnötiges komplexes Design der Anwendungen Seite 23
Prinzip Nr. 12 Die Teams müssen in regelmäßigen Abständen darüber beraten, wie sie noch effektiver arbeiten können und ihr Verhalten dann entsprechend anpassen. Qualitätssicherung durch Kollegen: In Firmen, in denen qualitätssichernde Maßnahmen unter den Mitarbeitern aktiv betrieben werden [ ] gibt es einen natürlichen Trend zur Vereinheitlichung von Methoden. (DeMarco) Refactoringprojekte Entwicklerworkshops Kaffeeküche Seite 24
Inhalt Beispiel für erfolgreiche Softwareentwicklung Agile Softwareentwicklung Klassische Erfolgsfaktoren der Softwareentwicklung Analyse anhand der Prinzipien des agilen Manifests Ergebnisse Seite 25
Ergebnisse Einige agile Prinzipien sind nicht neu, einige schon. Ohne gute, selbstständige, motivierte Mitarbeiter lassen sich die agilen Prinzipien nicht umsetzen. Die angewendeten Prinzipien und das eingesetzte Vorgehensmodell müssen zur Projektkultur im Unternehmen passen. Seite 26
Ergebnisse im Kontext der 1822 S inform Die Branche und die Kunden sind mit entscheidend dafür, wie agil Software entwickelt werden kann. Permanente, insb. späte Änderungsanforderungen können durch den Einsatz der selben guten Mitarbeiter für Analyse und Entwicklung und geeignet kurze Releasezyklen stark eingeschränkt werden. Seite 27
Vielleicht sind Sie schon agil, ohne es zu wissen? Vielen Dank für Ihre Aufmerksamkeit! http://www.1822-s-inform.de/ 2003 1822 S inform