Softwaretechnik

Aus II-Wiki
Zur Navigation springen Zur Suche springen
Softwaretechnik (ST)
Vertiefungsrichtung Alle
Vorlesung
Vorlesender

Prof. Dr.-Ing. habil Ilka Philippow

Abschluß
Art k.A.


Klausur

Klausur
Termin
Datum: 00.00.2010
Zeit: 00:00 - 00:00)
Ort: folgt


Schwerpunkte

Alle Schwerpunkte werden in Folge der Abschlussfragen geliefert.


Einführung in die Softwaretechnik

1. Was versteht man unter Software? Warum ist Software so schwer zu entwickeln?

  • Software -> Programme + Daten
    • Kunden: Funktionalität, Zuverlässigkeit, Effizienz, Bedienbarkeit
  • Softwareprodukt -> Software + Entwicklungsartefakt
    • Entwickler: Wartbarkeit, Portierbarkeit
  • Probleme:
    • hohe Komplexität
    • moralischer Verschleiß -> Evolution
    • immateriell -> Konsistenz der Artefakte
    • fehlerbehaftet

2. Erläutern Sie die Ursachen für die s.g. Softwarekrise?

  • rasante Leistungssteigerung preiswerter Hardware
    • Software muss an neue Hardware angepasst werden
    • Leistungssteigerung weckt neue Wünsche und Möglichkeiten
      • moralischer Verschleiß -> Evolution nötig
      • neue Anforderungen -> Komplexität
      • Innovation -> ... time-to-market
  • Entwicklungsmethoden halten damit nicht Schritt
    • Nachfrage wird nicht qualitativ ...

3. Ziel des Softwaretechnik ist die ingenieurmäßige Softwareentwicklung! Welche Basiskonzepte wurden von den Ingenieuren übernommen?

  • saubere Anforderungsspezifikationen
  • Systemanalyse (Zerlegung, Strukturierung) und Systemmodellierung
  • systematisches, methodisches und möglichst automatisiertes ...

4. Was versteht man unter dem Software-Lebenszyklus? Wie kann man die Stilllegung einer langlebigen Software möglichst vermeiden?

  • Produktvision
    • Softwareentwicklung ist teuer
      • ständige evolutionäre Weiterentwicklung durch Grafik siehe Skript
    • iterative Wartung
      • (Anpassung, Verbesserung, Korrektur)
  • Softwareänderung greift in die Softwarearchitektur ein
    • mangelndes Verständnis des Altsystems und die Zerstörung der Architektur kann zur Stilllegung führen (keine Wartbarkeit)
  • Stilllegung kann vermieden werden
    • Dokumentation und Re-engineering (Reverse-engineering und Re-structuring)

5. Was ist der Fokus der vier großen Teildisziplinen der Softwaretechnik?
4 Teilsysteme

  • Entwicklung:
    • lauffähiges Produkt schaffen
  • Qualitätssicherung:
    • Fehler vermeiden, Fehler finden im Vergleich zur Spezifikation
  • Wartung:
    • lebensfähiges Produkt erhalten, kontrolliert Fehler beseitigen und Software an neue Anforderungen anpassen
  • Projektmanagement:
    • Produkterfolg durch Organisation sichern, Produktivität steigern

-> vier eng verzahnte Prozesse


Vorgehensmodelle

