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.

News zum Weltquantentag (14.04.2023)

Das Institut der Physik und IOP Publishing feierten am 14.04.2023 den Weltquantentag. Das IOP Publishing wird auch IOPP genannt und stellt öffentlich seine Quantensammlung für die Forschung zur Verfügung.

Die Quantentechnologie entwickelt sich rasch und ähnlich wie bei der künstlichen Intelligenz gibt es neue Felder, wie die Quantenmeteorologie und die Quantenchemie.

Dieses Jahr gab es zwei Preisträger in der Quantenforschung. Die Preisverleihung findet am 25. Mai 2023 statt.

Annabelle Bohrdt von der Universität Regensburg erhielt den International Quantum Technology Emerging Researcher Award. Frau Bohrdt fand neue Ansätze zur Analyse stark korrelierter Quantenmaterie mit Hilfe von Schnappschüssen von Quantenzuständen.

Feihu Xu von der University of Science and Technology of China gewann den International Quantum Technology Early Career Scientist Award für seine hervorragenden Beiträge bei Quantenkommunikation, der Hochgeschwindigkeit-Quantenkommunikation und von Quantennetzwerken. Dazu gehört auch der wichtige Ansatz über Sicherheit in der Quantenkryptographie, der aus meiner Sicht ein wichtiger Schritt zu zukünftiger, sicherer Kommunikation darstellt.

Ich gratuliere beiden Preisträgern zu Ihren hervorragenden Leistungen.

Warum sind diese Entwicklungen wichtig?

Weil hier in den letzten Jahren eine bahnbrechende Weiterentwicklung stattfand. Im Jahr 2020 konnte China die Reichweite bei der Quantenkommunikation verzehnfachen und auf 1.120 Kilometer ausweiten.

Durch die Quantenkryptographie und den Kommunikationsstrecken ohne Verzögerung wird es dem globalen Süden möglich sein, ein globales Neo-Internet aufzubauen, das dem heutigen Internet um Welten überlegen sein wird.

 

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.

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

 

UML Klassendiagramm Symbole

Das UML Klassendiagramm ist bei der Dokumentation von Software ein weit verbreiteter Diagrammtyp. Eine genauere Beschreibung gibt es in dem Artikel Darstellung von Klassen und Objekt Diagrammen mit UML Darstellung von Klassen und Objekt Diagrammen mit UML.

Dieser Artikel ist eine Ergänzung. Denn hier werden die Symbole für die Beziehungen des UML Klassendiagramms gelistet.

[hypeanimations_anim id=“2″]

Beziehungen in der Objektorientierung sind Verbindungen zwischen Objekten einer oder mehrerer Klassen. So gibt es die Assoziation, Aggregation und die Komposition.

Sichtbarkeit bei Klassen (engl. class visibility)
+ ~ #
public
öffentlicher, unbeschränkter Zugriff
private
nur die Klasse selbst kann es sehen
package
innerhalb des Pakets sichtbar
protected
geschützter Zugriff nur von der Klasse, sowie von den Unterklassen

Ein weiterer wichtiger Aspekt ist die Sichtbarkeit, die mit der Datensicherheit einhergeht. Des wird durch die gezeigten Symbole dokumentiert.

Kardinalität (engl. multiplicity)
0 1 0…1 * 1…*
Kein genau 1 0 bis 1 0 bis viele 1 bis viele

Die Kardinalität bestimmt, zu welchen Objekten ein bestimmtes Objekt in Verbindung steht.

 

 

Darstellung von Klassen und Objekt Diagrammen mit UML

UML wird zur Modellierung und zur Darstellung der Struktur von Softwaresystemen eingesetzt.  Die Unified Modeling Language nutzt dazu verschiedene Diagrammarten und wird zur

  • Beschreibung aller Arten von objektorientierter Software und der dazugehörenden Dokumentation eingesetzt;
  • zeigt die Prozesse, zeitlichen Kommunikationsverläufe, Objekte, Klassen zum Erstellen eines Modells auf;
  • dient zur Erkennung von Risiken und Fehlern;
  • sowie der Zuweisung von Verantwortlichkeiten und Ressourcen.

Inzwischen gibt es Software Tools, mit denen nicht nur UML dokumentiert werden kann. Es wird auch der passende Quellcode für verschiedene Programmiersprachen generiert.

Das Klassen Diagramm

Das Klassendiagramm ist ein Bauplan verwandter Objekte mit ähnlichen Eigenschaften und Methoden. Die Kommunikation dieser Objekte erfolgt über Schnittstellen. Dafür sind Schnittstellenmethoden notwendig.

Beispiel eines Klassen Diagramms

UML Klassendiagramm

  1. Name der Klasse
  2. Attribut oder Eigenschaft der Klasse mit Datentyp
  3. Eine Methode der Klasse

Das Objekt Diagramm

Das Objektdiagramm zeigt eine Instanz der Klasse zu einer bestimmten Zeit. Das heißt, ein aus dem Klassenbauplan erzeugtes Objekt wird zu einem bestimmten Zeitpunkt dargestellt.

Beispiel eines Objekt Diagramms

UML Objekt-Diagramm

  1. Klasse : Objekt => beschreibt das Objekt
  2. Zeigt an einem Beispiel den Wert und Datentyp des Attributs

Eine weitere wichtige Rolle spielen die Beziehungen zwischen den Objekten, Klassen, der Sichtbarkeit und der Kardinalität. Diese wird im Artikel UML Klassendiagramm Symbole beschrieben.

 

Web Entwicklungsumgebung XAMPP installieren

Web Entwickler brauchen für die Erstellung von Webseiten, CMS, Blogs und weiteren internet-affinen Systemen eine Entwicklungsumgebung. Hier bietet seit vielen Jahren die Open Source Entwicklungsumgebung XAMPP eine tragende Rolle.

XAMPP Installation

Im nachfolgenden Video wird die Installation von XAMPP gezeigt. Mit dabei sind Tipps und Tricks.

Web Entwicklungsumgebung XAMPP installieren from Karl Högerl on Vimeo.

Fazit

XAMPP ist eine häufig genutzte Entwicklungsumgebung mit viel Potential. Es gibt Unterstützung von HTML, CSS, PHP, MySQL DB, JSP und dem Tomcat Server.

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.

 

Software Entwicklung mit dem agilen Manifest

Scrum basiert auf agile Methoden wird sehr häufig bei der Software Entwicklung eingesetzt. Agile Methoden der Software Entwicklung werden inzwischen häufig eingesetzt.

Ziele agiler Entwicklungsmethoden

  • Eine schlanke, flexible Softwareentwicklung ist umsetzbar
  • Abbau bürokratischer Hemmnisse
  • Regelbasierte Tätigkeiten in Rollen werden eingesetzt
  • Die Entwicklung, die Dokumentation und der Test sollen eine Einheit bilden
  • „Qualität ist die Erfüllung der Kundenanforderung“ – diese Qualität ist zu erreichen
  • Agile Entwicklung ist dort einzusetzen, wo es Vorteile bringt

Das agile Manifest

Dazu werden die beschriebenen Werte eingesetzt.

  • Individuen und Interaktionen mehr als Prozesse und Werkzeuge
  • Funktionierende Software mehr als umfassende Dokumentation
  • Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlung
  • Reagieren auf Veränderung mehr als das Befolgen eines Plans

Das heißt, obwohl wir die Werte auf der rechten Seite wichtig finden, schätzen wir die Werte auf der linken Seite höher ein.

Entwickelt wurde diese Vorgehensweise von Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas