Der Blackbox Test und der Whitebox Test

Der Blackbox-Test und der Whitebox-Test dienen dazu, die Qualität und Zuverlässigkeit von Software- und Systemlösungen sicherzustellen. Die Tests decken verschiedene Aspekte wie Funktionalität, Benutzerfreundlichkeit, Zuverlässigkeit und Sicherheit ab. Sie werden von Anwendungsentwicklern, Systemintegratoren und weiteren Berufen in der IT Sparte eingesetzt.

Der Blackbox Test

Der Blackbox-Test wird auch manchmal als Black-Box-Test beschrieben und ist ein Testverfahren, bei dem die interne Struktur oder das Design des zu testenden Systems nicht bekannt ist oder nicht berücksichtigt wird. Der Tester betrachtet das System als eine „Blackbox“, bei der er nur die Eingaben (Input) und die Ausgaben (Output) kennt. Der Fokus liegt auf der Überprüfung der funktionalen Anforderungen des Systems, wie z. B. ob es die erwarteten Ergebnisse liefert und ob es korrekt mit verschiedenen Eingabeparametern umgeht. Der Tester kann verschiedene Techniken wie Äquivalenzklassenbildung, Grenzwertanalyse, Zustandsübergangstests und zufällige Tests verwenden, um die Wirksamkeit des Systems zu überprüfen. Der Blackbox-Test ermöglicht es, das System aus Sicht des Endbenutzers zu bewerten und kann unabhängig von der internen Implementierung des Systems durchgeführt werden.

Vorteile des Blackbox-Tests

  • Der Blackbox-Test stellt sicher, dass das System den Anforderungen und Erwartungen der Benutzer entspricht.
  • Der Blackbox-Test kann unabhängig von der internen Implementierung durchgeführt werden.
  • Durch den Blackbox-Test können Muster von Fehlern und unerwartetem Verhalten erkannt werden.

Nachteile des Blackbox-Tests

  • Der Blackbox-Test kann bestimmte interne Codepfade oder -bereiche nicht ausreichend testen.
  • Die Ursache von Fehlern kann aufgrund fehlenden Zugangs zur internen Implementierung schwierig zu identifizieren sein.
  • Der Blackbox-Test bezieht sich nicht auf die interne Effizienz oder Optimierung des Codes.

Der Whitebox Test

Der Whitebox-Test wird manchmal als White-Box-Test beschrieben und ist ein Testverfahren, bei dem der Tester Einblick in die interne Struktur, sowie in das Design des zu testenden Systems hat. Der Tester analysiert den Quellcode, die Algorithmen, die Datenstrukturen und andere technische Aspekte des Systems, um Tests zu erstellen, die auf diesen Informationen basieren. Der Whitebox-Test konzentriert sich sowohl auf die Überprüfung der funktionalen Anforderungen als auch auf die strukturelle Abdeckung des Codes. Es werden Techniken wie Pfadabdeckung, Anweisungsabdeckung, Zweigabdeckung und Bedingungsabdeckung verwendet, um sicherzustellen, dass alle möglichen Pfade und Szenarien im Code getestet werden. Der Whitebox-Test wird oft von Entwicklern durchgeführt, um sicherzustellen, dass der Code richtig implementiert ist und potenzielle Fehler und Schwachstellen identifiziert werden.

Vorteile des Whitebox-Tests

  • Der Whitebox-Test ermöglicht eine detaillierte Überprüfung des Codes und identifiziert potenzielle Fehler auf algorithmischer oder struktureller Ebene.
  • Durch den direkten Zugriff auf den Quellcode kann der Whitebox-Test eine umfassende Abdeckung der Code-Pfade und Szenarien erreichen.
  • Der Whitebox-Test ermöglicht es, ineffiziente Codebereiche zu erkennen und zu optimieren, um die Gesamtleistung des Systems zu verbessern.

Nachteile des Whitebox-Tests

  • Der Whitebox-Test erfordert Kenntnisse über die interne Implementierung, was zu Einschränkungen führen kann, wenn der Quellcode nicht verfügbar oder komplex ist.
  • Der Whitebox-Test fokussiert sich stark auf die interne Logik und kann die Perspektive eines Endbenutzers oder externe Schnittstellen möglicherweise nicht vollständig berücksichtigen.
  • Der Whitebox-Test erfordert tiefgreifende Kenntnisse der internen Struktur und erfordert mehr Zeit und Ressourcen im Vergleich zum Blackbox-Test.

Fazit

Der Blackbox-Test ermöglicht eine unabhängige Bewertung der funktionalen Anforderungen aus Benutzersicht, während der Whitebox-Test eine detaillierte Überprüfung der internen Implementierung und eine umfassendere Testabdeckung bietet. Beide Testarten sind wichtige Bestandteile der Qualitätssicherung.

 

 

Die Projektphasen bei PRINCE2 Projektmanagement

PRINCE2 wurde vom britischen Office of Government Commerce (OGC) entwickelt, um Projektmanagement-Methoden zu standardisieren und zu verbessern. Inzwischen ist PRINCE2 weltweit anerkannt und wird von vielen Organisationen angewendet. Seit 2013 wird die Weiterentwicklung von PRINCE2 vom AXELOS-Verlag durchgeführt, der auch andere Best-Practice-Methoden wie ITIL und RESILIA herausgibt. AXELOS arbeitet eng mit Experten und Praktikern aus der Projektmanagement-Community zusammen, um PRINCE2 kontinuierlich an die Bedürfnisse der Branche anzupassen und zu verbessern. Dazu gibt es Zertifizierungen.

Die Phasen von PRINCE2-Projekten lassen sich auch wie folgt beschreiben:

Vor dem Projekt

In dieser Phase wird eine Idee oder ein Bedarf für ein Projekt identifiziert und eine Vorstudie durchgeführt, um zu klären, ob das Projekt durchgeführt werden soll oder nicht. Es werden die Projektziele definiert, der Umfang abgegrenzt und erste Annahmen und Risiken erfasst. Auch werden erste Schritte unternommen, um die Finanzierung und die Ressourcen für das Projekt sicherzustellen.

Initiierungsphase

