! Der Begriff des Systems!! Definition eines Informatik-Systems! ! Wie entwickeln wir Informatik-Systeme?!

Ähnliche Dokumente
!"Der Begriff des Systems!!"Definition eines Informatik-Systems!!"Wie entwickeln wir Informatik-Systeme?!

! Der Begriff des Systems! Definition eines Informatik-Systems! Wie entwickeln wir Informatik-Systeme?

!" Aktive Beherrschung von Modellierungsmethoden! !" Aktive Beherrschung einiger theoretischer Grundlagen!

Grundlagen der Programmierung! Kapitel 1: Einführung! Ziel der Vorlesung Grundlagen der Programmierung! Überblick über das Einführungs-Kapitel!

! Aktive Beherrschung von Modellierungsmethoden. ! Aktive Beherrschung einiger theoretischer Grundlagen

Einführung in die Programmierung

Inhalte des Moduls Programmieren 1

Analyse und Entwurf von Softwaresystemen mit der UML

Objektorientierte Programmierung (OOP)

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Kapitel 4 - Die Implementierungsphase

Fachbereich Informatik

Inhaltsübersicht. Vorwort 15. Vorwort zur deutschen Ausgabe 22. Kapitel 1 Elemente der Programmierung 25. Kapitel 2 Funktionen und Module 203

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

Einführung in die Informatik I (autip)

Kapitel

Presentation of a Large Complex Project

allgemeine Übersicht / Struktur

Systemtheorie 1. Formale Systeme 1 # WS 2006/2007 Johannes Kepler Universität Linz, Österreich

Einführung in die Informatik 1

Organisatorisches (1)

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Objektorientierte Modellierung (1)

Praktische Informatik I

Was ist Informatik? Alexander Lange

Inhalt. " DiaGen Historie und Beschreibung. " Architektur eines DiaGen-Editors. " Hypergraphen. " DiaGen-Editoren Komponenten

Gibt es eine eigenen Didaktik für das Hauptund das Nebenfach sowie weitere Differenzierungen?

Vorlesung Programmieren

Einführung in die Informatik 1

5.3 Korrektheit und Verifikation

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

I.1. Organisatorisches - 1 -

Software Engineering. 5. Architektur

Kapitel 2 - Die Definitionsphase

Praktikumsvorbesprechung: Software Engineering WS 07/08

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Lehrstuhl 1 / Fakultät für Informatik. Haskell. Karsten Lettow

Algorithmen und Datenstrukturen (für ET/IT)

Abschnitt 11: Korrektheit von imperativen Programmen

Kapitel 1 1 Einleitung

Definitionen/Vorarbeit zum Thema Java

Inhaltsverzeichnis.

Grundlagen der Programmiersprachen

Algorithmen und Datenstrukturen

Software- und Systementwicklung

Vorlesungsinhalte. Programmiersprachen: Haskell 98: funktional, höherer Ordnung, polymorph typisiert, Interpreter

Themenübersicht Verwendung im Studium Voraussetzungen Ziele Website zum Buch Danksagungen... 21

Diskrete Strukturen Kapitel 1: Einleitung

Polyvalenter Bachelor Lehramt Informatik

Vorlesung Programmierung

Knasmüller.book Seite vii Mittwoch, 28. März : vii. Inhaltsverzeichnis

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

5.3 Korrektheit und Verifikation

Carlos Camino Grundlagen: Algorithmen und Datenstrukturen SS 2015

1 Klassen und Objekte

Vorlesung Programmierung

Software-Engineering

Vorlesung Programmierung

Vorkurs Informatik WiSe 16/17

Systemtheorie 1. Einführung Systemtheorie 1 Formale Systeme 1 # WS 2006/2007 Armin Biere JKU Linz Revision: 1.4

Vorlesung Programmierung

WS 2009/10. Diskrete Strukturen

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung. Grundkurs C++

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

ERGÄNZUNGSFACH INFORMATIK

Algorithmen und Datenstrukturen

1. Einführung. Programmieren 1 / Algorithmen und Datenstrukturen. Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Sommersemester 2010

Abschnitt 10: Datenstrukturen

Software EMEA Performance Tour Berlin, Germany June

Inhalt. Einführung in die Strukturierte Programmierung 15

Vorkurs Informatik WiSe 15/16

Software Engineering

Semantisches Geschäftsprozessmanagement Übung 1

Software Engineering. Besprechung zur Uebung 6 Softwaretests. Reinhard Stoiber HS 07

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Geoinformation I Geometr.-topol. Datenstrukturen

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

Kapitel 12: Induktive

Einführung in die Programmierung

Algorithmen und Datenstrukturen

Universität Karlsruhe (TH)

Das Doppelpack für die Informatik

Zum Buch Hinweise Handhabung des Buchs Website In eigener Sache... 19

Kernprozess zur System- und Softwareentwicklung. Logische Systemarchitektur f 1. f 2 f 3. f 4 Funktion. Technische Systemarchitektur SG 1 SG 2 SG 3

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

Software Engineering

Übungen Softwaretechnik I

Model Querys zur Überprüfung von sicherheitsrelevanten Eigenschaften

III.1 Prinzipien der funktionalen Programmierung - 1 -

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

Objektorientiertes Programmieren

Transkript:

Überblick über Kapitel 2 der Vorlesung! Grundlagen der Programmierung! Dr. Christian Herzog! Technische Universität München!! Wintersemester 2011/2012! Kapitel 2: Informatiksysteme!! Der Begriff des Systems!! Definition eines Informatik-Systems!! Wie entwickeln wir Informatik-Systeme?! Wie modellieren wir die Realität?! Beschreibungstechniken!! Aktivitäten bei der Entwicklung eines Informatik-Systems:! Analyse, Systementwurf, Detaillierter Entwurf, Implementation, Test!! Typische Aktivitäten bei der Implementation!! Verifikation und Validation von Modellen! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 1! 2! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 2! Der Begriff des Systems!! Definition eines Systems: Unter einem System versteht man eine Menge von Gegenständen, die in einem gegebenen Bezugssystem in einem Zusammenhang stehen, und die Beziehungen zwischen diesen Gegenständen. Die Gegenstände heißen Bausteine oder Komponenten.!! Jedes System hat eine Systemgrenze! Die Systemgrenze legt fest, welche Komponenten zu einem System gehören. Alle anderen Komponenten bezeichnet man als die Umgebung.!! Definition System-Schnittstelle: Die Beziehungen, die über die Systemgrenze laufen, d.h.! die Beziehungen zwischen Komponenten des Systems und Komponenten in der Umgebung.! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 3! System, Systemgrenze, Umgebung! K7! System-Schnittstelle! IF s = {(K1, K5), (K3,K6)}! Umgebung! Beziehung! Systemgrenze! Komponente! System S = (K, B) wobei K = {K1, K2, K3}! und B = {(K1,K2), (K2, K3)}! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 4!

Statt der Wolke benutzen wir einen Graphen! Die Aggregations Beziehung!! Aggregation:! Ein Gegenstand besteht aus einem oder mehreren Gegenständen.!! S besteht aus K1, K2 und K3.!! K3 ist Teil von S.! Ein Gegenstand ist Teil von einem anderen Gegenstand.! System S!! Aggregation zwischen zwei Gegenständen G1 und G2 wird durch eine Kante zwischen G1 und G2 mit einem Rauten-Symbol an einem Ende bezeichnet.!! Leseweise:! Vom Rauten-Symbol aus: besteht aus! Zum Rauten-Symbol hin: ist Teil von!! Dies ist eine Darstellung in UML (Unified Modeling Language).!! Wir werden in der Vorlesung UML verwenden bzw. uns stark an UML anlehnen.! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 5! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 6! Modellierung der Vielfachheit in Aggregationen!! In der Aggregationsbeziehung kann die Vielfachheit (Multiplizität) von Komponenten angegeben werden.!! Eine natürliche Zahl am Ende der Kante bezeichnet die Anzahl der Komponenten. 2 besondere Fälle:! Vielfachheit 1 wird nicht explizit angezeigt,! Vielfachheit viele wird durch ein Sternchen * angezeigt.! Der Systembegriff ist rekursiv!! Die Komponenten eines Systems können selbst wieder (Sub-)Systeme sein.! Sub- Sub- Auto! Sub- Sub- K7! Fahrer! n! *! Bremse! 2! 4! Rad! *! Passagiere! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 7! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 8!

