Software Engineering Flashcards
Was ist eine Softwarearchitektur?
Eine Softwarearchitektur unterteilt ein System in Teile (z.B. Komponenten, Module, Objekte)
Komponenten des Systems erhalten dann Verantwortlichkeiten und die Zusammenarbeit aller Komponenten ergibt die geforderte Funktionalität
Was ist das Ziel von Softwarearchitektur?
Die Verringerung von Abhängigkeiten zwischen Komponenten
Was sind nicht-funktionale Anforderungen?
Anforderungen die keine direkten Use-Cases haben z.B.
-technische Bedingungen (Programmiersprache, Datenbank…)
-Geschäftsbedingungen (Schnittstellen, Übergang zu anderen Systemen…)
-Qualitätsattribute (Skalierbarkeit, Verfügbarkeit…)
Qualitätsattribute: Was ist Performanz?
Ausführen von vielen Transaktionen in kurzer Zeit
Performanz ist durch folgende Maße definiert:
-Durchsatz: Arbeitsumfang (z.B. Transaktionen) pro Zeiteinheit
-Antwortzeit: Zeit die eine Anwendung braucht um eine Transaktion durchzuführen
-Terminbindung: Fähigkeit einer Anwendung zeitliche Vorgaben einzuhalten
Qualitätsattribute: Was ist Skalierbarkeit?
gibt an wie gut das Problem gelöst werden kann, wenn die Größe des Problems zunimmt
Anfragelast, Gleichzeitige Verbindungen, Datenumfang
Qualitätsattribute: Was sind Verfügbarkeitsanforderungen?
-Verfügbarkeit: Durchschnittszeit zwischen zwei Ausfällen
-Länge einer Ausfallphase: Zeit bis die Anwendung wieder verfügbar ist
-Wiederaufsetzbarkeit des Systems
Was sind Authentifizierung und Authorisierung?
-Authentifikation: Anwendung kann die Identität eines Nutzers oder einer Anwendung verifizieren
-Authorisierung: authentifizierte Nutzer und Anwendungen haben das Recht, auf definierte Ressourcen zuzugreifen
Qualitätsattribute: Was ist Integration?
-Einfachheit mit der eine Anwendung in einen weiteren Anwendungskontext eingebettet werden kann
Was ist Modularität und was ist das Ziel?
Aufteilung eines Systems in separate unabhängige Module die spezifische Funktionen ausführen und klar definierte Schnittstellen haben
Ziel:
Verständlichkeit
Anpassbarkeit
Robustheit
Wozu dient Dokumentation?
-Software ist leichter verständlich und damit einfacher Wartbar
-geringerer Wissensverlust
Was haben alle Vorgehensmodelle zur Entwicklung von Software gemeinsam?
-Reihenfolge von Arbeitsabläufe in Phasen unterteilt
-machen die Durchführung durch zeitlich und
inhaltlich definierte Phasen überschauberer
-müssen fast immer individualisiert werden / sind selten in Reinform anzutretten
Was ist beim Wasserfallmodell zu beachten?
-Teilphasen müssen vollständig durchlaufen werden
-Phasenabschluss ist durch Vorliegen bestimmter Dokumente definiert
Was sind die Vor- und Nachteile des Wasserfallmodells?
+verständlich
+wenig Managementaufwand
-keine Parallelität
-zu hohe Bedeutung der Dokumente
Unterschiede zwischen einem Systemtest und Abnahmetest
Systemtest : Prüft das Software System auf Anforderungen und Tauglichkeit
Abnahmetest : Test von Kunden auf Tauglichkeit für Inbetriebnahme
Was ist ein horizontaler und was ein vertikaler Prototyp?
ein horizontaler Prototyp enthält nur ausgewählte Komponenten einer Systemschicht
ein vertikaler Prototyp realisiert eine Funktionsauswahl über mehrere Systemschichten (Benutzeroberfläche, Anwendung, Datenbank)
Welche Vorteile bietet die Erstellung eines Prototyps in der Softwareentwicklung ?
Veranschaulichung speziellen Aspekte des Systems
Hilft bei der Kommunikation mit Kunden => schnelleres Feedback
Frühere Fehlererkennung => Kostenersparnis
Begründen Sie warum ein iteratives Vorgehen Vorteile bringen kann?
Kleinen Arbeitsschritten mit regelmäßigen Feedback => auf Kundenwünsche eingegangen werden
reduziert das Risiko, dass das Endprodukt dem Kunden missfällt
Was ist der Rational Unified Process (RUP)?
-Definition von neun Workflows für Kernaufgaben eines Projekts
-vollständige Abdeckung des Entwicklungsprozesses samt Tools, Dokumentations- und Visualisierungssprache
Was sind die Unterschiede zwischen schwergewichtigen und leichtgewichtigen Softwareentwicklungsmethoden?
schwergewichtigen : starre, gut definierte Strukturen,
großer Wert auf Planung und Dokumentation
Bsp : Wasserfallmodell, V-Modell
leichtgewichtigen : Flexibilität, Anpassungsfähigkeit
- Wert auf Zussamenarbeit
- Schnelle Bereitstellung funktionsfähiger Software
- iterative und inkrementelle Herangehensweise = > Feedback integrieren, reagieren
Bsp : Scrum, Extreme Programming, Kanban
Was ist ein Unit-Test / Integrations-Test / System-Test?
Unit-Test : einzelne Funktionalität testen (isoliert)
Integrations-Test : Testet einzelne Units zusammen
System-Test : das gesamte System wird getestet
Was ist eine Software-Konfiguration?
Benannte und formale freigegebene Menge von Software-Elementen mit gültiger Versionsangabe; die Elemente sind aufeinander abgestimmt und erfüllen vorhergesehene Aufgaben
Woraus setzt sich eine Versionsnummer zusammen?
Aus Major, Minor und Patchnummer
Majorversion : API inkompatible Änderung
Minorversion : neue Funktionen kompatibel zur API
Patchversion: Bei Fehlerbehebung und Änderungen, ohne Änderung der Schnittstelle
Was sind Anforderungen, die zu einer neuen Variante führen können?
Produkt in neuem Land/Sprache
Neue Platform ( OS )
Sicherheitsanforderung
V.1.0 –> V.1.0.1.0
Was ist das Check-IN-Check-Out-Modell?
Nutzer sperrt Datei bevor er Änderungen vornimmt und entsperrt nachdem er fertig ist
=> Verhindert das zwei Personen gleichzeitig Änderungen vornehmen
=> Versionenkonflikt
=> Datenverlust (löschen oder Überschreibung)
=> Fehlende Nachverfolgbarkeit