SlideShare una empresa de Scribd logo
1 de 5
MODULARIDAD
MODULARIDAD
Si bien el acto de particionar un programa en componentes individuales reduce en algún
grado la complejidad, una razón más poderosa para realizarlo es que esto crea un número
de contornos bien documentados dentro del programa.
En algunos lenguajes, como por ejemplo Smalltalk, no existe el concepto de módulo, y la
clase forma la unidad física de descomposición.
En otros (Object Pascal, C++, Ada, CLOS), el módulo es una construcción separada. En
estos lenguajes, las clases y los objetos forman la estructura lógica de un sistema; colocando
estas abstracciones en módulos se produce la estructura física.
La mayoría de los lenguajes que soportan al módulo como un concepto separado, también
distinguen entre la interface y la implementación del módulo.
C++ maneja los módulos directamente como files compilados en forma separada. La práctica
tradicional en la comunidad C/C++ es colocar las interfaces de los módulos en files con
extensión .h (header files). Las implementaciones de los módulos son colocados en archivos
con extensión .c, cpp o .C.
MODULARIDAD
Módulo:
Un módulo que se supone que representa una función lógica es una secuencia léxica mente
continúa de instrucciones que se encuentra limitado por elementos de fronteras y además se
caracteriza por disponer de un nombre o identificador
Módulo: Es aquél que está constituido por una o varias instrucciones físicamente contiguas y
lógicamente encadenadas, las cuales se pueden referenciar mediante un nombre y pueden
ser llamadas desde diferentes puntos de un programa.
Un módulo puede ser:
 Un programa
 Una función
 Una subrutina (o procedimiento)
La modularidad se basa en la descomposición de un problema en una serie de sub
problemas; dividiéndolo en módulos que resultan de segmentar el problema en funciones
lógicas que son perfectamente diferenciadas. Esta división exige la presencia de un módulo
denominado módulo de base o principal a objeto de que controle y se relacione con los
demás.
Es una técnica de programación que todavía se utiliza tanto para la construcción de
algoritmos computacionales básicos así como apoyo al desarrollo de sistemas de gestión (en
el diseño de diagramas modulares).
La salida del módulo debe ser función de la entrada, pero no de ningún estado interno.
En la creación de los módulos deben cumplirse tres aspectos básicos: descripción,
rendimiento y diseño.
En la descripción se definen las funciones y objetivos del programa.
Para obtener el máximo rendimiento se ha de comprobar que el programa realice el
proceso aprovechando al máximo todos los recursos de los que dispone.
En cuanto al diseño, se debe comprobar la estructura que sigue el módulo, así como la
estructura de los datos y la forma de comunicaciones entre los diversos y diferentes módulos.
Conforme se extiende el tamaño de los algoritmos, se hace más difícil su revisión,
actualización y/o corrección.
Una política común para solventar este problema consiste en la modularización. Esto
significa que el algoritmo se fragmenta en partes llamadas módulos.
En realidad, es un método de diseño que tiende a dividir el problema, de forma lógica, en
partes perfectamente diferenciadas que pueden ser analizadas, programadas y puestas a
punto independientes.
OBJETIVOS:
Descomponer el sistema en módulos:
 Los grupos deben maximizar el enlace y minimizar el acoplamiento.
Determinar las relaciones entre módulos:
 Identificar y especificar las dependencias entre módulos.
 Determinar la forma de comunicación entre módulos (variables llamadas a funciones,
memoria compartida, paso de mensajes)
Especificar las interfaces de los módulos:
 Facilita la prueba independiente entre los módulos.
 Mejora la comunicación e integración del grupo
CARACTERÍSTICAS:
 Permite reducir la complejidad global del sistema descentralizado; ejemplo: Divide y
vencerás.
 Mejora la escalabilidad y la productividad (los módulos pueden desarrollarse
independientemente por varias personas)
PRINCIPIOS PARA ASEGURAR DISEÑOS MODULARES:
 Soporte de lenguaje para unidades modulares.
 Los módulos deben corresponder a unidades sintácticas del lenguaje utilizado.
POCAS INTERFACES:
 Cada módulo debe comunicarse con tan pocos como sea posible.
INTERFACES PEQUEÑAS (ACOPLAMIENTO DÉBIL):
 Si dos módulos se comunican, deben intercambiar la menor información posible..
