Software Entwicklungsmethoden

Bei PIT Solutions folgen wir der Agile Software Development Methodik, die sich auf eine Gruppe von Softwareentwicklungsmethoden bezieht, die auf ähnlichen Prinzipien basieren.  Nach Wikipedia fördern agile Methoden im Allgemeinen:

  • ein Projektmanagementprozess, der eine häufige Überprüfung und Anpassung fördert
  • eine Führungsphilosophie, die Teamarbeit, Selbstorganisation und Verantwortlichkeit fördert
  • eine Reihe von Best Practices, die eine schnelle Bereitstellung von qualitativ hochwertiger Software ermöglichen
  • ein Geschäftsansatz, der die Entwicklung an den Kundenbedürfnissen und Unternehmenszielen ausrichtet

Es gibt viele agile Methoden, von denen wir finden, dass Extreme Programming und Scrum die beiden Methoden sind, die für uns am besten geeignet sind, Ihnen den maximalen Nutzen zu bieten.  Jede dieser Methoden allein hat inhärente Nachteile. Deshalb haben wir uns für eine hybride Methode entschieden, indem wir die Vorteile beider Verfahren miteinander kombiniert haben.

Unter den verschiedenen agilen Praktiken haben wir die testgetriebene Entwicklung und kontinuierliche Integration eingeführt. Auch hier schränkt eine dieser Praktiken allein die Flexibilität in einigen Situationen der Lösungsentwicklung ein. Wir haben uns also für die Zubereitung entschieden, die für unsere Konkurrenten nur schwer zu schlagen ist.

Agile Methoden

Scrum ist die andere agile Softwareentwicklungsmethode, die wir in Kombination mit Extreme Programming für unsere hybride agile Softwareentwicklungsmethode verwenden. Es handelt sich um einen iterativen inkrementellen Prozess mit klaren Richtlinien, einzuhaltenden Praktiken und vordefinierten Rollen. Die Hauptrollen in Scrum sind: 

  • ScrumMaster - ähnlich einem Projektmanager und verantwortlich für die Pflege der Prozesse
  • Product Owner - vertritt die Stakeholder
  • Team - alle Entwickler

Die Methode hat inkrementelle Abschlussperioden, die Sprints genannt werden und deren Periodizität vom Team festgelegt wird. Jeder Sprint erzeugt einen Zuwachs an nutzbarer Software. Der Product Owner teilt dem Team während der Sprint-Planungsbesprechung mit, welche Artikel sich im Product Backlog befinden. Das Team analysiert und entscheidet, wie viel von diesem Rückstand für den nächsten Sprint gebunden werden kann. Sobald der Sprint abgeschlossen ist, erhalten wir eine brauchbare Erweiterung der Software, die dem Kunden vorgeführt wird.

Wir finden Scrum aufgrund seines empirischen Ansatzes eine vorteilhafte Methode für Sie - in der Annahme, dass die gesamte Lösung, die Sie benötigen, nicht zu Beginn des Projekts selbst vollständig und genau definiert werden kann. Stattdessen liegt der Fokus auf der Maximierung der Fähigkeit unseres Teams, schnell zu liefern und schnell auf Ihre sich ändernden Anforderungen zu reagieren. Wenn das Projekt abgeschlossen ist, bekommen Sie jetzt genau das, was Sie wollten, anstatt das, was Sie zu Beginn des Projekts dachten.

Extreme Programming (oder XP) ist eine agile Methode, die darauf abzielt, die Kosten von Änderungen, die ein unvermeidlicher Aspekt aller Softwareprojekte sind, zu reduzieren. Ihre Anforderungen werden sich ein wenig ändern, auch wenn wir gerade dabei sind, die Lösung für Sie zu entwickeln. Extreme Programming schreibt eine Reihe von Praktiken vor, die eingehalten werden müssen, um laufende Veränderungen reibungslos zu bewältigen und zu integrieren, ohne den Rhythmus des Entwicklungsprozesses zu stören. Indem wir die guten Aspekte von Extreme Programming übernehmen, betonen wir, dass wir verstehen, dass Änderungen in Ihren Anforderungen in jeder Phase der Lösungsentwicklung sehr wichtig sind, um Ihre Geschäftsziele zu erreichen. Diese Methode stellt sicher, dass Ihre Änderungen mit dem geringstmöglichen Kostenaufwand berücksichtigt werden.

