<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Modul_%28Software%29</id>
	<title>Modul (Software) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Modul_%28Software%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Modul_(Software)&amp;action=history"/>
	<updated>2026-05-23T12:13:04Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Modul_(Software)&amp;diff=76912&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Modul_(Software)&amp;diff=76912&amp;oldid=prev"/>
		<updated>2026-02-19T05:01:25Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;!--Achtung, Redundanzdiskussion bei &amp;#039;Unterprogramm&amp;#039; etc. beachten!--&amp;gt;Ein &amp;#039;&amp;#039;&amp;#039;Modul&amp;#039;&amp;#039;&amp;#039; (neutrum, das Modul&amp;lt;ref&amp;gt;Duden, Band 5, Fremdwörterbuch, 7. neu bearbeitete und erweiterte Auflage, Mannheim 2001&amp;lt;/ref&amp;gt;) ist im [[Software Engineering]] ein Baustein eines Softwaresystems, der bei der [[Modularisierung]] entsteht, eine funktional geschlossene Einheit darstellt und einen bestimmten Dienst bereitstellt.&amp;lt;ref&amp;gt;Gabler [https://wirtschaftslexikon.gabler.de/definition/modul-40077/version-263472] &amp;#039;&amp;#039;Definition Modul&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Module sind charakteristisch für die Programmierung nach dem [[Programmierparadigma]] der [[Modulare Programmierung|modularen Programmierung]]. Sie bestehen häufig aus thematisch zusammengehörigen Konstrukten und können weitere Module bzw. auch anders benannte Konstrukte (wie [[Funktion (Programmierung)|Funktion]], [[Prozedur (Programmierung)|Prozedur]], [[Klasse (Objektorientierung)|Klasse]], Konstanten und ggf. weiterer Programmierobjekte) enthalten. So ist die Zerlegung der Programmfunktionalität in einer Hierarchie möglich. Module können die in ihnen festgelegten Datenstrukturen und Methoden gegebenenfalls [[Vererbung (Programmierung)|vererben]] bzw. fremden Modulen den Zugriff erlauben oder verbieten.&lt;br /&gt;
