Fachhochschule Dortmund Fachbereich Informatik SS 2004 Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Thema: - - Vortrag von Michael Pols Betreut durch: Prof. Dr. Frank Thiesing Übersicht Kernfragen die im Rahmen des Vortages geklärt werden sollen: 1. Warum brauchen wir Agilität? 2. Was bedeutet Agilität? 3. Was ist agile? 4. Welche Methoden unterstützen agile? 5. Wo kommen agile Verfahren zum Einsatz? Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -2-1
Kernfrage Warum brauchen wir Agilität? Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -3- Notwendigkeit von Agilität Projektrisiken Anforderungen des Kunden sind zu Beginn eines Projekts unklar Falsche Interpretation der Kundenwünsche Falscher Funktionsumfang Anforderungen und Technologien können sich ändern Unrentable Systeme Zielabweichung Konsequenz: - Termin- und Budgetüberschreitung - Projektabbruch - unzufriedene Kunden, unzufriedene Entwickler - Imageverlust Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -4-2
Notwendigkeit von Agilität Lösungsmöglichkeit Einsatz agiler Prozesse und Methoden! Im Fokus agiler Prozesse stehen: - der Kunde selbst - der wirtschaftliche Nutzen des Kunden - sich entwickelnde Anforderungen - die schnelle Erzeugung von Ergebnissen Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -5- Kernfrage Was bedeutet Agilität? Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -6-3
Leitbild Wir stellen: Das Manifest Menschen und Zusammenarbeit über Prozesse und Werkzeuge; Lauffähige Software über umfangreiche Dokumentation; Zusammenarbeit mit dem Kunden über Vertragsverhandlungen; Reaktion auf Änderungen über starre Befolgung eines Planes. Obwohl Letztere ihren Wert haben, bewerten wir Erstere höher. Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -7- Prinzipien Unsere höchste Priorität ist es, den Kunden durch frühzeitige und kontinuierliche Auslieferung nützlicher Software zufrieden zu stellen. Begrüße sich ändernde Anforderungen, selbst spät in der Entwicklung. Prozesse machen Änderungen als Wettbewerbsvorteil des Kunden nutzbar. Liefere lauffähige Software häufig aus, alle paar Wochen bis alle paar Monate, unter Bevorzugung kürzerer Abstände. Geschäftsleute und Entwickler müssen während des ganzen Projekts täglich zusammenarbeiten. Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -8-4
Prinzipien Baue Projekte um motivierte Individuen herum auf. Stell ihnen die benötigte Umgebung und Unterstützung zur Verfügung und vertraue auf sie. Die effizienteste und effektivste Methode der Übermittlung von Informationen an und innerhalb eines Entwicklungsteams ist das persönliche Gespräch. Lauffähige Software ist das wichtigste Maß für den Projektfortschritt. Prozesse fördern die dauerhafte Entwicklung. Sponsoren, Entwickler und Nutzer sollten ein konstantes Tempo unbegrenzt einhalten können. Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -9- Prinzipien Beständiges Achten auf ausgezeichnete technische Fertigkeiten und gutes Entwerfen steigert die Agilität. Schlichtheit ist wesentlich. Die besten Architekturen, Anforderungen und Entwürfe stammen von selbstorganisierenden Teams. In regelmäßigen Abständen denkt das Team darüber nach, wie es effektiver werden kann, und passt sein Verhalten dementsprechend an. Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -10-5
Prozesse Prozesse der Softwareentwicklung Organisation Projektmanagement Systemanalyse Architektur Dokumentation Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -11- Kernfrage Was ist agile? Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -12-6
Wesensmerkmale agiler Testgetriebene Entwicklung Best Practices Code Konventionen Refactoring Design-by-Contract Offen-Geschlossen-Prinzip Vermeidung von Redundanz Fortlaufende Integration Ergebnisorientierung Get it right the last time Aufbau von Kompetenz Code Reviews Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -13-...... als Einzelprozess existiert gar nicht... wird durch die verwendete Methode definiert... wird in der Literatur nicht verwendet Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -14-7
Kernfrage Welche Methoden unterstützen agile? Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -15- Methoden Wesensmerkmale agiler Methoden Iterativ & Inkrementell Kooperativ Einfach Adaptiv Die wichtigsten Methoden im Überblick AM ASD ARTE Crystal DSDM FDD ISD LP PP RUP Scrum XP Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -16-8
XP: Rollen Management Big Boss Kunde Coach Tracker Customer Tester Programmer Entwicklungsteam Expert Unterstützung Andere Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -17- XP: Praktiken Short Releases Project Management Planning 40-hour-week Game Just Rules Impementation Coding Standards Metaphor Refactoring Pair Programming Simple Design Open Workspace SCM Collective Code Ownership Continuous Integration Validation & Verification Continuous Testing On-Site Customer Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -18-9
XP: Prozesse Stories Releases Priority List Analysis & Design Pair Programming Plan for Tests Code Tests & continous integration Customer Acceptance Collective Database Customer Feedback Continuous Customer Tests Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -19- Kernfrage Wo kommen agile Verfahren zum Einsatz? Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -20-10
Einsatzmöglichkeiten Verfahren eignen sich bedingt oder gar nicht für: große Projektteams verteilte Entwicklung Entwicklung sicherheitskritischer Systeme Entwicklung großer, komplexer Systeme Entwicklung von wiederverwendbaren Komponenten Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -21- Ende Vielen Dank für die Aufmerksamkeit! Fragen oder Kommentare? Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -22-11
Literatur & Quellen [Balzert, 1998] H. Balzert; Lehrbuch der Software-Technik; Spektrum, Akad. Verl., 1998 [Beck, 2000] K. Beck; Extreme Programming Explained; Addison-Wesley, 2000 [Hruschka et al., 2002] P. Hruschka, C. Rupp; Software-Entwicklung für Embedded Real-Time Systems mit der UML; Carl Hanser Verl., 2002 [Hruschka et al., 2004] P. Hruschka, C. Rupp, G. Starke; Agility kompakt; Spektrum Akad. Verl., 2004 [Hunt et al., 2003] A. Hunt, D. THomas; Der pragmatische Programmierer; Carl Hanser Verl., 2003 [Starke, 2002] G. Starke; Effektive Software-Architekturen Ein praktischer Leitfaden; Carl Hanser Verl., 2002 Seminar: Komponentenbasierte Softwareentwicklung und Hypermedia Michael Pols -23-12