JavaRush /Java-Blog /Random-DE /Methoden der Softwareentwicklung

Methoden der Softwareentwicklung

Veröffentlicht in der Gruppe Random-DE
Guten Tag. Bei den letzten beiden Interviews wurde ich nach Methoden gefragt. Dies ist nicht die wichtigste oder schwierigste Frage, aber es wäre schön, einen Spickzettel für die Antwort zu haben. In diesem Artikel werde ich versuchen, eine Vorstellung davon zu vermitteln, was eine Entwicklungsmethodik ist, und diejenigen vergleichen, die ich persönlich kennengelernt habe oder nach denen ich gefragt wurde. Methoden der Softwareentwicklung – 1Die Softwareentwicklungsmethodik ist ein Prozess zur Beschreibung, wie ein bestimmtes Produkt entwickelt wird, d. h. eine der Möglichkeiten, die Teamentwicklung zu organisieren. Es gibt viele verschiedene Modelle eines solchen Prozesses, von denen jedes seinen eigenen Ansatz beschreibt, und man kann nicht sagen, dass es eines davon gibt, das in jedem Projekt verwendet werden sollte, alles ist rein situativ. Ich schlage vor, drei davon genauer zu betrachten.

Wasserfall

Wasserfall (Kaskade, Wasserfall) ist eine der ältesten Methoden und impliziert die strikte sequentielle Umsetzung aller Phasen, von denen jede abgeschlossen sein muss, bevor die nächste beginnt. Das heißt, der Übergang zur nächsten Stufe bedeutet den vollständigen Abschluss der Arbeiten an der vorherigen Stufe. Das Bild zeigt, dass wir zuerst die Aufgabe analysieren (Aufgaben dokumentieren, Schwierigkeiten besprechen), dann das Design durchführen (in dieser Phase wird die Projektstruktur gebildet), dann codieren und testen. Für nachfolgende Etappen gibt es keine Rückerstattung. Es empfiehlt sich, ein solches System bei kleinen Projekten einzusetzen, bei denen die Anforderungen im Voraus bekannt sind und eine geringe Wahrscheinlichkeit besteht, dass sie sich ändern. Softwareentwicklungsmethoden – 2Vorteile:
  • Vollständige und konsistente Dokumentation in jeder Phase;
  • Benutzerfreundlichkeit;
  • Stabile Anforderungen.
  • Budget und Termine sind vorgegeben
Mängel:
  • Eine große Menge an Dokumentation;
  • Kein sehr flexibles System;
  • Der Kunde kann die Demoversion des Produkts nicht sehen;
  • Es gibt keine Möglichkeit, einen Schritt zurück zu gehen.

Gedränge

Scrum ist ein Softwareentwicklungssystem, das auf der Aufteilung des gesamten Prozesses in Iterationen basiert, wobei am Ende jeder Iteration das Team bereit ist, eine Demoversion des Produkts bereitzustellen. Das Bild zeigt, dass das Team alle Phasen der Entwicklung parallel durchläuft, sodass wir am Ende jeder Iteration einen fertigen Teil des Projekts haben können. Softwareentwicklungsmethoden – 3Ich werde versuchen, das Wesentliche der Methodik kurz und in einfachen Worten zu erklären, aber es gibt hier viele Begriffe. Ich denke, das Wichtigste ist, das Wesentliche zu verstehen, und die Begriffe werden mit der Erfahrung im Gedächtnis bleiben. Die gesamte Entwicklung ist in Sprints unterteilt (oft 2-3 Wochen). Es gibt ein Backlog (Aufgabenliste) für den gesamten Entwicklungszeitraum und für jeden Sprint separat. Jede Aufgabe hat ihren eigenen Story Point (Schwierigkeitsgrad). Jeder Prozessbeteiligte hat eine Rolle:
  • Ein Scrum-Team ist ein Team, das an einem Projekt arbeitet (Entwickler, Tester, Designer).
  • Ein Scrum Master ist eine Person, die dafür sorgt, dass die Prinzipien von Scrum befolgt werden.
  • Product Owner – Kunde.
