05.08.2013 Aufrufe

Einführung in Software Engineering

Einführung in Software Engineering

Einführung in Software Engineering

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>Software</strong> Eng<strong>in</strong>eer<strong>in</strong>g<br />

1) Kap. 1 <strong>E<strong>in</strong>führung</strong><br />

a) Probleme beim <strong>Software</strong> Eng<strong>in</strong>eer<strong>in</strong>g<br />

• Kommunikationsprobleme mit dem Anwender<br />

• <strong>Software</strong> immateriell und nicht durch physikalische Gesetze begrenzt<br />

Modellbildung schwierig<br />

• e<strong>in</strong>fache Modifizierung<br />

(1) Anforderungsänderung während Entwicklungszeit<br />

• <strong>Software</strong> Verschleißt nicht, altert aber<br />

(1) Wartungsproblem<br />

• verschiedene Plattformen<br />

(1) Portabilitätsprobleme<br />

• Variantenvielfalt<br />

• Akzeptanzprobleme<br />

(1) „Das machen wir schon seit 30 Jahren auf dem Papier“<br />

• Mängel an Standards, Methoden und Werkzeuge<br />

b) Def<strong>in</strong>ition <strong>Software</strong><br />

• Gesamtheit oder Teil der Programme, welche für Rechnersysteme entwickelt wurden<br />

• ermöglichen zusammen mit Rechensystemeigenschaften:<br />

(1) Betrieb der Rechensysteme<br />

(2) Nutzung zur Lösung gestellter Aufgaben<br />

(3) zusätzliche Betriebs‐ und Anwendungsarten der Rechensysteme<br />

(4) zugehörige Dokumentation ist <strong>Software</strong>‐Bestandteil<br />

c) Hauptprobleme <strong>Software</strong>entwicklung<br />

• kont<strong>in</strong>uierlich steigende Kosten für <strong>Software</strong><br />

• kont<strong>in</strong>uierlich steigende durchschnittliche Projektgröße (bei konstanter Projektdauer)<br />

• ger<strong>in</strong>ge Produktivität der <strong>Software</strong>entwickler<br />

(1) mangelnde berufliche Qualifikation<br />

(2) unzulängliche Arbeitsumgebungen<br />

• große Fehlerhäufigkeit<br />

• hoher Wartungsaufwand<br />

d) Merke:<br />

• für Entwicklung großer <strong>Software</strong>produkte mit vielen LOC braucht man andere<br />

Vorgehensweisen als zum Lösen kle<strong>in</strong>er Übungsaufgaben<br />

• <strong>Software</strong>technik (<strong>Software</strong> Eng<strong>in</strong>eer<strong>in</strong>g) verhält sich zur Informatik (Computer Science)<br />

wie die Elektrotechnik zur Physik<br />

2) Kap. 2 Qualitätsmerkmale<br />

a) <strong>Software</strong>qualitätsmerkmale<br />

• Ziel ist effiziente Entwicklung messbar qualitativ hochwertiger <strong>Software</strong> die:<br />

(1) korrekt und zuverlässig arbeitet<br />

(2) robust auf Fehle<strong>in</strong>gaben, Hardwareausfall usw. reagiert<br />

(3) effizient (ökonomisch) mit Hardwareressourcen umgeht<br />

(4) benutzerfreundliche Oberfläche besitzt<br />

(5) wartbar und wiederverwendbar ist<br />

• Unterscheidung zwischen <strong>in</strong>terner‐ und externer Qualitätsfaktoren<br />

• Achtung: Unterschied Qualität <strong>Software</strong>entwicklungsprozess<br />

b) Korrektheit<br />

• <strong>Software</strong> ist funktional korrekt, wenn sie sich genauso verhält, wie <strong>in</strong><br />

Anforderungsdef<strong>in</strong>ition festgelegt relativ<br />

c) Zuverlässigkeit


• Maß für Wahrsche<strong>in</strong>lichkeit das sich <strong>Software</strong>system <strong>in</strong> bestimmtem Zeitraum wie<br />

erwartet verhält.<br />

• Metriken zur Zuverlässigkeitsbewertung<br />

(1) „rate of failure occurence“ (ROFOC) : Häufigkeit von nicht erwartetem Verhalten<br />

(2) „mean time to failure/ between failures“ (MTTF/MTBF): mittlerer Zeitabstand<br />

zwischen zwei Fehlern<br />

(3) „availability“ (AVAIL): mittlere Verfügbarkeit der <strong>Software</strong><br />

d) Verfügbarkeit<br />

• quantifizierbarer Teilaspekt der Zuverlässigkeit<br />

e) Robustheit<br />

<br />

<br />

• <strong>Software</strong> ist robust wenn sie auch unter unvorhergesehenen Umständen funktioniert<br />

f) Wartbarkeit<br />

• Änderungen an <strong>Software</strong> aufgrund von Fehlern oder geänderter Anforderungen<br />

• Wartbarkeit bedeutet:<br />

(1) Lokalisierbarkeit und Behebbarkeit von Fehlern<br />

(2) Anpassbarkeit<br />

(3) Portabilität<br />

• jede Wartung reduziert die Wartbarkeit bis <strong>Software</strong> nicht mehr änderbar ist.<br />

g) Portierbarkeit<br />

• System ist portierbar wenn es ohne großen Aufwand auf verschiedenen Umgebungen<br />

läuft.<br />

• Erreichbar durch:<br />

(1) Trennung (kle<strong>in</strong>er) umgebungsabhängiger Teile vom Rest des Systems<br />

(2) Verwendung standardisierter (Programmier‐) Sprachen<br />

(3) Verwendung standardisierter (verbreiteter) Betriebssysteme<br />

(4) Verwendung standardisierter Fenstersysteme<br />

h) Kompatibilität<br />

• SW kann leicht mit anderer SW kooperieren<br />

• Wichtig hierbei:<br />

(1) Standards für Schnittstellen und Austauschformate<br />

(2) offene Systeme mit austauschbaren Komponenten<br />

i) Benutzerfreundlichkeit<br />

• <strong>Software</strong> Ergonomie<br />

(1) Problemangemessenheit<br />

(2) Selbsterklärungsfähigkeit<br />

(3) Konfektionierbarkeit<br />

(4) Erwartungskonformität<br />

(5) Steuerbarkeit<br />

j) Dokumentation<br />

• Benutzerdokumentation<br />

•<br />

•<br />

technische Dokumentation<br />

Entwicklungsdokumentation<br />

Systemdokumentation<br />

k) Effizienz<br />

• Ökonomische Nutzung der Hardware Ressourcen (Rechenzeit, Speicher)<br />

• Effizienzermittlung<br />

(1) theoretische Komplexitätsanalyse (O‐von‐Rechnungen)<br />

(2) Simulationsmodelle<br />

(3) Messungen am realen System (Profil<strong>in</strong>g,..)<br />

l) Effizienz des <strong>Software</strong>herstellungsprozesses<br />

• produktive <strong>Software</strong>herstellung


• möglichst wenig Mitarbeiter, möglichst kurze Zeit, möglichst gute <strong>Software</strong><br />

• Produktionszeit <strong>Software</strong>qualität<br />

