Was ist ein Algorithmus?

In unserem täglichen Leben benutzen wir immer wieder Algorithmen. Aber wenn wir erklären sollen, was ein Algorithmus ist, dann wird es schwierig.

Ein Algorithmus ist eine Anleitung, mit bestimmten Eingabedaten bestimmte Ausgabedaten zu produzieren und auszugeben. Mit anderen Worten:

Es ist eine Handlungsvorschrift, um ein Problem schrittweise zu lösen

Anforderung an Algorithmen in der Programmierung

  • Der Algorithmus muss vollständig beschreibbar sein
  • Das Rechenverfahren muss aus einzelnen Arbeitsschritten bestehen, die zur Lösung des Problems führen
  • Jeder Schritt davon muss zu einem eindeutigen Ergebnis führen
  • Bei gleichen Eingaben erhält man immer das gleiche Ergebnis
  • Das Verfahren muss zu einem Ergebnis führen
  • Der Algorithmus muss universell und auf alle Daten anwendbar sein

Wie wird ein Algorithmus notiert oder aufgeschrieben?

Insgesamt kann dieser in einer Sprache wie zum Beispiel in Deutsch aufgeschrieben werden. Allerdings kann ein Computer den Algorithmus im Regelfall nicht verstehen.

Wie kann ein Computer mit Algorithmen arbeiten?

Damit der Computer den Algorithmus versteht, werden Programmiersprachen eingesetzt. Dabei wird zwischen strukturierter und objektorientierter Programmierung unterschieden. Die meisten Programmiersprachen bieten ähnliche Möglichkeiten die Lösung einer Problemstellung zu beschreiben oder wie der Programmierer sagt, zu implementieren.

Wie kann ein Algorithmus dokumentiert werden?

Dazu kann die Unified Modeling Language UML eingesetzt werden. Hier können Algorithmen grafisch dargestellt werden. Dies stellt eine praktische Ergänzung zur textuellen Beschreibung dar.

 

XOR oder Exklusiv-Oder Logik

Die XOR Logik wird ebenfalls häufig eingesetzt. Logik kennt zwei Zustände: Wahr (true) und Falsch (false). Für true wird auch die 1 verwendet und für false auch die 0.

XOR Logikgatter

Der Schaltplan zeigt die Logik mit den hier notwendigen Doppelschaltern.

Exklusiv-Oder Schaltung

Schalter A Schalter B Lampe Q
0 0 0
0 1 1
1 0 1
1 1 0

Wenn beide Schalter eingeschaltet sind oder beide Schalter ausgeschaltet sind, dan ist die Lampe Q aus. Wenn ein Schalter betätigt wird und der andere Schalter nicht, dann leuchtet die Lampe Q. Die Logikformel lautet:

Q = A B

 

 

NOT Logik, auch Inverter genannt

Eine Verneinung kommt im Leben häufig vor und wir denken daher beim Einsatz kaum darüber nach. Dieses Element gibt es auch in der Logik und nennt sich NOT Logik oder Inverter.

Bei Logik gibt es zwei Zustände Wahr und Nicht-Wahr. Wahr kann auch true, 1 oder Ein sein und Nicht-Wahr kann false, 0 oder Aus sein. Ein Inverter dreht die Logik Zustände. So wird aus true der Zustand false. Bei false wird das Ausgangssignal true.

NOT Logikgatter

Der Schaltplan ist hier nur mit einem Taster ausgestattet.

NOT Logikgatter

Schalter A als Taster Lampe Q
nicht gedrückt = 0 Leuchtet = 1
gedrückt = 1 Leuchtet nicht = 0

Das Signal am Ausgang Q ist immer entgegengesetzt dem Signal am Eingang A.

Q = ¬A

OR Logik

Logische Verknüpfungen werden unterbewußt von jedem täglich eingesetzt. Anwendungsentwickler und Systemintegratoren brauchen diese Logik bei ihrer täglichen Arbeit.

Logik kennt zwei Zustände: Wahr (true) und Falsch (false). Für true wird auch die 1 verwendet und für false auch die 0.

OR Logikgatter

Der Schaltplan zeigt die Funktionsweise dieser Logik auf.

Oder Schaltung

Schalter A Schalter B Lampe Q
0 0 0
0 1 1
1 0 1
1 1 1

Wenn Schalter A oder Schalter B oder wenn beide Schalter geschlossen sind, dann leuchtet die Lampe Q. Die Logikformel lautet

Q = A ∨ B

AND Logik

Logische Verknüpfungen können unterschiedlich eingesetzt werden. Da gibt es die täglichen Arbeiten, bei denen Logik eine wichtige Rolle spielt. Anwendungsentwickler, die Programmlogiken erstellen. Systemintegratoren, die Netzwerke und Datensicherheit herstellen und Systemelektroniker, die bei Fehlern den Ursachen auf den Grund gehen.

Daher ist es für verschiedene Berufsgruppen interessant, die Hintergründe von Logik und deren technische Standardisierung zu kennen.

Bei Logik gibt es zwei Zustände Wahr und Nicht-Wahr. Wahr kann auch true, 1 oder Ein sein und Nicht-Wahr kann false, 0 oder Aus sein.

AND Logikgatter

Am einfachsten ist die AND Logik mit diesem Schaltplan zu verstehen.

AND Schaltung

Schalter A Schalter B Lampe Q
0 0 0
0 1 0
1 0 0
1 1 1

Wenn Schalter A und Schalter B geschlossen sind, dann leuchtet die Lampe Q. So lautet die Logikformel

Q = A ∧ B

Ist Kodierung gleich Codierung?

Computer arbeiten Binär, also mit zwei Zuständen. Aber Computer sollen in der Lage sein, jegliche Form von Daten verarbeiten zu können. Dazu wird Kodierung eingesetzt. Dadurch lassen sich komplexere Informationen wie Texte, Gleitkommazahlen, Bilder und Videodaten auf dem Computer verarbeiten.

Binäre Darstellung von ganzen Zahlen

Damit die verschiedenen Zahlensysteme unterschieden werden können, werden nachfolgend Kennzeichen eingesetzt.

Zahlensystem Suffix Kennzeichen Beispiel Präfix Kennzeichen Beispiel 
Dezimal d 68 d 0d68
Binär b 1011 b 0b 0b1011
Oktal o 34 o 0o 0o34
Hexadezimal h 2F h 0x 0x2F

Ein Byte besteht aus 8 Bit und kann daher einen Wertebereich von 0 bis 255 darstellen.

Dezimal Binärzahl
Beispiel 27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1
9 0 0 0 0 1 0 0 1
100 0 1 1 0 0 1 0 0

Kodierung von Zeichen mit dem ASCII Code

Computer können durch Kodierung Zeichen einfach verarbeiten. Häufig wird dazu der ASCII Code verwendet. Der ASCII Code entwickelte sich aus dem Morse Code und der Fernschreiber Technologie. Das American Standard Code for Information Interchange standardisierte einen 7-Bit Zeichencode, der später auf 8 Bit erweitert wurde. „Ist Kodierung gleich Codierung?“ weiterlesen

Firewall Übersicht – Schutz und Sicherheit in Netzen

Eine Firewall ist eine Sicherungsmaßnahme, um Netze zu schützen oder abzusichern. Ähnliches wurde bereits in der Frühzeit und im  Mittelalter eingesetzt, um Siedlungen und Städte vor Angriffen von Außen zu schützen. Eine Brandmauer und Tore mit Wächtern schützten die Bewohner vor Überfällen und Raubzügen.

Regeln und Policies schützen die Ports

Ähnliches gibt es auch in der IT Welt mit der Anbindung von firmeninternen Netzen (Intranet) an das Internet. Die Tore der Firewall heißen Ports und es gibt 65536 solcher Zugangsmöglichkeiten. Meist hat jeder Port eine spezifische Aufgabe. So wird über Port 80 der unverschlüsselte Transport der Webseiten mit dem http Protokoll geleitet. Verschlüsselte Webseiten benutzen statt dessen den Port 443. Durch klar definierte Regeln, die auch Policies genannt werden,  wird der Zugang oder Ausgang der Ports festgelegt. Daher ist es wichtig, dass die Regeln oder Policies immer auf dem neuesten Stand sind.

