2010-04-24 14 views
15

¿Cuál es la diferencia entre el diseño de módulo frente a componente?Módulo frente a diseño de componentes

Gracias

+0

Esto depende del idioma/entorno del que hablas (ej. El módulo .Net es algo completamente diferente a un módulo perl). ¿En cual estas interesado? – Foxfire

+0

El único contexto en el que puedo pensar que tendría sentido para esta pregunta es Joomla !, pero hasta que tengamos alguna aclaración, no me molestaré en responder. – cHao

+0

en términos de marcos. ¿Me puede dar un ejemplo de framework PHP que sea módulo vs. componente? – ms80

Respuesta

10

me gustaría compartir mi idea acerca de esta diferencia.

Tanto el componente como el módulo se utilizan para referirse a un grupo de funciones o como parte de una función. El módulo es más lógico, por ejemplo: módulo de Finanzas, módulo de recursos humanos, módulo de fabricación ... en el sistema ERP. Por otro lado, el componente es más físico. En software, puede ser un dll, ocx, exe, ...

No hay criterios para medir cuál es mayor que el otro. Un componente puede contener una lista de módulos y un módulo también puede contener muchos componentes. Los componentes se usan para modelar un sistema en vista técnica, y el módulo se usa para modelar el sistema en la vista de funciones (funcionalidades del sistema)

+1

Esta es definitivamente una respuesta incorrecta. Citando de https://support.microsoft.com/en-us/kb/815065: "El uso de archivos DLL ayuda a promover la modularización del código, la reutilización del código, [...]" - no se puede decir "el componente es más físico" Las DLL son todas de modularidad y no se puede obtener más físico que eso. – arpadf

+0

Lo mismo para los paquetes OSGI https://www.osgi.org/developer/architecture/: "Por lo tanto, la modularidad está en el núcleo de las especificaciones OSGi y está incorporada en el concepto bundle. En términos Java, un paquete es un archivo JAR viejo y simple "- nuevamente los módulos son físicos. – arpadf

8

Hay una referencia en OSGi en acción que creí que explicaba las diferencias son muy buenas .

Módulos frente a componentes ¿No parece que los módulos y los componentes tienen mucho en común? Ambos proporcionan cosas entre sí y consumen cosas el uno del otro. También están empaquetados como unidades de implementación independientes. ¿No podrían estos dos considerarse uno y el mismo o al menos combinarse? Sí, podrían hacerlo, pero los componentes y módulos cumplen diferentes propósitos de y son algo ortogonales (no son completamente ortogonales, porque los componentes están hechos de código que finalmente puede empaquetarse en módulos). Los módulos se ocupan del empaquetado del código y las dependencias entre códigos. Los componentes se ocupan de la implementación de la funcionalidad de alto nivel y las dependencias entre los componentes. Los componentes necesitan sus dependencias de código administradas, pero técnicamente no necesitan un sistema de módulos para hacerlo (a menudo somos nosotros los programadores que lo hacemos a través de la ruta de clases). Un buen resumen es que puede pensar en los módulos como en el manejo del código estático y en las dependencias de tiempo de compilación , mientras que los componentes se ocupan de las instancias y las dependencias de instancias .

+0

De acuerdo; Solo quiero reforzar esta vista. La clave para entender la diferencia entre módulos y componentes radica en cómo vemos el sistema: una vista estática donde los módulos y las dependencias entre ellos se derivan directamente del código y una vista de instancia donde los componentes y las dependencias/enlaces entre ellos son resultado del procesamiento en tiempo de ejecución y/o un paso de configuración de pre-ejecución por separado. – arpadf

5

Si se refiere a módulo en el sentido de la modularidad existe una definición en el estándar IEEE Glosario Estándar de Ingeniería de Software Terminología:

"La modularidad es el grado en que un programa de sistema o equipo se compone de componentes discretos de modo que un cambio en un componente tiene un impacto mínimo en otros componentes ".

Y Dr. Bertrand Meyer declaró cinco criterios de modularidad:

  • de descomposición del problema en sub-problemas
  • Compuestabilidad de módulos para producir nuevos sistemas
  • comprensibilidad de un módulo de aislamiento
  • Continuidad: los pequeños cambios tienen efectos localizados
  • Protección: aislamiento de fallas
+4

