Werkzeuggestützte Softwareprüfung Simulationen und Prototypen Markus Spehling
Gliederung Prototypen Motivation Zusammenfassung Prototypen Simulation Motivation Zusammenfassung Simulation DEMO NetBeans 5.0 2
Motivation - Prototyp Prototyp [grch. prototypos] Urbild bzw. Muster Anwendung von Prototypen zu Testzwecken in: Elektrotechnik Maschinenbau Durchführbarkeit/Test einer Unternehmung bzw. Projekts Beispiel: Flugzeugbau Prototyp im Windkanal Quelle: www.bib.gv.at 3
Einführung - Prototyp Definition: Prototyp Ein Prototyp ist ein erstes funktionsfähiges Produkt oder Bauteil, das zu Testzwecken entworfen wird. Anhand des Prototyps werden u.a. Eigenschaften und Verhalten untersucht. Der Prototyp kann eine Diskrepanz von Design und Anforderungen zwischen Prototyp und Endprodukt aufweisen, jedoch ist eine Verhaltensübereinstimmung angestrebt. Übernahme von Prototypen-Begriff in die Software-Enwicklung 4
Einführung - Prototyp Definition: Software-Prototyp Ein Software-Prototyp ist ein mit wesentlich geringerem Aufwand als das geplante Produkt hergestelltes einfach zu änderndes und zu erweiterndes ausführbares Modell des geplanten Software-Produktes, das nicht notwendigerweise alle Eigenschaften des Zielsystems aufweisen muss. [ ] Prototyping umfasst dabei alle Tätigkeiten, die zur Herstellung von Prototypen notwendig sind.* * Software Engineering Prototyping und objektorientierte Softwareentwicklung Gustav Pomberger, Günther Blaschek 5
Einführung- Prototyp Klassischer Software Lebenszyklus Nachteile: Linearer Prozess (ohne Schleifen) Disjunkte Phasen mit fest definierten Input und Output Übergang in eine neue Phase kann nur durch Verifikation und Validierung der vorhergehenden Phase erfolgen Prototypen-orientierter Software Lebenszyklus Erweiterung vom klassischen Zyklus Nicht linear, sondern iterativ 6
Einordnung in den Software Lebenszyklus * Software Engineering Prototyping und objektorientierte Softwareentwicklung Gustav Pomberger, Günther Blaschek 7
Prototypen Phase Prototypen in Anforderungsphase (Requirements) Festlegung von Benutzeranforderungen Testen, ob alle Anforderungen, die den realen Einsatzbedingungen genügen, erfüllt sind Stellt eine bessere Ausgangsbasis für die folgenden Aktivitäten dar Prototypen in Entwurfsphase (Architecture and Component) Nochmalige Analyse der Anforderungsspezifikation 8
Nutzen und Charakteristika von Prototypen - Demonstration von Benutzeroberflächen - Experimentieren der Anwender mit dem Produkt (Trainingsversion) - besseres Verständnis von Anforderungen für das Produkt - neue Anforderungen / Fehler in vorhandenen Anforderungen - schnelle und billige Herstellung eines lauffähigen Systems - eingeschränkte Funktionalität, schlechte Performance - wesentliche fachliche Funktionalität ist erkennbar - dient als Diskussionsbasis für die weitere Entwicklung 9
Arten von Prototypen Demonstrationsprototyp Auftragsakquisition, wie soll das Produkt später aussehen Erklärung, Demonstration, Information, Wegwerf-Prototyp Pilotsystem bildet den Kern des Produktes iterative Weiterentwicklung bis zum Endprodukt Prototyp im engeren Sinne erste Funktionalität des Produktes Problemklärung, Festlegung von Ressourcen und Ziele Analyse von Aspekten der GUI und Teile der techn. Funktionalität Labormuster technische Umsetzbarkeit und Optimierung Beantwortung konstruktionsbezogener Fragen und Alternativen 10
Einteilung des Prototyping I Prototyping Throwaway- Prototyping Explanatory Prototyping Experimental Prototyping Explorative Prototyping Evolutionary Prototyping Prozess Explanatory/ erläuternd Experimental/ experimentell Explorative/ forschend Evolutionary/ evolutionär Prototyp Demonstrationsprototyp Labormuster Prototyp im engeren Sinne Pilotsystem 11
Einteilung des Prototyping II Vertikales Prototyping komplette Implementierung von speziellen Funktionen kann zu einer frühen Version des Produkts weiterentwickelt werden Horizontales Prototyping teilweise Implementierung von Funktionen ganze Funktionalität wird dargestellt 12
Evolutionäres Prototyping Entwicklungs- Spezifikation Prototypentwicklung Prototyp bewerten Nein Auslieferung des Produktes Ja Okay? Spezifikation, Entwurf und Implementierung eng verbunden ein Einstiegsprototyp (Inertial-Prototyp) wird entwickelt, der in mehreren Iterationen verfeinert und weiterentwickelt wird am Ende dieser Kette steht das Endprodukt Entwicklung startet meist mit den Anforderungen, die am besten verstanden sind 13
Wegwerf-Prototyping Entwurfsanforderungen Prototyp entwicklung Prototyp bewerten System spezifizieren Wiederverwendbare Komponenten Software entwickeln System validieren Auslieferung des Produktes Ein Prototyp wird entwickelt, um Probleme bei den Anforderungen zu entdecken und zu beheben Entwicklung startet meist mit Anforderungen, die am wenigsten verstanden sind Ziel ist die Validierung und Herleitung der Produktanforderungen Das eigentliche Produkt wird mittels eines anderen Entwicklungsprozesses entwickelt 14
Prototyping Werkzeuge Programmiersprachen Erstellung von einfachen Prototypen mittels einer geeigneten Programmiersprache Generatoren CASE (Computer Aided Software Engineering) Werkzeuge Bieten in frühen Phasen der Entwicklung den Entwicklern eine einfache und transparente Oberfläche an, die das ganze System darstellt Häufig liefern diese Werkzeuge fertig generierten Programm Code Graphische Systeme Erstellung von graphischen Benutzeroberflächen Generierung vom Programm Code, der die Oberfläche aufbaut 15
Aufwandsschätzung Vergleich* Modell: Klassischer sequentieller Software-Lebenszyklus Problemanalyse und Systemspezifikation: 25% Entwurf 25% Implementierung 15% Test 35% Modell: Prototypen-orientierter Software-Lebenszyklus Problemanalyse und Systemspezifikation: 40% Entwurf 25% Implementierung 10% Test 25% * Software Engineering Prototyping und objektorientierte Softwareentwicklung Gustav Pomberger, Günther Blaschek 16
Pro und Kontra von Prototypen Vorteile frühe Validierung durch den Kunden Reduzierung des Entwicklungsrisikos die Anforderungen der Anwender können laufend präzisiert und verifiziert werden die Qualitätssicherung kann frühzeitig eingebunden werden unbeabsichtigte Wechselwirkungen zwischen einzelnen Komponenten des Produkts können früher erkannt werden. Förderung der Kreativität schnelle Entwicklung durch entsprechende Werkzeuge möglich Nachteile höherer Entwicklungsaufwand Gefahr der Wiederverwendung von Wegwerf-Prototypen kontinuierliche Erweiterungen korrumpieren das System und machen Wartungen teuer 17
Zusammenfassung - Prototypen Adäquates Mittel für die Software-Entwicklung schnelle Entwicklung eines System Evolutionäre Prototypen startet mit am besten verstandenen Anforderungen iterative Entwicklung des Prototypen bis zum Endprodukt Wegwerf Prototypen startet mit am wenigsten verstandenen Anforderungen wird am Ende verworfen und lediglich die Erkenntnisse weitergenutzt Prototypen sind essentiell für Teile im System, die nur schlecht vorher spezifiziert werden können (z.b. GUI) Prototypen dienen nicht der Validierung oder Verifikation Ziele: Beseitigung von Missverständnissen Erkenntnisse über Techniken gewinnen, Produktivität steigern Qualitätssicherung und Reduzierung des Entwicklungsrisikos 18
Gliederung Prototypen Motivation Zusammenfassung Prototypen Simulation Motivation Zusammenfassung Simulation DEMO NetBeans 5.0 19
Motivation - Simulation Simulation [lat. simulatus] scheinbar bzw. erheuchelt Abwendung von Simulationen: Fahrzeugbau, Flugzeugbau, Problem: System ist häufig nicht bereit für Integrationstests schlechtes Kosten/ Nutzen-Verhältnis Test der Funktionsweise von Komponenten bzw. Systemen Beispiel: Airbag-Steuerung im Fahrzeug 20
Einführung - Simulation Definition: Simulation (VDI 3633): Simulation ist die Nachbildung eines dynamischen Prozesses in einem Modell, um auf Erkenntnisse zu gelangen, die auf die Wirklichkeit übertragbar sind. Im weiteren Sinne wird unter Simulation das Vorbereiten, Durchführen und Auswerten gezielter Experimente mit einem Simulationsmodell verstanden. Definition: Simulator (VDI 3633): Ein Simulator ist das Werkzeug zur Simulation, das ein Modell zur Nachbildung des dynamischen Verhaltens eines Systems und seiner Prozesse lauf- und nutzungsfähig macht. 21
Arbeitsschritte zur Simulation 1. Systemanalyse (Originalsystem) 2. Mathematisches Modell Ziel: niedriges Abstraktionsniveau 3. Implementierung des Simulators Durchführung von Simulationen 22
Vergleich Simulation, Emulation, Reales System Simulation Emulation Reales Sytem Kriterien Simulation Emulation Realumgebung Reproduzierbarkeit + gut möglich + gut möglich - schwer möglich Vereinfachungsgrad - hohe Abstraktion - niedrige Abstraktion + keine Abstraktion Szenarioerstellung + einfach + einfach - aufwendig Skalierbarkeit + hoch ~ verschieden ~ verschieden Preis + nicht teuer ~ verschieden - evtl. sehr teuer 23
Simulation - Funktionsweise Software-Entwicklung Quelle: Vorlesung: Softwarequalität SoSe05 Korrektheit von Software bzw. ~modulen Interaktion von Modulen miteinander 24
Warum Simulationen? Nutzen? Analyse des realen Systems zu aufwendig oder zu teuer reales System lässt sich nicht oder nur schwer beobachten bietet Einblick in komplexe Prozessverhalten Korrektheit von Software bzw. Softwaremodulen Schwachstellen in der Software können entdeckt werden bietet eine Möglichkeit der Verifikation von Software Entgegenwirkung der Probleme bei der Software-Entwicklung Steigende Fehlerraten im Programm-Code Steigenden Komplexität, steigende Kosten 25
Pro und Kontra von Simulation Vorteile: Einblick in komplexe System/Software-Abläufe Verifikation von Programm bzw. Programmteilen bildet einen abgeschlossenen Rahmen nachbildende System erhält und liefert die gleichen Daten, wie das originale System Nachteile: Aufgrund von Grenzen muss das Modell einfach gehalten werden (Zeit, Energie, Rechenkapazität, ) nicht einfach: Schnittstelle des Simulators Modell liefert häufig nur in einem bestimmten Kontext Ergebnisse 26
Zusammenfassung - Simulation Adäquates Mittel zur Validierung und Verifikation von Software, speziell von Modulen Vergleich der Ausgabedaten mit Sollwerten Integrationstests werden mit Software- oder Hardware-in-the-Loop Tests durchgeführt (Embedded-Systems) Visualisierung von Softwareabläufen /~prozessen keine vollständige Abdeckung alle Fälle bei der Simulation im Vergleich zu Model-Checking Unvollständige Methode Zusammenschaltung von Simulation und Model-Checking Software-Engineering ohne Verwendung des reales Systems möglich ( z.b. Mobiltelefon ) 27
Gliederung Prototypen Motivation Zusammenfassung Prototypen Simulation Motivation Zusammenfassung Simulation DEMO NetBeans 5.0 28
DEMO I NetBeans 5.0 1.) Erstellung eines Oberflächenprototyps 29
DEMO II NetBeans 5.0 2.) Emulation einer Mobilfunktelefon Applikation Beispiel: Taschenrechner 30
Literatur G. Pomberger, R. Weinreich The Role of Prototyping in Software Development Begriffe zu Simulationen und Prototypen www.software-kompetenz.de Ian Sommerville - Software-Engineering, 5th Edition, Chapter 8, 2000 - Software-Engineering, 6th Edition, Chapter 8, 2000 - Software-Engineering, Camerino, A.A. 2001-2002 G. Pomberger, G. Blaschek Software Engineering Prototyping und objektorientierte Softwareentwicklung Prof. Dr. K. Schneider, Softwarequalität, Universität Hannover, SoSe 2005 31