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
Warum muss eine Konfiguration gemanaged werden ?
Um sicher zu gehen, dass eine konsistente, stabile Version entsteht
Änderungen an der Software geordnet, kontrolliert und nachvollziehbar sind
das Entwicklung Kunden entsprechend sind
Was ist statisches/dynamisches Testen?
statisch: Überprüfung des Codes ohne Ausführen des Programms
dynamisch: Überprüfung durch Ausführung des Codes
Was ist das Ziel von Testverfahren?
-Verbesserung der Code Qualität-> Kostenreduzierung, bessere Wartbarkeit
-Sicherstellung des Einhalten von Standards
-Verbesserung der Verständlichkeit
-Fehler finden
Was ist ein Blackbox-Unittest?
-Unit wird gegen Spezifikationen getestet
-ein Fehler ist ein Widerspruch von erwartetem zu tatsächlichem Wert und wird nachgewiesen
-vollständige Fehlersuche und damit Nachweis der Korrektheit nicht möglich
Was ist ein Stapeltest?
Ein Test der automatisch Testfälle abarbeitet bis er ein tatsächlicher Wert vom erwartetem Wert abweicht
Wie ist das V-Modell strukturiert?
Analyse
Entwurf
Implementierung
und während jeder Phase werden bereits Tests dafür entwickelt
Was sind drei mögliche statische Testverfahren?
Inspektion: als Team vorbereiten und dann in Sitzung durch den Code gehen - hoher Aufwand
Review: weniger Personen, etwas weniger Aufwand als Inspektion, da weniger formal
Walkthrough: Autor führt Gutachter durch Code - Gutachter machen Anmerkungen und stellen Fragen
Was ist der Unterschied zwischen einem Blackbox und Whitebox Test?
Blackbox Test:
keinen Zugriff auf den Code
kann von Testern angewendet werden, die keine direkten Kenntnisse haben
wird meist am Ende angewendet um die Funktionalität zu testen
Whitebox:
benötigt Zugriff auf den Code
überprüft die Art und Weise der Implementierung - Struktur, Logik
wird meist bei einzelnen Integrationsstufen angewendet
Was ist der Unterschied zwischen kontrollflussorientierten und datenflussorientierten Whitebox Tests?
Kontrollfluss:
überprüft, ob alle Pfade verwendet werden und alle Entscheidungszweige verwendet werden
Datenfluss:
überprüft den Fluss der Daten in einem System - das sie richtig verarbeitet und übertragen werden
Was ist eine Metrik für die Kompaktheit/Modularität?
das Verhältnis von Bindungen zu Kopplungen
Bindungen: Beziehungen zwischen Elementen innerhalb einer Komponente
Kopplung: Beziehung zwischen Komponenten
Was sind die Anforderungen die durch Softwarearchitektur untersützt werden?
Performanz
Skalierbarkeit
Änderbarkeit
Sicherheit
Verfügbarkeit
Portabilität
Wartbarkeit
Was ist Separation of Concerns?
Teilen von Problemen in Teilprobleme - einzelne Komponenten
Prinzip der Softwarearchitektur
Was ist unter Information Hiding zu verstehen?
Prinzip: nur der für eine Aufgabe nötige Teil von Informationen wird nach außen gegeben
Prinzip der Softwarearchitektur
Was ist Abstraktion im Kontext von Softwarearchitektur?
wichtige Aspekte identifizieren und unwichtige Details weglassen
im Kontext von Schnittstellen - keine ungenutzten Schnittstellen,
Was sind die wichtigen Elemente um eine Softwarearchitektur darzustellen?
Komponenten
Schnittstellen
Beziehungen zu einander (Sender, Empfänger)
Wieso ist Dokumentation in der Softwarearchitektur wichtig?
Um das Verständlichkeit zu erhöhen und somit die Softwarearchitektur analysierbar und wartbarer zu machen