--- title: Softwaretechnik 1 date: Wintersemester 20/21 author: Robert Jeutter --- > Software: Menge von Programmen oder Daten zusammen mit begleitenden Dokumenten, die für Ihre Anwendung notwendig oder hilfreich sind [Hesse] Gute Software ist schwer herzustellen - Entspricht Kundenwünsche, Vollständigkeit - Funktioniert Korrekt - Kosten- und Termintreue bei der Erstellung - weitere nicht-funktionale Qualitätsforderungen - Benutzerfreundlichkeit, Ergonomie - Sicherheit - Zuverlässigkeit, Fehlertoleranz - Performanz - Ressourcen-Effizienz, Skalierbarkeit, Übertragbarkeit - Wartbarkeit, Änder- und Erweiterbarkeit Softwaretechnik - Technische Disziplin der Software Herstellung - Zielorientierte Bereitstellung uns systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen [Balzert] Wie kann man Software besser entwickeln? - Ingenieursmäßige Herangehensweise - Verwendung bekannter Prinzipien und Methoden - Systematische Vorgehensweise - Verwendung von: - Abstraktion, Modelle, Notation, Simulation - Wiederverwendung:Muster, Komponenten, Framework - Organisation - Arbeitsteilung, Integration, Planung - Verwendung von Werkzeugen - IDE (Integrated Development Environment) - Versionierung, Bugtracker, Modellierungswerkzeug # Modellierungskonzepte > Modell: ist eine Abstraktion eines Systems mit der Zielsetzung, das Nachdenken über ein System zu vereinfachen, indem irrelevante Details ausgelassen werden [Brügge] $\rightarrow$ Beschreibung eines Ausschnitts der Realität - erstellen einer Abstraktion - abbilden signifikanter Eigenschaften - Deskriptiv/präskriptiv (real oder geplant) - Sichtweise auf ein System (Struktur, Verhalten, Zustand,...) - heißt Weglassen - setzt Verstehen voraus - ist nicht automatisierbar Verschiedene Modelle: - Analysemodell - Entwurfsmodell - Implementierung (-smodell) - Vorgehensmodell - Produktmodell - Dokumentation, Alternativen-Auswahl Modelle für: - Sichten - Funktionen - Daten - Algorithmen - Systemumgebung - Dynamisches Verhalten - Objektorientierte Modelle ## Klassische Modelle - Funktionen: - Funktionsbaum - Hierarchische Dekomosition der Fkt - nummerieren der Ebenen/Funktionen möglich - Bsp: Abonnement Verwaltung - Blockschaltbild - eingebettetes System, HW/SW - Daten - Data Dictionary - Verzeichnis von Daten mit Strukturinformationen - Backus-Naur-Form, kontextfreie Grammatik - Entity Relationship Diagram - Daten und ihre Beziehungen - Systemumgebung - Datenflussdiagramm - Fluss und Transformation von Daten zwischen Funktionen, Speichern und Schnittstellen - kein Kontrollfluss - Algorithmen - Entscheidungstabelle - Regelbasierte Beschreibung - Bedingung - Aktionen - Reduktionsregeln - Pseudocode - von Programmiersprache abstrahierende, detaillierte Beschreibung eines Algorithmus - Programmablaufplan - Grafische Beschreibung des Kontrollflusses - DIN 66001 - Unstrukturiert - Struktogramm - Nassi-Shneidermann-Diagramm - keine Sprünge - Dynamisches Verhalten (diskrete Zustände und atomare zustandübergänge) - Zustandsautomat - Verhalten mit Zuständen und -übergängen - Automatenmodelle und -theorie - Ggf zerlegung oder kommunizierende Automaten - Flow-Chart - Ereignisgesteuerte Prozesskette (EPK) - Geschäftsprozesse - BPM - Petri-Netz (ggf. mit Zeitmodell) - Grafische Beschreibung von Nebenläufigkeit und Synchronisation - Objektorientierte Modelle - Klassendiagramme - UML ## Objektorientierung - bessere Strukturierung für komplexe Zusammenhänge - Abstraktere Sichtweise - Objekt hat - definiertes Verhalten - inneren Zustand - eindeutige Identität - Klasse: gleichartige Objekte mit ggf versch Zu ## Unified Modeling Language