TU Wien:Software Engineering und Projektmanagement VO (Grechenig)/Fragenausarbeitung 2020
Nennen und erklären Sie drei der sieben Grundsätze des Softwaretests nach ISTQB![Bearbeiten | Quelltext bearbeiten]
- Testen zeigt die Anwesenheit von Fehlern
- Vollständiges Testen ist nicht möglich
- Mit dem Testen frühzeitig beginnen
- Häufung von Fehlern
- Tests müssen überarbeitet und erweitert werden
- Testen ist abhängig vom Umfeld
- Trugschluss: Keine Fehler bedeutet ein brauchbares System
Was versteht man unter dem in der LVA diskutierten Vorgehen "Entwicklung auf Zuruf"? Ist dieses Vorgehen einem Softwareprojekt zuträglich? Begründen Sie Ihre Antwort![Bearbeiten | Quelltext bearbeiten]
Neue Anforderungen werden ohne formalen Prozess umgesetzt. Schlecht für Softwareprojekte, weil es keinen Überblick über Änderungen mehr gibt.
Was versteht man unter Anforderungsnachverfolgbarkeit (Traceability)? Warum ist Traceability bei der Durchführung eines Softwareprojekts wichtig?[Bearbeiten | Quelltext bearbeiten]
Der Grad der Übereinstimmung von Anforderung und Design.
- Nachverfolgbarkeit der Quelle: Wer hat die Anforderung eingebracht? Wann? Wie?
- Nachverfolgbarkeit zu anderen Anforderungen: Interdependenzen
- Nachverfolgbarkeit zu abhängigen Artefakten: zu Systemdesign und Testfällen
Was versteht man unter den Begriffen Kopplung und Kohäsion? Welcher Zusammenhang besteht?[Bearbeiten | Quelltext bearbeiten]
- Kopplung: Zusammenhang zwischen zwei getrennten Klassen
- Kohäsion: Zusammenhang innerhalb einer Klasse
Niedrige Kopplung wird erreicht durch hohe Kohäsion
Nennen und erklären Sie die vier in der LVA genannten Paradigmen der serviceorientierten Architektur. Was versteht man unter "business driven" im Kontext von SOA?[Bearbeiten | Quelltext bearbeiten]
Anwendungen werden in verschiedene Services unterteilt. Business-driven bedeutet, dass die Architektur die Geschäftsprozesse des Unternehmens analysiert, modelliert und daraus geeignete Services ableitet. Paradigmen SOA:
- Niedrige Kopplung → Services wiederverwenden
- Abstraktion → weniger Neuentwicklungen
- Standardisierung → Zusammenarbeit von Services
- Composable → Services zu Komponenten zusammenfassen
Was versteht man unter Microservices? Welche Vorteile und Herausforderungen bringen Microservices mit sich?[Bearbeiten | Quelltext bearbeiten]
Bei Microservices werden Systeme in kleinere Einheiten unterteilt, die einzeln entwickelt, deployed und betrieben werden. Vorteile:
- Teams haben volle Kontrolle über ihre Microservices
- Modulare Struktur, Microservices sind unabhängig voneinander
- Schnellere Time-to-Market
- Technologie kann pro Microservice unterschiedlich sein
Herausforderungen:
- Dezentrale Datenhaltung
- Service Discovery zur Laufzeit
- DevOps ist komplex und muss für jedes Microservice neu gelöst werden
- Teams sollten cross-funktional sein
Was versteht man unter Komponententest? Skizzieren und beschreiben Sie das in der LVA vorgestellte Test-Setup für den Komponententest![Bearbeiten | Quelltext bearbeiten]
Komponententests testen funktionale und nichtfunktionale Aspekte einer Komponente (Klasse, Modul etc.).
Komponenten müssen isoliert werden, indem die Schnittstellen zu anderen Komponenten durch Stubs ersetzt (simuliert) werden.
Wozu dienen Design Patterns? Nennen Sie drei Design Patterns der Kategorie "Creational Patterns", erklären Sie eines davon anhand eines Beispiels.[Bearbeiten | Quelltext bearbeiten]
Design Patterns lösen allgemein (abstrakt) wiederholt auftretende Probleme durch bestimmte Strukturen.
Creational Patterns: Singleton, Builder, Factory
Singleton: stellt sicher, dass von einer Klasse immer nur ein Objekt existiert und macht dieses zugreifbar
Erklären Sie das Vorgehen bei Test Driven Development! Erläutern Sie weiters die "zwei goldenen Regeln" von Kent Beck![Bearbeiten | Quelltext bearbeiten]
Zuerst Tests schreiben (muss failen), dann entwickeln, dann Test laufen lassen (muss passen). 2 goldene Regeln:
- Neuen Businesscode nur schreiben, wenn ein Test failed.
- Duplikate entfernen
Was versteht man unter Inversion of Control? Erläutern Sie ein Beispiel dafür![Bearbeiten | Quelltext bearbeiten]
Inversion of Control heißt, nicht der Developer ruft Library-Funktionalität auf, sondern das Framework ruft den Developer-Code auf.
Beispiel: Java Spring Framework, ruft eine bestimmte REST Endpoint Methode auf, wenn ein neuer Request eingeht.
Was versteht man unter den Begriffen Verifikation und Validierung im Kontext des Softwaretestens?[Bearbeiten | Quelltext bearbeiten]
- Verifikation: Überprüfen, ob die Software der Spezifikation entspricht. “Richtig gebaut”
- Validierung: Überprüfen, ob die Software den tatsächlichen Anforderungen entspricht. “Das Richtige gebaut”