1. Was ist der Unterschied zwischen einem Vorgehensmodell und einem Prozessmodell? Wie wird eine Prozessmodell festgelegt?
2. Was ist das Prinzip bei sequenziellen, phasenorientierten Vorgehensmodellen? Nennen Sie Vor- und Nachteile! 3. Erklären Sie den Unterschied zwischen leicht- und schwergewichtigen Vorgehensmodellen? Nennen Sie Beispiele! Was verstehen Sie unter „Tailoring“ von Prozessen? 4. Wodurch erweitert das V-Modell das Wasserfallmodell? Was ist das besondere am V-Modell XT? 5. Erläutern Sie die prinzipiellen Phasen und Produkte eines Softwareentwicklungsprozesses! 6. Welche grundlegenden Probleme treten in den Phasen der Softwareentwicklung auf und wie kann man ihnen prinzipiell begegnen? 7. Was ist die Grundidee beim Prototyping? Welche Vorteile bringt das Protoytyping? 8. Die Innovation neuer Systeme wird zumeist durch die Software erreicht. Überlegen Sie in diesem Kontext, welcher Unterschied zwischen einem Hardware- und einem Softwareprototyp besteht! 9. Welche Idee wird mit der evolutionären Softwareentwicklung verfolgt? Welche Qualitätsmerkmale sind bei evolutionären Systemen besonders zu beachten? Was ist der Unterschied zwischen Iteration und Inkrement? 10. Neben dem V-Modell als Standard für Bundesbehörden hat sich der RUP-Prozess als Industriestandard etabliert. Erläutern Sie den RUP-Prozess? Erklären Sie, wieso der RUP-Prozess als architektur-, anwendungszentriert und iterativ bezeichnet wird! 11. Charakterisieren Sie die Besonderheiten des XP-Vorgehens! 12. Welche zwei Besonderheiten sind beim Objektorientierten Vorgehen zu beachten?


Anforderungsanalyse

1. Erläutern sind Ziel-, Aufgaben und Ergebnis der groben und feinen Anforderungserfassung! Wie ist die Verantwortung verteilt?
2. Welche Informationen sind in der Regel in einem Lasten- bzw. Pflichtenheftheft mindestens enthalten? 3. Die Personalkosten bilden den größten Posten bei der Bestimmung der erwarteten Projektkosten. Wie geht man bei der Aufwandsschätzung prinzipiell vor? Welche Schätzverfahren kennen Sie? Erläutern Sie das Teufelsquadrat nach Sneed! 4. Geg. ist eine geschätzte Programmgröße von 16000 LOC. Schätzen Sie den Personalbedarf und die Entwicklungszeit! 5. Passen Sie die Aufwandsschätzung LH Bild 3.1. an, wenn zusätzlich bei einer Bestellung das Kundenpasswort geprüft und Waren bei einem Zulieferer abgerufen werden können! 6. Bei der Feinanalyse werden Anforderungen vertragsrelevant konkretisiert! Welche kritischen Aspekte sind bei der Anforderungserfassung zu beachten? 7. Wie werden Softwareanforderungen prinzipiell ermittelt? 8. Wie können Anforderungen halbformal beschrieben werden? Welche Rolle spielt das Glossar? 9. Was ist das Analysemodell? Welche Rolle spielt dieses bei bei der Anforderungsanalyse? 10. Im Beispiel Zimmervermietung (siehe Vorlesung) verlangt der Auftraggeber plötzlich, das Kunden sich über ein Passwort anmelden sollen. (Es gibt bereits implementierte Use Cases für „PW vergessen“ und „Neukunde werden“! Modifizieren Sie das Use Case Diagramm und ermitteln Sie die funktionalen SW-Requirements und permanente Daten für den Normalbetrieb für das Pflichtenheft)



Systemanalyse

1. Erläutern Sie die Hierarchieidee der SA? Was sind die Aufgaben und Besonderheiten des Kontextdiagramms?
Kontextdiagramm:

  • Abgrenzung zur Umwelt
  • Datenflüsse zwischen System und allen Quellen bzw Senken
  • System als Black-Box: nur ein Prozess 0, keine Speicher

Hierarchieidee:

  • Basis:
    • → Top-Down Zerlegung der Systemfunktion (Funktionsbaum)
    • → Verfeinerung der Datenflüsse von/zu Speichern

