# Blockdiagramm

Ein Blockdiagramm (auch Blockbild oder Blockschema) ist ein meist 2-dimensionales, grafisches Diagramm eines mechanisch-elektrischen Systems oder eines Berechnungsschemas, mit dessen Hilfe die Funktion des Systems beschrieben werden kann. Normalerweise werden Blockdiagramme verwendet, um einen höheren Abstraktionsgrad zu bieten und somit ein besseres Verständnis der Funktion oder der Zusammenhänge des Systems zu ermöglichen.
Die Bezeichnung Blockdiagramm kommt von den meist rechteckig gezeichneten Elementen in einem solchen Diagramm. Jedoch ist die Form dieser funktionalen Grundelemente frei wählbar und so kommen oft auch andere geometrische Figuren wie Kreise, Ovale, Dreiecke oder Rhomben zum Einsatz.

## Verwendung

Blockdiagramme werden häufig zur Beschreibung von Hardware- oder Softwaresystemen sowie zur Darstellung von Abläufen und Prozessen verwendet. Solche Repräsentationen sind in der Hardware- und Softwareentwicklung üblich und tauchen unter den verschiedensten Bezeichnungen in der Literatur auf. Beispiele hierfür sind u. a. nahezu alle UML-Diagramme.
Außerdem kommen Blockdiagramme oft als eine mögliche Modellierungsform einer Domänenspezifischen Sprache zur Anwendung. In diesen Fällen gibt es meistens auch eine automatische Transformation der grafischen Beschreibung in eine Form von Code (z. B. C-Code).
Eine ebenfalls weit verbreitete Form der Blockdiagramme sind Blockschaltbilder. Diese spezielle Form eines Blockdiagramms wird in der Elektrik/Elektronik verwendet, um elektrische/elektronische Systeme und Verschaltungen vereinfacht abzubilden.

## Elemente

Generell ist ein Block immer die grafische Repräsentation eines konkreten Elementes aus dem zugrunde liegenden System oder der definierten Domäne mit einer fest definierten syntaktischen und/oder semantischen Bedeutung. Zusätzlich gibt es auch grafische Hilfsblöcke (z. B. Rahmen oder Gruppierungselemente) sowie textuelle Kommentare, die meist zur Strukturierung verwendet werden, jedoch keine semantische oder syntaktische Bedeutung im System oder der Domänensprache besitzen.
In der Softwareentwicklung beschreibt ein Block z. B. ein Datenelement, einen Operator oder ein Kontrollflusselement. Meist können auch komplexe Funktionen (z. B. Klassen im Sinne der Softwareentwicklung) durch einen einfachen Block repräsentiert werden. In der Hardwareentwicklung stellen Blöcke meistens einfache elektronische Elemente wie AND/OR-Gatter oder komplexe Funktionen wie z. B. die Arithmetisch-Logische Einheit (ALU) eines Prozessors dar, in der Elektrik beschreiben Blöcke meist Schaltungselemente wie Glühlampen, Schalter oder Sicherungen.
Datenströme, Kontrollfluss oder andere inhaltliche Zusammenhänge werden im Blockdiagramm durch Verbinden von Blöcken mit Hilfe von Linien modelliert. Dabei können die Verbindungen verschiedene Formen haben. Hier kommen Freihandzeichnungen, Bögen, schräge Linien oder ausschließlich horizontale und/oder vertikale Linien (auch bekannt als Manhattan Routing) zum Einsatz. Die Verbindungen sind dabei meistens gerichtet, besitzen also einen semantischen Anfang und ein semantisches Ende.

### Funktionsblock

Funktionsblöcke als Teil eines (Funktions-)Blockdiagramms werden zur graphischen Darstellung von technischen Abläufen, Prozessen und Zusammenhängen verwendet. Funktionsblöcke enthalten textliche Bezeichnungen oder kurze Erläuterungen und können kleine Graphiken oder weitere verschachtelte Funktionsblöcke beinhalten. Die einzelnen Blöcke sind durch ein- oder beidseitige Richtungspfeile verbunden, die die Schnittstellen und Flussrichtung der zwischen den Blöcken ausgetauschten Informationen darstellen. Die beiden wesentlichen Merkmale eines Funktionsblocks sind somit die eigene technische Funktion (Blockinhalt) sowie die Funktion der Schnittstellen (Interfaces) zu den benachbarten Funktionsblöcken. Funktionsblockdiagramme ermöglichen die Darstellung komplexer technischer Abläufe als einfach gestaltete Übersicht. Die einzelnen Funktionsblöcke können in einem weiteren Blockdiagramm expandiert bzw. in weitere Unterfunktionen heruntergebrochen werden (Top-down-Approach).

## Anwendungsfälle

Blockdiagramme werden meist dann verwendet, wenn die Visualisierung von Daten- und/oder Kontrollfluss oder zeitliche/inhaltliche Abläufe von Bedeutung sind. So werden häufig komplexe Regelalgorithmen grafisch dargestellt oder der Datenfluss oder die Kommunikation zwischen einzelnen Bestandteilen (Komponenten) eines großen Systems abgebildet. In diesen wie in zahlreichen anderen Fällen ist die grafische Darstellung für den Menschen meist leichter zu verstehen und nachzuvollziehen als eine textuelle Repräsentation.
Ein wichtiger Aspekt von Blockdiagrammen ist die häufig vollständig automatische Transformation der grafischen Spezifikation in eine andere Spezifikationsform (z. B. C-Code, Java-Code oder andere Diagrammformen) oder die automatische Generierung von Chip-Layouts aus grafischen Beschreibungen.