INTERFACES EXPLÍCITAS:
 Cuando dos módulos se comunican, debe estar claro en el texto de uno o de ambos.
OCULTACIÓN DE LA INFORMACIÓN:
Toda la información sobre un módulo debe ser privada al módulo, a menos que se haya
declarado específicamente como pública.
ALGUNAS VENTAJAS DE UTILIZAR MÓDULOS SON:
 Un programa modular es fácil de mantener y modificar.
 Un programa modular es más fácil de escribir y depurar (ejecutar, probar y poner a
punto).
 Un programa modular es más fácil de controlar.
 El desglose de un problema en módulos permite encomendar los módulos más
complejos a los programadores más experimentados y los más sencillos a los
programadores nóveles. Posibilita el uso repetitivo de las rutinas en el mismo o en
diferentes programas.
DESVENTAJAS DEL USO DE MÓDULOS:
 No se dispone de algoritmos formales de modularidad, por lo que a veces los
programadores no tienen claras las ideas de los módulos.
 La programación modular requiere más memoria y tiempo de ejecución.
Segmento: El segmento a diferencia del módulo se caracteriza porque no dispone de un
nombre o identificador
METODOLOGÍA DESCENDENTE: (TOP – DOWN)
Proceso mediante el cual un problema se descompone en una serie de niveles o pasos
sucesivos de refinamiento (stipwise). La metodología descendente consiste en efectuar una
relación entre las sucesivas etapas de estructuración, de modo que se relacionen unas con
otras mediante entradas y salidas de información.
Es decir se descompone un problema en etapas o estructuras jerárquicas, de modo que se
puede considerar cada estructura desde dos puntos de vista;
VARIABLES:
Clasificación:
Variable Local: Aquella que está declarada y definida dentro de un sub programa, en el
sentido de que está dentro de ese sub programa y es distinta de las variables con el mismo
nombre declaradas en cualquier parte del programa principal.
El significado de una variable se confina al procedimiento en el que está declarada. Cuando
otro sub programa utiliza el mismo nombre, se refiere a una posición diferente en memoria.
El uso de variables locales tiene muchas ventajas. En particular, hace a los sub
programas independientes con la comunicación entre el programa principal y los sub
programas manipulados estructuralmente a través de la lista de parámetros.
Una variable local a un sub programa, no tiene ningún significado en otros sub programas.
Si un sub programa asigna un valor a una de sus variables locales, este valor no es accesible
a otros programas, es decir, no pueden utilizar este valor.
Variable Global: Aquella que está declarada para el programa o algoritmo principal del que
dependen todos los sub programas
Esta variable tiene la ventaja de compartir información de diferentes sub programas sin una
correspondiente entrada en la lista de parámetros
PROCEDIMIENTOS:
Un procedimiento o sub rutina, es un sub programa que ejecuta un proceso específico.
Ningún valor esta asociado con el nombre del procedimiento, por consiguiente no puede
ocurrir en una expresión. Un procedimiento se llama escribiendo su nombre Ejemplo: SORT
para indicar que un procedimiento denominado SORT se va a usar.
Cuando se invoca el procedimiento los pasos que los define se ejecuta y a continuación se
devuelve el control al programa que le llamó.
PROCEDIMIENTO VS FUNCION
Los procedimientos y funciones son sub programas, cuyo diseño y misión son similares, sin
embargo existen unas diferencias esenciales entre ellos:
Un procedimiento es llamado desde el algoritmo o programa principal, mediante su nombre y
una lista de parámetros actuales o bien con la instrucción llamar_a (call). Al llamar al
procedimiento se detiene momentáneamente el programa que se está realizando y el control
pasa al procedimiento llamado, después de que las acciones del procedimiento se ejecutan,
se regresa a la acción inmediata siguiente a la que se llamó.
Las funciones devuelven un valor, los procedimientos pueden devolver 0, 1 ó n valores y en
forma de lista de parámetros.
El procedimiento se declara igual que la función, pero su nombre no está asociado a ninguno
de los resultados que obtiene.
FUNCIONES:
Las funciones son bloques de instrucciones que tienen por objeto el alcanzar un resultado
que sustituirá a la función en el punto de invocación (las funciones devuelven un resultado).
Cada función se evoca utilizando su nombre en una expresión con los argumentos actuales o
reales encerrados entre paréntesis.
Para hacer una referencia a una función se invoca mediante un nombre y en caso de existir,
una lista de parámetros actuales necesarios (argumentos). Los argumentos deben coincidir
en cantidad, tipo y orden con los de la función que fue definida. La función devuelve un valor
único.
Las funciones a que se hace referencia, se conocen como funciones de usuario puesto que
son definidas por él mismo y permiten su uso en forma idéntica a las funciones estándares.
Para coordinar e iniciar el procesamiento, se utiliza un módulo principal que es colocado al
final del algoritmo.
Una llamada a la función implica los siguientes pasos:
 A cada parámetro formal se le asigna el valor real de su correspondiente parámetro
