Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs....

59
Projektmanagement und Softwareentwicklung Nina Stodolka, WS2017/2018

Transcript of Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs....

Page 1: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Projektmanagement undSoftwareentwicklung

Nina Stodolka, WS2017/2018

Page 2: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Wiederholung

2Projektmanagement und Softwareentwicklung27.11.2017

Problemanalyse und Anforderungsdefinition

Modellierung und fachlicher Entwurf

Softwaretechnischer Entwurf

Programmierung und Modultest

Systemintegration und Systemtest

Installation, Betrieb und Weiterentwicklung

Quelle: eigene Darstellung in Anlehnung an: Gumm, Heinz Peter, Sommer, Manfred: Einführung in die Informatik

Quelle: https://de.wikipedia.org/wiki/Datei:V-Modell.svg

Page 3: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Wiederholung

3Projektmanagement und Softwareentwicklung27.11.2017

Quelle: https://www.it-agile.de/wissen/einstieg-und-ueberblick/kanban/

Page 4: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Überblick

4Projektmanagement und Softwareentwicklung27.11.2017

•Anforderungserhebung, Lastenheft, Pflichtenheft, Aufwandsschätzung, VorgehensmodellPlanung

•Mock-Up, Systemanalyse, Strukturierte Analyse, Objektorientiert AnalyseAnalyse

•Entwurfsmuster, ArchitekturEntwurf

Programmierung

•Modultests, Integrationstests, Systemtests, AkzeptanztestsValidierung und Verifikation

Anforderungsmanagement

•Risikomanagement, Projektplanung, ProjektsteuerungProjektmanagement

•CMM, SPICE, Incidentmanagement, Metriken, EgonomieQualitätsmanagement

•Versionsverwaltung, Änderungsmanagement, Releasemanagement, ITILKonfigurationsmanagement

Softwareeinführung

•Technische Dokumentation, Softwaredokumentation, BedienungsanleitungDokumentation

Page 5: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Agenda Vorgehensmodelle

Scrum (Ergänzung)

Extreme Programming

RUP

Konfigurationsmanagement Continous Integration

Versionsverwaltung

Git und Github

Workflows / Branching Modelle

Build automation mit Travis CI527.11.2017 Projektmanagement und Softwareentwicklung

Page 6: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Scrum

6Projektmanagement und Softwareentwicklung27.11.2017

Rollen

Team Liefert das Produkt

Verantwortlich für die Qualität

Erarbeitet mit den Anforderern (Kunden und Anwendern) die Product Backlog Items, analysiert, entwickelt und testet diese

Verpflichtet sich freiwillig aus Sprint-Ziele (max. schaffbares)

Page 7: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Scrum

7Projektmanagement und Softwareentwicklung27.11.2017

Rollen

Team

Hat Autorität zu tun, was notwendig ist

Muss sich an Rahmenbedingungen der Organisation und des Projekts halten

Jedes Teammitglied hat die Verantwortung & ist für das Gesamte verantwortlich

Arbeitet parallel am Sprint und auf

Page 8: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Scrum

8Projektmanagement und Softwareentwicklung27.11.2017

Rollen

Product Owner

Sicht des Business

Legt Eigenschaften des Produkts fest

Bewertet Endergebnis

Priorisiert das Product Backlog

Page 9: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Scrum

9Projektmanagement und Softwareentwicklung27.11.2017

Rollen

Scrum Master

Treibt den Prozess

Sorgt für Prozesseinhaltung

Schützt das Team vor

Räumt Blockaden aus dem Weg (-> )

Page 10: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Releasemanagement

10Projektmanagement und Softwareentwicklung27.11.2017

Feature Request A

Code Freeze & Tests

Launch Sprint 1 to production

Sprint 1

Sign off Business Specs

week 1

Sprint 2

Implementation

Implementation Feature A,B

Sprint Planning

Test ReleasesAcceptance OBM & Customer

Rough estimation Feature Request B

Sign off Business Specs

Rough estimation

Feature Request C

Sign off Business Specs

Rough estimation

week 2 week 3 week 4 week 5 week 6 week 7 week 8

Code Freeze & Tests

Test ReleasesAcceptance OBM & Customer

Launch Sprint 2 to production

Quelle: Intershop Communications AG, Full Service

Page 11: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

XP Extreme Programming

11Projektmanagement und Softwareentwicklung27.11.2017

Hauptaugenmerk auf Programmierung

stellt die Teamarbeit, Offenheit und stete Kommunikation zwischen allen Beteiligten in den Vordergrund

Iterative Entwicklung

Nach jeder Iteration muss eine lauffähige Software vorliegen

Große Rolle von Tests

Page 12: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

XP Extreme Programming

12Projektmanagement und Softwareentwicklung27.11.2017

Quelle: https://de.wikipedia.org/wiki/Extreme_Programming

Page 13: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

XP Extreme Programming

13Projektmanagement und Softwareentwicklung27.11.2017

Quelle: https://de.wikipedia.org/wiki/Extreme_Programming

Page 14: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

XP Extreme Programming

14Projektmanagement und Softwareentwicklung27.11.2017

Quelle: https://de.wikipedia.org/wiki/Extreme_Programming

Page 15: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

XP Extreme Programming

15Projektmanagement und Softwareentwicklung27.11.2017

Praktiken

Pair-Programming

Einer codiert (Driver)

Einer denkt mit (Partner)

Regelmäßiger Tausch ->

Kollektives Eigentum

Aktivitäten an Team verteilen

Permanente Integration

Continous Integration

Höhere Routine

Früheres Erkennen von Fehlern

Page 16: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

XP Extreme Programming

16Projektmanagement und Softwareentwicklung27.11.2017

Praktiken

Testgetriebene Entwicklung bzw. Permanentes Testen

repräsentative Tests werden vor der Implementierung einer Funktionalität erstellt ->

Refactoring

ständige Architektur-, Design- und Code-Verbesserungen

stetiger Review

Coding-Standards

Ermöglicht wechselnden Einsatz der Entwickler

Page 17: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

XP Extreme Programming

17Projektmanagement und Softwareentwicklung27.11.2017

Vorteile

Einwirkung des Kunden/Zusammenarbeit mit dem Kunden -> Kundennahe Entwicklung

Testorientiert (viele und möglichst frühe Tests) ->

Mitarbeiterzufriedenheit / kooperatives Lernen

Page 18: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

XP Extreme Programming

18Projektmanagement und Softwareentwicklung27.11.2017

Nachteile

Das

Einzelne Methoden nicht einsetzen führt zu einem massiven Rückgang der Wirksamkeit des Gesamtansatzes

Bewegliche Anforderungen

„Spätere Änderungen werden nicht teurer“ Annahme

Der ideale Kunde

Experimentierfreundig

Einsatz eigener Ressourcen

Kunde-vor-Ort

Fehlende Eignung für Festpreisprojekte

Page 19: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

XP Extreme Programming

19Projektmanagement und Softwareentwicklung27.11.2017

Nachteile

Der ideale

Wenig geeignet für unerfahrene Programmierer

Jeder darf den Code aller modifizieren

Hohe Disziplin und Disziplinlosigkeit wird abverlangt

nicht auf beliebige Teams anwendbar

Auslassen von Spezifikation und Dokumentation

Einsatz in verteilten Umgebungen schwierig

Page 20: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

RUP

20Projektmanagement und Softwareentwicklung27.11.2017

Kommerziell

Vorgehensmodell und Softwareentwicklungsprogramme für risiko-getriebenen, use-case basierten, architektur-zentrierten, iterativen/inkrementeller Softwareentwicklungsprozess

Nutzt UML (Unified Modeling Language) als Notationssprache

Rollen, Aktivitäten, Artefakte und Prozess-Workflows