In dieser Phase werden die Planung und Organisation des Projekts detailliert ausgearbeitet. Der Projektleiter wird ernannt und die Projektorganisation wird aufgestellt. Es wird ein Projektplan erstellt, der die Ziele, die Meilensteine, die Abhängigkeiten, die Risiken, die Qualitätssicherungsmaßnahmen und den Business Case enthält. Ebenfalls wird ein Projektteam zusammengestellt und es werden Ressourcen und Budgets zugewiesen.

Lenkungs- und Steuerungsphase

In dieser Phase wird das Projektmanagement durchgeführt. Der Projektfortschritt wird überwacht, Abweichungen werden erkannt und korrigiert. Die Qualität des Projektergebnisses wird sichergestellt, indem die Qualitätssicherungsmaßnahmen umgesetzt und kontrolliert werden. Ebenfalls werden Risiken und Änderungen im Projektumfeld erkannt und behandelt. Der Projektstatus wird laufend dokumentiert und an die Stakeholder kommuniziert.

Produktlieferungsphase

In dieser Phase werden die Produkte, die im Projekt erstellt wurden, geliefert und getestet. Dabei wird überprüft, ob die Produkte den Anforderungen entsprechen und die Qualitätsstandards erfüllen. Die Produkte werden dokumentiert und an den Kunden oder Nutzer übergeben.

Jede Phase endet mit einer Bewertung, ob das Projekt im Sinne der Zielsetzung erfolgreich fortgesetzt werden kann oder ob es angepasst oder gar abgebrochen werden muss. Diese Überprüfungen und Bewertungen dienen dazu, die Planung und Steuerung des Projekts zu optimieren und somit einen effektiven und effizienten Projektablauf zu gewährleisten.

Das Ausnahmeprinzip

Ein weiterer wichtiger Punkt ist das Ausnahmeprinzip von PRINCE2. Es besagt, dass der Projektleiter befugt ist, Entscheidungen zu treffen und Handlungen durchzuführen, solange sie im Einklang mit dem Projektplan und den Projektzielen stehen. Nur bei Abweichungen oder Ausnahmen von diesem Plan muss der Projektleiter die höheren Managementebenen informieren und um Genehmigung bitten.

Fazit

PRINCE2 ist ein sehr ausgereifte und vielfältig einsetzbare Projektmanagementmethode. Sie wird in mehr als 150 Ländern der Erde eingesetzt. Es gibt die klassische Projektmanagement Variante PRINCE2 und die agile Variante PRINCE2 Agile.

Continuous Integration und Deployment – CI/CD

Softwareentwicklung geschieht vielfältig und CI/CD spielt bei Anwendungsentwicklern eine wichtige Rolle. Continuous Integration und Deployment (CI/CD) ist ein Prozess in der Softwareentwicklung. So werden Änderungen an einer Anwendung schnell und effizient in die Produktion zu überführt. Dies geschieht durch eine kontinuierliche Integration von Code-Änderungen und Tests, sowie eine automatisierte Bereitstellung von Software-Updates.

In der traditionellen Softwareentwicklung erfolgt die Integration von Code-Änderungen oft erst am Ende des Entwicklungsprozesses. Dies führt oft zu Problemen bei der Integration, da die einzelnen Komponenten der Anwendung nicht richtig miteinander funktionieren. Durch den Einsatz von CI/CD werden Code-Änderungen hingegen kontinuierlich und automatisiert in die Anwendung integriert und getestet.

Continuous Integration (CI)

Continuous Integration (CI) bezieht sich auf den Prozess der kontinuierlichen Integration von Code-Änderungen in ein zentrales Repository. Dabei werden alle Änderungen automatisch gebaut und getestet. So wird sichergestellt, dass sich die Änderungen problemlos in die bestehende Codebasis integrieren lassen. Dadurch können Probleme frühzeitig erkannt und behoben werden.

Continuous Deployment (CD)

Continuous Deployment (CD) geht noch einen Schritt weiter als CI. Es benutzt  Prozesse zur automatisierten Bereitstellung von Anwendungs-Updates. Dabei wird der Code automatisch auf die Produktionsumgebung übertragen und in Betrieb genommen, nachdem er erfolgreich getestet wurde. Dies ermöglicht eine schnelle und effiziente Bereitstellung von Software-Updates. Ausfallzeiten werden minimiert.

Durch den Einsatz von CI/CD können Entwickler die Qualität ihrer Anwendungen verbessern, die Entwicklungszeit verkürzen und die Auslieferung von Software-Updates beschleunigen. Dabei ist es wichtig, dass die Entwickler regelmäßig Änderungen am Code vornehmen und diese Änderungen automatisiert testen. Durch die kontinuierliche Integration und Bereitstellung von Code-Änderungen wird sichergestellt, dass die Anwendung zu jeder Zeit stabil und funktionsfähig bleibt.

Fazit

Zusammenfassend ist Continuous Integration und Deployment ein wichtiger Bestandteil der modernen Softwareentwicklung. Es ermöglicht eine schnelle, sowie effiziente Bereitstellung von Software-Updates. Es hilft Unternehmen, ihre Anwendungen schneller und mit höherer Qualität auf den Markt zu bringen.

 

Normalisierung bei relationalen Datenbanken

Für die Nutzung und Wartung eines relationalen Datenbanksystems (DBS) sind sauber strukturierte Daten von Vorteil.

Denn bei der Nutzung können Schwächen, also Anomalien auftreten, die es zu verhindern gilt. Das wären zum Beispiel

  • Die Einfügeanomalie tritt auf, wenn es aufgrund von fehlenden Attributwerten nicht möglich ist, neue Daten in die Tabelle einzufügen.
  • Die Änderungsanomalie tritt auf, wenn Änderungen an einem Attributwert in einer Zeile zu Inkonsistenzen in anderen Zeilen führen.
  • Die Löschungsanomalie tritt auf, wenn das Löschen von Daten in einer Tabelle versehentlich auch andere, relevante Daten löscht oder wenn das Löschen von Daten zu einer fehlenden Information führt.

Um die oben genannten Anomalien zu verhindern, wird der Normalisierungsprozess eingesetzt.

Normalisierung der 1. Normalform

Eine Relation ist in der 1. Normalform, wenn jeder Wert in jeder Spalte des Tabellenentwurfs atomar ist, d.h. keine mehrwertigen Attribute enthält. Es dürfen also keine Spalten mit mehreren Werten in einer Zeile vorhanden sein.

Normalisierung der 2. Normalform

