tema 2: desarrollo del software tema 2: desarrollo del software

Anuncio
TEMA 2: DESARROLLO DEL
SOFTWARE
EDI I – Curso 2007/08
Escuela Politécnica Superior
Universidad Autónoma de Madrid
TEMA 2: DESARROLLO DEL
SOFTWARE
2.1. Ciclo de vida del Software
2.2. Corrección de errores de programación
2.3. Algoritmos
1
Componentes de una aplicación
Informática
Hardware (Hw):
– Estático
– Independiente de la aplicación
Software (Sw):
– Dinámico, cambiante
– Específico del problema que resuelve la
aplicación
Componentes de una aplicación
Informática
Sw más necesario, más complejo y más
trabajoso que el Hw
más caro
Desarrollo de Sw requiere ECI:
– Esfuerzo
– Creatividad
– Ingenio
Metodología de producción de Sw:
Ingeniería del Software
2
Ciclo de Vida del SW
Es la base de la Ingeniería del Sofware
Actividades sobre el Sw desde su
concepción hasta su muerte.
Fases:
1. Análisis
2. Diseño
3. Desarrollo (implementación)
4. Pruebas y validación
5. Mantenimiento
Ciclo vida SW: Fase 1 Análisis
Qué hace la aplicación
Tareas a realizar:
1. Descripción general completa del problema a
resolver
2. Especificación funcional: qué tiene que hacer la
aplicación
3. Análisis de requisitos: condiciones informáticas bajo
las que debe funcionar la aplicación
4. Especificación de E/S: qué recibe y qué devuelve la
aplicación
5. Criterios de validación: especificar cómo se va a
comprobar que la aplicación funciona (que cumple
requisitos y especificaciones)
3
Ciclo vida SW: Fase 1 Análisis
6. Análisis de factibilidad: ver si es posible realizar la
aplicación.
Resultados de la fase de análisis:
1. Conocimiento profundo del problema (por parte de
los informáticos)
2. Documento con:
– Especificación de requisitos
(valor informático + contractual)
– Protomanual de usuario
– Primeras estimaciones del coste de la aplicación
Ciclo vida SW: Fase 2 Diseño
Cómo se va a hacer la aplicación
ANÁLISIS
DISEÑO
Algoritmos
Tareas
Descripción
funcional
Tipos y estructuras
de datos
Datos
Cliente
Analista
Diseño
informático
Programador
Analista:
–
–
–
Buen programador
Conocimientos sólidos
Capacidad de: análisis, síntesis, organización y comunicación
(verbal y escrita)
4
Ciclo vida SW: Fase 2 Diseño
Enfoque modular: TOP-DOWN
Jerarquía de:
1. Grandes módulos, semi-independientes,
intercomunicados
2. Submódulos
…
N. Funciones elementales
Ciclo vida SW: Fase 2 Diseño
Resultados de la fase de diseño:
1. Estructuración de la aplicación según la
jerarquía de módulos
2. Documento de diseño con info sobre:
1. Organización de los procesos
2. Datos y sus estructuras de datos
3. E/S generales y de cada submódulo
4. Intercomunicación (a niveles
corrrespondientes)
3. Estimaciones económicas finales
5
Ciclo vida SW: Fase 3 Desarrollo
Tareas:
– programación de la aplicación
– pruebas de módulos individuales
– pruebas de intercomunicación
Módulo de desarrollo + pruebas =
espiral creciente de alcance funcional y
complejidad
Ciclo vida SW: Fase 3 Desarrollo
Resultados del desarrollo:
1. Código de la aplicación
2. Documentación de la aplicación
3. Código del Sw de pruebas: genera datos de
pruebas, simula entornos de ejecución, etc.
4. Datos de pruebas
5. Documentación de las pruebas
6
Ciclo vida SW: Fase 3 Desarrollo
Propiedades del código:
1. Legible: bien estructurado, tanto
conceptualmente (funcionalmente) como
visualmente
2. Correcto: siempre y frente a cualquier
entrada
3. Comprensible: bien documentado
Ciclo vida SW: Fase 3 Desarrollo
Tipos de código:
– Académico:
– Profesional:
Programas pequeños
Poco críticos
Análisis y diseño individual
Poco uso
(programador y profesor)
Requiere ECI
Programas grandes
Críticos (no pueden fallar)
Análisis y diseño en grupo
Uso intenso, por terceros
Requiere ECI
+ metodología
+ buenos hábitos
+…
7
Ciclo vida SW: Fase 4 Validación
Validación: certificación de que el Sw.
Cumple los requisitos y especificaciones
establecidas en fase 1 (análisis)
Objetivos:
– Validar el Sw
– Detectar/corregir errores “finos” (los gruesos se
detectan en la fase 3)
Estrategía BOTTOM-UP:
funciones individuales => jerarquía de módulos
=> aplicación completa
(Más detalles después)
Ciclo vida SW: Fase 5 Mantenimiento
Modificación de un producto Sw después
de su entrega al cliente, para:
–
–
–
–
corregir defectos
adaptarlo a un cambio de entorno
mejorar rendimiento
…
Suele ser lo más costoso
8
Modelo ciclo vida SW en cascada
Análisis
Diseño
Desarrollo
Pruebas
Mantenimiento
Subidas de 1 escalón + o – frecuentes, debidas a
errores, inconsistencias, olvidos en fase anterior
Subidas de 2 o más escalones deberían ser poco
frecuentes. Suponen esfuerzo, tiempo y coste
superiores (perdido)
TEMA 2: DESARROLLO DEL
SOFTWARE
2.1. Ciclo de vida del Software
2.2. Corrección de errores de programación
– Fuentes de errores
– Detección de errores. Tipos de pruebas
– Datos de prueba
– Excepciones
2.3. Algoritmos
9
Corrección de errores de programación
Fuentes de errores:
1. Errores “violentos”
Ej: divisiones por 0, punteros locos, etc.
– Detección fácil, reproducción + o - fácil, resolución fácil
–
2. Lógica inconsistente/errónea
Resultados a veces correctos, a veces inconsistentes,
a veces erróneos
– + complicados de detectar => + difíciles de reproducir
=> + difíciles de corregir
–
3. Especificación/diseño incorrectos
Detección tardía
– Corrección casi imposible (falta de recursos, etc.)
–
Corrección de errores de programación
Detección de errores. Pruebas de 2 tipos:
1. Funcionales: pruebas de alto nivel
–
El software se ve como una “caja negra”
E
–
SW
S
Tareas:
1. Definir el conjunto de entradas
2. Calcular (a mano) las salidas esperadas de cada entrada
3. Comprobar que el Sw hace lo mismo
2. Estructurales: pruebas de bajo nivel
–
Se sigue de cerca la evolución de la ejecución
(depuración, debugger)
10
Corrección de errores de programación
Datos de prueba:
– Antes de probar, definir conjunto de datos de
prueba.
– Tipos:
1. Datos normales
2. Datos extremos
3. Datos ilegales
3.1. Datos ilegales “normales”
3.2. Datos ilegales absurdos
Corrección de errores de programación
Datos de prueba:
1. Datos normales:
Son legítimos y razonables
– Resultado: correcto
– Ej: float media (float t [], int dim)
dim = 10000
t [i] = razonables dentro de floats, y que la
suma no pase del tamaño de un float
–
11
Corrección de errores de programación
Datos de prueba:
2. Datos extremos:
Son “normales”, pero al límite de la procesabilidad
– Resultado: correcto ó mensaje de error
– Ej: float media (float t [], int dim)
dim = INT_MAX
t [i] = tales que la suma pasa del tamaño de un
float (FLT_MAX)
–
Corrección de errores de programación
Datos de prueba:
3. Datos ilegales:
Son NO procesables
– Tipos:
–
3.1. Ilegales “normales”: P.ej., el tipo se corresponde, pero se
pasa del valor permitido.
Ej: dim > INT_MAX, t[i] > FLT_MAX
3.2. Ilegales absurdos: Ni siquiera coincide el tipo de dato
Ej: dim = “hola”
–
Resultado: mensaje de error correspondiente
12
Corrección de errores de programación
Nunca puede haber fallos/ “cuelgues”,
programa debe responder siempre
necesario capturar excepciones
y gestionarlas adecuadamente
Excepción: circunstancia excepcional
que se produce durante la ejecución de
un programa y que debe ser gestionada
Capturar y gestionar excepciones
código extra, costoso y caro
(aprox. 50% código)
TEMA 2: DESARROLLO DEL
SOFTWARE
2.1. Ciclo de vida del Software
2.2. Corrección de errores de programación
2.3. Algoritmos
– Definición
– Elementos básicos
– Programación estructurada
– Pseudocódigo y diagrama de flujo
13
Algoritmos
Algoritmo: conjunto de instrucciones
– simples,
– de ejecución finita, y
– que producen unos resultados concretos y
correctos.
Algoritmos – Elementos básicos
Elementos básicos de un algoritmo:
1. Secuencias (bloques secuenciales)
2. Selecciones
3. Repeticiones
14
Algoritmos – Elementos básicos
1. Secuencias (bloques secuenciales):
serie de sentencias simples
de ejecución secuencial
Flujo de ejecución
Algoritmos – Elementos básicos
2. Selecciones:
–
Bloques secuenciales que se ejecutan o no
dependiendo de una condición
–
Varios bloques, sólo se ejecuta uno
–
Ej. en C: if, switch, …
?
Flujo de ejecución
15
Algoritmos – Elementos básicos
3. Repeticiones:
–
Bloques secuenciales que se ejecutan
repetidamente mientras se cumpla una
condición
–
Ej. en C: for, while, do while, …
NO
?
SÍ
...
Algoritmos – Prog. estructurada
Programación estructurada:
– Sólo se usan estos 3 elementos
(secuencias, selecciones, repeticiones),
posiblemente anidados
– No se usa “go to”
16
Algoritmos – Pseudocódigo
Pseudocódigo: representación genérica
(independiente del lenguaje)
y concisa del funcionamiento de un
algoritmo
Algoritmos – Pseudocódigo
Pseudocódigo algoritmo de Euclides
ent mcd (ent a, ent b)
si b > a:
intercambia (a, b);
r = a mod b;
mientras r > 0:
a = b;
b = r;
r = a mod b;
devolver b;
Selección
Repetición
Secuencia
17
Algoritmos – Diagrama de flujo
Diagrama de flujo algoritmo de Euclides
(inicio)
SÍ
b>a?
intercambiar (a, b)
NO
r=a%b
r>0?
SÍ
NO
devolver b
a=b;
…
Algoritmos – Pseudocódigo
Observaciones:
–
No se puede programar sin saber escribir
pseudocódigo
–
Notación pseudocódigo: libre pero cercana a
lenguajes, no a lenguaje natural
–
Elementos implícitos que no se especifican:
punteros, declaración variables, etc.
–
Seguir convenciones de legibilidad:
sangrado de sentencias y bloques
–
Importante: claridad, concreción de ideas
18
Descargar