• Lösung:<br />

(1) Wiederverwendung von <strong>Software</strong>komponenten<br />

(2) Vorgehensweisen<br />

(3) E<strong>in</strong>satz hoher Programmiersprachen<br />

(4) Codegenertoren<br />

• Verbesserung der Prozessqualität<br />

(1) <strong>Software</strong>entwicklungsprozesse s<strong>in</strong>d selbst Produkte deren Qualität überwacht und<br />

verbessert werden muss<br />

(2) bei <strong>Software</strong>entwicklung s<strong>in</strong>d Standards e<strong>in</strong>zuhalten (dokumentiert, nachvollziehbar)<br />

(3) kont<strong>in</strong>uierliche Anstrengungen um Schwächen zu identifizieren und zu elim<strong>in</strong>ieren<br />

(4) „Gute Prozesse führen zu guter <strong>Software</strong>“<br />

• Qualitätssicherung mit ISO 9000<br />

(1) prozessorientierter Aufbau<br />

(2) Anwendung auf Produktion und Dienstleistungen<br />

(a) Prüfung des QM‐Handbuchs auf E<strong>in</strong>haltung der <strong>in</strong> Norm geforderten<br />

Anforderungen<br />

(b) Prüfung auf E<strong>in</strong>haltung und Umsetzung des eigenen QM‐Handbuchs<br />

(c) „bestanden“ oder „nicht bestanden“<br />

(3) vorgeschriebene Dokumente<br />

(a) Vertrag Auftraggeber – Lieferant<br />

(b) Spezifikation<br />

(c) Entwicklungsplan<br />

(d) Qualitätssicherungsplan<br />

(e) Testplan<br />

(f) Wartungsplan<br />

(g) Konfigurationsmanagement<br />

(4) vorgeschriebene Tätigkeiten<br />

(a) Konfigurationsmanagement<br />

(b) Dokumentmanagement<br />

(c) Qualitätsaufzeichnungen<br />

(d) Festlegung<br />

(e) Schulung<br />

(5) Bei E<strong>in</strong>haltung aller Kriterien folgt Zertifizierung durch unabhängige<br />

Zertifizierungsstelle<br />

(6) Bewertung<br />

(a) Pro<br />

(i) lenke Aufmerksamkeit des Management auf Qualitätssicherung<br />

(ii) ist gutes Market<strong>in</strong>g Instrument<br />

(iii) reduziert Produkthaftungsrisiko<br />

(b) Contra<br />

(i) Nachvollziehbarkeit und Dokumentation nicht ausreichend<br />

(ii) ke<strong>in</strong>e Aussage über Qualität von Prozessen und Produkten<br />

(iii) teurer bürokratischer Aufwand<br />

(iv) Qualifikation der Zertifizierungsstellen umstritten<br />

(v) große Abweichung zwischen zertifiziertem und realem Prozess<br />

• Capability Maturity Model – CMM<br />

• Referenzmodell zur Beurteilung von <strong>Software</strong>lieferanten<br />

• <strong>Software</strong>entwicklungsprozesse <strong>in</strong> 5 Reifegrade unterteilt<br />

• Reifegrad entspricht Qualitätsstufe<br />

(1) Stufe 1 – chaotischer ad‐hoc Prozess


(a) Charakteristik<br />

(i) unvorhersehbare Entwicklungskosten, ‐zeit und –qualität<br />

(ii) ke<strong>in</strong> Projektmanagement, nur Künstler am Werk<br />

(b) Verbesserungen<br />

(i) Planung von Kosten und Zeit<br />

(ii) Änderungs‐ Qualitätssicherungsmanagement<br />

(2) Stufe 2 – wiederholbarer <strong>in</strong>tuitiver Prozess<br />

(a) Charakteristik<br />

(i) Kosten und Qualität schwanken, gute Term<strong>in</strong>kontrolle<br />

(ii) Know‐How e<strong>in</strong>zelner Personen entscheidend<br />

(b) Verbesserungen<br />

(i) Prozessstandards entwickeln<br />

(ii) Methoden für Analyse, Entwurf, Tests … entwickeln<br />

(3) Stufe 3 – def<strong>in</strong>ierter qualitativer Prozess<br />

(a) Charakteristik<br />

(i) zuverlässige Kosten‐ und Term<strong>in</strong>kontrolle, schwankende Qualität<br />

(ii) <strong>in</strong>stitutionalisierter Prozess, unabhängig von Individuen<br />

(b) Verbesserungen<br />

(i) Prozesse vermessen und analysieren<br />

(ii) quantitative Qualitätssicherung<br />

(4) Stufe 4 – gesteuerter quantitativer Prozess<br />

(a) Charakteristik<br />

(i) gute statische Kontrolle über Produktqualität<br />

(ii) Prozesse durch Metriken gesteuert<br />

(b) Verbesserungen<br />

(i) <strong>in</strong>strumentierte Prozessumgebung (mit Überwachung)<br />

(ii) ökonomisch gerechtfertigte Investitionen <strong>in</strong> neue Technologien<br />

(5) Stufe 5 – optimierender rückgekoppelter Prozess<br />

(a) Charakteristik<br />

(i) quantitative Basis für Kapital<strong>in</strong>vestitionen <strong>in</strong> Prozessautomatisierung und<br />

Prozessverbesserung<br />

(b) Verbesserungen<br />

(i) kont<strong>in</strong>uierlicher Schwerpunkt auf Prozessvermessung und<br />

Prozessverbesserung (zur Fehlervermeidung)<br />

m) Vergleich ISO 9000 und CMM<br />

• Schwerpunkt <strong>in</strong> ISO Zertifizierung im Nachweis e<strong>in</strong>es Qualitätsmanagementsystems im<br />

S<strong>in</strong>ne der Norm<br />

(1) allgeme<strong>in</strong> für Produktionsabläufe geeignet<br />

• CMM konzentriert sich auf Qualitäts‐ und Produktivitätssteigerung der gesamten<br />

<strong>Software</strong>entwicklungsprozesse<br />

(1) auf <strong>Software</strong>entwicklung zugeschnitten<br />

• ISO‐Norm SPICE<br />

(1) Integration und Vere<strong>in</strong>heitlichung von CCM und ISO<br />

• CMMI als Weiterentwicklung von CMM und Spice<br />

• Spice und CMMI liefern dem Kunden Kennzahlen, mit welcher Qualität er bei se<strong>in</strong>er<br />

<strong>Software</strong> rechnen kann weiterh<strong>in</strong> liefern sie dem Hersteller Informationen über<br />

Schwächen <strong>in</strong> se<strong>in</strong>en Prozessen und Verbesserungspotential<br />

n) SPICE – <strong>Software</strong> Process Improvement and Capability dEterm<strong>in</strong>ation<br />

• entspricht ISO/EC 15504<br />

• Vere<strong>in</strong>hetlicht Assessmentmodelle und –Verfahren<br />

• Prozessmodell<br />

(1) def<strong>in</strong>iert, welche Prozessaktivitäten erforderlich s<strong>in</strong>d für e<strong>in</strong> bestimmtes Level


(2) Ist Checkliste für Verbesserungen<br />

