24
Von agiler Softwareentwicklung hin zu Continuous Deployment Seminar „Beiträge zum Software Engineering“ AG Software Engineering Freie Universität Berlin Patrick Hobusch, 16.02.2017

Von agiler Softwareentwicklung hin zu Continuous … · from systems in actual use with customers instead of being frozen ... •Fehlende Testautomatisierung •Fehlende Disziplin

Embed Size (px)

Citation preview

Von agiler Softwareentwicklung hin zu

Continuous Deployment

Seminar „Beiträge zum Software Engineering“

AG Software Engineering

Freie Universität Berlin

Patrick Hobusch, 16.02.2017

Thema

• Prozesse und Praktiken jenseits von agiler Softwareentwicklung

• Hürden und Schlüsselinitiativen zum Erfolg

• „Stairway to Heaven“

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 2

Mehrfache Fallstudie

• Helena Holmström Olsson, Jan Bosch, and Hiva Alahyari. "Towards R&D as innovation experiment systems: A frameworkfor moving beyond agile software development." Proceedings ofthe IASTED. 2013.

• Halbstrukturierte Interviews mit offenen Fragen

• Insgesamt 32 Interviews mit mind. 1 Stunde Dauer in fünf Unternehmen

• Datenanalyse angelehnt an „Grounded Theory“

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 3

Agile Softwareentwicklung

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 4

• Änderungsängste und -kosten reduzieren

• Software mit hohem Wert

• Gegenbewegung zur „traditionellen“, plangetriebenen Softwareentwicklung

Continuous Integration

• Regelmäßiger Prozess, in dem Änderungen an der Software integriert werden

• Unterstützung durch Werkzeuge

• Schließt oft weitere Aktionen ein• Testausführung

• Codeanalyse

• etc.

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 5

Continuous Deployment

• Continuous Delivery• Auslieferungsfähige Software zu jeder Änderung

• Manuelle Auslieferung einzelner Artefakte

• Continuous Deployment• Softwareauslieferung zu jeder Änderung

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 6

http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment

Innovation Experiment Systems

• Datenerhebung direkt beim Kunden

• Ableitung von neuen Anforderungen

• Begriff geprägt von Jan Bosch

• „[…] requirements evolve in real-time based on data collected from systems in actual use with customers instead of being frozen early based on the opinions of product management […]”

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 7

Vorkommen der Stufen in der agilen SE

• Welche Stufen der „Stairway to Heaven“ werden von der agilen Softwareentwicklung abgedeckt?

• Betrachtung von

• Agile Manifesto

• Extreme Programming

• Scrum

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 8

Prinzipien des „Agile Manifesto“

• Frühe, kontinuierliche Auslieferung von wertvoller Software

• Offenheit gegenüber Anforderungsänderungen

• Lieferung funktionierender Software in kurzen Zeitspannen

• Tägliche Zusammenarbeit von Fachexperten und Entwicklern

• Motivierte Individuen, Unterstützung, Vertrauen

• Informationsaustausch im Gespräch von Angesicht zu Angesicht

• Funktionierende Software als Fortschrittsmaß

• Nachhaltige Entwicklung

• Technische Exzellenz und gutes Design

• Einfachheit

• Selbstorganisierte Teams

• Reflexion

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 9

Extreme Programming

• Sit Together

• Whole Team

• Informative Workspace

• Energized Work

• Pair Programming

• Stories

• Weekly Cycle

• Quarterly Cycle

• Slack

• Ten-Minute Build

• Continuous Integration

• Test-First Programming

• Incremental Design

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 10

Scrum

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 11

http://scrum-master.de/Was_ist_Scrum/Scrum_auf_einer_Seite_erklaert

Fazit zum Vorkommen in agiler SE

• Continuous Integration enthalten

• Continuous Deployment häufig nicht

• Innovation Experiment Systems nicht genannt

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 12

Schritt zu agiler Organisation

• Vorteile• Kürzere Entwicklungszyklen

• Verbesserte Reaktion auf Änderungen von Kundenanforderungen

• Hürden• Externe Abhängigkeiten auf (nicht-agile) Teams und Zulieferer

• Kontrolle durch Management

• Komplexe Unternehmen

• Schlüsselinitiativen

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 13

Ökosystem Neuverhandlung von Zulieferer-Verträgen, Zustimmung aller Interessengruppen, Angleichung der Prozesse

Unternehmen Zusage des Managements, Bewusstsein für feature-orienterteEntwicklung schaffen, Teamleiter statt Projektmanagern

Architektur Architekten-Unterstützung in jedem Team, Feature-Teams

Ausführung Selbstgesteuerte Teambildung

Schritt zu Continuous Integration

• Vorteile• Zu jeder Zeit ein (potentiell) auslieferbares Produkt

• Qualitätssteigerung

• Hürden• Fehlende Testautomatisierung

• Fehlende Disziplin in Bezug auf Testfälle und Werkzeuge

• Notwendigkeit des Erlernens neuer Technologien und Werkzeuge

• Schlüsselinitiativen

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 14

Ökosystem Einbeziehung von externen Zulieferern

Unternehmen Abkehr von Meilensteinen, regelmäßige Auslieferungen

Architektur Modularisierung der Software

Ausführung TDD, Testautomatisierung, Angleichung der Prozesse „Validierung“ und „Verifikation“, Vermeidung von Branching

Schritt zu Continuous Deployment

