web-dev-qa-db-fra.com

Qu'est-ce qu'un module en génie logiciel?

Selon Stephen Schach, "Génie logiciel classique et orienté objet", chapitre 6:

un module consiste en un seul bloc de code qui peut être invoqué de la même manière qu'une procédure, une fonction ou une méthode est invoquée

Cela semble très vague et large. Alors, quelqu'un pourrait-il l'expliquer clairement et montrer des exemples réels de la façon de diviser une exigence en modules? Merci.

18
Hoan

Un module,

  • encapsule du code et des données pour implémenter une fonctionnalité particulière.
  • possède une interface qui permet aux clients d'accéder à ses fonctionnalités de manière uniforme.
  • est facilement enfichable avec un autre module qui attend son interface.
  • est généralement emballé dans une seule unité afin qu'il puisse être facilement déployé.

Par exemple, dapper.net encapsule l'accès à la base de données. Il dispose d'une API pour accéder à ses fonctionnalités. Il s'agit d'un seul fichier qui peut être branché dans une arborescence source à construire.

Le concept de module vient du paradigme de programmation modulaire qui préconise que le logiciel soit composé de composants séparés et interchangeables appelés modules en décomposant les fonctions de programme en modules, chacun remplissant une fonction et contenant tout le nécessaire pour y parvenir.

16
theD

Le module peut être un terme surchargé, à tel point que Wikipedia le décrit sous le terme Programmation modulaire lorsqu'il discute de son utilisation par rapport au logiciel. Ils en discutent en termes de programmation structurée basée sur une approche de conception descendante. Caractéristiques clés de la modularité liées à l'utilisation de faible couplage et élevé cohésion .

Mon utilisation a été que dans un langage comme C ou même C++, un module est lié à la définition d'une unité compilée séparément à partir d'un fichier source (.c ou .cpp) et généralement un fichier d'en-tête associé (.h). D'autres langages utilisent le module comme description, et le langage Modula-2 place la structuration autour des modules au premier plan dans son nom et son approche.

Historiquement, le module a d'autres implications, comme décrit dans le papier D.L. Parnas"Sur les critères à utiliser pour décomposer un logiciel en modules" . Il se préoccupe principalement de discuter des avantages de remplacer la décomposition fonctionnelle par une décomposition orientée données qui a été un grand pas vers notre état actuel de la technique qui est la décomposition orientée objet.

Les langages orientés objet sont organisés autour de classes, donc le terme module est peut-être moins important et moins précis dans ce contexte.

12
DeveloperDon

Il n'y a pas de définition formelle d'un module, et ce qu'est ou non un module dans le contexte de votre projet dépend en grande partie de la nature et de la conception du projet.

De manière générale, un module est un morceau de code autonome qui fournit des fonctionnalités spécifiques et étroitement couplées, les modules définissent et appliquent des limites logiques dans votre code.

7
Roc Martí