Modularización. Bibliografía

Documentos relacionados
Tipos Abstractos de Datos (TAD) Lección 1

Tema 2. Diseño Modular.

Planificaciones Algoritmos y Programación I. Docente responsable: AZCURRA DIEGO ANDRES. 1 de 5

SUBPROGRAMAS. Los subprogramas pueden ser invocados varias veces desde diferentes partes del programa.

Índice general 7. Presentación 15

1 Introducción a los algoritmos y a la programación de computadoras... 1

Programación Modular. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Planificaciones Algoritmos y Programación I. Docente responsable: GUARNA PABLO FRANCISCO. 1 de 6

UNIDAD 6 Tipos Abstractos de Datos (TAD) Interfaz e Implementación. Tipos de unidades. Creación y uso de unidades para

Sistemas y Aplicaciones Informáticas. Tema 28. Programación Modular. Diseño de Funciones: Recursividad. Librerías.

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Primer Cuatrimestre 2018 Resolución de Problemas y Algoritmos

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

PATRONES DE DISEÑO FRAMEWORKS

LÓGICA DE PROGRAMACIÓN

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Capítulo 16. Diagrama de Clases UML

Intuitivamente es el proceso que se trata de formular y evaluar una solución para un problema dado

TEMA 6: INTRODUCCIÓN A UML

Programación Orientada a Objetos

EI MT1008 Programación II

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Temario

PROGRAMACIÓN EN JAVA

Tema 1. Introducción a UML C H R I STO PHER E X P Ó S I TO I Z Q U I ERDO A I R A M E X P Ó S I TO M Á R Q UEZ I S R A E L LÓ P EZ P L ATA M A R Í A

Programación Orientada a Objetos. Sesión 6: El Elemento adicional del lenguaje orientado a objetos

Programación Estructurada. Complementos de Informática Tema 2: Programación Estructurada y Programación Modular. Números Amigos

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Algoritmo. Programa. Lenguaje algorítmico

Tema 02: Algoritmia y pseudocódigo

INSTITUTO POLITECNICO NACIONAL SECRETARIA ACADEMICA DIRECCION DE ESTUDIOS PROFESIONALES EN INGENIERIA Y CIENCIAS FISICO MATEMATICAS

UNIVERSIDAD MAYOR DE SAN SIMÓN FACULTAD DE CIENCIAS Y TECNOLOGÍA DEPARTAMENTO DE INFORMÁTICA Y SISTEMAS PLAN GLOBAL INTRODUCCIÓN A LA PROGRAMACIÓN

Actividad de Evaluación Brandon Emmanuelle Cuevas Rangel GPO: 303 Carrera: Informática 3er Semestre Joel Rocha Barocio Cienega de Flores N.L.

M. C. Felipe Santiago Espinosa

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 7

Especificación de Requerimientos <Nombre del Proyecto> Nombre del Grupo de Desarrollo o Asignatura Nombre del Autor

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Clase Práctica No. 1: Métricas de Calidad de Software: Listas de comprobación.

Guía para la documentación de proyectos de software

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora

Definiciones en Orientación a Objetos

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

BACHILLERES UGM ORIZABA CLAVE: 30PBH0591P

Administración de sistemas gestores de bases de datos

Control del Documento

Interfaz de usuario Donantonio

IEEE-std Práctica Recomendada para la Especificación de Requerimientos de Software

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I

Programming with C# DESCRIPCION MODULOS DE CAPACITACION. Sistemas Informáticos del Valle Módulo 1: Revisión de la sintaxis de C#

INGENIERÍA MECATRÓNICA EN COMPETENCIAS PROFESIONALES

Un módulo coherente sólo debe hacer (idealmente) una cosa. El objetivo que se intenta conseguir es obtener módulos con una alta cohesión.

Alumnos BAJO ACOPLAMIENTO Y ALTA COHESION. Un patrón intenta codificar el conocimiento, expresiones y los principios existentes.

Master en Java Certificación para Programadores

Iniciación a La Programación Prof. Carolina Cols

Computación Avanzada. Ing. Daniel Capriles M.

METODOLOGÍA DE LA PROGRAMACIÓN. APLICACIONES EN BASIC, COBOL Y PASCAL ÍNDICE

Síntesis de la programación

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 8

7.3. Estructura de un programa

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 7, SECCIÓN 1: REQUISITOS SOFTWARE

Modelo Dinámico del Diseño del Software y Representación en UML. UNIDAD 9 Análisis y Diseño de Sistemas de Información

DIAGRAMAS DE FLUJO: DFD

Lógica: Algoritmo: Archivo: Base de datos: Bit:

Tecnología hardware y software

Capítulo 3 CICLO DE VIDA DE UN PROGRAMA. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

INGENIERÍA DEL SOFTWARE

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Guía práctica de estudio 04: Diagramas de flujo

DOCUMENTACIÓN REQUERIMIENTOS

Tipos Abstractos de Datos

Introducción a la programación

... Cómo empezar en ACCESS anfora CAPÍTULO. Introducción. Cómo iniciar ACCESS ACCESS 2000 Iniciar ACCESS 2000

2.2 METODOLOGÍA PARA EL DISEÑO DE SOFTWARE

INDICE. Prólogo de la Segunda Edición

Guía práctica de estudio 05: Diagramas de flujo

Programación Estructurada

Tema: Funciones, Procedimientos y Recursividad en C#.

TALLER ALGORITMOS Y DESARROLLO DE SOFTWARE CON PYTHON