Agile Praktiken

Test Driven Development, auch bekannt als TDD, verwendet kurze Entwicklungsiterationen, die auf vorgefertigten Testfällen basieren. Die Testfälle definieren gewünschte Verbesserungen oder neue Funktionen. Jede Iteration führt zu einem Code, der benötigt wird, um die Iterationstests zu bestehen. Die Vorbereitung von Tests vor der Codierung unterstützt schnelle Feedback-Änderungen.

Ein typischer Entwicklungszyklus ist:

  • Schreiben Sie einen Test: Der Programmierer versteht das Feature durch Use Cases und User Stories. So wird der Test auf der Grundlage des Verständnisses der Anforderungen geschrieben, im Gegensatz zu der üblichen Praxis, Unit-Tests nach dem Schreiben des Codes zu schreiben.
  • Prüfen Sie, ob der neue Test fehlschlägt: Der neue Test sollte fehlschlagen, da der Code noch nicht geschrieben wurde, um ihn zu bestehen. Dieser Schritt ist also ein Test für den neuen Test selbst.
  • Schreiben Sie einen Code: Jetzt wird tatsächlich etwas Code geschrieben, damit der neue Test bestanden wird. Der Programmierer konzentriert sich darauf, nur den Code zu schreiben, der benötigt wird, um den Test zu bestehen, was hilft, den Code sauber und einfach zu halten.
  • Führen Sie die automatisierten Tests durch und prüfen Sie, ob sie erfolgreich sind:  Führen Sie alle Testfälle aus. Wenn sie alle bestehen, ist es eine gute Phase, von der aus der Programmierer den letzten Schritt des Entwicklungszyklus beginnen kann.
  • Refactor-Code: Dies ist der letzte Schritt (nicht in der Tabelle), bei dem der Code gegebenenfalls bereinigt wird. Das Entfernen von doppeltem Code ist eine wichtige Massnahme in diesem Schritt. Die Testfälle sollten erneut ausgeführt werden, um sicherzustellen, dass das Refactoring keine bestehende Funktionalität beeinträchtigt.

Bessere Software kann mit TDD schneller erstellt werden. Der Grund ist die Fähigkeit, kleine Schritte zu machen und auch sicherzustellen, dass der gesamte geschriebene Code durch einen Test abgedeckt wird.  Eine Vielzahl von Tests hilft, die Anzahl der Fehler im Code zu begrenzen und diese frühzeitig im Entwicklungszyklus zu erkennen. Damit entfällt das langwierige Debugging zu einem späteren Zeitpunkt. 

Continuous Integration, kurz CI, ist eine Softwareentwicklungspraxis, in der der Schwerpunkt auf häufigen Integrationen liegt - in der Regel integriert jede Person im Team mindestens täglich, was zu mehreren Integrationen pro Tag führt.  Dies steht im Gegensatz zu der traditionellen Methode der Integration, die nur in den Endphasen eines Projekts stattfindet.

Die Überprüfung jeder Integration erfolgt durch einen automatisierten Build (einschliesslich Test), um Integrationsfehler so schnell wie möglich zu erkennen und zu beheben. Wir nutzen die Vorteile von CI, indem wir die Builds schnell halten, sie automatisieren, ein Code-Repository pflegen, etc.

Kontinuierliche Integration hat viele Vorteile:

  • Wenn ein Fehler entdeckt wird oder Unit-Tests fehlschlagen, können Entwickler die Codebasis wieder in einen fehlerfreien Zustand zurückversetzen. Integrationsprobleme werden kontinuierlich erkannt und behoben - keine Fixierung am Vorabend des Liefertermins
  • Schlechter/inkompatibler Code wird frühzeitig erkannt
  • Widersprüchliche Veränderungen werden frühzeitig erkannt
  • Sofortiger Unit-Test aller Änderungen
  • Für Test-, Demo- oder Release-Zwecke steht immer eine "aktuelle" Version zur Verfügung.
  • Entwickler können die Auswirkungen von defektem Code sofort erkennen. So lernen sie, mit kurzen Feedback-Zyklen in inkrementellen Schritten zu arbeiten.

Zurück zu Software Entwicklung Prozess
Zurück zu Prozess

Nach oben scrollen