Zum Inhalt springen

Modul (Software)

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 16. April 2014 um 11:14 Uhr durch VÖRBY (Diskussion | Beiträge) (Ergebnislieferung und Rückkehr zum rufd Pgm > Einleitung; Syn zu UP vs. engere Sicht (i.Z. mit Redund-Disk zu UP)). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Ein Modul (neutrum, das Modul[1]) ist eine abgeschlossene funktionale Einheit einer Software, bestehend aus einer Folge von Verarbeitungsschritten und Datenstrukturen. Inhalt eines Moduls ist häufig eine wiederkehrende Berechnung oder Bearbeitung von Daten, die mehrfach durchgeführt werden muss. Das Modul führt eine Reihe von Verarbeitungsschritten durch, liefert bei der Rückkehr an das aufrufende Programm Daten als Ergebnis zurück.

Während in diesem allgemeinen Sinn und oft auch im Sprachgebrauch die Ausdrücke Modul und Unterprogramm gleichbedeutend sind, versteht man unter Modul im engeren Sinn entwicklungstechnisch eigenständige Programmteile, die über eine modulspezifische Schnittstelle aufgerufen werden, zum Beispiel als Funktion oder Prozedur. Ein Modul kann selbst weitere Module einbinden (und aufrufen) - so ist eine Hierarchie von Programmaufrufen möglich. Die in Modulen festgelegten Datenstrukturen und Methoden können gegebenenfalls vererbt und von anderen Modulen geerbt werden. Module sind daher ein wesentliches Element in der strukturierten und objektorientierten Programmierung und das charakteristische Wesensmerkmal für das Programmierparadigma der modularen Programmierung.

Nicht zu verwechseln ist ein Modul mit einer Komponente, die in der Funktionalität eine Hierarchieebene höher angesiedelt ist und hier funktionale Module zu Diensten zusammenfasst. Trotzdem werden derartige Komponenten im Sprachgebrauch (zum Beispiel bei SAP[2]) ‚Module‘ genannt. Auch kennen manche Entwicklungsumgebungen oder Programmiersprachen (zum Beispiel VBA[3]) den Ausdruck „Modul“ nicht im Sinne von ‚aufrufbares Unterprogramm‘, sondern verstehen darunter ein Sammelobjekt, in dem mehrere und unterschiedliche Bestandteile der Software (wie Funktionen, Prozeduren, Datendeklarationen usw.) enthalten sein können.

Gründe für das Aufteilen von Programmen in Module

  • Aus der ursprünglichen Sicht der Assemblerprogrammierung war der Grund der Aufteilung die mehrfache Verwendung der gleichen Befehlsfolge an unterschiedlichen Stellen des Programms, somit Einsparung von Speicherplatz und die Vermeidung von Codewiederholungen.
  • In modernen Technologien des Softwareengineering ist ein weiterer wichtiger Grund allerdings die Strukturierung des Softwaredesigns: Der Quelltexts von Programmen besteht heute zu Gunsten der besseren Wartbarkeit, Verständlichkeit und Fehlerbehebung aus jeweils kurzen und übersichtlichen Einzelteilen (siehe Modulare Programmierung). Nach diesem Prinzip werden in sich abgeschlossene Teilaufgaben (z. B. Leseroutinen, Gültigkeitsprüfungen, aufwändige Berechnungen) als strukturell getrennte Unterroutinen 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.
  • Ein Aspekt der Softwarearchitektur ist die Herstellung von Unterprogrammen zur Verwendung in mehreren Computerprogrammen/-Anwendungen. Bestimmte technische oder betriebliche Funktionen (zum Beispiel eine Prüfziffernberechnung) können so beispielsweise unternehmensweit einheitlich genutzt werden.
  • Module können in unterschiedlichen Programmiersprachen separat erstellt und kompiliert und in Programmbibliotheken zur Verwendung bereitgestellt werden.
  • Funktionalitäten können nach dem Baukastenprinzip optional eingebunden werden.
  • Für kommerzielle Anwendungen können einzelne Bestandteile separat lizenziert werden.
  • Mehrere Entwickler(gruppen) können Teile einer Anwendung unabhängig voneinander erstellen und testen.

Einsatz/Verwendung

Der Einsatz von Modulen entspricht dem Prinzip der Kapselung (encapsulation); denn:

  • Die Schnittstelle eines Moduls enthält/benennt nur die Daten(bereiche), die das Modul als Eingabe und Ergebnis der Verarbeitung braucht/liefert.
  • Die Implementierung enthält den tatsächlichen Programmcode.

Außerhalb des Moduls bleiben die Verarbeitungsweise und evtl. Modul-eigene Daten verborgen (Prinzip des information hiding).

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).

Entwurf und Definition von Modulen und Schnittstellen ist Teil der Designphase in der Softwareentwicklung.

Zu unterscheiden sind Module von den Klassen der objektorientierten Softwareentwicklung:

  • Von Klassen können Exemplare in Form von Objekten erzeugt (instanziiert) werden,
  • Klassen können Eigenschaften an andere Klassen vererben,
  • Polymorphismus erlaubt es Klassen, Eigenschaften zur Laufzeit zu verändern – Beziehungen zwischen Modulen sind statisch.

Das Modulkonzept wurde zuerst von David Parnas publiziert.

Zahlreiche Programmiersprachen unterstützen das Modulkonzept durch integrierte Sprachmittel, beispielsweise Ada, COBOL, D, F, Fortran, Haskell, Java, ML, Modula-2, Oberon, Component Pascal und PL/I. Daneben sind Skriptsprachen wie Perl, Python, PHP und Ruby zu nennen.

Siehe auch

Einzelnachweise

  1. Duden, Band 5, Fremdwörterbuch, 7. neu bearbeitete und erweiterte Auflage, Mannheim 2001
  2. SAP-R3-Module[1]
  3. Microsoft Erstellen einer VBA-Prozedur [2] Funktionen in Standard- oder Klassenmodulen