Projektmanagement: agile Softwareentwicklung
6. Januar 2023Wenn Sie ein Softwareprojekt entwickeln, fragen Sie sich, wie Sie es zu einem erfolgreichen Abschluss bringen können. Zu diesem Zweck wurden verschiedene Software-Projektmanagement-/Leitungsmethoden entwickelt. Jede dieser Methoden hat ihre Vor- und Nachteile und eignet sich daher für unterschiedliche Arten von Projekten und Geschäftsumgebungen. Wenn es um die Entwicklung kundenspezifischer Software in der heutigen dynamischen Zeit geht, haben sich agile Methoden als erfolgreich erwiesen, aber sie unterscheiden sich deutlich von dem, was der Durchschnittsmensch im Leben antrifft. Heutzutage haben agile Entwicklungsmethoden den Bereich der Softwareentwicklung stark erweitert. Das ist im Prinzip nichts Neues. Es liegt aber auch daran, dass viele typischerweise neue Kunden einen Fix-Time-Fix-Price = Festpreis und Lieferung in einem bestimmten Zeitstil erwarten, ist es notwendig zu erklären, was agile Softwareentwicklung ist und wie sie den Kunden nützt.
Projektmanagement
Projektmanagement ist eine systematische Tätigkeit zur Realisierung einer individuellen Arbeit. Es ist also nicht der Verkauf einer bereits fertigen Lösung. Und gleichzeitig, dass eine solche Realisierung immer wieder neue Hindernisse mit sich bringen wird, die wir mit Hilfe des Projektmanagements effektiv zu überwinden versuchen. Typischerweise müssen wir das Projekt so steuern, dass es die geforderte Funktionalität für das im Voraus erwartete Geld und innerhalb eines angemessenen Zeitrahmens aufweist. Denn ein Projekt, das mehr kostet, als es einbringt, oder das später als geplant fertiggestellt wird, ist ein nutzloses Projekt.
Ein Projekt managen zu können, bedeutet also in erster Linie, die Fähigkeit zu haben, das Projekt wie erwartet abzuschließen.
Phasen eines Projekts
Der Verlauf eines Projekts lässt sich in folgende Phasen einteilen:
- Initialisierung
- Analyse
- Start-up
- Implementierungsprozess - langfristige Arbeit in Iterationen
- Fertigstellung
- Evaluierung
Bei einer Analyse ist es notwendig, nicht nur den technischen Aspekt zu betrachten, sondern auch den wirtschaftlichen Aspekt. Das heißt, man muss auch überlegen, ob es wirklich gebraucht wird, welchen Nutzen es bringt. Aus finanzieller Sicht ist zu prüfen, wie ressourcenintensiv die Umsetzung sein wird (Material, Zeit, Finanzen). Aus technischer Sicht muss man herausfinden, ob es überhaupt machbar ist.
Projektmanagement-Methoden
Es gibt verschiedene Projektmanagement-Methoden. Die grundlegenden Projektmanagement-Methoden sind:
- Kritischer Pfad Methode
- Wasserfall-Methode
- Agile Methoden - es gibt mehrere mit den gleichen Grundprinzipien
- PERT (Program Evaluation and Review Technique)
- PRINCE2
- etc.
Es gibt viele Projektmanagement-Methoden und -Techniken, und das betrifft auch den Bereich Wirtschaft und Kommunikation.
Deshalb werde ich von jeder etwas erwähnen und beschreiben. Ich werde auflisten, was man am häufigsten antreffen kann und die wesentlichen Merkmale hervorheben.
Ich empfehle auch, die Zusammenarbeit und die jeweilige Management-Methode zunächst an einem kleinen (Pilot-)Projekt auszuprobieren.
Wasserfall
Wasserfall war das typischste Projektmanagement. Jemand entscheidet, dass etwas entwickelt werden soll, und nach einer Analyse wird das Projekt gestartet. (Wenn die Analyse nicht gemacht wird, kann man nicht von Projektmanagement sprechen).
Methode des kritischen Pfades
Bei der Durchführung eines Projekts bauen verschiedene Aufgaben aufeinander auf, und eine Aufgabe kann nicht fortgesetzt werden, ohne die vorherige abzuschließen.
Diese Methode ermöglicht es also, sich auf das Auffinden dieser kritischen Punkte zu konzentrieren und sie dann während der Projektdurchführung zu verfolgen.
Auf diese Weise wird sichergestellt, dass rechtzeitig, d.h. manchmal sogar vorzeitig, erkannt wird, ob es ein Problem gibt, das die weitere erfolgreiche Durchführung des Projekts erheblich gefährden würde.
Am einfachsten kann man sich das bei der Ausführung eines Gebäudes vorstellen, wo klar ist, dass man ein Gebäude nicht ohne Fundament bauen kann.
Und dass die Trocknung des Betons nicht beschleunigt werden kann.
Ohne eine bestimmte Anzahl von Personen kann die Arbeit nicht in der geplanten Zeit durchgeführt werden.
Bestimmte Tätigkeiten ermöglichen parallele Arbeiten, was das Projekt beschleunigen kann.
An einem bestimmten Punkt müssen die Arbeiten jedoch zusammengeführt werden, und dies muss gesteuert werden.
Fix Time Fix Price
Fix Time Fix Price - dies ist keine Management-Methode, sondern eine Art der kommerziellen Auftragsvergabe für ein Projekt, Dabei wird ein Projekt zu einem vorher vereinbarten Preis und zu einem bestimmten Termin geliefert. Ich persönlich liefere auf diese Weise nur kleinere präzise definierte, typischerweise wiederholbare Aufgaben. Und angesichts des genauen Preises/Zeitrahmens lasse ich mich für solche Arbeiten im Voraus bezahlen.
Zu Beginn eines Projekts sind umfangreiche Analysen erforderlich, und der Schwierigkeitsgrad dieser Analysen nimmt mit der Größe des Projekts erheblich zu. Der Zeit- und Kostenaufwand für die anfängliche Analyse selbst nimmt mit dem Umfang des Projekts zu. Niemand wird eine gute Analyse kostenlos durchführen, so dass Sie dafür bezahlen müssen, ohne die Gewissheit zu haben, dass das Projekt letztendlich auch umgesetzt wird. Auf der anderen Seite hat der Kunde genaue Informationen darüber, ob das Projekt durchgeführt werden kann, und wird daher nicht unnötig Geld und Zeit investieren. Darüber hinaus kennt er den genauen Preis und den Liefertermin. Die Analyse kann auch als Investition gewertet werden und als Grundlage für die Zukunft dienen, auch bei einem anderen Anbieter.
Fix-Time-Fix-Price-Projekte, haben einen deutlich höheren Preis, weil der Auftragnehmer die Risiken bei der Umsetzung übernimmt. Es ist nicht möglich, während der Implementierung Änderungen vorzunehmen, geschweige denn neue Anforderungen hinzuzufügen. Das würde bedeuten, dass die gesamte Analyse erneut durchgeführt werden müsste.
Agillisch
Agile Softwareentwicklungsmethoden sind genau definierte Techniken/Methoden für das Management eines Softwareentwicklungsprojekts. Sie werden häufig verwendet und noch häufiger wird über sie gesprochen. Im Prinzip sind sie jedoch nichts Neues. Nur durch die Definition des Begriffs und das Schreiben von Büchern sind sie mehr ins Bewusstsein gerückt.
Bei den agilen Methoden gibt es mehrere klar definierte Projektmanagementtechniken, die in großen Unternehmen im Detail angewendet werden. Die am häufigsten verwendete Technik ist Scrum.
Agile Entwicklung ist typischerweise gekennzeichnet durch:
- Naher Kontakt mit dem Anwender = Kommunikation. Der Programmierer kommuniziert mit dem Buchhalter, wenn er den buchhalterischen Teil der Anwendung bearbeitet, oder mit dem Lageristen, wenn er die Lagerfunktionen bearbeitet.
- Reaktion auf Anfragen während der Entwicklung.
- Auslieferung kleinerer Funktionseinheiten. In sogenannten Iterationen.
Agiles Management bedeutet weniger Managementarbeit, d.h. Zeit/Geld sparen bei reduziertem Kommunikationslärm.
Ich persönlich rechne solche Arbeiten laufend am Ende des Monats ab, auch wenn einige Aufgaben noch nicht verteilt sind.
Liste der agilen Techniken:
- Srum
- Extreme Programming (XP)
- Testgetriebene Entwicklung (TDD)
- Schlanke Entwicklung
- atd
Wie es zur agilen Entwicklung kam
Es war in den Anfängen der Softwareentwicklung, als agile Entwicklung eingesetzt wurde.
Der Entwickler programmierte die Software für sich selbst oder die Entwicklung wurde intern abgewickelt und es handelte sich um ein kleines Unternehmen.
So stand der Entwickler immer in engem Kontakt nicht nur mit dem Auftraggeber, sondern auch direkt mit dem Nutzer der zu entwickelnden Software.
Da das Gebiet der Informatik neu war, handelte es sich oft um eine echte Forschungsarbeit,
So war sich jeder der Schwierigkeit bewusst, ein Programm zu erstellen. Und die damit verbundene Suche nach neuen Wegen zur Lösung, seien es Algorithmen oder technische Mittel.
Damals zogen es die meisten Menschen vor, Computer einfach zu meiden.
Aber im Laufe der Zeit, als sich das Gebiet ausweitete, interessierten sich immer mehr Menschen für die Informatik.
Und ihr durchschnittliches Fachwissen nahm ab.
Schließlich wurden Computer auch von normalen Menschen oder Laien benutzt. Das lag nicht nur am Preis, sondern auch an der Benutzerfreundlichkeit und nicht zuletzt an der Open-Source-Software.
Dazu gehört OS GNU/Linux.
Die Situation heute ist die:
Die Anfragen für Softwareentwicklungsprojekte kommen inzwischen überwiegend von normalen Anwendern,
die eine maßgeschneiderte Lösung wünschen, ohne die Komplexität des zu lösenden Problems zu kennen.
Der Kunde denkt oft nur an den Preis.
Der Verkäufer, der den Anbieter vertritt, hat keine Ahnung von dem Projekt und der Komplexität der Aufgabe, kann aber das manchmal Unmögliche versprechen, um den Vertrag abzuschließen.
Das Ergebnis ist, dass ein Projekt mit einem bestimmten Preis und einer bestimmten Frist abgeschlossen wird,
aber ohne eine genaue Spezifikation oder eine Analyse des zu lösenden Problems.
Solche Projekte gab es und gibt es manchmal auch heute noch.
Da solche Ergebnisse jedoch nicht gut waren und weder Kunden noch Programmierer damit zufrieden waren,
also erinnerten die Entwickler alle daran, wie man zur Zufriedenheit aller entwickelt
und schrieben dann ein Manifest für agile Entwicklung.
Der Punkt ist, dass die Entwicklung von Software nicht mit dem Verkauf von Brötchen oder dem Verkauf einer bereits fertigen Softwarelösung zu vergleichen ist.
Bei der Entwicklung geht es darum, das Ziel ungefähr zu kennen, aber den Weg dorthin noch nicht zu kennen.
Daher lassen sich weder die Zeit noch die Kosten genau bestimmen.
Und wenn sie schlecht verwaltet werden, können sowohl die Zeit als auch die Kosten erheblich steigen, und zwar unnötigerweise.
Merkmale der agilen Entwicklung
Das wichtigste Glied in der Softwareentwicklung ist der Entwickler/Programmierer. Deshalb wird alles getan, damit sich der Programmierer wohl fühlt.
Um dem Ziel effektiv näher zu kommen, ist es auch die Aufgabe des Entwicklers, mit dem Kunden zusammenzuarbeiten und andersherum.
Das ist der erfahrene Widerspruch, in dem Unternehmen versuchen, den Programmierer vom Anwender abzuschneiden und den Anwender so weit wie möglich vom Programmierer fernzuhalten.
Der Entwickler muss mit dem Kunden die Bedürfnisse besprechen, um eine Lösung zu entwerfen und alles erklären, natürlich zahlt der Kunde auch für diese Zeit.
Das vermeidet aber Kommunikationsgeräusche und direkte Kommunikation ist auch viel zeitsparender.
Dieser direkte Kontakt/Kommunikation hat also letztlich den Vorteil, dass das Produkt besser und, weil Zeit gespart wird, billiger ist.
Wenn du dir nicht vorstellen kannst, was ein Programmierer macht, die Details, was ein Programmierer macht, stehen in dem Artikel: what is a programmer's job.
In einer Zeit des raschen Wandels ändern sich ihre Prioritäten schnell und es entstehen neue Anforderungen. Die agile Entwicklung ermöglicht es Ihnen, auf diese Anforderungen zu reagieren, und zwar schnell. Bei einem festen Projekt bliebe nichts anderes übrig, als das Projekt zu stoppen, es von Grund auf neu zu analysieren und mit der Entwicklung eines neuen, geänderten Projekts zu beginnen.
Die Kunden loben, dass sie statt eines großen Meetings und des Wartens auf das Ergebnis, das natürlich deutlich von der Idee abweicht. Sie können laufend Dokumente liefern, das Briefing ändern und vor allem die gelieferte Lösung kommentieren. Auf diese Weise erhalten sie nach und nach ein Ergebnis, das sie überprüfen und verwenden können. Und mit jeder Iteration kommen sie ihren Bedürfnissen und Vorstellungen immer näher.
Diese Methode ist nützlich, wenn sich die Anforderungen ändern oder nicht im Detail spezifiziert werden können, oder wenn wir schnell eine funktionale Teillösung liefern müssen.
Ja, im Allgemeinen sieht es einfacher aus, ein Briefing zu schreiben und dann auf das Ergebnis zu warten, aber es ist sehr schwierig, ein ausreichend präzises Briefing zu schreiben.
(Und die wenigsten wollen es schreiben).
Bei großen Projekten ist es oft nicht möglich, alle Details zu Beginn auszuarbeiten.
Ein gutes Briefing kann also nicht ohne Analyse oder sogar Erstellung einer Art Prototyp erstellt werden.
Außerdem wird von einem festen Auftrag ein fester Preis erwartet, was in der Praxis entweder ein verkürztes oder ein schlechtes Ergebnis bedeutet.
Feste Aufträge führen folglich zu der Notwendigkeit von Multitasking.
Ein Festpreis für nicht-kleine Projekte ist also eine idealistische Vorstellung,
wenn es sich um eine maßgeschneiderte Entwicklung handelt. (Eine fertige Lösung zu kaufen ist etwas anderes.)
Sie müssen bedenken, dass der Anbieter den Preis in der Regel mindestens um das Zwei- oder Vierfache erhöht, um die Risiken einzubeziehen.
Auch wenn der Endpreis nicht auf den ersten Blick ersichtlich ist, ist die agile Entwicklung also immer günstiger.
Denn Sie zahlen immer nur für das, was Sie brauchen und was auch gemacht wird.
Fixpreis wird nur dann günstiger, wenn der Anbieter rote Zahlen schreibt, und das wird auf Dauer niemand tun.
Bewerbungen
Es gibt verschiedene Anwendungen zur Unterstützung des Projektmanagements. Es gibt auch Anwendungen, die auf das Software-Projektmanagement spezialisiert und für Software-Entwickler optimiert sind. Ein solches Tool ist die webbasierte GitLab-Anwendung, die andere Ressourcen für eine effiziente Entwicklung wie GIT integriert. So können Manager in GitLab Aufgaben leiten und die Projektdurchführung einschließlich einzelner Phasen verwalten.
Darüber hinaus bieten sie auch andere Funktionen und ermöglichen die Integration mit anderen Tools. Zum Beispiel gibt es die Möglichkeit, automatisierte Tests und Auto-Deployment zu verwenden.
Erfolgreiches Projekt
Ganz gleich, ob Sie ein kleines oder ein großes Projekt umsetzen, der Schlüssel zum Erfolg ist:
- Anforderungen einreichen
- Testen Sie die gelieferte Lösung
Artikel zu einem ähnlichen Thema
Programmiersprache Go
Python-Programm zur Steuerung von Docker über die API
Wie man MailCatcher zum Testen von E-Mails verwendet
Python OpenAI API
Erstellen einer WebSocket-Webanwendung und Einrichten eines Proxys
Wie man alte PHP-Anwendungen ausführt
Was ein guter Programmierer wissen sollte
Programmiersprache Rust
NodeJS: Entwicklung, Serverkonfiguration
Nette Sicherheitslücke CVE-2020-15227
REST API: Plattform-API
Kundenspezifisches Web- und E-Mail-Hosting mit ISP Config-Software
Programmierung in SQL: PostgreSQL, MySQL/MariaDB
HTTPS: sicheres Web
NoSQL-Datenbank Mongo DB
Herstellen einer Verbindung zu Microsoft SQL Server unter Linux
Was ist die Stellenbeschreibung eines Programmierers?
Lokalisierung von Python-Anwendungen
Welches Mail- und Webhosting Sie wählen sollten
Digispark - Atmel ATtiny Mikrocontroller mit Arduino IDE programmieren
Entwicklung für ARM-Prozessoren mit Arduino IDE
Wie programmiere ich den ESP8266 WiFi-Prozessor?
Offenes Smartphone mit Linux - Openmoko Neo FreeRunner
Newsletter
Wenn Sie daran interessiert sind, gelegentlich Neuigkeiten per E-Mail zu erhalten.
Sie können sich registrieren, indem Sie Ihre E-Mail-Adresse eingeben
News-Abonnement.
+