Está en la página 1de 18

TEMA 2: DESARROLLO DEL

SOFTWARE

EDI I Curso 2007/08


Escuela Politcnica Superior
Universidad Autnoma de Madrid

TEMA 2: DESARROLLO DEL


SOFTWARE

2.1. Ciclo de vida del Software


2.2. Correccin de errores de programacin
2.3. Algoritmos

1
Componentes de una aplicacin
Informtica
Hardware (Hw):
Esttico
Independiente de la aplicacin
Software (Sw):
Dinmico, cambiante
Especfico del problema que resuelve la
aplicacin

Componentes de una aplicacin


Informtica
Sw ms necesario, ms complejo y ms
trabajoso que el Hw ms caro
Desarrollo de Sw requiere ECI:
Esfuerzo
Creatividad
Ingenio
Metodologa de produccin de Sw:
Ingeniera del Software

2
Ciclo de Vida del SW
Es la base de la Ingeniera del Sofware
Actividades sobre el Sw desde su
concepcin hasta su muerte.
Fases:
1. Anlisis
2. Diseo
3. Desarrollo (implementacin)
4. Pruebas y validacin
5. Mantenimiento

Ciclo vida SW: Fase 1 Anlisis


Qu hace la aplicacin
Tareas a realizar:
1. Descripcin general completa del problema a
resolver
2. Especificacin funcional: qu tiene que hacer la
aplicacin
3. Anlisis de requisitos: condiciones informticas bajo
las que debe funcionar la aplicacin
4. Especificacin de E/S: qu recibe y qu devuelve la
aplicacin
5. Criterios de validacin: especificar cmo se va a
comprobar que la aplicacin funciona (que cumple
requisitos y especificaciones)

3
Ciclo vida SW: Fase 1 Anlisis
6. Anlisis de factibilidad: ver si es posible realizar la
aplicacin.

Resultados de la fase de anlisis:


1. Conocimiento profundo del problema (por parte de
los informticos)
2. Documento con:
Especificacin de requisitos
(valor informtico + contractual)
Protomanual de usuario
Primeras estimaciones del coste de la aplicacin

Ciclo vida SW: Fase 2 Diseo


Cmo se va a hacer la aplicacin

ANLISIS DISEO
Algoritmos
Descripcin Tareas
Diseo
funcional Tipos y estructuras
Datos informtico
de datos

Cliente Analista Programador

Analista:
Buen programador
Conocimientos slidos
Capacidad de: anlisis, sntesis, organizacin y comunicacin
(verbal y escrita)

4
Ciclo vida SW: Fase 2 Diseo
Enfoque modular: TOP-DOWN
Jerarqua de:
1. Grandes mdulos, semi-independientes,
intercomunicados
2. Submdulos

N. Funciones elementales

Ciclo vida SW: Fase 2 Diseo


Resultados de la fase de diseo:
1. Estructuracin de la aplicacin segn la
jerarqua de mdulos
2. Documento de diseo con info sobre:
1. Organizacin de los procesos
2. Datos y sus estructuras de datos
3. E/S generales y de cada submdulo
4. Intercomunicacin (a niveles
corrrespondientes)
3. Estimaciones econmicas finales

5
Ciclo vida SW: Fase 3 Desarrollo
Tareas:
programacin de la aplicacin
pruebas de mdulos individuales
pruebas de intercomunicacin

Mdulo de desarrollo + pruebas =


espiral creciente de alcance funcional y
complejidad

Ciclo vida SW: Fase 3 Desarrollo


Resultados del desarrollo:
1. Cdigo de la aplicacin
2. Documentacin de la aplicacin
3. Cdigo del Sw de pruebas: genera datos de
pruebas, simula entornos de ejecucin, etc.
4. Datos de pruebas
5. Documentacin de las pruebas

6
Ciclo vida SW: Fase 3 Desarrollo
Propiedades del cdigo:
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 cdigo:
Acadmico: Profesional:
Programas pequeos Programas grandes
Poco crticos Crticos (no pueden fallar)
Anlisis y diseo individual Anlisis y diseo en grupo
Poco uso Uso intenso, por terceros
(programador y profesor) Requiere ECI
Requiere ECI + metodologa
+ buenos hbitos
+

7
Ciclo vida SW: Fase 4 Validacin
Validacin: certificacin de que el Sw.
Cumple los requisitos y especificaciones
establecidas en fase 1 (anlisis)
Objetivos:
Validar el Sw
Detectar/corregir errores finos (los gruesos se
detectan en la fase 3)
Estratega BOTTOM-UP:
funciones individuales => jerarqua de mdulos
=> aplicacin completa
(Ms detalles despus)

Ciclo vida SW: Fase 5 Mantenimiento

Modificacin de un producto Sw despus


