Vous êtes sur la page 1sur 34

Introduccin a la Ingeniera del Software

Programacin Modular Ingeniera en Telecomunicacin Departamento de Lenguajes y Ciencias de la Computacin Universidad de Mlaga

Contenido
1) 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

La Crisis del Software

La Crisis del Software


Muchos 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

Fases de desarrollo de un proyecto


Cliente Problema Especificacin Diseo Implementacin Producto

Introduccin a la Ingeniera del Software

El desarrollo indisciplinado conduce a errores


Un proyecto desarrollado de forma indisciplinada tiene muchas posibilidades de fracasar... Ejemplo: disear un columpio

Introduccin a la Ingeniera del Software

Lo que aparece en la definicin del problema...

Introduccin a la Ingeniera del Software

Lo que aparece en la especificacin...

Introduccin a la Ingeniera del Software

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 Software
Desarrollar 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 tcnicos
Introduccin 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 errnea
Introduccin 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 haciendo


Introduccin 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 NASA
Problema: 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 Sovitica


Problema: 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 congelado
Introduccin 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 implementacin
Introduccin 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 Software


Las metodologas mejoran la calidad del Software: internamente (desarrolladores) externamente (usuarios)

Introduccin a la Ingeniera del Software

37

Factores Internos de Calidad del Software


De 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 Software


De 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 Modular


Descomponer 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 Diseo
Metodologa 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 mdulos


Un 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 Informacin
IDEA -> 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. Implementacin


Interfaz (visible, pblico)

Implementacin (oculto, privado)

Introduccin a la Ingeniera del Software

48

Nadie sabe qu contiene una caja negra...

6',

E
W '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 FIN
Interfaz 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 FIN
Introduccin 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 dbil


ALGORITMO 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 coche


Objetivo: mantener una velocidad constante On/Off Pulso rueda Acelerador Freno Aumentar/Disminuir Pulso Reloj
Introduccin a la Ingeniera del Software 59

Controlador Ajuste regulador de Velocidad

Entradas y salida del controlador


On/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 motor
Introduccin 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 acelerador
Introduccin a la Ingeniera del Software 61

Diseo Estructurado

Claves del Diseo Estructurado


Diseo 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 Estructurada
Controlar velocidad Comprobar desconexin Calcular Ajuste Regulador Obtener velocidad actual Ajustar Regulador

Obtener seal freno

Obtener seal acelerador

Obtener velocidad deseada


64

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 deseada


65

Introduccin a la Ingeniera del Software

Diseo Orientado a Objetos

Claves del Diseo Orientado a Objetos


Diseo 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 Objetos


reloj conductor velocidad actual rueda

freno

velocidad deseada

regulador

acelerador
Introduccin a la Ingeniera del Software 68

Vous aimerez peut-être aussi