Teil XII Software Engineering - gif

Werbung
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
Herunterladen