Softwarepraktikum Gernot A. Fink SS 2005 Einführung Wichtige Grundbegriffe Was ist Softwareengineering? Software- und Projektentwicklung Anfordernugen and Softwareentwicklung Softwareprozesse und Vorgehensmodelle Themenüberblick
Software... Engineering? Software = Computer Programm(e)? Gernot A. Fink > 1
Software... Engineering? Software = Computer Programm(e)? Nein: Umfaßt Dokumentation als integralen Bestandteil! Gernot A. Fink > 1
Software... Engineering? Software = Computer Programm(e)? Nein: Umfaßt Dokumentation als integralen Bestandteil! Ist Programmieren nicht eigentlich eher Kunst? Gernot A. Fink > 1
Software... Engineering? Software = Computer Programm(e)? Nein: Umfaßt Dokumentation als integralen Bestandteil! Ist Programmieren nicht eigentlich eher Kunst? Teilweise, aber Softwareentwicklung [im Team] ist ingenieurmäßige Leistung! Softwareengineering Gernot A. Fink > 1
Software... Engineering? Software = Computer Programm(e)? Nein: Umfaßt Dokumentation als integralen Bestandteil! Ist Programmieren nicht eigentlich eher Kunst? Teilweise, aber Softwareentwicklung [im Team] ist ingenieurmäßige Leistung! Softwareengineering Ist Softwareentwicklung sich selbst genug? Gernot A. Fink > 1
Software... Engineering? Software = Computer Programm(e)? Nein: Umfaßt Dokumentation als integralen Bestandteil! Ist Programmieren nicht eigentlich eher Kunst? Teilweise, aber Softwareentwicklung [im Team] ist ingenieurmäßige Leistung! Softwareengineering Ist Softwareentwicklung sich selbst genug? Nein: Ist eingebettet in Systementwicklung. (z.b. Gepäckabfertigung am Flughafen: Nur Teil ist Software) Gernot A. Fink > 1
Software... Engineering? Software = Computer Programm(e)? Nein: Umfaßt Dokumentation als integralen Bestandteil! Ist Programmieren nicht eigentlich eher Kunst? Teilweise, aber Softwareentwicklung [im Team] ist ingenieurmäßige Leistung! Softwareengineering Ist Softwareentwicklung sich selbst genug? Nein: Ist eingebettet in Systementwicklung. (z.b. Gepäckabfertigung am Flughafen: Nur Teil ist Software) Findet im Rahmen eines Projekts statt! Projekt definiert organisatorische Rahmenbedingungen Gernot A. Fink > 1
Softwareengineering Definitionsvorschläge (1): The practical application of scientific knowledge in the design an construction of computer programs and the associated documentation required to develop, operate, and maintain them. [B. Boehm, 1979] Gernot A. Fink < > 2
Softwareengineering Definitionsvorschläge (1): The practical application of scientific knowledge in the design an construction of computer programs and the associated documentation required to develop, operate, and maintain them. [B. Boehm, 1979] Wissenstransfer in Richtung Praxis Software ist nicht nur Computer-Programme, sondern auch Dokumentation! Lebenszyklus von Software Gernot A. Fink < > 2
Softwareengineering II Definitionsvorschläge (2): Softwaretechnik: Zielorientierte Bereitstellung und systematische Verwendung von Methoden, Konzepten, Notationen und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen. Zielorientiert bedeutet dies die Berücksichtigung von Kosten, Zeit, Qualität [H. Balzert, 1998] Gernot A. Fink < > 3
Softwareengineering II Definitionsvorschläge (2): Softwaretechnik: Zielorientierte Bereitstellung und systematische Verwendung von Methoden, Konzepten, Notationen und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen. Zielorientiert bedeutet dies die Berücksichtigung von Kosten, Zeit, Qualität [H. Balzert, 1998] Softwaretechnik ˆ= Software Engineering SE bedient sich konkreter Methoden und Werkzeuge SE erfolgt i.d.r. im Team SE ist zielorientiert SE findet unter Randbedingungen statt (Kosten etc.) definiert durch Projektkontext Gernot A. Fink < > 3
Softwareengineering III Definitionsvorschläge (3): The application of a systematic, disciplined, quantifiable approach to the development, operation, maintainance of software. [IEEE, 1990] IEEE = The Institute of Electrical and Electronics Engineers (Berufsverband) Gernot A. Fink < > 4
Softwareengineering III Definitionsvorschläge (3): The application of a systematic, disciplined, quantifiable approach to the development, operation, maintainance of software. [IEEE, 1990] Erfolg von SE muss messbar sein SE setzt berufliche und ethische Verantwortung der Softwareentwickler voraus! Code of Ethics von IEEE/ACM IEEE = The Institute of Electrical and Electronics Engineers (Berufsverband) Gernot A. Fink < > 4
Der Projektbegriff Projekt = innovatives, komplexes Vorhaben mit definierten Randbedingungen innovativ: keine reine Wiederholung früherer Arbeiten, ggf. müssen unbekannte und neuartige Probleme gelöst werden komplex: wird i.d.r. im Team durchgeführt, ggf. mit Beteiligung von Fachleuten aus unterschiedlichen Disziplinen definierte Rahmenbedingungen: Projektziel, Dauer, Kosten, Ressourcen Projekt hat klar definiertes Ziel Vorhaben ist zeitlich begrenzt Projekte haben eigenes Budget Zur Behandlung der Komplexität kommen bestimmte Methoden zum Einsatz. Projekte sind mit einem besonderen Risiko verbunden. (wegen Einmaligkeit ) Gernot A. Fink < > 5
Spannungsfeld von Projekten Unterschiedliche Sichten auf Projekte: betriebswirtschaftlich Projekt soll im Gleichgewicht gehalten werden zwischen: verfügbarem Kostenrahmen vorgegebener Zeit und zu erzielender Qualität des Produkts. technisch Lösung hat guten Anwendungsbezug ist flexibel und wartbar. Realisierung entspricht dem Stand der Technik soziologisch Wie kann erforderliche Leistung mit einem Team erreicht werden? (Balance zwischen Teamgeist und Selbstverwirklichung ) Gernot A. Fink < > 6
Größenordnungen von Projekten Größe = Gesamtaufwand in Personenmonaten zur Umsetzung der Anforderungen Größe Beschreibung Beispiel Klein Mittel Groß wenige Personen für einen/wenige Anwender ein Team für einen Kunden und einige Anwender(-gruppen) viele Personen für sehr viele sehr verschiedene Anwender kleiner Web-Auftritt (z.b. eigene Home-Page), Terminverwaltung (für einzelnen Benutzer) e-shop, Terminverwaltung für ein Team (vernetzt!) Internationale Standardapplikationen, konzernweite Softwarepakete Gernot A. Fink < > 7
Größenordnungen von Projekten II Programming-in-the-Large vs. Programming-in-the-Small Klein Programme bis wenige hundert Zeilen Für den Eigengebrauch Vage Zielsetzung, Produkt ist Spezifikation Groß Längere Programme Für den Gebrauch durch Dritte Genaue Zielbestimmung d.h. Spezifikation erforderlich 1 Schritt: Lösung wird direkt programmiert Mehrere Schritte erforderlich Validierung am Endprodukt Validierung jedes Einzelschritts erforderlich Ein Entwickler kein Koordinationsaufwand Koordination und Kommunikation im Team erforderlich Komplexität klein Strukturierung einfach Komplexität groß Maßnahmen zur Strukturierung und Modularisierung des Problems erforderlich I.d.R. keine Dokumentation Dokumentation dringend erforderlich für Betrieb/Wartung Keine Planung bzw. Projektorganisation Planung und Projektorganisation zwingend erforderlich für zielgerichtete, wirtschaftliche Entwicklung Gernot A. Fink < > 8
Projektentwicklungszyklus Initialisierung / Projektanbahnung Angebotslegung und Auftragserteilung Vorprojekt (Pilotstudie) Abschätzung der Machbarkeit, des Aufwands Produkterstellung Basisprodukt Gliederung des Projektablaufs, Meilensteintechnik Adaptierung und Optimierung Eingehen auf Erweiterungs-/Änderungswünsche ausgehend vom Basisprodukt Nutzung Integration in Organisationsstruktur des Kunden, Schulung, Wartung Lebensdauer von Software: 10-15 Jahre (von Hardware < 5 Jahre) Gernot A. Fink < > 9
Softwareanforderungen Ziel von SE ist es, gewisse Anforderungen durch das entwickelte Softwareprodukt zu erfüllen. Werden auf abstrakter Ebene durch den Kunden vorgegeben...... und im Prozess der Anforderungsanalyse konkretisiert. Man unterscheidet: Funktionale Anforderungen Nicht-funktionale Anforderungen Problembereichsanforderungen (Unterscheidung/Einteilung nicht notwendigerweise eindeutig!) Gernot A. Fink < > 10
Softwareanforderungen II Funktionale Anforderungen Aussagen über Leistungen bzw. Verhalten des Systems Auch: Was das System nicht tun soll! Nicht-funktionale Anforderungen Beschränkungen der durch das System angebotenen Funktionalität Produktanforderungen, z.b. Reaktionszeit, Zuverlässigkeit, Benutzerfreundlichkeit Unternehmensanforderungen, z.b. Entwicklungsvorschriften Externe Anforderungen, z.b. zum Datenschutz Problembereichsanforderungen ergeben sich aus der konkreten Anwendung und nicht primär aus der Verwendung des Systems (funktional oder nicht-funktional) Gernot A. Fink < > 11
Softwareprozesse und Vorgehensmodelle Softwareprozess: Satz von Aktivitäten, zugehörigen Methoden und ihrem Ablauf mit dem Ziel der Erstellung oder Weiterentwicklung von Software Softwareprozesse umfassen immer folgende grundlegenden Abläufe: 1. Softwarespezifikation: Definiert Funktion und Beschränkung von Software 2. Softwareentwurf und -implementierung: Umsetzung der Spezifikation in ein konkretes Softwaresystem 3. Softwarevalidierung: Überprüfung, ob Anforderungen (des Kunden) erfüllt sind 4. Weiterentwicklung: Anpassung an veränderte Bedürfnisse (des Kunden) E Automatisierung der Softwareerstellung scheitert, da Softwareentwicklung Kreativität (im Entwerfen) erfordert! E Es gibt keinen idealen Softwareprozess! Gernot A. Fink < > 12
Vorgehensmodelle Vorgehensmodell: bestimmt die Abfolge der einzelnen Phasen in einem Softwareprozess Beispiele für Vorgehensmodelle (1): Build-and-Fix-Cycle einfachstmögliches Vorgehen einzelner Programmierer realisiert Software nach eigener Idee System wird entwickelt bis es eigenen Ansprüchen genügt E Keine Dokumentation, kein strukturiertes Vorgehen, keine Einteilung in Arbeitsschritte E nur bei begrenztem Softwareumfang, Wartung durch Außenstehende praktisch unmöglich! Gernot A. Fink < > 13
Vorgehensmodelle II Grundlegende Idee hinter Vorgehensmodellen: Software-Life-Cycle Idee Bewertung Betrieb Beginn Abnahme Definition Produktion Entwurf mindestens einmalige Durchführung der Arbeitsschritte E keine Möglichkeit für Schritte zurück Gernot A. Fink < > 14
Vorgehensmodelle III Beispiele für Vorgehensmodelle (2): Wasserfallmodell einzelne Rückwärtsschritte innerhalb der Phasen möglich weit verbreitetes Modell Analyse Entwurf Implementierung gut geeignet, wenn Arbeitsschritte eines Projekts klar voneinander getrennt werden können Test Betrieb Gernot A. Fink < > 15
extreme Programming (XP) Softwareprozess ( leight weight ), hauptsächlich von Kent Beck entwickelt Grundidee: Anerkannte Vorgehensweisen/Methoden ins Extreme übersteigern XP definiert Werte, grundlegende Aktivitäten und Methoden Werte: Kommunikation, Einfache Lösungen, Feedback, Mut(sic!) Aktivitäten: Coding, Testing, Listening, Designing Methoden, u.a: Pair-Programming Collective Code-Ownership Refactoring On-Site Customer 40-Hour Week zur Bezugnahme im Rahmen dieser Veranstaltung Gernot A. Fink < > 16
Themenüberblick Zielerhebung und Anforderungsanalyse (Anwendungsfälle ˆ= Use-Cases) Softwareentwurf (Architektur, Entwurfsmuster) Planung (insbes. Zeitplanung) Qualitätssicherung, Testen Organisationsformen, Projektgruppen Rückblick extreme Programming (XP) Gernot A. Fink < 17