Profesora: María Carolina Chamorro
Fundamentos de Ingeniería de Software
Desarrollo OO
Ilustración de un método simplificado
Introducción
� Información para desarrollar software OO está disponible para quién desee estudiarla
� La compañías no pueden abordar estos estudios por largos periodos de tiempo.
� Las compañías necesitan maneras simples y efectivas para desarrollar sus primeros sistemas OO.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Introducción
� Una metodología puede llegar a ser muy usada si es simple, pequeña y claramente efectiva.
� Muchos métodos OO son demasiado grandes y complejos para ser usados en proyectos reales.
� Se necesitan métodos OO prácticos, con notaciones claras y modelos de proceso claros.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Requisitos para una metodología
� Guía todo el desarrollo de un sistema desde los requerimientos hasta las pruebas
� Incluye notaciones y modelos de proceso� Especifica los productos de las fases� Permite su extensión� Es fácil de aprender y usar
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Apoyos que debe dar una metodología OO
� Modelar la funcionalidad del sistema� Modelar los objetos que constituyen el sistema y
sus relaciones� Provee ayudas para descubrir los objetos y
refinar el modelo de objetos� Permite modelar el cómo los objetos colaboran
para proveer la funcionalidad deseada
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Notación
Incluye principalmente los siguientes elementos:
• Descripciones en lenguaje natural: El lenguaje
natural es la principal herramienta para capturar
requisitos
• Diagramas de clases: provee una vista estática de los
objetos relacionados con el sistema en varias fases del
proceso
• Diagramas de secuencia: provee una vista funcional
de los objetos mostrando la cooperación entre los
objetosFundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Ejemplos de notación
Propietario
nombre
Automóvil
precio
Conducir
Estacionar
Motor
tamaño
Iniciar
Detener
Sedán Cupé
dueño_de *
Diagramas de clases (UML)
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Diagramas de secuencia (UML)
Descripción: El Propietario comienza a conducir su auto
Precondiciones: El Automóvil está estacionado
Poscondiciones: El Propietario conduce su Automóvil
Propietario Automóvil Motor
Motor en marcha
Conducir()
Iniciar()
Excepciones: El Motor no puede funcionar
Ejemplos de notación
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Introducción a OMT++
OMT++
OMT+
OMT OOSE FUSION
Bases de Datos Interfaz
de UsuarioComunicación
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Rutas en el proceso de OMT++
Requisitos Sistemacompleto
Ruta Estática
Ruta Funcional
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Proceso de OMT++ simplificado
Captura derequisitos
R equis itos
C aso de uso A
C aso de uso B
C aso de uso C
O tros R eqs
... L is ta deoperac iones
O perac ión 1
O perac ión 2
O peración 3
O peración 4
...
D iagram a deC lases de l
Aná lis is
D iagram a de C lasesdel D iseño
X
A tributo1A tributo2
YAtributo3
Func ion2Func ion6
Func ion3Func ion5
ZA tributo3
Func ion1Func ion4
D iagram as deSecuencia
ZU suario X
Funcion1
Y
Funcion2
Func ion3
ZU suario X
Funcion4
Y
F uncion5
Func ion6
A nálisis D iseño Program ación
C lass Y {Funcion3();Funcion5();X x;
};
Y ::Funcion5 {Funcion6();
};
C asos deprueba
C aso de uso A
C aso de uso B
C aso de uso C
O tros R eqs
...Im p lem ent.
D ec larac iones
Pruebas
X
Atributo3
Y
A tributo1A tributo2
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Captura de requisitos y análisis
Captura derequisitos
Requisitos
Caso de uso A
Caso de uso B
Caso de uso C
Otros Reqs
... Lista deoperaciones
Operación 1
Operación 2
Operación 3
Operación 4
...
Diagrama deClases del
Análisis
Análisis
X
Atributo3
Y
Atributo1Atributo2
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Análisis y diseño
L is ta d eo p e ra c io n e s
O p e ra c ió n 1
O p e r a c ió n 2
O p e ra c ió n 3
O p e ra c ió n 4
. . .
D ia g r a m a d eC la s e s d e l
A n á l is is
D ia g r a m a d e C la s e sd e l D is e ñ o
X
A t r ib u to 1A t r ib u to 2
YA t r ib u to 3
F u n c io n 2F u n c io n 6
F u n c io n 3F u n c io n 5
ZA t r ib u to 3
F u n c io n 1F u n c io n 4
D ia g r a m a s d eS e c u e n c ia
ZU s u a r io X
F u n c io n 1
Y
F u n c io n 2
F u n c io n 3
ZU s u a r io X
F u n c io n 4
Y
F u n c io n 5
F u n c io n 6
A n á lis is D is e ñ o
X
A t r ib u to 3
Y
A t r ib u to 1A t r ib u to 2
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Diseño y programación
D ia g ra m a d e C la s e sd e l D is e ñ o
X
A tr ib u to 1A tr ib u to 2
YA tr ib u to 3
F u n c io n 2F u n c io n 6
F u n c io n 3F u n c io n 5
ZA tr ib u to 3
F u n c io n 1F u n c io n 4
D ia g ra m a s d eS e c u e n c ia
ZU s u a r io X
F u n c io n 1
Y
F u n c io n 2
F u n c io n 3
ZU s u a r io X
F u n c io n 4
Y
F u n c io n 5
F u n c io n 6
D is e ñ o P ro g ra m a c ió n
C la s s Y {F u n c io n 3 ();F u n c io n 5 ();X x ;
} ;
Y ::F u n c io n 5 {F u n c io n 6 ();
} ;
Im lp e m e n t.
D e c la ra c io n e s
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Programación y pruebas
Programación
Class Y {Funcion3();Funcion5();X x;
};
Y::Funcion5 {Funcion6();
};
Casos deprueba
Caso de uso A
Caso de uso B
Caso de uso C
Otros Reqs
...Código
Declaraciones
Pruebas
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
• Propósitos de esta fase:
• comunicarse con los usuarios finales y
• documentar los requisitos
• Los requisitos se dividen en:
• funcionales y
• no-funcionales
Captura de requisitos
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Especifican qué debería hacer el sistema
• En OMT++ se usan casos de uso para recolectar requisitos
funcionales.
• Un caso de uso es una historia breve que describe el uso de
un futuro sistema.
• Un caso de uso describe cómo el sistema en conjunto con el
usuario final podrían hacer "una cosa".
• La descripción se hace en un alto nivel de abstracción.
Requisitos funcionales
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Ejemplo de requisito funcional:
"El sistema permite imprimir un informe".
Un caso de uso analiza este requisito
definiendo algo así como lo siguiente:
"Primero el usuario selecciona la información a ser incluida
en el informe. Luego él selecciona el tipo de informe...".
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
• Hay otros tipos de requisitos, tales como los
técnicos y los financieros, los cuales no se pueden
manejar con casos de uso. Sin embargo, los casos
de uso pueden ser una fuente de tales requisitos.
• Los otros requisitos se documentan como una
lista numerada.
• Todos los requisitos deberían ser exactos y
mesurables.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Ejemplo para ilustrar captura de requisitos:
• Se desea construir una aplicación que permita a un estudiante componer tonadas musicales simples.
• La aplicación es llamada "Compositor básico".
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Un estudiante inicia la aplicación que le muestra un
pentagrama vacío y una selección de posibles tipos de notas.
El estudiante selecciona un tipo de nota, por ejemplo, una
negra, una blanca, o una corchea. Luego él indica un lugar en
el pentagrama donde él desea que el tipo de nota
seleccionada aparezca. Seleccionando tipos de notas e
indicando posiciones en el pentagrama él construye una
tonada. El estudiante toca una tonada y la guarda en un
disco. Finalmente, él cierra la aplicación.
Caso de uso # 1
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
El estudiante inicia la aplicación. A continuación él carga
desde un disco el archivo con la tonada que él desea
escuchar. Todas las notas de la tonada seleccionada
aparecen en el pentagrama. Después el estudiante toca la
tonada. Finalmente, él cierra la aplicación.
Caso de uso # 2
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Requisitos no-funcionales:
• #1: La aplicación soporta la escala Sol mayor y las
siguientes notas: semicorchea, corchea, negra y blanca.
• #2: La longitud máxima de una tonada es de 20 notas.
• #3: Las tonadas son almacenadas como archivos ASCII.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
• Los requisitos se discuten con el usuario final. Si es
posible, el usuario debería participar en la escritura
de los casos de uso.
• Bosquejos de la interfaz de usuario pueden hacer
que los casos de uso sean más concretos.
• Una vez que los casos de uso y los requisitos han
sido documentados y acordados con el cliente, ellos
forman la base para las siguientes fases del
desarrollo de la aplicación.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Análisis OO
• Propósito: comprender el dominio del problema y el sistema a implementar
• Se basa en los casos de uso y los requisitoscolectados
• Incluye dos tareas: – Análisis de objetos y
– Análisis de comportamiento
Pareciera que esta fase es difícil de dominar. Se sugiere que sea hecho por un equipo formado por expertos en análisis de objetos y expertos en el dominio del problema.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Análisis de Objetos
• El análisis de objetos lleva a identificar y especificar todos los
conceptos claves del dominio del problema del sistema a
desarrollar.
• Esta tarea produce un modelo de objetos del análisis. Este
modelo documenta los conceptos claves del dominio de
problema y la relación entre ellos.
• Se describe mediante diagramas de clases.
• Provee la base para desarrollar los demás modelos del sistema.
• El modelo de objetos del análisis no incluye conceptos de
implementación.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Análisis de Objetos
• Los objetos se obtienen identificando objetos
concretos del mundo real y que sean importantes para
la aplicación.
• Se pueden encontrar objetos buscando sustantivos en
los casos de uso, en los requisitos o analizando la
terminología usada por los usuarios finales.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Modelo de objetos del
compositor básico
Tonada
nombre
Pentagrama
llave
Nota
duración
tono
Blanca Corchea
Escrita_en
Negra Semicorchea
*
*1
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Análisis de Comportamiento
• El análisis de comportamiento define las operaciones que el
usuario ejecuta con el sistema.
• Este modela sólo la funcionalidad externa del sistema y
produce una lista de operaciones.
• El sistema final debe soportar todas las operaciones de la
lista.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Modelo de comportamiento del
compositor básico
Produce una lista de operaciones , la cual se construye sobre la base de casos de uso.
1) Iniciar la aplicación2) Seleccionar un tipo de nota3) Colocar una nota musical en el pentagrama4) Tocar una tonada5) Guardar una tonada6) Cargar una tonada7) Cerrar la aplicación.
Las operaciones 1-5 y 7 se encuentran en el c.u. #1.Las operaciones 1, 4, 6 y 7 se encuentran en el c.u. #2.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Análisis OO
Waiting for your selection...
Elementary Composer
File Edit Play
Messages
Notes Your Tune
Ventana Principal de la aplicación de ejemplo
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Tonada
nombre
Pentagrama
llave
Nota
duracióntono
Blanca Corchea
Escrita_en
Negra Semicorchea
*
*1
Ventana Ppalload: menuplay: menu...noteTypes: figurepentagrama: figuremessage: text
DialogoFile
Diseño OOPrimera versión del diagrama de clases del diseño
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Diseño OO
Especificación del comportamiento de una operación
Operación: Agregando una nota en el pentagrama (la nota puede ser de cualquier tipo de las que están disponibles).
Precondiciones : El tipo de la nota a agregar está seleccionado.
Excepciones: El pentagrama contiene el número máximo de notas permitido, no se puede agregar una nueva nota: un mensaje de error se muestra en el campo mensaje.
Postcondiciones: Hay una nueva nota en el pentagrama.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Diseño OO
Usuario Ventana Ppal Pentagrama Corchea
ClickEnPenta(x,y)
DemeNotas()
Crear(tono)
OK
Calcula eltono, i.e.altura
notas
Hace click enpentagrama
AgregarNota(TipoSelec, tono)
OK
Redibujar(notas)
Diagrama de secuencia “Agregando una nota en el pen tagrama”: .
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Diseño OO
Tonada
nombre
Pentagrama
llave
AgregarNota(tipoSel:tono):OKDemeNotas():notas
Nota
duracióntono
Crear(tono){Abstract}Escrita_en *
*1
Ventana Ppalload: menuplay: menu...notaTipo: figurepentagrama: figuremensaje: text
ClickEnPenta(x,y)Redibujar(notas)
DialogoFile
maneja1
1
Semicorchea
Crear(tono)
Blanca
Crear(tono)
Negra
Crear(tono)
Corchea
Crear(tono)
Segunda versión del diagrama de clases del
diseño
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Diseño OO
Especifición de otra operación
Operación: Tocando una tonada.
Precondiciones : Hay una tonada en el pentagrama.
Excepciones: No se puede tocar la tonada, hay problemas con los controladores de sonido. Un mensaje de error se muestra en el campo de mensajes.
Postcondiciones: La tonada ha sido tocada.
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Diseño OO
Usuario VentanaPpal
Pentagrama Corchea
PlayClick()
Play()
Hace click enbotón Play
Play() Ciclo: para cada nota hacer:
Fin del ciclo
Diagrama de secuencia “Tocando una tonada”: .
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Diseño OOTercera versión del
diagrama de clases del diseño
Tonada
nombre
Pentagrama
llave
AgregarNota(tipoSel:tono):OKDemeNotas():notasPlay()
Nota
duracióntono
Crear(tono){abstract}Play(){abstract}
Escrita_en *
*1
Ventana Ppalload: menuplay: menu...notaTipo: figurepentagrama: figuremensaje: text
ClickEnPenta(x,y)Redibujar(notas)PlayClick()
DialogoFile
maneja1
1
Semicorchea
Crear(tono)Play()
Blanca
Crear(tono)Play()
Negra
Crear(tono)Play()
Corchea
Crear(tono)Play()
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
TipoNotas=array[0..20] of ^Nota;
Pentagrama =
class
private llave: integer;
notas: TipoNotas;
public function AgregarNotas(TipoSel: integer; tono:integer):
boolean;
function DemeNotas: PChar;
procedure Play;
end;
Programación OODeclaraciones
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
procedure VentanaPpal.ClickEnPenta(...X,Y:integer)
var tono:integer;
ok:boolean;
notas: Pchar:
begin {Calcula el tono basado en el parámetro Y}
...
ok:=miPentagrama.AgregarNota(TipoSel, tono)
if not(ok) then
Mensaje.texto:=‘¡No puede agregar más notas!’;
notas:=miPentagrama.DemeNotas;
Redibuje(notas)
end;
Programación OOImplementación
Fundamentos de Ingeniería de Software Profesora: María Carolina Chamorro
Profesora: María Carolina Chamorro
Fundamentos de Ingeniería de Software
Desarrollo OO
Ilustración de un método simplificado