Aber Firewalls sind nur ein Teil eines Sicherheitssystems, mit denen Netze geschützt werden.  Daher sind für einen umfassenden Schutz weitere Sicherheitsmaßnahmen notwendig.

Hardware oder Software Firewall

Es gibt bei Firewalls verschiedene Lösungsansätze. Grundsätzlich wird zwischen Hardware Firewalls und Software Firewalls unterschieden. Die Grenzen sind aber hier fließend.

Software Firewall

Die meisten Betriebssysteme haben bereits eine Firewall eingebaut. Im Regelfall handelt es sich dabei um Software Lösungen. Diese sind leichter zu warten und zu aktualisieren.

Hardware Firewall

Hardware Firewalls sind im Regelfall von dem Betriebssystemen der Computer abgekoppelt. Dort kann eine ganz andere Systemumgebung  mit anderen Prozessoren und Hardware vorhanden sein. Dies ist für Hacker schwieriger anzugreifen.

Firewall Typen und ihre Beschreibung

In weiteren Artikel werde ich die verschiedenen Firewall Typen beschreiben:

XML, die erweiterbare Auszeichnungssprache

XML oder ausgeschrieben Extended Markup Language ist eine Metasprache mit der Daten strukturiert beschrieben werden können. XML hat sich aus der Ende der 1960-er Jahre erfundenen Metasprache SGML weiter entwickelt. Mit XML wird die Struktur, der Inhalt und die Darstellung der Daten getrennt. Dadurch lassen sich die 3 Teilbereiche unabhängig voneinander verarbeiten. Auch die millionfach eingesetzte Auszeichnungssprache HTML basiert auf XML und SGML.

Bei der KI dient diese Sprache zur Kommunikation zwischen Anwendungen und Maschinen. So spielt XML eine immer wichtigere Rolle bei der Maschine zu Maschine Kommunikation und wird zudem bei Konfigurationen von IOT Geräten eingesetzt.

Definition von Dokumentklassen

Bevor Daten übertragen werden können, erfolgt die Deklaration der XML-Elemente. Dazu gibt es zwei Möglichkeiten zur Erstellung von Dokumentklassen und Elementen.

  1. Mit DTD, der Document Type Definition lassen sich die Dokumentklassen und Elemente definieren.
  2. Die zweite und modernere Methode ist das XML Schema.

Struktur der XML Dokumente

Die Dokumenttyp Definition

Beispiel bestellung.dtd

Oder alternativ das XML Schema

Beispiel bestellung.xsd

Das XML Dokument mit den strukturierten Daten

Beispiel bestellung.xml

Das XML Dokument nutzt im Dokumentenkopf entweder das XML Schema oder den DTD. Die Elemente von XML werden auch Tags oder Nodes genannt.

Vorteile von XML

  • Als Konfigurationsdateien bleiben die Daten für den Menschen lesbar
  • Über Schnittstellen und Webservices wie SOAP  und REST lassen sich Daten systemübergreifend austauschen
  • Die Dateien lassen sich mit jedem Texteditor öffnen und bearbeiten
  • Mit Hilfe von CSS oder XSLT lassen sich die Daten transformieren und so unterschiedlich nutzen.

 

 

Die ABC Analyse in 4 Schritten durchführen

Die ABC-Analyse wird unter Anderem zur Planung, Kostenminimierung und Entscheidungsfindung eingesetzt wird. Die ABC Analyse wurde H. Ford Dickie erstmals beschrieben. Die Basis dafür bilden das Pareto Prinzip (die 80/20 Regel) und die Lorenz Kurve. Eingesetzt wird die ABC Analyse bei betriebswirtschaftlichen Analysen, Kosten, Lagerbeständen, Umsätzen, aber auch in der Personalwirtschaft und der Fertigung eingesetzt.

 

Daten der ABC-Analyse

Typ Umsatz in Mio. €
 Reifen  26,1
 Felgen  19,8
 Öl  35,6
 Zündkerzen  6,4
 Reinigungsmittel  16,9
 Lampen  2,9
 Autoradio  12,3
 KFZ-Ersatzteile  44,1
 Scheibenwischer  2,2
Gesamtsumme 166,3

 

Schritt 1 der ABC-Analyse

