Klausur Flashcards

1
Q

Warum scheitern Software-Projekte?

A

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​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was sind die vier grundlegenden Aktivitäten, die alle Softwareprozesse gemeinsam haben?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist der wichtigste Unterschied zwischen generischer Softwareproduktentwicklung und kundenspezifischer Softwareentwicklung?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Welches sind die vier wichtigsten Merkmale, die alle professionellen Softwareprodukte aufweisen sollten?

A

Akzeptanz
Verlässlichkeit
Wartbarkeit
Effizienz

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Warum machen unterschiedliche Anwendungstypen spezialisierte Software-Engineering-Techniken erforderlich?

A
  1. Eigenständige (stand-alone) Anwendungen:
    ▪ Anwendungssysteme (oder Apps), die auf einem PC oder mobilen
    Gerät laufen.
  2. Interaktive transaktionsbasierte Anwendungen:
    ▪ Anwendungen, die auf einem entfernten Computer ausgeführt
    werden, wie z.B. E-Commerce-Anwendungen.
  3. Eingebettete Steuerungssysteme:
    ▪ Systeme, die Hardwaregeräte steuern, wie z.B., die Software in
    einem Mobiltelefon oder Mikrowellensoftware zum Steuern des
    Kochvorgangs.
  4. Stapelverarbeitende (batch processing) Systeme:
    ▪ Geschäftssysteme, die große Datenmengen verarbeiten, wie z.B.
    Telefonabrechnungssysteme und Lohnauszahlungssysteme.
  5. 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
  6. Systeme für die Modellierung und Simulation:
    ▪ Systeme, die von Wissenschaftlern und Ingenieuren entwickelt wurden,
    um physikalische Vorgänge oder Situationen zu modellieren.
  7. 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.
  8. 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Unterscheiden Sie die phasenorientierte, inkrementelle und iterative Vorgehensmodelle voneinander.

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Schlagen Sie das am besten geeignete allgemeine Vorgehensmodell für die folgenden Systeme vor und erläutern Sie Ihre Antwort.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

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?

A

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​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Welche Kritik üben agile Ansätze an traditionelle Vorgehensweisen?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Erklären Sie, wie die den agilen Methoden zugrunde liegenden Prinzipien zu einer beschleunigten Entwicklung und Bereitstellung von Software führen.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

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?

A

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​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

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.

A

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​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was sind die Argumente für Refactoring und testgetriebene Entwicklung?

A

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​
.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Nennen Sie zwei praktische Probleme mit agilen Methoden.

A

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​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Erläutern Sie die drei Kernaktivitäten (Prozesse) des Requirements-Engineerings.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Warum ist es wichtig, zwischen den Benutzeranforderungen und den Systemanforderungen zu unterscheiden? Worin unterscheiden sie sich?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was sind funktionale und nichtfunktionale Anforderungen?

A

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”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Warum ist es wichtig, verschiedene (direkte und indirekte) Stakeholders eines Projekts/Systems zu berücksichtigen?

A

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​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Finden Sie Mehrdeutigkeiten und Lücken in der folgenden Aufstellung von Anforderungen für einen Teil eines Fahrscheinautomaten:

A

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​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Stellen Sie eine Reihe nichtfunktionaler Anforderungen für den Fahrscheinautomaten auf und legen Sie seine erwartete Zuverlässigkeit und Antwortzeit fest.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Erläutern Sie drei Probleme bei der Anforderungserhebung.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Welche Argumente sprechen für und gegen Interviews und Ethnographie als Methode der Anforderungserhebung?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Wie ist die Schablone für User Stories in agilen Ansätzen aufgebaut? Wozu dienen User Stories und Szenarios in agilen Ansätzen?

A

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

23
Q

Nennen Sie drei Kriterien und drei Techniken, die bei der Validierung der Anforderungen verwendet werden.

A

Kriterien:
Vollständigkeit.
Konsistenz.
Testbarkeit.

Techniken:
Reviews.
Prototypen.
Testszenarien

