Ein Modul (neutrum, das Modul[1]) ist im Software Engineering ein Baustein eines Softwaresystems, der bei der Modularisierung entsteht, eine funktional geschlossene Einheit darstellt und einen bestimmten Dienst bereitstellt.[2]
Module sind charakteristisch für die Programmierung nach dem Programmierparadigma der modularen Programmierung. Module können weitere Module bzw. auch mit anderen Bezeichnungen benannte Konstrukte (wie Funktion, Prozedur, Klasse u. a.) enthalten. So ist die Zerlegung der Programmfunktionalität in einer Hierarchie möglich. Module können die in ihnen festgelegten Datenstrukturen und Methoden gegebenenfalls vererben bzw. fremden Modulen den Zugriff erlauben oder verbieten.
In den verschiedenen Programmiersprachen und Entwicklungsumgebungen und deren zeitlicher Entwicklung haben sich zahlreiche unterschiedliche Implementierungsformen von Modulen (mit zum Teil unterschiedlichen Bezeichnungen) entwickelt. Auch wird der Ausdruck Modul häufig synonym zu Begriffen wie Unterroutine, Prozedur, Unterprogramm, Programmteil, Programm-Modul[3][4] verwendet.
Als Speicherobjekt für Programmcode ist „Modul“ eine typisierende Bezeichnung für die Inhalte in einer Programmbibliothek, wobei ein Modul häufig eine Zusammenfassung thematisch zusammengehöriger Prozeduren, Funktionen, Klassen, Konstanten und ggf. weiterer Programmierobjekte ist. Module gibt es auch für Hauptprogramme, sie können alternativ unterschiedliche Arten von Programmcode (wie Quelltext, Zwischencode, Maschinenprogramm) repräsentieren.
Zu unterscheiden ist ein Modul von einer Komponente, die in der Funktionalität eine Hierarchieebene höher angesiedelt ist und die (Basis-)Funktionalitäten von Modulen zu (fachspezifischen) Diensten kombiniert. Jedoch werden derartige Komponenten im Sprachgebrauch (zum Beispiel bei SAP[5]) manchmal ebenfalls „Module“ genannt.