Komplexe Projektstrukur

Inception (Anfang)

Elaboration (Vertiefung)

Construkction (Konstruktion)

Transition (Inbetriebnahme)

Page 21: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

RUP

21Projektmanagement und Softwareentwicklung27.11.2017

Quelle. https://www.ibm.com/developerworks/rational/library/4763.html

Page 22: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Gegenüberstellung klassisch vs. agil

22Projektmanagement und Softwareentwicklung27.11.2017

Klassisch sehr bürokratisch Dokumentengetrieben kleinteilig vorgegeben starr Klar formulierte Ziele Abgegrenzte Phasen, insbesondere

erst Definition, dann Umsetzung Änderungen nicht geplant ->

Änderungen schwierig unabhängige Abarbeitung in

Fachbereichen teilweise starkes Silo Denken PM extrem wichtig

Agil Annahme: nicht durchgängig planbar,

komplex -> Ziele, Umfeld, Erwartungen flexibel

kurze Zeitabstände enge Zusammenarbeit zwischen

Product Owner und Team Veränderungen möglich interdisziplinäres Team PM weniger wichtig Demokratie und viel Verantwortung im

Team

Es gibt auch hybride Ansätze, z.B. Einbettung einer beliebigen Anzahl an SCRUM Iterationen in eine PRINCE Managementphase.

Page 23: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Continous Integration Im Rahmen der Agilen Softwareentwicklung Lieferung von

funktionsfähiger Software in immer kürzeren Abständen

Agile Entwicklung (Scrum, Kanban, Extreme Programming)

Automatisierung von Prozessen (Tests, Deployments, Builds) ->

Beispiel E-Commerce Software: Wunsch nach sofortiger Verfügbarkeit von Änderungen

Continous Integration ist ein Softwarentwicklungsmethode, die durch hohe Integrationsfrequenz und angeschlossene Automatisierung die schnelle Auslieferung unterstützt

2327.11.2017 Projektmanagement und Softwareentwicklung

Page 24: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Continous Integration Ziele:

Steigerung der Qualität der Software

Integrations-Probleme vermeiden

Beschreibt den Prozess des fortlaufenden Zusammenfügens von Komponenten zu einer Anwendung

Oftmals nicht nur Neubau des Systems, sondern auch Durchführung automatisierter Tests und Messung via Metriken

Automatisch ausgelöst durch Einchecken in die

Einfache Variante: nightly Build

2427.11.2017 Projektmanagement und Softwareentwicklung

Page 25: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

CI - Grundsätze Gemeinsame Codebasis

Existenz einer Versionsverwaltung (z.B. )(sinnvolle Integration innerhalb einer Arbeitsgruppe)

Automatisierte ÜbersetzungVor Integration: Durchlaufen von definierten Tests, bspw. statische Code-Überprüfungen -> automatisierte Übersetzung notwendig

Einsatz separater Test-Umgebungen wird empfohlen, um Unabhängigkeit der Testergebnisse von Arbeitsumgebungen sicherzustellen

Kontinuierliche Test-EntwicklungJede Änderung sollte möglichst zeitnah mit einem dazugehörigen Test entwickelt werden

2527.11.2017 Projektmanagement und Softwareentwicklung

Page 26: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

CI - Grundsätze Häufige Integration

So oft wie möglich integrieren

Risikominimierung fehlgeschlagener Integrationen

Sicherung des Entwicklungsstandes

Bspw.

Integration in den Hauptbranch

Änderungen in Hauptbranch integrieren, dort startet automatischer Build- und Testzyklus (kontinuierlicher Integrationsbuild)

Kurze Testzyklen

Geringer Testzyklus vor Integration

Bsp.

2627.11.2017 Projektmanagement und Softwareentwicklung

Page 27: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

CI - Grundsätze Gespiegelte Produktionsumgebung

Änderungen sollten in einem Abbild der Produktionsumgebung getestet werden

Einfacher Zugriff

Auch für Nicht-Entwickler (z.B. als Testsystem für Tester, Zahlen für QA, Dokumentation oder Pakete für Release Manager)

Automatisiertes Reporting

Ergebnisse der Integration sollten leicht verfügbar sein (wann, welche Änderungen, welche Qualität)

Automatisierte Verteilung

Leichte Überführung auf

2727.11.2017 Projektmanagement und Softwareentwicklung

Page 28: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

CI - Vorteile Steigerung der Software-Qualität durch:

Frühzeitiges Erkennen von Integrations-Problemen (fixen)

Frühe Warnungen bei nicht zusammenpassenden Bausteinen

Sofortige entdecken Fehler zeitnah

Ständige Verfügbarkeit eines lauffähigen Standes (Demo, Test, Vertrieb)

Feedback-Prozess führt zu einem verantwortlicheren Umgang (positiver „Erziehungseffekt“)

2827.11.2017 Projektmanagement und Softwareentwicklung

Page 29: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Versionsverwaltungssysteme Versionskontrollsysteme (SCM) werden gebraucht um

Datenstände zu speichern und zu protokollieren

Ältere Datenstände wiederherstellen zu können

Zugriffsrechte auf Dateien zu regeln

Alle zu verwaltenden Dateien liegen im Repository

Sobald Änderungen vorgenommen werden (und per Commit an das Repository übertragen werden) legt das SCM eine neue Version mit eindeutiger Kennzeichnung an (Revision)

Unterscheidung zwischen zentralen und dezentralen SCMs

2927.11.2017 Projektmanagement und Softwareentwicklung

Page 30: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Versionsverwaltungssysteme Zentrale Versionsverwaltungssysteme

Beispiele:

Ein Repository auf einem zentralen Server

Lokale Kopie aller Dateien des Repositorys

Checkout -> Snapshot des repositorys -> Working Copies

Änderungen -> Commit

Abgleich Revisionsnummer mit Working Copy

Falls gleich: Änderungen übernehmen, neue Version erstellen

Falls nein: Mergen oder Hinweis zwecks Merge

30

Quelle: Preißel, René / Stachmann, BjØrn (4. Auflage 2017): Git

27.11.2017 Projektmanagement und Softwareentwicklung

Page 31: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Versionsverwaltungssysteme Dezentrale

Versionsverwaltungssysteme

Beispiele:

Jeder Benutzer unterhält eigenes Repository

Revisionen können anhand laufender Nummern nicht mehr identifiziert werden

31

Quelle: Preißel, René / Stachmann, BjØrn (4. Auflage 2017): Git

27.11.2017 Projektmanagement und Softwareentwicklung

Page 32: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Versionsverwaltungssysteme Zusammenarbeit (Beispiel A möchte bei B mitentwickeln)

B macht Repository öffentlich (Hosting)

Repository von B clonen -> A hat eigenes unabhängiges Repository

Um auf dem gleichen Stand zu bleiben Remote Update: Regelmäßiges von dessen Repository

Änderungen von A an B übertragen:

Veröffentlichung eigenes Repository und bittet um Pull ODER

Remote Commit: Rechte von B bekommen, direkt in dessen Repository zu pushen ODER

Versand von

3227.11.2017 Projektmanagement und Softwareentwicklung

Page 33: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Vergleich

33

Zentral Dezentral

Repository Ein zentrales Repository, von dem Arbeitskopien erzeugt werden

Lokal vorliegende eigene Repositorys

History Historische Versionen der Dateien liegen auf Server; Änderungen sind nur auf Server nachvollziehbar

Änderungen sind auch lokal ohne Verbindung zum Server nachvollziehbar

Netzwerkan-bindung

Bei jedem Zugriff notwendig Nur zur Synchronisation notwendig

Performance & Offline-Fähigkeit

Gering, da für Operationen Netzwerkanbindung erforderlich