de su entrega al cliente, para:
corregir defectos
adaptarlo a un cambio de entorno
mejorar rendimiento

Suele ser lo ms costoso

8
Modelo ciclo vida SW en cascada
Anlisis
Diseo
Desarrollo
Pruebas
Mantenimiento
Subidas de 1 escaln + o frecuentes, debidas a
errores, inconsistencias, olvidos en fase anterior
Subidas de 2 o ms escalones deberan ser poco
frecuentes. Suponen esfuerzo, tiempo y coste
superiores (perdido)

TEMA 2: DESARROLLO DEL


SOFTWARE

2.1. Ciclo de vida del Software


2.2. Correccin de errores de programacin
Fuentes de errores
Deteccin de errores. Tipos de pruebas
Datos de prueba
Excepciones
2.3. Algoritmos

9
Correccin de errores de programacin
Fuentes de errores:
1. Errores violentos
Ej: divisiones por 0, punteros locos, etc.
Deteccin fcil, reproduccin + o - fcil, resolucin fcil
2. Lgica inconsistente/errnea
Resultados a veces correctos, a veces inconsistentes,
a veces errneos
+ complicados de detectar => + difciles de reproducir
=> + difciles de corregir
3. Especificacin/diseo incorrectos
Deteccin tarda
Correccin casi imposible (falta de recursos, etc.)

Correccin de errores de programacin


Deteccin 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 evolucin de la ejecucin
(depuracin, debugger)

10
Correccin de errores de programacin
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

Correccin de errores de programacin

Datos de prueba:

1. Datos normales:
Son legtimos 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 tamao de un float

11
Correccin de errores de programacin

Datos de prueba:

2. Datos extremos:
Son normales, pero al lmite 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 tamao de un
float (FLT_MAX)

Correccin de errores de programacin

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
Correccin de errores de programacin
Nunca puede haber fallos/ cuelgues,
programa debe responder siempre
necesario capturar excepciones
y gestionarlas adecuadamente
Excepcin: circunstancia excepcional
que se produce durante la ejecucin de
un programa y que debe ser gestionada
Capturar y gestionar excepciones
cdigo extra, costoso y caro
(aprox. 50% cdigo)

TEMA 2: DESARROLLO DEL


SOFTWARE

2.1. Ciclo de vida del Software


2.2. Correccin de errores de programacin
2.3. Algoritmos
Definicin
Elementos bsicos
Programacin estructurada
Pseudocdigo y diagrama de flujo

13
Algoritmos

Algoritmo: conjunto de instrucciones


simples,
de ejecucin finita, y
que producen unos resultados concretos y
correctos.

Algoritmos Elementos bsicos

Elementos bsicos de un algoritmo:


1. Secuencias (bloques secuenciales)
2. Selecciones
3. Repeticiones

14
Algoritmos Elementos bsicos

1. Secuencias (bloques secuenciales):


serie de sentencias simples
de ejecucin secuencial

Flujo de ejecucin

Algoritmos Elementos bsicos


2. Selecciones:
Bloques secuenciales que se ejecutan o no
dependiendo de una condicin
Varios bloques, slo se ejecuta uno
Ej. en C: if, switch,

Flujo de ejecucin
?

15
Algoritmos Elementos bsicos
3. Repeticiones:
Bloques secuenciales que se ejecutan
repetidamente mientras se cumpla una
condicin
Ej. en C: for, while, do while,

NO
?
S ...

Algoritmos Prog. estructurada

Programacin estructurada:
Slo se usan estos 3 elementos
(secuencias, selecciones, repeticiones),
posiblemente anidados
No se usa go to

16
Algoritmos Pseudocdigo

Pseudocdigo: representacin genrica


(independiente del lenguaje)
y concisa del funcionamiento de un
algoritmo

Algoritmos Pseudocdigo

Pseudocdigo algoritmo de Euclides

ent mcd (ent a, ent b)


si b > a: Seleccin
intercambia (a, b);
r = a mod b;
mientras r > 0: Repeticin
a = b;
b = r; Secuencia
r = a mod b;
devolver b;

17
Algoritmos Diagrama de flujo
Diagrama de flujo algoritmo de Euclides
(inicio)

S
b>a?
NO intercambiar (a, b)

r=a%b

NO
r>0?
S devolver b
a=b;

Algoritmos Pseudocdigo
Observaciones:
No se puede programar sin saber escribir
pseudocdigo
Notacin pseudocdigo: libre pero cercana a
lenguajes, no a lenguaje natural
Elementos implcitos que no se especifican:
punteros, declaracin variables, etc.
Seguir convenciones de legibilidad:
sangrado de sentencias y bloques
Importante: claridad, concrecin de ideas

18

También podría gustarte