Softwareentwicklung: Faktoren, Prozesse, Phasen

Softwareentwicklung ist ein komplexer Prozess, der von vielen Faktoren beeinflusst wird. Obwohl es ein ganzes Buch erfordern würde, jedes Element zu organisieren und zu erklären, ist es wichtig, die wichtigsten Teile des Prozesses hervorzuheben.
Inhalt des Artikels:
entwicklung bedeutet normalerweise, ein Modell zu haben, aber das ist nicht das Einzige, was Sie wissen müssen. In unserem Artikel verraten wir Ihnen, in welchem Stadium sich die Softwareentwicklung befindet und analysieren die aktuellsten Modelle Programme zum Erledigen von Aufgaben
Softwareentwicklungskonzept
Zunächst ist es notwendig, den Begriff der Softwareentwicklung zu definieren.
Software ist ausführbarer Code, der bestimmte Rechenoperationen ausführt; Ein POE ist eine Sammlung von Elementen, die ausführbaren Programmcode, zugehörige Bibliotheken und Dokumentation enthalten. Von Softwareprodukten (SP) spricht man bereits dann, wenn sie zur Erfüllung einer bestimmten Aufgabe erstellt werden.
Ein weiteres wichtiges Konzept, das in diesem Thema berücksichtigt werden muss, ist das Ingenieurwesen. In diesem Bereich geht es um die Entwicklung eines Produkts unter Verwendung einer bestimmten wissenschaftlichen Methodik.
Software Engineering ist ein weiterer Bereich, in dem Softwareprodukte entwickelt werden. Dabei kommen die spezifischsten wissenschaftlichen Methoden und Prinzipien zum Einsatz. Das ultimative Ziel besteht darin, ein qualitativ hochwertiges, nützliches Softwareprodukt zu schaffen.
IEEE definiert Software Engineering als die Anwendung eines systematischen, disziplinierten und quantitativen Ansatzes zur Entwicklung und anschließenden Nutzung und Pflege von Ergebnissen.
Strukturanalysemethoden für Softwaredesign
Strukturelle Methoden bilden die Disziplin der Systemanalyse und des Systementwurfs. Dank solcher Methoden können verschiedene Schwierigkeiten im Zusammenhang mit der Detaillierung großer Systeme beseitigt werden. Dies wird durch die Aufteilung in Komponenten, auch Blackboxen genannt, und die hierarchische Organisation dieser Blackboxen erreicht.
Der praktische Vorteil der Differenzierung besteht darin, dass bei der Verwendung gekaufter Komponenten kein Verständnis für deren Funktionsweise erforderlich ist. Der Benutzer muss lediglich deren Eingabe und Ausgabe sowie deren Zweck kennen. Einfach ausgedrückt: Sie müssen verstehen, welche Aufgaben diese und die „Black Box“ erfüllen.

Vor diesem Hintergrund besteht der erste Schritt bei der Vereinfachung eines komplexen Systems darin, es in mehrere „Black Boxes“ zu unterteilen. Allerdings müssen die Einheiten einige grundlegende Kriterien erfüllen.
- Jede Blackbox muss eine einzige Funktion haben;
- Die Funktionen dieser „Boxen“ sollten leicht verständlich sein, auch wenn sie in der Praxis nur schwer umsetzbar sind;
- Beziehungen zwischen Systemelementen müssen nur erstellt werden, wenn diese Funktionen miteinander verbunden sind. In der Buchhaltung wird eine dieser „Black Boxes“ benötigt, um die Höhe des Bruttolohns eines Arbeitnehmers zu ermitteln, und die andere, um die Höhe der Steuern zu ermitteln. Offensichtlich muss zwischen ihnen ein Zusammenhang bestehen. Denn um die Höhe der Steuer zu berechnen, muss man die Höhe des Lohns kennen;
- Die Beziehungen zwischen Blackboxen sollten so einfach wie möglich sein. Dadurch sind sie unabhängig voneinander.
Ein weiterer grundlegender Aspekt im Bereich der Strukturmethoden ist die Idee der Hierarchie. Um ein komplexes System zu verstehen, ist es nicht nur notwendig, es zu isolieren, sondern auch die richtige Organisation der resultierenden Teile sicherzustellen. Genau hierfür werden Hierarchien eingesetzt.
Wenn Sie darüber nachdenken, ist jedes komplexe System in unserer Welt, sei es ein subatomares Teilchen oder eine ganze Galaxie, notwendigerweise in eine bestimmte Hierarchie eingebaut. Entwickelt sich ein komplexes System von selbst, nutzt er dieses Naturprinzip in seinem Tätigkeitsfeld.
Beispielsweise gibt es in jedem Unternehmen eine Hierarchie bestehend aus Geschäftsführern, Regionalvertretern, Abteilungsleitern und einfachen Mitarbeitern. Darüber hinaus nutzen Strukturmethoden häufig die visuelle Modellierung, die zum einfachen Verständnis komplexer Strukturen erforderlich ist.
Strukturanalyse ist eine Methode zur Untersuchung eines Systems. Zunächst wird ein Gesamtüberblick über das System erstellt und anschließend die gewonnenen Informationen im Detail untersucht. Schließlich erhält der Forscher eine hierarchische Struktur mit vielen Ebenen.
Die funktionale Zerlegung ist die wichtigste Methode zur Unterscheidung zwischen Abstraktionsebenen innerhalb der Strukturanalyse. Zerlegung ist die Aufteilung eines Ganzen in Teile. In diesem Fall sprechen wir von der Aufteilung des Systems in funktionale Teilsysteme und Teilfunktionen. Letzteres ist in Aufgaben unterteilt, die wiederum in spezifische Verfahren unterteilt sind.
Gleichzeitig wird das System weiter integriert und alle seine Komponenten werden miteinander verbunden. Wenn das System „von unten nach oben“ entwickelt wird (von bestimmten Aufgaben bis zum gesamten System), geht das ganzheitliche Bild verloren. Darüber hinaus bestehen Schwierigkeiten bei der Beschreibung der Informationsinteraktion einzelner Elemente.

Der Strukturanalyse- und Entwurfsprozess verwendet eine Reihe von Modellen, die Folgendes beschreiben:
- Funktionsstruktur des Systems;
- Die Reihenfolge der auszuführenden Vorgänge;
- Datenübertragung zwischen funktionalen Prozessen;
- Beziehungen zwischen Daten.
Phasen der Softwareentwicklung
Die erste Phase der Arbeit an Software ist die Vorbereitung
Die in dieser Phase gelöste Hauptaufgabe besteht darin, das Konzept des zukünftigen Systems basierend auf den Kundenanforderungen zu formulieren. Basierend auf diesem Konzept bewerten Entwickler die Anforderungen und Machbarkeit des Projekts. Wenn die Entscheidung getroffen wird, einen Auftragnehmer auf der Grundlage eines Wettbewerbs zu engagieren, handelt es sich um die Phase der Vorbereitung potenzieller Arbeitnehmer auf diesen Wettbewerb (einschließlich der Erstellung aller Unterlagen).
Es ist klar, dass es keinen Sinn macht, Zeit und Geld für ein Projekt zu verschwenden, das nicht beansprucht und möglicherweise nicht realisierbar ist. In diesem Fall ist die Beendigung des Projekts die sinnvollste Lösung.
Es kann eine iterative Arbeit mit dem Kunden erforderlich sein, um das Designkonzept anzupassen, bis ein zufriedenstellendes Gleichgewicht zwischen Kundenanforderungen und Auftragnehmerkosten erreicht ist oder bis eine Entscheidung zum Abschluss der Entwicklung getroffen wird.
Liegt dem Projekt ein umsetzbares Konzept zugrunde, beginnt die Phase der Anforderungsentwicklung. In dieser Phase werden die expliziten und impliziten Bedürfnisse des Kunden ermittelt. Oftmals haben Kunden keine klare Vorstellung von ihren Bedürfnissen. In manchen Situationen stimmen ihre Bedürfnisse möglicherweise nicht mit der tatsächlichen Kompetenz des Entwicklers überein. Die Bedürfnisse des Kunden können interne Widersprüche aufweisen.
Um diese Probleme anzugehen, ist die Phase des Anforderungs-Engineerings erforderlich. Es gilt, die Bedürfnisse des Kunden möglichst genau zu ermitteln und versteckte Bedürfnisse zu identifizieren. Darüber hinaus werden in dieser Phase Konflikte zwischen Anforderungen gelöst, eine vollständige technische Lösung erstellt und deren Machbarkeit analysiert.
Zur Klärung von Anforderungen ist häufig eine Anpassung des Projektkonzepts erforderlich. In manchen Situationen kann jedoch keine wirksame technische Lösung gefunden werden und das Projekt wird anschließend geschlossen oder eingefroren, bis günstige Bedingungen vorliegen.
Wenn eine Lösung gefunden wird, geht der Auftragnehmer zur Phase der Entwicklung der Architektur des zukünftigen Systems über. Die Hauptaufgabe dieser Phase besteht darin, die logische und physische Architektur der obersten Ebene zu bestimmen, die die Bedürfnisse des Kunden vollständig abdecken kann. Während des Architekturentwicklungsprozesses werden Konzepte, Anforderungen und vorläufige technische Lösungen überprüft und verfeinert. Dadurch werden die größten Risiken reduziert.
Am Ende des Architekturentwurfs sollte der Entwurf überprüft werden, um sicherzustellen, dass die Umsetzer die Konzepte umsetzen können. Während der Architekturentwicklungsphase wird empfohlen, unnötige und umständliche Funktionen zu entfernen. Eine solche Optimierung hilft oft bei der Auswahl optimaler Projektparameter.
Allerdings können auch erhebliche Reduzierungen der Funktionskomponenten zukünftiger Systeme erforderlich sein. Selbst wenn es jedoch zu einer Unterbrechung der Projektarbeit kommen sollte, ist dies besser als die Weiterentwicklung.