Ergänzen Sie die Tabelle um die Spalten Anteil in %Kumulierte % und Klasse.
Dann sortieren Sie absteigend den Umsatz in Mio. €.

Typ Umsatz in Mio. €
Anteil in % Kumulierte % Klasse
KFZ-Ersatzteile 44,1
Öl 35,6
Reifen 26,1
Felgen 19,8
Reinigungsmittel 16,9
Autoradio 12,3
Zündkerzen 6,4
Lampen 2,9
Scheibenwischer 2,2
Gesamtsumme 166,3

 

Schritt 2 der ABC Analyse

Als nächstes wird in der mittleren Spalte der prozentuale Anteil ausgerechnet.

Die Formel lautet: Anteil in % = Umsatz des Produkts/Gesamtsumme * 100

Typ Umsatz in Mio. €
Anteil in % Kumulierte % Klasse
KFZ-Ersatzteile 44,1 26,52
Öl 35,6 21,41
Reifen 26,1 15,69
Felgen 19,8 11,91
Reinigungsmittel 16,9 10,16
Autoradio 12,3 7,40
Zündkerzen 6,4 3,85
Lampen 2,9 1,74
Scheibenwischer 2,2 1,32
Gesamtsumme 166,3

 

 Schritt 3 der ABC Analyse

Im weiteren Schritt werden die Anteile in % kumuliert (summiert) und in die Spalte Kumulierte % eingetragen.

Beispiel: Öl (kumulierte %) = 26,52 + 21,41 = 47,93; Reifen (kumulierte %) = 47,93 + 15,69 = 63,62

Typ Umsatz in Mio. €
Anteil in % Kumulierte % Klasse
KFZ-Ersatzteile 44,1 26,52 26,52
Öl 35,6 21,41 47,93
Reifen 26,1 15,69 63,62
Felgen 19,8 11,91 75,53
Reinigungsmittel 16,9 10,16 85,69
Autoradio 12,3 7,40 93,08
Zündkerzen 6,4 3,85 96,93
Lampen 2,9 1,74 98,68
Scheibenwischer 2,2 1,32 100
Gesamtsumme 166,3

 

Schritt 4 der ABC Analyse

Im letzten Schritt werden die untersuchten Daten in drei Klassen eingeteilt. Die A Klasse bei meist 75% – 80%. Die B Klasse bei 15% – 20% und die C Klasse bei 5%. Die Summe der drei Klassen beträgt immer 100%.

Typ Umsatz in Mio. €
Anteil in % Kumulierte % Klasse
KFZ-Ersatzteile 44,1 26,52 26,52  A
Öl 35,6 21,41 47,93  A
Reifen 26,1 15,69 63,62  A
Felgen 19,8 11,91 75,53  B
Reinigungsmittel 16,9 10,16 85,69  B
Autoradio 12,3 7,40 93,08  B
Zündkerzen 6,4 3,85 96,93  C
Lampen 2,9 1,74 98,68  C
Scheibenwischer 2,2 1,32 100  C
Gesamtsumme 166,3

 

Fazit:

Mit Hilfe der ABC Analyse lassen sich

  • Schwerpunkte ermitteln
  • Prioritäten festlegen
  • Unwesentliches von Wesentlichen unterscheiden

Diese häufig eingesetzte Methode sollte in keinem “Werkzeugkasten” fehlen.

Scrum – Agile Web- und Software Entwicklung

Scrum wurde in einem Projekt im Zuge der Zusammenarbeit von Ikurjio Nonaka und Jeff Sutherland entwickelt. Mit Scrum versucht man Anpassung, Transparenz und Kontrolle in der Software Entwicklung weitestgehend zu vereinfachen. Dadurch wird eine kostengünstige, schnelle  und hochwertige Entwicklung von Software Produkten und -Dienstleistungen ermöglicht. Scrum basiert auf Erfahrung und wird iterativ erweitert. Scrum benutzt Rollen mit unterschiedlichen Aufgaben und Verantwortungen.

Rollen bei Scrum

Das Entwickler Team liefert die vom Product Owner gewünschten Produktteile oder Dienstleistungen in der gewünschten Reihenfolge. Zudem sind die Entwickler für die Qualität des Produkts verantwortlich. Dazu werden Qualitätsstandards vereinbart.