actual.
 Se ejecuta el cuerpo de acciones de la función.
 Se devuelve el valor de la función al nombre de la función y se retorna al punto de
llamada.
ARQUITECTURA MODULAR:
La arquitectura es el elemento estable ante los cambios en el ciclo de vida de los módulos; la
clave está en separar interfaces de implementaciones.
 La separación entre interfaces e implementación:
 Aísla de los cambios.
 Sirve de mecanismo (compilable) de unión entre arquitectura e implementación.
El papel de la arquitectura es proporcionar información de diseño a los desarrolladores, para
que éstos puedan hacer cambios y correcciones a los módulos, sin romper la arquitectura.
En cada escala de un sistema modular, se puede definir una arquitectura y una
implementación:
 La implementación es la realización de los componentes modulares.
 La arquitectura es la abstracción que define las interfaces entre componentes.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Cap5 DiseñO de Sistemas
Cap5 DiseñO de SistemasCap5 DiseñO de Sistemas
Cap5 DiseñO de Sistemas
 
MODELAMIENTO VISUAL Y UML
MODELAMIENTO VISUAL Y UMLMODELAMIENTO VISUAL Y UML
MODELAMIENTO VISUAL Y UML
 
Uml
UmlUml
Uml
 
Semanas01y02
Semanas01y02Semanas01y02
Semanas01y02
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Conceptos Basicos Uml
Conceptos Basicos UmlConceptos Basicos Uml
Conceptos Basicos Uml
 
Tm02 introducción a uml
Tm02 introducción a umlTm02 introducción a uml
Tm02 introducción a uml
 
Unidad 1 y 2 de desarrollo
Unidad 1 y 2 de desarrolloUnidad 1 y 2 de desarrollo
Unidad 1 y 2 de desarrollo
 
Componentes
ComponentesComponentes
Componentes
 
samir
samirsamir
samir
 
diagrama de despliegue
diagrama de desplieguediagrama de despliegue
diagrama de despliegue
 
El lenguaje de modelado unificado
El lenguaje de modelado unificadoEl lenguaje de modelado unificado
El lenguaje de modelado unificado
 
diagramas
diagramas diagramas
diagramas
 
Diagramas Uml
Diagramas UmlDiagramas Uml
Diagramas Uml
 
Uml
UmlUml
Uml
 
Programacion estruturada
Programacion estruturadaProgramacion estruturada
Programacion estruturada
 
Curso Uml 2.5 Diagramas De ImplementacióN
Curso Uml   2.5 Diagramas De ImplementacióNCurso Uml   2.5 Diagramas De ImplementacióN
Curso Uml 2.5 Diagramas De ImplementacióN
 
UML - Analisis de Sistemas
UML - Analisis de SistemasUML - Analisis de Sistemas
UML - Analisis de Sistemas
 
Diagramas de implementacion
Diagramas de implementacionDiagramas de implementacion
Diagramas de implementacion
 
Introduccion a haskell
Introduccion a haskellIntroduccion a haskell
Introduccion a haskell
 

Destacado

Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructuradoDascorp
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++die_dex
 
Algoritmos
AlgoritmosAlgoritmos
AlgoritmosCarlos
 
6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mvEcler Mamani Vilca
 
Tecnicas de programacion
Tecnicas de programacionTecnicas de programacion
Tecnicas de programacionALCAZADOR
 
Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Textonakaryortegaleon
 