Eine Relation ist in der 2. Normalform, wenn sie bereits in der 1. Normalform ist und kein Teil der Primärschlüssel-Funktionsabhängigkeit von einer Teilmenge der Attribute abhängt. Das bedeutet, dass jede Nichtschlüssel-Spalte von der gesamten Primärschlüssel abhängt, nicht von einem Teil davon.

Normalisierung der 3. Normalform

Eine Relation ist in der 3. Normalform, wenn sie bereits in der 2. Normalform ist und keine transitive Abhängigkeiten existieren. Das bedeutet, dass eine Nichtschlüsselspalte nicht von einer anderen Nichtschlüsselspalte abhängen kann, sondern nur von der Primärschlüsselspalte.

Die Normalformen sind wichtig, um Datenredundanz und -inkonsistenzen zu vermeiden und die Datenkonsistenz und -integrität sicherzustellen.

Beispiel zur Normalisierung

Angenommen, wir haben eine Tabelle „Studenten“ mit den folgenden Spalten:

  • Matrikelnummer (Primärschlüssel)
  • Name
  • Geburtsdatum
  • Studienfach
  • Modul1-Name
  • Modul1-Note
  • Modul2-Name
  • Modul2-Note
  • Modul3-Name
  • Modul3-Note

Diese Tabelle ist nicht in der 1. Normalform, da die Spalten „Modul1-Name“, „Modul1-Note“, „Modul2-Name“, „Modul2-Note“, „Modul3-Name“ und „Modul3-Note“ mehrwertige Attribute enthalten. Wir können die Tabelle in zwei separate Tabellen aufteilen: eine für die Studenteninformationen und eine für die Modulinformationen.

  • Tabelle „Studenten“ (Primärschlüssel: Matrikelnummer)
    • Matrikelnummer (Primärschlüssel)
    • Name
    • Geburtsdatum
    • Studienfach
  • Tabelle „Module“ (Primärschlüssel: Modul-ID, Fremdschlüssel: Matrikelnummer)
    • Modul-ID (Primärschlüssel)
    • Matrikelnummer (Fremdschlüssel)
    • Modul-Name
    • Modul-Note

Jetzt befindet sich die Tabelle „Studenten“ in der 1. Normalform, da alle Spalten atomar sind. Die Tabelle „Module“ ist in der 2. Normalform, da alle Nichtschlüsselspalten von der gesamten Primärschlüssel-Spalte „Modul-ID“ abhängig sind.

Die Tabelle „Module“ ist jedoch noch nicht in der 3. Normalform, da die Spalte „Modul-Name“ und „Modul-Note“ von der Teilmenge der Spalte „Modul-ID“ und „Matrikelnummer“ abhängen, anstatt von der gesamten Primärschlüsselspalte „Modul-ID“ abhängig zu sein. Wir können die Tabelle erneut aufteilen:

  • Tabelle „Module“ (Primärschlüssel: Modul-ID, Fremdschlüssel: Matrikelnummer)
    • Modul-ID (Primärschlüssel)
    • Modul-Name
  • Tabelle „Noten“ (Primärschlüssel: Modul-ID, Matrikelnummer)
    • Modul-ID (Primärschlüssel, Fremdschlüssel)
    • Matrikelnummer (Primärschlüssel, Fremdschlüssel)
    • Modul-Note

Jetzt hängen alle Nichtschlüsselspalten von der gesamten Primärschlüssel-Spalte „Modul-ID, Matrikelnummer“ ab, und die Tabelle „Module“ und „Noten“ befinden sich in der 3. Normalform.

 

 

Die Kardinalität bei dem ER Modell mit SQL

Bei der Entwicklung mit dem ER- Modell ist nicht ersichtlich, in welcher Beziehung die Entitäten stehen. Die (min, max)-Notation wird genutzt, um die Beziehungen zwischen Entitäten zu definieren. Die Notation gibt an, wie viele Instanzen einer Entität in Beziehung zu einer bestimmten Anzahl von Instanzen einer anderen Entität stehen können.

  • Die „min“ – Zahl gibt an, wie viele minimale Instanzen einer Entität in Beziehung zu einer anderen Entität stehen müssen.
  • Die „max“ – Zahl gibt an, wie viele maximale Instanzen einer Entität in Beziehung zu einer anderen Entität stehen können.

Die 1:1 Kardinalität bedeutet beispielsweise, dass es nur eine Instanz der Entität auf der einen Seite und eine Instanz der Entität auf der anderen Seite geben kann.

Die 0:1 Kardinalität bedeutet hingegen, dass es eine oder keine Instanz einer Entität auf der einen Seite geben kann, aber maximal eine Instanz auf der anderen Seite.

Die 1:n Kardinalität beschreibt eine Beziehung zwischen Entitäten, bei der eine Instanz einer Entität mit vielen Instanzen einer anderen Entität in Beziehung steht. Dies wird oft durch die Verwendung von Fremdschlüsseln realisiert, die auf den Primärschlüssel der anderen Entität verweisen.

Die n:m Kardinalität beschreibt eine Beziehung zwischen Entitäten, bei der viele Instanzen einer Entität mit vielen Instanzen einer anderen Entität in Beziehung stehen. Die Beziehung wird über eine Zuordnungstabelle (Zwischentabelle) realisiert, die eine Verbindung zwischen den beiden Entitäten herstellt.

Die Kardinalität der (min, max) – Notation ist ein wichtiger Aspekt bei der Datenmodellierung, da sie die Beziehungen zwischen den Entitäten genau beschreibt. Sie hilft bei der Identifizierung von Datenintegritätsproblemen, indem sie sicherstellt, dass die Daten in einer bestimmten Beziehung konsistent bleiben.

Es ist wichtig zu beachten, dass die (min, max) – Notation nicht immer ausreichend ist, um komplexe Beziehungen zwischen Entitäten zu beschreiben. In solchen Fällen können zusätzliche Regeln und Einschränkungen erforderlich sein, um sicherzustellen, dass die Daten konsistent und korrekt sind. Sie hilft bei der Identifizierung von Integritätsproblemen von Daten und stellt sicher, dass die Daten in einer bestimmten Beziehung konsistent bleiben.

 

Übersicht der Elemente beim ER Modell

