tema 1 introduccion al diseno software
TRANSCRIPT
TEMA 1.INTRODUCCIÓN AL DISEÑO SOFTWARE
Introducción.
Objetivos Conocer diferentes conceptos de la informática y de la
programación. Ver las etapas que se deben de seguir a la hora de realizar
un programa. Conocer el ciclo de vida del software.
2
Capítulo 1. Introducción
¿A que afecta el software? Transporte Servicios médicos Telecomunicaciones Fabricación de bienes Control financiero
Esto exige una garantía operativa
3
Introducción. Construcción de Software
Capítulo 1. 4
Capítulo 1. IntroducciónConstrucción de Software
Metodología de la programación para resolver un problema:
1. Formulación y especificación del problema. ¿Qué problema estamos intentando resolver? ¿Cuál será la finalidad del software en dicho contexto? ¿Quién tiene el conocimiento necesario? Especificación formal del problema
2. Diseño de una solución.3. Implementación de la solución.4. Prueba y documentación de la aplicación.5. Documentación:6. Valoración de la solución.
5
Capítulo 1. IntroducciónConstrucción de Software
Metodología de la programación para resolver un problema:
1. Formulación y especificación del problema.2. Diseño de una solución.
Sin análisis de requisitos ni diseño, programar se convierte en el arte de añadir errores a un archivo de texto vacío. (L. Srygley)
3. Implementación de la solución.4. Prueba y documentación de la aplicación.5. Documentación:6. Valoración de la solución.
6
Capítulo 1. IntroducciónConstrucción de Software
Metodología de la programación para resolver un problema:1. Formulación y especificación del problema.2. Diseño de una solución.3. Implementación de la solución.
Selección de las herramientas apropiadas Traducción del diseño a código Revisión y refinamiento
Profilers de código Análisis estático
4. Prueba y documentación de la aplicación.5. Documentación:6. Valoración de la solución.
7
Capítulo 1. IntroducciónConstrucción de Software
Metodología de la programación para resolver un problema:1. Formulación y especificación del problema.2. Diseño de una solución.3. Implementación de la solución.4. Prueba y documentación de la aplicación.
Pruebas de validación. ¿Hace el sistema lo que necesita el usuario?
Pruebas de verificación. ¿Hace el sistema lo que dicen las especificaciones?
Documentación de uso del sistema5. Documentación:6. Valoración de la solución.
8
Capítulo 1. IntroducciónConstrucción de Software
Metodología de la programación para resolver un problema:
1. Formulación y especificación del problema.2. Diseño de una solución.3. Implementación de la solución.4. Prueba y documentación de la aplicación.5. Documentación:
Implícita. Explícita (Comentarios como el Prólogo o Descriptivos). Herramientas de generación automática
6. Valoración de la solución.
9
Capítulo 1. IntroducciónConstrucción de Software
10
Capítulo 1. IntroducciónConstrucción de Software
Metodología de la programación para resolver un problema:
1. Formulación y especificación del problema.2. Diseño de una solución.3. Implementación de la solución.4. Prueba y documentación de la aplicación.5. Documentación:6. Valoración de la solución.
Estructuración, legibilidad y claridad del programa. Medidas de eficiencia: Espacio y Tiempo.
11
Capítulo 1. IntroducciónConstrucción de Software
12
Introducción. Diseño Software. Fundamentos
Capítulo 1. 13
Capítulo 1. IntroducciónDiseño Software. Fundamentos
A.Abstracción: en distintos niveles, del más alto al más bajo. Procedimental (operaciones compuestas de
operaciones).Reducción de una secuencia de acciones a una denominación simple.
De datos (Datos complejos, formados por otros más simples). Diseño de tipos de datos complejos a partir de los ya existentes.
De control (flujo complejo abstraído)
B. Arquitectura del sistema: Aplicación de patrones arquitectónicos. Hay patrones genéricos
para varios modelos de sistemas software División del sistema en capas. Las arquitecturas que estructuran el
sistema en múltiples capas, son las más comunes
14
Capítulo 1. IntroducciónDiseño Software. Fundamentos
C. Refinamiento: sucesivamente, se añaden detalles procedimentales hasta trabajar con sentencias “primitivas” del lenguaje de programación.
D. Modularidad: atacamos el problema por partes, dividimos el problema en módulos más sencillos de manejar. Cada capa se divide en módulos. Estrategia divide y vencerás aplicada
al diseño del sistema.
Facilidad de desarrollo y mantenimiento. Cuanto más simples sean los módulos mejor.
15
Capítulo 1. IntroducciónDiseño Software. Fundamentos
E. Independencia funcional Máxima cohesión. Cada módulo se encarga de una única tarea y lo
hace de manera global
Mínimo acoplamiento. Los cambios en un módulo no deben provocar modificaciones en otros módulos
16
Capítulo 1. IntroducciónDiseño Software
F. Arquitectura del Software: organización jerárquica de los módulos, su interacción y las estructuras de datos que utilizan.
G.Jerarquía de control: Organización de los módulos de un programa. Visibilidad: Conjunto de módulos que un módulo
puede llamar. Conectividad: módulos que llaman a otro módulos.
H.División Estructural: Capas de la arquitectura (Presentación, Aplicación y Datos)
17
Capítulo 1. IntroducciónDiseño Software
I. Estructura de datos: Relación lógica entre los distintos elementos individuales de datos. Ejemplos: Listas, pilas, colas, etc.
J. Procedimientos de software: Detalles de procesamiento de cada módulo individual.
K. Ocultamiento de información: La información contenida en un modulo debe ser inaccesible al resto de módulos que no necesitan acceder a esa información. Permite independencia entre módulos. Abstracción de la complejidad Exponer únicamente la interfaz de
acceso Mayor independencia entre módulos La información de estado es
inaccesible para otros módulos
18
Capítulo 1. IntroducciónDiseño Software
Existen dos formas de construir un diseño de software. Una forma es hacerlo tan simple que obviamente no haya deficiencias, y la otra es hacerlo tan complicado que no existan deficiencias obvias.
El primer método es mucho más difícil. C.A.R. Hoare
Escribir un programa brillante que funcione es una cosa, diseñar algo que pueda soportar a largo plazo un negocio es otra muy diferente.
C. Ferguson
19
Capítulo 1. IntroducciónBibliografía
[AU87] A.V. Aho, J.A. Ullman. Data structures and algorithms. Addison-Wesley.1992.
[FGG98] J. Fernández, A. Garrido, M. García. Estructuras de datos. Un enfoque práctico usando C. Universidad de Granada, 1998.
[Pres01] R.S. Pressman. Ingeniería del software, Un enfoque práctico. Mc Graw Hill. 2001.
20