Actualizado el 21 de Marzo del 2018 (Publicado el 20 de Diciembre del 2017)
702 visualizaciones desde el 20 de Diciembre del 2017
148,0 KB
18 paginas
Creado hace 16a (05/03/2008)
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
Descripción
funcional
Tareas
Datos
DISEÑO
Algoritmos
Tipos y estructuras
de datos
Diseño
informático
Cliente
Analista
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)
intercambia (a, b);
si b > a:
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?
NO
r = a % b
NO
r>0?
SÍ
a=b;
…
intercambiar (a, b)
devolver 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
Comentarios de: TEMA 2: DESARROLLO DEL SOFTWARE (0)
No hay comentarios