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. 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 Body Controller Framework mit folgenden Funktionen: Reagieren auf Event Zeitgesteuerte Events 5-36
Übung Lastenheft Auswahl von Einsatzmöglichkeiten, Funktionen, Eigenschaften eines Body Controllers für PKW. 5-37
Übung Pflichtenheft Entwickle ein Pflichtenheft auf Basis des Lastenhefts. 5-38
Übung Body Controller Fensterheber: Zurückfahren bei mehr als 1kg Druck. Reaktionszeit 50ms. Fahrgeschwindigkeit Fenster. 5-39
Übung Pflichtenheft Entwickle ein Pflichtenheft auf Basis des Lastenhefts. 5-40