• Assessmentmethode<br />

(1) Prüft die angewandten Prozesse<br />

(2) Liefert Stärken, Schwächen und Verbesserungsvorschläge<br />

(3) Bestimmt Level für jeden Prozess<br />

Incomplete Performed Managed Established Predictable Optimis<strong>in</strong>g<br />

3) Kapitel 3 Vorgehensmodelle<br />

a) Entwicklungsprozess – Vom Konzept zum Vorgehensmodell<br />

• Beispiele Konzepte/ Paradigmen<br />

(1) imperativ<br />

(2) objektorientiert<br />

• Beispiele für Sprachen <strong>in</strong> <strong>Software</strong>technik<br />

(1) natürliche (deutsch, englisch)<br />

(2) formalisierte (UML)<br />

(3) formale (Java)<br />

• Syntax, Semantik und Prakmatik<br />

(1) Syntax – Aufbau / Struktur der Sätze <strong>in</strong> e<strong>in</strong>er Sprache<br />

(2) Semantik – Bedeutung von Sätzen <strong>in</strong> Sprache<br />

(3) Pragmatik – Regeln für Umgang mit e<strong>in</strong>er Sprache<br />

• Methoden <strong>in</strong> der <strong>Software</strong>technik<br />

(1) Richtl<strong>in</strong>ien zum Umgang mit e<strong>in</strong>zelnen Sprachen und ggf. Richtl<strong>in</strong>ien zum Umgang<br />

mit e<strong>in</strong>zelnen Werkzeugen für jeweilige Phasen des Vorgehensmodells<br />

(2) Eignung e<strong>in</strong>er bestimmten Methode wird bestimmt durch<br />

(a) Problemangemessenheit<br />

(b) ihre Integrationsfähigkeit<br />

(c) Grad der Vertrautheit der <strong>Software</strong>entwickler mit der Methode bzw. ihre<br />

Erlernbarkeit<br />

(d) Existenz von die Methode unterstützenden <strong>Software</strong>entwicklungswerkzeugen<br />

• Werkzeuge<br />

(1) erzw<strong>in</strong>gen nach Möglichkeit die Anwendung der gewählten Methoden<br />

(2) Arten von <strong>Software</strong>entwicklungswerkzeugen bzw. CASE (Computer Aided <strong>Software</strong><br />

Eng<strong>in</strong>eer<strong>in</strong>g)<br />

(a) Editoren<br />

(b) Prototyp<strong>in</strong>gwerkzeuge<br />

(c) Ausführungswerkzeuge<br />

(d) Testwerkzeuge<br />

(e) Programmanalysewerkzeuge<br />

(f) Dokumentationswerkzeuge<br />

(g) Konfigurationsverwaltungswerkzeuge<br />

• Vorgehensmodelle<br />

(1) Darstellung, die den <strong>Software</strong>entwicklungsprozess <strong>in</strong> idealisierter Form detailliert mit<br />

Regeln zum koord<strong>in</strong>iertem E<strong>in</strong>satz von Werkzeugen, Methoden und Sprachen<br />

beschreibt und auch Analysen des Prozesses gestattet<br />

(2) Pr<strong>in</strong>zipiell muss es dazu die e<strong>in</strong>zelnen Prozessschritte und die dabei verwendeten<br />

und entwickelten Resultate beschreiben<br />

(3) Im Vorgehensmodell s<strong>in</strong>d def<strong>in</strong>iert<br />

(a) Prozessschritte / Aktivitäten<br />

(b) Rollen<br />

(c) Resultate / Dokumente


(4) Vorgehensmodelle bzw. Prozessmodelle strukturieren den Vorgang der <strong>Software</strong>‐<br />

Erstellung<br />

(a) Def<strong>in</strong>ieren Aktivitäten<br />

(b) Legen deren Ergebnisse fest<br />

(c) geben Empfehlungen für Abarbeitung der Aktivitäten<br />

b) Code and Fix Zyklus<br />

• Typisch für 1‐Personen Projekt<br />

(1) Code schreiben und überetzen<br />

(2) Code testen<br />

(3) Code verbessern<br />

(4) GOTO( 2)<br />

• Probleme:<br />

(1) Wartbarkeit und Zuverlässigkeit nehmen kont<strong>in</strong>uierlich ab<br />

(2) Wenn Programmierer kündigt ist alles vorbei<br />

(3) wenn Entwickler und Anwender nicht identisch gibt es oft<br />

Me<strong>in</strong>ungsverschiedenheiten über erwarteten/realisierten Funktionsumfang<br />

c) klassisches Wasserfallmodell<br />

• Phasen:<br />

(1) Machbarkeitsstudie<br />

(2) Anforderungsanalyse<br />

(3) Systementwurf<br />

(4) Codieren und Modultest<br />

(5) Integration und Systemtest<br />

(6) Auslieferung und Installation<br />

(7) Wartung<br />

(1) Machbarkeitsstudie<br />

(a) Kosten und Ertragsabschätzung<br />

(b) grobe Problemanalyse mit Lösungsvorschlägen<br />

(c) Aufgaben:<br />

(i) Problem beschreiben, Lösungen erarbeiten, Kosten abschätzen, Angebot<br />

erstellen<br />

(d) Ergebnisse<br />

(i) Lastenheft<br />

(ii) grobes Pflichtenheft<br />

(iii) Projektplan<br />

(iv) Angebot an Auftraggeber<br />

(e) Probleme:<br />

(i) zu Projektbeg<strong>in</strong>n nur ungenaue Kosten‐ und Ressourcenabschätzung möglich<br />

(2) Anforderungsanalyse<br />

(a) WAS soll <strong>Software</strong> leisten<br />

(b) Aufgaben:<br />

(i) Festlegung Systemeigenschaften, Funktionalität, Leistung,<br />

Benutzerschnittstelle, Portierbarkeit … im Pflichtenheft<br />

(ii) Bestimmen von Testfällen<br />

(iii) Festlegung von Dokumentationsdokumenten<br />

(c) Ergebnisse<br />

(i) Pflichtenheft<br />

(ii) Akzeptanzplan<br />

(iii) Benutzerhandbuch (1.0)<br />

(d) Probleme:<br />

(i) bei unklaren Anforderung Erstellung vollständiges Pflichtenheft unmöglich


(ii) Anforderungen früh e<strong>in</strong>gefroren, Wandel nicht e<strong>in</strong> geplant<br />

(iii) E<strong>in</strong>b<strong>in</strong>dung des Auftraggebers nur <strong>in</strong> dieser und der Testphase – Potentielle<br />

Quelle von Missverständnissen / Me<strong>in</strong>ungsverschiedenheiten<br />

(3) Systementwurf<br />

(a) wie werden <strong>Software</strong>funktionen realisiert? – <strong>Software</strong>bauplan<br />

(b) Aufgaben:<br />

(i) Programmieren im Großen = Bauplan<br />

(ii) Grobentwurf der System <strong>in</strong> Module zerlegt<br />

(iii) Auswahl von <strong>Software</strong>bibliotheken, Rahmenwerken…<br />

(iv) Entwurf von Modulschnittstellen und Algorithmen<br />