Da in diesem System die Kommunikation im Vordergrund steht, gibt es eine Vielzahl von Kundgebungen:
  • Stand-up ist ein kurzes Meeting, das jeden Tag stattfindet, an dem alle Teammitglieder teilnehmen und jeder Teilnehmer drei Fragen beantwortet: Was haben Sie gemacht? Was wird es tun? Und was sind die Blocker?
  • Planung – findet zu Beginn des Sprints statt und bei diesem Treffen wird festgelegt, welche Aufgaben im nächsten Sprint erledigt werden sollen.
  • Am Ende des Sprints findet eine Retrospektive statt, deren Kern darin besteht, herauszufinden, was gut gemacht wurde und was verbessert werden könnte.
Vorteile:
  • Der Kunde kann das Ergebnis während des Entwicklungsprozesses beobachten.
  • Tägliche Kontrolle über den Entwicklungsprozess.
  • Möglichkeit, während der Entwicklung Anpassungen vorzunehmen.
  • Gut etablierte Kommunikation mit allen Teammitgliedern.
  • Wenig Dokumentation.
Mängel:
  • Der Arbeits- und Kostenaufwand für die Entwicklung lässt sich nur schwer abschätzen
  • Es ist schwierig, die größten Engpässe vor Beginn der Entwicklung zu ermitteln.
  • Die Notwendigkeit, jeden in die Entwicklung anderer Teammitglieder einzubeziehen.

Kanban

Kanban ist ein System, das auf der Visualisierung des Prozesses der Erledigung von Teamaufgaben basiert. Die Hauptidee dieses Systems besteht darin, die Anzahl der aktuell ausgeführten Aufgaben (in der Spalte „in Bearbeitung“) zu reduzieren. Bei Scrum konzentriert sich das Team auf den erfolgreichen Abschluss von Sprints, bei Kanban stehen Aufgaben an erster Stelle. Gut für Projekte, die sich in der Supportphase befinden, bei denen die Hauptfunktionalität bereits entwickelt wurde und nur minimale Verbesserungen und Fehlerbehebungen verbleiben. Bei Kanban werden Aufgaben einzeln eingereicht. Die Aufgabe durchläuft unabhängig von anderen Aufgaben alle Phasen auf der Tafel und kann, sobald sie erledigt ist, dem Kunden gezeigt werden. Ein Kanban-Board besteht aus Spalten, die jeweils einen separaten Entwicklungsprozess darstellen. In einigen Spalten (z. B. in Bearbeitung) gibt es Beschränkungen hinsichtlich der Anzahl der Aufgaben, die dort vorhanden sein können. Dies hilft, Problembereiche in der Aufgabenverteilung einfach und schnell zu finden. Das Bild zeigt ein Beispiel für eine solche einfache Platine. Die Anzahl der Spalten und Namen kann variieren, ich nenne jedoch die gebräuchlichsten: Softwareentwicklungsmethoden – 4
  • Zu erledigen – eine Liste der Aufgaben, die erledigt werden müssen
  • In Bearbeitung – Aufgaben, an denen gerade gearbeitet wird
  • Codeüberprüfung – Aufgaben, die abgeschlossen und zur Überprüfung gesendet wurden
  • Im Test – Aufgaben bereit zum Testen
  • Fertig – erledigte Aufgaben.
Vorteile:
  • Benutzerfreundlichkeit.
  • Visualisierung (hilft beim Auffinden von Engpässen, vereinfacht das Verständnis)
  • Hohe Einbindung des Teams in den Prozess selbst.
  • Hohe Flexibilität in der Entwicklung.
Mängel:
  • Instabile Aufgabenliste.
  • Bei langfristigen Projekten schwierig anzuwenden.
  • Keine harten Fristen.

Abschließend zur Softwareentwicklungsmethodik

Meiner Meinung nach müssen Personen, die Führungspositionen innehaben oder eine solche anstreben, über ein umfassendes Verständnis der Methoden der Softwareentwicklung verfügen, es ist jedoch ratsam, dass jeder zumindest die Grundlagen versteht. Dies ist ein integraler Bestandteil des Entwicklungsprozesses und wird nicht nur im IT-Bereich eingesetzt. Vielen Dank, dass Sie sich die Zeit genommen haben, meinen Artikel zu lesen. Ich hoffe, Sie fanden ihn hilfreich. Ich habe versucht, nur die wichtigsten Punkte so klar und kurz wie möglich zu beschreiben, daher erhebt der Artikel keinen Anspruch auf Vollständigkeit. Ich würde mich freuen, Ihre Meinung dazu zu hören und Ihre Fragen zu beantworten. Alles Gute!
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION