Teil XII Software Engineering Überblick 1 Einführung 2 Der Softwareentwicklungsprozess 3 Methoden und Werkzeuge Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 662/719 Die „Softwarekrise“ Allgemeine Feststellung: die Entwicklung komplexer Software-Systeme ist inhärent problematisch Projekte schwer planbar: brauchen oft mehr finanzielle Mittel, Zeit und Personal als ursprünglich beabsichtigt Häufig sehr spezifische und deshalb schwer vorhersehbare Probleme und Risiken Entwickelte Software entspricht oft nicht Anforderungen: allgemein geringe Qualität, fehleranfällig, nicht effizient, keine Akzeptanz durch Nutzer Projekte oft nicht nicht erfolgreich (Abbruch oder Software wird nicht ausgeliefert/eingesetzt) Wartung und Weiterentwicklung oft noch aufwändiger als Entwicklung → wurde Ende der 1960er als „Softwarekrise“ bezeichnet → beschreibt Zustand bis heute → keine allgemeine Lösung → nur Handhabung der zunehmenden Komplexität → Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 663/719 Software Engineering Definition (Software Engineering) Das Software Engineering ist die systematische Anwendung von Prinzipien, Methoden und Werkzeugen zur Entwicklung, zum Betrieb und zur Wartung von Software. Entspricht Übertragung von Konzepten aus dem Ingenieurwesen Angelehnt an technische Entwicklung gegenständlicher Produkte Berücksichtigung spezifischer Aspekte von Software Prinzip der Best Practices (Erfolgsmethoden): Systematisierung der aus Erfolgen und Mißerfolgen gewonnenen Erfahrungen Zu erreichende Ziele: Eike Schallehn, FIN/ITI Software als Produkt erfüllt bestimmte Qualitätskriterien Deren Entwicklung als Prozess erfüllt wirtschaftliche Kriterien Grundlagen der Informatik für Ingenieure 664/719 Wichtige Qualitätskriterien für Software Korrektheit: Flexibilität: Verständlichkeit: Robustheit: Effizienz: Grad der Erfüllung der Anforderungen an Software durch die umgesetzte Lösung Grad der Einsetzbarkeit der Software unter unterschiedlichen oder sich ändernden Bedingungen Grad der Nachvollziehbarkeit der Funktionsweise für Nutzer (Anwendbarkeit) sowie der inneren Struktur Entwickler (Pflege, Wartung und Weiterentwicklung) Grad der Sicherheit vor Funktionsfehlern bei unvorhersehbaren Eingaben oder Abläufen Verhältnis zwischen Aufwand und Nutzen des Einsatzes der Software Können durch Analyse oder Tests in vielen Facetten auch quantifiziert werden (Softwaremetriken) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 665/719 Softwareentwicklungsprozess Strukturierung des Vorgehens bei der Softwareentwicklung zur Verbesserung der Handhabbarkeit Seit Anfang der 1970er zahlreiche Vorgehensmodelle (Prozessmodelle) entwickelt Beschreibender Charakter: abgeleitet aus Erfahrungen erfolgreicher Projekte (Best Practice) Empfehlender Charakter: Leitpfaden für Durchführung eigener Entwicklungsprojekte Kein Modell mit Anspruch auf Allgemeingültigkeit Einsatz erfordert immer kritisches Hinterfragen im Kontext des aktuellen Projektes Grundprinzipien: Unterteilung in Phasen, Arbeitsschritte, Teilaufgaben Festlegung von möglichen zeitlichen Abläufen bzw. geeigneten Organisationsstrukturen Teil des Softwarelebenszyklus, der nach der Entwicklung auch Nutzung und Weiterentwicklung berücksichtigt Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 666/719 Konventionelles Phasenmodell Anforderungsanalyse Spezifikation Entwurf Implementierung Test Nutzung und Wartung Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 667/719 Konventionelles Phasenmodell /2 Auch bezeichnet als Wasserfallmodell, da streng sequentieller Prozessfortschritt ohne Rückkopplung Sehr Früher Ansatz, der so in der Praxis kaum zur Anwendung kommt Bedeutung aber vor allem in Aufteilung auf Phasen → so oder ähnlich in zahlreichen Vorgehensmodellen zu finden Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 668/719 Phasen der Softwareentwicklung /1 Anforderungsanalyse: Ermitteln und informales Festhalten der Zielstellung der Softwareentwicklung Basiert auf Informationen von Auftraggebern, zukünftigen Anwendern über Anwendungsbreich, existierende Systeme, etc. Abwägen von Anforderungen bzgl. Aufwand zur Umsetzung Verwandte Bezeichnungen: Problemdefinition, Planungsphase Spezifikation: Formale Beschreibung des umzusetzenden System und und Festlegung der Funktionen Entwurf: Eike Schallehn, FIN/ITI Konzeptuelle, formale Beschreibung der Umsetzung durch geeignete (noch relativ) implementierungsunabhängige Ausdrucksmittel Systemstrukturen, z.B. Architektur, Klassen, etc. Verhalten, z.B. Funktionen, Abläufe, etc. Grundlagen der Informatik für Ingenieure unterteilt Entwurf oft in weitere Phasen 669/719 Phasen der Softwareentwicklung /2 Implementierung: Programmierung der lauffähigen Software unter Verwendung einer (oder mehrerer) Programmiersprachen und -werkzeuge Test: Systematische Erprobung und Korrektur bzgl. Robustheit, Flexibilität, Effizienz und weiterer Qualitätseigenschaften Nutzung und Wartung: Einsatz der Software in einem oder vielen konkreten Anwendungsszenarien Von der Auslieferung über die Installation bis zur Weiterentwicklung der Software (Re-Engineering →) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 670/719 Begleitende Aufgaben Bei jeder Softwareentwicklung und in allen Phasen (unabhängig von Vorgehensmodell): Dokumentation: Festhalten und Erklären von erzielten Ergebnissen gewährleistet Nachvollziehbarkeit der Entscheidungen im Entwicklungsprozess Einfache Weiterentwicklung Qualitätsmanagement: Bewertung und Sicherstellung von Qualitätskriterien für den Entwicklungsprozess und das zu entwickelnde Softwareprodukt Projektmanagement: Planung und Zuteilung von für die Softwareentwicklung notwendigen Ressourcen zur Sicherstellung wirtschaftlicher Kriterien Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 671/719 Kritik am konventionellen Phasenmodell Rein sequentieller Phasenverlauf kaum praktikabel Strikte Sequenz berücksichtigt nicht: Häufig Rückschritt zu vorhergehenden Phasen notwendig Beliebige Sprünge (vorwärts/rückwärts) zwischen Phasen oft sinnvoll (z.B. „frühe“ Prototypen als Proof of Concept) Iterative Natur der Softwareentwicklung: Wiederholung von Abfolgen (z.B. ... → Implementierung → Test → Änderung des Entwurfs → Implementierung → Test ...) Weiteres Vorgehen nach „Abschluss“ der Entwicklung und Einsatz der Software → Softwarelebenszyklus Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 672/719 Spiralmodell Planung: Ziele und Anforderungen Alternativen: Risikoanalyse und Prototypen Bewertung: und nächste Iteration starten Realisierung: Entwurf und Implementierung Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 673/719 Spiralmodell Spiralmodell illustriert iterativen Charakter der Softwareentwicklung Wiederholtes Durchlaufen grundlegender Phasen mit veränderlichen Zielen und Inhalten Zunehmende Konkretisierung der Planung Wachsende Detaillierung der Spezifikation Verfeinerung des Entwurfs Präzisierung von Anforderungen Wachsen des implementierten Funktionsumfangs ... Aktuelle Ansätze wie Agile Software Engineering und Extreme Programming greifen dieses Grundkonzept meist auf Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 674/719 V-Modell Analyse Einsatz Auslieferung / Installation Spezifikation Grobentwurf Systemintegration Feinenwturf Implementierung der Systemelemente Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 675/719 V-Modell V-Modell illustriert Rückkopplungen zwecks Verifikation und Validierung angelehnt an einfaches Phasenmodell Entwickelt ursprünglich in Deutschland Empfohlenes Vorgehensmodell für Softwareprojekte der öffentlichen Hand in Deutschland Aktuell sehr umfangreiches Vorgehensmodell mit Berücksichtigung zahlreicher weiterer Aspekte (Re-Engineering, Projektmanagement, etc.) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 676/719 Softwarelebenszyklus Fokus bei vielen einfachen Vorgehensmodellen auf initiale Entwicklung eines Softwareproduktes Wartung umfasst aber Änderung der Software aus verschiedenen Gründen, z.B. Erweiterung des Funktionumfangs Anpassung an neue Anforderungen Beseitigung von Fehlern Portierung auf neue Hardware- oder Betriebssystemplattform Anpassung an neue Infrastrukturen Neue Schnittstellen ... Softwareentwicklung in der Regel kontinuierlichen Prozess im gesamten Softwarelebenszyklus Softwarealterung (sinkende Qualität) und -tod (Einstellung von Entwicklung, Ausklingen des Einsatzes) oft erst nach vielen Versionen Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 677/719 Re-Engineering Re-Engineering: Anpassung, Fehlerkorrektur und Erweiterung Version i+1 Initiale Entwicklung Eike Schallehn, FIN/ITI Initiale Version des Systems Grundlagen der Informatik für Ingenieure Version i Systemnutzung 678/719 Aktuelle Ansätze des Software Engineering Agile Software Development Keine Fokussierung auf festen Vorgaben für Abläufe Stattdessen Zuständigkeiten, (Selbt-)Organisation von Individuen in Teams und Kommunikationsstrukturen Ziel: hohes Maß an Adaptivität und Flexibilität im Entwicklungsprozess Bzgl. Abläufen angelehnt an iterative Modelle wie Spiramodell Extreme Programming (XP) Spezialfall des Agile Software Development Berücksichtigt zahlreiche weitere Ansätze in schlüssigem Gesamtmodell Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 679/719 Methoden und Werkzeuge Methoden: Verfahren, die zur Unterstützung in einer konkreten Phase (Analyse, Spezifikation, Entwurf, ...) der Softwareentwicklung angewendet werden können Werkzeuge: sind Softwareprogramme, die Softwareentwickler bei ihrer Arbeit unterstützen und ggf. Enwicklungsmethoden (↑) implementieren. Im folgenden Fokus auf Methoden und Werkzeuge für die Modellierung (vor allem Spezifikation und Entwurf) Methoden und Werkzeuge für die Programmierung (Implementierung und Test) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 680/719 Grundprinzipien von Methoden Dekomposition von Problemen in kleiner Teilprobleme → hierarchische Strukturen (Teile und herrsche) Abgrenzung von statischen (Daten, Komponenten, ...) und dynamischen Aspekten (Funktionen, Zustände, Nachrichten, ...) Unterstützung verschiedener Abstraktionsstufen, z.B. Schnittstelle vs. Implementierung Formale Modelle (für Verifizierbarkeit, Überführung in Code, etc.) vs. semi- oder informale Modelle (für Diskussion und weiter Überführung durch Entwickler) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 681/719 Methoden der Modellierung Verbreitet vor allem Modellierungsmethoden (auch Modellierungssprachen) mit grafischer Notation Zum Teil mit formal definierter Semantik Zwei wesentliche Klassen von Methoden 1 2 Strukturmodellierung (statische Aspekte) Verhaltensmodellierung (dynamische Aspekte) Im Rahmen der Vorlesung bereits vorgestellte Modellierungsmethoden Struktogramm (Verhalten) Programmablaufplan (Verhalten) Entity Relationship- Modell (Struktur) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 682/719 Weitere Methoden der Modellierung Beispiele für Methoden zur Strukturmodellierung IDEF1X (abgeleitet von ER-Modell) für Datenbanken EXPRESS und EXPRESS-G (grafische Notation) für Produktdaten (Teil des Standard for the Exchange of Product Data STEP) Beispiele für Methoden zur Verhaltensmodellierung Petri-Netze für Bedingungen und Ereignisse in nebenläufigen Abläufen (formales Modell) Business Process Modeling Notation (BPMN) für Prozesse Jackson Structured Programming (JSP) für strukturierte Programmierung Specification and Description Language (SDL) für Zustände und Kommunikation in verteilten System Unified Modeling Language (UML →) entwickelt sich zu Quasi-Standard für viele Modellierungsaufgaben Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 683/719 Die Unified Modeling Language (UML) Entwickelt seit Mitte der 1990er Vereinigt zahlreiche Ansätze der objektorientierten Modellierung Umfaßt verschiedene Spracheinheiten/Diagrammtypen Struktur Klassendiagramme Komponentendiagramme Verteilungsdiagramme ... Verhalten Anwendungsfälle Aktionsdiagramme Sequenzdiagramme Zustandsdiagramme ... Heute von den meisten Werkzeugen der Softwareentwicklung unterstützt Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 684/719 UML-Beispiel: Klassendiagramm Bearbeiter -nachname -vorname Zeichnung -titel -status +erstellen() +prüfen() +bearbeiten() +freigeben() +zurückweisen() * -bearbeitet von Konstrukteur * * -fachgebiet Prüfer -geprüft von 1 Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 685/719 UML-Beispiel: Zustandsdiagramm / erstellen() / prüfen() in Bearbeitung / zurückweisen() in Prüfung / freigeben() / bearbeiten() in Produktion Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 686/719 UML-Beispiel: Sequenzdiagramm Meier:Konstrukteur Schulze:Prüfer Zeichnung zur Prüfung Zurückgewiesen Zeichnung zur Prüfung Freigabe Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 687/719 Werkzeuge zur Modellierung Computer Aided Software Engineering (CASE) → CASE-Tools Ideal: gesamtheitliche Unterstützung des Entwicklungsprozesses über alle Entwicklungsphasen (Analyse, Spezifikation, Entwurf, Implementierung, Test) Unterstützen zum Teil Übergang zwischen Phasen, z.B. Code-Generierung oder Reverse Engineering (Ableitung von Modellen aus Code) als Grundlage für Re-Engineering Beispiel: Rational Rose (IBM), Together (Borland), Umbrello (Open Source) Integrierte Programmierumgebungen (IDE = Integrated Development Environment) Eike Schallehn, FIN/ITI Aktueller Trend: ausgewählte Modellierungsmethoden heute mitunter in Entwicklungsumgebungen für Programmiersprachen integriert Fokus bleibt aber auf Implementierung Unterstützung der Code-Generierung Beispiele: NetBeans IDE (Sun, Open Source), IntelliJ IDEA Grundlagen der Informatik für Ingenieure (JetBrains) 688/719 CASE-Tool: Umbrello Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 689/719 IDE: NetBeans Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 690/719 Methoden und Werkzeuge zur Implementierung Methoden entsprechen im weiteren Sinne Programmierparadigmen, vor allem Strukturierte Programmierung Prozedurale/funktionale Programmierung Objektorientierte Programmierung ... Werkzeuge sind Programmierumgebung (Editor, Compiler bis hin zur IDE) Debugger zur Fehlersuche (meist Teil der IDE) Code- und Versionsmanagement Profiler zum Effizienztest Testumgebungen zur Validierung Im weiteren Sinne Systeme im Umfeld der Entwickler: Workflow Management, Projektmanagement, etc. Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 691/719 Zusammenfassung: Software Engineering Software Engineering: Teil der Informatik, der sich mit der systematischen Entwicklung von Software beschäftigt Notwendig zur Handhabbarkeit von Risiken Prozessmodelle als Richtlinie für Vorgehen bei der Softwareentwicklung Konkrete Prinzipien, Methoden und Werkzeuge für alle Phasen des Prozesses Allheilmittel für Probleme existiert aber nicht: laut aktueller Studie 40% aller Software-Projekte scheitern Weitere 33% dauern zu lange bzw. haben zu hohe Kosten Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 692/719 Teil XIII Rechnernetze Überblick 1 Einführung 2 Netzwerktechnologien 3 TCP/IP und das Internet Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 694/719 Rechnernetze Definition (Rechnernetz) Ein Rechnernetz ist ein Zusammenschluss von verschiedenen autonomen Computern zum Zweck des Austauschs von Information. Auch: Rechnernetzwerke oder einfach Netzwerk, Englisch: Computer Network Bedeutender Einfluss auf Verbreitung von Rechentechnik Verbessern Nutzen und Nutzbarkeit von Computern im öffentlichen und geschäftlichen Bereich Zugreifbarkeit von Daten und Diensten Effizienz durch Verteilung und Parallelität Maßgebliche Ursache für Popularisierung von Computern im privaten Bereich (z.B. WWW) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 695/719 Rechnernetz (Beispiel) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 696/719 Aufbau von Netzen Nodes: Knoten im Netzwerk Host: Rechner im Netzwerk als spezieller Knoten mit eigener Adresse Knoten ohne Adresse: z.B. Hubs, Switches oder Modems Weitere Knoten mit Adesse: Router, Drucker, etc. Link: Verbindung zwischen einzelnen Knoten direkt (Zweipunktverbindung) oder über einen Bus (geteiltes Übertragungsmedium ↑) Subnetze: kleinere Teilnetze verbinden Kommunikationsinfrastruktur: Zusammenfassung und Abstraktion von verbundenen Rechnernetzen in einem definierten Kontext (z.B. Internet oder lokales Netzwerk einer Firma) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 697/719 Anwendungen in Netzen Anwendungen im Netz fallen in 2 Hauptkategorien (typische Architekture) Client-Server: ein Programm auf einem Rechner stellt einen Dienst bereit (Server ) den andere Programme auf anderen Rechnern nutzen (Clients) Beispiele: WWW (Web-Server und Web-Browser), Email (Mail-Server, Mail-Clients), Datenbanksysteme (DB-Server und DB-Anwendung) Normalerweise Pull-Ansatz: Clients lösen Kommunikation durch Dienstaufruf aus Push-Ansatz: Server überträgt aktiv Daten an Clients (z.B. bei Eintreffen oder Vorliegen einer bestimmten Bedingung) Peer-to-Peer: Kommuinkation findet zwischen gleichberechtigten Programmen im Netz statt, d.h. jeder kann Dienste Nutzen und bereitstellen Beispiele: Chat (IRC, ICQ), File Exchange (Gnutella, BitTorrent) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 698/719 Bestandteile von Rechnernetzen Funktion des Gesamtnetzwerkes ergibt sich aus Hardware und Software Hardware: Übertragungsmedien: Kabel, Funk Spezielle Geräte/Rechner: Hubs, Switches, Router, etc. Angeschlossene Endgeräte (Hosts, Drucker) Software: Implementierte Protokolle (↓) zur Umsetzung der Kommunikation Netz-fähige Anwendungen Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 699/719 Netzwerktopologien Netzwerktopologie: Anordnung von Knoten in einem Netzwerk folgt in der Regel grundlegenden Mustern Unterscheidung in zwei Ebenen (in etwa Ebenen 1 und 2 des ISO/OSI-Referenzmodells ↓) Physische Topologie: entspricht tatsächlicher Verbindung der Knoten durch Übertragungsmedium („Verkabelung“, Funkkanäle) Logische Topologie: entspricht Kommunikationsstruktur zwischen Knoten dieses Netzes Logische und physische Struktur können voneinander abweichen, z.B. Ethernet „verkabelt“ möglich als Ring, logische Kommunikation entspricht aber Bus (Nachricht geht an alle Knoten) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 700/719 Wichtige Netzwerktopologien Ringtopologie Mesh-Topologie Eike Schallehn, FIN/ITI Sterntopologie Bustopologie Grundlagen der Informatik für Ingenieure 701/719 Netzwerktopologien /2 Verschiedene Topologien unterscheiden sich bezüglich wichtiger Kriterien Ausfallwahrscheinlichkeit bei lokalen Störungen (Ausfall eines Knotens) Geschwindigkeit einer einzelnen Übertragung (über einen Link oder mehrere → Hops) Durchsatz: Möglichkeit paralleler Übertragungen Skalierbarkeit: Leichtigkeit des Hinzufügens neuer Knoten Aufwand für Implementierung und Einsatz ... Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 702/719 Aufbau komplexerer Netze Komplexere Netze bilden sich aus Kopplung von Teilnetzen entsprechend eigener Topologie Meist: (lose) hierarchische Struktur von Netzen Beispiel Internet: Backbone (Wirbelsäule)-Netz zur Verbindung zentraler Punkte auf Kontinenten und in Ländern Darunter organisieren sich größere Netzwerke für Universitäten, Provider, Firmen Darunter organisieren kleinere Netze in Abteilungen, Niederlassungen, Haushalten ... In Firmen vorherrschend: hierarchisch organisierte Bus-Topologien Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 703/719 WAN, LAN, WLAN, etc. Wide Area Network (WAN): große, Länder- oder Kontinentgrenzen überschreitende Rechnernetze bestehend aus vielen Teilnetzen und offen für beliebige Anzahl weitere Knoten → vor allem das Internet Local Area Network (LAN): Rechnernetz in einem bestimmten, abgeschlossenen geographischen oder organsiatorischen Kontext, z.B. Rechnernetz einer Firma, Universiät oder eines Haushalts → schnellere Übertragung, keine oder geringe hierarchische Struktur Wireless LAN (WLAN): „kabelloses“ LAN unter Verwendung von Funktechnologie zur Untertstützung flexibler Strukturen und mobiler Geräte Ad hoc WLAN: Rechner kommunizieren untereinander gleichberechtigt in einer Mesh-Topologie (z.B. Bluetooth) Infrastruktur: zentrale Basisstation (Access Point) existiert Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 704/719 Netzwerkprotokolle Netzwerkprotokolle Protokoll allgemein: Festlegung der Regeln für den Umgang und die Kommunikation Definition (Protokoll) Ein Protokoll im Sinne von Rechnernetzen ist eine implementierbare Festlegung, wie der Verbindungsaufbau sowie die Übertragung von Daten zwischen zwei Netzwerkknoten abläuft. Viele verschiedene Protokolle existieren, welche in Protocol Stacks (Protokollstapel) eingeordnet werden können Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 705/719 Protocol Stacks Protocol Stack: Anordnung von Protokollen in Ebenen Einzelne Protokolle bieten „nach oben“ wohldefinierte Schnittstelle Verlassen sich „nach unten“ auf Bereitstellung der Funktionalität durch tiefere Protokollebene Unterstützen schrittweise Abstraktion von Anwendungsprogrammen (obere Ebenen) bis hin zum Übertragungsmedium (untere Ebenen) Ermöglichen Flexibilität bzgl. der Wahl unterschiedlicher Übertragungsmedien (untere Schichte austauschbar) und verschiedener Anwendungen (obere Schichten austauschbar) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 706/719 Das ISO/OSI-Referenzmodell Eike Schallehn, FIN/ITI L7 Application Anwendungsspezifische Funktionen L6 Presentation Anpassung der Darstellung der Daten L5 Session Zustandsbehaftete Verbindung der Anwendungen L4 Transport Kopplung von Anwendungen an Übertragungssystem L3 Network Logische Adressierung und Vermittlung über Netzwerkgrenzen L2 Data Link Adressierung und Vermittlung im physischen Netzwerk L1 Physical Physische Übertragung der Daten über Medium (Hardware) Grundlagen der Informatik für Ingenieure 707/719 Das ISO/OSI-Referenzmodell Standardisiertes Modell für den Aufbau von Protocol Stacks Aufteilung in Protokollebenen (Layers), welche bestimmte Abstraktionsstufen und entsprechende Funktionalität beschreiben In der Form nicht implementiert, aber für die Beschreibung und den Vergleich von Protokollen notwendig Grundlage für das Verständnis der Funktionsweise von Rechnernetzen Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 708/719 Packet Switching Heutige Rechnernetze basieren auf Packet Switching (Paketvermittlung): Zu übertragende Daten, Dateien, Datenströme, etc. werden in Pakete (Datenblöcke) fester Größe zerlegt Pakete relativ klein (z.B. meist ca. 1500 Byte bei TCP/IP) Datenübertragung wird durch geeignetes Weiterleiten (Routing) von Paketen durch feststehende Leitungsverbindungen umgesetzt Routing ist Aufgabe einer Protokollebene, z.B. Internet Protocol (IP) bei TCP/IP inter net = Übertragung zwischen den Netzen (verschiedenen physischen Verbindungen) = Routing Alternative wäre Circuit Switching (Leitungsvermittlung) Übertragung durch dynamischen Aufbau von Leitungsverbindungen z.B. bei Telefonnetzen Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 709/719 Verbindungen/Kommunikation im ISO/OSI-Referenzmodell L7 L7 L6 L6 L5 L5 L4 L4 L3 L3 L2 L2 L1 Eike Schallehn, FIN/ITI Virtuelle Verbindung: Zwischen gleichen Protokollebenen (Peer-to-Peer) Physische Verbindung: Von Layer zu Layer bzw. auf physischem Medium Grundlagen der Informatik für Ingenieure 710/719 Kopplung von Netzwerken Bridge/ Switch Hub Router Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 711/719 Kopplung von Netzwerken Gateway: (Protokollumsetzer) allgemeine Bezeichnung für Kopplung von Netzen, die unterschiedliche Protokolle verwenden, Kopplung auf beliebiger Protokollebene möglich, Begriff mit verschiedenen Bedeutungen eingesetzt Router: Verbindung verschiedener Netzen auf OSI-Schicht 3, welches das geeignete Weiterleiten von Datenpaketen (z.B. über Routing-Tabellen für Netzwerkadressen) Bridge: Kopplung physischen Segmenten von Netzwerken auf der OSI-Schicht 2, Berücksichtigung von Aspekten der logischen Datenübetragung Switch: Aktuellere Lösungen vergleichbar Bridges Hub: Multiport Repeater rein physische Kopplung von Übertragungsmedien Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 712/719 TCP/IP und das Internet Erfolgreichste und meist eingesetzte Familie von Protokollen Technologische Grundlagen entwickelt Ende der 1960er (ARPANET) Wichtigste Protokolle im Lauf der frühen ’70er vollständig spezifiziert Erste transkontinentale Verbindung von TCP/IP-Netzen 1975 Popularisiert vor allem durch World Wide Web (seit 1990) Benannt nach TCP und IP: zwei zentrale Protokolle des Protocol Stack Internet: weltweites Netz aller mit TCP/IP verbundenen Rechner (WAN) Intranet: abgeschlossenes und nicht-öffentliches Netzwerk, dass TCP/IP verwendet → meist LAN (zum Beispiel in Firmen), aber auch Länder (z.B. Nordkorea) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 713/719 Der TCP/IP Protocol Stack OSI-Referenzmodell L7 Application TCP/IP-Protokolle L5 Session Application: Web (HTTP, HTTP), Email (SMTP, POP), File Transfer (FTP), Remote Login (Telnet, SSH), ... L4 Transport Transport: TCP, ... L3 Network Internet: IP, ... L2 Data Link Link: Ethernet, DSL, WLAN, ... L6 Presentation L1 Physical Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 714/719 Transmission Control Protocol (TCP) Protokoll zur anwendungsunabhängige Koordination von Datenübertragungen Verbindungsaufbau Bildung von Paketen aus Anwendungsdaten (und Zusammensetzen in anderer Richtung) Verlässlichkeit der Übertragung Konkurrierende Zugriffe verschiedener Anwendungen auf Netz Meist umgesetzt als Treiber/Teil des Betriebssystems Applikationen können direkt über Sockets auf TCP zugreifen Socket entstpricht Verbindungspunkt, auf/aus dem Anwendungen Daten schreiben/lesen können Eine Verbindung besteht aus Quell- und Ziel-Socket Socket eindeutig gekennzeichnet durch IP-Adresse (↓) des Rechners und Port (applikations- oder protokollspezifischer lokaler Identifizierer) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 715/719 Packet Switching in TCP/IP Eike Schallehn, FIN/ITI Application Anwendungsdaten Transport TCP-Pakete mit TCP-Header Internet IP-Pakete mit IP-Header Link z.B. Ethernet Pakete mit Header + Footer Grundlagen der Informatik für Ingenieure 716/719 Internet Protocol (IP) Protokoll zur Übertragung von Datenpaketen über Grenzen lokaler Netzwerke hinweg Routing von Datenpaketen über Grenze von Teilnetzen (ggf. mit unterschiedlichen Protokollen der unteren Ebenen) hinweg IP-Adressen weltweit eindeutige Identifizierung Aktuelle gebräuchlich 4 Byte (IPv4), z.B. 141.44.26.71 16 Byte (IPv6) für zukünftige Anwendungen Raum möglicher Adressen unterteilt nach Präfixen für Netze verschiedener Größen Können ggf. dynamisch vergeben werden Über Domain Name System (DNS, Protokoll auf Anwendungsebene) können IP-Adressen eindeutige Namen zugeordnet werden, z.B. glenesk.cs.uni-magdeburg.de Uniform Resource Locator (URL) als vollständige Spezifizierung einer Netzwerkressource besteht z.B. aus Protokoll, IP-Adresse oder Name des Host, Port u.a. Informationen (abhängig von Protokoll), z.B. http://www.ovgu.de/ Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 717/719 Firewalls Firewalls sind ein Mittel zur Abwehr unauthorisierter Zugriffe auf Knoten in einem Netzwerk Umgesetzt zum Beispiel auf Ebene von IP Analyse und möglicherweise Rückweisen von Datenpaketen nach bestimmten Regeln (Packet Filter ) Zum Beispiel Sperren bestimmter Protokolle, Ports, etc. Aktuellere Ansätze arbeiten auch auf Ebene der Anwendungsprotokolle (z.B. HTTP, DNS, FTP, etc.) Eike Schallehn, FIN/ITI Grundlagen der Informatik für Ingenieure 718/719 World Wide Web (WWW) Virtuelles Netzwerk von Dokumenten basierend auf dem Internet Basiert auf Protokollen der TCP/IP-Familie auf Anwendungsebene, vor allem Hypertext Transfer Protocol (HTTP) Dokumente dargestellt mittels Hypertext Markup Language (HTML) Client Server-Anwendung nach folgendem Grundprinzip Web Server stellt über HTTP HTML-Dokumente u.a. zur Verfügung Web Browser (Client) sendete URL als Request und stellt empfangenes Dokumente dar Wichtige aktuelle Aspekte Eike Schallehn, FIN/ITI Zunehmende Trennung von Daten und deren Darstellung (z.B. durch Style Sheets) Server-seitige Programmlogik für dynamisch generierte Web-Seiten, zum Beispiel aus Datenbanken (Stichworte: CGI, PHP, Java Servlets) Client-seitige Dynamik durch Einbettung von Programmiersprachen wie JavaScript oder dynamischen Inhalten mittels Adobe Flash Grundlagen der Informatik für Ingenieure 719/719