&lt;br /&gt;
In den verschiedenen [[Programmiersprache]]n und [[Integrierte Entwicklungsumgebung|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 &amp;#039;&amp;#039;synonym&amp;#039;&amp;#039; zu Begriffen wie Unterroutine, Prozedur, [[Unterprogramm]], Programmteil, Programm-Modul&amp;lt;ref&amp;gt;psion user-club &amp;#039;&amp;#039;OPL-Kurs Teil 4&amp;#039;&amp;#039; [http://www.psion-user-club.at/m_opl_04.html] &amp;#039;&amp;#039;denn einen Teil der Module („synonym: Prozeduren, ...“) werden wir wiederverwenden&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;econstor.eu [https://www.econstor.eu/bitstream/10419/59373/1/717383571.pdf] Seite 19: &amp;#039;&amp;#039;... inwieweit ein Programm in Unterprogramme (Module) zerlegt ist, ...&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt; verwendet. &lt;br /&gt;
&lt;br /&gt;
Als Speicherobjekt für [[Programmcode]] ist „Modul“ eine typisierende Bezeichnung für die Inhalte/Elemente in einer [[Programmbibliothek]]. Sie enthalten alternativ unterschiedliche Arten von Programmcode (wie [[Quelltext]], [[Zwischencode]], [[Maschinenprogramm]]). Module in diesem Sinn können [[Computerprogramm#Klassifizierungsmöglichkeiten|Hauptprogramme]] oder [[Unterprogramm]]e repräsentieren.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Zu unterscheiden&amp;#039;&amp;#039; ist ein Modul von einer [[Komponente (Software)|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]]&amp;lt;ref&amp;gt;tse.de  [http://www.tse.de/papiere/sap/SAP_Module.html] &amp;#039;&amp;#039;SAP-R3-Module&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt;) manchmal ebenfalls „Module“ genannt.&lt;br /&gt;
&lt;br /&gt;
== Gründe für das Aufteilen von Programmen in Module ==&lt;br /&gt;
=== Für modulare Programmierung im Allgemeinen ===&lt;br /&gt;
* Aus der ursprünglichen Sicht der Assemblerprogrammierung war der Grund der Aufteilung die &amp;#039;&amp;#039;mehrfache Verwendung&amp;#039;&amp;#039; der gleichen Befehlsfolge an unterschiedlichen Stellen des Programms, somit Einsparung von Speicherplatz und die Vermeidung von [[Codewiederholung]]en.&lt;br /&gt;
* In modernen Technologien des [[Softwaretechnik|Softwareengineering]] ist ein weiterer wichtiger Grund die &amp;#039;&amp;#039;Strukturierung des [[Softwaredesign]]s:&amp;#039;&amp;#039; Der [[Quelltext]] von Programmen besteht heute zu Gunsten der besseren [[Wartbarkeit]], [[Softwarequalität#Beispiel ISO/IEC 9126|Verständlichkeit]] und [[Programmierfehler|Fehlerbehebung]] aus jeweils kurzen und übersichtlichen Einzelteilen (siehe [[Modulare Programmierung]]). Nach diesem Prinzip werden in sich abgeschlossene Teilaufgaben (z.&amp;amp;nbsp;B. Leseroutinen, Gültigkeitsprüfungen, aufwändige Berechnungen) als strukturell getrennte [[Routine (Programmierung)|Unterroutinen]] [[Implementierung|implementiert]] (und ggf. an mehreren Stellen im Programmcode aufgerufen). Durch derartige ‚Auslagerungen‘ bleibt der Code übersichtlich; der rechnerinterne Zeit- und Verwaltungsaufwand für die Aufrufe spielt auf modernen Rechenmaschinen praktisch keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
=== Für eigenständige Module ===&lt;br /&gt;
* Ein Aspekt der &amp;#039;&amp;#039;[[Softwarearchitektur]]&amp;#039;&amp;#039; ist die Herstellung von Unterprogrammen zur Verwendung in mehreren Computerprogrammen/-Anwendungen. Bestimmte technische oder betriebliche Funktionen (zum Beispiel eine [[Prüfziffer]]nberechnung) können so beispielsweise unternehmensweit einheitlich genutzt werden.&lt;br /&gt;
* Module können in &amp;#039;&amp;#039;unterschiedlichen Programmiersprachen&amp;#039;&amp;#039; separat erstellt und [[Compiler|kompiliert]] und in [[Programmbibliothek]]en zur Verwendung bereitgestellt werden.&lt;br /&gt;
* Funktionalitäten können nach dem &amp;#039;&amp;#039;[[Modularität|Baukastenprinzip]]&amp;#039;&amp;#039; optional eingebunden werden.&lt;br /&gt;
* Für kommerzielle Anwendungen können einzelne Bestandteile &amp;#039;&amp;#039;separat lizenziert&amp;#039;&amp;#039; werden.&lt;br /&gt;
* &amp;#039;&amp;#039;Mehrere Entwickler oder Entwicklergruppen&amp;#039;&amp;#039; können Teile einer Anwendung unabhängig voneinander erstellen und [[Softwaretest|testen]].&lt;br /&gt;
* Eigenständige Module sind bei Bedarf meist &amp;#039;&amp;#039;unabhängig von ihren Aufrufprogrammen änderbar&amp;#039;&amp;#039; (solange ihre Schnittstelle identisch bleibt). In besonderem Maß gilt dies für dynamisch ladbare Module.&lt;br /&gt;
&lt;br /&gt;
== Einsatz/Verwendung ==&lt;br /&gt;
Der Einsatz von Modulen entspricht dem Prinzip der [[Datenkapselung (Programmierung)|Kapselung]] (&amp;#039;&amp;#039;encapsulation&amp;#039;&amp;#039;); denn:&lt;br /&gt;
* Die &amp;#039;&amp;#039;Schnittstelle&amp;#039;&amp;#039; eines Moduls enthält/benennt nur die Daten(bereiche), die das Modul als Eingabe und Ergebnis der Verarbeitung braucht/liefert.&lt;br /&gt;
* Die &amp;#039;&amp;#039;Implementierung&amp;#039;&amp;#039; enthält den tatsächlichen Programmcode.&lt;br /&gt;
Außerhalb des Moduls bleiben die Verarbeitungsweise und evtl. Modul-eigene Daten verborgen (Prinzip des &amp;#039;&amp;#039;information hiding&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
Große, komplexe Programme können durch den Einsatz von Modulen gegliedert und strukturiert werden. Dies kann in vielerlei Hinsicht von Nutzen sein (vergleiche auch [[Modularität]]). Beispielsweise hat die Größe der Module einen Einfluss auf die [[Fehlerdichte]] – sie ist am geringsten bei einer Modulgröße von 200 bis 400 [[Lines of Code]].&amp;lt;ref&amp;gt;{{Internetquelle |autor=Y. Malayia, J. Denton |url=https://pdfs.semanticscholar.org/9e75/e39f201bea81553a5b3f9962b163c17a0517.pdf |titel=Module size distribution and defect density |titelerg= |werk=11th International Symposium on Software Reliability Engineering (ISSRE’00) |hrsg= |datum=Oktober 2000 |seiten= |archiv-url=https://web.archive.org/web/20180801190713/https://pdfs.semanticscholar.org/9e75/e39f201bea81553a5b3f9962b163c17a0517.pdf |archiv-datum=2018-08-01 |abruf=2018-08-01 |abruf-verborgen= |format=pdf |sprache=en |kommentar= |zitat= |offline=1 |archiv-bot=2022-03-27 10:23:13 InternetArchiveBot }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
Entwurf und Definition von Modulen und Schnittstellen ist Teil der [[Softwaredesign|Designphase]] in der Softwareentwicklung.&lt;br /&gt;
&lt;br /&gt;
Das Modulkonzept wurde zuerst von [[David Parnas]] publiziert.&lt;br /&gt;
&lt;br /&gt;
Zahlreiche Programmiersprachen unterstützen das Modulkonzept durch integrierte Sprachmittel, beispielsweise [[Ada (Programmiersprache)|Ada]], [[COBOL]], [[D (Programmiersprache)|D]], F, [[Fortran]], [[Haskell (Programmiersprache)|Haskell]], [[Java (Programmiersprache)|Java]], [[ML (Programmiersprache)|ML]], [[Modula-2]], [[Oberon (Programmiersprache)|Oberon]], [[Component Pascal]] und [[PL/I]]. Daneben sind Skriptsprachen wie [[Perl (Programmiersprache)|Perl]], [[Python (Programmiersprache)|Python]], [[PHP]] und [[Ruby (Programmiersprache)|Ruby]] zu nennen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele für Varianten von Modulen ==&lt;br /&gt;
Die nachfolgenden Beispiele zeigen, dass Module in unterschiedlichen technischen Ausprägungen auftreten können:&lt;br /&gt;
&lt;br /&gt;
=== Module als Strukturierungsmittel im Quelltext ===&lt;br /&gt;
Module sind nach den Prinzipien der modularen Programmierung „logische Teilblöcke“, in die die Aufgabenstellung eines [[Computerprogramm]]s zerlegt wird. Das Modul ist häufig nur als individueller Codeabschnitt im [[Quelltext]] definiert, bei [[Objektorientierte Programmierung|OOP]] kann dieser eine [[Klasse (objektorientierte Programmierung)|Klasse]] sein. In diesem Codeabschnitt/Modul können weitere Module enthalten sein oder als eigenständiges, getrennt kompiliertes [[Unterprogramm]] aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
=== Klassen in der Objektorientierung ===&lt;br /&gt;
Eine spezielle Form von Modul/Modularisierung sind die [[Klasse (Objektorientierung)|Klassen]] der [[Objektorientierte Programmierung|objektorientierten Softwareentwicklung]]:&lt;br /&gt;
* Von Klassen können Exemplare in Form von [[Objekt (Programmierung)|Objekten]] erzeugt ([[Objekt (Programmierung)#Instanziierung|instanziiert]]) werden,&lt;br /&gt;
* Klassen können Eigenschaften an andere Klassen vererben,&lt;br /&gt;
* [[Polymorphie (Programmierung)|Polymorphismus]] erlaubt es Klassen, Eigenschaften zur Laufzeit zu verändern – Beziehungen zwischen anderen Modulen sind in der Regel statisch.&amp;lt;!-- hängt von der Implementierung ab --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Objektmodul (Großrechner IBM-Welt) ===&lt;br /&gt;
Aus einem Quelltext erzeugt ein [[Compiler]] oder ein [[Assembler (Informatik)|Assembler]] ein sogenanntes [[Objektcode|Objektmodul]], dessen Anweisungen in Form von [[Maschinencode]] in einer [[Programmbibliothek]] abgelegt werden. Um ein Programm ausführen zu können, wird sein Objektcode mit dem Objektcode aller aufgerufenen Unterprogramme mit einem sog. [[Linker (Computerprogramm)|Linker]] &amp;#039;zusammengebunden&amp;#039;, wobei u.&amp;amp;nbsp;a. die Einsprungadressen der Unterprogramme eingesetzt werden. Ergebnis ist ein [[Lademodul]].&lt;br /&gt;
&lt;br /&gt;
=== Lademodul (Großrechner IBM-Welt) ===&lt;br /&gt;
Variante A: Hauptprogramme und ihnen (= statisch) hinzugebundene Unterprogramme werden zu einem gemeinsamen [[Ausführbare Datei|ausführbaren Programm]] als gemeinsames ‚Lademodul &amp;lt;Hauptprogramm&amp;gt;‘ in einer [[Programmbibliothek]] abgestellt. Von dort aus können sie zum Beispiel über [[Job Control Language|JCL-Aufrufe]] (EXEC &amp;lt;Pgm&amp;gt;) aufgerufen werden.&amp;lt;br&amp;gt;&lt;br /&gt;
Variante B: Sollen Unterprogramme erst beim Programmlauf (= dynamisch) geladen werden, so wird aus ihrem Objektcode ein einzelnes ‚Lademodul &amp;lt;UPRO&amp;gt;‘ erzeugt, das durch einen Ladebefehl im aufrufenden (Haupt-)Programm über das Betriebssystem geladen und danach – wie bei statisch gebundenen Modulen – zur Verarbeitung aufgerufen wird.&amp;lt;br&amp;gt;&lt;br /&gt;
Zusammenwirken von aufrufendem und aufgerufenem Programm(teil) im Detail: Siehe [[Unterprogramm#Objektmodule Großrechner IBM-Welt|Unterprogramm]].&lt;br /&gt;
&lt;br /&gt;
=== Module bei MS Access und VBA ===&lt;br /&gt;
Die [[Integrierte Entwicklungsumgebung|Entwicklungsumgebung]] [[MS Access]] versteht unter ‚Modul‘ eine Zusammenfassung aller Prozeduren bzw. Funktionen, die für ein Objekt, zum Beispiel ein Formular oder einen Bericht in [[Visual Basic for Applications|VBA]] angelegt wurden. In solchen Modulen können weitere, untergeordnete Teilfunktionen angelegt und ausgeführt werden, zum Beispiel „Ereignisprozeduren“,&amp;lt;ref&amp;gt;Microsoft &amp;#039;&amp;#039;Erstellen einer VBA-Prozedur&amp;#039;&amp;#039; {{Webarchiv|url=http://office.microsoft.com/de-ch/access-help/erstellen-einer-visual-basic-prozedur-HP005186705.aspx | wayback=20140408215743 | text= &amp;#039;&amp;#039;Funktionen in Standard- oder Klassenmodulen&amp;#039;&amp;#039;}}&amp;lt;/ref&amp;gt; mit denen beim Ändern eines bestimmten Datenfelds in einem Formular eine individuelle Prüfung erfolgen soll. Zusätzlich können zum Beispiel Module für global gültige Daten (z.&amp;amp;nbsp;B. ‚GLOBAL DATA‘) oder für global ansprechbare Funktionen (etwa ‚GLOBAL CODE‘) angelegt werden.&lt;br /&gt;
&lt;br /&gt;
=== Der Modulbegriff bei SAP ===&lt;br /&gt;
In der Software von [[SAP]] werden einzelne Anwendungen „Modul“ genannt.&amp;lt;ref&amp;gt;SAP ERP &amp;#039;&amp;#039;Was ist ERP?&amp;#039;&amp;#039; [https://www.sap.com/germany/products/what-is-erp.html] &amp;#039;&amp;#039;„Jede Anwendung, also jedes ERP-Modul, ist auf einen Geschäftsbereich ausgerichtet.“&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt; Dies entspricht jedoch dem softwaretechnischen Modulbegriff nur im weitesten Sinn und gilt als Zusammenfassung von Funktionalität auf einem betriebswirtschaftlichen Level, den ein Anwender optional erwerben und nutzen kann.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Kernel-Modul]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Wiktionary}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Softwarearchitektur]]&lt;br /&gt;
[[Kategorie:Software-Modul| ]]&lt;br /&gt;
[[Kategorie:Programmiersprachelement]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>