Das ER-Modell (Entity-Relationship-Modell) ist eine Methode zur Modellierung von Datenbanken. Es besteht aus drei Grundkonzepten: Entitäten (Objekte), Beziehungen (Verbindungen zwischen Objekten) und Attributen (Eigenschaften von Objekten).

Das ER-Modell hilft bei der klaren und einheitlichen Darstellung von Datenbankstrukturen und unterstützt bei der Planung, Umsetzung und Wartung von Datenbanken.

Entität Eine Entität ist ein Ding oder Objekt der realen Welt.
Attribut Attribute sind Eigenschaften von Entitäten und besitzen einen Wert.
Primärschlüssel Attribute sind durch die Unterstreichung  als Primärschlüssel gekennzeichnet.
Beziehung Beziehungen zeigen die Kommunikation und Abhängigkeiten von Entitäten auf.
Ist-ein oder Is-a Die Ist-ein oder Is-a Beziehung entspricht einer Generalisierung oder Verallgemeinerung. Zum Beispiel ist ein Fahrzeug ein PKW oder ein Motorrad.
Teil-von oder Part-of Die Teil-von oder Part-of Beziehung entspricht einer Aggregation. Zum Beispiel besteht ein Smartphone aus einem Akku, einem Display …

Besonderheit bei der Ist-ein oder Is-a Beziehungen

Disjunkt

Wenn sich zwei Entitätsmengen in der Datenbank nicht überlappen, wird dies „disjunkt“bezeichnet. Das heißt, es gibt keine Entitäten, die gleichzeitig in beiden Entitätsmengen vorkommen.

Nicht Disjunkt

„Nicht disjunkt“ hingegen bedeutet, dass sich zwei Entitätsmengen in der Datenbank überlappen können. Das bedeutet, dass es Entitäten geben kann, die in beiden Entitätsmengen vorkommen können.

Total

Eine „totale“ Beteiligung bedeutet, dass jede Entität in einer Entitätsmenge an einer Beziehung teilnehmen muss. Mit anderen Worten, eine Entität in der Entitätsmenge kann nicht existieren, ohne an der Beziehung teilzunehmen. Es gibt also keine weiteren Teilmengen.

Partiell

Eine „partielle“ Beteiligung bedeutet hingegen, dass nicht alle Entitäten in einer Entitätsmenge an einer Beziehung teilnehmen müssen. Mit anderen Worten, eine Entität in der Entitätsmenge kann existieren, ohne an der Beziehung teilzunehmen. Es gibt hier weitere Teilmengen.

 

Hier ein Beispiel: Ein Fahrzeug ist ein PKW oder ein LKW oder ein Motorrad. Die Beziehung ist damit disjunkt und partiell.

 

Grundprinzipien der Objektorientierung

Die Objektorientierung ist ein Ansatz in der Informatik, der auf der Idee beruht, dass Software als eine Sammlung von Objekten betrachtet werden kann, die jeweils eigene Zustände und Verhaltensweisen haben. Diese Objekte können miteinander interagieren und dadurch komplexe Systeme bilden.

Das Ansatz der Objektorientierung basiert auf vier Grundprinzipien:

Abstraktion

Abstraktion bezieht sich darauf, dass Objekte in der Softwareentwicklung vereinfacht dargestellt werden können, um nur die relevanten Informationen und Funktionalitäten darzustellen.

Vererbung

Vererbung ermöglicht es, dass Objekte bestimmte Eigenschaften und Verhaltensweisen von anderen Objekten erben können, die in der Hierarchie über ihnen liegen.

Polymorphie

Polymorphie beschreibt die Möglichkeit, dass Objekte je nach Kontext unterschiedliche Formen annehmen können und auf verschiedene Arten verwendet werden können.

Kapselung

Kapselung bezieht sich auf die Idee, dass Objekte ihre internen Zustände und Verhaltensweisen vor externen Einflüssen schützen können. Dadurch können sie nur bestimmte Methoden zur Interaktion mit der Außenwelt freigeben.

Dazu gibt es weitere wichtige Konzepte:

Klassifikation

Die Klassifikation ist ein Prozess der Zuordnung von Objekten zu vordefinierten Klassen. Die basiert auf der Grundlage ihrer Eigenschaften und Merkmale. Es ist ein wichtiger Bestandteil bei Data Mining und Machine Learning, um Muster und Beziehungen in Daten zu erkennen und Vorhersagen zu treffen.

Aggregation

Aggregation bezieht sich auf die Zusammenfassung von Daten oder Objekten zu einer hierarisch höheren Ebene der Abstraktion. Dadurch wird die Analyse und Verarbeitung von komplexen Datenstrukturen auf einer vereinfachten Ebene ermöglicht.

Generalisierung

Generalisierung ist ein Prozess, bei dem eine allgemeine Klasse von Objekten definiert wird. Diese wird als Basisklasse oder Superklasse bezeichnet.  Von so einer Basisklasse können andere spezifischere Klassen von Objekten abgeleitet werden. Diese werden als ‚abgeleitete Klassen‘ oder Subklassen bezeichnet. Das ermöglicht die gemeinsame Verwendung von Attributen und Methoden in verschiedenen Klassen und fördert die Wiederverwendbarkeit von Code.

Assoziation

Assoziation beschreibt die Beziehung zwischen zwei oder mehr Objekten, die zusammenarbeiten, um eine bestimmte Aufgabe zu erfüllen. Dadurch wird die Modellierung komplexer Beziehungen zwischen Objekten ermöglicht und  dies trägt zur Flexibilität und Erweiterbarkeit von Software-Systemen bei.

Identifikation

Identifikation bezieht sich auf die eindeutige Zuweisung eines Namens oder einer Identität zu einem Objekt, um es von Anderen zu unterscheiden. Dies ermöglicht die Manipulation und Verarbeitung von Objekten in Software.  So unterstützt die Umsetzung objektorientierte Konzepte, wie Polymorphie und Vererbung.

Fazit:

Die Objektorientierung hat zahlreiche Vorteile, darunter eine hohe Modularität, gute Wiederverwendbarkeit von Code und eine vorzügliche Wartbarkeit. Die Objektorientierung wird in Programmiersprachen wie z.B. in Java, Python und C++ eingesetzt und hat sich als eine der wichtigsten Konzepte in der Softwareentwicklung entwickelt.

 

Relationale Datenbanken entwerfen

