2. 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
3. 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
5. Capítulo 1. Introducción
Construcció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
6. Capítulo 1. Introducción
Construcció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
7. Capítulo 1. Introducción
Construcció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
8. Capítulo 1. Introducción
Construcció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 sistema
5. Documentación:
6. Valoración de la solución.
8
9. Capítulo 1. Introducción
Construcció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
11. Capítulo 1. Introducción
Construcció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
14. Capítulo 1. Introducción
Diseñ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
15. Capítulo 1. Introducción
Diseñ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
16. Capítulo 1. Introducción
Diseñ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
17. Capítulo 1. Introducción
Diseñ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
18. Capítulo 1. Introducción
Diseñ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
19. Capítulo 1. Introducción
Diseñ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
20. Capítulo 1. Introducción
Bibliografí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