• Vorteile• Günstigere und schnellere Entwicklung durch früheres Feedback

• Hürden• Fehlendes Wissen über Qualität des Gesamtproduktes

• Seltsames Gefühl aufgrund weicherer Anforderungen(agil arbeiten vs. regelmäßig ausliefern)

• Schlüsselinitiativen

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 15

Ökosystem Führende Kunden ausmachen, mit denen angefangen wird

Unternehmen Anpassung des Geschäftsmodells

Architektur Roll-back-Mechanismen, Auslieferung einzelner Komponenten

Ausführung Angleichung des „Release“ Prozesses

Schritt zu Innovation Experiment System

• Vorteile• Schnelles Feedback zu alternativen Lösungen

• Hürden• Widerstand gegen Auslieferung von „experimentellen Features“

(Entwickler als auch Kunden)

• Schlüsselinitiativen

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 16

Ökosystem Einbeziehung des Kunden, schnelle Antworten möglich

Unternehmen Geschäfts- und Preismodelle unterstützen Änderungen in kurzen Zyklen auf Basis von Kundennutzungsdaten

Architektur Infrastruktur ermöglicht Anpassungen zur Laufzeit, Architektur mit Datenerhebungsmechanismen

Ausführung „Anforderung“, „Forschung & Entwicklung“, „Validierung“ und „Release“ müssen alle zusammenarbeiten

Vergleich mit Studie zur agilen SE

• Minna Pikkarainen, et al. "Strengths and barriers behind the successful agile deployment—insights from the three software intensive companies in Finland." Empirical software engineering 17.6 (2012): 675-702.

• Mehrfache Fallstudie in 3 Unternehmen mit Schwerpunkt Scrum

• 5 Pilotprojekte

• 40 Halbstrukturierte Interviews (mit mind. 1 Stunde Dauer), 5 Post-mortem Meetings, 12 Verbesserungsworkshops

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 17

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 18

Kategorie Hürden

Fall 1 Fall 2 Fall 3

Architektur --

Kundenbedürfnisse -

Technische Umgebung -- --

Kommunikation und Mitarbeit +

Schätzung und Planung - --

Anforderungsmanagement -- - -

Projektüberwachung -

Testen

Domänenwissen -

Lernen

Verbesserungstechniken

Selbstorganisierte Teams +

UI Prozess

Rollen und Verantwortlichkeiten

Dokumentation

Versionskontrolle -

Häufige Hürden I

• Architektur• Unflexibel mit festgefahrenen technischen Standards

• Technische Umgebung• Einsatz von Werkzeugen für Continuous Integration• Schwierige Synchronisation zwischen HW- und SW-Entwicklung in

iterativen Zyklen

• Testen• Fehlende automatische Tests

• Kundenbedürfnisse• Kunden kaufen lieber ein Produkt, das sofort alle Anforderungen

abdeckt

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 19

Häufige Hürden II

• Wissen• Fehlendes Wissen über agile Methoden bei Entwicklern und

Managern

• Fehlendes Wissen über Anwendungsdomäne

• Schätzung und Planung• Ungünstige Ressourcenzuteilung

• Entwickler in mehreren Projekten

• Zu große, komplexe Projekte

• Unklare Verantwortlichkeiten

• Traditionelle Pläne immer noch vorhanden• Prioritäten missverständlich

• Aufwandschätzung anfangs schwierig

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 20

Zusammenfassung

• Wichtigste Vorteile und Hürden beim Übergang hin zu Continuous Deployment bzw. Innovation Experiment Systems vorgestellt

• Schlüsselinitiativen für die Bereiche „Ökosystem“, „Geschäftsmodell“, „Architektur“ und „Ausführung“ präsentiert

• Zusammen bilden diese ein Framework, das in den betrachteten Unternehmen erfolgreich zum Erreichen der einzelnen Stufen führte, welches jedoch auch noch erweitert werden sollte

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 21

Fazit

• Das Erreichen der Stufen „Continuous Deployment“ bzw. „Innovation Experiment Systems“ gelingt nur, wenn• alle Beteiligten hinter diesem Ziel stehen

• ihnen ausreichend Zeit eingeräumt wird, um neue Konzepte, Technologien und Werkzeuge zu verstehen

• und sich jeder selbst für den Projekterfolg verantwortlich fühlt

• Langfristig• erleichtert dies die Zusammenarbeit von Softwareunternehmen

und ihren Kunden

• können die neuen Errungenschaften zu einer Wertsteigerung von Software und einer Kosten-/Zeitersparnis in den Projekten führen

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 22

Vielen Dankfür Ihre Aufmerksamkeit

Weitere Literatur

• Helena Holmström Olsson, Hiva Alahyari, and Jan Bosch. "Climbing the" Stairway to Heaven“ - A Mulitiple-Case Study Exploring Barriers in the Transition from Agile Development towards Continuous Deployment of Software." Software Engineering and Advanced Applications (SEAA), 2012 38th EUROMICRO Conference on. IEEE, 2012.

• Pilar Rodriguez, et al. "Continuous deployment of software intensive products and services: A systematic mapping study." Journal of Systems and Software 123 (2017): 263-291.

• Jan Bosch. "Building products as innovation experiment systems." International Conference of Software Business. Springer Berlin Heidelberg, 2012.

Von agiler Softwareentwicklung hin zu Continuous Deployment – Patrick Hobusch 24