Logo Studenta

Programacion_estructurada

¡Estudia con miles de materiales!

Vista previa del material en texto

Universidad José Antonio Páez 
Facultad de Ingeniería 
Carrera de Ingeniería en Computación 
 
 
 
Programación estructurada: 
 
Se llama programación estructurada a la aplicación de los métodos básicos de descomposición de problemas, para establecer una 
estructura jerárquica fácilmente utilizable, a través de un proceso progresivo 
 
Es un método de construcción y diseño de programar en el que participan características como la modificación y la facilidad en uso 
La programación estructurada se basa en 3 técnicas básicas: 
  Diseño descendente.- consiste en dividir el problema y hacer la segmentación por paso en los diferentes niveléis el programa es 
complejo se divide en subprocesos. 
  Recursos abstractos.- consiste en el proceso de realización de los diferentes pasos hasta encontrar la solución de un problema. 
  Estructura básica de control.- consiste en que el programa cuenta con un único punto de entrada y diferentes tipos de salida. 
 
La programación estructurada es una teoría de programación que consiste en construir programas de fácil comprensión. 
 
La programación estructurada es especialmente útil, cuando se necesitan realizar correcciones o modificaciones después de haber 
concluido un programa o aplicación. Al haberse utilizado la programación estructurada, es mucho más sencillo entender la codi ficación 
del programa, que se habrá hecho en diferentes secciones. 
 
La programación estructurada se basa en una metodología de desarrollo de programas llamada refinamientos sucesivos: Se plantea una 
operación como un todo y se divide en segmentos más sencillos o de menor complejidad. Una vez terminado todos los segmentos del 
programa, se procede a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente la 
programación estructurada, esta integración debe ser sencilla y no presentar problemas al integrar la misma, y de presentar algún 
problema, será rápidamente detectable para su corrección. 
 
La representación gráfica de la programación estructurada se realiza a través de diagramas de flujo o flow chart, el cual representa el 
programa con sus entradas, procesos y salidas. 
 
La programación estructurada propone segregar los procesos en estructuras lo más simple posibles, las cuales se conocen como 
secuencia, selección e interacción. Ellas están disponibles en todos los lenguajes modernos de programación imperativa en forma de 
sentencias. Combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de fácil entendimiento. 
 
Ventajas: 
 
- El programa se puede segmentar en varios partes 
- Se puede detectar (si se hizo bien los segmentos) 
rápidamente los errores 
- A partir de esquemas sencillos se puede construir un 
sistema amplio y complejo pero amigable 
 
Desventajas: 
 
- Si se hacen mal los esquemas no se podrán detectar 
los errores 
- Tener un buen conocimiento de lo que se quiere hacer 
en el diagrama de flujo. 
 
 
 
Introducción Programación Modular 
Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más 
grandes y complejos de lo que ésta puede resolver. 
Al aplicar la programación modular, un problema complejo debe ser dividido en varios subproblemas más simples, y estos a su vez en 
otros subproblemas más simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos 
fácilmente con algún lenguaje de programación. Ésta técnica se llama refinamiento sucesivo, divide y vencerás ó análisis descendente 
(Top-Down). 
Un módulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que se divide el problema complejo 
original. Cada uno de estos módulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un 
módulo necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar bien definida. 
Si bien un módulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la práctica se 
los suele tomar como sinónimos de procedimientos y funciones. Pero no necesaria ni estrictamente un módulo es una función o un 
procedimiento, ya que el mismo puede contener muchos de ellos, no debe confundirse el término "modulo" (en el sentido de 
programación modular) con términos como "función" o "procedimiento", propios del lenguaje que lo soporte. 
La programación modular es uno de los métodos de diseño más flexibles y potentes para mejorar la productividad de un programa. En 
programación modular el programa se divide en módulos (partes independientes), cada una de las cuales ejecuta una única función o 
actividad y se codifican independientemente de otros módulos. Cada uno de estos módulos se analiza, codifica y pone a punto por 
separado. 
Cada programa contiene un módulo denominado programa principal que controla todo lo que sucede; se transfiere el control a los 
submódulos o subprogramas. Estos ejecutan su función y una vez completada su tarea, devuelven el control al módulo principal. 
Definición: 
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin 
de hacerlo más legible y manejable. 
 
DESCOMPOSICION MODULAR 
El diseño modular propone dividir el sistema en partes 
diferenciadas y definir sus interfaces, sus ventajas: 
claridad, reducción de costos y reutilización. 
Los pasos a seguir son: 
 Identificar los módulos  Describir cada módulo  Describir las relaciones entre módulos 