Hoch, da fast alle Operationen lokal durchgeführt werden;Merge kann weitgehend automatisch erfolgen

Backup Zentrale Datenspeicherung auf Server -> separates Backup notwendig

Serverausfall: Auf jedem Rechner lokale Kopien mit kompletter History

Flexibilität des Entwicklungs-prozesses

Anlegen spezieller repositorysmöglich. Änderungen via Push freigeben

Quelle: Eigene Darstellung27.11.2017 Projektmanagement und Softwareentwicklung

Page 34: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Git Freie Software (GNU GPLv2 Lizenz) zur verteilten Versionsverwaltung

Initiiert durch Linus Torvalds (Linux Kernel)

Ursprüngliche Ziele:

Versionsverwaltung zur Linux-Entwicklung

Unterstützung verteilter, BitKeeper-ähnlicher Arbeitsabläufe

Sehr hohe Sicherheit gegen sowohl unbeabsichtigte als auch böswillige Verfälschung

Bedeutet umgangssprachlich „Blödmann“

34

Quelle: https://git-scm.com/

27.11.2017 Projektmanagement und Softwareentwicklung

Page 35: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Git - Besonderheiten Nicht-Lineare Entwicklung

Branching und Merging sind integraler Bestandteil (Feature-Based-Workflow)

Flexibilität

Branches sind performant integriert

Sehr große und effiziente Entwicklungsstrukturen (Git, Linux) realisierbar (jedes Feature bzw. jeder Entwickler hat einen Branch/Repository und der Maintainer übernimmt Commits)

3527.11.2017 Projektmanagement und Softwareentwicklung

Page 36: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Git - Besonderheiten Kein zentraler Server (siehe SCM)

Datentransfer zwischen Repositorys auf verschiedene Wege (Protokolle, Patches, Review-Systeme, Push & Merge)

Kryptographische Sicherheit der Projektgeschichte (durch Hashs)

Speichersystem und Dateiversionierung

Gesamtes Verzeichnis weist gleiche auf

Wird eine Datei in einem Commit nicht geändert, ändert sich Prüfsumme nicht und sie muss nicht nochmals gespeichert werden.

Säubern des Repositorys (Daten gelöschter und zurückgenommener Aktionen und Branches bleiben bis zur expliziten Löschung vorhanden)

3627.11.2017 Projektmanagement und Softwareentwicklung

Page 37: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Git - Besonderheiten Interoperabilität (Hilfsprogramme für Interoperabilität zu anderen

SCMs)

Web-Interface ( )

Staging Bereich (auch genannt Stage oder Index)

Zwischenbereich, indem Dateien gesammelt werden

Nicht alle Dateien aus dem Staging müssen commited werden

37

Quelle: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics

27.11.2017 Projektmanagement und Softwareentwicklung

Page 38: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Git - Nachteile Hohe Komplexität

dezentrale Versionsverwaltung mit mehr Verantwortung für Entwickler

Viele Befehle und Parameter

Komplizierter Umgang mit Submodulen (Submodule sind eigenständige Repositorys, die in ein anderes Repository eingebunden werden)

Ressourcenverbrauch bei großen binären Dateien

können nur vollständig verwendet werden

Mäßige grafische Werkzeuge für die Historienauswertung

3827.11.2017 Projektmanagement und Softwareentwicklung

Page 39: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

GitHub

39

Webbasierter Online-Dienst, der Software-Entwicklungsprojekte auf seinen Servern bereitstellt (

)

Unterstützung im Entwicklungsworkflow

Code Hosting

Seamless code review

Quelle: https://github.com/logos

Quelle: https://github.com/27.11.2017 Projektmanagement und Softwareentwicklung

Page 40: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

GitHub

40

Projektmanagement Features (Issuelists, Scrumboards, grafische Darstellung des Entwicklungsprozesses,…)

Quelle: https://github.com/logos

