Strukturieren durch Modularisieren VL 1-2 Flashcards
Was sind die Symptome der Softwarekrise und Defizite der derzeitigen Praxis?
- Termin- und Budgetüberschreitung
- Ergebis erfüllt nicht Erwartungen
- Dinge immer wieder entwickeln
- anfangen, dann wieder alles verändern
- Missverständnisse zwischen Beteiligten
- keine Dokumentation
Was ist ingenieurgemäße SW-Entwicklung(6 Punkte)
- Qualitätssicherung und Entwicklung verwoben
- systematisches, methodisches, reifes Vorgehen
- Planung mit Leistungsvorhersage
- Standardisierung, Modularisierung, Wiederverwendung und Automatisierung
- Akkumulation von Wissen
- Arbeitsteilung und Spezialisierung
Was sind die Vorteile einer Vermischung von Problemraum und Lösungsraum?
-explizite Entscheidungen mit besseren Lösungen
Was sind die Nachteile einer Vermischung von Problemraum und Lösungsraum?
- Vorgriff auf Lösungen führt zu Detailentscheidungen
- schränkt Freiheitsgrad bei Suche nach optimaler Lösung ein
Welchen Nutzen können Modelle für Softwareentwicklung bringen
- unterstützen die Kommunikation, Einarbeitung, Abstimmung, Problemlösung
- frühzeitige Prüfungen
- Informationen konservieren für das Verstehen, Verändern, Wiederverwenden
- Auf das Wesentliche konzentrieren
Welche Begriffe für Fehler in Software gibt es?
Mistake: Menschliche Fehlhandlung, die zu einem Fehler(Fault) führen
Fault: Fehler im Quelltext der Software (Codierungsfeheler, Bug)
Failure: Versagen eines Systems aufgrund von Faults
Error: Realisierung entspricht nicht den Forderungen
Was ist defensiver Programmstil?
Grundsätze:
- Risiken vermeiden
- Anwesenheit von Pehlern immer erwarten
- Fehlerreaktion auf minimale Auswirkungen richten
- Auswirkungen von Fehlern verringern/vermeiden
-Robust - unempfindlich gegen Störungen
Was ist das Vertragsmodell der objektorientierten SW-Entwicklung?
Eine Beziehung zwischen Klassen als Vertragsverhältnis, wo der Klient den Dienstleister benutzt.
Vertrag:
Welche Vorleistung muss der Klient erbringen, damit der Dienstleister seine Diente garantiert
Was sind die Bestandteile eines Vertragsmodell?
- bezieht sich immer auf eine Operation einer Klasse.
- wird in der Dienstleister-Klasse festgelegt.
- Vertragsbedingungen werden als Zusicherungen spezifiziert.
Was ist im Vertragsmodell eine Klassen-Invariante?
Eine boolesche Aussage über alle Exemplare einer Klasse, die vor und nach Ausführung jeder Operation der Klasse gelten muss.
Was ist eine statische Analyse?
• Experten analysieren Quelltext – Review • Werkzeuge analysieren Quelltext – Metriken, Strukturanalyse, Korrektheitsbeweise
Was ist eine dynamische Analyse?
• Software wird ausgeführt,
Verhalten beobachtet – Test
Was ist der Test-First-Ansatz?
• Testklassen schreiben vor zu testenden Klassen
• Je Methode: Problemlösung und Randbedingungen durch
Testfall beschreiben
• neue Klasse und Methode sofort getestet
• bei Integration alle Testfälle korrekt durchlaufen
• Später: sichere Veränderung durch automatisiertes Testen
ermöglicht systematisches Refactoring
Welche Zugriffsmodifikatoren gibt es?
- Private: Nur innerhalb der Klasse zugreifbar
- Default: Für alle Klassen im selben Paket
- Protected: Für alle Klassen im selben Paket und Subklassen
- Public: Für alle Klassen im selben Paket und anderen Paketen zugreifbar
Welche Merkmale von Softwaresystemen zeigen deren Komplexität?
- viele Anforderungen
- viele Beteiligte
- mehrere Fachdisziplinen
- viele Bestandteile
Wie kann man Komplexität beherrschbar machen?
- Aufteilung
- Hierarchiebildung
- Patterns
Wie wird das Vertragsmodell in Java umgesetzt?
-In der Dokumentation mit javadoc sind Informationen des Vertrags
@require(Vorbedingung)
@ensure(Nachbedingung)
-Prüfung erfolgt ithilfe von assert
Erläutere verschiedene Arten von Abstraktion
Modelle sind Abstraktionen
- Sicht, z.B. Verhalten, Struktur
- Generalisierung, z.B. Klasse der Insekten
- fachliche Abstraktion, z.B. Geschäftsobjekt Kunde
Was sichert der Dienstleister dem Klienten im Vertragsmodell zu?
Wenn der Klient die Vorbedingungen erfüllt, dann garantiert der Dienstleister die Nachbedingungen.
Was sind die Unterschiede zwischen statischer und dynamischer Analyse?
Statische Analyse:
- frühzeitig möglich
- auch innere Qualitäts Merkmale: Wartbarkeit
- Effizienz hoch
Dynamische Analyse:
- erst nach teilweiser Implementierung möglich
- nur Fehlverhalten, äußere Qualitätsmerkmale
- Effizienz gering
Wie hilft das Vertragsmodell beim Testen?
- Zuständigkeiten von Klient und Dienstleister sind klarer getrennt
- liefert mit Vor- und Nachbedingungen Hinweise auf Testfälle
Welche Vorteile ergeben sich aus dem Test-First-Ansatz?
- Fehlervermeidung
- genaue Verhaltensbeschreibung der Klassen und Methoden
- steigert Vertrauen und Mut zu Änderungen, da es ischerer ist durch automatisiertes Testen