introduccion ing software
TRANSCRIPT
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