24
Warum brauchen agile Methoden keinen formalen Änderungsmanagementprozess?
Agile Methoden integrieren Änderungen kontinuierlich durch enge Zusammenarbeit mit dem Kunden und kurze Entwicklungszyklen. Änderungen werden direkt in die nächsten Iterationen aufgenommen​
25
Entwickeln Sie eine Reihe von Anwendungsfällen für ein Geldautomatensystem.
Anwendungsfälle: Geld abheben: Benutzer gibt Karte und PIN ein, wählt den Betrag aus, und das System gibt das Geld aus. Kontostand anzeigen: Benutzer gibt Karte und PIN ein, und das System zeigt den aktuellen Kontostand. Geld einzahlen: Benutzer gibt Karte ein, legt Geld in das Fach, und das System bestätigt die Einzahlung​ .
26
Modelle können in Software-Engineering zu verschiedenen Zwecken benutzt werden. Geben Sie jeweils den Nutzungszweck während des Requirements-Engineerings, während des Entwurfsprozesses und nach der Implementierung an.
Requirements-Engineering: Modelle dienen zur Klärung und Dokumentation der Anforderungen (z. B. durch Use-Case-Diagramme). Entwurfsprozess: Modelle helfen bei der Visualisierung und Strukturierung der Architektur und Designentscheidungen (z. B. Klassendiagramme). Nach der Implementierung: Modelle werden zur Dokumentation des Systems verwendet und helfen bei der Wartung (z. B. Aktivitätsdiagramme)​
27
Erläutern Sie kurz die vier Typen von Modellen: Kontextmodelle, Interaktionsmodelle, strukturelle Modelle und Verhaltensmodelle, und nennen Sie jeweils ein zur Verwendung geeignetes UML-Diagramm.
Kontextmodelle: Zweck: Darstellung der Beziehungen zwischen dem System und seiner Umgebung. Beispiel: Use-Case-Diagramme. Interaktionsmodelle: Zweck: Modellierung von Interaktionen zwischen Systemkomponenten oder zwischen Benutzern und dem System. Beispiel: Sequenzdiagramme. Strukturelle Modelle: Zweck: Darstellung der statischen Struktur eines Systems. Beispiel: Klassendiagramme . Verhaltensmodelle: Zweck: Modellierung des dynamischen Verhaltens des Systems. Beispiel: Zustandsdiagramm
28
Erklären Sie, warum es wichtig ist, den Kontext eines zu entwickelnden Systems zu modellieren.
Der Kontext zeigt, wie das System mit externen Entitäten wie Benutzern, anderen Systemen oder Hardware interagiert. Dies hilft, Schnittstellen und externe Abhängigkeiten klar zu definieren, mögliche Konflikte zu vermeiden und die Anforderungen präziser zu spezifizieren
29
Wie können Sie ein Modell eines Systems benutzen, das bereits existiert?
Es kann zur Analyse der aktuellen Funktionalität, zum Erkennen von Schwachstellen und zur Planung von Erweiterungen oder Überarbeitungen verwendet werden. Solche Modelle dienen auch als Basis für die Dokumentation und die Einarbeitung neuer Teammitglieder​
30
Schlagen Sie eine Reihe von Anwendungsfällen für das Mentcare-System vor, die die Interaktionen zwischen einem Arzt, der Patienten empfängt und Medikamente verschreibt, und dem Mentcare-System veranschaulichen.
Patientendaten anzeigen: Der Arzt ruft die Krankengeschichte eines Patienten auf. Medikamente verschreiben: Der Arzt gibt ein Rezept ein, das im System gespeichert wird. Patienten überwachen: Warnungen bei Problemen wie fehlender Medikamentenverordnung. Verwaltungsberichte erstellen: Automatische Erstellung von Berichten zur Leistung des Systems
31
Was versteht man unter „modellgetriebene Softwareentwicklung“ und „modellgetriebene Architektur“?
Modellgetriebene Softwareentwicklung (MDSD): Ansatz, bei dem Modelle als zentrale Artefakte für die Entwicklung genutzt werden. Der Code wird oft automatisch aus Modellen generiert. Modellgetriebene Architektur (MDA): Konkrete Umsetzung von MDSD, wobei standardisierte Modelle wie PIM (Plattformunabhängiges Modell) und PSM (Plattformspezifisches Modell) verwendet werden​
32
Erklären Sie, warum man bei der Beschreibung eines Systems mit dem Entwurf der Systemarchitektur beginnen muss, noch bevor die Anforderungsspezifikation vollständig ist
* Die Architektur kann als Diskussionsgrundlage für Projektbeteiligte dienen * Die Architektur ermöglicht eine Analyse, ob das System die kritischen nichtfunktionalen Anforderungen erfüllt * wie z.B. die Leistungsfähigkeit, die Zuverlässigkeit und die Wartbarkeit. ▪ Die Architektur ist für Systeme mit ähnlichen Anforderungen oftmals gleich und kann somit eine umfangreiche Wiederverwendung der Software unterstützen. Der Entwurf der Architektur gibt eine grundlegende Struktur vor, die spätere Entscheidungen über Implementierung und Design leitet. Dies hilft, die Machbarkeit der Anforderungen zu überprüfen und erste technische und organisatorische Risiken zu identifizieren. Frühzeitige Architekturentscheidungen ermöglichen auch die Identifikation notwendiger Ressourcen​
33
Erläutern Sie, warum Konflikte auftauchen können, wenn eine Architektur entworfen wird, für die sowohl Verfügbarkeits- als auch Informationssicherheitsanforderungen die wichtigsten nichtfunktionalen Anforderungen sind.
Z.B. die Leistungsfähigkeit verlangt große Komponenten, die Wartbarkeit kleine Komponenten * ein Kompromiss ist erforderlich. * Dies ist manchmal durch die Verwendung verschiedener Architekturmuster für separate Teile des Systems möglich.
34
Erklären Sie, warum Sie beim Entwurf der Architektur eines großen Systems in der Regel mehrere Architekturmuster benutzen.
Große Systeme umfassen unterschiedliche Komponenten mit spezifischen Anforderungen. Verschiedene Architekturmuster (z. B. Client-Server, Schichtenarchitektur) sind für unterschiedliche Anforderungen geeignet. Ein Mix von Mustern erlaubt Flexibilität, Skalierbarkeit und Wartbarkeit
35
Stellen Sie Client-Server-, Schichten- und service-orientierten Architekturmuster gegenüber und berücksichtigen Sie dabei jeweils den Zweck und Vor- und Nachteile.
Client-Server: Zweck: Kommunikation zwischen Client (Anwender) und Server (Datenverarbeitung). Vorteile: Zentralisierte Kontrolle, einfache Wartung. Nachteile: Abhängigkeit von der Serververfügbarkeit, Skalierungsprobleme. Schichtenarchitektur: Zweck: Trennung von Verantwortlichkeiten (z. B. Präsentation, Logik, Daten). Vorteile: Hohe Modularität, leichtere Wartung. Nachteile: Performanceeinbußen durch zusätzliche Kommunikation zwischen Schichten. Service-orientierte Architektur (SOA): Zweck: Bereitstellung unabhängiger, wiederverwendbarer Dienste. Vorteile: Flexibilität, Integration unterschiedlicher Systeme. Nachteile: Komplexität bei der Verwaltung und Orchestrierung von Diensten
36
Schlagen Sie eine Architektur für ein System (wie iTunes) vor, das eingesetzt wird, um Musik über das Internet zu verkaufen und zu vertreiben. Welche Architekturmuster bilden die Grundlage für die von Ihnen vorgeschlagene Architektur?
vorgeschlagene Architektur: Client-Server-Muster für die Interaktion zwischen Nutzern und zentralen Servern. Schichtenarchitektur zur Trennung von Benutzeroberfläche, Geschäftslogik und Datenmanagement. Service-orientierte Architektur für die Integration externer Dienste wie Zahlungsanbieter. Diese Kombination bietet Flexibilität und Skalierbarkeit für den wachsenden Benutzerstamm​
37
Listen Sie die fünf gängigen Aktivitäten in objektorientierten Designprozessen auf und erläutern Sie kurz, was in jeder Aktivität getan wird.
1. den Kontext und die externen Interaktionen des Systems verstehen und definieren 2. die Systemarchitektur entwerfen 3. die wichtigsten Objekte im System bestimmen; 4. Entwurfsmodelle entwickeln; 5. Schnittstellen spezifizieren. .
38
Erklären Sie die Idee/den Zweck von Entwurfsmustern (Design Patterns) anhand eines Entwurfsmuster-Beispiels.
Zweck: Entwurfsmuster bieten bewährte Lösungen für wiederkehrende Designprobleme und fördern Wiederverwendbarkeit und Wartbarkeit. Beispiel: Das Singleton-Muster sorgt dafür, dass eine Klasse genau eine Instanz hat, z. B. für einen zentralen Konfigurationsmanage
39
Welchen Vorteil bringen die Möglichkeiten der Softwarewiederverwendung in einem Softwareentwicklungsprojekt? Was kann man wiederverwenden (d.h. die Ebenen der Softwarewiederverwendung)?
Vorteile: Reduzierter Entwicklungsaufwand. Schnellere Markteinführung. Verbesserte Qualität durch getestete Komponenten. Ebenen: Code-Wiederverwendung: Funktionen, Klassen, Bibliotheken. Architektur-Wiederverwendung: Wiederverwendbare Architekturmuster. Prozess-Wiederverwendung: Standardisierte Vorgehensweisen​
40
Erklären Sie anhand von Beispielen, warum Konfigurationsmanagement wichtig ist, wenn ein Softwareprodukt von einem Team entwickelt wird.
Wichtigkeit: Erleichtert die Zusammenarbeit, indem Änderungen nachverfolgt und Konflikte vermieden werden. Ermöglicht Rückverfolgbarkeit und Reproduktion früherer Versionen. Beispiele: Nutzung eines Versionskontrollsystems wie Git, um parallele Entwicklungen verschiedener Teams zu koordinieren. Identifikation und Behebung eines Fehlers in einer früheren Version des Codes​
41
Was ist der Unterschied zwischen Validierung und Verifizierung?
Verifizierung: Überprüfung, ob das System gemäß den Spezifikationen entwickelt wurde ("Bauen wir das System richtig?"). Validierung: Überprüfung, ob das System den Anforderungen der Nutzer entspricht ("Bauen wir das richtige System?")​
42
Was kann man mit der Softwareinspektion überprüfen und was nicht?
Überprüfbar: Korrektheit der Spezifikationen und des Codes. Einhaltung von Standards und Konventionen. Verständlichkeit und Wartbarkeit des Codes. Nicht überprüfbar: Funktionales Verhalten des Systems in realen Szenarien. Laufzeit- und Performanzprobleme​
43
Erklären Sie, warum Tests nur das Vorhandensein von Fehlern aufdecken können, aber nicht ihre Abwesenheit.
Tests überprüfen nur die vom Tester definierten Szenarien. Es ist unmöglich, alle potenziellen Eingaben und Zustände eines komplexen Systems zu testen. Ein erfolgreicher Test zeigt, dass das System in einer bestimmten Situation korrekt funktioniert, aber nicht, dass es in allen Situationen fehlerfrei ist
44
Führen Sie Argumente für und gegen das Testen durch die Entwickler auf.
Argumente dafür: Entwickler kennen den Code und können gezielt Tests für kritische Bereiche erstellen. Schnelle Erkennung und Behebung von Fehlern. Argumente dagegen: Mangelnde Objektivität, da Entwickler möglicherweise unbewusst ihre eigenen Fehler übersehen. Potenzielles Fehlen einer umfassenden Testabdeckung​
45
Sie wurden aufgefordert, eine Methode namens berichtigeLeerzeichen in einem Objekt namens Paragraph zu testen, die innerhalb eines Absatzes aufeinanderfolgende Leerzeichen durch ein einzelnes Leerzeichen ersetzt. Legen Sie Testklassen fest und leiten Sie daraus eine Testreihe ab.
Testklassen: Eingaben ohne Leerzeichen. Eingaben mit einem Leerzeichen. Eingaben mit mehreren aufeinanderfolgenden Leerzeichen. Eingaben mit Leerzeichen am Anfang oder Ende. Testreihe: Eingabe: "Dies ist ein Test." → Erwartete Ausgabe: "Dies ist ein Test." Eingabe: " Voran und Nachlauf " → Erwartete Ausgabe: "Voran und Nachlauf." Eingabe: "Test" → Erwartete Ausgabe: "Test"​ .
46
Was ist mit dem Begriff „testgetriebene Entwicklung“ gemeint? Skizzieren Sie die groben Schritte.
Testgetriebene Entwicklung (TDD): Entwicklungsansatz, bei dem Tests vor der Implementierung geschrieben werden. Schritte: Einen fehlgeschlagenen Test schreiben. Minimalen Code schreiben, um den Test zu bestehen. Den Code verbessern (Refactoring), ohne dass der Test fehlschlägt. Prozess wiederholen​
47
Was versteht man unter Regressionstests? Erklären Sie, wie der Einsatz automatisierter Tests und eines Test-Frameworks wie JUnit Regressionstests vereinfacht.
Bei einem Regressionstest werden Testmengen, die bereits erfolgreich ausgeführt wurden, nach Änderungen im Programm erneut ausgeführt, um sicherzustellen, dass die Änderungen keine Fehler verursachen Automatisches testen reduziert die Kosten des Regressionstestens, da Regressionstest teuer und manuell nicht immer durchführbar sind.
48
Verfassen Sie ein Szenario, das dazu dienen kann, Tests für das Wetterstationssystem zu entwerfen.
Die Wetterstation misst Temperatur, Luftdruck und Windgeschwindigkeit. Testfälle: Überprüfung der korrekten Datenübertragung an die Zentrale. Simulation eines Hardwarefehlers und Prüfung, ob das System einen Fehlerbericht generiert. Test, ob die Wetterstation bei starkem Wind die Energiemanagementsysteme korrekt aktiviert
49
Was verstehen Sie unter dem Begriff „Lasttest“? Machen Sie Vorschläge für Lasttests für das Mentcare-System.
Lasttest: Überprüfung der Systemleistung unter hoher Belastung (z. B. viele gleichzeitige Benutzer). Vorschläge für das Mentcare-System: Simulieren von 1000 gleichzeitigen Benutzern, die Patientendaten anzeigen. Testen der Geschwindigkeit beim Generieren großer Berichte. Überprüfen der Datenbankantwortzeit bei Massendatenimporten​
50
Welche Vorteile bringt es, Benutzer bei Freigabetests in einer frühen Phase des Testprozesses einzubeziehen? Gibt es Nachteile bei der Benutzerbeteiligung?
Vorteile: Frühzeitiges Feedback zur Benutzerfreundlichkeit und Funktionalität. Erkennung von Problemen, die Entwicklern möglicherweise entgehen. Nachteile: Möglicherweise unstrukturiertes Feedback. Zusätzlicher Aufwand für die Organisation und Anleitung der Benutzer​
51
Erläutern Sie, warum ein in einer realen Umgebung eingesetztes Softwaresystem geändert werden muss oder nach und nach an Nutzen verliert.
Änderungen sind notwendig aufgrund von: Neuen oder geänderten Anforderungen der Benutzer oder des Marktes. Technologischem Fortschritt, der alte Systeme obsolet macht. Gesetzlichen oder regulatorischen Änderungen. Ein System verliert an Nutzen, wenn es nicht mehr den aktuellen Anforderungen entspricht, schwer zu warten ist oder die Kosten für Änderungen zu hoch werden​ .
52
Unter welchen Umständen könnte sich ein Unternehmen entschließen, ein System auszumustern, wenn die Beurteilung des Systems nahelegt, dass es über eine hohe Qualität und einen hohen Geschäftswert verfügt?
Ein System kann ausgemustert werden, wenn: Die Wartungskosten die Vorteile übersteigen. Das System mit modernen Technologien oder Standards nicht kompatibel ist. Die Integration in neue Geschäftsprozesse nicht mehr möglich ist. Alternativen verfügbar sind, die kostengünstiger oder effizienter sind​ .
53
Welche Strategien stehen für die Weiterentwicklung von Altsystemen zur Auswahl? Wann würden Sie normalerweise ein System teilweise oder vollständig ersetzen, statt die Software weiterhin zu warten?
Strategien: Wartung: Fehlerbehebung und Anpassung an neue Anforderungen. Reengineering: Überarbeitung des bestehenden Systems, um es an moderne Standards anzupassen. Ersatz: Entwicklung eines neuen Systems. Ersetzung wird bevorzugt, wenn: Das Altsystem die Geschäftsanforderungen nicht mehr erfüllt. Die Kosten für Wartung oder Erweiterung zu hoch sind. Technologische Einschränkungen die Funktionalität beeinträchtigen​ .
54
Beschreiben Sie kurz die drei Hauptarten der Softwarewartung.
Korrektive Wartung: Behebung von Fehlern, die nach der Auslieferung festgestellt wurden. Adaptive Wartung: Anpassung des Systems an neue Hardware, Betriebssysteme oder Umgebungen. Perfektionierende Wartung: Verbesserung der Systemleistung oder der Benutzerfreundlichkeit​
55
Erläutern Sie die Unterschiede zwischen dem Reengineering und dem Refactoring von Software.
Reengineering: Umfasst eine umfassende Überarbeitung des Systems, einschließlich Analyse, Design und Implementierung. Ziel: Verbesserung der Struktur und Funktionalität für langfristige Nutzbarkeit. Refactoring: Fokus auf kleine, schrittweise Verbesserungen des Codes, ohne die äußere Funktionalität zu ändern. Ziel: Erhöhung der Wartbarkeit und Lesbarkeit​
56