Modul

Die Modularisierung von Software berücksichtigt, daß ein in kleine Teile gegliedertes Problem einfacher zu bearbeiten ist. "Klein" heißt, daß ein Modul nur eine maximale Anzahl von Anweisungen umfassen darf.  Ein Modul ist ein Programmteil mit einem Eingang und einem Ausgang und kann selbständig übersetzt und ausgeführt werden. Module verkehren nur über Schnittstellen miteinander, über die Werte (Parameter)  vom rufenden an das aufgerufene Modul übergeben werden. Ein Modul soll als Black Box aufgefasst werden: es sind nur die Schnittstellen bekannt und nichts über das Innenleben. Ein Modul  weiss auch nichts vom Innenleben eines anderen Moduls (Geheimnisprinzip). Da man nur wissen muss, welches Datenformat heraus kommt (Output) und welche Daten zugeführt werden (Input), erleichtert dies die Einbindung des Moduls  innnerhalb des Programmcodes und die Kommunikation der Module untereinander. Man spricht auch von einer Kapselung: Trennung von Implementierung (der eigentliche Programmcode) und Schnittstellen.  Module können wiederverwendet werden oder separat kompiliert und als Bibliotheksdatei verwendet werden. Module erlauben eine Auslagerung von bestimmten Programmfunktionen. Diese können  nach dem Baukastenprinzip zusammengestellt und auch einzeln lizenziert werden. Auch der Aufbau verschiedener Software-Versionen mit unterschiedlichen Fähigkeiten ist dadurch möglich. Diese können  auch separat vermarktet werden.  Das Modulkonzept wird von einigen Programmiersprachen direkt unterstützt: Component PASCAL, Modula 2, Fortran, Cobol, Ada, D, PHP, Python, Perl oder Ruby.                                         
Siehe auch:    schnittstelle   software   Programm   CASE   API   Datei-Endung-DLL   Linker   Parser   ADA   PASCAL

  Algorithmus

Mit Hilfe eines Algorithmus wird eine zu programmierende Aufgabe in mehrere Teilaufgaben oder Unterprogramme zerlegt. Ein komplexes Problem wird nach einer Problemanalyse schrittweise aufgeteilt. Dies erfolgt unter Verwendung elementarer Regeln.  Algorithmen sind Gegenstand vieler Teilgebiete der Theoretischen Informatik, wie der Algorithmentheorie, der Berechenbarkeitstheorie und der Komplexitätstheorie. In höheren Programmiersprachen der vierten und fünften Generation  werden Algorithmen durch Kontrollstrukturen wie Schleifen, Funktionen, Verzweigungen, Rekursive Funktionen, Unterprogramme oder Modularisierung verwirklicht. Ein Algorithmus ist definiert, wenn es eine  Turing-Maschine gibt, die ihn für jede Eingabe, die eine Lösung besitzt, ausführen kann. Daraus folgt, dass ein Algorithmus eindeutig beschreibbar (Finitheit), in einer endlichen Speicherbank ausführbar und in endlich viele Teilschritte  zerlegbar sein muss. Darüber hinaus muss er bei denselben Voraussetzungen dasselbe Ergebnis liefern (Determiniertheit) und die nächste anzuwendende Regel muss während der Verarbeitung eindeutig bestimmt sein (Determinismus). Wichtig bei einem  Algorithmus ist die Geschwindigkeit, mit der er die zu lösende Aufgabe ausführt. Der Zeitaufwand für einen Algorithmus kann mit Hilfe mathematisch-statistischer Verfahren abgeschätzt werden. Dabei wird das Verfahren der asymptotischen  Laufzeit angewendet. Die Laufzeit wird für eine sehr grosse Anzahl von Eingaben (n) mit Hilfe des Landau Symbols Theta (Θ) angegeben, z. B. Θ (n log n).                                             
Siehe auch:    Adresse   Programm   software   Ablaufdiagramm   Sortieralgorithmus   Parser   Künstliche-Intelligenz   Modul