Grundlagen der Software-Entwicklung: Projekte, Evolution und Modelle
Eingeordnet in Informatik
Geschrieben am in Deutsch mit einer Größe von 7,35 KB
Projektmanagement: Definition & Elemente
Ein Projekt ist eine Reihe von miteinander verknüpften Aktivitäten, die mit einem definierten Anfang und Ende sowie begrenzten Ressourcen ein gewünschtes Ziel erreichen sollen. Die beiden grundlegenden Elemente dieser Definition sind: Aktivitäten und Ressourcen.
Aktivitäten
Dies sind die Aufgaben, die durchgeführt oder ausgeführt werden, um ein vordefiniertes Ziel zu erreichen, z. B. das Sammeln von Informationen, das Stellen einer Diagnose, die umfassende Konzeption eines Verfahrens, das Schreiben von Programmabläufen, Handbüchern usw.
Ein wesentlicher Aspekt bei jedem Projekt ist die Reihenfolge, in der die Aktivitäten stattfinden. Die logische Abfolge der Tätigkeiten sollte die Methode, den Zeitrahmen und die Kosten der jeweiligen Maßnahme bestimmen.
Ressourcen
Dies sind die Mittel, die zur Ausführung der einzelnen Aufgaben eingesetzt werden, wie z. B. Humanressourcen, Hardware (HW), Datenbankprogramme, Anwendungsprogramme, Speicherplatz, Energie, Dienstleistungen, Personal, Informationen, Geld und Zeit.
Der primäre Zweck der Projektentwicklung sollte darin bestehen, einen Zeitplan zu erstellen, in dem die stets begrenzten Ressourcen jeder Aktivität wirtschaftlich optimal zugewiesen werden.
Software-Evolution: Historische Entwicklung
Erste Ära (bis 1960er Jahre)
- Batch-Verarbeitung
- Personalisierte Kunden-Software
- Hardware war wichtiger als Software
- Dokumentation war fast nicht existent
- Entwickler und Anwender waren oft dieselbe Person
Zweite Ära (bis Ende der 1970er Jahre)
- Multi-User-Systeme
- Echtzeit-Systeme
- Erste Generation von Datenbank-Managementsystemen
- Software-Verbreitung in mehreren Domänen
- Wartung dieser Software-Typen war sehr schwierig, was zur ersten Software-Krise führte
Dritte Ära (Ende der 1980er Jahre)
- Verteilte Systeme
- Globale Netzwerkerweiterung erforderte Verbesserungen in der Software-Entwicklung
- Aufkommen und Nutzung von Mikroprozessoren
- Leistungsstarke und kostengünstige Hardware
- Starke Auswirkungen auf die Verbraucher
Vierte Ära (bis heute)
- Durchbruch in der Hardware und folglich auch in Anwendungen
- Leistungsstarke Desktop-Systeme
- Objektorientierte Technologien
- Entstehung von Expertensystemen und künstlichen neuronalen Netzen
- Parallelverarbeitung
Software-Wiederverwendung (SW Reuse)
Die ersten Schritte zur Software-Wiederverwendung waren Bibliotheken von Routinen.
Das Hinzufügen neuer Funktionalitäten wurde nach der Entstehung objektorientierter Technologien (Programmiermodule) möglich.
Software-Anwendungskategorien
- Inhalt der Informationen
- Bestimmung der Informationen
Software-Anwendungstypen
- System-Software
- Echtzeit-Software
- Management-Software
- Ingenieur- oder naturwissenschaftliche Software
- Eingebettete Software (Embedded Software)
System-Software
Eine Sammlung von Computerprogrammen, die dazu dienen, andere Programme zu unterstützen. System-Software hat eine starke Interaktion mit der Hardware auf grundlegender Ebene, um gleichzeitig mehrere Aufgaben zu verwalten und Ressourcen zu teilen.
Beispiele: Betriebssysteme (OS), Treiber, Kommunikationsroutinen, Compiler.
Echtzeit-Software
Software, die Ereignisse in der realen Welt überwacht, analysiert und steuert, um in Echtzeit Antworten zu geben und Entscheidungen zu treffen.
Beispiele: Sicherheitssysteme, Datensammler, industrielle Prozesssteuerungen.
Management-Software
Software, die Datenbanken verwaltet und die notwendige Unterstützung für wirtschaftliche Entscheidungen und Umstrukturierungen in Unternehmen bietet.
Beispiele: Bankensysteme, Zahlungssysteme.
Ingenieur- und naturwissenschaftliche Software
Traditionell wird diese Software zur Verwaltung und Verarbeitung digitaler Daten in allen Fachgebieten der Ingenieur- und Naturwissenschaften eingesetzt.
Eingebettete Software (Embedded Software)
Software mit eingeschränkten Funktionen für spezielle Aufgaben. Sie wird in verschiedenen nationalen und industriellen Anwendungen eingesetzt.
Beispiele: GPS-Geräte, Mikrowellenherde.
Klassische Künstliche Intelligenz (KI)
Verwendet nicht-numerische Algorithmen, um Probleme zu lösen, die mit klassischen Methoden schwierig oder unmöglich zu lösen wären. Dazu gehören Expertensysteme, die auf Entscheidungsregeln basieren. Ebenso fallen darunter Erkennungssysteme.
Computational Intelligence
Ist ein alternativer Ansatz zu algorithmischen Berechnungen, der neue Techniken repräsentiert und die menschliche Fähigkeit widerspiegelt, Entscheidungen in einem Umfeld der Unsicherheit zu treffen.
- Neuronale Netze
- Fuzzy-Logik
- Evolutionäre Algorithmen
- Maschinelles Lernen
- Probabilistisches Rechnen
Künstliche Neuronale Netze
Diese Systeme simulieren den Aufbau und die Funktionsweise des menschlichen Gehirns. Sie können aus vergangenen Erfahrungen lernen und darauf basierende Entscheidungen treffen.
Fuzzy-Logik
Systeme, die Ungenauigkeiten und Teilwahrheiten tolerieren, wie sie typisch für die reale Welt sind. Sie ermöglichen robustere und kostengünstigere Lösungen.
Allgemeine Attribute von Softwareprodukten
- Wartbarkeit: Die Fähigkeit, Softwareänderungen vorzunehmen, damit sie sich an neue Bedürfnisse anpassen kann.
- Zuverlässigkeit: Die Software sollte keine physischen oder wirtschaftlichen Schäden verursachen und möglichst keine Systemausfälle haben.
- Effizienz: Die Software sollte Systemressourcen effizient nutzen.
- Benutzerfreundlichkeit: Die Software sollte einfach zu bedienen sein (erfordert angemessene Dokumentation und eine geeignete Benutzeroberfläche).
Software-Prozessmodelle
Ein Software-Prozessmodell ist eine Beschreibung des Prozesses aus einem bestimmten Blickwinkel. Ein Modell ist immer eine Vereinfachung des Software-Prozesses.
Workflow-Modell
Stellt die Abfolge von Aktivitäten im Prozess dar, zusammen mit ihren Eingaben, Ausgaben und Abhängigkeiten.
Datenfluss-Modell
Stellt eine Reihe von Aktivitäten dar, von denen jede eine Transformation der Daten beinhaltet. Die Aktivitäten sind auf einer niedrigeren Ebene als die eines Workflow-Modells und können Computer- oder menschliche Handlungen darstellen.
Rollen-/Aktionsmodell
Stellt die Rollen der Personen und ihre Verantwortlichkeiten im Software-Prozess dar.
Allgemeine Software-Prozessmodelle
Diese Abstraktionen sind nützlich, um verschiedene Ansätze zur Software-Entwicklung zu erklären.
Wasserfallmodell
- Das erste Modell im Software-Entwicklungsprozess, abgeleitet von anderen Ingenieurprozessen.
- Auch bekannt als Software-Lebenszyklusmodell.
- Wird 'Kaskade' genannt, da die Phasen nacheinander durchlaufen werden.