Introduccin a la Ingeniera del SoftwareProgramacin Modular
Ingeniera en Telecomunicacin Departamento de Lenguajes y Ciencias
de la Computacin Universidad de Mlaga
Contenido1) La Crisis del Software 2) Metodologas de Diseo 3)
Calidad del Software 4) Principios de Diseo 5) Un Caso de Estudio
6) Diseo Estructurado 7) Diseo Orientado a Objetos
Introduccin a la Ingeniera del Software
2
La Crisis del Software
La Crisis del SoftwareMuchos proyectos software presentan
deficiencias: Retraso en la entrega Falta de fiabilidad Coste
excesivo Ineficiencia Mantenimiento problemtico Falta de
adaptabilidad Escasa portabilidad Carencia de documentacin,
...Introduccin a la Ingeniera del Software 4
Por qu es tan difcil desarrollar software?Desarrollar software
puede ser un gran desafo intelectual: Problemas grandes, complejos
y muy variados Formalismos inadecuados Gran diferencia entre la
teora y la prctica Imposibilidad de utilizar aproximaciones
Introduccin a la Ingeniera del Software
5
Fases de desarrollo de un proyectoCliente Problema Especificacin
Diseo Implementacin Producto
Introduccin a la Ingeniera del Software
6
El desarrollo indisciplinado conduce a erroresUn proyecto
desarrollado de forma indisciplinada tiene muchas posibilidades de
fracasar... Ejemplo: disear un columpio
Introduccin a la Ingeniera del Software
7
Lo que aparece en la definicin del problema...
Introduccin a la Ingeniera del Software
8
Lo que aparece en la especificacin...
Introduccin a la Ingeniera del Software
9
Lo que aparece en el diseo...
Introduccin a la Ingeniera del Software
10
Lo que aparece en la implementacin...
Introduccin a la Ingeniera del Software
11
Lo que se entrega al cliente...
parche
Introduccin a la Ingeniera del Software
12
Lo que el cliente quera...
Introduccin a la Ingeniera del Software
13
Construccin de SoftwareDesarrollar software es como construir un
edificio: hay mucho que hacer antes del verdadero trabajo...
Planificar minuciosamente Elegir materiales Establecer y respetar
una temporizacin Inspeccionar frecuentemente la obra Los errores
son muy costosos de reparar La dificultad depende del tamao Los
problemas de organizacin y gestin son tan complicados como los
problemas tcnicosIntroduccin a la Ingeniera del Software 14
El coste del error depende del proyecto...
Introduccin a la Ingeniera del Software
15
Si el proyecto es importante, planifica...
Introduccin a la Ingeniera del Software
16
Metodologas de Diseo
En un ecosistema contaminado...plancton radioactivo
pez con parsitos
pez con descamacin
Introduccin a la Ingeniera del Software
18
Las enfermedades se propagan...
plancton radioactivo
pez radioactivo con parsitos
pez descamado radioactivo con parsitos
Introduccin a la Ingeniera del Software
19
Cada fase puede introducir errores...Problema mal planteado
Especificacin incorrecta Diseo inadecuado Implementacin
errneaIntroduccin a la Ingeniera del Software
20
Los errores se propagan...Problema mal planteado Especificacin
incorrecta del problema mal planteado Diseo inadecuado de la
especificacin incorrecta del problema mal planteado Implementacin
errnea del diseo inadecuado de ...Introduccin a la Ingeniera del
Software 21
El coste de arrastrar los errores...
No empieces a codificar hasta que sepas lo que ests
haciendoIntroduccin a la Ingeniera del Software 22
Las metodologas planifican el desarrollo...Cliente Requisitos
Implementacin Problema Especificacin Metodologa Diseo Implementacin
Producto
Introduccin a la Ingeniera del Software
23
Fase 1: definicin del problema original...
En lenguaje natural Desde el punto de vista del usuario Sin
referirse a una posible solucin
Introduccin a la Ingeniera del Software
24
Qu problema tengo que resolver?Carrera espacial, aos 60: Los
astronautas no pueden tomar notas con los bolgrafos en ausencia de
gravedad
Introduccin a la Ingeniera del Software
25
La visin de la NASAProblema: Cmo hacer que un bolgrafo funcione
sin gravedad? Solucin: Bolgrafo espacial de avanzado diseo y gran
coste
Introduccin a la Ingeniera del Software
26
La visin de la Agencia Espacial SoviticaProblema: Cmo tomar
notas si no hay gravedad? Solucin: Usando lpices...
Introduccin a la Ingeniera del Software
27
Define bien el problema antes de empezar...
Introduccin a la Ingeniera del Software
28
Asegrate de que sabes cul es el problema...
Introduccin a la Ingeniera del Software
29
Fase 2: especificacin de la solucin...Describe en detalle qu
hace el sistema No describe cmo se hace Debe ser correcta Debe ser
completa (contempla todos los casos) Emplea diagramas y notaciones
formales Debe acomodar cambios (se producirn) Las especificaciones
son como el agua, es ms fcil construir sobre ellas cuando se han
congeladoIntroduccin a la Ingeniera del Software 30
Qu hace el sistema?Problema: Ordenar un vector de N elementos
Especificacin: Dado X[1..N], obtener Y[1..N] tal que: 1) i j / Y[i]
= X[j] 2) 1 i N : Y[i] Y[i+1]Introduccin a la Ingeniera del
Software 31
La especificacin mejora tu puntera...
Introduccin a la Ingeniera del Software
32
Fase 3: diseo de la solucin...Describe cmo funciona el sistema
Define la estructura del sistema: qu componentes existen qu papel
juega cada componente cmo se relacionan los componentes Justifica
las decisiones de diseo Emplea diagramas y notaciones formales Debe
acomodar cambios (se producirn) Independiente del lenguaje, el S.O.
y la mquina Gua la implementacinIntroduccin a la Ingeniera del
Software 33
Cmo lo hace el sistema?Problema: Ordenar los nmeros de la lotera
primitiva Diseo: Almacenamos los nmeros extrados en un array y
aplicamos quicksort... La solucin es ms complicada que el
problema...Introduccin a la Ingeniera del Software 34
El diseo templa tu fuerza...
Introduccin a la Ingeniera del Software
35
Calidad del Software
Calidad del SoftwareLas metodologas mejoran la calidad del
Software: internamente (desarrolladores) externamente
(usuarios)
Introduccin a la Ingeniera del Software
37
Factores Internos de Calidad del SoftwareDe cara al
desarrollador, el software debe ser: Comprensible Legible
Mantenible Flexible Portable Reutilizable Comprobable
Introduccin a la Ingeniera del Software
38
Factores Externos de Calidad del SoftwareDe cara al usuario, el
software debe ser: Correcto Preciso Fcil de usar Eficiente Seguro
Robusto
Introduccin a la Ingeniera del Software
39
Principios de Diseo
Diseo Descendente ModularDescomponer el sistema en mdulos
interconectados entre s
Introduccin a la Ingeniera del Software
41
Cuestiones que surgen...qu criterio de descomposicin emplear? qu
es exactamente un mdulo? cmo identificar un mdulo? cmo conectar los
mdulos? cmo se comunican los mdulos? Las diferentes respuestas dan
lugar a diferentes metodologas de diseo
Introduccin a la Ingeniera del Software
42
Metodologas de DiseoMetodologa Abstraccin Procedimental
Abstraccin de Datos Diseo Estructurado Diseo Orientado a Objetos
Mdulo Subprograma Tipos Proceso Clase
Introduccin a la Ingeniera del Software
43
Propiedades comunes de los mdulosUn mdulo es siempre un
contenedor de recursos con las siguientes propiedades: Ocultamiento
de informacin Cohesin Acoplamiento
Introduccin a la Ingeniera del Software
44
Ocultamiento de InformacinIDEA -> dado un mdulo, distinguir
entre: qu hace y cmo lo hace su uso y su funcionamiento MTODO ->
descomponer los mdulos en dos partes: Interfaz Implementacin
Introduccin a la Ingeniera del Software
45
Interfaz
Parte pblica, visible del mdulo Determina qu servicios se
ofrecen al usuario Indica el modo de uso (instrucciones) Orientado
al usuario
Introduccin a la Ingeniera del Software
46
Implementacin
Parte privada, oculta del mdulo Determina cmo funcionan los
servicios ofrecidos Oculta detalles no relevantes para el usuario
Slo el implementador puede acceder a la implementacin
Introduccin a la Ingeniera del Software
47
Interfaz vs. ImplementacinInterfaz (visible, pblico)
Implementacin (oculto, privado)
Introduccin a la Ingeniera del Software
48
Nadie sabe qu contiene una caja negra...
6',
EW 'R F
,Q
/&
Introduccin a la Ingeniera del Software
49
Ejemplo: Abstraccin Procedimental (I)Mdulo = Subprograma
ALGORITMO Ordenar(ES TVector A) // Ordenar A por burbuja VAR N i,j,
...; INICIO PARA i=1 HASTA tam(A) HACER ... FINPARA FINInterfaz
Implementacin
Introduccin a la Ingeniera del Software
50
Ejemplo: Abstraccin Procedimental (II)El usuario est aislado de
cambios en la implementacin ALGORITMO Ordenar(ES TVector A) //
Ordenar A por quicksort VAR N pivote, ...; INICIO SI tam(A)>1
ENTONCES Partir(A,pivote); ... FINSI FINIntroduccin a la Ingeniera
del Software
Interfaz Implementacin
51
Cohesin
Propiedad intra-modular Mide la relacin entre los contenidos de
un mdulo Diversos grados, de fuerte a dbil Objetivo: Maximizar la
cohesin
Introduccin a la Ingeniera del Software
52
Ejemplo de cohesin dbilALGORITMO R IRPF(E TEmpleado P) VAR R
irpf; INICIO irpf= ... Escribir(irpf); Devolver irpf; FIN Interfaz
Implementacin
Escribir el IRPF limita los usos del mdulo. Ej: listado de
nminas, irpf promedio de la empresa,...Introduccin a la Ingeniera
del Software 53
Acoplamiento
Propiedad inter-modular Mide la relacin entre los mdulos de un
sistema Diversos grados, de fuerte a dbil Objetivo: Minimizar el
acoplamiento
Introduccin a la Ingeniera del Software
54
Ejemplo de Acoplamiento fuerte (I)Programar un juego de ajedrez:
TTablero tablero; TTurno turno = {maquina, humano}; ALGORITMO
Movimiento_Maquina(); ALGORITMO Movimiento_Humano();
Introduccin a la Ingeniera del Software
55
Ejemplo de Acoplamiento fuerte (II)
Interfaz ALGORITMO Movimiento_Maquina() INICIO Implementacin SI
(turno == maquina) ENTONCES mov= calcular_mov(tablero);
mover(mov,tablero); turno= humano; FINSI FIN
Introduccin a la Ingeniera del Software
56
Ejemplo de Acoplamiento fuerte (III)
ALGORITMO Movimiento_Humano() INICIO SI (turno == humano)
ENTONCES mov= leer_mov(tablero); mover(mov,tablero); turno=
maquina; FINSI FIN
Interfaz Implementacin
La mquina no puede jugar contra s misma u otras
mquinas...Introduccin a la Ingeniera del Software 57
Un Caso de Estudio
Un controlador de velocidad de un cocheObjetivo: mantener una
velocidad constante On/Off Pulso rueda Acelerador Freno
Aumentar/Disminuir Pulso RelojIntroduccin a la Ingeniera del
Software 59
Controlador Ajuste regulador de Velocidad
Entradas y salida del controladorOn/Off: indica si el
controlador est apagado o encendido Pulso rueda: se recibe un pulso
por cada rotacin de la rueda Acelerador: el controlador se
desconecta si se pisa el acelerador Freno: el controlador se
desconecta si se pisa el freno Aumentar/Disminuir: modificar la
velocidad mantenida Pulso reloj: se recibe un pulso cada
milisegundo Ajuste regulador: indica cunto combustible se inyecta
al motorIntroduccin a la Ingeniera del Software 60
Detalles del funcionamiento del controlador El controlador debe
mantener la velocidad deseada Los pulsos de la rueda y del reloj se
emplean para calcular la velocidad actual Cuando se enciende el
controlador, se toma la velocidad actual como velocidad deseada La
velocidad deseada se puede modificar El regulador se ajusta segn la
diferencia entre la velocidad deseada y la actual El controlador se
desconecta cuando el conductor pisa el freno o el
aceleradorIntroduccin a la Ingeniera del Software 61
Diseo Estructurado
Claves del Diseo EstructuradoDiseo centrado en tareas
(entrada-proceso-salida) Identificar qu tarea realiza el sistema 1.
Descomponer la tarea global en varias subtareas 2. Repetir el diseo
para cada subtarea, hasta llegar a subtareas elementales
Introduccin a la Ingeniera del Software
63
Descomposicin EstructuradaControlar velocidad Comprobar
desconexin Calcular Ajuste Regulador Obtener velocidad actual
Ajustar Regulador
Obtener seal freno
Obtener seal acelerador
Obtener velocidad deseada64
Introduccin a la Ingeniera del Software
Nos centramos en la acciones (verbos)Controlar velocidad
Comprobar desconexin Calcular Ajuste Regulador Obtener velocidad
actual Ajustar Regulador
Obtener seal freno
Obtener seal acelerador
Obtener velocidad deseada65
Introduccin a la Ingeniera del Software
Diseo Orientado a Objetos
Claves del Diseo Orientado a ObjetosDiseo centrado en los
objetos 1. Identificar los objetos (personajes) 2. Determinar las
acciones que realiza cada objeto (el papel del personaje) 3.
Determinar las acciones que cada objeto requiere de los dems
(relaciones entre personajes) 4. Repetir el diseo para cada objeto
que no sea elemental
Introduccin a la Ingeniera del Software
67
Descomposicin Orientada a Objetosreloj conductor velocidad
actual rueda
freno
velocidad deseada
regulador
aceleradorIntroduccin a la Ingeniera del Software 68