Der Entwurf relationaler Datenbanken spielt für Datenbankentwickler eine wichtige Rolle. Dabei wird das 3-Ebenen Modell eingesetzt. Das besteht aus drei Ebenen. Dies sind die externe-, die konzeptionelle- und die interne Ebene. Um die Entwicklung zu vereinfachen, wird häufig das Entity-Relationship Modell eingesetzt. Das wird auch ER-Modell oder ERM genannt.

Der Entwicklungsprozess

Der gesamte Entwicklungsprozess besteht aus mehreren Phasen.

AnforderungsanalyseDatenbank EntwicklungsprozessAnforderungsanalyse

Die Anforderungsanalyse beginnt damit, dass alle Anforderungen der Akteure gesammelt und ausgewertet werden. Dabei können die Akteure in Gruppen geordnet werden. Dabei stellen sich die W-Fragen:

  • Welche Daten werden verarbeitet?
  • Wie werden die Daten verarbeitet?
  • Was ist in der Datenbank abzulegen?
  • Welche Daten werden Wem zur Verfügung gestellt?
  • Wo werden die Daten verarbeitet und wo gespeichert?
  • Wann finden welche Prozesse statt?
  • Wer führt welche Tätigkeiten durch?

Konzeptioneller Entwurf

Beim konzeptionellen Entwurf gibt es verschiedene Vorgehensmodelle. Oft wird die Top-Down- oder die Bottom-Up Methode eingesetzt. Hier werden die Daten, die Prozesse, die Abhängigkeiten in Beziehung gebracht. Jetzt ist der richtige Moment zu entscheiden, welches Datenbank System (DBS) eingesetzt wird, außer die Anforderungen haben dies bereits festgelegt.

Logischer Entwurf

Beim logischen Entwurf findet die Umsetzung des konzeptionellen Schemas statt. Die häufigsten Abfragen sind auf Grund der Anforderungen bekannt und bereits beschrieben. Das Endergebnis ist eine normalisierte Tabellenstruktur, die keine Fehler und Redundanzen enthält.

Implementierung

Jetzt erfolgt die konkrete Umsetzung auf dem Datenbank System. Dabei wird auf ein gutes Laufzeitverhalten und auf Effizienz geachtet. Wichtig ist hier, dass nach den Regeln der KVP (Kontinuierlicher Verbesserung Prozess) die Datenbank optimiert wird. Es werden die Sichten, Relationen, Indizes und die Berechtigungen eingerichtet.

Test / Qualitätssicherung

Bei der Qualitätssicherung wird geprüft, ob die Anforderungen erfüllt sind. Zudem werden die während der Anforderungsanalyse festgestellten Kriterien geprüft. Optimal ist hier zusätzliches automatisiertes Testsystem zu nutzen, dass den ganzen Lebenszyklus des DBS genutzt wird. Das vermeidet wiederkehrende Fehler und optimiert die Qualitätssicherung.

Übergabe und Nutzung

Nach dem Abschluss der Qualitätssicherung findet die Übergabe des Systems statt. Dabei ist zu beachten, dass dies wie alle vorher beschriebenen Prozesse in schriftlicher Form dokumentiert sein soll. Das Übergabedokument wird nach erfolgreicher Abnahme durch den Auftraggeber unterzeichnet und damit ist der Leiter des Projekts entlastet.

 

Pseudocode in Entwicklungen und Prüfungen einsetzen

Prüfungen von Fachinformatikern können Aufgaben enthalten, die mit Pseudocode geschrieben werden sollen. Verschaffen wir uns dazu einen Überblick was Pseudocode ist.

Was ist Pseudocode?

Pseudocode ist eine Schritt für Schritt Anleitung zum Entwickeln einer Abbildungsvorschrift mit allgemeiner Logik. Meist wird damit ein auf Anforderungen basierender Algorithmus beschrieben. Pseudocode kennt keinen Standard. Die Nutzer orientieren sich flexibel an den Strukturen von Programmiersprachen.

Grundregeln bei der Erstellung von Pseudocode

  • Beschreibe wie die Programmierlogik aussieht
  • Verwende das KISS Prinzip (Keep it Simple and Smart)
  • Schreibe eine Anweisung in eine Programmierzeile
  • Strukturiere den Pseudocode durch richtige Einrückung
  • Nutze die in der Anforderung beschriebenen Algorithmen
  • Halte die Vorgaben in der Anforderung genau ein

Grundformen bei Pseudocode

Variablen und Konstanten

In Variablen kann ein Wert gespeichert werden. Dieser Wert kann jederzeit verändert werden.

PROGRAMMSTART
Kommentar
Es gibt verschiedene Möglichkeiten eine Variable oder Konstante zu definieren
Kommentar Variante A:
Setze VARIABLE Laenge mit dem Wert 20
Kommentar Variante B:
Breite := 10
Flaeche := 0
Kommentar Berechnung
Flaeche := Laenge * Breite
AUSGABE Flaeche
PROGRAMMENDE

Manchmal wird keine Wertveränderung gebraucht, wie zum Beispiel bei der Kreiszahl Pi. Dann kommt die Konstante zum Einsatz. Dort wird ein fester, nicht veränderbarer Wert festgelegt.

PROGRAMMSTART
Kommentar
Beispiel einer Konstante
KONSTANTE Pi := 3.141592685
EINGABE VARIABLE Durchmesser
Umfang := Durchmesser * Pi
AUSGABE Umfang
PROGRAMMENDE

Die Sequenz

Die Sequenz ist eine lineare Abfolge an Befehlsschritten. Dazu ein Beispiel:

PROGRAMMSTART
EINGABE
 Seitenlänge
Seitenumfang := 4 *Seitenlänge
AUSGABE Seitenumfang
PROGRAMMENDE

Das Array

Ein Array ist eine spezielle Variable, die wie ein Container mehrere Werte beinhalten kann. Dabei können in einem Array beliebige Datentypen verwendet werden. Die Werte des Arrays können beliebig geändert werden.

PROGRAMMSTART
Setze ARRAY Messwerte[] := {2, 3, 12, 4}

Kommentar Der erste Eintrag im Array ist die Position 0!
Quadratflaeche := Messwerte[0] * Messwerte[0]
Kommentar Der Wert von Messwerte[0] ist 2
AUSGABE Quadratflaeche
PROGRAMMENDE

