IT- und Medientechnik Vorlesung 1: 16.10.2017 Wintersemester 2017/2018 h_da Heiko Weber, Lehrbeauftragter
IT- und Medientechnik
Vorlesung 1: 16.10.2017
Wintersemester 2017/2018 h_da
Heiko Weber, Lehrbeauftragter
IT- und Medientechnik 16.10.20171-2 Heiko Weber
Allgemeines zur Vorlesung
alle Folien zur Vorlesung werden als PDF erhältlich sein unter: http://www.weber-vorlesung.de/
die Folien werden immer am Tag der Vorlesung online gestellt
E-Mail: [email protected]
IT- und Medientechnik 16.10.20171-3 Heiko Weber
Infos zum Dozenten
Heiko Weber
Computer Science Bachelor an der Virginia Tech
Informatik Diplom an der RWTH Aachen
seit 2000 bei der Software AG in Darmstadt 2000-2011: Software Engineer Specialist
im Entwicklungsbereich Tamino und CentraSite Schwerpunkte: XML, Security und WebDAV
2011-2016: Security Expert Methoden für sichere Software-Entwicklung IT-Sicherheits-Forschung
seit 2016: Corporate Security Officer und Datenschutzbeauftragter konzernweit IT-Sicherheit und Datenschutz
Vorlesungen an der Hochschule Darmstadt seit 2005
IT- und Medientechnik 16.10.20171-4 Heiko Weber
Sekundärliteratur?
Da die Vorlesung im Wesentlichen diverse aktuelle Techniken und Standards vorstellt, sind die besten und auch aktuellsten Quellen die Webseiten, auf denen diese Standards definiert sind.
Es gibt kein empfehlenswertes Buch, welches den Stoff der Vorlesung weitgehend abdeckt.
IT- und Medientechnik 16.10.20171-5 Heiko Weber
Zwei Schwerpunkte der Vorlesung
Teil 1: IT- und Medientechnik Einführung in verschiedene Informatik-Themen 6 Termine: 16.10., 23.10., 30.10., 06.11., 13.11., 20.11. am 23. und 30.10. jeweils 6 Stunden, sonst 4 Stunden
Teil 2: Datensicherheit baut auf Teil 1 auf Einführung in verschiedene IT-Sicherheits-Themen 7 Termine: 27.11., 04.12., 11.12., 18.12., 15.01., 22.01., 29.01. jeweils 4 Stunden
IT- und Medientechnik 16.10.20171-6 Heiko Weber
Teil 1: IT- und MedientechnikInhalt der Vorlesung laut Modulhandbuch
Grundkenntnisse des Zusammenspiels von Hard- und Software erwerben.
Verständnis für die Bedeutung des Quellcodes und der Entwicklerdokumentation erhalten und entwickeln.
Kenntnis von dem Grundaufbau des Internets haben.
Verständnis verschiedener Techniken der Datenübertragung mit Intra- und Internet besitzen.
Kenntnis der Digitalisierung von Inhalten und der elektronischen Übertragung in den gängigen Medien erwerben.
IT- und Medientechnik 16.10.20171-7 Heiko Weber
Teil 1: IT- und MedientechnikThemenübersicht der Vorlesung
Hard- und Software Hardware: CPU, Speicher, Bus, I/O, ... Software: System-, Unterstützungs-, Anwendungssoftware
Quellcode und Entwicklerdokumentation Programmiersprachen, Dokumentation Phasen der Softwareentwicklung, Software-Entwicklungsmethoden
Netzwerke und Internet Geschichte, Netzwerk-Strukturen Protokolle und Technologien, Standards, Cloud
Techniken der Datenübertragung Sockets, LAN vs. WAN, VPN
Digitalisierung von Inhalten und elektronische Übertragung Dateiformate, Kompression, Backups
IT- und Medientechnik 16.10.20171-8 Heiko Weber
Teil 1: IT- und MedientechnikThemenübersicht der Vorlesung
Hard- und Software Hardware: CPU, Speicher, Bus, I/O, ... Software: System-, Unterstützungs-, Anwendungssoftware
Quellcode und Entwicklerdokumentation Programmiersprachen, Dokumentation Phasen der Softwareentwicklung, Software-Entwicklungsmethoden
Netzwerke und Internet Geschichte, Netzwerk-Strukturen Protokolle und Technologien, Standards, Cloud
Techniken der Datenübertragung Sockets, LAN vs. WAN, VPN
Digitalisierung von Inhalten und elektronische Übertragung Dateiformate, Kompression, Backups
IT- und Medientechnik 16.10.20171-9 Heiko Weber
Hardware vs. Software (1)
Hardware die physischen Bestandteile eines Computers oder Zubehör, welches an
einen Computer angeschlossen werden kann
Software eine Reihenfolge von Anweisungen, um den Zustand der Hardware-
Komponenten eines Computers in einer speziellen Reihenfolge zu verändern
normalerweise in Programmiersprachen geschrieben, die dann in Maschinensprache übersetzt wird, damit der Computer sie versteht
IT- und Medientechnik 16.10.20171-10 Heiko Weber
Hardware vs. Software (2)
Hardware Software
Definition Physische Geräte, die benötigt werden um Software zu speichern und auszuführen.
Eine Sammlung von Anweisungen, die es einem Benutzer ermöglichen mit einem Computer zu interagieren. Alle nichtphysischen Bestandteile eines Computers.
Typen Ein-/Ausgabegeräte, Speicher, Verarbeitungsgeräte, Kontrollgeräte, ...
System-, Unterstützungs-, Anwendungssoftware.
Beispiele CD-ROM, Monitor, Drucker, Grafikkarte, Mouse, Festplatte, ...
Firefox, Microsoft Word, Ubuntu Linux, OpenOffice, ...
Funktion Die Hardware dient als Ausführungsplattform für Software.
Anweisungen an die Hardware, um spezielle Aufgaben zu erledigen.
IT- und Medientechnik 16.10.20171-11 Heiko Weber
Hardware vs. Software (3)
Hardware SoftwareAbhängigkeiten Hardware beginnt zu funktionieren,
nachdem die Software gestartet wurde.
Zum Ausführen von Software, muss sie auf Hardware installiert sein und auf diese zugreifen können.
Ausfall Hardware-Ausfall ist mehr oder weniger zufällig, meist in Abhängigkeit mit der Lebensdauer oder Frequenz der Benutzung.
Software-Ausfall ist systematisch, in Abhängigkeit der Programmfehler. Software wird mit dem Alter nicht fehleranfälliger.
Haltbarkeit Hardware wird mit der Zeit „abgenutzt“.
Software wird nicht „abgenutzt“ mit der Zeit, aber mit der Zeit werden Fehler gefunden.
IT- und Medientechnik 16.10.20171-12 Heiko Weber
Logische Komponenten eines Computers
Eingabe-geräte
Ausgabe-geräte
Eingabe AusgabeZentraleinheit(CPU)
Adressierungs-einheit
Speicher
IT- und Medientechnik 16.10.20171-13 Heiko Weber
Physische Komponenten eines Computers
Eingabegeräte
Zentraleinheit (CPU)
Bus-System
Ausgabegeräte Speicher
IT- und Medientechnik 16.10.20171-14 Heiko Weber
Physische Komponenten eines Computers
Eingabegeräte
Zentraleinheit (CPU)Prozessor
Bus-System
Ausgabegeräte Speicher
IT- und Medientechnik 16.10.20171-15 Heiko Weber
Mainboard
Physische Komponenten eines Computers
Eingabegeräte
Zentraleinheit (CPU)Prozessor
Bus-System
Ausgabegeräte Speicher
IT- und Medientechnik 16.10.20171-16 Heiko Weber
Mainboard
Physische Komponenten eines Computers
Eingabegeräte
Wärmesensor
Tastatur
Zentraleinheit (CPU)Prozessor
Bus-System
Ausgabegeräte Speicher
IT- und Medientechnik 16.10.20171-17 Heiko Weber
Mainboard
Physische Komponenten eines Computers
Eingabegeräte
Wärmesensor
Tastatur
Zentraleinheit (CPU)Prozessor
Bus-System
Ausgabegeräte
Lautsprecher
Monitor
Speicher
IT- und Medientechnik 16.10.20171-18 Heiko Weber
Mainboard
Physische Komponenten eines Computers
Eingabegeräte
Wärmesensor
Tastatur
Zentraleinheit (CPU)Prozessor
Bus-System
Ausgabegeräte
Lautsprecher
Monitor
Speicher
Arbeitsspeicher
USB-Stick
IT- und Medientechnik 16.10.20171-19 Heiko Weber
Mainboard
Physische Komponenten eines Computers
Eingabegeräte
Wärmesensor
Tastatur
Zentraleinheit (CPU)Prozessor
Bus-System
Ausgabegeräte
Lautsprecher
Monitor
Speicher
Arbeitsspeicher
USB-Stick Headset
IT- und Medientechnik 16.10.20171-20 Heiko Weber
Mainboard
Physische Komponenten eines Computers
Eingabegeräte
Wärmesensor
Tastatur
Zentraleinheit (CPU)Prozessor
Bus-System
Ausgabegeräte
Lautsprecher
Monitor
Speicher
Arbeitsspeicher
USB-Stick Headset USB-Surf-Stick
IT- und Medientechnik 16.10.20171-21 Heiko Weber
Speicher-Typen
ROM vs. RAM ROM = read-only memory
kann gar nicht oder nur unter bestimmten Umständen verändert werden – zum Lesen von Daten
z.B. zum Speichern von Firmware verwendet, CD-ROM, ... RAM = random-access memory
darauf kann beliebig zugegriffen werden Daten lesen und speichern wird oft auch als Bezeichnung für Arbeitsspeicher genutzt
persistent vs. nichtpersistent persistent: Daten werden „permanent“ gespeichert – also so
lange, bis sie explizit gelöscht werden (falls möglich) nichtpersistent: Daten leben nur vorübergehend im Speicher –
z.B. bis sie durch andere Daten ersetzt werden oder nurso lange der Speicher mit Strom versorgt wird
IT- und Medientechnik 16.10.20171-22 Heiko Weber
Speicher-Zugriffszeiten und -datengrößen
Zugriffszeit in Taktzyklen (ca.)
Größe in Bytes (ca.)
Prozessorregister 1 1.500
Arbeitsspeicher 100 16.000.000.000
Festplatte 1.000.000 2.000.000.000.000
IT- und Medientechnik 16.10.20171-23 Heiko Weber
Software-Typen: Systemsoftware
anwendungsunabhängige Software, die das Ausführen von weiterer Software ermöglicht
Betriebssystem steuert die grundlegende Kommunikation zwischen Hardware
und weiterer Software z.B. Microsoft Windows, Linux, Unix
Treiber z.B. Druckertreiber, Grafikkartentreiber
Laufzeitumgebungen z.B. Java-Runtime, C-Runtime, .NET-Runtime
IT- und Medientechnik 16.10.20171-24 Heiko Weber
Software-Typen: Unterstützungssoftware
Software, die bei der Entwicklung und/oder Wartung helfen oder eine sonstige nicht-anwendungsspezifische Leistung erbringen
einige Subtypen Entwicklungsumgebungen / Editoren (Eclipse, Notepad++, ...) Datenbanksysteme (Oracle, MySQL, Tamino, …) Compiler/Interpreter (gcc, Visual C, javac, PHP, …) Virenscanner (Avira, Kaspersky, avast, …) Web-Plattformen (Apache Webserver, IIS, Tomcat, ...)
eigentlich auch eine Gruppe von Systemsoftware, wird aber nach ISO/IEC 2383 als spezieller Typ definiert
IT- und Medientechnik 16.10.20171-25 Heiko Weber
Software-Typen: Anwendungssoftware
Software, die den/der Benutzer_in bei der Ausführung der Aufgaben unterstützt und dadurch erst den eigentlichen, unmittelbaren Nutzen erbringt
Anwendungssoftware wird von Systemsoftware ausgeführt (Betriebssystem, Treiber, Laufzeitumgebungen) und benutzt typischerweise Unterstützungssoftware (Datenbanken, Webserver)
Beispiele Microsoft Word, Firefox, OpenOffice, WhatsApp, ...
IT- und Medientechnik 16.10.20171-26 Heiko Weber
Beispiel-Software: Buchhaltungsprogramm
Betriebssystem: Linux
Laufzeitumgebung: Java-Runtime
Web-Plattform: Tomcat
Buchhaltungsprogramm Browser:Firefox
Datenbanksystem:MySQL
IT- und Medientechnik 16.10.20171-27 Heiko Weber
Programmiersprachen
einfach zu verstehende Anweisungen, die in Maschinensprache übersetzt werden müssen, bevor sie vom Computer ausgeführt werden
Sprachen, deren Syntax und Semantik genau festgelegt ist
Syntax Definition aller zulässigen Wörter / Ausdrücke, die in einer Sprache
formuliert werden können
Semantik Bedeutung der zulässigen Wörter / Ausdrücke syntaktisch falsche Wörter / Ausdrücke haben keine Semantik
Algorithmus● eine eindeutige, ausführbare Folge von Anweisungen endlicher Länge zur
Lösung eines Problems
IT- und Medientechnik 16.10.20171-28 Heiko Weber
Programmierparadigmen
Imperative Programmierparadigmen eine Folge von Befehlen, die vorgeben wie, also in welcher Reihenfolge,
die Befehle vom Computer ausgeführt werden sollen strukturierte, prozedurale, modulare Programmierung
Deklarative Programmierparadigmen nicht das Wie, sondern das Was steht im Mittelpunkt – sehr
mathematisch funktionale, logische Programmierung
Objektorientierte Programmierparadigmen Objekte werden in Klassen unterteilt, für die spezielle Funktionen gelten Wiederverwendbarkeit und Datenkapselung
Service-orientierte Programmierparadigmen● Dienste (Services) in einem Netzwerk liefern Teile der Implementierung
IT- und Medientechnik 16.10.20171-29 Heiko Weber
Compiler vs. Interpreter
Compiler (Ahead-of-time-Compiler) übersetzt ein komplettes Programmiersprachenprogramm in ein
systemspezifisches Maschinensprachenprogramm oder in systemunabhängigen Byte-Code
z.B. C, C++, Objective C, Pascal
Interpreter übersetzt einzelne Anweisungen eines Programmiersprachen-
programms zu einzelnen systemspezifischen Anweisungen in Maschinensprache, während das Programm ausgeführt wird
z.B. PHP, Perl, Python, Basic
Just-in-time-Compiler übersetzt während der Laufzeit eines Programms Teile eines
Programmiersprachenprogramms oder eines Byte-Code-Programms in Teile eines systemspezifischen Maschinensprachenprogramms
z.B. Java
IT- und Medientechnik 16.10.20171-30 Heiko Weber
Compiler vs. Interpreter: Fehlermeldungen
Compiler Syntaxfehler werden beim Compilieren gemeldet Laufzeitfehler werden beim Ausführen gemeldet Syntaxfehler führen dazu, dass das Programm nicht in
Maschinensprache übersetzt werden kann
Interpreter Syntax- und Laufzeitfehler werden beim Ausführen gemeldet Syntaxfehler bringen das Programm zur Laufzeit zum Abbruch
IT- und Medientechnik 16.10.20171-31 Heiko Weber
Compiler-Übersetzung
ein Compiler übersetzt die Anweisungen von einer höheren Programmiersprache in die Assembler-Anweisungen für die entsprechende Ziel-Plattform
C-Programm: Assembler:
main() { unsigned int a = 3; unsigned int b = 5; return a + b;}
main:pushq %rbpmovq %rsp, %rbpmovl $3, -8(%rbp)movl $5, -4(%rbp)movl -4(%rbp), %eaxmovl -8(%rbp), %edxaddl %edx, %eaxpopq %rbpret
IT- und Medientechnik 16.10.20171-32 Heiko Weber
Plattform-spezifisch
Plattform-unabhängig
Compiler-Übersetzung
Programm in höherer Programmiersprache
Compiler(Ahead-of-time Compiler)
Byte-Code
Programm in Maschinensprache
Compiler(Just-in-time Compiler)
Programm in höherer Programmiersprache
Programm in Maschinensprache
Programm in höherer Programmiersprache
Compiler(Ahead-of-time Compiler)
IT- und Medientechnik 16.10.20171-33 Heiko Weber
Softwaresystem
ein System aus mehreren Softwarekomponenten, die zusammengehören oder zusammenspielen
z.B. das Buchhaltungs-Softwaresystem besteht aus Systemsoftwarekomponenten
Betriebssystem: Linux Laufzeitumgebung: Java-Runtime
Unterstützungssoftwarekomponenten Web-Plattform: Tomcat Datenbanksystem: MySQL
Anwendungssoftwarekomponenten Buchhaltungssoftware Browser: Firefox
IT- und Medientechnik 16.10.20171-34 Heiko Weber
Softwarearchitektur
beschreibt die Anordnung und das Zusammenspiel der verschiedenen Komponenten innerhalb eines Softwaresystems
ein einfaches und grobes Beispiel ist:
Betriebssystem: Linux
Laufzeitumgebung: Java-RuntimeWeb-Plattform: Tomcat
Buchhaltungsprogramm Browser:Firefox
Datenbanksystem:MySQL
IT- und Medientechnik 16.10.20171-35 Heiko Weber
Softwaredokumentation
Benutzungsdokumentation beschreibt die Software aus Sicht der Benutzung oft unterteilt in folgende Teilbereiche:
Installationsdokumentation Anwendungsdokumentation Betriebsdokumentation
Entwicklungsdokumentation beschreit die Software aus Sicht der Entwicklung oft unterteilt in folgende Teilbereiche:
Anforderungsdokumentation Architekturdokumentation Quellcodedokumentation Testdokumentation
IT- und Medientechnik 16.10.20171-36 Heiko Weber
Anforderungsdokumentation
Kundenanforderungen (Lastenheft) Anforderungen aus Sicht des Auftraggebers/Kunden
Entwicklungsanforderungen (Pflichtenheft) Anforderungen aus Sicht der Entwicklung technische Anforderungen
wichtige Qualitätseigenschaften Konsistenz, Vollständigkeit, Korrektheit, Eindeutigkeit,
Überprüfbarkeit, Änderbarkeit, Verfolgbarkeit, Priorisierung, Verständlichkeit
IT- und Medientechnik 16.10.20171-37 Heiko Weber
Architekturdokumentation
beschreibt die Softwarearchitektur
notwendig, um den Gesamtüberblick zu behalten, aber auch um die Details festzulegen
meistens eine Kombination aus textuellen und graphischen Notationen
gängige graphische Notationen Struktogramme (Kasten/Linien/Pfeil-Diagramme) Universal Modeling Language (UML)
IT- und Medientechnik 16.10.20171-38 Heiko Weber
Quellcodedokumentation
Quellcode = Programmdateien in einer Programmiersprache
beschreibt die Programmierschnittstellen im Detail (in der Architektur-
dokumentation sind sie evtl. schon oberflächlich beschrieben) beschreibt die interne Funktionsweise des Programms
extern Dokumente zusätzlich zum Quellcode
inline Dokumentation im Quellcode spezielle Formate ermöglichen automatische Generierung von
externen Dokumenten basierend auf der inline-Dokumentation z.B. Doxygen, Javadoc oder PHPDoc
IT- und Medientechnik 16.10.20171-39 Heiko Weber
Kommentare im Quellcode
spezielle Bereiche im Quellcode, die nur dazu dienen, dass Menschen das Programm besser verstehen
werden vom Compiler/Interpreter ignoriert
Kommentarzeilen alles ab dem Beginn des Kommentars, bis zum Ende der Zeile z.B.
# Konfiguration // hier wird der Durchschnitt berechnet
Kommentarblöcke Kommentarbereiche, die mehrere Zeilen lang sein können z.B.
/* diese Zeile wird vom Compiler ignoriertund diese auch */
IT- und Medientechnik 16.10.20171-40 Heiko Weber
Testdokumentation
beschreibt die Testfälle und Testergebnisse
Testspezifikation beschreibt die Testfälle und wie die Testfälle ausgeführt werden
Testbericht Übersicht der ausgeführten Tests und der Ergebnisse der Tests enthält meist noch einen zusammenfassenden Abschlussbericht
IT- und Medientechnik 16.10.20171-41 Heiko Weber
Klassische Phasen der Softwareentwicklung
Anforderungsanalyse
Entwurf
Implementierung
Überprüfung
Installation und Abnahme
Betrieb und Wartung
IT- und Medientechnik 16.10.20171-42 Heiko Weber
Softwareentwicklungsphase: Anforderungsanalyse
Ermittlung Sammeln der Anforderungen gemeinsames Verständnis zwischen Auftraggeber und
Auftragnehmer herstellen Anwendungssicht vs. technische Sicht
Strukturierung und Abstimmung Anforderungen klar strukturiert festhalten
Prüfung und Bewertung Überprüfen, ob die Anforderungen stimmig sind
Anforderungsdokumentation
IT- und Medientechnik 16.10.20171-43 Heiko Weber
Softwareentwicklungsphase: Entwurf
basierend auf den Anforderungen wird die Softwarearchitektur erstellt
Festlegen, mit welchen Programmstrukturen, Programmiertechniken und Algorithmen die Anforderungen erfüllt und programmiert werden sollen
wenn die Software eine graphische Benutzeroberfläche hat, wird diese auch in der Entwurfsphase festgelegt
GUI = Graphical User Interface
Ziel: die Komplexität der Software für die Programmierer handhabbar machen
Architekturdokumentation (+ GUI-Design)
IT- und Medientechnik 16.10.20171-44 Heiko Weber
Softwareentwicklungsphase: Implementierung
Umsetzung der Architekturdokumentation und evtl. des GUI-Designs in ein Programm (Anweisungen in einer oder mehreren Programmiersprachen)
bei der Implementierung wird meist eine Entwicklungsumgebung benutzt, die es ermöglicht, einfacher Programme zu schreiben und Programmfehler zu finden
Programm + Quellcodedokumentation
IT- und Medientechnik 16.10.20171-45 Heiko Weber
Softwareentwicklungsphase: Überprüfung
auch als „Validierung und Verifikation“ bezeichnet
Tests Überprüfen, ob die Software die definierten Anforderungen erfüllt allgemeine Qualität überprüfen
Stabilität Benutzerfreundlichkeit Sicherheit Performance
Testdokumentation
IT- und Medientechnik 16.10.20171-46 Heiko Weber
Softwareentwicklungsphase: Installation und Abnahme
Installation der Software auf dem Zielsystem
typischerweise auch spezielle Konfiguration für die speziellen Anwendungsbedürfnisse
evtl. auch Installation weiterer abhängiger Software und Hardware Schulung der Anwender
Abnahme durch Auftraggeber