(c) Ergebnisse:<br />

(i) Entwurfsdokument mit <strong>Software</strong>bauplan<br />

(ii) detaillierte Testpläne<br />

(4) Codieren und Modultest<br />

(a) Implementierungs‐ und Testphase<br />

(b) Aufgaben:<br />

(i) Implementierung e<strong>in</strong>zelner Module<br />

(ii) E<strong>in</strong>haltung von Programmierrichtl<strong>in</strong>ien<br />

(iii) Code‐Inspektion kritischer Modulteile<br />

(iv) Test erstellter Module<br />

(c) Ergebnisse:<br />

(i) Menge realisierter Module<br />

(ii) Implementierungsberichte (Abweichung vom Entwurf, Zeitplan …)<br />

(iii) technische Dokumentation e<strong>in</strong>zelner Module<br />

(iv) Testprotokolle<br />

(5) Integration und Systemtest<br />

(a) Zusammenbau der e<strong>in</strong>zelnen Module(kann mit (4) verschmelzen)<br />

(b) Aufgabe:<br />

(i) System<strong>in</strong>tegration<br />

(ii) Gesamtsystemtest (Alpha‐Test)<br />

(iii) Fertigstellung der Dokumentation<br />

(c) Ergebnisse:<br />

(i) fertiges System<br />

(ii) Benutzerhandbuch<br />

(iii) technische Dokumentation<br />

(iv) Testprotokolle<br />

(d) Probleme:<br />

(i) erste Lauffähige Version der <strong>Software</strong> erst am Ende der Testphase – späte<br />

Erkennung von Fehlern / Missverständnissen<br />

(ii) Gefahr Projektablaufverzögerungen <strong>in</strong> Testphasene<strong>in</strong>sparungen wieder<br />

aufzuholen<br />

(6) Auslieferung und Installation<br />

(a) Inbetriebnahme beim Kunden<br />

(b) Aufgabe:<br />

(i) Auslieferung an ausgewählte Benutzer (Beta‐Test)<br />

(ii) Auslieferung an alle Benutzer<br />

(iii) Schulung der Benutzer<br />

(c) Ergebnisse:<br />

(i) fertiges System


(ii) Akzeptanzdokument<br />

(d) Probleme:<br />

(i) Pflichtenheft kann nie Umgang mit fertigem System ersetzen –<br />

Risikomaximierung<br />

(ii) Späte Erkennung unerwünschter Funktionen<br />

(7) Wartung<br />

(a) Aufgaben:<br />

(i) ca. 20% Fehler Beheben<br />

(ii) 20% Anpassungen durchführen<br />

(iii) 50% Verbesserungen vornehmen<br />

(b) verschl<strong>in</strong>gt 60% der <strong>Software</strong>kosten<br />

(c) Ergebnisse:<br />

(i) <strong>Software</strong> Problemberichte<br />

(ii) <strong>Software</strong> Änderungsvorschläge<br />

(iii) neue <strong>Software</strong>versionen<br />

(d) Probleme:<br />

(i) Wartung mit ca. 60% des Gesamtaufwandes ist e<strong>in</strong>e Phase<br />

(ii) Rückgriffe <strong>in</strong> andere Phasen notwendig<br />

(8) allgeme<strong>in</strong>e Probleme beim Wasserfallmodell<br />

(a) Phasenmodell als solches gib es nicht – Une<strong>in</strong>igkeit bezüglich Phasenanzahl und<br />

Ausgestaltung<br />

(b) Anfang und Ende der Phasen s<strong>in</strong>d zum<strong>in</strong>dest stark idealisiert<br />

d) iterierendes Phasenmodell<br />

• Abwandlung vorheriges Phasenmodell<br />

• ermöglicht Rücksprung <strong>in</strong> vorherige Phase bei entdecktem Fehler<br />

e) V‐Modell<br />

• im Bundeswehrbereich entwickelt<br />

• regelt Entwicklung, Pflege und Änderungen von Systemen<br />

• Bewertung:<br />

(1) Pro<br />

(a) erfasst auch Systemkomponenten die nicht <strong>in</strong> <strong>Software</strong> realisiert werden<br />

(b) Standarddef<strong>in</strong>ition außerordentlich umfangreich mit vielen Teilaktivitäten<br />

(c) Unterstützung von Qualitätssicherung und Konfigurationsmanagement<br />

(d) korrespondierende Phasen des Wasserfallmodells e<strong>in</strong>ander zugeordnet<br />

(e) allumfassende Wartungsphase entfällt (zu recht)<br />

(2) Contra<br />

(a) Schwäche der strikten Phasene<strong>in</strong>teilung bleibt weiter erhalten


(b) Anwender beklagen zu starke Reglementieung und Papierflut<br />

f) rapid Prototyp<strong>in</strong>g<br />

• Entwicklung von Prototypen<br />

• Demonstration/Analysw ausgewählter Merkmale des fertigen Produktes<br />

• Unterteilung <strong>in</strong> „Wegwerfprototypen“ oder „evolutionäre Prototypenentwicklung“<br />

• Mit Generatoren, ausführbaren Spezifikationssprachen, Skriptsprachen etc. wird:<br />

(1) Benutzerschnittstelle realisiert und dem Kunden demonstriert<br />

(2) anschließend weggeworfen<br />

• Vor‐/Nachteile<br />

(1) Pros<br />

(a) schnelle Klärung der Funktionalität – Risikom<strong>in</strong>imierung<br />

(b) früher Test der Benutzerschnittstelle<br />

(2) Cons<br />

(a) Gefahr der Weiterentwicklung e<strong>in</strong>es Prototypen ‐ ungeplantes evolutionäres<br />

Modell<br />

(b) ggf. erheblicher Mehraufwand<br />

• Bewertung des evolutionären Modells:<br />

(1) Pros:<br />

(a) früh evaluierbarer Prototyp<br />

(b) Kosten‐ und Leistungsumpfang des gesammten <strong>Software</strong>systems müssen zu<br />

Beg<strong>in</strong>n des Projekts nicht vollständig festgelegt werden<br />

(c) Projektplanung durch überschaubare Teilprojekte vere<strong>in</strong>facht<br />

(d) Systemarchitektur muss von vornhere<strong>in</strong> auf Erweiterbarkeit angelegt werden<br />

(2) Cons<br />

(a) Systemarchitektur des ersten Prototypen ist schwer auf später notwendige<br />

Erweiterungen auszulegen<br />

(b) Prototypenerstellungsprozess nicht festgelegt<br />

(c) evolutionäre Entwicklung birgt Gefahr das bereits realisierte Funktionen h<strong>in</strong>fällig<br />

werden<br />

(d) Endresultat sieht ggf. wie <strong>Software</strong> nach 10 Jahren Wartung aus<br />

g) Spiralmodell<br />

• gliedert <strong>Software</strong>entwicklungsprozess <strong>in</strong> nicht festgelegte Anzahl von Zyklen<br />

• jeder Zyklus setzt sich aus vier Schritten zusammen:<br />

(1) Ziele (z.B: erweiterung der Funktionalität)<br />