Die IF- oder WENN-Abfrage

Mit der IF Abfrage können Entscheidungen getroffen werden, wie das einfache Beispiel zeigt.

PROGRAMMSTART
WENN
GefahreneGeschwindigkeit >= 100 DANN

    AUSGABE im Display „Geschwindigkeit zu hoch“
ENDE WENN
SONST
    AUSGABE im Display „Geschwindigkeit in Ordnung“
ENDE SONST
PROGRAMMENDE

Die SWITCH-CASE Auswahl

Wenn eine Auswahl von mehreren Möglichkeiten angeboten werden soll, dann lässt sich dies mit mit der WENN Abfrage lösen. Meist wird aber der Code kompliziert und daher ist es einfacher, eine SELECT CASE Auswahl zu schreiben.

PROGRAMMSTART
Bewertung := 0
EINGABE „Geben Sie die Note zwischen 1 und 6 ein“ Bewertung
PRÜFE FALL Bewertung = 1
    AUSGABE „Sehr gut“
VERLASSE den FALL
PRÜFE FALL Bewertung = 2
    AUSGABE „Gut“:
VERLASSE den FALL
PRÜFE FALL Bewertung = 3
    AUSGABE „Zufriedenstellend“
VERLASSE den FALL
PRÜFE FALL Bewertung = 4
    AUSGABE „Ausreichend“
VERLASSE den FALL
PRÜFE FALL Bewertung = 5
    AUSGABE „Mangelhaft“
VERLASSE den FALL
PRÜFE FALL Bewertung = 6
    AUSGABE „Ungenügend“
VERLASSE den FALL
DEFAULT
    AUSGABE „Die Bewertung wird wiederholt“
PROGRAMMENDE

Die WHILE oder SOLANGE Schleife

Mit der WHILE Schleife kann ein Code wiederholt ausgeführt werden, bis die Bedingung nicht mehr erfüllt ist. Wenn die Bedingung nicht erfüllt ist, dann kann auch kein Durchlauf der Schleife erfolgen.

PROGRAMMSTART
ASCIICode
 := 65
SOLANGE (ASCIICode <= 126)
Ausgabe ASCIICode
    ASCIICode := ASCIICode + 1
ENDE SOLANGE
PROGRAMMENDE

Die DO-WHILE oder WIEDERHOLE-SOLANGE Schleife

Die DO-WHILE oder WIEDERHOLE-SOLANGE Schleife ist eine fußgesteuerte Schleife. Das heißt, das die Schleife mindestens einmal durchlaufen wird.

PROGRAMMSTART
Zaehler := 1

WIEDERHOLE
    AUSGABE „Zahl “ Zaehler
    Zaehler := Zaehler + 1
SOLANGE (Zaehler < 10)
PROGRAMMENDE

Fazit:

Mit dem Pseudocode kann ein Algorithmus beschrieben werden, ohne dass eine Programmiersprache ausgewählt wurde. Daher ist dies eine gängige Methode, um den Algorithmus in kodierter Form  lesbar darzustellen.

Die Six Sigma Methodik im Überblick

Die Six Sigma Methodik wurde 1979 von Motorola entwickelt und dient der Qualitätsverbesserung bei vorhandenen Produkten oder Dienstleistungen. Dabei werden die Methoden DMAIC, DFACE und DMADV eingesetzt. Dazu wird das statistische Qualitätsmanagement eingesetzt. Dazu haben Genichi Taguchi und William Edwards Deming große Beiträge geleistet.

So hat  der japanische Ingenieur Gen’ichi Taguchi die nach Ihm benannte Taguchi-Methode entwickelt, bei der Prozesse, Produkte und Systeme so robust wie möglich gestaltet werden. Es ist heute eine der Methoden, die bei Six Sigma angewandt werden.

Zur gleichen Zeit entwickelte der amerikanische Ingenieur William Edwards Deming die prozessorientierte Sicht und den Einsatz von Statistik im Qualitätsmanagement. Seine Erkenntnisse sind auch heute in Qualitätsnormen und in der Lehre im Einsatz. So nutzen viele Menschen die PDCA Methode.

DMAIC

DMAIC ist eine sich wiederholende Methode, die aus fünf Schritten besteht. Die fünf Schritte sind Define, Measure, Analyze, Improve und Control. Mit DMAIC werden Probleme in bestehenden Prozessen und Produkten identifiziert, analysiert und gelöst.

DFACE

Die DFACE Methode ist eine Erweiterung von DMAIC. Sie betrachtet zusätzlich die zum üblichen Vorgehen bestehenden Chancen und  Risiken des Prozesses (Failure Mode and Effects Analysis, FMEA), sowie identifiziert DFACE die Anforderungen der Stakeholder (Customer Expectations).

DMADV

DMADV ist eine weitere Methode, die aus fünf Schritten besteht. Hier gibt es die Schritte Define, Measure, Analyze, Design, Verify, um einen neuen Prozess mit großer Leistung und Zuverlässigkeit zu entwerfen und umzusetzen. Im Gegensatz zu DMAIC liegt der Fokus auf der Prozessneugestaltung.

Systematisierung betrieblicher Kennzahlen

Kennzahlen sind in Unternehmen wichtige Werkzeuge, um richtige Entscheidungen zu treffen. Vor dem Einsatz ist festzustellen, welche Art von Entscheidung getroffen werden muss. Dabei wird zwischen Basisentscheidungen und laufende Entscheidungen unterschieden.

Basisentscheidungen

Basisentscheidungen betreffen langfristige Zeiträume mit mehr als 10 Jahren Wirkung. Es sind strategische Entscheidungen, die die Unternehmensleitung trifft.

Laufende Entscheidungen

Bei einfacheren Vorgängen des Unternehmens werden laufende Entscheidungen getroffen. Diese Entscheidungen werden durch Führungskräfte getroffen, die von der Unternehmensleitung dafür autorisiert wurden. Oft wirken diese Entscheidungen 5 bis 10 Jahre und daher wird diese Art auch taktische Entscheidung genannt.

Kennzahlen und Formeln werden in beiden Bereichen genutzt, um Hilfe bei den Entscheidungen zu erhalten.

Absolute Zahlen

Das sind meist Einzelzahlen wie zum Beispiel der Umsatz eines Unternehmens. Dazu gehören auch einfache Mittelwerte, wie der durchschnittliche Lagerbestand.

