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

18

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.

Hoan
la source

Réponses:

16

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

theD
la source
si nous avons un tas d'exigences afin que chaque exigence puisse être considérée comme un module? Par exemple: l'exigence "Ajouter un employé" peut être un module?
Hoan
1
Non ou cela dépend. Les fonctions du programme doivent être décomposées en unités cohérentes. Si les exigences peuvent être ventilées de cette manière, cela peut être oui. Mais je n'ai encore rien vu de tel. De plus, "Ajouter un employé" ne doit pas être candidat au module. Habituellement, les modules sont des structures de niveau supérieur qui décomposent les programmes en unités logiquement cohérentes.
leD
12

Le module peut être un terme surchargé, à tel point que Wikipedia le décrit sous le terme de programmation modulaire lors de l'examen 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 d'un faible couplage et d'une forte 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.

Par le passé, le module a d'autres conséquences qu'elles ont été décrites dans le DL Parnas papier « sur les critères à utiliser dans l' Decomposing Logiciel en modules » . Il s'intéresse principalement aux avantages du remplacement de la décomposition fonctionnelle par une décomposition orientée données qui a constitué 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 peut-être que le terme module est moins important et moins précis dans ce contexte.

DeveloperDon
la source
7

Il n'y a pas de définition formelle d'un module, et ce qu'un module est (ou n'est pas) 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.

Roc Martí
la source