Klausur Flashcards
Warum scheitern Software-Projekte?
Unklare oder sich ändernde Anforderungen.
Mangelhafte Kommunikation zwischen Stakeholdern.
Unzureichende Planung und Überwachung.
Überschreiten des Budgets oder der Zeitvorgaben.
Mangel an qualifiziertem Personal.
Unzureichende Anwendung von Software-Engineering-Methoden
Was sind die vier grundlegenden Aktivitäten, die alle Softwareprozesse gemeinsam haben?
Softwarespezifikation: Definition der zu entwickelnden Software und ihrer Rahmenbedingungen.
Softwareentwicklung: Design und Programmierung.
Softwarevalidierung: Überprüfung der Software, ob sie den Kundenanforderungen entspricht.
Softwareevolution: Weiterentwicklung zur Anpassung an neue Anforderungen
Was ist der wichtigste Unterschied zwischen generischer Softwareproduktentwicklung und kundenspezifischer Softwareentwicklung?
Generische Softwareprodukte werden für eine breite Zielgruppe entwickelt und können von verschiedenen Kunden genutzt werden (z. B. Office-Anwendungen).
Kundenspezifische Softwareprodukte werden speziell für die Anforderungen eines einzelnen Kunden entwickelt (z. B. Buchhaltungssysteme für eine Bank)
Welches sind die vier wichtigsten Merkmale, die alle professionellen Softwareprodukte aufweisen sollten?
Akzeptanz
Verlässlichkeit
Wartbarkeit
Effizienz
Warum machen unterschiedliche Anwendungstypen spezialisierte Software-Engineering-Techniken erforderlich?
- Eigenständige (stand-alone) Anwendungen:
▪ Anwendungssysteme (oder Apps), die auf einem PC oder mobilen
Gerät laufen. - Interaktive transaktionsbasierte Anwendungen:
▪ Anwendungen, die auf einem entfernten Computer ausgeführt
werden, wie z.B. E-Commerce-Anwendungen. - Eingebettete Steuerungssysteme:
▪ Systeme, die Hardwaregeräte steuern, wie z.B., die Software in
einem Mobiltelefon oder Mikrowellensoftware zum Steuern des
Kochvorgangs. - Stapelverarbeitende (batch processing) Systeme:
▪ Geschäftssysteme, die große Datenmengen verarbeiten, wie z.B.
Telefonabrechnungssysteme und Lohnauszahlungssysteme. - Unterhaltungssysteme:
* Systeme, die zur Unterhaltung ihrer Nutzer dienen, wie z.B. Spiele
Software Engineering: Einführung
Anwendungsarten
Sommerville (2018)
13.01.2025 Yetim / Software Engineering 27 - Systeme für die Modellierung und Simulation:
▪ Systeme, die von Wissenschaftlern und Ingenieuren entwickelt wurden,
um physikalische Vorgänge oder Situationen zu modellieren. - Systeme zur Datenerfassung und -analyse:
* Systeme, die Daten aus ihrer Umgebung sammeln (z.B. mit Sensoren)
und diese Daten an andere Systeme zur Verarbeitung senden, z.B. „Big
Data“-Analyse kann Cloud-basierte Systeme einbeziehen, die
statistische Analyse ausführen. - Systeme von Systemen:
▪ Systeme, die in Unternehmen und anderen großen Organisationen
eingesetzt werden und die aus vielen anderen Softwaresystemen
zusammengesetzt sind, wie z.B. ERP-Systeme
Unterscheiden Sie die phasenorientierte, inkrementelle und iterative Vorgehensmodelle voneinander.
- Phasenorientiertes Modell:
Lineare Abfolge von Phasen wie Analyse, Design, Implementierung, Test und Wartung.
Vorteile: Klare Struktur, gute Planbarkeit.
Nachteile: Änderungen sind schwer umzusetzen, Feedback kommt oft zu spät - Inkrementelles Modell:
Entwicklung erfolgt in Schritten (Inkrementen), wobei jede Stufe ein funktionierendes Teilsystem liefert.
Vorteile: Flexibilität, frühes Feedback, besser geeignet für sich ändernde Anforderungen.
Nachteile: Integration aller Inkremente kann komplex sein - Iteratives Modell:
Wiederholte Zyklen von Analyse, Design, Implementierung und Test innerhalb eines Projekts.
Vorteile: Risiken werden früh erkannt, schrittweises Lernen aus jeder Iteration.
Nachteile: Kann weniger effizient wirken, wenn der Fokus nicht gut gesetzt ist.
Schlagen Sie das am besten geeignete allgemeine Vorgehensmodell für die folgenden Systeme vor und erläutern Sie Ihre Antwort.
a) Ein System, das bei einem Auto das Antiblockiersystem steuert:
V-Modell: Eignet sich aufgrund der strengen Anforderungen an Sicherheit und Verifikation. Jede Entwicklungsphase hat eine entsprechende Testphase, wodurch die Zuverlässigkeit gewährleistet wird
b) Ein Virtual-Reality-System zur Unterstützung der Softwarewartung:
Iteratives Modell oder Spiralmodell: Unterstützt die Entwicklung durch wiederholte Zyklen, in denen neue Funktionen implementiert und getestet werden, während Risiken reduziert werden
.
c) Ein interaktives Reiseplanungssystem, das den Nutzern hilft, Reisen mit den geringsten Auswirkungen auf die Umwelt zu planen:
Inkrementelles Modell: Das Kernsystem kann früh bereitgestellt werden, und zusätzliche Features wie Umweltbewertungen können schrittweise hinzugefügt werden
Erklären Sie, warum inkrementelle Entwicklung der effektivste Ansatz für die Entwicklung von Geschäftssystemen ist. Warum ist dieses Modell weniger geeignet für die Echtzeitsysteme?
Vorteile für Geschäftssysteme:
Schnelle Bereitstellung eines Kernsystems, das genutzt und getestet werden kann.
Anpassung an sich ändernde Anforderungen während der Entwicklung.
Frühzeitiges Feedback von Benutzern
.
Nachteile für Echtzeitsysteme:
Echtzeitsysteme erfordern häufig eine strikte Einhaltung von Timing-Anforderungen, was schwierig in einem inkrementellen Ansatz umzusetzen ist.
Die Integration von Echtzeitkomponenten über mehrere Inkremente hinweg kann technische Herausforderungen mit sich bringen
Welche Kritik üben agile Ansätze an traditionelle Vorgehensweisen?
Traditionelle Modelle sind zu starr und schwerfällig.
Hoher Dokumentationsaufwand kann Kreativität und Flexibilität einschränken.
Veränderungen während der Entwicklung sind schwer zu integrieren.
Planungsprozesse verbrauchen oft mehr Zeit als die eigentliche Entwicklung
Erklären Sie, wie die den agilen Methoden zugrunde liegenden Prinzipien zu einer beschleunigten Entwicklung und Bereitstellung von Software führen.
Fokus auf funktionierende Software statt auf umfangreiche Dokumentation.
Kurze Entwicklungszyklen (Sprints) ermöglichen schnelles Feedback und Anpassungen.
Enge Zusammenarbeit im Team und mit dem Kunden fördert die Effizienz.
Selbstorganisierte Teams nutzen ihre Expertise optimal aus
Warum ist es notwendig, Methoden und Dokumentation von plangesteuerten Ansätzen zu übernehmen, wenn agile Methoden auf große Projekte skaliert werden, die von verteilten Entwicklerteams entwickelt werden?
Bei großen und verteilten Teams ist klare Kommunikation entscheidend, und plangesteuerte Methoden liefern formalisierte Prozesse.
Dokumentation ist wichtig, um ein gemeinsames Verständnis zwischen Teams zu gewährleisten.
Planung und standardisierte Abläufe helfen, die Arbeit über verschiedene Teams hinweg zu koordinieren
Extreme Programming drückt die Benutzeranforderungen in Form von User Stories bzw. Szenarios aus, die jeweils auf eine Karteikarte geschrieben werden. Erörtern Sie die Vor- und Nachteile dieses Ansatzes zur Anforderungsbeschreibung.
Vorteile:
Einfache und klare Darstellung der Anforderungen.
Fördert direkte Kommunikation mit dem Kunden.
Flexibilität bei Änderungen und Priorisierungen
.
Nachteile:
Kann für komplexe Anforderungen unzureichend detailliert sein.
Dokumentation kann lückenhaft werden, wenn keine ergänzenden Prozesse vorhanden sind
Was sind die Argumente für Refactoring und testgetriebene Entwicklung?
Refactoring:
Verbesserung der Codequalität durch Beseitigung von Redundanzen und Erhöhung der Lesbarkeit.
Bessere Wartbarkeit und Anpassbarkeit der Software
.
Testgetriebene Entwicklung:
Fördert die Erstellung von robustem und fehlerfreiem Code durch Tests vor der Implementierung.
Minimiert Fehler durch kontinuierliches Testen während der Entwicklung
.
Nennen Sie zwei praktische Probleme mit agilen Methoden.
Schwierigkeiten bei der Anwendung agiler Ansätze in großen Organisationen mit starren Prozessen.
Herausforderungen bei der Skalierung agiler Methoden für verteilte Teams oder sehr große Projekte
Erläutern Sie die drei Kernaktivitäten (Prozesse) des Requirements-Engineerings.
Anforderungserhebung: Sammlung von Informationen über die gewünschten Funktionen und Einschränkungen des Systems durch Interviews, Workshops, Dokumentenanalyse etc.
Anforderungsanalyse und -spezifikation: Analyse der gesammelten Anforderungen, Erkennung von Konflikten, Präzisierung und Dokumentation.
Anforderungsvalidierung: Überprüfung, ob die ermittelten Anforderungen korrekt, vollständig und widerspruchsfrei sind
Warum ist es wichtig, zwischen den Benutzeranforderungen und den Systemanforderungen zu unterscheiden? Worin unterscheiden sie sich?
Benutzeranforderungen: Allgemein und oft in natürlicher Sprache formuliert; beschreiben, was das System aus Sicht der Benutzer leisten soll.
Systemanforderungen: Technisch detailliert und präzise; beschreiben die Funktionen und Einschränkungen, die das System erfüllen mus
Was sind funktionale und nichtfunktionale Anforderungen?
Funktionale Anforderungen: Beschreiben, was das System tun soll, z. B. Funktionen und Prozesse. Beispiel: “Der Automat gibt ein Ticket aus, wenn der Nutzer eine gültige Kreditkarte eingibt.”
Nichtfunktionale Anforderungen: Beschreiben Qualitätsmerkmale und Einschränkungen des Systems, z. B. Leistung, Sicherheit, Skalierbarkeit. Beispiel: “Das System muss 99,9 % Verfügbarkeit aufweisen”
Warum ist es wichtig, verschiedene (direkte und indirekte) Stakeholders eines Projekts/Systems zu berücksichtigen?
Stakeholder haben unterschiedliche Perspektiven, Anforderungen und Erwartungen.
Direkte Stakeholder (z. B. Endnutzer) beeinflussen die Funktionalität.
Indirekte Stakeholder (z. B. Gesetzgeber) stellen rechtliche oder regulatorische Anforderungen.
Eine unzureichende Berücksichtigung kann zu Konflikten, Verzögerungen oder unzufriedenen Benutzern führen
Finden Sie Mehrdeutigkeiten und Lücken in der folgenden Aufstellung von Anforderungen für einen Teil eines Fahrscheinautomaten:
Text: “Ein Fahrscheinautomat verkauft Zugfahrscheine. Benutzer wählen ihr Ziel aus und geben eine Kreditkarte und eine persönliche Geheimnummer ein. Der Fahrschein wird ausgegeben und vom Konto der Kreditkarte werden die Kosten abgebucht.”
Mehrdeutigkeiten:
Was passiert, wenn die Kreditkarte ungültig ist?
Gibt es Einschränkungen bei der Zielauswahl (z. B. internationale Ziele)?
Lücken:
Keine Angaben zur Unterstützung von Bargeldzahlungen.
Fehlende Beschreibung, was bei Transaktionsfehlern passiert
Stellen Sie eine Reihe nichtfunktionaler Anforderungen für den Fahrscheinautomaten auf und legen Sie seine erwartete Zuverlässigkeit und Antwortzeit fest.
Verfügbarkeit: 99,9 % Betriebszeit.
Antwortzeit: Maximal 2 Sekunden für die Verarbeitung der Kreditkarte.
Sicherheit: Verschlüsselte Übertragung von Kreditkartendaten.
Benutzbarkeit: Menüführung in mindestens drei Sprachen.
Zuverlässigkeit: Der Automat muss in 99 % der Transaktionen korrekt arbeiten
Erläutern Sie drei Probleme bei der Anforderungserhebung.
Schwierigkeiten bei der Kommunikation zwischen Stakeholdern und Entwicklern (Fachsprache vs. technische Begriffe).
Unvollständige oder unklare Anforderungen aufgrund unzureichender Informationen.
Konflikte zwischen Stakeholdern mit unterschiedlichen Prioritäten und Zielen
Welche Argumente sprechen für und gegen Interviews und Ethnographie als Methode der Anforderungserhebung?
Interviews:
Vorteile: Direkte, individuelle Kommunikation, Möglichkeit zur Klärung.
Nachteile: Zeitaufwendig, erfordert geschulte Interviewer.
Ethnographie:
Vorteile: Beobachtung des tatsächlichen Verhaltens, realistische Erkenntnisse.
Nachteile: Hoher Zeitaufwand, Interpretation der Ergebnisse kann subjektiv sein
Wie ist die Schablone für User Stories in agilen Ansätzen aufgebaut? Wozu dienen User Stories und Szenarios in agilen Ansätzen?
Schablone:
“Als [Benutzerrolle] möchte ich [Ziel], um [Nutzen] zu erreichen.”
Zweck:
User Stories: Klar definierte Anforderungen aus Sicht der Benutzer.
Szenarios: Dienen zur Veranschaulichung und Validierung der Anforderungen
Nennen Sie drei Kriterien und drei Techniken, die bei der Validierung der Anforderungen verwendet werden.
Kriterien:
Vollständigkeit.
Konsistenz.
Testbarkeit.
Techniken:
Reviews.
Prototypen.
Testszenarien