Wenn die Ergebnisse positiv sind und eine günstige Systemarchitektur entsteht, können Sie mit der Implementierungs- und Bereitstellungsphase fortfahren. In diesem Fall kann die Umsetzung in einer oder mehreren Stufen erfolgen. Wenn es sich um ein kleines Projekt handelt, können Sie sich auf einen Schritt beschränken. Mit zunehmendem Umfang der Projekte werden jedoch die Subsysteme im zu entwickelnden System abhängiger.
In solchen Fällen gliedert sich die Umsetzung in eine bestimmte Anzahl von Etappen. Darüber hinaus geschieht dies so, dass der Entwickler am Ende jeder Phase lieferfertige Ergebnisse erhält. Die wichtigsten Funktionen sollten in den frühen Phasen entwickelt werden, die weniger wichtigen in späteren Phasen. Dank dieses Ansatzes werden zunächst die gefährlichsten Fehler für das System beseitigt und die Stabilität der Systeminfrastruktur erhöht.
Der nächste Schritt ist der Probebetrieb
Die Hauptaufgabe dieser Phase besteht darin, die Qualität des Systems im Ist-Zustand zu überprüfen. Die Verifizierung besteht hauptsächlich aus der Messung quantitativer Indikatoren, die die Produktqualität bestimmen. Zunächst werden funktionale Qualitätsindikatoren überprüft, dann nicht funktionale. Werden bei der Inspektion Unstimmigkeiten festgestellt, passt der Auftragnehmer den Systemcode an.
Sobald das System richtig konfiguriert ist, kann es in Betrieb genommen werden. Typischerweise wartet der Auftragnehmer das entwickelte Produkt für einen bestimmten Zeitraum (mindestens während der Gewährleistungsfrist). Wenn Fehler gefunden werden, wird das System korrigiert. Der Benutzer und das Kundendienstpersonal müssen durch rechtzeitige Beratung unterstützt werden.
Früher oder später verliert das System seine Bedeutung für den Kunden. Von diesem Moment an können wir über die Stilllegungsphase sprechen. Bei maßgeschneiderter Software kann dieser Schritt jedoch entfallen. In der Praxis beruft sich der Kunde auf seine Exklusivrechte und darf dem Auftragnehmer auch vor dem Verlust der Verbindung keine weitere Betreuung und Konfiguration des Systems gestatten.

