Einführung in Software Engineering
Einführung in Software Engineering
Einführung in Software Engineering
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 />
•