Si va a citar una fuente oficial, sería preferible obtener la cita correcta: 'El grado en que un sistema o programa de computadora se compone de componentes discretos de modo que un cambio en un componente tiene un impacto mínimo en otros componentes ' – Gerrat

5

Los componentes y los módulos se confunden con demasiada frecuencia.Sin embargo, no son lo mismo , y las implicaciones de una, no se cumplen necesariamente para la otra.

La modularidad es la partición del código en los módulos de la funcionalidad relacionada . En muchos lenguajes de programación, un módulo es simplemente un archivo fuente . Es una práctica común que si el archivo fuente crece demasiado grande, puede dividirlo en dos o más archivos fuente, y poner estos en un nuevo directorio; mientras que un directorio a menudo no se llama módulo, este tipo de descomposición sigue siendo modular.

Un componente, por otro lado, se puede componer de diferentes maneras con otros componentes para formar diferentes programas. Es decir, hay una etapa de composición separada , donde las personas reales deciden qué componentes se deben usar juntos.

He visto el diseño de componentes que se utiliza para reforzar algunas nociones de modularidad. Este enfoque no puede recomendarse debido a la considerable sobrecarga de composición: la complejidad de la composición aumenta polinomio con el número de componentes. Y el número de componentes crece linealmente con el número de grupos de funciones, porque una vez que comience con la modularidad por descomposición del componente , se fuerza a crear un nuevo componente cada vez que necesite un nuevo módulo, porque ese nuevo El módulo de otra manera no pertenecería a ningún lado. Con 100 componentes, la sobrecarga de composición se convirtió en un trabajo de tiempo completo, y cada iteración de composición tardaría un par de semanas, a pesar de los numerosos esfuerzos de automatización . Esto impidió significativamente el desarrollo.

Mi recomendación más simple es que se mantenga alejado de los componentes si es posible posible; sabiendo que los componentes a veces pueden ser una necesidad. Por ejemplo, si hay varias organizaciones independientes involucradas en un proyecto , un componente para cada organización parece aceptable.

Es una cuestión de gusto, qué tan finamente detallada ha sido su descomposición en los módulos , aunque todos están de acuerdo en que la modularidad es una buena cosa .

Si conozco el nombre de una función, mi editor la encontrará lo suficientemente pronto. Por otro lado, si por alguna razón no conozco el nombre de una función (o una clase para el caso), la modularidad se vuelve más importante .

que sería de esperar este último caso, sólo a ser un problema para la funcionalidad que puede vivir desde el uso del programa, así que trate de hacer el descomposición de su programa en módulos reflejan un intuitivo descomposición del comportamiento de su programa en áreas de la funcionalidad .

0

Para el desarrollo digital y la consideración de UI (HTML/CSS/JS), utilizo este enfoque para asegurar que me mantengo organizado y pensando antes de hacerlo. Ha demostrado crear un código más limpio y organizado que se traduce muy bien en hacer más con menos.

En una hoja de estilo típico, estoy actualmente la creación de la siguiente manera:

/* Style Guide – Mobile First 
    1. =Setup 
    2. =Modules as independent units made up of components 
    3. =Components as group of reusable code containing more than one element 
    4. =Classes 
    5. =Responsive as enhancement 
*/ 
  • módulos como unidades independientes formados por componentes: Encabezado, pie de página, secciones, artículos y Aparte, etc. Una casa se compone de muchas salas, todas con estilos y funciones especiales para crear un todo independiente.
  • Componentes como un grupo de código reutilizable que contiene más de un elemento: Listas no ordenadas, las citas, las tarjetas, las tablas, etc.

escribí una explicación más completa se puede leer here.

Espero que esto ayude!

0

de componentes es una entidad de tiempo de ejecución (puede ser hecho por módulos), unidad ejecutable independiente

módulo es un sistema con particiones en unidades de ejecución, la asignación de tareas independiente. Los módulos pueden o no ser un componente

0

En mi opinión, Module y Component son solo un par de funciones y recursos.

Y la diferencia entre ellos es:

componente tiene negocio lógico y módulo no.

Por ejemplo, esta área de entrada de texto es solo un Módulo, pero cuando se llamaba a una API, se convertía en un Componente. puedes poner un módulo en todas partes y funcionará bien, pero Componet solo se puede usar en una página o vista específica (porque tiene una llamada api específica)

Cuestiones relacionadas