Die letzte Phase eines jeden Projekts ist die Fertigstellung
In dieser Phase werden die Ergebnisse analysiert und der Softwareentwicklungsprozess auf Basis der gewonnenen Erfahrungen angepasst. Darüber hinaus wird die Wissensdatenbank der Entwickler mit neuen Lösungen, die sich bewährt haben, sowie verschiedenen Warnungen und neuen Komponenten aktualisiert. All dies sollte in Zukunft bei der Entwicklung anderer Projekte zum Einsatz kommen.
Unterstützende Prozesse für die Softwareentwicklung
Im Rahmen der Softwareentwicklung lassen sich mehrere Hilfsprozesse unterscheiden:
- Dokumentation. Der Auftragnehmer erstellt Dokumentationen und Benutzerhandbücher für das erstellte Softwareprodukt, sowohl während als auch nach der Entwicklung. Eine solche Dokumentation ermöglicht es Programmierern, die Struktur und den Code auch lange nach seiner Erstellung zu verstehen. Gleichzeitig unterstützt die Dokumentation den Benutzer bei der Bedienung des Systems;
- Konfigurationsmanagement. Beschreibt die Aufgabe, eine Reihe erstellter Softwarekomponenten und Versionen eines Softwareprodukts zu verwalten;
- Qualitätssicherung. Dieser Prozess ist notwendig, um sicherzustellen, dass das Softwareprodukt den vorläufigen Entwicklungsanforderungen und den Standards des Auftragnehmers und der Kundenorganisation entspricht;
- Überprüfung. Es kann Fehler erkennen, die während der Softwareentwicklung auftreten. Die Überprüfung kann auch Inkonsistenzen zwischen der entwickelten Software und der gebauten Architektur aufdecken;
- Zertifizierung. Es muss überprüft werden, ob die erhaltenen Werte den anerkannten Standards entsprechen. Das bedeutet, dass die Ausgabe Fehler enthalten muss, die alle Anforderungen und Kriterien erfüllen;
- Partizipative Beurteilung. Ziel dieses Prozesses ist es, den Status des Personals und der produzierten Software zu überwachen und zu überprüfen. Sie wird während der gesamten Projektlaufzeit vom Auftraggeber und Auftragnehmer durchgeführt;
- Prüfung. Erforderlich für die selbstständige Beurteilung des aktuellen Status, der Projektmerkmale, der Dokumentation und verschiedener Berichte. Dieser Prozess ermöglicht es Ihnen, die tatsächliche Situation mit dem Vertrag und der Dokumentation zu vergleichen, in der die Anforderungen aufgeführt sind. Audits können von einer oder zwei Parteien durchgeführt werden;
- Problemlösung. Während der Überwachungs- und Auswertungsphase entdeckte Fehler werden beseitigt.
Einflussfaktoren auf die Softwareentwicklung
Es werden Faktoren aufgeführt, die das Ergebnis der Softwareentwicklung direkt beeinflussen.
- Klasse gelöster Probleme. Der semantische Inhalt des erstellten Programms wird bestimmt;
- Verwendete Methoden. Sie skizzieren die organisatorischen und technischen Merkmale der Umsetzung der Hauptphasen der Softwareentwicklung;
- Programmiermethoden und Paradigmen. Der Codierungsstil und die Architektur der virtuellen Maschine hängen von ihnen ab;
- Hardware und Systemsoftware. Hierbei handelt es sich um virtuelle und physische Ressourcen, die Ihnen die Nutzung der Software ermöglichen.
Die Beziehung zwischen diesen Faktoren schafft verschiedene Optionen für die Entwicklungsorganisation. Lassen Sie uns die Hauptkomponenten dieses Prozesses hervorheben.
Das Hauptziel der Softwareentwicklung besteht darin, ein Programm zu erstellen, das eine bestimmte Aufgabe ausführen und bestehenden Standards entsprechen kann. Das zu lösende Problem wird durch eine Reihe formaler und informeller (empirischer) Modelle beschrieben. Sie definieren den Prozess, den das Programm ausführen muss, und die in diesem Prozess verwendeten Daten.
Ein Problemmodell ist eine Reihe spezieller Modelle, die die spezifischen Nuancen des zu lösenden Problems beschreiben, die sich im erstellten Programm widerspiegeln.
Um die spezifischen Parameter des untersuchten Phänomens zu beschreiben, sind spezielle Modelle erforderlich. Dadurch können Sie sich auf bestimmte Merkmale konzentrieren.
Das erstellte Programm muss die zur Lösung des Problems erforderlichen Funktionen in einem bestimmten Executor (Computersystem) ausführen. Um seine Eigenschaften abzubilden, wird ein Performermodell verwendet.

Ein Executor-Modell ist eine Reihe spezifischer Modelle, die die Konfiguration und das Verhalten des Computersystems beschreiben, auf dem das Programm ausgeführt wird.
Das entwickelte Programm spiegelt das im Ausführendenmodell gelöste Problemmodell wider. Die Komplexität der Programmierung hängt von der Anzahl spezialisierter Modelle zur Problembeschreibung sowie von deren Größe und semantischen Unterschieden zu den spezialisierten Ausführendenmodellen ab.
Darüber hinaus hängt die Komplexität des Entwicklungsprozesses von den Abstraktionsanforderungen des Programms und den Parametern des Ausführendenmodells ab, welche dessen Ähnlichkeit zur tatsächlichen Rechnerarchitektur beschreiben.
Softwareentwicklungsmodelle
Es gibt verschiedene Arten der Softwareentwicklung, die auf unterschiedlichen Modellen basieren. Die fünf gängigsten sind im Folgenden aufgeführt.
Wasserfall (Kaskadenmodell oder „Wasserfall“)
In diesem Fall erfolgt die Entwicklung in mehreren Phasen. Jede nachfolgende Phase kann erst nach Abschluss der vorherigen begonnen werden. Bei korrekter Anwendung ist das Wasserfallmodell das schnellste und einfachste Modell; es wird seit den 1970er Jahren eingesetzt.
- Einfache Verwaltung: Der Kunde ist jederzeit über den aktuellen Stand der Arbeiten informiert und kann Termine und Budget anpassen.
- Frühe Kostenschätzung: Alle Details werden in den Vertragsverhandlungen festgelegt. Es ist nicht notwendig, hochqualifizierte Tester einzubeziehen. Spezialisten können sich auf die detaillierte technische Dokumentation stützen.
- Softwareentwicklung: Faktoren, Prozesse und Phasen






