Frühe Dipl. Wirtsch. Ing. Alexander Werth 5-1
Phasen der Softwareentwicklung Problemdefinition Anforderungsanalyse Spezifikation Entwurf Implementation Erprobung Wartung 5-2
Problemdefinition Worum geht es überhaupt? Handelt es sich um ein Software Entwicklungsprojekt? Standardsoftware Produkt Datenbank Tool Embedded System Individuallösung 5-3
Problemdefinition Identifizieren eines Problems. Ausarbeiten der bisherigen Kenntnisse zum Problem. Business Case: Wieviel wäre eine Lösung des Problems wert? Wieviel würde die Lösung ungefähr kosten? Marktuntersuchung: Gibt es bereits ein Produkt das sich verwenden läßt? Gibt es ein Vorgängermodell das als Vorlage und Erfahrungsquelle dienen kann? 5-4
Problemdefinition Techniken Marktanalysen. Kundenanfragen. Forschungsergebnisse, Vorentwicklung. Brainstorming. Analyse existierender Lösungen. 5-5
Problemdefinition Business Case Kosten grob abschätzbar durch Vergleich mit ähnlichen Problemen. Beispiel: Entwicklungskosten für einen Compiler Entwicklungskosten eines vergleichbar komplexen Compilers einer anderen Sprache als Schätzwert. Beispiel: Entwicklungskosten bei Anpassungsentwicklung. Anteil bestimmen der ohne und mit geringen Änderungen übernommen werden kann. Anteil abschätzen der neu entwickelt werden muss. Gewichten dieser Anteile. Gewichte über 1 denkbar. 5-6
Dokumente im Wasserfall Modell Erhebungsbericht (Business Case) Spezifikation Lastenheft Pflichtenheft Entwurf Problemdefinition Anforderungsanalyse Implementierung Detailiertes Design Quellcode Dokumentation Erprobung Endprodukt, Testat Betrieb / Wartung 5-7
Lastenheft & Pflichtenheft Auftraggeber Ausschreibung Auftragnehmer Bestätigt Lastenheft Pflichtenheft 5-8
Lastenheft & Pflichtenheft als DIN Norm Das Deutsche Institut für Normierung e. V. normiert das Lastenheft und das Pflichtenheft unter DIN 69905. Begriffserklärung und Aufgabe Keine detailierte Beschreibung 5-9
Lastenheft Aufgabe: Zusammenfassung aller fachlichen Basisanforderungen aus Sicht des Auftraggebers Adressat: Auftraggeber sowie Auftragnehmer (Projektleiter, Marketing,...) Inhalt: Basisanforderungen ( Was?, nicht Wie? ) Form: standardisiertes, numeriertes Gliederungsschema Sprache: verbale Beschreibung Umfang: wenige Seiten 5-10
Lastenheft Das Lastenheft beschreibt eine bestimmtes Set an fachlichen Basisanforderungen. Dieses Set ist eine Auswahl der in der Problemdefinitionsphase gefundenen Anforderungen. Weitestgehend formfrei. Gliederung sinnvoll. 5-11
Sachzwänge Schnell Billig Perfektion Fast, good, cheap. Pick any two. Man kann nicht alle Drei im Lastenheft festlegen. Man sollte aus Kostengründen nichts unnötiges fordern. 5-12
Lastenheft Mögliche Gliederung Titel, Auftraggeber, Inhaltsverzeichnis Zielbestimmung Produkteinsatz Produktfunktionen Produktdaten Produkteigenschaften System, Hardware, Software Programmiersprache Leistung, Qualität, Effizienz, Useability Sicherheit, Rechtliches 5-13
Lastenheft Beispiel Titel, Auftraggeber, Inhaltsverzeichnis Command Line Rechner 1 Zielbestimmung 2 Produkteinsatz 3 Produktfunktionen 4 Produkteigenschaften Alexander Werth 5-14
Lastenheft Beispiel 1) Zielbestimmung Entwicklung eines Programms für die Befehlszeile zum Lösen von numerischen Rechnenaufgaben. 5-15
2) Produkteinsatz Lastenheft Beispiel Das Programm soll vorwiegend dazu eingesetzt werden um in Skripten Berechnungen durchzuführen. Die Skripte können dabei völlig unterschiedliches Datenmaterial bearbeiten wie z.b. Aufsummieren von Dateigrößen oder Berechnungen von Durchschnittswerten. Das Programm kann auch verwendet werden um ohne viel Aufwand auf der Kommandozeile Berechnungen auszuführen. 5-16
Lastenheft Beispiel 3) Produktfunktionen LF01: Aufgabe lesen von der Standardeingabe. LF02: Aufgabe lesen von einer Eingabedatei. LF03: Ergebnis in die Standardausgabe schreiben. LF04: Punkt vor Strichrechnung. LF05: Grundrechenarten, Klammern. LF06: Wichtige mathematische Konstanten. LF07: Trigonometrische Funktionen. LF08: Weitere Funktionen (Wurzel, Summe, Min, Max, ) LF09: Fehlermeldung auf Standard Error Ausgabe ausgeben. 5-17
Lastenheft Beispiel 4) Produkteigenschaften LE01) Windows 32 Bit Konsolen Applikation LE02) Windows XP und jünger LE03) Programmiersprache C LE04) Verwendung von portablen Standardfunktionen. LE05) Einfache Addition in 10ms für Skripteinsatz. LE06) Online Hilfe 5-18
Problemdefinition Übung Lastenheft Windows Befehlszeile erlaubt keine Subshells. Textzeile mit zwei Eingabewerten sind schwierig zu erzeugen. Eingabewerte aus Standardeingabe einlesen. Eingabewerte aus der Standardausgabe anderer Programme. Möglichkeit Einzeiler zu schreiben. printf erlaubt formatierten Text mit mehreren Parametern. Parameter zu printf format aus Standardeingabe Parameter zu printf kann eine Befehlszeile sein. Quoting schwierig. 5-19
Pflichtenheft Lösungsvorschlag des Auftragnehmers. Legt die Anforderungen an die Software fest. Konsistent, ausführlich, vollständig, eindeutig. Ziel: Projektvertrag. D.h. Überprüfbarkeit der Vorgaben. 5-20
Pflichtenheft Aufgabe: Zusammenfassung aller fachlichen Anforderungen Adressaten: Auftraggeber, Auftragnehmer (Manager, Entwickler, Tester) Inhalt: Funktions-, Daten- und Leistungsumfang Qualitätsanforderungen, Was, nicht Wi Detailiert weil basis des juristischen Vertrages. Form: Standardisiertes, gegliedertes Schema, meistens: textuell Eventuell: Beschreibung durch Modelle Sprache: detaillierte verbale Beschreibung, für Auftraggeber lesbar! Zeitpunkt: direkt nach Planungsphase Umfang: ausführlich, vollständig 5-21
Pflichtenheft Mögliche Gliederung Titel, Auftraggeber, Auftragnehmer, Inhaltsverzeichnis Zielbestimmung Produkteinsatz Produktfunktionen Bestandsaufnahme (Ist Zustand) Grobentwurf (Soll Zustand) Weitere Eigenschaften System, Hardware, Software Programmiersprache Leistung, Qualität, Effizienz, Useability Sicherheit, Rechtliches Glossar 5-22
Pflichtenheft Beispiel Command Line Rechner Auftraggeber: Alexander Werth, Kontaktdaten Auftragnehmer: Peter Müller, Kontaktdaten 1 Zielbestimmung 2 Produkteinsatz 3 Produktfunktionen 4 Grobentwurf 5 Produkteigenschaften 5-23
Pflichtenheft Zielbestimmung Einleitung Beschreibung der Hauptaufgabe. Ähnlich wie beim Lastenheft. Kann ergänzt werden um Auflistung der Einzelaufgaben. 5-24
1) Zielbestimmung Pflichtenheft Beispiel Entwicklung eines Programms für die Befehlszeile zum Lösen von numerischen Rechnenaufgaben. Aufgaben aus Dateien oder Standardeingabe einlesen. Grundrechenarten, Klammern, Punkt vor Strich. Mathematische Konstanten in Konfigurationsdatei. Funktionen (Trigonometrisch, Min, Max, Wurzel) 5-25
Pflichtenheft Produkteinsatz Beschreibt den Einsatzbereich. Erläuterung von Fachbegriffen. Erläuterung der Zielgruppe. Bezug des Programms zu Gesammtsystem. Relevante Geschäftsprozesse. Beschreibung spezieller Problembereiche. Graphiken und Diagramme zur Verdeutlichung. 5-26
Pflichtenheft Beispiel 2) Produkteinsatz 2.1) Anwendungsbereich Einsatz in Skripten oder Einzeilern. Nicht als externes Program gedacht um aus anderen Hochsprachen heraus Berechnungen durchzuführen. 2.2) Fachbegriffe Aufgabe: Unter einer Aufgabe wird die Eingabe an das Rechenprogram verstanden. Eine Aufgabe kann ungültig sein wenn sie sich nicht an die Syntax hält. 2.3) Zielgruppe Software Entwickler um in Skripten die Bestandteil anderer Softwareprojekte sind Berechnungen durchzuführen. System Administratoren um Skripte zur Automation zu schreiben. 5-27
Pflichtenheft Beispiel 2.4) Gesammtsystem Das Program soll zusammen mit anderen Kommandozeilentools verwendet werden. Die Standardeingabe, bzw. Ausgabe der Tools soll jeweils als Eingabe, bzw. Ausgabe für andere Tools einsetzbar sein. Berechnung der Aufgabe 5-28
Pflichtenheft Produktfunktionen Grobe Beschreibung der Funktionalität als Einleitung. Detailierte Beschreibung der Funktionalität. Übergeordneter Geschäftsprozess Use Case für Funktion Vorbedingungen Nachbedingungen Beteiligte Nutzer Auslösendes Ereignis Verwendung von UML für Diagramme möglich. 5-29
Pflichtenheft Beispiel 3) Produktfunktionen 3.1) Use case: Prozess Use Case Vorbedingungen Nachbedingung Beteiligte Nutzer Auslösendes Ereignis Berechnung echo '2+3' bc '2+3' auf Standardeingabe '5' auf Standardausgabe Entwickler eines Skripts Zwei Zahlen sind zu addieren 5-30
3.2) Funktionen: Pflichtenheft Beispiel PF001: Addition $ echo '2+3' bc 5 $ echo '2+3' bc 5 $ _ PF002: Subtraktion $ echo '2-3' bc -1 5-31
Pflichtenheft Bestandsaufnahme Wofür gibt es bereits existierende Komponenten? Detailierte Darstellung existierender Komponenten. Schnittstellen zu diesen Komponenten Diese Vorbedingungen hat der Kunde bereits erfüllt. Schriftliche Bestätigung für den Auftragnehmer. 5-32
Pflichtenheft Beispiel 4) Bestandsaufnahme Es existieren bereits vergleichbare Programme für Unix. Es existiert bereits eine Windows Portierung von bc unter der GPL. 5-33
Pflichtenheft Grobentwurf Welche Komponenten werden hinzugefügt? Änderungen an existierenden Komponenten. Schnittstellen zwischen neuen Komponenten. Interaktion der Komponenten. Verteilung der Komponenten auf Systeme. Verwendung von UML für Diagramme möglich. 5-34
5) Grobentwurf Pflichtenheft Beispiel 5.1) Programmablauf Einlesen von Argumenten. Einlesen der Aufgabe aus Datei oder Standard Eingabe. Berechnung des Ergebnisses. Ausgabe des Ergebnisses. 5-35
Übung Brainstorming Sammeln von Einsatzmöglichkeiten, Funktionen, Eigenschaften eines Programm für die Befehlszeile zum Filtern von Log Dateien nach Ereignissen. 5-36
Übung Beispiel syslog Nov 9 15:56:54 golf syslog-ng[2754]: STATS: dropped 0 Nov 9 16:47:11 golf sshd[13050]: Accepted keyboard-interactive/pam for root from 9.10.17.137 port 41419 ssh2 Nov 9 16:47:12 golf sshd[13050]: subsystem request for sftp Nov 9 16:47:48 golf sshd[13100]: Accepted publickey for nx from 9.10.42.77 port 39084 ssh2 Nov 9 16:47:50 golf sshd[13126]: Accepted keyboard-interactive/pam for werth from 127.0.0.1 port 52425 ssh2 Nov 9 16:47:50 golf NXSERVER-3.3.0[13103]: User 'werth' logged in from '9.10.42.77'. 'NXLogin::set' Nov 9 16:47:52 golf NXSERVER-3.3.0[13103]: Selected node host:localhost with port:22 'main::selectnode' Nov 9 16:47:52 golf NXSERVER-3.3.0[13103]: Current selected node: localhost is in status: running 'main::selectnode' Nov 9 16:47:52 golf NXSERVER-3.3.0[13103]: Selected session type: unix-desktop allowed in the profile of user: werth Nov 9 16:47:53 golf sshd[13132]: Accepted publickey for werth1 from 127.0.0.1 port 52426 ssh2 Nov 9 16:47:56 golf NXSERVER-3.3.0[13103]: Session '2F1731AC05D9E9745ADD0B61' started by user 'werth'. 5-37
Übung Lastenheft Auswahl von Einsatzmöglichkeiten, Funktionen, Eigenschaften eines Programm für die Befehlszeile zum Filtern von Log Dateien nach Ereignissen. 5-38
Übung Pflichtenheft Entwickle ein Pflichtenheft auf Basis des Lastenhefts. 5-39
Übung Entwurf Entwickele mit der Methode der schrittweisen Verfeinerung ein detailiertes Design des Programms. 5-40
Übung Entwurf Entwickele mit der Methode der schrittweisen Verfeinerung ein detailiertes Design des Programms. 5-41