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

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

*Asynchrone Interrupts*

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

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

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

Variabeln Partitionen und Swapping

Virtuellem Speicher und Paging

Mapping und Paging

Mapping

Paging

Pagetable

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

Paginalgorithmus

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

Not Recently Used

Firt In First Out

Ziemlich doofe Idee

Clock

Least Recently Used

Working Set

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:

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

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

GPT

MBR

UEFI

BIOS

Arten

FAT32

NTFS

REFS

BTRFS

HFS+

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

NEXT Kommunikationsarten

NEXT CPU - IO Device Kommunikation

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

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

Nachteile

Probleme

Heterogenität

Probleme die auftreten da die Systeme verschieden zu einander sind:

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)

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:

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:

Nachteile:

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:

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.

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

*Nachteile*

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

Eine Datenbank kann maximal 2 der Eigenschaften unterstützen.

BASE

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

Kosten

Typische Probleme

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.

Breitband

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

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:

2 Hauptarten:

Switch

Wichtige Punkte beim Kauf eines Switchs:

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

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:

Bedrohungen im Internet

Risiken im Internet

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

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

*Ablauf*

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

*OOD*

*OOP*

Leistungsflussdiagramm

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

Bewertung

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

Use Case Diagramm

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

Beispiel

Aktivitäts Diagramm

Paketdiagramm

Verteilungsdiagramm

Timingdiagramm

Wissensmanagement

Wissen Individuell Kollektiv
Stillschweigende Wissen Werte Verhaltensregeln
  Einstellung  
  Erfahrugen  
Explizites Wissen Dokumentierbares Fachwissen Richtlinien
  Statistisches Wissen Prozessdefinitionen
    Verfahren

Wissensoperationen

KPI und Stakeholder

Risikoanalyse

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.

Zusammenhänge

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

Auswirkungen

Erhöhen

*Senken*

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*

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

Wissensverarbeitung

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

Gewaltentrennung

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

Kaufverträge

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

Verletzungen des Käufers

Verletzungen des Verkäufers

Mangelhafte Lieferung

Der Käufer muss:

Mögliche Lösungen:

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:

Auftragsvertrag

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

Der Auftrag gilt als beendet wenn:

Besonderheiten:

Sicherheiten

Realsicherheiten

Personalsicherheit

Es haftet das Vermögen einer Person.

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:

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

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.

Diagramme

Strukurierdiagramme

Verhaltensdiagramme

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

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

*Nachteil*

TPT

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

Vorteile

*Nachteil*

TPC

Jeder Daten Typ wird komplett abgebildet. Vorteile

*Nachteile*

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

*Nachteile*

Grundsätze

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

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

WCF

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:

(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

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

Nachteile

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

Hello World

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

Variabeln

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

<?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:

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:

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:

Wohlgeformt und Valide

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

Vorteile

Nachteile

XML basierte Formate

Einsatzgebiete

Alternativen

XML Aufbau

Prolog

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

Body

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

*XSD*

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

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

Einsatzgebiete

Vor- und Nachteile

Vorteile

*Nachteile*

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

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

Architektur

statische Seiten

Vorteile

*Nachteile*

dynamische Seiten

Vorteile

*Nachteile*

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.

CMS

Vorteile

*Nachteile*

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

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:

Verhaltensmuster

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

Beispiele:

Modell View Control

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