Quelle: https://github.com/

27.11.2017 Projektmanagement und Softwareentwicklung

Page 41: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

GitHub

41

Integrationen: z.B.:

Slack (Teammessaging)

ZenHub (Project Management)

Travis CI (Testing and Deployment)

Atom (Editor)

CircleCI (Build Automation, Test Automation)

Codeship (Continous Integration with Docker support)

Code Climate (Automated Code Review)

Gitter (Collaboration)

Waffle (Project Managment)

Jira, AWS, Buddy, SideCI, Trello, PhraseApp, Bugsnag, StackStorm, Google Stackdriver, Docker Cloud

Quelle: https://github.com/logos

Quelle: https://github.com/

27.11.2017 Projektmanagement und Softwareentwicklung

Page 42: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

GitHub

42

Großteil der Features von Git ohne Kommandozeile nutzbar

Dokumentation und

Community Management

Quelle: https://github.com/logos

Quelle: https://github.com/

27.11.2017 Projektmanagement und Softwareentwicklung

Page 43: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Workflows / Branching Modelle Gründe für Branches

Mehrere Entwickler arbeiten unabhängig voneinander an einem Projekt

Bugfixes für ältere Versionen müssen erstellt und ausgeliefert werden

Parallele Entwicklung mehrerer Features (spätere Zusammenführung)

Stabilisierungsphase für Release,

4327.11.2017 Projektmanagement und Softwareentwicklung

Page 44: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Strategien - Branching Modelle

44

Quelle: https://git-scm.com/about/distributed

27.11.2017 Projektmanagement und Softwareentwicklung

Page 45: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Strategien - Branching Modelle

45

Quelle: https://git-scm.com/about/distributed

27.11.2017 Projektmanagement und Softwareentwicklung

Page 46: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Strategien - Branching Modelle

46Quelle: https://git-scm.com/about/distributed

27.11.2017 Projektmanagement und Softwareentwicklung

Page 47: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Workflows / Branching Modelle Mit Feature-Branches entwickeln

Rückkehr zu altem, lauffähigen Stand möglich

Rückrollen einzelner

Builds und Tests des Features vor Merge in master-Branch durchführbar

47

Quelle: https://de.atlassian.com/git/tutorials/comparing-workflows#feature-branch-workflow

27.11.2017 Projektmanagement und Softwareentwicklung

Page 48: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Workflows / Branching Modelle Periodisch Releases

durchführen

Paralleles Arbeiten am neuen Release

Abbildung von Testphasen

48

Quelle: https://de.atlassian.com/git/tutorials/comparing-workflows#feature-branch-workflow

27.11.2017 Projektmanagement und Softwareentwicklung

Page 49: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Build Automation Automatisierte Erstellung von Builds (Dateien werden zu

einem finalen Softwareprodukt zusammengepackt)

Besteht aus Compiling

Packing/Deploying

automatische Tests

Lokal (Make, Rake, MS build, Ant, Gradle)oder Server basiert (CruiseControl, Jenkins, )

Typen: On-demand automation

Scheduled automation

Triggered automation

4927.11.2017 Projektmanagement und Softwareentwicklung

Page 50: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Build automation mit Travis CI

Freie Open-Source-Software für CI (kostenfrei für OpenSource Projekte)

Zum Testen und Erstellen von Projekten, die auf GitHub, Bitbucket und Ähnlichem veröffentlicht wurden

Builds erstellen und testen

Lokal (Docker) oder cloud-basiert (Standard)

50

Quelle: https://travis-ci.com/logo

27.11.2017 Projektmanagement und Softwareentwicklung

Page 51: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Build automation mit Travis CI Features:

Schnelles Setup (Login mit GitHub Account, Konfiguration Travis, Push toGitHub)

weitere Anbindungen zu Heroku, AWS CodeDeploy, OpenShift

Testüberwachung im laufenden Test möglich

„clean“ VM für jeden Build