Rekursion in Informatik-Systemen!! Die Komponenten eines Systems können selbst wieder (Sub-)Systeme sein. Wir unterscheiden 2 Fälle:! Das Subsystem ist ein schwarzer Kasten (black box): Das Subsystem wird als einzelner Gegenstand aufgefasst.! Das Subsystem ist ein durchsichtiger Kasten (white box): Für das Verständnis des Systems ist die Zusammensetzung in Subsysteme und Komponenten wichtig.! S1! S1! S2! Rekursion!! Rekursion ist ein wichtiger Begriff in der Informatik, weil rekursive Systeme skalierbar sind:! Das Studium von Systemen im Kleinen liefert Erkenntnisse, die auf größere Systeme übertragbar sind.!! Beispiel: Übung zu einer großen Vorlesung! Problem: Erreichbarkeit der einzelnen Studenten! Lösung: Einführung eines Subsystems Tutorgruppe! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 9! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 10! Beispiel: Studentenverwaltungssystem! Vorlesung! 400! Student! 400! Student! Vorlesung! 20! Tutor-! Gruppe! 20! Student! Offenes vs. geschlossenes! Geschlossenes System: Die Komponenten des Systems haben keine Beziehung zu den Komponenten der Umgebung.!! Offenes System: Die Komponenten des Systems haben eine Beziehung zu den Komponenten der Umgebung. Die Systemschnittstelle kann sich sogar ändern.! S1! S1! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 11! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 12!

Beispiele von offenen Systemen! Kategorisierung von Informatik Systemen!! Ein Buchhaltungsystem, das die neuesten Steuergesetze berücksichtigen muss.!! Ein Straßennavigationsystem, das die aktuellen Baustellen anzeigt.!! Eine existierende Datenbank, die ans Internet anzuschließen ist.!! Eine Studentenverwaltungssystem, das die neueste Prüfungsordnung berücksichtigen muss.!! Die Aufgaben, die wir mit Informatik-Systemen bearbeiten, haben wir in 4 Klassen eingeordnet:! 1. Berechnung von Funktionen! 2. Prozessüberwachung! 3. Eingebettete Systeme! 4. Adaptive Systeme! Offene Systeme! Der Begriff geschlossenes System ist eine Idealisierung. Wir benutzen geschlossene Systeme im Rahmen dieser Vorlesung aus didaktischen Gründen. In der Praxis hat der Informatiker fast nur mit offenen Systemen zu tun.! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 13! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 14! Wie entwickelt man Informatik-Systeme?! Aktivitäten bei der Entwicklung eines Informatik-Systems!! Anforderungen bei der Abbildung der Realität auf ein Modell! Funktionale Anforderungen! Gewünschte Funktionalität! Nichtfunktionale Anforderungen (auch Leistungsmerkmale genannt)! Antwortzeit, Anzahl der unterstützen Benutzer!! Unterscheidung von Entwicklungsaktivitäten:! Analyse, Entwurf, Implementation, Test, Lieferung! Problemstellung! Analyse! des Problems! einer Lösung! Detaillierter! Implementation! der Lösung! Test! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 15! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 16!

Aktivitäten bei der Entwicklung eines Informatik- Systems!! Problemstellung:! Beschreibung des Problems und der Ziele, Lösungsanforderungen!! Analyse:! Modellierung der Realität und Erstellung eines Modells!! Entwurf (Design):! Konstruktion einer Lösung, die die Machbarkeit des Modells demonstriert und den Anforderungen gerecht wird! System-Entwurf: Zerlegung der Lösung in Komponenten! Detaillierter Entwurf: Spezifikation der Schnittstellen!! Implementation:! Programmierung der Lösung in einer Programmiersprache!! Test:! Überprüfung der Lösung: Sind die gewünschten Ziele erreicht?! Copyright 2011 Bernd Brügge, Christian Herzog!! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 17! Entwicklungsaktivitäten am Beispiel eines Studentenverwaltungssystems!! Problembeschreibung:! Die Verwaltung von Studenten-Daten ist bisher ein papierbasierter Prozess (Scheine, Bescheide)!! Ziel:! Ein rechnerbasiertes System (Informatik-System) für die Verwaltung! Fakultät und Studenten sollen sich jederzeit einen Überblick über den Studienstatus des Studenten machen können:! Welche Scheine fehlen mir noch für die Zulassung zur Abschlussprüfung?! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 18! Analyse-Aktivitäten!! Analyse:! Wer sind die Benutzer? Studenten, Prüfer, Prüfungsausschuss, Prüfungsamt, Studiendekan! Was sind die funktionalen Anforderungen, d.h. welche Funktionalität soll das System bereitstellen?! Anmelden im Eintragen neuer Studenten in ein Studentenverzeichnis! Suchen nach Studenten im Studentenverzeichnis! Sortieren des Studentenverzeichnisses! Studienstatus von Studenten! Was sind die nichtfunktionalen Anforderungen?! Die Antwortzeit des Systems soll kleiner als 1 Sekunde sein! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 19! Entwurfsaktivitäten!! System-Entwurf:! Welch Subsysteme hat das System?! Benutzerschnittstelle, Datenbasis, Auswertungskomponente! Welche Schnittstellen stellen die Subsysteme bereit?! Einloggen, Sortieren, Suchen, Berechnung der Note für das Zeugnis!! Detaillierter Entwurf:! Definition der APIs (Application Programmer Interface, detaillierte Schnittstellenbeschreibungen für den Programmierer)! Genaue Definition der Operationen für Student, Studentenverzeichnis, Schein und Bescheid! Entwurf/Wahl von Algorithmen und Datenstrukturen! Sortieralgorithmen: Bubblesort, Quicksort oder Mergesort?! Studentenverzeichnis: Menge, Sequenz oder Baum?! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 20!

Schnittstellenbeschreibung!! Studentenverwaltungssystem! Anmeldung (Name)! Eintrag (Neuer Student, Studentenverzeichnis)! Suche (Name, Studentenverzeichnis)! Sortiere (Studentenverzeichnis, Suchkriterium)! Studienstatus (Name, Studentenverzeichnis)!! Die Liste dieser Operationen heißt die Schnittstelle des Systems! Dienste im Systementwurf! API (Application Programmer Interface) im detaillierten Entwurf.!! Der Benutzer eines Systems braucht nur dessen Schnittstelle zu kennen, um es zu benutzen.!! Kenntnisse über die Implemen- tation sind nicht nötig.! Implementations- und Testaktivitäten...!! Implementation:! Wahl der Programmiersprache (z.b. Java für web-basiertes System)! Schreiben der Datenstrukturen und Algorithmen,! Editieren, Compilieren, Ausführen!! Test:! Entwurf von Tests. Was wird getestet? Bedienbarkeit, gewünschte Funktionalität (siehe Analyse), Fehlermeldungen.! Wahl der Tester.! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 21! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 22! f W! W! W! Entwicklungsaktivitäten sind Modelltransformationen! Analyse! M Analyse! f MA! M Analyse! M! M f MS! M f M! f W! Detail.! M! I! I! W! W! M Detail! f MD! M Detail! Implemen-! tation! f Impl! M Impl! M Impl! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 23! Subaktivitäten während Implementation und Test ( edit-compile-execute cycle )!! Codieren:! Übersetzung des detaillierten Entwurfs mit Hilfe eines Editors in ein Quellprogramm in der ausgewählten Programmiersprache!! Editieren:! Verbesserungen/Veränderungen am Quellprogramm!! Compilieren! Transformation des Quellprogramms durch einen Übersetzer (Compiler) in ein ausführbares Programm (Maschinenprogramm)!! Ausführen! Ausführen des Programms durch einen Interpreter auf einer Maschine.! Ein-! gabe! Implemen-! tation! Codieren! Editieren! Quell-! program! Compilieren! Maschinen! program! Ausführen! Aus-! gabe! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 24!

Interaktion Modell <-> Realität!! Wir benutzen Modellvorstellungen um die Realität zu steuern.!! Beispiel: Ich komme abends nach Hause und gieße meinen Garten 20 Minuten lang. Danach schalte ich den Gartenschlauch ab.! Mein Modell: Wenn mein Garten trocken ist, dann sind 20 Minuten Bewässerung gut genug, so dass die Pflanzen nicht verderben.! Die Realität: Ob das wahr ist, bleibt offen.!! Frage: Wie kann man in der Realität überprüfen, ob der Modellschluss stimmt? --> Verifikation und Validation! Wahrheitsgehalt von Modellen!! Definition Spezifikation: Eine Wirklichkeit, die unserer Gedankenwelt entstammt, oder ein Modell.!! Die Übereinstimmung einer Spezifikation mit einem Modell lässt sich mit mathematischen und logischen Schritten prüfen.! Definition Verifikation: Die Überprüfung des Wahrheitsgehaltes eines Modells M2 gegen eine Spezifikation M1.! M1! M2! R! M! M2 kann gegen! M1 verifiziert! werden!! Wenn die Realität gegeben ist und nicht selbst der Welt des Denkens entstammt, dann können wir den Wahrheitsgehalt eines Modells nur durch Experimente feststellen:! Definition Validation: Überprüfung des Wahrheitsgehaltes eines Modells M gegen die Realität R.! M muss gegen! R validiert! werden! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 25! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 26! f W! W! W! Verifikation und Validation von Modellen! Analyse! M Analyse! Validation! f MA! M Analyse! Verifikation! M f MS! M Detail.! f MD! Verifikation! M Detail! M Detail! Implemen-! tation! Verifikation! f MI! M Impl! M Impl! Methoden zur Validation von Modellen!! Bei der Validation muß das Modell mit einem Informatik-System realisiert werden, bevor man prüfen kann, ob es realitätsgetreu ist und die Anforderungen erreicht.!! Es gibt zwei Möglichkeiten:! Simulation! Prototypische Realisierung! M! f M! f W! M! I! I! W! W! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 27! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 28!

Simulation! Prototypische Realisierung!! Man realisiert einzelne Systemkomponenten und ihre Beziehungen untereinander soweit, dass man die gewünschten Aussagen über die Systemanforderungen an Einzelfällen überprüfen kann.!! Bei der Simulation wird die Funktion des simulierten Systems oft nicht berücksichtigt. Eine Simulation beschränkt sich oft nur auf die nichtfunktionalen Anforderungen.!! Beispiele:! Der Interrupthandler des Startsystems der Space Shuttle darf nicht mehr als 50 Mikrosekunden für einen Interrupt verwenden.! Das GPS Subsystem im Navigationssystem eines Autos muss zwischen minus 70 C und plus 100 C funktionieren.!! Wie kann man diese simulieren?!! Beschränkt sich auf die funktionalen Anforderungen des Systems.! Die nichtfunktionalen Anforderungen (Leistungsmerkmale) werden in einem Prototyp nicht berücksichtigt.!! Das Ziel eines guten Prototypen ist die Überprüfung des Modells aus der Analyse.! Modellierungsfehler sollte man eher zu früh als zu spät entdecken.! Die Behebung eines Fehlers, der während oder am Ende der Analyse entdeckt wird kostet weniger als die Behebung während der Implementation.! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 29! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 30! Zusammenfassung!! Systembegriff, Umgebung, Schnittstelle!! Offenes vs. geschlossenes! Aktivitäten bei der Entwicklung eines Informatik-Systems! Analyse, Systementwurf, Detaillierter Entwurf, Implementation, Test!! Aktivitäten bei der Implementation! Editieren, Compilieren, Ausführen, Testen!! Unterschied Simulation und Prototyp! Grundlagen der Programmierung TUM Wintersemester 2011/12!! Kapitel 2, Folie 31!