(2) Alternativen (z.B. unterschiedliche <strong>Software</strong>architekturen)<br />

(3) Rahmenbed<strong>in</strong>gungen (z.B. Budget, Term<strong>in</strong>e)<br />

• Realisierung der gewählten Alternative und Überprüfung des Ergebnisses (z.B. duch<br />

Tests)<br />

• Bewertung der Alternativen mit H<strong>in</strong>blick auf Ziele und Rahmenbed<strong>in</strong>gungen<br />

• Risikom<strong>in</strong>imierung ‐ z.B. Wegwerfprototyp unter Kostenberücksichtigung<br />

• <strong>in</strong>haltliche und organisatorische Planung des folgenden sowie evtl. weiterer Zyklen<br />

• bewertung des Projektfortschritts nach Abschluss e<strong>in</strong>es Zyklus<br />

(1) Entscheidung daraus: Projekt wird<br />

(a) abgeschlossen<br />

(b) abgebrochen<br />

(c) mit nächstem Zyklus fortgesetzt<br />

• E<strong>in</strong>bettung<br />

(1) <strong>in</strong> Spiralmodell lassen sich pr<strong>in</strong>zipiell alle bisherigen Vorgehensmodelle e<strong>in</strong>betten<br />

(2) Vorteil: Verb<strong>in</strong>dung von Flexibilität der evolutionären Prototypenentwicklung mit<br />

guter Beherrschbarkeit des Phasenorientierten Projekts<br />

h) V‐Modell XT<br />

• Weiterentwicklung V‐Modell


• Ergänzugn um<br />

(1) Tailor<strong>in</strong>g (auf konkrete Projekte)<br />

(2) Iteratives Vorgehen<br />

• Grundkonzept<br />

(1) Vorgehensbauste<strong>in</strong>e<br />

(a) Produkte<br />

(b) (verantwortliche) Rollen<br />

(c) Aktivitäten<br />

(2) Produktdurchführungsstrategie, def<strong>in</strong>ierte Reihenfolge und Entscheidungspunkte<br />

i) RUP – Rational Unified Process<br />

• Nutzbarmachung erprobter Ansätze zur <strong>Software</strong>entwicklung (best practice)<br />

(1) Develop software iteratively<br />

(2) Manage requirements<br />

(3) Use componented‐based architectures<br />

(4) visually model software<br />

(5) verify software quality<br />

(6) control changes to software<br />

• Def<strong>in</strong>ition von Workflows, die parallel und <strong>in</strong> Phasen ablaufen können<br />

• Iterationen und <strong>in</strong>krementelle Verbesserungen s<strong>in</strong>d <strong>in</strong> jeder Phase möglich<br />

• Grundkonzept bei Def<strong>in</strong>ition der Workflows:<br />

(1) Workers führen Aktivitäten durch deren Ergebniss e<strong>in</strong> Artefakt ist<br />

(2) Zur Gestaltung der Artefakte werden Guidel<strong>in</strong>es und Templates zur Verfügung<br />

gestellt<br />

• RUP kennt 4 Phasen<br />

(1) Konzeptionalisierung: Planungs‐ Entscheidungsgrundlagen schaffen<br />

(2) Entwurf: Erfassung der Anforderungen<br />

(3) Konstruktion und Realisierung – Stabiles Produkt zur Auslieferung<br />

(4) <strong>E<strong>in</strong>führung</strong> und Betrieb<br />

j) leichtgewichtige Prozessmodelle – light‐weight processes<br />

• herkömliche Standards werden verworfen weil:<br />

(1) sehr starr<br />

(2) produzieren unmengen an Papier<br />

(3) b<strong>in</strong>den nutzlose Arbeitskräfte<br />

• sollen s<strong>in</strong>nlosen bürokratischen Overhead vermeiden<br />

• Extreme Programm<strong>in</strong>g (XP) – best practices der Programmierung<br />

• Agile Prozessmodelle:<br />

(1) herkömmliche Prozessmodelle auf das unbed<strong>in</strong>gt notwendige zurückschneiden<br />

(2) situationsbed<strong>in</strong>gt, flexibel und schnell voranschreiten<br />

• Agiles Manifest<br />

(1) E<strong>in</strong>zelpersonen und Interaktionen wichtiger als Prozesse und Werkzeuge<br />

(2) Laufende Systeme wichtiger als umfangreiche Dokumentation<br />

(3) Zusammenarbeit mit dem Kunden wichtiger als Vertragsverhandlungen<br />

(4) Fähigkeit auf Änderungen zu reagieren wichtiger als Verfolgen e<strong>in</strong>es Plans<br />

• Guidel<strong>in</strong>es von XP<br />

(1) Verzicht auf Phasen<br />

(2) ke<strong>in</strong>e eigenständige Analyse‐ oder Designaktivitäten vor der Codierung<br />

(3) ke<strong>in</strong>e Erstellung getrennter Dokumentationsdokumente, Modelle etc.<br />

(4) großes Gewicht auf Testplanung<br />

(5) Test werden vor oder zusammen mit Code geschrieben<br />

(6) durchlaufen aller Tests nach jeder Änderung<br />

(7) unbed<strong>in</strong>gtes E<strong>in</strong>halten der 40‐Stunden Woche<br />

(8) Auftraggeber soll permanent neue Anforderungen aufstellen und priorisieren


(9) Kunde wird Teammitglied<br />

(10) nur Aufgaben höchster Priorität werden angegangen<br />

(11) sehr kurze Iterationszyklen – häufige Realeases<br />

(12) „Pair Programm<strong>in</strong>g“ Teams<br />

• SUBSETS DÜRFEN NICHT XP GENANNT WERDEN<br />

• Randbed<strong>in</strong>gungen<br />

(1) max. 5‐10 Programmierer an e<strong>in</strong>em Projekt<br />

(2) Beschränkung auf rel. kle<strong>in</strong>e Projekte<br />

(3) <strong>in</strong>tensive Kommunikation zwischen Kunde und Programmierern<br />

(4) ke<strong>in</strong>e räumlich verteilten Teams<br />

(5) Kunde verzichtet auf separate <strong>Software</strong>‐Dokumentation<br />

(6) zugunsten ausführlicher Tests die, die Rapid‐Prototyp<strong>in</strong>g‐Vorgehensweise<br />

unterstützen<br />

(7) Programmierer versuchen bei Realisierung künftige Realeases nicht zu<br />

berücksichtigen<br />

(8) Programmierer zum ständigen Umbau (Redesign) der bereits erstellten <strong>Software</strong><br />

bereit<br />

(9) Pr<strong>in</strong>zip des Refaktor<strong>in</strong>gs von <strong>Software</strong>.<br />

• Bewertung von XP<br />

(1) Pros<br />

(a) Kompromiss zwischen Wirklichkeit der Programmentwicklung und aufwändiger<br />

Vorgehensmodellen<br />

(b) Betonung der Menschlichen Komponente<br />

(c) systematisches evolutionäres Rapid Prototyp<strong>in</strong>g<br />

(d) unwesentlich Ansteigende Kosten bei späterer Anfoderungsänderung<br />

(2) Cons<br />

(a) ke<strong>in</strong>e Dokumentation<br />

(b) Entwicklung des Gesamtsystems nicht unbed<strong>in</strong>gt sehr Zielgerichtet<br />

(c) Grundannahmen nicht h<strong>in</strong>reichend empirisch belegt<br />

(d) nur für kle<strong>in</strong>e Projekte, nicht <strong>in</strong> sicherheitskritischen Anwendungsbereichen<br />

k) Scrum<br />

• egl. Bezeichnung für „angeordnetes Gedränge“ im Rugby<br />

• Bei Projektmanagementprozess steht Team im Mittelpunkt<br />

• Team organisiert sich selbst und bespricht vor nächstem Scrum den geplanten Spielzug<br />

• Wichtige Konzepte/Begriffe<br />

(1) Burndown Chart<br />

(a) graphischer Projektfortschritt e<strong>in</strong>es Produktes, Spr<strong>in</strong>t oder Releases<br />

(b) gibt den übrigen Arbeitsaufwand an<br />

(2) Chicken<br />

(a) am Projekt <strong>in</strong>teressierten aber nicht an Umsetzung und Projektrisiko beteiligte<br />

Person<br />

(3) Pig<br />

(a) direkt am Projekt beteiligte Person welche auch Risiko trägt<br />

(4) (Produkt‐) Backlog<br />

(a) Priorisierte Liste mit zeitlichen Schätzwerten für Fertigstellung (<strong>in</strong><br />

Personentagen)<br />

(5) Produc Ower<br />

(a) für Pflege des Backlogs verantwortliche Person<br />

(6) Spr<strong>in</strong>t<br />

(a) Zeitspanne, <strong>in</strong> der das Team versucht alle Ziele aus der Spr<strong>in</strong>t‐Planungssitzung<br />

umzusetzen<br />

(b) <strong>in</strong> der Zeit ke<strong>in</strong>e Anforderungsänderungen von außen


(7) Spr<strong>in</strong>t Backlog<br />

(a) Aufgabenliste für e<strong>in</strong>en Spr<strong>in</strong>t<br />

(b) täglich vom Team präzise geführt<br />

(8) Spr<strong>in</strong>t Rewiev Meet<strong>in</strong>g<br />

(a) Sitzung am Ende e<strong>in</strong>es Spr<strong>in</strong>ts<br />

(b) Vorstellung fertiger Funktionalitäten – ke<strong>in</strong>e Dummies oder Grafiken<br />

(9) Scrum‐Master<br />

(a) Für Scrum‐Prozess verantwortliche Person<br />

(b) sorgt für korrekte Implementierung und maximalen Nutzen des Prozesses<br />

(c) sollte ke<strong>in</strong>e Doppelfunktion als Teammitglied haben<br />

(d) sollte ke<strong>in</strong> Vorgesetzter se<strong>in</strong><br />

(e) ke<strong>in</strong> Projektleiter im herkömmlichen S<strong>in</strong>ne – eher Vermittler, Unterstützer<br />

l) V‐Modell XT<br />

• Weiterentwicklung des V‐Modells<br />

• Erlaubt „Agile Projektdurchführungsstrategie“<br />

4) Kap 4. Requirements Eng<strong>in</strong>eer<strong>in</strong>g<br />

a) Durchführungsprüfung von <strong>Software</strong> Projekten<br />

• ökonomische, fachliche, personelle Durchführung prüfen<br />

• Unterscheidung zwischen <strong>Software</strong>projekten:<br />

(1) für konkreten Auftraggeber<br />

(a) Was genau will dieser?<br />

(2) anonymer Markt<br />

(a) Bedarf und Rentabilität klären<br />

• Ökonomische Durchführbarkeit (Machbarkeitsstudie)<br />

(1) ROI‐Return on Investment <strong>Software</strong>entwicklung muss sich lohnen<br />

(2) Trifft nicht zu bei:<br />

(a) Änderungen aufgrund neuer gesetzlicher Bestimmungen<br />

(b) Ablösung veralteter Technologie<br />

(3) Problem bei Kostenabschätzung<br />

(a) Was soll man alles berücksichtigen – Schulungen, Krankheit …<br />

(4) Problem bei Nutzenabschätzung<br />

(a) Was br<strong>in</strong>gt es wenn Mitarbeiter besser auf Informationen zugreifen können<br />

(5) Bestandteile e<strong>in</strong>er Machbarkeitsstudie<br />

(a) Lastenheft: grobe Auflistung fachlicher Anforderungen des Auftraggebers<br />

(b) Projektkalkulation: geschätzte Kosten für <strong>Software</strong>produkt<br />

(c) Projektplan: Zeitplan für Projektdurchführung, mit Phasen, Phasenergebnissen<br />

und Verantwortlichen<br />

(d) Große Probleme:<br />

(i) wie ist Umfang/Größe e<strong>in</strong>es <strong>Software</strong>produkts def<strong>in</strong>iert?<br />

(ii) wie lässt sich Produktumfang ohne Betrachtung der Realisierung schätzen?<br />

(iii) <strong>in</strong> welchem Verhältnis stehen Produktumfang, Entwicklungszeit und –<br />

kosten?<br />

• Ermittlung von Anforderungen (Anforderungsanalyse)<br />

(1) Needs – Problembeschreibung/ Warum die <strong>Software</strong><br />

(2) Features – Lastenheft mit Hauptfunktionen<br />

(3) <strong>Software</strong> Requirements = Pflichtenheft – detaillierte Beschreibung der<br />

<strong>Software</strong>funktionen<br />

(4) Fast e<strong>in</strong> Drittel bis zur Auslieferung nicht entdeckter Fehler s<strong>in</strong>d Analysefehler,<br />

dessen Beseitigung sehr teuer ist.<br />

(5) Arten von Anforderungen<br />

(a) funktionale Anforderungen: primäre Funktionen und E<strong>in</strong>‐ Ausgabeverhalten<br />

(b) nichtfunktionale Anforderungen:


(i) Produktanforderungen: BENUTZARKEI; Effizienz, Zuverlässigkeit,<br />

Portierbarkeit<br />

(ii) Unternehmensanforderungen: Lieferung, Umsetzung, Vorgehen<br />

(iii) Externe Anforderungen: Kompatibilität, Datenschutz, Recht, Ethik<br />

• Techniken zur Anforderungsanalyse<br />

(i) Bestimmung Interessengruppen – Durchführung von Interviews<br />

(ii) Anforderungen aus verschiedenen Sichten – Viewpo<strong>in</strong>ts<br />

(iii) Workshops mit Bra<strong>in</strong>storm<strong>in</strong>g oder Storyboard mit allen Interessengruppen<br />

(iv) Anforderungsfälle (typ. Funktionsabläufe) ermitteln und ggf. Roleplay<br />

(1) Stakeholders e<strong>in</strong>es <strong>Software</strong>produkts<br />

(i) meist verschiedenen Personengruppen mit unterschiedlichen (evtl.<br />

widersprüchlichen ) Interessen betroffen<br />

(ii) Erhebung der Anforderung aller Stakeholders<br />

(iii) schlichten von Konflikten als Aufgabe des <strong>Software</strong>entwicklers<br />

(2) Interviews mit Interessengruppen<br />

(a) Doma<strong>in</strong>‐Analyse der Umgebung<br />

(b) Antworten auf folgende Fragen erwünscht:<br />

(i) Profil des Kunden (Aufgaben, Produkte, Erfolgsmaße)<br />

(ii) Probleme des Kunden (welche Abläufe s<strong>in</strong>d <strong>in</strong>effizient, fehlerträchtig etc.)<br />

(iii) Umgebung des Kunden ( Benutzer, Hardware, Plattform)<br />

(iv) erwartete <strong>Software</strong>eigenschaften (Funktionen, Zuverlässigkeit, Support)<br />

(3) Viewpo<strong>in</strong>t‐getriebene Anforderungsanalyse<br />

(a) durch Interessengruppen def<strong>in</strong>ierte Sichten auf System s<strong>in</strong>d effektives Hilfsmittel<br />

Anforderungsanalyse zu organisieren<br />

(b) andere Sichten s<strong>in</strong>d:<br />

(i) Orientierung an Funktionsgruppen<br />

(ii) Orientierung an Phasen oder Notationen der <strong>Software</strong>entwicklung<br />

(c) Phasenorientierte Sichten<br />

(i) Customer View<br />

(ii) Application View<br />

(iii) Functional View<br />

(iv) Conceptual View<br />

(v) Realization View<br />

(4) Branstorm<strong>in</strong>g Workshop<br />

(a) Alle vom <strong>Software</strong>produkt betroffenen Personengruppen nehmen an zwei<br />

Tägigem Workshop teil<br />

(b) Phasen des Workshops<br />

(i) verschicken von vorab Material zur Vorbereitung/E<strong>in</strong>stimmung<br />

(ii) Ideen sammeln<br />

1. Darstellung am White Board<br />

2. Kritik und Ergänzungen erwünscht<br />

(iii) Ideen gruppieren und daraus Funktionen der <strong>Software</strong> bestimmen<br />

(iv) sortieren der Funktionen nach Priorität<br />

(5) weitere Methoden<br />

(a) folgende Techniken versuchen die wichtigsten Funktionsabläufe der <strong>Software</strong><br />

durchzuspielen<br />

(i) Anwendungsfälle (Use Case& Misuse Case)<br />

(ii) Storyboard<strong>in</strong>g ‐ spielen mit GUI<br />

(iii) Rollenspiele – Person = Rolle<br />

• Aufbau und Funktion e<strong>in</strong>es Lastenheftes<br />

(1) Zielbestimmung<br />

(2) Produkte<strong>in</strong>satz<br />

(3) Produktfunktionen


(4) Produktdaten (gespeicherte Hauptdaten)<br />

(5) Produktleistungen (besondere Anforderungen an Hauptfunktion oder Hauptdaten)<br />

(6) Qualitätsanforderungen<br />

(7) Ergänzungen<br />

(8) Glossar<br />

• sonstige Eigenschaften des Lastenheftes<br />

(1) Adressaten<br />

(2) Form<br />

(3) Inhalt<br />

(4) Erstellungszeitpunkt<br />

(5) Umfang<br />

(6) Kategorisierung der Funktionen Daten und Leistungen<br />

(a) absolut notwendig (primary)<br />

(b) ziemlich wichtig (secondary)<br />

(c) Schnickschnack (optional)<br />

• Weitere übliche Attribute für Anforderungen<br />

(1) Status<br />

(2) Nutzen<br />

(3) Aufwand<br />

(4) Risiko: Wsh unerwartete/ unerwünschte Probleme<br />

(5) Stabilität: Wahrsche<strong>in</strong>lichkeit von Anforderungsänderungen<br />

(6) Release: Welches Release muss welche Funktion haben<br />

(7) Grund: Konkreter Nutzen der Realisierung<br />

• Probleme mit Kundenbeschreibung<br />

(1) ke<strong>in</strong>e Aussage warum Geschäftsprozess durch <strong>Software</strong> unterstützen will<br />

(2) enthält mehrdeutige Begriffe<br />

(3) irrelevante Aussagen<br />

(4) unvollständig<br />

(5) ke<strong>in</strong>e Festlegung der Systemgrenzen<br />

(6) enthält nur Aussagen über funktionalen Ablauf (Datenmengen, Antwortzeiten etc.<br />

fehlt)<br />

• Konsequenz für Erhebung von Anforderungen<br />

(1) aus natürlich sprachlichen Anforderungsdef<strong>in</strong>ition alle wichtigen Wörter<br />

heraussuchen<br />

(2) für wichtige und/oder unklare Begriffe Glossar anlegen<br />

(3) Unterstützung durch UML<br />

b) Aufwands und Kostenabschätzung<br />

• Kosten und Entwicklungsauer werden wesentlich durch personellen Aufwand bestimmt<br />

(1) Indikatoren hierfür s<strong>in</strong>d Umfang und Qualität<br />

(2) Übliches Maß für Personalaufwand<br />

(a) Mitarbeitermonate MM<br />

(b) Mitarbeitermonate MJ (10MM = 1MJ)<br />

(3) Übliches Maß an Produktumfang<br />

(a) „L<strong>in</strong>es of Code“ (LOC)– schlecht<br />

(b) „Function Po<strong>in</strong>ts“ (FP)<br />

• Schätzverfahren im Überblick<br />

(1) Analogiemethode: Vergleich mit älteren Projekten<br />

(2) Prozentsatzmethode: Verteilung des Aufwands auf Phasen anhand alter Projekte<br />

(3) Park<strong>in</strong>sons Gesetz: Die Arbeit ist beendet wenn alle Vorräte erschöpft s<strong>in</strong>d.<br />

(a) praxisnah, realistisch, wenig hilfreich<br />

(4) Gewichtungsmethode: Bestimmung vieler Faktoren und Verknüpfung durch<br />

mathematische Formel (Erfahrung der Mitarbeiter, verwendete Sprachen)


c) Projektpläne und Projektorganisation<br />

• Am Ende der Machbarkeitsstudie steht die Erstellung e<strong>in</strong>es Projektplans mit:<br />

(1) Identifizierung e<strong>in</strong>zelner Arbeitspakete<br />

(2) Term<strong>in</strong>planung<br />

(3) Ressourcenplanung<br />

• Machbarkeitsstudie ohne grobes <strong>Software</strong>design nicht möglich da:<br />

(1) Arbeitspakete ergeben sich aus <strong>Software</strong>struktur<br />

(2) Abhängigkeiten und Umfang der Pakete ebenso<br />

(3) Realisierungsart der Pakete bestimmt über Ressourcen<br />

• Konsequenz: Projektplanung und ‐organisation ist fortlaufender Prozess. Zu<br />

Projektbeg<strong>in</strong>n ist dies nur grober Plan.<br />

• Abschließende Checkliste<br />

(1) Machbarkeitsstudie soll nur wenige Tage dauern<br />

(2) ggf. Vorprojekt zur Risikoabschätzung<br />

(3) folgende Punkte s<strong>in</strong>d zu klären:<br />

(a) Angaben im Lastenheft mit Kunden abgestimmt?<br />

(b) mit geplanten Ressourcen technisch realisierbar?<br />

(c) vertrauenswürdige Kostenschätzung?<br />

(d) Produktentwicklung wirtschaftlich <strong>in</strong>teressant?<br />

(e) realistischer Zeitplan?<br />

(f) Phasenverantwortliche?<br />

(g) Risikoabschätzung durchgeführt?<br />

d) Hilfsmittel bei Anforderungsanalyse – Modelle/Diagramme<br />

• E<strong>in</strong>gesetzte klassische Modellierungssprachen<br />

(1) funktionale Aspekte – Verhalten<br />

(a) Datenflussdiagramme<br />

(b) Funktionsbäume<br />

(2) Datenstrukturen<br />

(a) Data Dictionary = Typdef<strong>in</strong>itionen<br />

(b) Entity‐Relationship‐Diagramme (Klassendiagramm ohne Operationen)<br />

(3) Kontrollstrukturen<br />

(a) Struktogramme (Nassi‐Shneiderman‐Diagramme)<br />

(b) Pseudocode<br />

(4) zustandsbehaftete nebenläufige Systeme<br />

(a) Zustandsübergangsdiagramme (endliche Automaten)<br />

(b) Petr<strong>in</strong>etze<br />

• Kritik an aufgezählten Modellen<br />

(1) starke Trennung zwischen Daten‐ und Verhaltensaspekten<br />

(a) folgend Konsistenshaltungsprobleme<br />

(2) verschiedene Konzepte und Sprachen <strong>in</strong> e<strong>in</strong>zelnen Entwicklungssprachen<br />

(a) Konsistenz?<br />

(b) gewünschte Trennung zwischen Analyse und Entwurf wird erzwungen<br />

• Voraussetzung für erfolgreiche <strong>Software</strong>modellierung<br />

(1) Sprachen mit wohldef<strong>in</strong>ierter Syntax und Semantik<br />

(2) präzise sprachübergreifende Konsistenz‐ und Abbildungsregeln<br />

e) Objektorientierte Modellierungssprachen<br />

• Vielzahl von OO‐Modellierungsdialekten wird durch Standard‐Sprache ersetzt um so<br />

(Idee von Booch)<br />

(1) Vorteile verschiedener Modellierungsansätze zu vere<strong>in</strong>en<br />

(2) potentiellen Anwendern die Qual der Wahl abzunehmen<br />

(3) Voraussetzungen für Datenaustausch zwischen OO‐Werkzeugen zu schaffen<br />

(4) enge Integration von OO‐Werkzeugen


(5) Abhängigkeit der Anwender von Herstellern reduzieren<br />

(6) Werkzeugherstellern von der Unterstützung verschiedener Ansätze befreien<br />

f) UML Unified Model<strong>in</strong>g Language<br />

• Pros<br />

(1) Metamodell <strong>in</strong> Form von Klassendiagrammen legt rel. präzise die Syntax der<br />

unterstützten Diagrammarten fest<br />

• Pro/Con<br />

(1) Semantik der Diagrammarten wird (noch) weitgehend <strong>in</strong> Prosa erläutert, e<strong>in</strong>ige<br />

Konsistenzregeln werden <strong>in</strong> OCL (Object Constra<strong>in</strong>ed Language) def<strong>in</strong>iert<br />

• Cons<br />

(1) es gibt 10 Diagrammarten die teilweise gegene<strong>in</strong>ander Konkurieren<br />

(2) das Metamodell ist nahezu beliebig erweiterbar, was uns <strong>in</strong> Zukunft e<strong>in</strong>e Fülle von<br />

UML‐Dialekten mit entsprechenden Werkzeugen bescheren wird<br />

g) E<strong>in</strong>satz von UML <strong>in</strong> der Analysephase<br />

• Ausgangspunkt s<strong>in</strong>d Produktanforderungen des Kunden (entweder als Fließtext oder als<br />

strukturiertes Lastenheft<br />

• Ergebnis ist e<strong>in</strong> (erweitertes) Plichtenheft mit semiformalen Def<strong>in</strong>itionen der<br />

Produktfunktion und ‐daten als UML‐Diagramme<br />

• Umfang des UML‐E<strong>in</strong>satzes umstritten<br />

(1) UML‐Protagonisten<br />

(a) UML als visuelle/graphische Programmiersprache<br />

(b) erstelltes Analysemodell ist (als Prototyp) ausführbar (ausführbares<br />

Pflichtenheft)<br />

(2) UML‐Antagonisten<br />

(a) Pflichtenheft nur <strong>in</strong> strukturiertem Englisch/Deutsch geschrieben<br />

(b) graphische Sprachen wie UML erst <strong>in</strong> Designphase e<strong>in</strong>setzen<br />

h) Produktfunktionen und Anwendungsfälle<br />

• konkrete Beschreibung der Funktionen anhand von Fallbeispielen sog. Szenarien<br />

• Zusammenfassung ähnlicher Szenarien zu sog. Anwendungsfällen<br />

• Vorgehensweise:<br />

(1) Skizze konkreter Benutzungsszenarien mit Akteuren<br />

(2) Identifikation der Grenze zwischen <strong>Software</strong> und Reality<br />

(3) Skizze der zugehörigen Benutzeroberfläche<br />

(4) bilden von Anwendungsfällen – Use Cases<br />

(5) Überblick über Use‐Cases durch Use‐Case‐Diagramm<br />

• Bestimmung geeigneter Szenarien/ Anwendungsfälle<br />

(1) unterstreichen relevanter Verben im Lastenheft Szenario <br />

Anwendungsfalldiagramm 1.0<br />

(2) kenntlichmachen der <strong>Software</strong>aufgaben – Abgrenzung<br />

(3) Akteure zuordnen – „benutzt“ Beziehung<br />

(a) wenn zwischen Akteur und Use Case unidirektional Daten ausgetauscht werden<br />

erhält die Verb<strong>in</strong>dungsl<strong>in</strong>ie e<strong>in</strong>e Pfeilspitze<br />

(b) <strong>in</strong>teragieren mehrere Akteure mit e<strong>in</strong>em Anwendungsfall, ist nicht festgelegt<br />

was das bedeutet (meist: jeder Akteur darf ausführen aber auch: alle Akteure<br />

zusammen dürfen nur die Systemfunktion nutzen)<br />

(c) viele Beziehungen machen Diagramm unübersichtlich<br />

i) Weiter UML‐Verb<strong>in</strong>dungsbeziehungen<br />

• Vererbung (Owner erbt Rechte von Clerk) {Pfeil mit leerer Pfeilspitze}<br />

• extend<br />

(1) beschreibung von Sonderfällen e<strong>in</strong>es Anwenungsfalls separat<br />

(2) h<strong>in</strong>zufügen von Funktionalitäten zu Anwendungsfällen<br />

• <strong>in</strong>clude (use)


(1) bei gleichen Teilabläufen mehrerer Anwendungsfälle Separierung Dieser<br />

(2) Auslagerung von Funktionalität<br />

• Vererbungen nur sparsam e<strong>in</strong>setzen<br />

j) Rank<strong>in</strong>g von Anwendungsfällen<br />

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!