2. Was wird in einem Flussdiagramm im Vergleich zum DFD zusätzlich dargestellt?

  • Datenfluss, spezifiziert im Daten Dictionary und
  • Kontrollfluss, spezifiziert im Requierments Dictionary
  • Zeitspezifikation auf dem Level Kontextdiagramm:
    • → Wiederholung von Ausgaben
    • → Reaktionszeit auf Eingaben
  • Balkendiagramme für die Kontrollflüsse → Cspec

3. Welche Rolle spielt das Data- bzw. Requirements Dictionary in den Phasen der Softwareentwicklung und welche Informationen werden wie abgelegt?

  • Spezifiziert alle im FD bzw. DFD enthaltenen:
    • permanenten Systemdaten (Speicher)
    • Daten- und Kontrollflüsse (FD) sowie Zeitangaben (FD)
  • ist für die Phasen Analyse, Entwurf und Implementierung gültig
  • Problem: Konsistenz und Vollständigkeit
    • → Datenintegrität sichern
    • → dafür keine Werkzeugunterstützung

4. In welcher Weise werden Kontrollflüsse im DFD bzw. FD berücksichtigt?

  • Datenflussdiagramme beschreiben keinen Kontrollfluss
  • der Kontrollfluss der Elemtarfunktion der letzten Ebene wird durch Pseudokode spezifiziert (Minispezifikation)
  • im FD werden Kontrollflüsse verfeinert, jedes FD erhält in Balkennotation die Ein- bzw ausgehenden Kontrollsignale, deren Wirkung in der Cspec konkretisiert wird
  • die Minispezifikation wird durch Prozessaktivierungsangaben erweitert Pspec

5. Wann und wie finden die Konzepte ERM und Entscheidungstabelle ET in der SA ihre Anwendung?

  • ERM: wenn Beziehungen zw Speichern existieren
  • ET: wenn komplexe, verschachtelte Bedingungen in der Minispezifikation auftreten

6. Wie erfolgt eine Kontrollflussspezifikation Cspec bei RT/SA?

  • Zustandsdiagramm
  • und/oder Prozessaktivierungstabelle
  • und einer Pspec

7. Was wird durch die Prozessspezifikation Pspec beschrieben und wie können prinzipiell Prozesse gesteuert werden?

  • Minispezifikation wird erweitert
    • → zusätzlich Informationen, ob der Prozess
  • 1. bei Ereignis startet und sich selbst beendet (issue)
  • 2. bei Ereignis startet und bei Zustandsübergang endet
  • 3. kontinuerlich über die Laufzeit aktiv ist
    • → 1,2 erscheinen in der Prozessaktivierungstabelle

8. Modellieren Sie ein Code-Schloss als Mealy-Automat. Um das Schloss zu öffnen müssen drei Ziffern in der richtigen Sequenz eingegeben werden.

  • verschlossen (Ziffer 1 ok) → warten auf Ziffer 2 (Ziffer 2 ok) → warten auf Ziffer 3 → offen
  • erweitern: Timeout/Fehler_melden, Tür_zu (offen → verschlossen)

9. Ist die nachfolgende Tabelle eine Ein- oder Mehrtrefferentscheidungstabelle? Prüfen Sie die Vollständigkeit! Kann man die Tabelle optimieren?

Tabellen zu frage 4.9.PNG
  • Eintreffer-Tabelle
  • Vollständigkeit erfüllt, bei 3 Bedingungen 8 Regeln
  • Optimierung: R1+R3,R2+R4,R7+R8

10. Versuchen Sie die Lösung zur Aufgabe 10 zu Kap. 4, die in den Arbeitsmaterialien vorgegeben ist, nachzuvollziehen!

  • Lösung bei den Lehrmaterialien zu Kap 4 gegeben