Relative Zahlen

Die relativen zahlen gliedern sich in drei Gruppen.

Indexzahlen

Mit Indexzahlen werden Veränderungen innerhalb eines bestimmten Zeitraums dargestellt. Die Zeiträume und auch Zeitpunkte können unterschiedlich sein. Indizes werden häufig bei Statistiken verwendet. Ein Beispiel für Indexzahlen sind die Lebenshaltungskosten von Statista.

Umsatzindex = (Umsatz im Jahr 2022 / Umsatz im Jahr 2021) * 100

Beziehungszahlen

Das Verhältnis von zwei Zahlen nennt man Beziehungs- oder Verhältniszahlen. Dabei sind die verwendeten Zahlen aus verschiedenen Bereichen. Ein Beispiel sind Personalzahlen, die mit Umsatzzahlen in Beziehung stehen.

Umsatz pro Person = Umsatz des Unternehmens / Zahl der Mitarbeiter

Gliederungszahlen

Wesensgleiche Zahlen, die in Beziehung gesetzt werden, nennt man Gliederungszahlen. Teilgrößen werden mit einer Gesamtgröße in Relation gesetzt. Ein Beispiel dazu ist der Anteil der Betriebskosten der Produktion an den Gesamtkosten des Unternehmens.

Anteil der Kosten = (Betriebskosten Produktion / Betriebskosten Unternehmen) * 100

Weitere betriebswirtschaftliche Kennzahlen

Fachinformatiker und Kaufleute benutzen weitere Kennzahlen. Dazu fasse ich hier einige zusammen.

Produktivität = Ausbringungsmenge / Menge im Einsatz der Produktionsfaktoren

Gesamtkapitalrentabilität = (Kapitalzinsen + Gewinn) / (Eigenkapitel + Fremdkapital) * 100

Eigenkapitalrentabilität = Gewinn / Eigenkapital * 100

Umsatzrentabilität = Gewinn / Umsatzerlöse * 100

EDV-Intensität = Exportumsatzerlöse / Umsatzerlöse * 100

 

 

Welche Bildschirmauflösungen werden 2023 genutzt?

Für Entwickler ist es wichtig zu wissen, welche Auflösungen bei PCs genutzt werden. Denn so können die grafischen Benutzeroberflächen besser geplant werden.

Die Auflistung zeigt die Bildschirmauflösung von Geräten, die im Januar 2023 in Deutschland genutzt wurden.

Auflösung bei PCs

Auflösung Anteil in %
1920×1080 35,33
1536×864 9,98
1366×768 5,7
2560×1440 5,12
1280×720 4,32
1600×900 4,00

Auflösung bei Tablets

Auflösung Anteil in %
768×1024 19,6
1280×800 12,84
800×1280 9,59
810×1080 6,77
1334×800 4,71
1024×1366 3,18

Auflösung bei Smartphones

Auflösung Anteil in %
390×844 11,94
414×896 8,08
375×812 6,95
360×800 6,85
412×915 6,32
393×873 5,07

Source: StatCounter Global Stats – Screen Resolution Market Share

 

Eclipse IDE – Java Programme mit dem Klassiker schreiben

Java ist eine objektorientierte Programmiersprache, die in den 1990er Jahren entwickelt wurde. Um den Entwicklungsvorgang während der Programmerstellung zu optimieren, werden häufig integrierte Entwicklungsumgebungen, wie zum Beispiel die Eclipse IDE eingesetzt.

IBM hat Ende 2001 mit der Entwicklung von Eclipse begonnen. 2004 wurde die Non-Profit Organisation Eclipse Foundation gegründet, die sich um die Entwicklung der Eclipse IDE kümmert.

Eclipse Entwicklungsumgebung

Die Eclipse IDE ist variabel konzipiert und bietet die Möglichkeit mit Plugins die IDE zu erweitern. Das geht so weit, dass aus der Eclipse IDE und der Eclipse Rich Client Platform ein Mindmapping Programm werden kann. Durch diese Variabilität ist möglich, verschiedene Editoren parallel zu nutzen.  So kann für die Programmiersprachen Java, Javascript, HTML, PHP und Python jeweils ein eigener Editor eingesetzt werden. Dazu gibt es die Möglichkeit sich beliebig gestaltete Oberflächen zu konfigurieren, die auch Perspektiven genannt werden.

Ein weiterer Vorteil ist, dass die IDE für viele verschiedene Betriebssysteme angeboten wird.

Fazit:

Die Eclipse IDE ist eine zuverlässige  und viel genutzte Entwicklungsumgebung, die häufig für die Entwicklung von Java Programmen genutzt wird. Sie bietet alle Funktionen, die bei der Entwicklung gebraucht werden. Der große Vorteil dieser IDE liegt in der universellen Erweiterbarkeit, die sonst keine andere IDE bietet.

Kodierung mit Unicode – UTF

Kodierung ist uraltes Instrument der Natur, dass bei Kommunikation eingesetzt wird.  Somit wird Kommunikation mit Kodierung universell eingesetzt, wie zum Beispiel in der Pflanzenwelt mit Auxinen und in der IT sind das Kodierungen wie UTF. Denn Kommunikation funktioniert immer auf der gleichen Basis und braucht Standards.

Basis von Kommunikation

  • Es gibt einen Sender, der kommunizieren will
  • Es gibt einen oder mehrere Empfänger
  • Es gibt Daten, die Sender und Empfänger in einen Kontext setzen und damit werden Informationen übermittelt
  • Es gibt Regeln zum Austausch, die auch als Protokolle bezeichnet werden
  • Es gibt einen Zweck, warum der Austausch mittels Kommunikation notwendig ist

In der IT hat sich die Kodierung im Laufe der Zeit weiter entwickelt. So wird heute sehr häufig Unicode eingesetzt, das auch Unicode Transformation Format genannt wird.

Mit Unicode ist es möglich, die gängigen Zeichen aller Schriften zu nutzen. So können damit 232 Zeichen kodiert werden, im Gegensatz zum erweiterten ASCII Code, der 128 Zeichen kodieren kann. UTF ist also ein wichtiges Mittel für den globalen Austausch von Daten und Informationen über alle Völker und Kulturen hinweg.