Vorinstallierte Testumgebung

Parallele Tests möglich

Linux, Mac und iOS Unterstützung (Windows Appveyor)

Beta-Features Auto-Cancellation (nur den letzten Build bauen)

Cron Jobs (unabhängig von Commits)

Using Trusty

5127.11.2017 Projektmanagement und Softwareentwicklung

Page 52: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Build automation mit Travis CI Funktionsweise

„Triggered automation“oder bei Cron Job „Scheduled automation“

Konfiguration über ein .travis.yml File, das in das Root Verzeichnis des Repositorys gelegt wird

Darin enthalten sind Details

Zur verwendeten Programmiersprache

Zu Befehlen oder Skripten, die vor dem Build ausgeführt werden sollen (beispielsweise Installation oder Kopieren der Projektabhängigkeiten)

Der gewünschten Build- und Testumgebung

Zu Emails, Campfire oder IRC Rooms, die bei Fehlern zu benachrichtigen sind

5227.11.2017 Projektmanagement und Softwareentwicklung

Page 53: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Erfahrungen aus der Praxis - CI Vernachlässigung Testprozesse

Spiegelung Produktionsumgebung

Automatisierte Verteilung / einfacher Zugriff

Herausforderung Verantwortungsübernahme für Build-Qualität

Automatisierung von Builds: Freigabe von Builds in einzelnen Schritten (für Testsystem, Produktionsumgebung)

Abstimmung & Kontrolle Termine

Wer darf wann wo etwas einchecken (SVN)

Herausforderung viele Umgebungen & ungleiche Zyklen -> Ungenauigkeiten Check-In

5327.11.2017 Projektmanagement und Softwareentwicklung

Page 54: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Quellen

54Projektmanagement und Softwareentwicklung27.11.2017

Balzert, Helmut: Lehrbuch der Software-Technik, ISBN: 3-8274-0065-1

https://de.wikipedia.org/wiki/Softwaretechnik

https://www.ibm.com/developerworks/rational/library/4763.html

Gloger, Boris: Scrum – Produkte zuverlässig und schnell entwickeln, ISBN: 978-3-446-41913-1

https://www.it-agile.de/wissen/einstieg-und-ueberblick/kanban/

https://de.wikipedia.org/wiki/Testgetriebene_Entwicklung

http://agiles-projektmanagement.org/scrum-vorteile-nachteile/

https://de.wikipedia.org/wiki/Extreme_Programming

Page 55: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Quellen 1 & 1 Digital Guide: Git vs. SVN – Von verteilter und zentralisierter Versionsverwaltung, URL:

https://hosting.1und1.de/digitalguide/websites/web-entwicklung/git-vs-svn-versionsverwaltung-im-vergleich/ vom 15.04.2017 Atlassian: Comparing Workflows, URL: https://de.atlassian.com/git/tutorials/comparing-workflows vom 15.04.2017 Chacon, Scott / Straub, Ben (2. Auflage 2014): Pro Git, Apress, URL: https://git-scm.com/book/en/v2 vom 15.04.2017 Dudler, Roger: git – Der einfach Einstieg, URL: https://rogerdudler.github.io/git-guide/index.de.html vom 15.04.2017 Fowler, Martin: Continuous Integration, URL: https://www.martinfowler.com/articles/continuousIntegration.html vom 15.04.2017 Git: Homepage, URL: https://git-scm.com vom 15.04.2017 GitHub Inc.: Homepage, URL: https://github.com vom 15.04.2017 Preißel, René / Stachmann, BjØrn (4. Auflage 2017): Git – Dezentrale Versionsverwaltung im Team – Grundlagen und Workflows,

Heidelberg Software & Support Media GmbH: CI-Server im Vergleich: Jenkins vs. CruiseControl vs. Travis https://jaxenter.de/ci-server-im-