11. Erläutern Sie die Grundidee der UML im Zusammenhang mit den Begriffen Struktur und Verhalten!

  • Idee: Modellierung unterschiedlicher Sichten
  • Statische Sicht, Struktur: Klassenmodell
  • Klasse:
    • Methode, Attribute
    • Beziehungen:
      • zwischen Ober-Unter-Klassen → Vererbung
      • zwischen gleichrangigen Klassen → Assoziation
  • Assoziation:
    • → Aggregation: schwache part-of-Abhängigkeit
    • → Komposition: starke part-of-Abhängigkeit
  • Dynamische Sicht: Verhaltensmodelle
  • Objekt, Prozess, Zustand, Botschaft
    • Modellierung der Kommunikation
      • → Sequenzdiagramm, (Use Case Diagramm)
    • Modellierung des Ablaufs (Methode, Use Case, Geschäftsprozess)
      • → Aktivitätsdiagramm
  • Anwendersicht: Black-Box-Verhalten
  • Use Case Diagramm

12. Ordnen Sie die UML-Analysediagramme den Aktivitäten und Teilprodukten der Softwareentwicklung zu!

  • Grafische Spezifikation funktionaler Anforderungen
    • → Use Case Diagramme (Kommunikation mit der Systemumgebung)
    • → Aktivitätsdiagramme (Ablauf der Use Case)
  • Systemanalyse, Grobentwurf
    • → Klassendiagramme (statisches Fachmodell)
    • → Verhaltensdiagramme (ausgewählte dynamische Aspekte zum Fachmodell)
  • Fachmodell ist Bindeglied zur Feinanalyse (Entwurf)
  • Zusammenhang zwischen Entwicklungsartefakten:
  • Pflichtenheft → Daten → Klassen
  • Use Case Modell ---> Klassenmodell (Attribute, Methoden)
  • Use Case Szenario als Aktivitätsmodell ---> Objektknoten ** → Klassen
  • Klassenmodell (Attribute,Metoden)---> Zustandsmodell (einer, mehrerer Klassen)
  • (Objekte, Methodenaufrufe)-->
  • Interaktionsmodell als Sequenzdiagramm

13. Versuchen Sie die Beispieldiagramme auf den Bildern 4.4.-4.8. zu verstehen und zu erläutern!

14. Lösen Sie die im Arbeitsmaterial enthaltene Aufgabe 14 zuKap. 4! Die Lösungsstruktur ist teilweise vorgegeben.

  • im Use Case Modell 1: Kunde, Anmelden, <includes>, Auftragsbearbeitung, Kudensachbearbeiter, Lagersachbearbeiter

Feinentwurf, Design

1. Erläutern Sie die Begriffe SW-Architektur und Komponente? 2. Nennen Sie Ziel und Aufgaben des Designs (Feinentwurf)! Welche Grundsatzentscheidungen müssen getroffen werden? 3. Welche Rolle spielen Struktogramme beim Entwurf? 4. Erläutern Sie Gemeinsamkeiten und Unterschiede beim strukturierten und modularen Entwurfsvorgehen! 5. Das typische objektorientierte Vorgehen basiert auf der Zerlegung des Systems in Subsysteme und dem darauf folgenden Feinentwurf der Subsysteme. 5.a.Was ist bei der Zerlegung in Subsysteme zu beachten? 5.b.Welche Wiederverwendungskonzepte können eingesetzt werden 6. Architekturmuster bieten Lösungskonzepte für ähnliche Anwendungen. Nennen Sie Ihnen bekannte Architekturmuster und deren Anwendungsbereich! 7. Erklären Sie die Idee der MVC-Architektur! 8. Erläutern Sie den Unterschied der Wiederverwendung von Klassen bzw. Frameworks! 9. Erläutern Sie die Anwendung von abstrakten Klassen, Knotenklassen und Schnittstellenklassen bei Integration von Klassen? 10. Was beschreiben Entwurfsmuster und wo können Sie eingesetzt werden? 11. Erläutern Sie die Merkmale und die Anwendung von Komponenten!



Implementierung und Wartung

