¿Qué es realmente un módulo en ingeniería de software? [cerrado]

18

Según Stephen Schach, "Ingeniería de software clásica y orientada a objetos", capítulo 6:

un módulo consiste en un solo bloque de código que se puede invocar de la manera en que se invoca un procedimiento, función o método

Esto parece muy vago y amplio. Entonces, ¿podría alguien explicarlo claramente y mostrar algunos ejemplos reales de cómo dividir un requisito en módulos? Gracias.

Hoan
fuente

Respuestas:

16

Un módulo,

  • encapsula código y datos para implementar una funcionalidad particular.
  • tiene una interfaz que permite a los clientes acceder a su funcionalidad de manera uniforme.
  • se conecta fácilmente con otro módulo que espera su interfaz.
  • generalmente se empaqueta en una sola unidad para que pueda implementarse fácilmente.

Por ejemplo, dapper.net encapsula el acceso a la base de datos. Tiene una API para acceder a su funcionalidad. Es un archivo único que puede conectarse a un árbol de origen para ser construido.

El concepto de módulo proviene del paradigma de programación modular que defiende que el software debe estar compuesto de componentes separados e intercambiables llamados módulos al dividir las funciones del programa en módulos, cada uno de los cuales cumple una función y contiene todo lo necesario para lograrlo.

El d
fuente
si tenemos un montón de requisitos para que cada requisito se pueda considerar como un módulo? Por ejemplo: ¿el requisito "Agregar empleado" puede ser un módulo?
Hoan
1
No o depende. Las funciones del programa deben dividirse en unidades cohesivas. Si los requisitos pueden desglosarse de esa manera, puede ser sí. Pero todavía no he visto nada como esto. Además, "Agregar empleado" no debe ser un candidato para el módulo. Por lo general, los módulos son estructuras de nivel superior que descomponen los programas en unidades lógicamente coherentes.
THED
12

Módulo podría ser un término sobrecargado, tanto que Wikipedia lo describe bajo el término Programación Modular cuando discute su uso en relación con el software. Lo discuten en términos de programación estructurada que se basa en un enfoque de diseño de arriba hacia abajo. Características clave de la modularidad relacionadas con el uso de bajo acoplamiento y alta cohesión .

Mi uso ha sido que en un lenguaje como C o incluso C ++, un módulo está relacionado con la definición de una unidad compilada por separado de un archivo fuente (.c o .cpp) y, por lo general, un archivo de encabezado asociado (.h). Otros lenguajes usan el módulo como descripción, y el lenguaje Modula-2 coloca la estructuración alrededor de los módulos al frente y al centro en su nombre y su enfoque.

Históricamente, el módulo tiene algunas otras implicaciones como fueron descritos en el DL Parnas papel "en los criterios que se emplearán en la descomposición del software en los módulos" . Está principalmente interesado en discutir los beneficios de reemplazar la descomposición funcional con la descomposición orientada a datos, que fue un gran paso hacia nuestro estado actual del arte, que es la descomposición orientada a objetos.

Los lenguajes orientados a objetos se organizan en torno a clases, por lo que tal vez el término módulo sea menos importante y menos preciso en ese contexto.

DesarrolladorDon
fuente
7

No existe una definición formal de un módulo, y lo que un módulo es (o no) en el contexto de su proyecto depende en gran medida de la naturaleza y el diseño del proyecto.

En términos generales, un módulo es un código independiente que proporciona una funcionalidad específica y estrechamente acoplada, los módulos definen y aplican límites lógicos en su código.

Roc Martí
fuente