vergleich-jenkins-vs-cruisecontrol-vs-travis-38081 vom 17.04.2017 Stückler, Moritz: Was ist eigentlich dieses GitHub? , URL: http://t3n.de/news/eigentlich-github-472886/ vom 15.04.2017 Travis CI GmbH: Homepage, URL: https://travis-ci.com/ vom 15.04.2017 Von dem Berge, Jana (2009): Auswirkungen der Benutzung von zentralen und dezentralen Versionsverwaltungssystemen In Open

Source Projekten, URL: http://www.inf.fu-berlin.de/inst/ag-se/theses/Berge09-versionsverwaltung-OSS.pdf vom 15.04.2017 Wikimedia Foundation Inc.: Build automation, URL: https://en.wikipedia.org/wiki/Build_automation vom 17.04.2017 Wikimedia Foundation Inc.: Continuous integration, URL: https://en.wikipedia.org/wiki/Continuous_integration vom 17.04.2017 Wikimedia Foundation Inc.: Git, URL: https://de.wikipedia.org/wiki/Git vom 11.04.2017 Wikimedia Foundation Inc.: GitHub, URL: https://de.wikipedia.org/wiki/GitHub vom 15.04.2017 Wikimedia Foundation Inc.: GNU General Public License, URL: https://de.wikipedia.org/wiki/GNU_General_Public_License vom

15.04.2017 Wikimedia Foundation Inc.: Kontinuierliche Integration, URL: https://de.wikipedia.org/wiki/Kontinuierliche_Integration vom

15.04.2017 Wikimedia Foundation Inc.: Travis CI, URL: https://de.wikipedia.org/wiki/Travis_CI vom 17.04.2017 Wikimedia Foundation Inc.: Versionsverwaltung, URL: https://de.wikipedia.org/wiki/Versionsverwaltung vom 17.04.2017

5527.11.2017 Projektmanagement und Softwareentwicklung

Page 56: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Git - Befehle

56

ein neues Repository anlegen → git init

ein lokales Repository kopieren → git clone /path/to/repository

ein externes Repository kopieren → git clone username@host:/path/to/repository

hinzufügen von Änderungen ins Staging→ git add <filename>

hinzufügen aller Änderungen ins Stag. → git add *

Änderungen committen → git commit –m „Commit message“

Message sollte kurz und prägnant sein

senden der Änderungen zum ext. Rep. → git push origin master

lokales Repository updaten → git pull

27.11.2017 Projektmanagement und Softwareentwicklung

Page 57: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Git - Befehle

57

alle Änderungen seit letztem

commit anzeigen → git status

Quelle: https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository

27.11.2017 Projektmanagement und Softwareentwicklung

Page 58: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Git - Befehle

58

neuen Branch anlegen & wechseln → git checkout –b <branch>

zum Master zurückwechseln → git checkout master

Branch wieder löschen → git branch –d <branch>

Branch ins Repository hochladen

(verfügbar für andere machen) → git push origin <branch>

zusammenführen zweier Branches → git merge <branch>

Unterschiede anzeigen lassen → git diff <source_branch> <target_branch>

taggen → git tag <tag> <commitID>

Commit Ids erhalten → git log

lokale Änderungen auf letzten Stand

des Repositorys zurücksetzen → git checkout -- <filename>

27.11.2017 Projektmanagement und Softwareentwicklung

Page 59: Projektmanagement und Softwareentwicklung · 2018. 11. 23. · Gegenüberstellung klassisch vs. agil 27.11.2017 Projektmanagement und Softwareentwicklung 22 Klassisch sehr bürokratisch

Workflows / Branching Modelle Einfacher Workflow für Git:

Hinweise zum Committen

Logisch zusammenhängende Änderungen gemeinsam einchecken

Projekt muss nach jedem Commit kompilierbar sein

Projekt sollte nach jedem Commit lauffähig sein

59

Clone Commit Push Pull Quelle: Eigene Darstellung

27.11.2017 Projektmanagement und Softwareentwicklung