1. Nennen Sie Ziel, Aufgaben und Ergebnis der Implementierung!

  • Ziel: lauffähiges System
  • Aufgaben:
    • Transformation Entwurfsmodell in die Programmiersprache
    • Dokumentation erstellen und Testen
  • Ergebnis: Software+Dokumentation+Testfälle

2. Welche Prinzipien sind bei der Implementierung zu befolgen? Was kann dabei Unterstützung leisten?

  • Grundsatz: Egoless implementieren
    • Verbalität zur Selbsterklärung → Glossar
    • Integrierte (schritthaltende Dokumentation)
    • Verständlichkeit bewahren → Richtlinien und Konventionen

3. Nennen Sie die Aufgaben der Softwarewartung?

  • Fehlerkorrektur
  • Verbesserung von Qualitätsmerkmalen
  • Weiterentwicklung (neue bzw. veränderte Anforderungen)
  • Anpassung (neue Hardware, Betriebssysteme, ..)

4. Warum ist ein Änderungsmanagement notwendig? Welche Aufgaben hat das Änderungsmanagement?

  • Bedeutung:
    • vermeidet Architekturzerfall
    • bewahrt die Konsistenz der Produktartefakte
    • erhält die Wartbarkeit
  • Aufgaben:
    • Prüfung der Sinnfälligkeit einer Änderung
    • Prüfung der technischen und wirtschaftlichen Machbarkeit (Erfassung aller betroffenen Artefakte)
    • Auftragserteilung, Überwachung, Archivierung

5. Erläutern Sie den Zusammenhang zwischen der Änderung einer Software, dem Re-Engineering bzw. Restructuring und dem Architekturzerfall?

  • Re-Engineering: Verstehen der Alt-Architekur → wo und wie kann etwas verändert werden
  • Re-Structuring: Veränderung der Architektur, um eine Änderung vorzunehmen und dabei die Wartbarkeit zu erhalten
  • Architekturzerfall: die Struktur der Software wurde aufgrund vieler Änderungen „zerstört“ und kann ohne Folgefehler nicht mehr gewartet werden




Projektmanagement

1. Erläutern Sie die Phasen des Projektmanagements (Ziele und Ergebnisse) und den Bezug zum Softwareentwicklungsprozess! 2. Welche allgemein auftretenden Risiken sind bei einem ITProjekt zu beachten? 3. Welcher Zusammenhang besteht zwischen Risiko, Gewinn und Verlust? 4. Wie erfolgt prinzipiell die Festlegung der Projektstruktur? Welche Aspekte werden in welcher Reihenfolge geplant? 5. Erläutern Sie den Regelkreis zur Projektsteuerung! Wieso bezeichnet man die Planung eines Softwareprojektes als iterativ? 6. Wenden Sie die COCOMO II-Methode für 190 UFP in JAVA zur Aufwandsschätzung an für eine Anwendung im Versicherungswesen und bewerten Sie Ihr Ergebnis! Randbedingungen: a. sie haben ein erfahrenes Team, aber ihre zwei besten Programmierer sind ausgefallen, dafür sind ihre Analysten Spitze b. sie haben bereits für Versicherungen einige kleine Projekte bearbeitet c. die Anwendung soll in die AG-eigene Architektur integriert werden, die einer Schichtenarchitektur entspricht d. an die Zuverlässigkeit werden sehr hohe Anforderungen gestellt 7. Erläutern Sie den Unterschied zwischen konstruktiven und analytischen Maßnahmen zur Qualitätssicherung! Nennen sie Beispiele! 8. Nennen Sie Voraussetzungen und Testaspekte für die Phasen im Testprozess! 9. Welche Anforderungen werden an Testfälle gestellt? 10.Geg. Ist die Spezifikation einer Modulfunktion: Für Eingabewerte im Bereich von 100-200 soll die definierte Modulfunktion ausgeführt werden und das Resultat ausgegeben werden, ansonsten Fehlermeldung! Geben Sie Testfälle für den Black-Box-Test an!