Programación estructurada presentación
Programación estructurada presentaciónProgramación estructurada presentación
Programación estructurada presentaciónIvarra
 
Estilos de programación y sus lenguajes
Estilos de programación y sus lenguajesEstilos de programación y sus lenguajes
Estilos de programación y sus lenguajesPedro Contreras Flores
 
Inducción: Introducción a la Programación en Misión Sucre
Inducción: Introducción a la Programación en Misión SucreInducción: Introducción a la Programación en Misión Sucre
Inducción: Introducción a la Programación en Misión SucreStephenson Prieto
 
Administracion De Archivos Vi
Administracion De Archivos ViAdministracion De Archivos Vi
Administracion De Archivos ViSistemOper
 
Generaciones de los lenguajes de programacion
Generaciones de los lenguajes de programacionGeneraciones de los lenguajes de programacion
Generaciones de los lenguajes de programacionNelson Dominguez
 
Analisis y diseño de algoritmos
Analisis y diseño de algoritmosAnalisis y diseño de algoritmos
Analisis y diseño de algoritmosYulyana López
 

Destacado (20)

Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
3.sistema de archivos
3.sistema de archivos3.sistema de archivos
3.sistema de archivos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Tecnicas de diseño
Tecnicas de diseñoTecnicas de diseño
Tecnicas de diseño
 
6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv6 libro fundamentos cap__modularidad_ecler mv
6 libro fundamentos cap__modularidad_ecler mv
 
Archivos C++
Archivos C++Archivos C++
Archivos C++
 
Tecnicas de programacion
Tecnicas de programacionTecnicas de programacion
Tecnicas de programacion
 
lenguajes de programacion
lenguajes de programacionlenguajes de programacion
lenguajes de programacion
 
Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Texto
 
Programación estructurada presentación
Programación estructurada presentaciónProgramación estructurada presentación
Programación estructurada presentación
 
Tecnología Orientada a Objetos
Tecnología Orientada a ObjetosTecnología Orientada a Objetos
Tecnología Orientada a Objetos
 
Estilos de programación y sus lenguajes
Estilos de programación y sus lenguajesEstilos de programación y sus lenguajes
Estilos de programación y sus lenguajes
 
Manejo de archivos en el lenguaje C
Manejo de archivos en el lenguaje CManejo de archivos en el lenguaje C
Manejo de archivos en el lenguaje C
 
Inducción: Introducción a la Programación en Misión Sucre
Inducción: Introducción a la Programación en Misión SucreInducción: Introducción a la Programación en Misión Sucre
Inducción: Introducción a la Programación en Misión Sucre
 
Administracion De Archivos Vi
Administracion De Archivos ViAdministracion De Archivos Vi
Administracion De Archivos Vi
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Generaciones de los lenguajes de programacion
Generaciones de los lenguajes de programacionGeneraciones de los lenguajes de programacion
Generaciones de los lenguajes de programacion
 
Analisis y diseño de algoritmos
Analisis y diseño de algoritmosAnalisis y diseño de algoritmos
Analisis y diseño de algoritmos
 

Similar a Modularidad: División de problemas en módulos

Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructuradoazuajesimon
 
Diseño Estructurado
Diseño EstructuradoDiseño Estructurado
Diseño EstructuradoDrago Díaz
 
Español estructurado
Español estructuradoEspañol estructurado
Español estructuradoJorge Garcia
 
Unidad III-Programación Modular-introducción al lenguaje programable.pdf
Unidad III-Programación Modular-introducción al lenguaje programable.pdfUnidad III-Programación Modular-introducción al lenguaje programable.pdf
Unidad III-Programación Modular-introducción al lenguaje programable.pdfEDWINERNESTOMADRIDME
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructuradoMarilugosale
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructuradoYamnibel
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...negroues
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...negroues
 
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdf
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdfMODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdf
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdfannalybautistaruiz
 
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdf
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdfMODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdf
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdfannalybautistaruiz
 
Diseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesDiseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesAndresRealp1
 
Uml presentacion
Uml presentacionUml presentacion
Uml presentacionexusjhonk
 
Diseño estructurado y las técnicas que lo caracterizan
Diseño estructurado y las técnicas que lo caracterizanDiseño estructurado y las técnicas que lo caracterizan
Diseño estructurado y las técnicas que lo caracterizanJonathan Bastidas
 