Transcripción:

Modularización Uso de subprogramas Razones válidas para crear un subprograma Cohesión y acoplamiento Pasos para escribir un subprograma El nombre y los parámetros de un subprograma Tipos de datos abstractos (TDAs) Bibliografía Steve McConnell: Code Complete. Estados Unidos: Microsoft Press, 1994. ISBN 1-55615-484-4.

Uso de subprogramas Razones válidas para crear un subprograma Reducir la complejidad del programa ( divide y vencerás ). Eliminar código duplicado. Limitar los efectos de los cambios (aislar aspectos concretos). Ocultar detalles de implementación (p.ej. algoritmos complejos). Promover la reutilización de código (p.ej. familias de productos). Mejorar la legibilidad del código. Facilitar la portabilidad del código. Cohesión Medida del grado de identificación de un módulo con una función concreta. Cohesión aceptable (fuerte) Cohesión funcional (un módulo realiza una única acción). Cohesión secuencial (un módulo contiene acciones que han de realizarse en un orden particular sobre unos datos concretos). Cohesión de comunicación (un módulo contiene un conjunto de operaciones que se realizan sobre los mismos datos). Cohesión temporal (las operaciones se incluyen en un módulo porque han de realizarse al mismo tiempo; p.ej. inicialización). Cohesión inaceptable (débil) Cohesión procedural (un módulo contiene operaciones que se realizan en un orden concreto aunque no tengan nada que ver entre sí). Cohesión lógica (cuando un módulo contiene operaciones cuya ejecución depende de un parámetro: el flujo de control o lógica de la rutina es lo único que une a las operaciones que la forman). Cohesión coincidental (cuando las operaciones de una rutina no guardan ninguna relación observable entre ellas).

Acoplamiento Medida de la interacción de los módulos que constituyen un programa. Niveles de acoplamiento (de mejor a peor): Acoplamiento de datos (acoplamiento normal): Todo lo que comparten dos rutinas se especifica en la lista de parámetros de la rutina llamada. Acoplamiento de control: Una rutina pasa datos que le indican a la otra rutina qué hacer (la primera rutina tiene que conocer detalles internos de la segunda). Acoplamiento externo: Cuando dos rutinas utilizan los mismos datos globales o dispositivos de E/S. Si los datos son de sólo lectura, el acoplamiento se puede considerar aceptable. En general, este tipo de acoplamiento no es deseable porque la conexión existente entre los módulos no es visible. Acoplamiento patológico: Cuando una rutina utiliza el código de otra o altera sus datos locales ( acoplamiento de contenido ). La mayor parte de los lenguajes estructurados incluyen reglas para el ámbito de las variables que impiden este tipo de acoplamiento. Objetivo Reducir al máximo el acoplamiento y aumentar la cohesión de los módulos. Pasos para escribir un subprograma 1. Definir el problema que el subprograma ha de resolver. 2. Darle un nombre no ambiguo al subprograma. 3. Decidir cómo se puede probar el funcionamiento del subprograma. 4. Escribir la declaración del subprograma (cabecera de la función). 5. Buscar el algoritmo más adecuado para resolver el problema. 6. Escribir los pasos principales del algoritmo como comentarios. 7. Rellenar el código correspondiente a cada comentario. 8. Revisar mentalmente cada fragmento de código. 9. Repetir los pasos anteriores hasta quedar completamente satisfecho.

El nombre de un subprograma Procedimiento: Verbo seguido de un objeto. Función: Descripción del valor devuelto por la función. El nombre debe describir todo lo que hace el subprograma. Se deben evitar nombres genéricos que no dicen nada (p.ej. calcular) Se debe ser consistente en el uso de convenciones. Los parámetros de un subprograma Orden: (por valor, por referencia) == (entrada, entrada/salida, salida) Si varias rutinas utilizan los mismos parámetros, éstos han de ponerse en el mismo orden (algo que la biblioteca estándar de C no hace). De acuerdo con la primera norma, las variables de estado o error se ponen al final. No es aconsejable utilizar los parámetros de una rutina como si fuesen variables locales de la rutina. Se han de documentar las suposiciones que se hagan acerca de los posibles valores de los parámetros. Sólo se deben incluir los parámetros que realmente necesite la rutina para efectuar su labor. Las dependencias existentes entre distintos módulos han de hacerse explícitas mediante el uso de parámetros.

Tipos de datos abstractos TDAs Los tipos definidos por el usuario son una de las capacidades más importantes que ofrecen los lenguajes de programación para clarificar el significado de un programa. Se simplifican las modificaciones que tengamos que realizar. Se encapsulan detalles de implementación (en vez de aparecer por todas partes, estos detalles sólo aparecen en la declaración del tipo). Se amplía el vocabulario que podemos utilizar en nuestro programas. TDA Colección de datos y todas las operaciones que se efectúan sobre esos datos Ejemplos: Una ventana, un menú, un fichero, una lista, una tabla... PUNTO CLAVE: El acceso a los datos se realiza siempre a través de las operaciones definidas en el propio TDA. Beneficios de la utilización de TDAs Se ocultan detalles de implementación. Se facilitan las modificaciones que puedan afectar al programa. Es más fácil mejorar la eficiencia del programa. Es más fácil verificar la corrección del programa. La legibilidad de los programas mejora. Se simplifican las interfaces de los módulos del programa. Se definen operaciones en función de los objetos sobre los que se efectúan.