Grundlagen der Software-Design-Phase
Eingeordnet in Informatik
Geschrieben am in Deutsch mit einer Größe von 7,9 KB
1) Was ist der Zweck der Design-Phase im Zyklus Software-Entwicklung?
Die Design-Phase sucht, die grundlegenden Anforderungen der Benutzer in Technologie zu übersetzen und zu projektieren, was umgesetzt werden soll. Die Design-Phase entwirft eine Lösung, indem sie unter verschiedenen Ansätzen sucht, die die genannten Anforderungen erfüllen. Während der Analyse-Phase geht es um die Identifizierung des Geschäftsbereichs, den das Projekt betrifft, und darum, zu definieren, wie eine bestimmte Lösung aufgebaut wird. An diesem Punkt sind die Analyse der verfügbaren Technologien und der Umgebungsbedingungen von größter Bedeutung, da sie den Weg für die Annahme einer bestimmten Technologie ebnen.
2) Welche Projekte werden innerhalb der Design-Phase Software generiert?
- Architectural Design Software
- Project Interfaces
- Project Data
- Project Tasks (Procedural)
3) Was sind die Anforderungen an ein Software-Projekt, um modular zu sein?
- Die gesamte zu erstellende Sache repräsentieren;
- Die einzelnen Richtlinien für den Bau im Detail verfeinern;
- Unterschiedliche Visionen der Sache bieten;
- Alternative Ansätze in Bezug auf die Anforderungen des Problems, verfügbaren Ressourcen und Projektkonzepte berücksichtigen;
- Rückverfolgbar zum Analysemodell sein;
- Das Rad nicht neu erfinden, d.h. Komponenten wiederverwenden;
- Die konzeptionelle Lücke zwischen Software und realer Welt minimieren;
WICHTIG: Ein Projekt zielt darauf ab, ein modulares System aufzubauen, das aus kohäsiven und lose gekoppelten Modulen/Komponenten besteht.
4) Was sind die Anforderungen an ein Software-Projekt, um zuverlässig zu sein?
Zuverlässigkeit bezieht sich auf die Aufrechterhaltung der Systemverfügbarkeit und der Integrität der gespeicherten Informationen. Sie sollte Folgendes umfassen: Integritätsbedingungen, Parallelitätskontrolle und Disaster Recovery;
Darüber hinaus, unter dem Aspekt der Einhaltung des Analysemodells, sollte sie:
- Alle expliziten im Analyse-Modell enthaltenen Anforderungen und alle impliziten Anforderungen des Kundenwunsches einbeziehen;
- Eine lesbare und verständliche Anleitung für diejenigen sein, die den Code erstellen, testen und warten werden.
- Ein möglichst vollständiges Bild der Software liefern, das folgende Aspekte behandelt: funktionale und Verhaltensdaten, aus einer Umsetzungsperspektive.
- Strukturiert sein, um Änderungen zu berücksichtigen (Veränderbarkeit);
- Platz für ungewöhnliche Umstände bieten und, falls erforderlich, den Abbruch der Verarbeitung elegant gestalten;
- Den aktuellen Stand der Abstraktion über den Quellcode darstellen.
- Der Qualitätsbeurteilung unterliegen;
- Fehlerüberprüfungen zur Minimierung von Fehlern enthalten.
5) Was ist eine architektonische Vision? Was sind die bekanntesten architektonischen Visionen? Erklären Sie jede.
Architektonische Ansichten erfassen die wichtigsten strukturellen Design-Entscheidungen und zeigen, wie die Software-Architektur in Komponenten zerlegt ist und wie Komponenten durch Konnektoren verbunden sind, um nützliche Formen zu erzeugen. Eine architektonische Vision zielt darauf ab, verschiedene Bereiche in unterschiedliche Ansichten zu trennen, um die Komplexität der Systemverwaltung zu reduzieren. Jede Sicht beschreibt unterschiedliche Engineering-Konzepte. Eine Sicht reduziert die Informationsmenge, die der Software-Architekt zu einem bestimmten Zeitpunkt verwalten muss.
Die wichtigsten zu berücksichtigenden Ansichten sind:
- Use-Case-Sicht: Enthält die Use Cases und Szenarien, die für das Verhalten, die Architektur, die Klassen oder die technischen Risiken wesentlich sind. Sie ist eine Teilmenge des Anwendungsfallmodells.
- Logische Sicht: Enthält die Klassen und ihre Organisation in Pakete und Subsysteme sowie die Organisation dieser Pakete und Subsysteme in Schichten. Sie enthält einige Use-Case-Realisierungen. Sie ist eine Teilmenge des Design-Modells.
- Implementierungssicht: Enthält einen Überblick über das Implementierungsmodell und dessen Organisation in Bezug auf Module und Paketschichten. Die Zuordnung von Paketen und Klassen (aus der logischen Sicht) zu Paketen und Modulen der Implementierungssicht wird ebenfalls beschrieben. Sie ist eine Teilmenge des Implementierungsmodells.
- Prozesssicht: Enthält eine Beschreibung der beteiligten Aufgaben (Prozesse und Threads), ihrer Interaktionen und Konfigurationen sowie die Zuweisung von Objekten und Klassen aus dem Design zu den Aufgaben. Diese Sicht muss nur verwendet werden, wenn das System ein hohes Maß an Parallelität aufweist. Im RUP ist sie eine Teilmenge des Design-Modells.
- Deployment-Sicht: Enthält eine Beschreibung der verschiedenen physischen Knoten, der wichtigsten Komponenten der gemeinsamen Plattform und der Konfigurationen sowie die Zuweisung von Aufgaben (aus der Prozesssicht) zu den physischen Knoten. Diese Sicht muss nur verwendet werden, wenn das System verteilt ist. Sie ist eine Teilmenge des Deployment-Modells.
6) Welche Faktoren können die Wirtschaftlichkeit eines Software-Projekts erhöhen?
- Wiederverwendung: Teilprogramm (kopieren und ändern), Modul, Modulbibliothek, Projekt;
- CASE-Tools;
- Dokumentation;
- Umgebung (Hardware, Software und Peopleware).
- Software-Architektur folgt dem Geschäftsmodell
7) Wie ist es möglich, die Wartbarkeit einer Software zu erhöhen?
Die Wartbarkeit betrifft die Leichtigkeit der Änderung. Einige Maßnahmen zur Erhöhung der Wartbarkeit sind: Festlegung von Normen und Standards für Benutzeroberflächen, Berichte, Nachrichten, Verschlüsselung und Benennung von Dateien, Modulen und Programmen; Dokumentation; Modularisierung;
8) Welche Arten von Kontrollen würden wir einer Software geben, damit sie fehlertolerant wird?
- Dateien: Header-Datensätze (Kopf) und End-Datensätze (Trailer);
- Sicherungen (Backups);
- Log-Dateien für Undo/Redo-Transaktionen;
- Mirroring (gleichzeitiges Schreiben auf zwei Festplatten).
9) Geben Sie Beispiele für Arten von Fehlern, die in einer Software auftreten können?
- Menschlich: Tippfehler oder Bedienungsfehler;
- Transaktion: Laufzeitfehler wie Overflow, Division durch Null, ...;
- System: Hardware-Probleme, Stromausfall, ...;
- Kommunikation: Leitungsfehler, ...;
- Software: Fehler während der Entwicklung.
10) Welche Einschränkungen müssen bei der Software-Design berücksichtigt werden?
- Grenzen der Technologie:
- Kosten;
- Speicherkapazität;
- Verarbeitungsgeschwindigkeit;
- Die Technologie wird wahrscheinlich ausfallen.
- Auswirkungen unvollkommener Technologie:
- Verwendung unterschiedlicher Prozessoren / Verteilung / Kommunikation;
- Redundanz: Wiederholung von Aktivitäten und Daten;
- Einbeziehung abgeleiteter Daten (z. B. Summen);
- Neue Aktivitäten aufgrund der Unvollkommenheit der Technologie (z. B. Audit).
- Erhebung der technologischen Anforderungen zusammen mit den Benutzern:
- Geografische Lage der Benutzer / Datentransport;
- Operative Probleme bei den Aktivitäten der Benutzer;
- Definition der Hard- und Software für die Produktion:
- Häufigkeit der Aktivitäten;
- Datenmenge (erste Schätzung, Wachstum, Archivierungspolitik);
- Antwortzeit;
- Technische Beschränkungen (neue Umgebung?);
- Umgebungsbedingungen (Temperatur, ...);
- Zuverlässigkeitsanforderungen (minimale Zeit zwischen zwei Fehlern);
- Sicherheitsaspekte (Benutzerklassen und Zugriff);
- Benutzeroberfläche.