Similar a Modularidad: División de problemas en módulos (20)

Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
Diseño Estructurado
Diseño EstructuradoDiseño Estructurado
Diseño Estructurado
 
Español estructurado
Español estructuradoEspañol estructurado
Español estructurado
 
Unidad III-Programación Modular-introducción al lenguaje programable.pdf
Unidad III-Programación Modular-introducción al lenguaje programable.pdfUnidad III-Programación Modular-introducción al lenguaje programable.pdf
Unidad III-Programación Modular-introducción al lenguaje programable.pdf
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
Samir
SamirSamir
Samir
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Modulos de vista
Modulos de vistaModulos de vista
Modulos de vista
 
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdf
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdfMODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdf
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdf
 
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdf
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdfMODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdf
MODULO II ALGORITMO Y PROGRAMACIÓN ESTRUCTURA DE PROGRAMA.pdf
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de software
 
Diseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesDiseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentes
 
Uml presentacion
Uml presentacionUml presentacion
Uml presentacion
 
Diseño estructurado y las técnicas que lo caracterizan
Diseño estructurado y las técnicas que lo caracterizanDiseño estructurado y las técnicas que lo caracterizan
Diseño estructurado y las técnicas que lo caracterizan
 
Nixon torrealbav
Nixon torrealbavNixon torrealbav
Nixon torrealbav
 
Programación modular
Programación modularProgramación modular
Programación modular
 

Más de Jorge Eliecer Martinez Polo (20)

Cristo
CristoCristo
Cristo
 
Matemática estilo ifes
Matemática estilo ifesMatemática estilo ifes
Matemática estilo ifes
 
Estequiometría
EstequiometríaEstequiometría
Estequiometría
 
Estequiometría
EstequiometríaEstequiometría
Estequiometría
 
2000
20002000
2000
 
Título
TítuloTítulo
Título
 
123
123123
123
 
123
123123
123
 
Manuel
ManuelManuel
Manuel
 
Eticaymoral síntesis
Eticaymoral síntesisEticaymoral síntesis
Eticaymoral síntesis
 
Proceso emocional
Proceso emocionalProceso emocional
Proceso emocional
 
Proceso emocional
Proceso emocionalProceso emocional
Proceso emocional
 
La conspiracion-de-los-iluminados-illuminatis (1) (1)
La conspiracion-de-los-iluminados-illuminatis (1) (1)La conspiracion-de-los-iluminados-illuminatis (1) (1)
La conspiracion-de-los-iluminados-illuminatis (1) (1)
 
Ejecuciã“n de instrucciones
Ejecuciã“n de instruccionesEjecuciã“n de instrucciones
Ejecuciã“n de instrucciones
 
Ejercicios de programacion_en_java
Ejercicios de programacion_en_javaEjercicios de programacion_en_java
Ejercicios de programacion_en_java
 
El origen
El origenEl origen
El origen
 
El origen
El origenEl origen
El origen
 
El origen
El origenEl origen
El origen
 
Definicion de bacterias y ongos
Definicion de bacterias y ongosDefinicion de bacterias y ongos
Definicion de bacterias y ongos
 
La memoria del
La memoria delLa memoria del
La memoria del
 