Una descomposición modular debe poseer ciertas 
cualidades mínimas para que se pueda considerar 
suficiente válida. 
a) Independencia funcional 
b) Acoplamiento 
c) Cohesión 
d) Comprensibilidad 
e) Adaptabilidad 
a) Independencia funcional 
Cada módulo debe realizar una función concreta o un conjunto de funciones afines. Es recomendable reducir las relaciones entre 
módulos al mínimo. 
 
 
Para medir la independencia funcional hay dos criterios: acoplamiento y cohesión 
 
b) Acoplamiento 
 
El acoplamiento es una medida de la interconexión entre módulos en la estructura del programa. Podemos graduarla en un amplio 
espectro, pero por lo general se tiende a que el acoplamiento sea lo menor posible, esto es a reducir las interconexiones entre los distintos 
módulos en que se estructure nuestra aplicación. El grado de acoplamiento mide la interrelación entre dos módulos, según el tipo de 
conexión y la complejidad de la interfase:  FUERTE 
- Por contenido, cuando desde un módulo se puede cambiar datos locales de otro. 
- Común, se emplea una zona común de datos a la que tienen acceso varios módulos.  MODERADO 
- De control, la zona común es un dispositivo externo al que están ligados los módulos, esto implica que un cambio en el formato de datos 
los afecta a todos. 
- Por etiqueta, en intercambio de datos se realiza mediante una referencia a la estructura completa de datos (vector, pila, árbol, grafo,…)  DÉBIL 
- De datos, viene dado por los datos que intercambian los módulos. Es el mejor. 
- Sin acoplamiento directo, es el acoplamiento que no existe. 
 
c) Cohesión 
 
Un módulo coherente ejecuta una tarea sencilla en un procedimiento y requiere poca interacción con procedimientos que se ejecutan 
en otras partes de un programa. Podemos decir que un módulo coherente es aquel que intenta realizar solamente una cosa. 
Para que el número de módulos no sea demasiado elevado y complique el diseño se tratan de agrupar elementos afines y relacionados 
en un mismo módulo.  ALTA 
. Cohesión abstraccional, se logra cuando se diseña el módulo como tipo abstracto de datos o como una clase de objetos 
. Cohesión funcional, el módulo realiza una función concreta y específica  MEDIA 
. Cohesión secuencial, los elementos del módulo trabajan de forma secuencial 
. Cohesión de comunicación, elementos que operan con el mismo conjunto de datosde entrada o de salida 
. Cohesión temporal, se agrupan elementos que se ejecutan en el mismo momento. Ej. Arrancar o parar dispositivos  BAJA 
. Cohesión lógica, se agrupan elementos que realizan funciones similares. 
. Cohesión coincidental, es la peor y se produce cuando los elementos de un módulo no guardan relación alguna 
 
La descripción del comportamiento de un módulo permite establecer el grado de cohesión: 
 
- Si es una frase compuesta y contiene más de un verbo la cohesión será MEDIA 
- Si contiene expresiones secuenciales (primero, entonces, cuando…), será temporal o secuencial 
- Si la descripción no se refiere a algo específico (Ej. Todos los errores), cohesión lógica 
- Si aparece “inicializar”, “preparar”, “configurar”, probablemente sea temporal. 
 
d) Comprensibilidad 
 
Para facilitar los cambios, el mantenimiento y la reutilización de módulos es necesario que cada uno sea comprensible de forma aislada. 
Para ello es bueno que posea independencia funcional, pero además es deseable:  Identificación, el nombre debe ser adecuado y descriptivo  Documentación, debe aclarar todos los detalles de diseño e implementación que no queden de manifiesto en el propio código  SIMPLICIDAD, las soluciones sencillas son siempre las mejores. 
 
e) Adaptabilidad 
 
La adaptación de un sistema resulta más difícil cuando no hay independencia funcional, es decir, con alto acoplamiento y baja 
cohesión, y cuando el diseño es poco comprensible. 
 
Factores para facilitar la adaptabilidad:  Previsión, es necesario prever que aspectos del sistema pueden ser susceptibles de cambios en el futuro, y poner estos elementos 
en módulos independientes, de manera que su modificación afecte al menor número de módulos posibles  Accesibilidad, debe resultar sencillo el acceso a los documentos de especificación, diseño, e implementación para obtener un 
conocimiento suficiente del sistema antes de proceder a su adaptación  Consistencia, después de cualquier adaptación se debe mantener la consistencia del sistema, incluidos los documentos 
afectados