IBZ

Betriebsysteme

Einführung

Aufgabe eines Betriebssystems

Das Betriebssystem soll den Anwender den Zugriff auf die Hardware abstrahieren. Sprich es verwaltet die Betriebsmittel.

Betriebsmittel

Virtuelle Betriebsmittel
virt. Hauptspeicher, virt. Drucker, virt. Prozessoren
Reale Betriebsmittel
jedgliche Hardware, I/O Devices, Speicher, etc

Von-Neumann Architektur

Klassicher Aufbau einer CPU, nur ein Bus System welches zum Flaschenhals werden kann.

Harvard Architektur

Aufbau einer Grafikkarte (GPU) hat den Vorteil, dass sehr schnell viele Daten verarbeitet werden können. Mining, Passwort cracking

Monolitischer Kernel

Alles läuft im Kernel Space. Bis auf die Anwendungen. Nachteile sind dass, das ganze System abstürzt wenn im Kernel etwas crashed.

Vorteile: Performance

Micro Kernel

Nur das minimal Notwendige wird im Kernel Space ausgeführt und soviel wie möglich im Userspace.

Vorteile: Der Vorteil ist eine hohe Stabilität.

Nachteile: Vergleichsweise schlechte Performance.

Hybrid Kernel

Hybrid Kernel sind ein Mix aus Monolith und Micro. Dabei werden Teile im jeweils sinnvollen Teil geladen.

Performance relevante -> Kernel Space (Treiber)

Alles Andere -> User Space

Ein-/Ausgabe

Zwei Adressen
gleiche Adressen können auf verschieden Bereiche zeigen.
Ein Adressraum
alte Intel Architektur, E/A Adressen sind am Ende der Adressen.
Zwei Adressräume
Hybrid aus beidem mit allen Vorteilen.

Datenübertragung

Variante 1
CPU schreibt direkt ins RAM.
Variante 2
via DMA Controller, CPU beantragt die Daten über den DMA Controller. Dieser übernimmt dann den Task bis alle Daten transferiert wurden und meldet dann den Abschluss an die CPU.

Geräteunabhängige I/O Software

  • Abstraktion der Hardware
  • Programme müssen nicht für Computer geschrieben werden.
  • Standards vereinfachen den Umgang mit den Geräten.
  • Device Lock falls ein Gerät bereits in Nutzung ist.

Schichten Modell

Die Schichtenarchitektur (auch Schichtenmodell oder Schichtenmuster) ist ein häufig angewandtes Strukturierungsprinzip für die Architektur von Softwaresystemen. Dabei werden einzelne Aspekte des Softwaresystems konzeptionell einer Schicht (engl. tier oder layer) zugeordnet. Die erlaubten Abhängigkeitsbeziehungen zwischen den Aspekten werden bei einer Schichtenarchitektur dahingehend eingeschränkt, dass Aspekte einer "höheren" Schicht nur solche "tieferer" Schichten verwenden dürfen.

Schichten E/A Funktion
Benutzerprozess E/A-Aufruf, Formatierung der E/A; Spooling
Geräte unabhängige Software Benennung, Schutz, Blockieren, Buffern, Belegen
Treiber Geräteregister initialisieren; Status prüfen
Unterbrechungsroutinen Treiber aufwecken, wenn E/A beendet
Hardware Ausführen der E/A Operation

X-Server und RDP

X-Server und RDP arbeiten beide stark nach dem Schichten Modell und können beide im Server/Client Modell laufen. Wobei RDP etwas weniger sauber getrennt ist.

Prozesse und Threads

Prozesse

Prozesse sind Applikationen weche vom Anwender oder vom System gestartet werden können (Instanz). Webbrowser wie etwa Google Chrome starten für jeden Tab einen eigenen Prozess. Prozesse werden vom OS verwaltet.

Thread

Ein Thread ist eine parallele Ausführung von Code. Dies macht insbesondere auf Multi-Core Systemen Sinn. Threads werden von der Applikation verwaltet (create/kill). Threads können im Userspace oder im Kernelspace laufen. Heute werden sie meistens im Kernelspace erstellt damit sich das Betriebssystem besser um die Ressourcen kümmern kann. Threads brauchen weniger Ressourcen als ein Prozess vorausgesetzt es handelt sich um ein Multi-Core System. Stirbt ein Thread durch einen Fehler stirbt der ganze Prozess.

  • Threads laufen immer im gleichen Prozess
  • Untereinander sind sie nicht geschützt
  • funktionieren ähnlich wie kleine Prozesse
Virtuelle Prozessoren

Jeder Prozess wird einem virtuellen Prozessor zugeordnet. Dabei sieht es für die Prozesse so aus als ob sie alleinigen Zugriff auf die CPU hat. Das Management übernimmt dabei das OS.

Prozesslebenszyklus

Prozesslebenszyklus

Prozesslebenszyklus

  1. Prozess erzeugt
  2. Ressourcen zuweisen
  3. Code in Speicher laden
  4. Kontext laden und Prozess starten
  5. Prozess beenden
    • Sauberes Ende
    • Fatal Error
    • Kill

Interrupts

Ist eine Unterbrechung im Computerumfeld. Wird auch als Trap bezeichnet. Wichtig es handelt sich dabei nicht um polling! Kurz es sind unvorhergesehen Ereignisse. Interrupts können auch abgeschaltet werden (Masking) sollte aber wenn möglich vermieden oder zumindest kurz gehalten werden.

Synchrone Interrupts

  • Division durch Null
  • Speicherzugriffsverletzungen (Page Fault)

*Asynchrone Interrupts*

  • alle unvorhergesehen Events
  • Hardware Fehler
  • Input von Aussen
Interrupts

Interrupts

Hauptspeicher

Zugriffzeiten

Zeiten    
0,1 ns Register 1KB
2ns Cache 4MB
30-100sn Hauptspeicher 1GB-1TB
0,x -10ms HDD/SSD 200MB-+TB
ms -s DVD  

Lokalitäten

Zeitliche Lokalitäten

Daten die momentan gebraucht werden, werden sehr wahscheinlich auch in naher Zukunft wieder benutzt.

räumliche Lokalitäten

Wurde auf einen Adressbereich zugegriffen ist die Wahrscheinlichkeit hoch, das in naher Zukunft auf eine benachbarte Adresse zugegriffen wird.

Adressen und Adressräume

  • Ein Programm kann nur funktionieren wenn mindestens der aktive Teil im RAM liegt.
  • Die kleinste adressierbare Einheint ist üblicherweise ein Byte.
  • Adressen werden normalerweise hexadezimal notiert.

Heap/Stack/Code

Heap

Daten die über längere Zeit in einem Programm genutzt werden. Etwa neue Instanzen einer Klasse.

Stack

Auf dem Stack landen Daten die nur für kurze Zeit genutzt werden. Etwa lokale Variabeln welche innerhalb einer Funktion genutzt werden.

Code

Daten die beim laden der Anwendung bereits vorhanden sind (Konstanten, und initialisierte Daten).

Adressbaumbelegung

Bild einfügen der zwei Arten (Seite 11 im Hauptspeicher.pdf)

Verwaltungsarten

  • Monopgrogramming
  • Feste Partitionen
  • Variabeln Partitionen und Swapping
  • Virtuellem Speicher und Paging

Monopgrogramming

Feste Partitionen

Fürt zu Fragmention -> siehe Bild Folie 3 Hauptspeicherverwaltung

Variabeln Partitionen und Swapping

Virtuellem Speicher und Paging

  • ist die heute am meist eingesetzte Variante
  • Ein kann mehr Speicher benötigen als das System physikalisch zur Verfügung stellt.
  • Programmiere müssen sich nicht um die RAM Fragmentierung kümmern

Mapping und Paging

Mapping

  • MMU
  • Page Fault (aus einem Grund zu wenig RAM)
  • gewisse Speicherbereiche dürfen nicht ausgelagert werden (Systemdateien)

Paging

Pagetable

Siehe Bild Seite 10 Hauptspeicherverwaltung Page = 4KB Block im RAM

Paginalgorithmus

Bestimmen die Seiten welche ausgelagert werden sollen basieren auf verschiedenen Kriterien.

  • Optimal
  • NRU
  • FIFO
  • Second Chance
  • Clock Page
  • LRU
  • NFU

Not Recently Used

Firt In First Out

Ziemlich doofe Idee

Clock

Least Recently Used

Working Set

  • Basiert auf der Idee das Adressen bei einander liegen dazugehören.
  • Pages die in einem Zeitraum (t) von einem Prozess verwendet wurden vor dem Auslagern.

WSClock

WSClock = Working Set + Clock Wird in Windows eingesetzt.

Trashing

Passiert wenn zu wenig Hauptspeicher zur Verfügung steht. Da die CPU unter Umständen nicht ausgelastet wird kann es sein das diese dann noch weitere Prozesse startet welche dann noch mehr RAM wollen und so das Problem dann noch verschlimmern.

Dateisysteme

Aufgaben eines Dateisystems:

  • Konsistenz (Bit/Bytes)
  • Metadaten
  • Speicherverwaltung
  • Performance
  • Struktur Verzeichnisse / Dateien
  • Sicherheit

Zusammengefasst muss ein Dateisystem Daten persistens Speichern und die darunterliegende Hardware abstrahieren.

Kleinste mögliche Einheit ist eine Datei. Generell ist das Dateisystem dafür verantwortlich das Dateien geschrieben und gelesen werden.

Aufbau

  • Pro Partition hat man ein Dateisystem.
  • Pro Medium sind mehrere Partition mit verschiedenen Dateisysteme möglich

Speichermedium

Ein Massenspeicher ist ein physikalisches Medium mit Speicherplatz. Der Speicherplatz wird dabei in Blöcke mit einer Grösse von 512 - 4096 Bytes unterteilt. Wobei dies immer für die ganze Partition gilt.

Journaling

  • Journaling wird benötigt um das Dateisystem konsistent zu halten.
  • Dabei werden die Operationen im Dateisystem nach ACID ausgeführt. Sprich es werden nur Aktionen als komplett angesehen welche komplett ausgeführt wurden. Ansonsten gelten sie als nicht geschrieben.
  • In der Theorie müssten Dateisysteme mit Journaling keine Dateisystemchecks machen. In der Praxis kommt es aber dann doch vor das man einen Check durchführen muss.
  • Es gibt zwei Arten von Journaling, einmal nur die Metadaten und einmal das Full Journaling bei dem auch die Konsistenz der Dateiinhalte überprüft wird.

GPT

  • unbegrenzt Partitionen
  • 18 ExaByte Disken
  • 18 ExaByte Partitionen
  • Prüfsumme über der Partitiontable, kann aus Backup Table wieder hergestellt werden.

MBR

  • max. 4 physische Partitionen, mehr nur mit logischen Partitionen
  • max 2TB Disken
  • max 2TB Partitionen

UEFI

  • Hotplug
  • graphischer Modus
  • Maus/Touch Input

BIOS

  • nur Tastatur
  • kein Hotplug

Arten

FAT32

  • Kompatibilität
  • max 4 GB Dateigrösse
  • kleinste Grösse 16KB

NTFS

  • grosse Dateien möglich (16TB)
  • Sicherheitseinstellungen
  • kleinste Grösse 4KB
  • Je nach Sicherheitseinstellung langsamer als FAT32

REFS

  • Dateipfade länger als 255 Zeichen
  • sehr grosse Dateien möglich 16 ExaByte
  • REFS ist proprietär

BTRFS

  • GPL Lizenz
  • unterstützt RAID und Subpartitionen
  • Copy on Write
  • zu allen Dateien werden Metadaten abgelegt

HFS+

  • Zugriffsgeschwindigkeit
  • höhere Effizienz
  • Case insensitiv

Dateiverwaltung

contiguous allocation

Ist die schnellste Variante zum lesen. Beim Schreiben ergeben sich Probleme da freier Platz gefunden werden muss. Hinterlässt "Löcher" welche zu klein für Dateien sein können. Dies führt zu Fragmentation (Windows XP defrag). Desweiteren weiss das Betriebssystem nicht wie gross eine Datei werden kann. Dies kann dann dazu führen das manchmal eine Datei komplett neu in einen grösseren freien Speicherbereich kopieren. Wir heute praktisch nicht mehr eingesetzt.

linked list allocation

Jede Datei ist eine verknüpfte Liste von Blöcken. Jeder Block verweist auf den nachfolgenden Block. Der Diskkopf muss viele Bewegungen machen um Dateien zu finden. Wenn es einen Fehler in der Liste gibt ist die Datei ab diesem Punkt beschädigt.

linked list using table

Indexed allocation (I-nodes)

Jede Datei hat Index Blöcke welche auf die Blöcke verweisen welche die Datei enthalten. Ist heute der eingesetzte Standard.

Freier Speicherverwaltung

Bitmap
jeder Block hat ein Bit welches angibt ob er frei ist oder nicht. Kann zu Problemen bei einem Absturz führen.
Linked List
alle freien Blöcke sind in einer linked List verhenkt. Wenn ein Block nicht mehr frei ist wird er aus der Liste gelöscht.
Hybride
in der Praxis werden oft Hybriden aus den beiden Systemen eingesetzt.

Metadaten

Können je nach Filesytem sehr unterschiedlich sein.

NTFS Streams

Kann für jede Datei wieder eine Datei ablegen welche Zusatzinformationen über die Hauptdatei enthält. Etwa Thumbnail oder ähnliches. Nachteil davon ist diese Zusatzdatei wieder Zusatzinformationen enthällt.

Sind Zeiger auf eine Datei. Dabei verwendet der Symlink sehr wenig Speicherplatz. Der Platz der Datei wird so nur einmal verwendet.

Spare Files

Ein-/Ausgabe im Detail 1

3 mögliche Hardware Klassen

  1. Blockorientierte Geräte Festplatten, etc.
  2. Zeichenorientierte Geräte Zeigegeräte, Netzwerkkarten, etc.
  3. Weder noch oder beides Uhren und Zufallsgeneratoren

Geräte Klassen nach Verwendungszweck

  • Speichergeräte
  • Übertragungsgeräte
  • Geräte für Menschmaschine-Kommunikation
  • Fesplatten, CDs, USB-Sticks, etc.
  • Netzwerkkarten, Modems, etc.
  • Peripherie und Audio

NEXT Kommunikationsarten

  • Port
    • Netzwerk
  • Bus
    • daisy chain
    • gemeinsame direkte Adressierung?
  • Via Controlller
  • Adressierung
    • ? Das gleiche wie SPS? direkte über I/Os
    • I/O via Memory-Maps

NEXT CPU - IO Device Kommunikation

  • [2018-02-13 Die] Muss die CPU so kommunizieren um Daten zwischen dem Buffer und des Controllers zu vermitteln?

Die CPU kommuniziert via Register des Controllers mit dem Gerät. Zusätzlich gibt es oft noch einen Buffer für das schreiben und Lesen von Dateien aus dem Dateisystems. Jedes Controllerregistier hat seinen eigenen Port und eine eindeutige Speicheradresse zugewiesen.

NEXT I/O port space

  • [2018-02-13 Die] Heisst REG register?

Die Menge aller Ein-/Ausgabeports bildet den Ein-/Ausgabeport-Namensraum.

IN REG, PORT
Der Prozessor liest im Port und legt das Ergebniss im Register ab.
OUT PORT, REG
Der Prozessor schreibt den Inhalt des Registers in ein Controllerregistier.

Powermanagement

Gründe für Energieverwaltung

Computer die tragbar sind sollten länger Akku haben. Zudem wurden die Computer von den Usern nicht mehr abgeschaltet. Umweltschutz mit dem Energy Star Label.

Standardisierung

Begann 1990 mit APM und wurde 1996 mit ACPI erweitert. Wir auch heute noch genutzt. ACPI ist dabei in Geräteklassen organisiert. ACPI beinhaltet auch die termische Regulierung der Komponenten sowie die dazugehörigen Sensoren. Auch externe Geräte werden von ACPI verwaltet.

Power States

Global Gx
System Sx
Processor Cx
PCI Bx
PCI Lx
Devices Dx

x steht dabei für eine Zahl beginnend bei 0. Je nach Geräteklasse gibt es andere maximal Werte. Generell gilt umso höher die Zahl ist umso höher ist die Energieersparnis.

CPU Throttling

Um Strom zu sparen können moderne CPUs ihre Taktfrequenz regulieren. Zusätzlich wird dieses Feature oft auch verwendet um die CPU kühl zu halten. Dies wird vorallem bei Smartphones of verwendet. Bei x86 Systemen gibt es auch das Gegenteilige Feature um kurzzeitige Lastspitzen abzuarbeiten.

Nebst dem regulieren der Taktfrequenz können auch einzelne Cores deaktiviert werden.

Green IT

Aspekte

Geht hauptsächlich um Energie sparen und den verantwortungsvollen Umgang mit Resourcen und den fairen Abbau von Materialien.

PUE

Rechenzentren werden mit dem sogennanten PUE (Power usage effectiveness). Beim PUE wird der gesamte Energieverbrauch des Datenzenters durch den Energie verbrauch des IT-Equipment gerechnet. Der ideale Wert liegt dabei bei 1.0. Realistische Werte für Europa liegen zur Zeit bei etwa 1.12.

Stromverlust

Bereits bei der Übertragung gehen Aufgrund von Abwärme und Widerständen unterwegs um die 11% verloren.

Stromkosten

Lampe mit 250W 3h/Tag an 300 Tagen.