Modularidad: División de problemas en módulos

  • 1. MODULARIDAD MODULARIDAD Si bien el acto de particionar un programa en componentes individuales reduce en algún grado la complejidad, una razón más poderosa para realizarlo es que esto crea un número de contornos bien documentados dentro del programa. En algunos lenguajes, como por ejemplo Smalltalk, no existe el concepto de módulo, y la clase forma la unidad física de descomposición. En otros (Object Pascal, C++, Ada, CLOS), el módulo es una construcción separada. En estos lenguajes, las clases y los objetos forman la estructura lógica de un sistema; colocando estas abstracciones en módulos se produce la estructura física. La mayoría de los lenguajes que soportan al módulo como un concepto separado, también distinguen entre la interface y la implementación del módulo. C++ maneja los módulos directamente como files compilados en forma separada. La práctica tradicional en la comunidad C/C++ es colocar las interfaces de los módulos en files con extensión .h (header files). Las implementaciones de los módulos son colocados en archivos con extensión .c, cpp o .C. MODULARIDAD Módulo: Un módulo que se supone que representa una función lógica es una secuencia léxica mente continúa de instrucciones que se encuentra limitado por elementos de fronteras y además se caracteriza por disponer de un nombre o identificador Módulo: Es aquél que está constituido por una o varias instrucciones físicamente contiguas y lógicamente encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde diferentes puntos de un programa. Un módulo puede ser:  Un programa  Una función  Una subrutina (o procedimiento) La modularidad se basa en la descomposición de un problema en una serie de sub problemas; dividiéndolo en módulos que resultan de segmentar el problema en funciones lógicas que son perfectamente diferenciadas. Esta división exige la presencia de un módulo denominado módulo de base o principal a objeto de que controle y se relacione con los demás. Es una técnica de programación que todavía se utiliza tanto para la construcción de algoritmos computacionales básicos así como apoyo al desarrollo de sistemas de gestión (en el diseño de diagramas modulares).
  • 2. La salida del módulo debe ser función de la entrada, pero no de ningún estado interno. En la creación de los módulos deben cumplirse tres aspectos básicos: descripción, rendimiento y diseño. En la descripción se definen las funciones y objetivos del programa. Para obtener el máximo rendimiento se ha de comprobar que el programa realice el proceso aprovechando al máximo todos los recursos de los que dispone. En cuanto al diseño, se debe comprobar la estructura que sigue el módulo, así como la estructura de los datos y la forma de comunicaciones entre los diversos y diferentes módulos. Conforme se extiende el tamaño de los algoritmos, se hace más difícil su revisión, actualización y/o corrección. Una política común para solventar este problema consiste en la modularización. Esto significa que el algoritmo se fragmenta en partes llamadas módulos. En realidad, es un método de diseño que tiende a dividir el problema, de forma lógica, en partes perfectamente diferenciadas que pueden ser analizadas, programadas y puestas a punto independientes. OBJETIVOS: Descomponer el sistema en módulos:  Los grupos deben maximizar el enlace y minimizar el acoplamiento. Determinar las relaciones entre módulos:  Identificar y especificar las dependencias entre módulos.  Determinar la forma de comunicación entre módulos (variables llamadas a funciones, memoria compartida, paso de mensajes) Especificar las interfaces de los módulos:  Facilita la prueba independiente entre los módulos.  Mejora la comunicación e integración del grupo CARACTERÍSTICAS:  Permite reducir la complejidad global del sistema descentralizado; ejemplo: Divide y vencerás.  Mejora la escalabilidad y la productividad (los módulos pueden desarrollarse independientemente por varias personas) PRINCIPIOS PARA ASEGURAR DISEÑOS MODULARES:  Soporte de lenguaje para unidades modulares.  Los módulos deben corresponder a unidades sintácticas del lenguaje utilizado.
  • 3. POCAS INTERFACES:  Cada módulo debe comunicarse con tan pocos como sea posible. INTERFACES PEQUEÑAS (ACOPLAMIENTO DÉBIL):  Si dos módulos se comunican, deben intercambiar la menor información posible.. INTERFACES EXPLÍCITAS:  Cuando dos módulos se comunican, debe estar claro en el texto de uno o de ambos. OCULTACIÓN DE LA INFORMACIÓN: Toda la información sobre un módulo debe ser privada al módulo, a menos que se haya declarado específicamente como pública. ALGUNAS VENTAJAS DE UTILIZAR MÓDULOS SON:  Un programa modular es fácil de mantener y modificar.  Un programa modular es más fácil de escribir y depurar (ejecutar, probar y poner a punto).  Un programa modular es más fácil de controlar.  El desglose de un problema en módulos permite encomendar los módulos más complejos a los programadores más experimentados y los más sencillos a los programadores nóveles. Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes programas. DESVENTAJAS DEL USO DE MÓDULOS:  No se dispone de algoritmos formales de modularidad, por lo que a veces los programadores no tienen claras las ideas de los módulos.  La programación modular requiere más memoria y tiempo de ejecución. Segmento: El segmento a diferencia del módulo se caracteriza porque no dispone de un nombre o identificador METODOLOGÍA DESCENDENTE: (TOP – DOWN) Proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento (stipwise). La metodología descendente consiste en efectuar una relación entre las sucesivas etapas de estructuración, de modo que se relacionen unas con otras mediante entradas y salidas de información. Es decir se descompone un problema en etapas o estructuras jerárquicas, de modo que se puede considerar cada estructura desde dos puntos de vista; VARIABLES: Clasificación: Variable Local: Aquella que está declarada y definida dentro de un sub programa, en el sentido de que está dentro de ese sub programa y es distinta de las variables con el mismo nombre declaradas en cualquier parte del programa principal. El significado de una variable se confina al procedimiento en el que está declarada. Cuando otro sub programa utiliza el mismo nombre, se refiere a una posición diferente en memoria.
  • 4. El uso de variables locales tiene muchas ventajas. En particular, hace a los sub programas independientes con la comunicación entre el programa principal y los sub programas manipulados estructuralmente a través de la lista de parámetros. Una variable local a un sub programa, no tiene ningún significado en otros sub programas. Si un sub programa asigna un valor a una de sus variables locales, este valor no es accesible a otros programas, es decir, no pueden utilizar este valor. Variable Global: Aquella que está declarada para el programa o algoritmo principal del que dependen todos los sub programas Esta variable tiene la ventaja de compartir información de diferentes sub programas sin una correspondiente entrada en la lista de parámetros PROCEDIMIENTOS: Un procedimiento o sub rutina, es un sub programa que ejecuta un proceso específico. Ningún valor esta asociado con el nombre del procedimiento, por consiguiente no puede ocurrir en una expresión. Un procedimiento se llama escribiendo su nombre Ejemplo: SORT para indicar que un procedimiento denominado SORT se va a usar. Cuando se invoca el procedimiento los pasos que los define se ejecuta y a continuación se devuelve el control al programa que le llamó. PROCEDIMIENTO VS FUNCION Los procedimientos y funciones son sub programas, cuyo diseño y misión son similares, sin embargo existen unas diferencias esenciales entre ellos: Un procedimiento es llamado desde el algoritmo o programa principal, mediante su nombre y una lista de parámetros actuales o bien con la instrucción llamar_a (call). Al llamar al procedimiento se detiene momentáneamente el programa que se está realizando y el control pasa al procedimiento llamado, después de que las acciones del procedimiento se ejecutan, se regresa a la acción inmediata siguiente a la que se llamó. Las funciones devuelven un valor, los procedimientos pueden devolver 0, 1 ó n valores y en forma de lista de parámetros. El procedimiento se declara igual que la función, pero su nombre no está asociado a ninguno de los resultados que obtiene. FUNCIONES: Las funciones son bloques de instrucciones que tienen por objeto el alcanzar un resultado que sustituirá a la función en el punto de invocación (las funciones devuelven un resultado). Cada función se evoca utilizando su nombre en una expresión con los argumentos actuales o reales encerrados entre paréntesis. Para hacer una referencia a una función se invoca mediante un nombre y en caso de existir, una lista de parámetros actuales necesarios (argumentos). Los argumentos deben coincidir en cantidad, tipo y orden con los de la función que fue definida. La función devuelve un valor único.
  • 5. Las funciones a que se hace referencia, se conocen como funciones de usuario puesto que son definidas por él mismo y permiten su uso en forma idéntica a las funciones estándares. Para coordinar e iniciar el procesamiento, se utiliza un módulo principal que es colocado al final del algoritmo. Una llamada a la función implica los siguientes pasos:  A cada parámetro formal se le asigna el valor real de su correspondiente parámetro actual.  Se ejecuta el cuerpo de acciones de la función.  Se devuelve el valor de la función al nombre de la función y se retorna al punto de llamada. ARQUITECTURA MODULAR: La arquitectura es el elemento estable ante los cambios en el ciclo de vida de los módulos; la clave está en separar interfaces de implementaciones.  La separación entre interfaces e implementación:  Aísla de los cambios.  Sirve de mecanismo (compilable) de unión entre arquitectura e implementación. El papel de la arquitectura es proporcionar información de diseño a los desarrolladores, para que éstos puedan hacer cambios y correcciones a los módulos, sin romper la arquitectura. En cada escala de un sistema modular, se puede definir una arquitectura y una implementación:  La implementación es la realización de los componentes modulares.  La arquitectura es la abstracción que define las interfaces entre componentes.