Der Scrum Master kümmert sich als Führungskraft um das Entwickler Team, gehört dem Team aber nicht an. Er kümmert sich um die Organisation und hilft Störungen, Konflikte und Hindernisse zu beseitigen.

In der Rolle als Product Owner ist man für die Konzeption, Festlegung der Produkteigenschaften und die Priorisierung verantwortlich. Er steuert damit den wirtschaftlichen Nutzen für das Unternehmen, ist aber kein Vertreter des Kunden.

Der Kunde oder Auftraggeber wird als Customer dem Product Owner aufzeigen, was das Produkt für Eigenschaften haben soll. Zudem wird der Customer ab einer frühen Phase periodisch das zu entwickelnde Produkt prüfen und Feedback an den Product Owner geben.

Das Management hat bei der Bereitstellung der Ressourcen und dem Ausräumen von Hemmnissen zu unterstützen. Dadurch werden die Rahmenbedingungen stabilisiert.

Die User sind die zukünftigen Nutzer des Produkts oder der Dienstleistung. Daher sind Sie in der Lage die Funktionalität des Produkts zu beurteilen. Zudem können Sie das Produkt ab einer frühen Phase regelmäßig, zum Beispiel nach einem Entwicklungszyklus, ausprobieren und Ihre Ergebnisse und Veränderungsvorschläge mitteilen. diese kann der Product Owner aufgreifen und zur weiteren Entwicklung einfließen lassen.

Dazu wurde im Jahre 2001 das Agile Manifest für Scrum entwickelt, das ich hier angepasst habe.

Agiles Manifest

  • Eine beständige Zusammenarbeit mit dem Kunden als Partner steht über den Verträgen
  • Kommunikation, Mut und die Offenheit für Änderungen gilt mehr als das genaue Befolgen eines festgelegten Plans
  • Menschen und Zusammenarbeit gelten mehr als Werkzeuge und Prozesse, ersetzen diese aber nicht
  • Funktionierende Programme sind höher einzustufen als ausführliche Dokumentation.

Fazit:

Lean Production in japanischen Unternehmen verfolgt ähnliche Ansätze wie Scrum und nutzt für eine bessere Wertschöpfung unter anderem starkes Teamworking und erfolgreiches Wissensmanagement. Hier sehe ich auch den wichtigen Unterschied. Es wird auch bei Scrum Dokumentation gebraucht, wenn diese nicht “Just in Time” zur Verfügung steht, dann verliert der Scrum Prozess an Effektivität!

Alternativ gibt es die Vorgehensmodelle wie das Wasserfall ModellV-Modell, Kanban und Scrum.

Die Entwicklung von HTML 5 bei WhatWG und W3C

Vor längerer Zeit haben sich zwei Richtungen bei der Weiterentwicklung von HTML5 ergeben.

Zügige Weiterentwicklung  von HTML durch die WhatWG

Die WhatWG wurde nach einem Workshop des W3C gegründet. Mitarbeiter dvon Apple, Google, Microsoft, Mozilla und Opera haben sich zu einer fortlaufenden Weiterentwicklung von HTML ausgesprochen.  Die Entwickler der WhatWG sprechen vom HTML – Living Standard. Ohne diese Gruppe wäre die Weiterentwicklung von HTML auf Grund von mangelndem Interesse des W3C nur langsam voran getrieben worden.

Dokumentation von HTML – Living Standard

HTML5

Späte Erkenntnis des W3C – aber kein Entgegenkommen

Die Anteil der Wichtigkeit von HTML für zukünftige Informations- und Kommunikationsmittel wurde von W3C unterschätzt. Nachdem sich auf Grund von der Freigabe von HTML5 wesentliche Weiterentwicklungen wie Frameworks, modernisierte Browser ergeben haben, gibt es auch hier Neuerungen. Allerdings setzt das W3C auf Versionierung von HTML 5. Aktuell ist die Version HTML 5.2 als Empfehlung erschienen.

Fazit

Nach wie vor liegt die Entwicklung von HTML bei der aktiven WhatWG. Das W3C übernimmt meist wichtige Entwicklungen der WhatWG in ihre Standards. Diese werden weiterhin nicht so häufig aktualisiert wie der Living Standard.