Softwareentwicklung erfordert den Einsatz von unterschiedlichen Methoden und Tools, welche die verschiedenen Stufen der System-Entwicklung unterstützen.

Das Konzept von Branching und Merging ist in der heutigen Herstellung von Software nicht mehr wegzudenken.

Die Methode ermöglicht die parallele Entwicklung von Funktionalitäten und eröffnet damit Entwickler-Teams völlig neue Chancen im modernen Application Lifecycle Management.

Jedem Team werden zu Beginn die benötigten Ressourcen und Werkzeuge zur Verfügung gestellt, um simultanes Arbeiten zu ermöglichen. Dadurch wird eine bessere Auslastung aller am Projekt beteiligten Teammitglieder erreicht und eine bessere Releaseplanung ermöglicht.

Branching und Merging erweitern damit nicht nur die Möglichkeiten in der Systementwicklung, sondern erhöhen auch die Komplexität. Aus diesem Grund ist es von enormer Wichtigkeit, sich gleich von Anfang an ausführlich Gedanken zu machen wie sich ein zukünftiger, so genannter Branch-Plan gestalten soll.

Bei einem Branch-Plan geht es im Wesentlichen um zwei Punkte. Erstens die Evolution einzelner Artefakte eindeutig zu kennzeichnen und zweitens eine Menge zusammengehöriger Artefakte zu verwalten. Ein Branch (dt. Zweig) ist quasi eine Kopie eines IST-Zustandes von Requirements, Source-Code oder Test-Cases. Bei Source Code lassen sich unterschiedliche Entwicklungszweige separieren, die völlig losgelöst entwickelt werden können. Merging ist genau das gegenteilige Konzept von Branching. Hier werden die separat entwickelten Funktionalitäten in den Hauptzweig wieder zurückgeführt.

Branch

Um noch weiter in die Thematik einzutauchen ist es hilfreich die gängigsten Begriffe zu erläutern:

  • Mainline (Trunk): Stabiles Produkt, aus welchem die einzelnen Branches für die verschiedenen Entwicklerteams ausgeleitet werden.
  • Development Branch: Entwicklung von neue Funktionalitäten sowie Änderungen für die nächste Version
  • Forward Integration: Integration von Arbeitsergebnissen aus der Mainline in den Development Branch
  • Reverse Integration: Integration von Arbeitsergebnissen aus dem Development Branch in die Mainline

Detaillierte Informationen über den Aufbau von guten Entwicklungskonzepten erfahren Sie im nächsten Teil dieser Blogserie.

 

Quellen:

Manfred Broy, Marco Kuhrman: Projektorganisation und Management im Software Engineering, Springer-Verlag, 2013

Richard Hundhausen: Professional Scrum Development with Microsoft® Visual Studio® 2012 – See more at: http://blog.hood-group.com/blog/2014/04/22/anforderungen-im-alm/#sthash.2xWfr95r.dpuf

Donig, Jens: Perfekte Softwareentwicklung – Prozesse, Technologien und Methoden für erfolgreiche Softwareprojekte – Application Lifecycle Management (ALM), Symposion Publishing, Hrsg. Lang, Scherber; Düsseldorf 2013 – See more at: http://blog.hood-group.com/blog/2014/05/13/aenderungsmanagement-prinzipien-im-application-lifecyle-management/#sthash.O0Unyswa.dpuf

Series NavigationDie unterschiedlichen Varianten des Branching und Merging >>