250W * 3h * 300 Tage = 225'000 = 225kWh Bei .25 CHF pro kWh ergeben sich 56 CHF pro Jahr.

Verteilte Systeme

Begriff

Ein verteiltes System ist eine Gruppe voneinander unabhängige Computer die dem User wie ein einzelnes kohärentes System erscheinen.

Verteilte prevasive Systeme

Kleine bis sehr kleine Systeme etwa Smartphones oder IoT Devices.

Verteilte Betriebssysteme

Spielen in der Praxis eigentlich keine Rolle.

Begriffe in verteilten Systeme

CORBA wird heute praktisch nicht mehr eingesetzt. REST bildet sich als der defacto Standard ab im Bezug auf Interfaces.

Vorteile

  • Lastverteilung
  • Ausfallsicherheit
  • Skalierbarkeit
  • Flexibilität
  • Transparenz

Nachteile

  • grosser Administrativer Aufwand

Probleme

  • Heterogenität
  • Symbolische Namen zur Adressierung finden
  • Persitenz der Daten
  • Fehlersemantik bei der Kommunikation

Heterogenität

Probleme die auftreten da die Systeme verschieden zu einander sind:

  • Anwendungen müssen gleich kommunizieren
  • Unterschiedliche Sprachkonzepte in der Runtime (.NET, Python, Java)
  • Unterschiedliche Zeichendarstellung (UTF-8, etc.)
  • Unterschiedliche Speicherun (etwa Zeilenende Problematik)

Gateway

Wäre eine Möglichkeit zwischen zwei unterschiedlichen Runtimes zu übersetzen. Wird in der Praxis allerdings nicht angewendet.

RPC / RMI

Grundidee

Der anfragende Rechner fragt beim Naming Service für einen Dienst an. Der Naming Dienst liefert ihm darauf hin den "Namen" des zuständigend Dienstes. Der anfragende Rechner kann nun direkt beim zuständigen Server anfragen.

Kommunikationsablauf

Die Kommunikation läuft in der Regel synchron ab. Passiert die Kommunikation asynchron würde es etwa bedeuten das der User über das Ende einer Aktion informiert wird aber die Daten noch effektiv in der Datenbank gespeichert werden müssen. Synchron ist einfacher umzusetzen.

Implementierungskonzept

Das Proxymodel ist in der Regel das Implementierungskonzept das in der Praxis am häufigsten verwendet wird.

Glossary

<>
Central Processing Unit
<>
Direct Memory Access Controller
<>
Graphics Processing Unit
<>
Remote Procedure Call
<>
Remote Method Invocation

Datenbanken

Relationale Algebra

Operatoren

Difference
Gibt die Unterschiede zweier Tabellen aus. Es werden nur Datensätze berücksichtig welche in beiden Tabellen vorkommen.
Intersect

Es wird die Schnittmenge zweier Tabellen augegeben.

Product

Multipliziert alle Zeilen einer Tabelle mit allen Zeilen einer anderen Tabelle. Kann auch mit mehreren Tabellen gemacht werden. Generiert sehr viele Daten.

Project

Gibt alle Zeilen einer definierten Spalte aus.

Select

Zeigt nur diese Zeilen an welche einem vorgegebenen Wert entsprechen. Etwa alle Stundensätze welche grösser 40 sind.

Joins

Verbindet zwei Tabellen zu einer. Diese werden über die Fremdschlüssel verknüpft. "Natural Join" gibt eine normalisierte Form aus.

Inner Join Equi
Hier werden nur Werte übernommen welche einen passenden Fremdschlüssel haben.
Inner Join Theta
Hier werden der Primärschlüssel und der Fremdschlüssel mit dem Operatoren grösser und kleiner als verglichen. Wird in der Praxis selten verwendet.
Outer Join
Es werden immer ein kompletter Satz auf einen anderen abgeglichen. Wobei nur die jeweilige Seite komplett übernommen wird. "Left Outer Join" zeigt die linke Tabelle komplett und bei "Right Outer Join" wird die rechte Tabelle komplett angezeigt.

Formelzeichen

Restriction
REST(r1, A2=A)
Projection
PROJ(r1,A2)
Product
PRODUCT(r1,r2)
Union
UNION(r1,r2)
Intersection
INTERSECTION(r1,r2)
Difference
DIFFERENCE(r1,r2)
Division
DIVISION(r1,A2,r2)
Join
JOIN(r1,A2=A4,r2)
Outer Join
left JOIN(r1,A1*=A4,r2), right JOIN(r1,A1=*A4,r2)

Erweiterte Bakus Nauer Form

BEFEHL [optional] (argument)

  • [] optional Parameter
  • () zwingender Parameter
  • entweder oder
  • {} zusätzlich möglich

Befehlsformen

DDL
Data Definition Language create table, create view, etc
DML
Data Manipulation Language select, insert, update
DCL
Data Control Language grant, revoke, commit

DDL

TABLE

CREATE TABLE [Benutzer] (
    [Benutzernummer] INTEGER NOT NULL,
    [Nachname] VARCHAR(40),
    [Vorname] VARCHAR(40),
    [Position] VARCHAR(40),
    CONSTRAINT [PK_Benutzer] PRIMARY KEY ([Benutzernummer])
)
DROP TABLE tabelname;

Constraint

  1. Foreign Key

    CONSTRAINT fk_bestellung FOREIGN KEY (kun_nr)
        REFERENCES tab_kunde (kun_nr)
    
  2. Unique

    CONSTRAINT uq_name UNIQUE kunde_name
    

VIEW

Ein View ist eine gedankliche, virtuelle Tabelle, die in Wirklichkeit nicht vorhanden ist. Sie beansprucht selbst keinen Platz.

CREATE kunden_zrh VIEW AS
    SELECT name, strasse, ort FROM kunden WHERE kanton = ‚Zuerich‘

DML

INSERT

INSERT INTO abteilung VALUES ( ‘A003‘ ‚‘BRUECKENBAU‘)

UPDATE

UPDATE abteilung
    SET abt_name = ‘STRASSENBAU‘
    WHERE abt_id = ‘A003‘

SELECT