UTF kodiert ein Zeichen immer mit 32 Bit. Damit es mit einer weiteren, häufig genutzten Kodierung kompatibel ist, sind die ersten 128 Zeichen wie bei ASCII kodiert.

Ein Hemmnis von Unicode ist der hohe Verbrauch von 32 Bit pro Zeichen. So werden gleiche Texte gegenüber ASCII Code um das 4-fache umfangreicher. Um die Datenmenge zu reduzieren gibt es verschiedene Arten der UTF Kodierung.

Kodierung mit UTF-32

Hier jedes Zeichen mit 32 Bit kodiert. Es ist die einfachste und kompatibelste Kodierung mit Unicode. Wird zuerst das höchstwertige Byte übertragen, dann wird diese Kodierung Big Endian (UTF-32BE) genannt. Wenn das niedrigstwertige Byte zuerst übertragen wird, dann wird dies als Little Endian (UTF-32LE) bezeichnet.

Kodierung mit UTF-16

Hier werden zur Kodierung eines Zeichens entweder ein 16 Bit- oder zwei 16 Bit Blocks verwendet. Diese Kodierung wird gerne bei Sprachen mit nicht lateinischen Zeichen eingesetzt. Ähnlich wie bei UTF-32 gibt es hier auch UTF-16BE und UTF-16LE.

Kodierung mit UTF-8

Hier werden die Zeichen mit einer variablen Länge von 1 bis 4 Byte kodiert. Da in vielen Fällen die ersten 128 Zeichen des dazu kompatiblen Standard ASCII Codes (7 Bit) verwendet werden, ist dieser Kodierungstyp der Effizienteste. Das achte Bit wird zum Einleiten der Verlängerung des Zeichens auf bis zu 32 Bit genutzt.

Byte Order Mark oder BOM

Das ist eine Signatur, die zu Beginn der Nutzung übertragen wird. Sie dient der leichteren Identifizierung der Kodierung bei verschiedenen Systemen. Wenn aber vorher schon eindeutig geklärt ist, wie die Daten übermittelt werden, kann die BOM weg gelassen werden. Dies geschieht zum Beispiel bei HTML Seiten durch die Angabe des <meta charset=“utf-8″ />.

Es gibt noch weitere UTF Kodierungen, die aber in der Praxis nur wenig eingesetzt werden.

Siehe auch:

Codepage oder Zeichensatz Tabelle in der IT

Ist Kodierung gleich Codierung?

 

Perfekt entwickeln mit IntelliJ IDEA

Es ist meist schwierig eine leistungsfähige Entwicklungsumgebung zu finden. Gerade bei der beliebten Programmiersprache Java gibt es eine größere Auswahl. Daher stelle ich in dieser Serie nach und nach verschiedene IDEs vor.

Heute beginne ich mit IntelliJ IDEA von der Firma JetBrains aus Tschechien. Das Unternehmen wurde im Jahr 2000 gegründet und hat die Zielsetzung, die leistungsstärksten Entwicklertools zu konzipieren. Dabei stehen die Nutzer, die Automatisierung und die Unterstützung von Entwicklungsprozessen im Vordergrund.

Das kann in zwei Wegen ausprobiert werden:

  1. Es gibt eine Open Source Variante, die IntelliJ Community Edition.
  2. Wer mehr Funktionalität braucht, kann 30 Tage lang die IntelliJ Ultimate IDE probieren, bevor sie lizensiert werden muss. Dabei zeigt sich JetBrains sehr kulant, denn es gibt für Lernende eine spezielle Unterstützung.

Die JetBrains Entwicklungsumgebung IntelliJ IDEA gibt es für die Betriebssysteme Windows, MacOS und Linux. Zudem gibt es für Windows eine ARM Variante und Apple Silicon wird  unterstützt.

IntelliJ IDEA Community Edition

  • Unterstützung von
    • Java
    • Kotlin
    • Scala
    • Groovy
    • Gradle
    • Maven
  • Versionsmanagement System werden unterstützt
    • Git
    • Subversion
    • GitHub
    • Perforce
    • Mercurial
  • Es gibt einen Debugger
  • Teamarbeit wird unterstützt

IntelliJ IDEA Ultimate Edition

  • zusätzlich zu den oben genannten Funktionen gibt es
  • Unterstützung von weiteren Frameworks
    • Jakarta EE
    • Java EE
    • Spring
  • Unterstützung für
    • HTML
    • CSS
    • Javascript
    • Angular
    • Node.js
    • React
    • SQL

IDE IntelliJ Ultimate

Es gibt nicht nur Syntax Highlighting, sondern auch eine umfangreiche Unterstützung durch Code Prediction, also Code Vorschläge im Kontext der Programmierung. Zu den vielen eingebauten Tools werden viele weitere Plugins unterstützt.

Fazit:

Die Entwicklungsumgebungen von JetBrains gehören zu den Besten. Die IDE ist individuell sehr gut anpassbar. Die Unterstützung beim Programmieren ist die beste, die ich kenne. Allerdings gehört dazu eine gewisse Einarbeitungszeit, denn die Funktionsvielfalt und die Möglichkeiten dieser IDE sind überragend. IntelliJ IDEA ist eine empfehlenswerte Entwicklungsumgebung und das nicht nur für Java, sondern auch für die Webentwicklung.

 

SAN – Storage Area Network einfach erklärt

Ein SAN, das auch Storage Area Network genannt wird, ist ein Netzwerk von Datenspeichern mit großen gespeicherten Datenmengen.

SAN im Netz Beispiel

Das SAN wird parallel zum Netzwerk betrieben. Die Server können auf das Speichernetzwerk des SAN zugreifen und die Daten an die berechtigten Nutzer weiterreichen. Dadurch wird die Auslastung des Netzwerks reduziert und die Datenträger können an unterschiedlichen Plätzen im Netzwerk befinden. Außerdem sind die Server für die Verwaltung des SAN notwendig.

Um hohe Übertragungsraten im SAN Speichernetz zu realisieren, werden dort oft Glasfaser- und Hochleistungs-LAN Netze eingesetzt. So können im SAN bis zu 10 GBit Netze genutzt werden. Die Protokolle FCIP (Firbe Channel over IP) und FCoE (Fibre Channel over Ethernet sind hoch effizient und bieten hohe Übertragungsgeschwindigkeiten bei gleichzeitig großen Reichweiten (bis zu 100 km).