SELECT [ALL | DISTINCT] { * | table.* [, table.* ...}
FROM [user.table [alias] [,[user.]table [alias]] ...
    [WHERE Klausel]
    [GROUP BY Klausel]
    [HAVING Klausel]
    [ORDER BY Klausel]
SELECT au_id, au_fname, au_lname
FROM autor

WHERE

Vergleichsoperatoren : =, <>, <, >, <=, >=
Like : name [NOT] LIKE ‚M%‘
IN abtnr [NOT] IN ( ‚A5‘, ‘A6‘)
BETWEEN : gnetto [NOT] BETWEEN 5000 AND 10000
ISNULL : name IS [NOT] NULL
% : steht für beliebige Zeichenkette.
_ : steht als Platzhalter für ein beliebiges

ORDER BY

Syntax: ORDER BY {folgenummer | spaltenname} { ASC | DESC }

Beispiele:
ORDER BY name ASC, vorname DESC
ORDER BY 1, 2

Aggregate

MIN: MIN(gehalt)
MAX: MAX(gehalt)
AVG: AVG(gehalt)
SUM: SUM(gehalt)
COUNT: COUNT(*), COUNT( DISTINCT plz)

GROUPY BY

SELECT NAME, COUNT(*) FROM KUNDE GROUP BY NAME

DELETE

DELETE FROM abteilung
    WHERE abt_id = ‘A003‘

DCL

GRANT

GRANT berechtigung [,berechtigung …]
    ON objekt [,objekt …]
    TO benutzer [,benutzer …]

Mögliche Berechtigungen:

  • Tabelle ALL PRIVILEGES
  • ALTER
  • DELETE
  • INSERT
  • SELECT
  • UPDATE
  • UPDATE(spaltenname)

REVOKE

REVOKE berechtigung [,brechtigung …]
    ON objekt [,objekt …]
    FROM benutzer [,benutzer …]

ROLES

CREATE ROLE rolenname;
GRANT SELECT, INSERT ON tabelle_xy to rolenname;
GRANT rolenname TO user;

COMMIT

BEGIN TRANSACTION
Update tblTest Set userid = ‚King‘
...
COMMIT TRANSACTION

ROLLBACK

BEGIN Transaktion
Update tblTest Set userid = ‚King‘
...
ROLLBACK TRANSACTION

Stored Procedures

Vorgefertigte SQL Anweisungen welche der User immer wieder verwenden kann. Dies ist insbesondere bei komplexen Anweisungen hilfreich oder wenn man eine Schnittstelle für einen Interface Programmierer zur Verfügung stellen möchte.

Vorteile:

  • Wiederverwendbarkeit
  • Wartbarkeit
  • Performance
  • Sicherheit

Nachteile:

  • Wiederverwendbarkeit wenn die DB getauscht wird
  • Muss zusätzlich erlernt werden
  • Testbarkeit, mehr Schichten zum testen
  • Aufteilung der Verantwortlichkeit, wer macht die Logik
  • Debugging wird durch die Abstraktion schwieriger
  • Aufwändiger zum erstellen als übliche Programmiersprachen
  • Die Datenbank übernimmt Logik
  • Refactoring

Befehle

Bei den folgenden Befehlen wird nur der grossgeschriebene Teil benötigt damit sie ausgeführt werden können. Ähnlich wie etwa bi IOS von Cisco.

Erstellen

CREATE PROCedure  HumanResources.GetMitarbeiter
    (@LastName NVARCHAR(50),
    @FirstName NVARCHAR(50))
AS select * from mitarbeit;

Ausführen

EXEcute HumanResources.GetMitarbeiter 'max', 'muster'

Löschen

DROP PROCedures proc_name
GO

User Defined Functions

Können einen Wert zurückgegeben. Dieser ist entweder Scalar oder Tabular. Scalar bedeutet das es nur ein einzelner Wert ist und Tabluar bedeutet das eine ganze Tabelle ausgegeben wird.

Befehle

Erstellen

create FUNCTION functionname()
RETURNS varchar(100)
AS BEGIN
END
go

Ausführen

EXEcute functionname
go

Löschen

DROP FUNCTION functionname
GO

Triggers

Sind eine spezielle Art Stored Procedures. Diese werden dabei immer automatisch ausgeführt wenn ihr jeweiliges Event eintritt. Ein Trigger ist dabei immer einer Tabelle zugeordnet. Wird die Tabelle gelöscht wird auch der Trigger gelöscht. Pro Tabelle kann es jeweils nur max. 3 Triggers geben. Insert, Update und Delete.

Trigger haben keine Parameter sondern beziehen sich jeweils auf die automatisch generierten "inserterted" und "deleted" Tabellen.

Trigger werden immer dann eingesetzt wenn sichergestellt werden muss das eine nachfolgende Aktion ausgeführt werden muss. Da Trigger immer automatisch ausgeführt werden wenn das jeweilige Event ausgelöst wird.

Einer der Nachteile von Triggers ist das sie direkt der Tabelle angehängt werden. Dies kann dazu führen das man eine unerwartete Reaktion erhält und nicht genau weiss woher sie kommt.

Falls möglich sollten zuerst immer Check Constraints verwendet werden bevor man Trigger einsetzt.

Befehle

CREATE TRIGGER trigger_name
    ON table_name
FOR {INSERT|UPDATE|DELETE}
AS
    sql_code

INSTEAD-OF Trigger

INSTEAD-OF Trigger sind Trigger welche anstelle der eigentlichen Aktion ausgeführt werden. Diese können etwa verwendet werden um das Löschen auf einer Tabelle um jeden Fall zu verhindern.

Constraints

Primary Key

Definiert den Primary Key in einer Tabelle.

CONSTRAINT pk_kunde PRIMARY KEY (kun_nr)

Foreign Key

Definiert das Feld als einen Foreign Key einer anderen Tabelle.

CONSTRAINT fk_bestellung FOREIGN KEY (kun_nr) REFERENCES tab_kunde (kun_nr)

Unique

Stellt sicher das der Wert nur einmal in einer Spalte existiert.

CREATE TABLE Angebot ( ..., CONSTRAINT U_code UNIQUE (lfr_code, art_code))

Default

Wird das Feld bei einem INSERT Befehl leergelassen, wird dieser Wert eingesetzt.

CREATE TABLE Adult (  ..., CONSTRAINT D_state, DEFAULT ‘CA‘ FOR state)

Check

Check constraints erlauben es einem auf einer Tabelle festzulegen welche Werte gespeichert werden dürfen. Die Check Constraints werden auch bei updates ausgelöst.

create table Patrons (
    ID int primary key,
    FirstName varchar(50),
    LastName varchar(50),
    StartDate datetime,
    EndDate datetime,
    constraint EndDateMustComeAfterStartDate check(EndDate > StartDate)

Oracle DB

Allgemeines

Oracle DB ist eine sogenannte Objekt Relationale Datenbank. Oracle versucht dabei die Vorteile von objektorientierte Datenbanken und relationalen Datenbanken zu verbinden.

Stored Procedures

Bei Oracle muss man in Stored Procedures den Variabeln den Typ nicht mitgeben. Dieser kann automatisch entsprechend dem defnierten Wert in der Tabelle zugewiesen werden.

Packages

Sind ähnlich wie Module von Python. Zum Aufrufen muss man allerdings immer den Kompletten Namen angeben.

User Define Type

create or replace type Adresse_t as object
    (strasse varchar2(20),
    hausnummer number(5),
    ortsname varchar2(40));

create or replace type Personal_t  as object
    (nachname varchar2(20),
    vorname varchar(20),
    geburtsdatum date,
    gehalt number(7,2),
    kinder number(5),
    adresse adresse_t);

CREATE TABLE personal OF Personal_t OBJECT IDENTIFIER IS SYSTEM GENERATED;

insert into personal_o values (
    personal_t('Hörler', 'Ivan', to_date('1999-12-01', 'YYYY-MM-DD'),
        1000.00, 4,
        adresse_t('musterstrasse', 2, 4900, 'Langenthal')));

Datawarehouse

Was ist ein Data Warehouse

Daten aus den operativen Systemen und externen Quellen werden in einem Data Warehouse gespeichert. Mittels Analyseprogrammen wird versucht Informationen aus den Daten zu generieren. Teilweise auch um vorherzusehen wie sich etwas in der Zukunft verhalten könnte basierend auf den bestehenden Daten. Die Daten können einem auch eine historische Sicht auf die Daten liefern. Also wie sich die Daten dahin entwickelt haben.

Mögliche Synome sind etwa:

  • Management-Informationssystem (MIS)
  • Executive Information System (EIS)
  • Decision Support System (DSS)
  • Data Mart ein dediziertes Datawarehouse. Ein gewachsenes Data Mart ist ein Data Warehouse.

Zusammenzug

Die Daten sind in der Regel auf verschieden operative Systeme verteilt. Die Daten werden dann im Data-Warehouse zusammengezogen und asynchron aktualisieren.

OLAP

OLAP Applikation
ermöglicht das Betrachten der Daten aus dem Warehouse aus verschiedenen multidimensionalen Perspektiven.
Data Mining
Analyse und Reporting Tools, Hilfsmittel und Informationen aus den Daten generieren. Entscheidende Faktoren heraussuchen. Beziehungen und Zusammenhänge in den Daten aufdecken.

Dimensionen

Mit einem Datawarehouse können dann mehrdimensionale Informationen dargestellt werden. Im Falle der Verkaufszahlen eines Produkts könnte man etwa die folgenden drei Dimensionen auswerten. Es kann beliebig viele Dimensionen geben. Würfel welche mehr als 3 Dimensionen abbilden werden Hyper-Cubes genannt.

  • Raum (Verkaufsregion)
  • Zeit
  • Produkt

Unterschiede zu operationale Systemen

Operationale Systeme Data Warehouse System
Historische Daten gehen teilweise verloren Analytik im Vordergrund
Read & Write Idealerweise Read Only
Performance ist wichtig  
Sicherheit ist wichtig  
   

ETL

Bezeichnet den Export der operativen Daten und die Umwandlung der Daten für das DSS. Sowie am Schluss das Loading, also den Import in das DSS.

Modellierungs Muster

Es gibt zwei bekannte Muster für die Datenbankmodellierung eines Datawarehouses. Star- und Snowflakeschema. Die Wahl hängt dabei stark von der Anwendung ab. Die Schema können aber auch gemischt eingesetzt werden.

Generell sollten nicht einfach alle Daten gespeichert werden sondern nur die, welche auch für die Analyse relevant sind. Redundanz ist an gewissen stellen akzeptabel.

Star Schema

Besteht aus einer Fakten Tabelle welche die eigentlichen Daten enthält. Die umliegenden Tabellen zeigen dann die Metadaten (Dimensionen) auf. Der Primary Key der Fakten Tabelle besteht aus den jeweilgen Primary Keys der Dimensionstabellen. Die Faktentabelle wird sehr gross und ist normalisiert. Die Dimensionstabellen müssen nicht zwingend normalisiert sein.

Beim erstelllen der Datenbank muss die feinste Granularität bereits feststehen da die Faktentabelle auf die kleinste Grannularität aggregiert wird.

Snowflake Schema

Dieses Schema ist ähnlich aufgebaut wie das Star Schema, allerdings wurden die Dimensionstabellen normalisiert. Ist etwas langsam allerdings wird die Datenbank dafür kleiner. Immer die "feinste" Tabelle wird mit der Faktentabelle verbunden ansonsten ist eine Drill-Down nicht möglich.

Vorgehen

  1. Geschäftsprozesse auswählen
  2. Granularität festlegen
  3. Dimensionen entwerfen
  4. Kennzahlen bestimmen

Verteilte Datenbanken

Eine verteilte Datenbank verhält sich für den User gleich wie eine lokale Datenbank. Das System tritt dabei als einzelnes System auf.

Vorteile

  • bessere Skalierbarkeit
  • globale Verfügbarkeit
  • hohe Datensicherheit
  • allenfalls niedrigere Hardwarekosten

*Nachteile*

  • höhere Komplexität

12 Date Regeln

  1. Der User sieht nur ein System
  2. Jeder Rechner hat die Kontolle über seine Daten
  3. Die Verarbeitung wird nicht zentral gesteuert (Flaschenhals)
  4. Es spielt keine Rolle wenn ein Server ausfällt
  5. Der User sieht nicht wo die Daten liegen
  6. Daten werden an mehreren Orten gespeichert
  7. Die Daten werden automatisch repliziert
  8. Die Daten einer Query können von mehrern System aus kommen
  9. ACID wird auch über mehrere Server eingehalten
  10. Beliebige Hardware kann benutzt werden
  11. Ein beliebiges OS kann eingesetzt werden
  12. Das Netzwerk pfuscht nichte rein
  13. Es können unterschiedliche SQL System gleicher Version benutzt werden

4 Ebenen Architektur

externes Schema
Views für Anwendungen
globales Konzeptuelles Schema
Beschreibt die Datenbank im Allgemeinen. Also wie die Datenbank für den User aussieht.
Allokationsschema
Definiert welche Daten wo/auf welchem Server gespeichert werden.
Partitionierung
Definiert wie die Daten aufgeteilt werden können.
Allokation
wo die Daten physikalisch abgelegt werden.
Replikation
das mehrfache Speichern der Daten auf verschiedenen Knoten.

Fragmentierungen

Horizontale Fragmentierung
Speichert Zeilen welche etwa einem Deutschen Benutzer gehören näher an Deutschland. Dies erhöt die Perfomance.
Vertikale Fragmentierung
Dabei werden etwa Spalten welche sensible Informationen enthalten in speziell gesicherten Datacenter gespeichert. Dadurch können nicht sensible und sensible Daten voneinander getrennt werden.
Gemischte Fragmentierung
Dabei werden die Daten zuerst horizontal fragmentiert um die Leistung zu optimieren und anschliessend vertikal um die Sicherheit zu gewährleisten.

NoSQL

Werden benötigt weil die Grenzen zwischen den Daten, Dateien nicht immer klar getrennt sind. Zudem braucht es für spezifische Anwendung je nach dem optimiertere Datenbanksysteme. Etwa Big Data.

CAP Theorem

  • C onsistency
  • A vailability
  • P artition tolerance

Eine Datenbank kann maximal 2 der Eigenschaften unterstützen.

BASE

  • B asically
  • A vailable
  • S oft State
  • E ventual Consistency

Bedeutet das sich die DB dann zu einem gewissen Zeitpunkt wieder synchronisiert hat aber halt nicht gerade sofort.

Glossary

<>
Bascically Available, Soft State, Eventual Consistency
<>
Consistency, Availablity, Partition tolerance
<>
Data Control Language grant, revoke, commit
<>
Data Definition Language create table, create view, etc
<>
Data Manipulation Language select, insert, update
<>
Decision Support System
<>
Extraction Transformation and Loading
<>
Not only SQL
<>
Online Analytical Processing

Glossary

Betriebssystem

<>
Central Processing Unit
<>
Direct Memory Access Controller
<>
Graphics Processing Unit

Software Engineering

Netzwerktechnologie

<>
Border Gateway Protocol
<>
Hypertext Transfer Protocol
<>
Internet Control Message Protocol
<>
Internet Protocol
<>
Internet Protocol Security
<>
Local Area Netzwork
<>
Simple Mail Transfer Protocol
<>
Transmission Control Protocol
<>
User Datagram Protocol

Webtechnologie

Datenbanken

ITIL

IT-Verfügbarkeit

Verfügbarkeit von Systemenen bei einem kritischen Unterbruch.

Mehrwert

Die IT-Investition muss begründet werden und einen ROI bieten. IT ist heute nicht mehr nur noch ein Support Prozess.

Typische Probleme

  • Ungenau Anforderungen
  • fehlerhafte und zu komplexe Systemimplementierungen
  • Unterschätzung der notwendigen Ressourcen
  • Schlechtes Projektmanagement

Kosten

Typische Probleme

  • Kostenstruktur ist nicht abbildbar
  • Know-How fehlt
  • Projektmanagement ist schwach
  • IT-Investitionen sind weder zentralisiert noch koordiniert

Komplexität meistern

Ausrichtung von IT und Business

Typische Probleme

Compliance

Einhaltung von Gesetzgebungen, vertragliche Vereinbarungen, interne Richtlinien/ Kontrollsystemen

Typische Probleme

Sicherheit

Glossary

<>
IT Infrastructure Library, ist eine Sammlung von Prozessen, Funktionen und Rollen welche normalerweise in mittleren und grösseren Organisationen zu finden sind.
<>
Return on Investment

Marketing

4P

Product: Spezifikation, Design
Price: Kalkulation
Promotion: Werbung
Place: Platz/Ort

7P

Process: Prozesse optimieren
People: Mitarbeiter
Physical Evidence: die physikalische Komponente

Netzwerktechnologie

Kabel Klassen

Klasse Geschwindigkeit
Cat.5 100Mbit/s
Cat.5e 1Gbit/s
Cat.6 10Gbit/s
Cat.7 10Gbit/s

Bänder

Basis Band

Der Sender kann die gesamte Frequenz verwenden. Wird bei LAN oder Telefonie verwendet.

  • hohe Geschwindigkeit
  • kein Multiplexing

Breitband

Ermöglicht die Unterteilung in mehrere Kanäle. Jeder Kanal hat einen eigenen Frequenzbereich.

  • Heimgebrauch -> DSL (Cablecom)
  • WLAN

Topologien

ISO/OSI Layer

Layer Name Funktion
1 Physical Physikalische Definition
2 Data Link MAC Addresse
3 Network IP, ICMP (ping), IPsec
4 Transport TCP, UDP
5 Session Authentifizierung
6 Presentation Verschlüsselung, Syntax
7 Application SNMP, HTTP, SMTP

Cisco Befehle

Config anzeigen

show run

Config speichern

Config speichern
write

IP Addressen anzeigen

sh ip interface brief

Subinterface auf Router einrichten

enable conf t
int g0/0.10
encapsulation dot1Q
ip address 172.16.0.1 255.255.0.0

Interface auf einem Router live schalten

enable int g0/0 no shutdown

VLAN

VLANs sind eine logische Unterteilung des Netzes. Jedes VLAN ist eine Broadcastdomäne. VLANs haben normalerweise jeweils einen eigenen Adressbereich. Clients in einem VLAN sind sich dem meist nicht bewusst.

Vorteile:

  • Sicherheit
  • Kostenreduzierung
  • Bessere Leistung
  • kleinere Broadcast Domain

2 Hauptarten:

  • Port Basiert Werden nicht getagged ausser auf dem Trunking Port.
  • Address basiert Wird noch getagged damit es zu geordnet werden kann.

Switch

Wichtige Punkte beim Kauf eines Switchs:

  • Grösse der MAC Tabelle, basierend auf Anzahl Clients
  • MppS (Maximum Packages per Second) -> Durchsatz
  • kann er VLAN
  • Wenn möglicher Layer 3 (Router)

Broadcast

VLANs bieten die Lösung gegen übermässigen Broadcast Traffic. Broadcast entsteht durch Geräte welche übermässig Anfragen ins Netz schicken (Drucker, PC, Access Points -> viele Clients)

Trunk

Werden genutzt damit mehrere VLANs über einen Port geleitet werden können. Sprich damit Geräte verschiedener Standorte aber im gleichen VLAN miteinander kommunizieren können.

Broadcast Domains

Jedes VLAN ist eine eigene Broadcast Domain. Für DHCP etwas müssen deshalb IP Helper eingesetzt werden.

Typen

  • Daten VLAN
  • Default VLAN
  • Native VLAN (VLAN1)
  • Management VLAN (VLAN1)
  • Voice VLAN

Tagging

Dabei werdnen die Frames entsprechend ihrem VLAN markiert, damit sie über Trunks hinaus im richtigen VLAN angelangen. Beliebtestes Protokoll -> IEEE 802.1Q, es gibt jedoch noch andere. Die Protokolle defnieren die Struktur der Tags.

Wenn die Frames über einen nontrunk-Port hinausgehen werden die Tags vorher wieder entfernt.

Tagging & Router

Router können per default kein WLAN. Es wird .1Q benötigt. Mit aktiviertem .1Q merkt sich der Router das Tag des Frames und hängt es dann an die Antwort.

Subinterface

Werden benötigt um mehrere VLANs über den gleichen Port an einem Router zu führen.

IPv4

Klassen

Klasse Range Netmask
A 0-127 255.0.0.0
B 128-191 255.255.0.0
C 192-223 255.255.255.0
D (multicast) 224 239.255.255.255
E (resierviert) 240 255.255.255.255

IP Range berechnen (CIDR)

18.x.x.x mit 19 SN Um 19 darzustellen zu können benötigen wir folgenden Bits.

128 64 32 16 8 4 2 1
0 0 0 1 1 1 1 1

Was dann zu folgender Subnetzmaske führt 255.248.0.0 für die Ranges zu berechnen müssen wir noch den Wert des letzten Bits wissen. 248 -> 11111000 was dann 8 wäre 8-1=7 18.0.0.1 > 18.7.255.254 18.8.0.1 > 18.15.255.254

Private Ranges

10.X.X.X
172.16.X.X-172.31.X.X
192.168.X.X

IP Pakete

name beschreibung
Ethernet-Frame Encapsulation (.1Q)
  MAC Adresse
IP Header Source und Destination IP Adressen
TCP Header Source und Destination Port
Daten  

IP Header

Name Unterelement Beschreibung
Version   Version des Internet Protocols
Header Length   Die Grösse des IP Headers
Type of Service Field   Wurde verwendet um Pakete zu priorisieren
Total Length   Gesamte Grösse (MTU)
Identification Number   Eindeutige Nummer zum identifizieren der Verbindung
Flags   Parameter
  More Die Daten wurden in mehrere Pakete aufgeteilt
  Don't Fragment Fragmentieren der Daten nicht erlaubt
  Reserverd Zur Zeit nicht definiert.
Fragment Offset   Anzahl der Pakete und wieviele noch kommen
Time to Live (TTL)   Wie lange das Paket unterwegs sein darf (max Anzahl Hops)
Protocol   Das verwendete Protokol (z.Bsp TCP)
IP Header Checksum   Prüfsumme für die Integritätsüberprüfung
Source   IP Adresse der Quelle
Destination   IP Adresse des Zielortes
Options   Optionen welche zusätzlich mitgeschickt werden können
Padding   "Polsterung" um dem Header die korrekte Grösse zu geben

TCP Header

Name Unterelement Beschreibung
Source Port   Port der Quelle
Destination Port   Port des Zielortes
Sequence Number   Sequenznummer
Acknowledge Number   Bestätigungsnummer
Header Length   Länge des TCP Headers
Reserved   Reservierter Bereich
Flags   Parameter
  Urgent Dringend
  Acknowledge Bestätigung
  Push Stossen
  Reset Zurücksetzen/Abbrechen
  Sync Synchronisieren
  Fin Ende
Window Size   Fenstergrösse
Checksum   Prüfsumme für die Integritätsüberprüfung
Urgent Pointer   Dringend Zeiger
Options   Optionen welche zusätzlich mitgeschickt werden können
Padding   "Polsterung" um dem Header die korrekte Grösse zu geben
Data   Die eigentlich Daten die übertragen werden

Ports

21: FTP
22: SSH
23: Telnet
25: SMTP
80: HTTP
110: POP3
443: HTTPS
465: SMTP
993: IMAP

Aufbau von TCP

  1. PC-1->PC2: Sync Bit
  2. PC-2->PC-1: Sync Bit + Acknowledge Bit
  3. PC-1->PC-2: Acknowlegde

  4. PC-1->PC2: Fin Bit
  5. PC-2->PC-1: Fin Bit + Acknowledge Bit
  6. PC-1->PC-2: Acknowlegde

Acknowledge = A, Sequencenumber = S Jedes TCP Paket wird nach der Übertragung dem Sender bestätigt. Dies wird dabei über die Acknowlegde und Sequencenumber gemacht. A:1 S:1 + 500Byte -> A:1 S:501 -> A:501 S:1 A:1 S:501 + 500Byte -> A:1 S:1001 -> A:1001 S:1 A:1 S:1001 + 500Byte -> A:1 S:1501 -> A:1501 S:1

Ablauf einer TCP Kommunikation

Ablauf einer TCP Kommunikation

DHCP

VLAN

DHCP funktioniert nicht über VLANs hinaus. Dafür wird ein DHCP Helper benötigt. Basierend auf dem Netz des IP-Helpers vergibt der DHCP dem Client dann eine entsprechende IP Addresse.

ICMP

Steht für Internet Control Message Protocol dazu gehört unter anderem PING.

Sicherheit

Sicherheit ist das Mass an Risiko das man bereit ist in Kauf nehmen zu wollen oder muss.

Risiko evaluieren

Die Risiken werden bewertet nach Häufigkeit und Tragweite. Umso höher die Bewertung ist umso eher müssen Massnahmen dagegen ergriffen werden

Massnahmen

Preloss

Massnahmen die vor einem Vorfall ergriffen werden.

Postloss

Massnahmen die nach einem Vorfall gemacht ergriffen werden. Analysieren des Vorfalls und was man besser machen könnte. Logs anschauen was auf den Systemen verändert wurden.

VPN

IPSEC

Setzt einen PSK oder ein Zertifikat voraus um den User zu identifizieren. Weitere Massnahmen die noch den Zugang absichern:

  • PW
  • OTP

Bedrohungen im Internet

  • fremde Systeme nutzen für weitere Manöver
  • verwischen von Spuren
  • Manipulation von Daten
  • DOS

Risiken im Internet

  • Verzögerte Auftragsabwicklung
  • Mitteilungen mit falscher Identität, Vertrauensverlust
  • Verlust vertraulicher Informationen
  • Verlust von Informationen an die Konkurrenz
  • Handlungsausfall durch IT-Ausfall
  • Falsche Entscheidungen aufgrund manipulierter Daten

Drei Säulen der Sicherheit

Integrität

Die Daten sind in dem Zustand in dem sie sein müssen Sprich sie wurden nicht von einer dritten Person manipuliert.

Verfügbarkeit

Die Zeit während der ein System verfügbar ist.

Vertraulichkeit

Niemand der nicht Zugriff haben darf (autorisiert ist), hat Zugriff auf die Daten.

Sicherheitspolitik

Sicherheitsstrategie

  1. Ermittlung der Schutzbedürftigkeit

    • IT-Systeme
    • IT-Anwendungen
    • Dienstleistungen
    • Informationen
    • Bewertung der Schutzziele
  2. Bedrohungsanalyse

    • Bedrohte Objekte
    • Grundbedrohung
    • Konkrete Bedrohung
    • Vorhandene Schutzmaßnahmen
  3. Risikoanalyse

    • Bewertung bedrohter Objekte
    • Häufigkeit eines Schadens
    • Bewertung des möglichen Schadens
    • Bewertung der Risiken
  4. Erstellung eines Sicherheitskonzepts

    • Infrastuktur
    • Organisation
    • Personal
    • Hard/Software
    • Kommunikation
    • Notfallversorgung
    • Bewertung Kosten/Nutzen
    • Restrisikoanalyse
  5. Umsetzung des Sicherheitskonzepts/Implementierung

    • Priorisierung der Maßnahmen
    • Abgleich vorhander Maßnahmen
    • Definition der Verantwortlichkeiten
    • Realisierung der Maßnahmen

Firewall

Eine Firewall ist eine Sammlung von Komponenten und Systemenen über welche jeglicher Traffic im Netzwerk kontrolliert.

Zugangskontrolle auf Netzwerkebene

Welche Rechner dürfen mit der Firewall kommunizieren.

Zugangskontrolle auf Benutzerebene

Zugangskontrolle über Authentifikation des Benutzers.

Verwaltung von Zugriffsrechten der Dienste

Welche Protokolle und Dienste sind erlaubt Datenstrom auf Viren überprüfen

Anforderungen

Die interne Netzwerkinfrastrukur muss gegen aussen verborgen werden.

Arten

  1. Packet-Filter

    Wer darf wohin kommunizieren.

  2. Circuit-Level Gateway

    Proxy welche den Traffic untersucht.

  3. Stateful Inspection

    Jede Schicht des ISO/OSI Modells untersucht. Dabei werden auch die kompletten Daten untersucht(etwa heruntergeladene Dateien).

NAT

  1. Hide

    Eine offizielle Adresse für mehrere Clients

  2. Static

    Jede externe IP Adresse wird direkt einem internen System zugewiesen.

DMZ

Die Server und Clients welche von aussen erreichbar sind werden in einem separaten Netz gehalten. Dies soll verhindern das ein Angriffer Zugriff auf die internen Systeme erhält.

Routing

Es gibt zwei Grundtypen. Statisches (manuel) und dynamisches. Für das Routing kommunizieren die Router in der Regel über Multicast. Bei BGP kann es sein das über Unicast kommuniziert wird da die Partner normalerweise bekannt sind und man so etwas den Traffic reduzieren kann.

Statisches Routing

Beim statischen Routing muss jede Route auf dem Router manuell konfiguriert werden.

enable
conf t
int serial0/0
clock rate 115200
ip address 192.168.0.10 255.255.255.252
exit
int eth0/0
ip address 10.4.0.1 255.255.0.0
exit
ip route 10.4.0.0 255.255.0.0 192.168.0.9
ip route ...

Der Befehl ip route ist wie folgt aufgebaut:

ip route INTERNAL_NETWORK INTERNAL_SUBNETMASK GATEWAY

Dynamisches Routing

Bei dynamischen Routing gibt es folgende drei Hauptprotokolle:

RIPv2

"Redet viel und kommt nicht ans Ziel." Übermittelt jedes mal die ganze Routing Tabelle. Maximal sind 16 Hops (15 ohne sich selbst) möglich.

en
conf t
int eth0/0
ip address 10.4.0.1 255.255.0.0
exit
conf t
router rip
version 2
network 10.4.0.0

der Netzwerkbefehl ist wie folgt aufgebaut:

network INTERNAL_NETWORK

OSPF (Open Shortest Path First)

Berechnet den kürzesten Weg zum Ziel. Berechnet den Weg aufgrund von Vektoren. Hops kann man so viele machen wie man möchte. Begrenzung ist ist der Speicher.

BGP

Wird im WAN(Internet) eingesetzt. Die Router welche BGP verwenden haben sind oft sehr grosser Last ausgesetzt. Die Routing Tabellen sind nämlich sehr gross. Mit IPv6 wurde das Problem noch schlimmer.

WLAN

Ein Access Point funktioniert als Bridge zwischen dem Wireless Netzwerk und dem Kabelnetzwerk. Man kann dies als eine Art Adapter zwischen zwei Netzwerktechnologien verwenden.

Channels

Um einen optimalen Empfang garantieren zu können ist es wichtig das man den richtigen Channel für das jeweilige Frequenzband wählt. Dies wird gemacht um ein Übersprechen der Bänder zu vermeiden.

2.4GHz

Im 2.4GHz Bereich sollten wenn möglich nur folgende Channels benutzt werden: 1, 6 und 11. Falls bereits ein Netzwerk vorhanden ist immer dieses verwenden welches am weitesten vom bestehenden Netz entfernt ist. Zum Beispiel: 1 vorhanden dann 11 verwenden.

Wurde von einem bereits vorhandenen Netzwerk bereits andere Channels als die oben genannten drei verwendet. Nimmt man am besten folgende Formel zur Hand:

VorhandenerChannel + 5 = zuverwendenderChannel

9 und 10 sollten dabei jedoch wenn möglich nicht verwendet werden da Mikrowellen in diesem Range funktionieren.

Den WLAN Access Point den wir im Unterricht verwedet hatten war ein Zyxel G-1000v2.

5GHz

Da wir im Unterricht nicht dazu gekommmen sind den 5GHz Bereich anzuschauen haben wir das selber noch recherchiert. Nach unseren Recherchen sind die Channels die man im 5GHz am besten nutzen sollte die folgenden: 36, 40, 44, 48, 149, 153, 157, 161

Die Formel für den 5GHz Bereich scheint folgende zu sein:

VorhandenerChannel + 4 = zuverwendenderChannel

Allerdings gilt es hier zu beachten das es zwei verschiedene verwendbare Bereiche gibt. Den ersten von 36-48 und den zweiten von 149-161.

Authentifizierung

Um das Netzwerk vor unbefugtem Zugriff zu schützen empfiehlt es sich die Authentifizierung zu aktivieren. Dabei sollten heute nur noch die folgenden zwei Arten ausgewählt werden. Gerade von WEP wird dringend abgeraten da dies mittlerweile innerhalb von Minuten gehackt werden kann.

WPA2-PSK

WPA2-PSK steht für "Wi-Fi Protected Access Version 2 Pre Shared Key" Damit erfragt der Access Point ein Passwort um zu verbinden. Die Authentifizierung erfolgt dabei auf dem Access Point direkt.

WPA2

Verlangt wie auch WPA2-PSK ein Passwort zum verbinden allerdings erfolgt die Authentifizierung dabei auf einem Server welcher. Der Access Point authentifieziert sich dabei auf dem Server auch mit einem Key. Dies ermöglicht unter anderem für verschiedene User jeweils ein eigenes Passwort zu haben.

Prozessmanagement

Definition Prozess

  • geregelter/wiederholender Ablauf
  • konsumiert Ressourcen
  • ein guter Prozess, produziert mehr Output als er Ressourcen verbraucht.
  • sollte begrenzt sein
  • klare Grenzen
  • Prozesse sind Komplex

Ein Prozess ist eine geregelte Abfolge von Aktivitäten, welche einerseits Ressourcen konsumiert und andererseits eine Leistung erbringt. Prozesse kommunizieren untereinander und innerhalb der Prozess-Schale

UML

OOA

  • System abgrenzen
  • Prozesse analysieren
  • LFD

*Ablauf*

  1. System Abgrenzen
    • LFD
    • Kontextdiagramm
  2. Use-Cases inventarisieren
    • Use-Case Diagramm
  3. Abschluss der Analyse
    • Aktivitätsdiagramm
    • Kommunikationsdiagramm
    • Sequenzdiagramm
    • Zustandsdiagramm

*OOD*

  • Prozesse gemäss den Erkentnissen aus OOA anpassen.
  • Klassendiagramm

*OOP*

  • Programmieren
  • Prozess implementieren

Leistungsflussdiagramm

  • Zeigt die konsumierten/erzeugten Leistungen auf
  • Zeigt System Grenzen auf
  • Definiert Schnittstellen

Komplexität

Etwas das komplex ist, erscheint auf den ersten Blick kompliziert hat jedoch bei genauerer Betrachtung System. Komplex ist ein System welches man selbst dann in seiner Gänze erklären kann wenn man alle Einzelteile kennt.

Wozu

  • Komplexe Prozess beinhalten mehr mögliche Gefahren als einfache.
  • Prozessmanagement versucht komplexe Prozesse zu vereinfachen.

Bewertung

  • Prozesse x Interaktionen
  • Wichtigkeit des Elements/Interaktion
  • Wissen/Erfahrung

Die Bewertung soll aufzeigen welcher Prozess komplexer ist und hilft Verbesserungsmöglichkeiten zu ermitteln.

  1. Informationen beschaffen -> im LFD die Prozesse und Interaktionen herauslesen und separat auflisten.
  2. Komplexität der Prozesse ermitteln -> Wissen(K) x Importance(I)=Prozessprodukt
  3. Komplexität der Interaktionen ermitteln -> Wissen(K) x Importance(I)=Interaktionsprodukt
  4. Komplexitäten multiplizieren -> Prozessprodukt x Interaktionsprodukt=Komplexität

*Prozesskomplexität*

Prozess Wichtigkeit(I) Wissen(K) Produkt(IxK)
Beschreibung 1 0.7 0.7
Beschreibung 0.2 0.7 0.14
  0-1, 0=unwichtig Total 0.21

Interaktionskomplexität

Sender Empfänger Wichtigkeit(I) Wissen(K) Produkt(IxK)
Sender Empfänger 0.8 0.6 0.48
Sender Empfänger 0.3 0.8 0.24
    0-1, 0=unwichtig Total 0.72

Business Process Modell Notation

  • Modellierung für Geschäftsprozesse
  • Regelt Zuständigkeiten
  • Hat einen Start und ein Ende

Use Case Diagramm

  • Wird immer als erstes erstellt
  • Inventarisierung von Anwendungsfällung
  • Möglichste einfach und vollständig
  • dient zum Sicherstellen das kein Anwendungsfall im LFD vergessen wurde

Kontextdiagramm

Zeigt die Systemumgebung auf. Entspricht einem Leistungsflussdiagramm mit Umsystemen. Zeigt zudem auf welche Schnittstellen es zum System gibt. Grenzt dabei das System klarer ab. Besser nicht zu komplex machen sonst wird es unübersichtlich.

Element

  • Umwelt und Systemgrenzen
  • Prozess
  • Leistung
  • verbindungen als Fluss

Beispiel

Aktivitäts Diagramm

  • Visualisiert den Ablauf
  • darstellen paralleler Prozesse
  • Zeigt Kontroll und Datenflüsse einer Aktion
  • Benötigt immer einen Start- und einen Endpunkt

Paketdiagramm

  • Zeigt die Komponenten in einem System
  • Gibt einen Gesamtüberblick
  • Wichtig Komponenten können durch gleichwertige Komponenten ersetzt werden.

Verteilungsdiagramm

  • Zeigt auf welcher Hardware, welche Software läuft.
  • Kommunikation zwischen Geräten
  • Gibt auch einen Gesamtüberblick über das System

Timingdiagramm

  • Zeigt die Zustände in Abhängigkeit zur Zeit an.
  • Zeigt auch auf wie Systeme aufeinander reagieren.

Wissensmanagement

  • Wissen bedeut zu wissen wie etwas gemacht wird.
  • Reduziert das Risiko in Prozessen
  • Kann Zeit und Geld sparen
  • Wettbewerbsvorteil
Wissen Individuell Kollektiv
Stillschweigende Wissen Werte Verhaltensregeln
  Einstellung  
  Erfahrugen  
Explizites Wissen Dokumentierbares Fachwissen Richtlinien
  Statistisches Wissen Prozessdefinitionen
    Verfahren

Wissensoperationen

KPI und Stakeholder

  • Kennzahl um Fortschritte im Unternehmen zu messen: Gewinn, Umsatz, Besucherzahlen, produktive Zeit, Arbeitsstunden, offene/abgeschlossene Projekte, Fehlerquote
  • KPI sind für Steakholder interessant da man an ihnen einfach eine Entwicklung ablesen kann.
  • Die Stakeholder haben unter Umständen grossen Einfluss auf ein Projekt.
  • Mittels der Stakeholder Analyse lässt sich feststellen wir besonders viel Einfluss auf das Projekt hat und wer unter strategischen Wert als Spielemacher haben könnte.

Risikoanalyse

  • Prozessänderungen bergen Risiken
  • Risikoanalysen sind abhängig vom Wissen welches man hat. Fehlt das Wissen können keine Analysen darüber erstellt werden.
  • Dienen dazu Feuerwehraktionen zu vermeiden in dem man bereits vorhergehend mögliche Massnahmen definiert.
  • Hilft bei der Entscheidungsfindung
  • Nachvollziehbarkeit und Transparenz
  • Kann alternative Chancen aufzeigen

Ablauf

  1. Informationen beschaffen -> LFD
  2. Prozesse Auflisten
  3. Denn Sollzustand jedes Prozesses erfassen
  4. Mögliche Abweichungen erfassen
  5. Eintreffenswahrscheinlichkeit und Auswirkung bewerten. Die Zahlen ist in Prozent (2/5 wären dann 40%) sehen.
  6. Risikoprioritätszahl berechnen ETW x EFK=RPZ
  7. Interpretieren

Durchlaufzeit

Synchronisieren von Prozessen hilft dabei Wartezeiten zu reduzieren. Parallelisieren kann den Output erhöhen. Am meisten Potential haben in der Regel die Organisation der Auftragsabwicklung sowie bei der Arbeitsorganisation.

Bewertung Variante 1

  1. FLD erstellen
  2. Use Case Diagramm erstellen
  3. Use Cases zusammen mit den Includes auflisten.
  4. Bearbungszeit aufnehmen (B)
  5. Wartezeit aufnehmen (W)
  6. Repetitionsfehler aufnehmen (R)
  7. Ergebnis berechnen (B+W)*(1+R)=DLZ

Bewertung Variante 2

Eine vereinfachte Variante zur Berechnung der Durchlaufzeit. Der Umlaufbestand ist dabei die zu verarbeitende Menge. Umlaufbestand/Durchsatz=Durchlaufzeit.

Prozesskosten

Prozesskosten dürfen auch nur dafür verwendet werden um Prozess miteinander zu vergleichen und nicht um die Kosten effektiv zu berrechnen.

Bewertung

  1. LFD erstellen
  2. Use Case Diagramm erstellen
  3. Use Cases zusammen mit den Includes auflisten
  4. Bearbeitungszeit aufnehmen (B)
  5. Kostensatz bestimmen (KS=Kosten/Zeit)
  6. Repetitionsfehler bestimmen (R)
  7. Kosten errechnen -> KS x B x (1+R)

BPR

In der Regel verbessern sich Unternehmen mit KVPs. Allerdings ist manchmal eine radikale Änderung nötig. Etwa weil man sich vorher nicht genügend verbessert hat oder weil man vom Markt dazu gedrängt wird.

  • Sollte am Kernprozess orientiert sein.
  • Sollte Kunden orientiert sein. Der Kunde soll merken das sich etwas verbessert hat.
  • Ist tiefgreifend sonst ist es KVP.
  • Ist ganzheitlich, soll alle Prozesse und Mitarbeiter beinhalten.
  • Sollte IT basiert sein.
  • Ist auf den Soll Zustand ausgerichtet. Nicht an alten Abläufen festhalten. Structure follows Process.
  • Die Verbesserungen müssen um Grössenordnungen besser sein als vorher.

Zusammenhänge

Die Bedürfnisse des Kunden müssen gegenüber den internen Kosten abgewogen werden.

Auswirkungen

Erhöhen

  • Mitarbeiterzufriedenheit
  • Qualität
  • Kenntnis der Kundenanforderung

*Senken*

  • Schnittstellen
  • Reklamationen
  • Durchlaufzeiten
  • Kosten insgesamt

Vorgehen

  1. Wettbewerbskritische Geschäftsprozesse definieren: Kundenorientiert, Benchmarking, Mitarbeiter mit einbeziehen
  2. Prozessanalyse durchführen: Externe Berater, auf Schwachstellen konzentrieren, Bestandesaufnahme, Prozesskenngrössen bestimmen
  3. Soll-Struktur erstellen: Flexible und zugeschnittene Prozesse, Abläufe vereinfachen.
  4. Umsetzen: Interne Arbeit, Change Management
  5. Zielüberprüfung

*Zu Beachten*

  • systematisches Vorgehen
  • Unterstützung der Geschäftsleitung
  • Klare Zielvorgaben
  • Change Management
  • motivierte Mitarbeiter

Erfolg

Im besten Fall schaft man ein BPR zwei Mal. Mehr ist meist Aufgrund von Ressourcen Problemen nicht mehr möglich. Häufigster Grund fürs Scheitern ist das mittlere Kader da diese am meisten zu verlieren haben.

Multiple Nuclues

Änderungen können von vielen Seiten her kommen. Idealerweise sollte dies auch so umgesetzt werden und nicht nur von oben nach unten sonst fühlen sich die Leute übergangen.

Konflikte

Bei Konflikten am besten die Personen finden die andere Prozesse etabliert haben um mit ihnen die neuen Prozesse zu erarbeiten. Diese Leute sind in der Regel in ihrer Gruppe die Leader und können neue Ideen einbringen und auch wieder an ihre Kollegen vermarkten.

IT Hilfsmittel für BPR

Machine Learning

  • Unsupervised Learning
  • Supervised Learning

Wissensverarbeitung

  • Expertensystem
  • Genetische Algorithmen

Unsupervised Learning

Man gibt einem System einen Haufen Daten welche es dann selber versucht zu kategorisieren. Etwa eine Gruppe von Menschen nach Gewicht und Grösse. Bei diesem Beispiel werden dann etwa ca. 2 Gruppen entstehen. Nämlich Männer und Frauen.

Supervised Learning

Man gibt einem System einen Haufen Daten die bereits beschriftet sind. Dadurch kann das System sich dann Merkmale heraussuchen die, die Gruppen identifizieren. Durch Testläufe und Korrekturen wird dem System gezeigt wo es falsch liegt damit es seine Parameter verbessern kann.

Experten System

Etwa ein FAQ oder ein internes Wiki. Einfach ein System wo ein Experte sein Wissen ablegt und ein Laie das Wissen abrufen kann.

Genetische Algorithmen

Es werden tausende an verschiedenen Variationen ausprobiert. Nach einer definierten Anzahl wird die beste Variante genomen und als Basis für eine neue Generation genommen. Entspricht also in etwa der natürlichen Selektion.

Repetitionsfragen

Nenne vier Punkte die einen Prozess ausmachen
Wertschöpfung, Output grösser als Input, Komplex, wiederholender Ablauf, klare Grenzen
Was zeigt ein Leistungsflussdiagramm
Systemgrenzen, Wie und wo Leistungen entstehen.
Warum soll die Komplexität ermittelt werden?
Um Prozesse untereinander zu vergleichen. Etwa um festzustellen ob bestehende Prozesse komplex sind. Oder um etwa verschiedene Varianten gegenüber einander zu vergleichen.
Ein sehr wichtiger (I=0.9) Prozess der viel Wissen erfordert (K=0.9) ist (sehr, mittelmässig, wenig) Komplex
sehr Komplex
Ein Diagramm welches einen Start/Endpunkt, Swimmlanes hat
BPMR oder Aktivitätendiagramm
Ein Use Case Diagramm wird erstellt warum?
Um Anwendungsfälle zu inventarisieren und um zu sehen ob man allenfalls noch etwas im LFD vergessen hat.
Roter Faden
LFD/BPMN
KPI
Gewinn, Umsatz, Besucherzahl, Prod. Zeit, Arb. Stunden, offene/abg. Projekte, Fehlerquote
BPR
Kernkompetenzen erfassen, Prozesse analysieren, Varianten überlegen, Umsetzung, Zielüberprüfung

Glossary

<>
Business Process Modell Notation
<>
Business Process Re-Engineering
<>
Aufwändig aber vorhersehbar
<>
nicht vorhersehbar
<>
Key Performance Index
<>
Objektorientiertes Analyse
<>
Objektorientiertes Design
<>
Objektorientiertes Programmierung
<>
Unified Modelling Language

Rechtsgrundlagen

Obligationen

Sind generell alle Rechtsverhältnisse zwischen zwei oder mehreren Personen welche eine Leistung anbieten oder von jemandem gefordert werden können.

Rechtsstaat

Legalitätsprinzip -> Gesetze gelten für alle.

Schutz der Grundrechte

  • Recht auf Leben
  • Meinungsfreiheit

Gewaltentrennung

  • Judikative
  • Exekutive
  • Legislative

Die Gewaltentrennung passiert auf Bundes, Kantons sowie Gemeindeebene.

Gesetzesarten

  1. Verfassung (Grobe Definierung)
  2. Gesetz (etwas detaillierter)
  3. Verordnung (genaue Angaben wie etwas zu sein hat.)

Aufbau der Gesetze

ZGB

  1. Personenrecht
  2. Familienrecht
  3. Erbrecht
  4. Sachrecht
  5. Obligationenrecht

OR

  1. Abteilung Allgemeine Bestimmungen
  2. Abteilung einzelne Vertragsverhältnise
  3. Handelsgesellschaften & Genossenschaften
  4. Handelsregister, Firmen, Buchführung
  5. Wertpapiere

Öffentliches Recht

Ist meistens der Fall wenn der Staat als Kontrollinstanz zum Zug kommt.

Privat Recht

Ist meistens dann der Fall wenn es sich um eine Angelegenheit zwischen zwei Parteien (Personen) handelt.

Rechtsanwendung in 4 Schritten

  1. Sachverhalt analysieren
  2. Relevante Regeln finden
  3. Regeln analysieren
  4. Regeln auf Sachverhalt anwenden

Haftungsarten

Kausalhaftung

Wenn jemand oder etwas einen Schaden verursacht für welches man die Verantwortung trägt. Hauseigentümer, Tierhalter, Eltern, etc.

Verschuldungshaftung

Wenn man durch eigenes Verhalten einer anderen Person Schaden zufügt.

Dispositives Recht

Kann angewendet werden wenn es in einem Vertrag definiert wird. Varianten des Gesetz welche man selber in einen Vertrag aufnehmen kann.

Zwingendes Recht

Kommt immer zum Zug und giltet für alle.

Gültigkeit von Anträgen

Verträge

  • zwei handlungsfähige Parteien (volljährig und urteilsfähig)
  • nicht Sittenwiderig
  • Die Parteien sind sich einig

Kaufverträge

  • Veräusserungsvertrag
  • Spezies Waren -> Einzelstücke
  • Gattungswaren -> Massenprodukte
  • Zwischen zwei Parten
  • Zwei Arten:
    • Bargeldkauf
    • Kreditkauf

Fahrniskauf

Bewegliche Sachen und Gattungskäufe

  1. Pflichten des Verkäufers

    • Kosten der Übergabe
    • Kosten des Transportes
  2. Pflichten des Käufers

    • Zahlung des Preises und Annahme der Stücke

Gründstückskauf

  1. Bedingungen

    • öffentliche Beurkundung
    • erst Inhaber wenn eingetragen
    • Partner muss mit unterschreiben
    • Verkäufer ist für Gefahren verantwortlich
  2. Belastung

    • Grunddienstbarkeit (muss etwas dulden)
    • Grundlasten (muss etwas leisten (Strassen in Ordnung halten))

Annahme Vertrag

  • Fixkauf -> Verkauf mit Lieferdatum
  • Mahnkauf -> Verkauf ohne Lieferdatum

Verletzungen des Käufers

  • nicht Annahme der Ware
  • Zahlungsverzug -> gilt erst nach Mahnung Nun kann direkt 5% Verzugszins verlangt werden.

Verletzungen des Verkäufers

  • Der Verkäufer hält den Liefertermin nicht ein. Falls kein Liefertermin vereinbart wurde muss zuerst noch gemahnt werden. Anschliessend stehen dann folgende Optionen offen. Allerdings muss für Schadensersatz der Schaden bewiesen werden können.
    • Lieferung + Schadensersatz
    • keine Lieferung + Schadenersatz
    • kompletter Rücktritt vom Vertrag

Mangelhafte Lieferung

Der Käufer muss:

  • Ware nach erhalten prüfen
  • Mängel dem Verkäufer mitteilen (am besten schriftlich)
  • Die Ware muss aufbewahrt werden.

Mögliche Lösungen:

  • Rückgabe
  • Rabatt
  • Ersatz
  • Falls beide einverstanden sind Reparatur

Mietvertrag

Besteht wenn eine Sache auf Zeit gegen einen Betrag ausgeliehen wird.

Pachtvertrag

Ähnlich wie ein Mietvertrag aber es können auch Rechte abgegeben werden.

Leasing Vertrag

Im Grunde das Gleiche wie ein Mietvertrag allerdings mit einer Mindestlaufzeit.

Werkvertrag

Verpflichtet ein Unternehmen zur Herstellung eines Werkes. Kaufverträge und Werkverträge können wie folgt unterschieden werden:

Einzelfertigung
Sind Werkverträge, also etwas Software welche spezifisch entwickelt wird, Spezielle Maschine, etc
Mehrfachfertigung
Bedeutet in der Regel das es sich um einen Kaufvertrag handelt.

Besonderheiten eines Werkvertrages sind:

  • Zahlbar bei Lieferung
  • Vergütungen können nicht geändert werden:
    • Wenn zu teuer produziert wurde kann nicht mehr verlangt werden.
    • wenn günstiger produziert wurde zahlt man trotzdem den vollen Preis.

Auftragsvertrag

Jemand wird mit einer Arbeit beauftragt. In der Regel handelt es sich dabei um eine Dienstleistung.

Der Auftrag gilt als beendet wenn:

  • Natur des Geschäftes dies vorsieht
  • Todesfall eines der Vertragspartner
  • Beendigung des Auftrags

Besonderheiten:

  • Der Beauftragte kann nur zu sorgfältigem Arbeiten Verpflichtet werden aber nicht auf Erfolg.
  • Abweichungen vom Auftrag nur mit Einverständnis
  • Auftragsausführender kann gewisse Rechte haben. Etwa um Rechnungen im Namen des Kunden bezahlen zu können.

Sicherheiten

Realsicherheiten

  • Kaution
  • Fahrnispfand
  • Grundpfand
  • Retensionsrecht, wenn noch eine Leistung offen ist kann ein Teil der Ware zurückgehalten werden.
  • Eigentumsvorbehalt

Personalsicherheit

Es haftet das Vermögen einer Person.

  • Bürgschaft
  • Konventionalstrafe
  • Zession

Rechtsformen

Aktiegesellschaff
GmbH
Verein
EU
Kommanditgeselschaften
Genossenschaft
Stiftung
Kollektiv Gesellschaften
Kapitalgeselschaften

Softwareengineering

Entwicklungsmodelle

Im Projektmanagent gibt es verschieden Modelle. Jedes davon hat seine Stärken und Schwächen. Meist versuchen sie das Risiko gering zu halten oder die Flexibilität zu erhöhen. Je weiter ein Projekt vortgeschritten ist um so höher sind die Kosten einer Änderungen.

Wasserfall

Es werden keine Schritte zurück gemacht. Eine Phase folgt auf die andere. Sehr realitätsfremd da sich die Anforderungen ständig ändern. Stark Dokumente getrieben.

  1. Aufnehmen der Anforderungen. Zusammentragen in einem Pflichtenheft. Risikoanalyse.
  2. Modellieren des Systems, Evaluation der Technologie. Risikoanalyse
  3. Eigentliche Entwicklung/Umsetzung sowie die Überprüfung davon.
  4. Integrationstests und Testberichte
  5. Deployment und Abnahmeprotokolle

Sprialmodell

Ein Projekt wird in Teile (Unterprojekte) aufgesplitet und die einzelnen Teile werden separat getestet. Ziel ist es das Risiko zu minimieren. Es besteht aus vielen kleinen Wasserfall-Modellen.

  1. Ziele definieren
  2. Evaluierung, Risikoabschätzung
  3. Entwicklung
  4. Planung der nächsten Phasen

V-Modell

Zu jeder Definition gehört auch ein passender Test. Sehr aufwändig und kostenintensiv. Ermöglicht jedoch grosse Stabilität.

1. Systemanforderungen System 8. Systemtest
2. Bereichsanforderungen Bereich 7. Integrationstests
3. Modellierung Baugruppe 6. Modultest
4. Entwurf Bauteil 5. Detailtest

Prototyping

Es werden Prototypen erstellt um die Funktion simulieren zu können um die Sachen etwas handfester zu machen.

Laborprototyp
schauen ob etwas funktional wäre
Demoprototyp
Vorführmodell -> Klickdummy, sieht gut aus kann aber nichts.
Horizontale Prototypen
Fokus auf eine Ebene. z.Bsp. GUI. etwa Klickdummy
Vertikale Prototypen
Die Funktionen die es gibt funktionieren bereits auf allen Ebenen. Etwa um spezifische Funktionen zu testen.

Scrum

Der Kunde kann immer neue Anforderungen einbringen welche dann nach und nach abgearbeitet werden. Gearbeitet wird in 30 Tagessprints und in Daily Sprints. Idealerweise mit 3 Leuten oder mehr. Beim Daily Sprint werden von den Entwicklern drei Fragen beantwortet:

  • Was habe ich gestern gemacht?
  • Was hat mich dabei behindert?
  • Was werde ich heute machen?

Die Schwierigkeit ist die Sprint Backlogs richtig zu wählen. Enthalten sie zu viele Tasks führt das zu einer sehr grossen Belastung des Teams und wenn sie zu wenig enthalten ist das Team nicht ausgelastet. Die Tasks im Sprint Backlog sind verbindlich und müssen wirklich auch nach 30 Tagen erledigt sein.

Scrum Ablauf

  1. Product Backlog (Sammlung von Anforderungen)
  2. Sprint Backlog (Tasks welche im Sprint umgesetzt werden.)
  3. Sprint
  4. Working Software

Hermes

Ist die Projektmethode des Bundes.

  1. Initialisierung
  2. Konzept
  3. Realisierung
  4. Einführung

Testing

Static

Code-Reviews, Dokumentation es wird nicht die Applikation/Funktion getestet sondern etwa der Code angeschaut oder die Dokumenation kontrolliert.

Black Box

Functional Testing. Es wird hauptsächlich der Output getestet. Wenn ich etwas eingebe erhalte ich das richtige Resultat? Wie es passiert ist nebensächlich.

White Box

Man kennt die genaue Funktion und kontrolliert auch ob sie intern richtig umgesetzt wird. Structural Testing.

Arten

Manuelles Adhoc Testen
Jemand testet drauf los. Keine Dokumentation vorhanden. Ist eine leichtere Variante von Explorativem Testen.
Strukuriertes Manuelles Testen
Es wird anhand von Test Cases manuell getestet. Reproduzierbar.
Strukuriertes automatisiertes Testen
Automatisiert Tests, etwa Unit Tests.
Exploratives Testen
Die User können die Anwendung benutzen und testen wie sie möchten. Ohne jegliche Vorgaben. Wobei es hier mehr um das Verhalten der User geht.

OOP

  • Klassen sind Baupläne für Objekte.
  • Methoden sind die Funktionen die den Objekten zur Verfügung stehen.
  • Klassen können vererbt werden. Dies bedeutet das die abgeleitete Klasse alle Eigenschaften und Methoden der zuvorhergehenden Klasse hat.
OOP Konzepte

OOP Konzepte

Abstraktion

Jedes Objekt ist ein abstraktes Modell eines Akteurs und muss nicht offenlegen, wie seine Fähigkeiten implementiert sind.

Kapselung

Verbergen von Implementierungsdetails, Zugriff über Schnittstellen.

Vererbungen

Abgeleitete Klassen besitzen die gleichen Methoden und Properties wie die Basisklasse.

Klassen

Abstraktes Modell. Oft auch eines physikalischen Objekts. Klassen sind Baupläne für Objekte

Objekte

Sind konkrete Instanzen von Klassen.

Polymorphie

Fähigkeit eines Objekts, abhängig von seiner Verwendung unterschiedliche Datentypen anzunehmen. GibLaut(Miau)/GibLaut(Wuff)

C#

.NET Code wird zu IL kompiliert. Ist immer noch relativ gut lessbar und sehr einfach zu dekompilieren. IL Code wird dann schlussendlich zu Maschinen Code kompiliert.

  • Ohne Framework nicht lauffähig
  • Sprache macht fast keinen Unterschied -> IL Code
  • Ressourcen Verwaltung wird vom Framework übernommen.

Diagramme

  • UML Standartisierte Darstellung

Strukurierdiagramme

  • Klassendiagramm
  • Kompositionsstrukturdiagramm
  • Komponentendiagramm
  • Verteilungsdiagramm
  • Objektdiagramm
  • Paketdiagramm
  • Profildiagramm

Verhaltensdiagramme

  • Aktivitätsdiagramm
  • Anwendungsfalldiagramm
  • Interaktionsübersichtsdiagramm
  • Kommunikationsdiagramm
  • Sequenzdiagramm
  • Zeitverlaufsdiagramm
  • Zustandsdiagramm

Use Case

Sollte immer aktiv gezeichnet werden. Ein Use Case ist eine Aktion welche ein User ausführen kann. Use Cases können meist auch gleich zu Test Cases werden. Ein Use Case Diagramm definiert die System Grenzen. Als erstes sollten immer die Akteuere definiert werden.

Klassen

Statische Sicht, ähnlich wie ein ERM aber nicht normalisiert.

Assozation
Es besteht eine Verbindung.
Aggregation
Klasse A enthält Klasse B
Komposition
Klasse A besteht aus Klasse B (mindestens eine der Klassen ist abhängig von der anderen).

Vorgehen

  1. Klassen identifizieren (Rechnung, User, Fahrzeug)
  2. Eigenschaften identifizieren, TIPP: Attribute schrittweise verfeinern.
  3. Kategorien bilden.

Typen

Abstrakte Klassen
Wird mit "{abstract}" gekennzeichnet. Sind Klassen welche nicht direkt iniziert werden können. Etwa wenn man Mitarbeiter erfassen möchte und die Klasse Mensch nicht im Programm verwendet wird.
Sealed Klassen
Es sind keine Vererbungen mehr möglich. Unterste mögliche Stufe.
Static Klassen
Statische Klassen können nicht instanziert werden. Sie werden oft als Hilfsklassen verwendet. Etwa um etwas zu berechnen.

Sichtbarkeiten

Zeichen Bedeutung
+ Public
# Protected
- Private
~ Package (internal)

Objekt

Ein Objektdiagramm ist eine Momentaufnahme eines Objekts. Es müssen nicht alle Eigenschaften der Klasse abgebildet werden sondern nur die, die für den Moment gerade relevant sind. Kann gut beim Testing verwendet werden.

Aktivitäts

Beschreibt Akivitäten sprich Funktionen. Wichtig immer prüfen ob:

  1. Ende vorhanden
  2. Start vorhanden
  3. Bedingungen vollständig

Zustands

Beschreibt den momentanen Zustand eines Systems. Ähnlich wie Aktivitätsdiagramm aber die Zustände sind die Blasen und die Aktivitäten sind die Pfeile dazwischen. Können oft auch Loops zwischen Start und Exit enthalten.

Sequenz

Sequenzdiagramme werden immer von oben nach unten ausgeführt. Sie dienen dazu um etwas Kommunikationen abzubilden. Innerhalb des Sequenzdiagramms gibt es zwei Arten von Nachrichten:

Synchrone
Die Anwendung macht erst weiter wenn der Task abgeschlossen ist.
Asynchrone
Der Task läuft im Hintergrund weiter und meldet sich wenn er fertig ist.

Vorgehen beim Zeichen

  • relevante Szenarien aus Use-Case
  • Stichworte
  • beteiligte Akteure festlegen
  • beteiligte Klassen als Kommuniktaionsparter
  • Ablauf und Strukurierung festlegen
  • Diagramm entwerfen

Verteilungsdiagramm

Systemumgebung aufzeigen. Zeigt auf wo die Applikation(Artifakt) deployed wird und welche Ressourcen benötigt werden. Betriebsinfrastruktur designen.

Deployment-Spe -> Artefakt -> Knoten \newpage

Use Cases

Beschreibt Use Cases im Detail um zusätzliche Informationen zur Verfügung zu stellen.

Test Cases

Delegates

Delegates erlauben es einem Methoden als Parameter zu übergeben. Dies bedeutet das man im Code dynamisch die Methode ändern kann die ausgeführt werden soll. Dadurch kann man etwa diverse generische Methoden definieren und die Daten dann durch die entsprechende Methode schicken ohne das man dies fix auscodieren müsste. Man spricht bei Delegates von Referenzen auf Methoden.

Events

Dienen dazu Änderungen in Daten oder Inputs an andere Klassen oder Objekte zu übermitteln.

Publisher
Sendest das Ereignis.
Subscriber
Empfängt das Ereignis von einem abonnierten Publisher und können darauf reagieren.

Die Methoden der Subscriber werden nacheinander abgearbeitet.

Interfaces

Definieren wie die Signature einer Klasse zu sein hat. Sie sehen zwar ähnlich aus wie Klassen, erhalten jedoch keinerlei Logik. Eine Klasse kann mehr als ein Interface implementieren.

Design Patterns

Singleton

Singleton werden dazu verwendet um sicherzustellen das nur eine einzige Instanz einer Klasse vorhanden ist. Alternativ könnte dies auch mit einer statischen Klasse realisiert werden. Allerdings sind statische Klassen nicht wirklich OOP und können keine Interfaces implementieren.

Lazy
Lazy kommt daher das die Instanz erst beim ersten Aufruf erstellt wird. Lazy singletons haben noch das Problem das sie per default nicht Thread safe. Dies kann über einen lock behoben werden. Der Performance Impact ist jedoch sehr hoch.
Eager
Eager bedeutet das die Instanz bereits beim Ausführen der Anwendung erstellt wird.

Proxy

Proxys sind Stellvertreter Klassen welche anstelle des eigentlichen Objekts aufgerufen werden. Dies kann etwa dazu verwendet werden um Code zu "verstecken", für Performance Optimierung oder um zusätzliche Funktionen hinzuzufügen welche in der Subject Klasse nicht vorhanden oder notwendig sind.

Mediator

Ein Mediator ist ein Vermittler zwischen zwei Objekten. Die Objekte können dem Mediator jeweils eine Nachricht zukommen lassen. Der Mediator kann auch wieder eine Nachricht an die Objekte schicken. Die Objekte müssen dabei jeweils keine Kenntnisse von einander haben.

Observer

Dieses Pattern erlaubt es einem Objekt ein anderes Objekt zu "beobachten" und von diesem über Änderungen informiert zu werden. Dieses Pattern basiert auf Events. Es ist etwa dann sinnvoll wenn verschiedene Code Teile einen Status eines Objektes wissen müssen. Anstatt immer zu schauen welchen Status es hat, informiert das Objekt von sich aus wenn es seinen Status ändert.

ORM

Objekt Relationales Mapping bezeichnet den Vorgang Objekte in Tabellen zu speichern. 1:n Beziehungen oder Vererbungen stellen dabei besondere Herausforderungen dar. Im Idealfall ist dabei jede Zeile in einer Tabelle ein Objekt und jedes Attribut wird über eine Spalte abgebildet. Die Datenbank verhält sich für die Applikation dann wie eine OO-Datenbank. Die Relationale Basis wird abstrahiert.

Vererbungen in Datenbanken

TPH

Alle Attribute ausser ID und Discriminator müssen "nullable" sein. Alle Attribute der Klassen werden direkt in einer einzigen Tabelle gespeichert. Über den Discriminator wird angegeben welche Klasse die Zeile abbildet.

Vorteil

  • Sehr schnell

*Nachteil*

  • Kein Richtiges Datenmodell
  • Alle Attribute der Child Klassen werden abgebildet egal ob sie von den meisten Childs benötigt werden oder nicht.

TPT

Pro Daten Typ wird eine Tabelle erstellt welche über einen Foreign Key auf ihre "Parent" Tabelle verweist. Entspricht der dritten Normalform.

Vorteile

  • Normalisiert, wenn man etwas ändert gilt die Änderung für alle Datentypen.
  • Vermeidet Redundante Daten

*Nachteil*

  • Benötigt viele Joins um ein Objekt darzustellen
  • Nicht so schnell

TPC

Jeder Daten Typ wird komplett abgebildet. Vorteile

  • Sehr schnell

*Nachteile*

  • Führt zu sehr vielen redundanten Daten. Da geteilte Attribute immer wieder neu abgebildet werden.

Entity Framework

Entity Framework ist das ORM von CSharp.

Models

Navigation Properties

Navigation Properties werden dazu verwendet das man die jeweiligen "Partner" einer Objekt Beziehung direkt verwenden kann im Code. Dies jeweils auch in beide Richtungen.

Lösungsansätze

Model First

Bei Model First wird zuerst das Datenmodell "gezeichnet". Sprich man erstellt zuerst ein ERM. Aus diesem ERM wird dann automatisch ein Datenbank Schema sowie die Klassen für die Applikation generiert.

Funktioniert eher dürftig und in der Regel muss man dann trotzdem noch von Hand nachhelfen.

Database First

Bei Database First programmiert man zuerst die Datenbank "von Hand" in der jeweiligen Sprachen. Visual Studion generiert dann aus der bestehenden Datenbank die Klassen.

Wir in der Regel dann verwendet wenn man mit einer bestehenden Datenbank arbeiten muss.

Code First (New Database)

Man erstellt zuerst die Klassen und Mappings. Anschliessend erstellt einem Visual Studio die Datenbank daraus. Änderungen an den Klassen werden über Migrations an die Datenbank weitergegeben. Dies hat teilweise das Problem das wenn man einen Wert hat der nicht null sein darf man bei allen bestehenden Datensätzen einen Wert ergänzen muss.

Code First (Existing Database)

Man erstellt die Klassen und Mappings in Visual Studio passend zur bereits bestehenden Datenbank. Sehr Aufwändig.

SOA

Aufgaben welche an mehreren Orten verwendet werden können gut in einen Service ausgelagert werden.

Vorteile

  • Komplexitätsreduktion
  • höhere Wiederverwendbarkeit
  • Einfachere Wartbarkeit
  • Kostenreduktion
  • bessere Flexibilität und Skalierbarkeit
  • Paralelle Entwicklung wird vereinfacht da die Teams unabhängig voneinander arbeiten können.

*Nachteile*

  • Abhängigkeit, ein Service wird von mehreren Projekten benutzt
  • Sicherheit, bietet eine zentrale Angriffsmöglichkeit
  • komplexe Architektur -> mehr Schnittstellen
  • höhere Verfügbarkeit notwendig

Grundsätze

  • Ein Service ist autark
  • Ist im Netzwerk verfügbar
  • Ist in einem Verzeichnis auffindbar
  • Hat eine definierte Schnittstelle
  • Ist plattformunabhängig

Kopplungen

Feste Kopplung
Der Service ist immer am gleichen Ort erreichbar.
Lose Kopplung
Es werden mehrere Orte gleichzeitig angefragt. Der Service der die Anforderung erfüllen kannn und am schnellsten Antwort gibt wird verwendet.

SOA Triangel

SOA Stolpersteine

  • Know How nicht vorhanden
  • Komplexität wird unterschätzt
  • SOA wird möglichst billig eingebaut
  • Wird für Probleme verwendet wo es nicht nötig ist.

Verteile Anwendungen

Ein verteiltes System ist eine Menge autonomer Computer welche über Nachrichten kommunizieren und aneinander gekoppelt sind. Darüber lassen sich dann verteilte Anwendungen realisieren.

Ein Ausfall eines Rechners ist für das System in Regel nicht weiter relevant da die Aufgabe von einem anderen Rechner übernommen werden kann. Einzelne Rechner sehen in der Regel nur einen Teil des Systems.

Eigenschaften

  • skaliert sehr gut
  • erlaubt es viele Aufgaben gleichzeitig auszuführen
  • Offenheit durch definierte Schnittstellen

WCF

  • Standard in .NET
  • unterstützt alle gängigen Standards, etwa SOAP
  • Kann über diverse Kanäle kommunizieren und als Webserver, Windows Service oder manuell (.exe) gestartet werden.

3-Modelle

Programming Model
Soap Service, HTTP Service, Data Service, etc.
Service Model
Data Contract, Service Contract, Service Behaviour
Channel Model
Format(JSON, XML), Transport(HTTP, TCP), Protocol (SOAP, HTTP, Open Data Protocol)

Unterschiede zu Webservice

Webservice WCF-Service
Kommunikation über HTTP Kommunikation, TCP, MSMQ
Request-Response, Simplex Simplex, Request-Response, Duplex
Stateless (Webserver) Webserver, Windows Service, self-hosted (.exe)

ABC-Model

Das ABC-Model beantwortet die folgenden Fragen:

  • Wo befindet sich der Service?
  • Wie kann ein Client darauf zugreifen?
  • Welche Funktionen bietet der Service an?
(A)ddress
Gibt die URI an.
(B)inding
Definiert die Protokolle, Nachrichten Format, Encoding, etc.
(C)ontract
Definiert die Schnittstelle des Service.

Kommunikationsarten

Request-Response

Der Client startet eine Anfrage an den Server welcher dann eine Antwort zurück gibt. Der Client macht immer den Anfang. Dies wäre wohl REST.

Simplex

Die Kommunikation geht nur in eine Richtung. Es werden keine Antworten gesendet.

Duplex

Client und Server können gleichberechtigt kommunizieren. Also sowohl Anfragen starten wie auch Antworten senden.

DataContract

Klassen welche über den Service verschickt werden sollen. Werden mit [DataContract] markiert. Die Properties die auch übertragen werden sollen werden mit [DataMember] markiert. Dies ermöglicht mit den Klasse auf dem Client zu arbeiten ohne das man sie noch einmal spezifisch definieren müsste.

Discovery

Managed Discovery

Der Client schickt eine "probe" an diverse Service Provider. Entspricht ein Service den Anforderungen ("prope match") verbindet sich der Client darauf. Läuft immer über einen Discovery Service der als "Telefonbuch" funktioniert.

Ad-hoc

Die Kommunikation läuft direkt zwischen dem Client und dem Service. Führt zu einer höheren Last im Netzwerk. Läuft über Multicast und UDP.

Layers

  • UI
  • Business Layer
  • Data Layer
  • Data Base

Die Aufteilung in Schichten erlaubt es einem die UI auszutauschen. Die Problematik ist jedoch das die verschiedenen Layers die Klassendefinition kennen. Um dieses Problem zu lösen gibt es den sogenannten Common Layer. Die Layers haben auch den Vorteil dann das man die Änderung nur an einem Ort machen muss.

Parallel Programming

Parallelität-im-Netzwerk

Bedeute das gleichzeitige rechnen in einem Netzwerk. Etwa beim Seti Projekt.

Vorteile

  • Spart Zeit und Geld
  • Grössere Probleme abarbeiten
  • Mehrere Probleme gleichzeitig berechnen
  • Bessere Ausnutzung der Leistung

Nachteile

  • Kompliziert
  • Concurrency, gemeinsame Ressource müssen verwaltet werden.
  • Kann zu aufwendig sein.
  • Schwierig zu debuggen.

Lock

Locked eine Ressource für den aktuellen Thread. Locks können auch in nested Loops vorkommen.

Monitor

Lock ist eigentlich ein Wrapper um Monitor. Für erweiterte Applikation ist es allenfalls nötig den Monitor selber zu implementieren. Für den normalen Gebrauch ist Lock föllig genügend.

Mutex

Wird dazu verwendet um Prozess gegeneinader zu sperren. Etwa um zu verhindern das eine Applikation mehrfach ausgeführt wird.

Semaphore

Beschränkt die mögliche Anzahl Threads.

Parallel.Invoke

Gute und einfache Möglichkeit um mehrere Methoden parallel auszuführen. Bietet einem jedoch nicht wirklich eine Kontrolle. Der Code darf also keine Konflikte haben.

Tasks

Tasks sind auch eine Möglichkeit um Parallelisierung zu erreichen. Sie sind etwas weniger Ressourcen intensiv als Threads da sie vom TPL automatisch verwaltet werden.

Tasks vs. Invoke

Invoke synchronsiert die ausgeführten Methoden. Heisst sie fährt im Code erst weiter wenn alle Methoden ausgeführt wurden.

Die Taks laufen einfach durch und achten nicht darauf ob einer früher oder später fertig ist.

Glossary

<>
Objekt Relationales Mapping
<>
Service Oriented Architecture
<>
Table Per Hierarchy
<>
Table Per Type
<>
Table Per Concret Type
<>
Windows Communication Foundation

Webtechnologien

3. Semester

XHTML

Vorgänger von HTML5. Basiert auf XML. Abgeleitet von SGML. Viel strickter als HTML.

HTML5

Wurde 2014 veröffentlicht. Hat mehr Elemente als frühere HTML Versionen. Audio und Video können direkt verwendet werden. Plugins werden dadurch unnötig.

<!DOCTYPE html>
<html>
    <head>
        <title>Title</title>
        <meta charset="utf-8">
    </head>
    <body>
        Hello World
    </body>
</html>

CSS

CSS ist für das Styling der Websiten zuständig. Dadurch wird die Trennung von Inhalt und Styling aufrecht erhalten.

Einbinden

Selektoren

Element

h1 {
}

ID

#myId {
}

Klasse

.myClass {
}

Nachkommen

div p {
}

Direct Child

div > p {
}

Direkte Geschwister

ul + p {
}

Allgemeine Geschwister

ul ~ p {
}

Attribute

a[title="Ein Titel"] {
}

Box Modell

DIV und SPAN

DIV und SPAN werden verwendet um Elemente einzufügen. DIV für Block Element und SPAN wird für Inline Elemente verwendet. Heute können für DIV jedoch auch semantische Elemente verwendet werden wie etwa section oder nav.

Encoding

Character Encoding ist die Zuordnung eines Bitmusters zu einem Zeichen. Zeichenvorrat ist die Anzahl der möglichen Zeichen. Zeichensatz definiert welche Zeichen es gibt (etwa Umlaute etc.).

Byte-Order Mark

Wird bei Textdateien verwendet um anzugeben welchen UTF-x Dialekt verwendet wird. Steht am Anfang des Dateicodes. Little Endian heisst das das niederwertige Bit zuerst geschrieben wird und Big Endian heisst, dass das höherwertige Bit zuerst geschrieben wird. Wird nur bei UTF-16 und UTF-32 verwendet.

Client-Server Modell

Ermöglicht das die Anwendungen auf mehrere Computer verteilt werden kann und macht das Ganze dadurch dezentraler. Ist die Basis für das WWW und HTTP.

Two-Tier Architektur

Die Software läuft auf dem Client und greift für die Daten auf einen Server zu. Bei einer Programm Änderung muss die Software auf allen Clients aktualisiert werden.

Three-Tier Architektur

  1. Client übernimmt Präsentationsschicht (JavaScript)
  2. Application Server (PHP)
  3. Datenserver (etwa eine Datenbank)

Skalieren viel besser als Tow-Tier Architekturen. Three-Tier Architektur gilt auch für MVC Architektur.

N-Tier Architektur

  1. Client
  2. Presentation Layer Server
  3. Application Server
  4. Datenbankserver

HTTP Client-Server Kommunikation

HTTP/1.0
Eine TCP Verbindung pro Anfrage
HTTP/1.1
Eine TCP Verbindung kann wieder verwendet werden (keepalive)
HTTP/2
Binäres Protokoll->kompakter, Multiplexing, Server Push

HTTP Anfragemethoden

Methode Beschreibung
GET Holt eine Ressource vom Server
HEAD Holt nur den Header einer Ressource vom Server
POST Sendet Daten im Body an den Server
PUT Speichert den Body der Anfrage auf dem Server
TRACE Schickt eine Anfrage zurück an den Client. Dazwischenliegende Proxy Server erweitern die Daten. Wird in erster Linie für die Fehleranalyse verwendet.
OPTIONS Holt die Liste der verfügbaren Methoden vom Server
DELETE Löscht den Ressource auf dem Server

HTTP Status Codes

HTTPS: Ablauf

PHP

Anwendungsbereiche

  • Dynamische Webseiten
  • Webseiten mit Datenbank Inhalt
  • Darstellen von Inhalten aus anderen Formaten
  • Interaktive Webseiten

Hello World

<html>
    <body>
        <?php
            echo "Hello world";
        ?>
    </body>
</html>

Variabeln

  • Starten immer mit $
  • Anschliessen A-z oder _
  • Case-Sevsitive
  • Keine Syntax Vorgaben

Konstanten

<?php
define("CONSTANT", "This is a constant.");

function myTest() {
        echo CONSTANT;
}

myTest();
?>

Array

<?php
$cars = array("Volvo", "BMW", "Toyota");
$cars[0] = "Volvo";

$age = array("Peter"=>"35", "Max"=>"28");
$age['Peter'] = "35";
?>

Typen

  • int
  • float
  • string
  • bool
  • array
  • object
  • unset
<?php
$value = "100"; //String
$value = (int)$value //Converted to int
?>

Superglobals

$GLOBALS
$_SERVER
$_REQUEST ($_GET + $_POST + $_COOKIE)
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION

Call by Value/Reference

Value

<?php
$var = 1;
function foo($var)
{
    $var++;
}
echo $var; //1
?>

Reference

<?php
$var = 1;
function foo(&$var)
{
    $var++;
}
echo $var; //2
?>

REST

GET /api/robots Retrieves all robots
GET /api/robots/2 Retrieves robots based on primary key
POST /api/robots Adds a new robot
PUT /api/robots/2 Updates robots based on primary key
DELETE /api/robots/2 Deletes robots based on primary key

Forms

In HTML5 neu dazugekommen:

  • color
  • date
  • datetime-local
  • email
  • month
  • number
  • range
  • search
  • tel
  • time
  • url
  • week

Wenn HTML5 nicht unterstützt wird werden sie als text input behandelt.

Input

//index.html
<form action="/action_page.php">
  First name:<br>
  <input type="text" name="firstname" value="Mickey">
  <br>
  Last name:<br>
  <input type="text" name="lastname" value="Mouse">
  <br><br>
  <input type="submit" value="Submit">
</form>

//action_page.php
<?php
echo $_POST['firstname'];
echo $_POST['lastname'];
?>

select

<select name="cars">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="fiat">Fiat</option>
  <option value="audi">Audi</option>
</select>

option

<select name="cars" size="3" multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="fiat">Fiat</option>
  <option value="audi">Audi</option>
</select>

textarea

<textarea name="message" rows="10" cols="30">
    The cat was playing in the garden.
</textarea>

button

<button type="button" onclick="alert('Hello World!')">Click Me!</button>

radio

<form>
  <input type="radio" name="gender" value="male" checked> Male<br>
  <input type="radio" name="gender" value="female"> Female<br>
  <input type="radio" name="gender" value="other"> Other
</form>

htmlspecialchars()

Wandelt Sonderzeichen in HTML Code um. Dies ist nötig weil die speziellen Zeichen je nach dem ungewollte Reaktionen auslösen könnten da sie in PHP eine spezielle Bedeutung haben.

Formularverarbeitung

Nach Entgegennahme eines Requests sollte die Formularverarbeitung im Normalfall mit diesen Schritten abgearbeitet werden:

  • Validierung
    • Sind alle required Felder ausgefüllt?
    • Gibt es Verletzungen von Formatvorgaben oder Datentypen?
  • Verarbeitung der Daten
    • Datenbankoperationen durchführen
    • Loggen
  • Rendern einer Antwortseite
    • Das Vorhandensein von Fehlern entscheidet, welche Seite als Antwort angezeigt werden soll
    • Wenn Feldwerte ausgegeben werden, immer htmlspecialchars() oder Typecasts verwenden

Kontrollstrukturen

  1. if/else/elseif

     <?php
    $t = date("H");
    
    if ($t < "10") {
        echo "Have a good morning!";
    } elseif ($t < "20") {
        echo "Have a good day!";
    } else {
        echo "Have a good night!";
    }
    ?>
  2. switch

     <?php
    $favcolor = "red";
    
    switch ($favcolor) {
        case "red":
            echo "Your favorite color is red!";
            break;
        case "blue":
            echo "Your favorite color is blue!";
            break;
        case "green":
            echo "Your favorite color is green!";
            break;
        default:
            echo "Your favorite color is neither red, blue, nor green!";
    }
    ?>
  3. while

     <?php
    $x = 1;
    
    while($x <= 5) {
        echo "The number is: $x <br>";
        $x++;
    }
    ?>
  4. do...while

     <?php
    $x = 1;
    
    do {
        echo "The number is: $x <br>";
        $x++;
    } while ($x <= 5);
    ?>
  5. for

     <?php
    for ($x = 0; $x <= 10; $x++) {
        echo "The number is: $x <br>";
    }
    ?>
  6. foreach

     <?php
    $colors = array("red", "green", "blue", "yellow");
    
    foreach ($colors as $value) {
        echo "$value <br>";
    }
    ?>
  7. continue

    <?php
    $stack = array('first', 'second', 'third', 'fourth', 'fifth');
    
    foreach($stack AS $v){
        if($v == 'second')continue;
        if($v == 'fourth')break;
        echo $v.'<br>';
    }

Klassen

<?php

class Person {

    protected $name;
    protected $vorname;
    protected $alter;
    protected $wohnort;

    public __construct($name) {
        $this->name = $name;
    }

    public __destruct() {
    }

    public function getName() {
        return $this->name;
    }
}

class Student extends Person {
}
?>

Interfaces

interface Reader {
    public function read();
}

class BookReader implements Reader {
    public function read() {
        echo "reading a book";
    }
}

Exception

class CustomException extends Exception {
    public function errorMessage() {
        $errorMsg = 'Error: ' . $this-getMessage();
        return $errorMsg;
    }
}

try {
    echo $email;
    throw new CustomException($email);
} catch (CustomException $e) {
    echo $e->errorMessage();
}

4. Semester

XML

XML dient zur Beschreibung und Darstellung von Daten. Ist ein W3C Standard. Die aktuelle Version ist "Fünfte Ausgabe Version 1.0" von 2008. Wurde entwicklet um auf einfach und standartisierte Weise Daten austauschen zu können. XML ist dabei:

  • frei verfügbar
  • hat eine einheitliche Zeichenkodierung
  • eine allgemeingültige Hierarchie/struktur
  • einheitliche Formate der Felder
  • einfach erweiterbar
  • selbstbeschreibend (DTD oder XSD)

Wohlgeformt und Valide

Wohlgeformt
Root Element vorhanden, Keine Überschneidung von Elementen, alle Tags korrekt geschlossen
Valide
Grammatik der Schemasprache (DTD, XSD)erfüllt

Vorteile

  • Freie Modellierung von Daten
  • Daten unabhängig von Darstellung
  • offener Standard
  • Unicode

Nachteile

  • grosser Speicherbedarf und höhere Übertragungsmenge
  • beschränkte Datentypisierung
  • schwierig Beziehungen zu beschreiben
  • Für Menschen schwer lesbar

XML basierte Formate

Einsatzgebiete

  • Datenablage (MS Office)
  • Datenbanken
  • Schnittstellen
    • Webservices (SOAP, REST)
    • Zahlungsinterfaces
    • RSS

Alternativen

  • JSON
  • YAML

XML Aufbau

Prolog

Die Elemente sind optional ohne ist die Datei jedoch nicht wohlgeformt oder valide. Mindestens die Declaration sollte vorhanden sein.

Body

  • Namen dürfen nur mit Buchstaben oder _ - . beginnen
  • Namen dürfen keine Leerzeichen enthalten
  • Namen dürfen nicht mit xml oder XML beginnen
  • Gross und Kleinschreibung wird unterschieden

Entity References

Werden verwendet um special Characters zu escapen

DTD

  1. Beispiel XML mit DTD

    <?xml version="1.0"? encoding="UTF-8" standalone="no"?>
    <!DOCTYPE collection SYSTEM "recipes.dtd">
    <?xml-stylesheet href="tutorialspoint.css" type="text/css"?>
    <!-- Comment
    Over multiple lines
    -->
    <collection>
      Inline Element<description>Some Text</description>
      <empty/>
      <recipe>
        <title>Brot</title>
        <ingredient name="mehl" amount="2" unit="kg"/>
        <preparation>
          <step>knetten</step>
          <step>backen</step>
        </preparation>
        <comment>Dies ist ein Kommentar</comment>
        <nutrition protein="2" carbohydrates="4" fat="7"/>
      </recipe>
    </collection>
  2. Document Type Definition

    • Erlaubt die Validierung eines XML Dokuments
    • Garantiert die Gültigkeit
    • Macht Sinn, wenn
      • Daten über einen längeren Zeitraum gespeichert werden
      • Von verschiedenen Stakeholdern verarbeitet bzw. gepflegt werden
    • Gibt den Spielraum für ein XML Dokument vor:
      • Welche Elemente dürfen verwendet werden
      • Welche Attribute können/müssen für Elemente verwendet werden
      • Welche Subelemente können/müssen für Elternelement vorkommen

    "SYSTEM" wird für private also selbsterstellte DTDs verwendet

    <!DOCTYPE collection SYSTEM recipes.dtd>

    "PUBLIC" wird für standartisierte DTDs verwendet

    <!DOCTYPE html PUBLIC "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  3. Beispiel DTD

  4. Verarbeitungsanweisung

    Geben an wie das XML verarbeitet werden müssen. Syntax:

    target
    An welche Applikation die Instruktion gerichtet ist
    instructions
    Welche Informationen sollen verarbeitet werden

  5. CDATA vs. PCDATA

DTD vs. XSD

DTD

  • nur sehr wenige Datentypen (CDATA, PCDATA, ID, IDREF, etc.)
  • eingeschränkt Strukturierbar
  • wiederverwendung nur eingeschränkt möglich
  • Typen können nicht von Anwender erweitert werden
  • Keine Namensräume
  • Nur sehr einfache Referenzierung möglich
  • DTD selber ist nicht XML konform

*XSD*

  • sind gültige XML Dokumente
  • alle modernen Datentypen vorhanden
  • eigene Datentypen können definiert werden
  • erweiterbar
  • Namensräume werden unterstützt

XML Schemas

XML Dokumente welche von einem XML Schema abgeleitet werden, werden Instanzdokumente genannt.

Beispiel XML mit XSD

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.w3schools.com"
xmlns="https://www.w3schools.com"
elementFormDefault="qualified">

<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="to" type="xs:string"/>
      <xs:element name="from" type="xs:string"/>
      <xs:element name="heading" type="xs:string"/>
      <xs:element name="body" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema>
<?xml version="1.0"?>
<note
xmlns="https://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.w3schools.com/xml/note.xsd">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

XPath

  • Ist ein W3C Standard
  • Zwei Versionen (1.0 und 2.0)
  • Wird verwendet für:
    • Extensible Stylesheet Language (XSL)
    • Parsen von XML Dokumenten (Websiten)
    • Abfragen in XML Datenbanken

Beispiele

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book>
    <title lang="en">Harry Potter</title>
    <price>29.99</price>
  </book>
  <book>
    <title lang="en">Learning XML</title>
    <price>39.95</price>
  </book>
</bookstore>
Abfrage Resultat
/bookstore Alles in <bookstore></bookstore>
//book Alle <book> Elemente egal welche Position
//@lang Alle Attribute Namens "lang"
bookstore//book Alle Bücher die Kinder von Bookstore sein
//book[@id='en'] Alle Bücher wo "lang='en'"
/bookstore/book[1] Das erste Buch unter "bookstore"
/bookstore/book[last()] Das letzte Buch
/bookstore/book[price>35.00] Alle Bücher unter 35 Franken
/bookstore/book[price>35.00]/title Alle Titel der Bücher unter 35 Franken
/bookstore/* Alle Elemente unter "bookstore"

XSL

XSL wird dazu verwendet um XML Daten zu formatieren. Wir hauptsächlich im Print Bereich verwendet. Zusammen mit XSL Transformation kann es dazu verwendet um aus XML Dateien andere Dokumente zu erstellen. Etwa von XML zu PDF oder XML zu HTML. XSLT ist ein W3C Standard.

XSLT wird von allen modernen Browser unterstützt. Somit kann XSLT sowohl im Server Bereich wie auch im Client Bereich eingesetzt werden.

Ablauf

JavaScript

  • Schwach und dynamisch typisiert
  • objektorientier, prozedural und funktional
  • Kern als ECMAScript standardisiert
  • keine Klassen
  • unterscheidet Gross und Kleinschreibung

Einsatzgebiete

  • Dynamische Manipulation von Websiten
  • Clientseitige Validierung
  • Senden und Empfangen von Daten ohne erneutes Laden der Seite
  • Animationen
  • Berechnungen
  • Mit Node.js auch serverseitig verwendbar
  • AJAX für Web 2.0

Vor- und Nachteile

Vorteile

  • kein Plugin
  • Logik im Client spart Rechenzeit auf dem Server
  • Schnellere Antwortzeiten für Clients

*Nachteile*

  • Browser Inkompatibilitäten
  • Kann deaktiviert werden
  • Sicherheitsprobleme
  • XSS Angriffe

Beispiel JavaScript in HTML

<!DOCTYPE html>
<head>
  <title>JavaScript</title>
</head>
<body onload="alert('Seite wurde geladen.');">
  <h1>JavaScript</h1>
  <script type="text/javascript" src="functions.js"></script>
  <p style="cursor:pointer" onmouseover="this.innerHTML='Hallo Welt!'"</p>
  <input type="button" value="Check" onclick="raten();" />
  <form onsubmit="return validiereFormular();">
</body>
</html>

Pure JavaScript

function test(parameter1, parameter2) {
    var local_variable = "hi";
    global_variable = "hi";
    alert(paremeter1 + parameter2);
    const constant_variable;
    return local_variable;
    var a = new Array();
    a[0] = "Januar"

    for(var i = 0; i < 10; i++){
        alert(i);
    }

    //set
    document.cookie="user=Max Muster";
    //delete
    document.cookie="user=;expires=Thu, 01 Jan 1970 00:00:00 GMT";

    var id = getElementById(id);
    var tag = getElementsByTagName(elementName);
}
test();
alert(local_variable);

// DOM
function addEntry() {
    var ul = document.getElementById("list");
    var li = document.createElement("li");
    var name = document.getElementsByName("muster");
    var name = document.getElementsByClassName("muster");
    var textNode = document.createTextNode(counter);
    li.appendChild(textNode);
    ul.appendChild(li);
    counter++;
}

//Objects
var obj = {
    property: value,
}

function Farbe (R, G, B)
{
    this.R = R;
    this.G = G;
    this.B = B;
    this.hex = "#";
    var private = "private property"
}
function HintergrundWechseln () {
var Hintergrund = new Farbe("E0", "FF", "E0");
    document.bgColor = Hintergrund.hex + Hintergrund.R + Hintergrund.G +
    Hintergrund.B;
}

//EventListener
var button = document.getElementById("testButton");
button.addEventListener("mousedown", myFunction, false);

HttpOnly

Cookies mit dem Attribut HttOnly können von JavaScript nicht gelesen werden.

Eventlistener

Es werden drei Parameter übergeben:

  1. den Ereigsnistyp (mouseover, onClick)
  2. die auszuführende Funktion
  3. Die Phase (Capture oder Bubbling)

XSS

  • Code Injection Attacke
  • Es wird unbeabsichtig fremdes JavaScript ausgeführt
  • drei Arten
    Persistent XSS
    etwa in einem Gästebuch Eintrag
    Reflected (temporär)
    Der Server schickt ein schädliches Script als Teil einer Antwort retour.
    DOM-based (lokal)
    Kommt vom Computer des Users aus. Server ist nicht involviert.

CSRF

Session-Hijacking
der Angreifer übernimmt die Session des Opfers. Der Angreifer surft im Namen des Opfers.
Session-Fixation
Dem Opfer wird eine falsche Session unterschoben. Das Opfer surft im Namen des Angreifers.

jQuery

jQuery Selectors

Syntax Beschreibung
$("*") Selects all elements
$(this) Selects the current HTML element
$("p.intro") Selects all <p> elements with class="intro"
$("p:first") Selects the first <p> element
$("ul li:first") Selects the first <li> element of the first <ul>
$("ul li:first-child") Selects the first <li> element of every <ul>
$("[href]") Selects all elements with an href attribute
$("a[target='blank']") Selects all <a> elements with a target attribute value equal to "blank"
$("a[target!='blank']") Selects all <a> elements with a target attribute value NOT equal to "blank"
$(":button") Selects all <button> elements and <input> elements of type="button"
$("tr:even") Selects all even <tr> elements
$("tr:odd") Selects all odd <tr> elements

Nutzen

  • Einfache Handhabung von komplexen Aufgaben
  • gute Kapselung von AJAX
  • viele vorgefertigte Objekte
  • Mobile fähig
  • aktive Community

Architektur

statische Seiten

Vorteile

  • Einfache Erstellung
  • keine speziellen Anforderungen
  • gute Performance
  • gute Sicherheit
  • keine speziellen Werkzeuge nötig

*Nachteile*

  • keine Automatisierung
  • keine Personalisierung
  • Seite muss von Hand gepushed werden
  • kann bei grösseren Seiten sehr aufwändig werden

dynamische Seiten

Vorteile

  • Automatisierung möglich
  • Personalisierung möglich
  • Inhalt kann einfach getauscht werden
  • Zeitabhängiges Ein/Ausblenden möglich

*Nachteile*

  • Webserver muss die Technologie unterstützen
  • kann Performance Problem geben
  • potenzielle Sicherheitsprobleme
  • kann komplexer sein

Rich Internet Application

Eine Webseite bei der ein grösserer Teil der Logik auf den Client ausgelagert wird. Theoretisch sind alle Websiten welche komplexere Webanwendung mit JavaScript etc. umsetzen um RIAs.

Single-page-Webanwendung

Kombination von RIAs und Webservices. Präsentationsschicht wird komplett vom Client übernommen.

Standalone

Die Webanwendung ist ein eigenständiges Binärprogramm, welches für jede Anfrage neu gestartet wird. Man nennt solche Anwendungen meist CGI- Programme.

Integriert

Die Webanwendung ist Teil des Webservers oder ein vom Webserver interpretiertes Skript Es muss nicht mehr für jeden Request Cycle ein Programm gestartet werden Beispiele: PHP, Perl, Python, Java Servlet, JavaServer Pages oder ASP.NET.

Fachapplikation mit Webinterface

Spezifisch für einen Kunden angefertigte Software, z.B.

  • Kundenverwaltung (CRM)
  • Vertragsverwaltung für Mitarbeiter einer Versicherung
  • Patientenverwaltung in einem Krankenhaus

CMS

Vorteile

  • Für Laien einfacher zu benutzen
  • Content on the fly erzeugen
  • mit Plugins erweiterbar
  • SEO Unterstützung
  • Dynamische Inhalte
  • Rechteverwaltung

*Nachteile*

  • Code oft nicht W3C konform
  • Code meist undurchsichtig
  • Technologien werden vorgegeben
  • können Sicherheitslücken enthalten

CMS Arten

Volldynamische Systeme
erzeugen die Dokumente bei jedem Aufruf neu
Statische Systeme
Erzeugen die Dokumente aus den Vorlagen als statisch abgelegte Dateien
Hybride Systeme
Inhalte die dynamisch sein müssen werden aus der DB zur Laufzeit gelesen. Der Rest wird statisch abgelegt.Inhalte die dynamisch sein müssen werden aus der DB zur Laufzeit gelesen. Der Rest wird statisch abgelegt.

CMS Varianten

Desktop CMS
Desktop Programm (Adobe Dreamweaver)
Web CMS
Selbst installiert, Wordpress, etc.
Cloud CMS
werden in der Regel nicht selbst installiert und von vielen gleichzeitig genutzt, Jimdo, Wix, Squarespace

CMS Aufbau

Cloud CMS

Entwurfsmuster

Entwurfsmuster sind Lösungsschablonen für bekannte Probleme und dienen als Vorlage zur Problemlösung. In der letzten Zeit auch zunehmend im Human Interface Design zu finden. Sie sollen helfen die üblichen Probleme bei der Entwicklung zu umgehen (schlechte Wartbarkeit, schlechte Testbarkeit, schlechte Portierbarkeit, schlechte Wiederverwendbarkeit).

Typen

  • Erzeugungsmuster (Creational Patterns)
  • Strukturmuster (Structural Patterns)
  • Verhaltensmuster (Behavioral Patterns)

Erzeugungsmuster

  • erzeugt Objekte
  • Beispiele
    • Abstrakte Fabrik
    • Einzelstück (singleton)
    • Erbauer
    • Fabrikmethode (factory method)
    • Multiton
    • Prototype

Strukturmuster

Beschreibt wie Gruppen von Objekten in grössere Strukturen eingeordnet werden können. Soll den Entwurf von Software durch das Erstellen von Beziehungen zwischen Entitäten erleichtern.

Beispiele:

  • Adapter
  • Brücke (bridge)
  • Dekorierer (decorator)
  • Fassage (facade)
  • Kompositum (composite)
  • Stellvertreter (proxy)

Verhaltensmuster

Hilft die Kommunikation und Interaktion zwischen Objekten und Klassen zu definieren sowie den Kontrollfluss in komplexen Programmen zu bestimmen.

Beispiele:

  • Beobacher (observer)
  • Nullobjekt
  • Strategie (strategy pattern)
  • Vermittler (mediator)

Modell View Control

Modell View Control definiert den Aufbau von Software. Soll Änderungen und Erweiterungen vereinfachen sowie Komponenten wiederverwendbar machen.

  • Modell, enthält die Daten
  • View, beschaft die Daten und zeigt sie an
  • Controller, reagiert auf Ereignisse und führt entsprechende Aktionen aus.

Anti-Patterns

Sind das Gegenteil von Entwurfsmuster und entstehen in der Regel durch mangelnde Erfahrung oder Qualifikation oder Zeitknappheit.

Authentifizierung

Authentifizierung

Man beweist seine Identität.

Autorisierung

Steht für das verwalten von Rechten. Welcher User hat worauf Zugriff. Ohne Authentifizierung nicht möglich.

Verfahren

Symetrische
Passwort, Schlüssel, etc
Asymetrische
Public/Private Key (GPG, Zertifikate)

2-Factor Authentication

Basiert auf dem Prinzip das man etwas vorweisen kann was man weiss (Passwort) und etwas was man hat (etwa die Bankkarte + Kästchen). Bietet zusätzliche Sicherheit da ein Angreifer trotz Passwort immer noch keinen Zugriff auf die Daten hat.

HTTP Basic Authentication

Simpleste Form der Authentifizierung im WWW. Daten werden dabei im Klartext übermittelt!

Single Sign On

Man hat einen Account bei einem Dienst. Ein Dritt-Dienst authentifiziert den User dann über den ersten Dienst etwa Facebook oder das Active Directory der Firma.

Hash, Salt und Doppelverschlüsselung

Hash
Prüfwert/Prüfsumme eines Wertes oder einer Nachricht. Ist für den gleichen Wert immer gleich-> Schwachstelle Rainbowtables.
Salt
Vor dem hashen dem Wert angehängt damit nicht jeder Wert gleich aussieht. Erschwert das verwenden von Rainbow Tables.

Doppelverschlüsselung
Passwort und Salt werden verschlüsselt, zusammengehängt und dann nochmal verschlüsselt.

5. Semester

Webservices

Webservices sind Dienste welche Informationen bereitstellen. Dies Könenn etwa Wetter Daten oder Wechselkurse(FX) sein. App basieren auch sehr stark auf Webservices da sie oft auf einen zentralen Dienst zugreifen oder zusätzliche Rechenpower benötigen. Dies erlaubt einem seine Applikation Service orientiert zu entwickeln und sich somit auch seine Kernkompetenz zu konzentrieren.

Als Entwickler greift man über eine Schnittstelle(API) darauf zu welche nach gängigen Webstandards funktionieren.

Vorkommen:

  • verteilte Systeme
  • Systemintegration
  • Kommunikation über Plattformgrenzen

Arten:

  • XML-RPC
  • SOAP
  • REST

RPC

Ein RPC bringt einen entfernten Server zum reagieren. Der Client schickt dabei über eine Methode eine Anfrage (Request) an einen Server/Provider. Dieser wiederum liefert dem Client dann die Antwort (Response), das Resultat.

SOAP

SOAP ist ein W3C Standard. Die Schnittstellendefinition ist meist WSDL. Basiert auf XML. Hat Aufgrund des XML Aufbaus einen relativ grossen Overhead. Ist Plattform agnostisch, das Protokoll kann also frei gewählt werden (HTML, HTTPS, SMTP). Läuft auf der Anwendungsebene ab.

  1. Aufbau

    1. Envelope

      Jede Anfrage besteht aus einem Envelope welcher einen Header und einen Body enthällt. Im Header findet man auch die Namespaces.

    2. Header

      Kann leer sein.

    3. Body

      Enthält die eigentlichen Daten der Anfrage oder Antwort.

  2. Beispiel

    <?xml version="1.0"?>
    <soap:Envelope
        xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
        soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
      <soap:Header>
      </soap:Header>
      <soap:Body>
      </soap:Body>
    </soap:Envelope>
  3. WSDL

    Ist eine Plattform und Protokoll unabhängige Defintionssprache. WSDL definiert ein formales und eindeutiges Interface (Vertrag) zwischen Webservice Provider (Server) und Webservices Konsument (Client). Wird häufig in Kombination mit SOAP und XLS verwendet.

REST

Leichter als SOAP. Allerdings ist REST ein Architektur Stil. Bietet sich jedoch für Webservices an. Basiert rein auf HTTP und verwendet dabei die üblichen HTTP Funktionen und Status-Codes. Da REST auf HTTP basiert kann es ohne Probleme im Browser betrachtet und navigiert werden. Es gibt 3 mögliche Gruppen:

  • Complete RESTful
  • Not fully RESTful
  • No RESTful

*Vorteile gegenüber SOAP:*

  • Leichter
  • weniger komplex
  • ressourcenorientiert
  • Unterstützt verschieden Formate

Ressourcenorientiert bedeutet das eine REST URL diverse Resourcen bereit stellt.

  1. Nutzung

    1. Betrachtung/Abfragen

      1. Die gewünschte URL mit GET aufrufen http://example.com/rest_root/ Diese URL beinhaltet dann alle Objekte welche angeboten werden.
      2. Anschliessend kann dann eine Resource aus der Root ausgewählt werden und diese an die URL angefügt werden. http://example.com/rest_root/resource_path
    2. Daten zum Server schicken

      Daten könnnen via den POST Befehl an den Server geschickt werden.

  2. Spezifikation

    REST hat im Gegensatz zu SOAP keinen fixen Standard. Dadurch kann es verschiedene Implementationen geben. Es gibt jedoch Prinzipien an die man sich halten sollte:

    • Identifizierbare Ressourcen (URI)
    • Adressierbarkeit
    • Benutzung von Standard HTTP Methoden (GET, POST, ..)
    • Unterstützung verschiedener Formate (HTML, JSON, XML)
    • Stateless
  3. Standard HTTP Methoden

    PUT
    Zustandsänderung oder Updaten einer Ressource.
    GET
    Das Wiederauffinden/ Abfragen einer Ressource.
    POST
    Das Erstellen oder Kreieren einer Ressource.
    DELETE
    Das Entfernen oder Löschen einer Ressource.
  4. Anwendung

    Überall wo "RPC"s verwendet werden sowie AJAX und Web "API"s benutzt werden.

Design (SOA)

Ziel ist es flexible Applikationen durch zusammenbauen von wiederverwendbaren (Web-)Services zu bauen.

  1. Designaspekte

    1. Granularität

      Möglichst viele kleine Webservices. Hat Einflus auf:

      • Komplexität
      • Wiederverwendbarkeit
      • Agilität
    2. Wiederverwendbarkeit

      Webservices sollten so allgemein wie möglich gehalten werden damit sie ohne grosse Anpassungen in einem anderen Projekt wieder verwendet werden können.

  2. Sicherheitsaspekte

    • Authentifizierung
    • Autorisierung
    • Integrität
    • Vertraulichkeit

AJAX

Führt HTTP Anfragen im Hintergrund aus. Dabei sollen nur Teile der Website geladen werden und nicht die ganze Seite. Wird oftmals in Kombination mit Webservices eingesetzt was teilweise zu Kolisionen mit der der Same Origin Policy kolidiert. Oft kommt auch jQuery zum Einsatzt. Wird etwa für Push Up Benachrichtigungen verwendet oder Newsticker.

Client-Plattform:

  • Browser
  • JavaScript

Server-Plattform:

  • Scripts
  • Webservices
<!DOCTYPE html>
<html>
<body>

<div id="demo">
<h2>The XMLHttpRequest Object</h2>
<button type="button" onclick="loadDoc()">Change Content</button>
</div>

<script>
function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML =
      this.responseText;
    }
  };
  xhttp.open("GET", "ajax_info.txt", true);
  xhttp.send();
}
</script>

</body>
</html>

Vorteile

  • Nur Teile der Webseite müssen geladen werden
  • Höhere Ladegeschwindigkeit
  • Niedriger Datenaustausch
  • Kein Browser Plugin benötigt

Nachteile

  • JavaScript kann deaktiviert werden
  • Suchmaschinen können keine Daten auslesen
  • Zurück-Button im Browser funktioniert nicht
  • Browserrückmeldungen bei Fehlschlag müssen selbst programmiert werden

readyState

Status Beschreibung
0 Die Anfrage wurde nicht initialisiert
1 Die Anfrage wurde vorbereitet
2 Die Anfrage wurde versendet
3 Die Anfrage wird verarbeitet
4 Die Anfrage wurde abgehandelt

JSON

JSON Array

{
    "book": [
    {
        "id": "01",
        "language": "java"
    },
    {
        "id": "02",
        "language": "python"
    }]
}

JSON Object

{
    "Herausgeber": "Xema",
    "Nummer": "2323424",
    "Waehrung" "Euro"
}

Vor- und Nachteile gegenüber XML

Vorteile

  • kompakter
  • besser Lesbar
  • Datenvolumen geringen
  • kann direkt in JavaScript Objekte umgewandelt werden

*Nachteile*

  • Schlechte Möglichkeiten Metadaten und Kommentare zu integrieren
  • wenig verbreitet
  • nicht erweiterbar

SOP

URL Outcome Reason
http://store.company.com/dir2/other.html Success  
http://store.company.com/dir/inner/another.html Success  
https://store.company.com/secure.html Failure Different protocol
http://store.company.com:81/dir/etc.html Failure Different port
http://news.company.com/dir/other.html Failure Different host

Kann mit diesen zwei Verfahren umgangen werden:

  • JSONP
  • CORS

JSONP

  • Unsicher da nicht kontrolliert werden kann was zurück kommt
  • wird über dein src-Attribut in einem script-Element realisiert

CORS

  • funktioniert mit Berechtigungen
  • sicherer als JSONP

E-Commerce

B2C
klassischer Webshop
B2B
Webshop für Firmen (alltron, mobility)
C2C
Ricardo etc.

Cloud Servicemodelle

Vor- und Nachteile

Vorteile

  • Hohe Skalierbarkeit
  • Elastizität
  • Nutzungsbasierte Abrechnung (pay as you go)
  • Keine hohen Initial Kosten
  • Sehr kurze Setup Zeit (time to market)
  • Keine eigene Infrastruktur (Rechenzentrum, Server, Netzwerk) notwendig

*Nachteile*

  • Grosse Abhängigkeit vom Cloud Anbieter
  • Verbindung zur Cloud muss zuverlässig sein
  • Bandbreite bei vielen Anwendern an einem Standort
  • Kundenspezifische Anpassungen nur sehr bedingt möglich
  • Sicherheit
  • Datenschutz
  • Gesetzliche Auflagen

Servicemodelle

Abkürzung Beispiel
BaaS PayPal
SaaS Office 365, G Suite
PaaS Azure, Elastic Beanstalk
IaaS Amazon S3/EC2, MS Azure

Cloud Liefermodelle

Public Cloud
Office 365, Dropbox
Private Cloud
Nextcloud, Plex
Community Cloud
Github
Hybrid Cloud
Nextcloud mit Dropbox Anbindung

Cloudangebote

Single-Cloud
Nutzung eines einzelnen Services
Hybrid-Cloud
Mix aus Private und Public Cloud
Multi-Cloud
Nutzung mehrer Public Clouds. Minimiert das Risiko beim Aufall eines Anbieters.

Semantische Netze

Syntax

Die Syntax gibt die Regeln vor wie ein Programm geschrieben werden muss. In etwa die Grammatik der Programmiersprache.

Semantik

Bei der Semantik geht es um den Inhalt, also die Bedeutung des Codes. Code der eine falsche Syntax hat, hat nie eine Semantik.

Domäne

Die Domäne gibt den Bereich an in dem etwas läuft. Etwa den Wissensbereich. Dies kann etwa ein Fachbereich sein wenn man in einem Gebiet arbeitet das man nicht kennt fehlt einem das Domänen Know-How.

Taxonomie und Ontologie

Taxonomie bedeutet etwas in Klassen einzuordnen und Ontologie bedeutet die Beziehungen zwischen den Klassen abzubilden.

Agent

Ein Beispiel für einen Agent ist etwa der Web-Crawler von Google. Ein Agent ist in der Regel autonom (arbeitet selbständig), kognitiv (kann sich selber verbessern), adaptiv (passt sich seiner Umgebung an).

Beispiel Bild

Übung

  1. Inwieweit ist die Idee des Semantischen Webs bereits heute Realität?

    Sehr minimal vorhanden. Meist handelt es sich um geschlossene Systeme die nicht gerne nach aussen komunizieren.

  2. Kann die Idee des Semantischen Webs mit den heutigen Technologien Realität werden?

    Ja sollte mit entsprechenden Standards möglich sein.

  3. Sehen Sie Nachteile oder Gefahren in einem Semantischen Web?

    Ja die Verbreitung von falsch Informationen können ein grosses Problem sein wenn sie nicht entsprechend verifiziert werden können.

Standards. Semantisches Web

  1. Web Stack

    Es gibt zwei Kategorieren von Technologien. Die einen wurden standardisiert und sind akzeptiert. Die anderen sind grössenteils noch unklar.

  2. RDF

    • RDF kann dazu verwendet werden Beziehungen abzubilden und Metadaten über ein Objekt zu speichern oder zu versenden.
    • Es werden Metadaten über Ressourcen beschrieben
    • Basiert auf XML
    • Soll von Computern gelesen werden
    • Macht logische Aussaugen über Ressourcen und setzt sie in Beziehung zueinander.
    • Wie bei XML gibt es ein Schema (RDFS) zum definieren des RDF. Beschreibt Ressourcen mit Klassen, Properties und Werten. Gibt die mögliche Hierarchie an.
    • Jede Aussage besteht aus einen 3-Tupel (Subjekt="Apple", Prädikat="entwickelt", Objekt="Computer")

SEO

On- und Offpage

Onpage Sind alle technische Verbesserungen der Website. Valider Code, H1-H3 Titel, SSL, Sitemap

Offpage Offpage sind Optimierungen welche nicht auf der eigenen Seite passieren. Etwa Backlinks auf die Seite. Social Signal (Facebook, Google+)

Glossary

<>
Two Factor Authentication
<>
Asynchronous JavaScript And XMLHttpRequest
<>
Application Programming Interface
<>
Business to Business
<>
Business to Consumer
<>
Business as a Service
<>
Browser Object Modell
<>
Consumer to Consumer
<>
Communication as a Service
<>
Content Management System
<>
Cross Origing Resource Sharing
<>
Cross Site Request Forgery
<>
Document Object Modell
<>
Document Type Definition
<>
Hyper Text Markup Language
<>
Hyper Text Transfer Protocol
<>
Infrastructur as a Service
<>
Internationalized Resource Identifier
<>
JavaScript Object Notation
<>
JSON with Padding
<>
Plattform as a Service
<>
PHP Hypertext Preprocessor
<>
Resource Description Framework
<>
Representational State Transfer
<>
Rich Internet Application
<>
Remote Procedure Call
<>
Software as a Service
<>
Search Engine Advertising
<>
Search Engine Marketing
<>
Search Engine Optimisation
<>
Service Oriented Architecture
<>
Same Origin Policy
<>
Simple Object Access Protocol
<>
Secure Socket Layer
<>
Single Sign On
<>
Stateless bedeutet das ein Aufruf einer Website sich immer so verhält als wäre es der erste Aufruf. Dies ist etwa auf einer simplen HTML Page ohne Cookies der Fall.
<>
Transport Layer Security
<>
Uniform Resource Identifier
<>
Uniform Resource Locator
<>
Uniform Resource Name
<>
Web Service Description Language
<>
Everything as a Service
<>
XML Remote Procedure Call
<>
eXtensible Markup Language
<>
XML Path Language
<>
XML Schema Definition
<>
Extensible Stylesheet Language
<>
Cross Site Scripting