Está en la página 1de 173

Introduccin al modelado

Metodologas, UML y
patrones de diseo

Ricardo Borillo Domnech


borillo@si.uji.es

ndice
Conceptos
Lenguajes

de modelado: UML
Metologas:

Metologas clsicas: RUP, Mtrica, MSF


Metologas giles: eXtreme Programming

Patrones

de diseo de sofware
Arquitecturas dirigidas por modelos (MDA)
Herramientas de modelado

Introduccin a las metodologas

Componentes bsicos
RUP. Tcnicas

y su aplicacin a la gestin
de proyectos software orientados a objeto.
XP. Gestin gil de proyectos y grupos de
desarrollo.
UML. Diagramas, elementos notacionales y
semntica de los modelos generados.

Modelado con UML

Qu es UML?

El UML modela sistema mediante el uso de objetos


que forman parte de l as como, las relaciones
estticas o dinmicas que existen entre ellos.
UML puede ser utilizado por cualquier metodologa
de anlisis y diseo orientada por objetos para
expresar los diseos.

Qu es UML?

UML es un Lenguaje de Modelado Unificado basado en


una notacin grfica la cual permite: especificar,
construir, visualizar y documentar los objetos de un
sistema programado.
Este lenguaje es el resultado de la unificacin de los
mtodos de modelado orientados a objetos de Booch,
Rumbaugh (OMT: Object Modeling Technique) y
Jacobson (OOSE: Object-Oriented Sotfware
Engineering).

UML

UML es un lenguaje de modelado que sirve para


visualizar, especificar , construir y documentar un
sistema software.
Lenguaje de modelado:
Lenguaje cuyo vocabulario y reglas se centran en la
representacin conceptual y fsica de un sistema (Booch,
Jacobson y Rumbaugh).

UML para visualizar

Smbolos con semntica bien definida.


UML transciende al lenguaje de programacin.
Modelo explcito, que facilita la comunicacin.

UML para especificar

Especificar es equivalente a construir modelos que


cumplan las condiciones de no ambigedad y
completitud.
UML cubre la especificacin del anlisis, diseo e
implementacin de un sistema software.

UML para construir

Es posible hacer
Ingeniera Directa
corresponder
con los lenguajes Modelo
CDIGO
de programacin UML
(Java, C#,
Ingeniera Inversa
B.Datos, etc.).

UML para documentar

UML cubre la documentacin de un sistema:

Requisitos
Arquitectura
Diseo
Cdigo fuente
Planificacin
Pruebas
Prototipos
Versiones

UML aglutina enfoques OO


Rumbaugh
Booch

Jacobson

Odell

Meyer
Pre- and Post-conditions

Shlaer-Mellor
Object life cycles

UML
Harel

State Charts

Gamma et. al.


Frameworks, patterns,
notes

Embly
Singleton classes

Wirfs-Brock
Fusion
Operation descriptions,
message numbering

Responsabilities

Historia de UML
UML 2.0

2001

UML 1.4

2000
1999
1998
Nov 97

UML 1.3
UML 1.2

UML aprobado por el OMG

Revisiones
menores

Actualizaciones de UML

UML 1.3 es una versin madura de UML a la que se le han


aadido una serie de pequeas revisiones, las cuales
corrigen o mejoran la especificacin base (UML 1.2).
UML 1.4 incorpora ciertas modificaciones sobre el estndar
en base a los comentarios recogidos de los usuarios finales
y de los fabricantes de software compatible con UML.
UML 2.0 promete la puesta a punto del estndar para
poder integrarse con el desarrollo basado en componentes
que demanda el mercado.

UML 2.0

Arquitectura: refinamiento del ncleo del estndar para que


est en consonancia con el resto de estndares del mercado.
Personalizacin: mejora de los mecanismos de extensibilidad y
personalizacin.
Componentes: mejor soporte para el desarrollo basado en
componentes (CORBA, EJB, COM+).
Mecanismos generales: nuevos mecanimos para el control de
las versiones dentro del modelo, as como el intercambio de
los metadatos del mismo con XMI (XML Metadad Interchange).

Modelos y Diagramas

Un proceso de desarrollo de software debe ofrecer un conjunto


de modelos que permitan expresar el producto desde cada
una de las perspectivas de inters

El cdigo fuente del sistema es el modelo ms detallado del


sistema (y adems es ejecutable). Sin embargo, se requieren
otros modelos ...

Cada modelo es completo desde su punto de vista del


sistema, sin embargo, existen relaciones de trazabilidad entre
los diferentes modelos

Modelos y Diagramas

Modelo: captura una vista de un sistema del mundo real. Es una


abstraccin de dicho sistema, considerando un cierto propsito.

Diagrama: representacin grfica de una coleccin de elementos


de modelado, a menudo dibujada como un grafo con vrtices
conectados por arcos.

Organizacin de Modelos

Vista de Diseo
Vista de los
Casos de Uso
Vista de
Procesos

Vista de
Implementacin

Vista de
Despliegue

Diagramas de UML

Use Case
Use Case
Diagramas de
Diagrams
Diagrams
Secuencia

Use Case
Use Case
Diagramas de
Diagrams
Diagrams
Casos de Uso

Scenario
Scenario
Diagramas de
Diagrams
Diagrams
Colaboracin
Scenario
Scenario
Diagramas de
Diagrams
Diagrams
Estados

State
State
Diagramas de
Diagrams
Diagrams
Clases

Modelo

Diagramas de
Actividad

State
State
Diagramas de
Diagrams
Diagrams
Objetos
State
State
Diagramas de
Diagrams
Diagrams
Componentes

Component
Component
Diagrams
Diagramas
Diagrams de

Distribucin

Mecanismos comunes en UML


Especificaciones.

Es ms que un lenguaje
grfico (semntica detrs de la notacin).
Adornos. Detalles sobre un clase, nivel de
acceso de sus mtodos, notas.
Divisiones Comunes: Clase/Objecto o
Interfaz/Implementacin.
Extensibilidad. Estereotipos, valores etiquetados
o restricciones.

Mecanismos comunes en UML

Casos de Uso

Casos de Usos

Un diagrama de Casos de Uso muestra la distintas


operaciones que se esperan de una aplicacin o
sistema y cmo se relaciona con su entorno (usuario
u otras aplicaciones).

Es una herramienta esencial para la captura de


requerimientos y para la planificacin y control de un
proyecto interactivo.

Casos de Usos

Los casos de Uso Se representa en el diagrama por


una elipse que denota un requerimiento
solucionando por el sistema.
Cada caso de uso de uso es una operacin
completa desarrollada por los actores y por el
sistema en un dilogo.
El conjunto de casos de uso representa la totalidad
de operaciones desarrolladas por el sistema.

Casos de Usos

Casos de Usos

Actor: Es un usuario del sistema, que necesita o


usa alguno de los casos de uso. Un usuario puede
jugar ms de un rol. Un solo actor puede actuar en
muchos casos de uso; recprocamente, un caso de
uso puede tener varios actores. Los actores no
necesitan ser humanos pueden ser sistemas
externos que necesitan alguna informacin del
sistema actual.

Casos de Usos
Tambin

se puede encontrar tres tipos de


relaciones, como son:

Comunica (comunicates) Entre un actor y un


caso de uso, denota la participacin del actor en
el caso de uso determinado.

Casos de Usos
Usa

(uses): Relacin entre dos casos de


uso, denota la inclusin del comportamiento
de un escenario en otro. Se utiliza cuando se
repite un caso de uso en dos o ms casos
de uso separados. Frecuentemente no hay
actor asociado con el caso de uso comn.

Casos de Usos
Extiende

(extends): Relacin entre dos


casos, denota cuando un caso de uso es
una especializacin de otro. Se usa cuando
se describe una variacin sobre el normal
comportamiento.

Casos de Usos
Tcnicas

comunes de modelado:

Modelado del contexto del sistema (utilidad


similar a los DFD).
Modelado de los requisitos de un sistema.
Modelado del proceso de test y estrs del
sistema.

Diagrama de Clases

Conceptos bsicos orientacin a objetos

Clase
Objeto
Herencia
Interfaz
Polimorfismo de clases
Clases y atributos estticos
Clases y atributos finales
Clases y mtodos abstractos

Diagrama de clases

Un diagrama de clases o estructura esttica muestra


el conjunto de clases y objeto importantes que
forman parte de un sistema, junto con las relaciones
existentes entre clases y objetos. Muestra de una
manera esttica la estructura de informacin del
sistema y la visibilidad que tiene cada una de las
clases, dada por sus relaciones con los dems en el
modelo.

Diagrama de clases
Usos

comunes del diagrama:

Modelado del vocabulario del sistema.


Modelado de colaboraciones simples.
Modelado de un esquema lgico de base de
datos.
Modelado de un conjunto de clases de test.

Diagrama de clases

Clase: representa un conjunto de entidades que


tienen en comn propiedades, operaciones,
relaciones y semntica.
Una clase es un constructor que define la estructura
y comportamiento de una coleccin de objeto
denominados instancia de la clase.
En UML la clase est representada por un
rectngulo con tres divisiones internas, son los
elementos fundamentales del diagrama.

Diagrama de clases

Atributo: Representa una propiedad de una entidad.


Cada atributo de un objeto tiene un valor que pertenece
a un dominio de valores determinado.
Las sintaxis de una atributo es:
Visibilidad <nombre>: tipo = valor { propiedades}
Donde visibilidad es uno de los siguientes:
+ pblico.
# protegido.
- privado.

Diagrama de clases

Operacin: El conjunto de operaciones que


describen el comportamiento de los objetos de una
clase. La sintaxis de una operacin en UML es:
Visibilidad nombre (lista de parmetros): tipo que
retorna { propiedades}

Diagrama de clases

Nombre de la clase
Atributos
Mtodos

Diagrama de clases

Responsabilidades: Contrato u obligacin de una


clase, asignada en el momento del diseo.
Clase Producto:
Registrar el cdigo de la publicacin.
Mantener estructura del producto plantilla.

Diagrama de clases

Tcnicas de modelado:
Modelado del vocabulario de un sistema a partir de
las descripciones funcionales.
Modelado de la distribucin de responsabilidades en
un sistema.
Modelado de cosas que no son software (hardware,
personas, etc).
Modelado de tipos primitivos.

Diagrama de clases

Objeto: es una instancia de una clase. Se


caracteriza por tener una identidad nica, un estado
definido por un conjunto de valores de atributos y un
comportamiento representado por sus operaciones y
mtodos.

Asociacin
(rol,
multiplicidad,
calificador):
representan las relaciones entre instancias de clase.
Una asociacin es una lnea que une dos o ms
clases.

Diagrama de clases

Nombre: Identifica la asociacin entre los objetos,


caracterizndola.
Rol: Identificado como un nombre a los finales de la
lnea, describe la semntica de la relacin en el sentido
indicado. Cada asociacin tiene dos roles; cada rol es
una direccin en la asociacin. El rol puede estar
representado en el nombre de la clase.

Diagrama de clases

Multiplicidad: Describe la cardinalidad de la


relacin, es decir, cuanto objetos de esa clase
pueden participar en la relacin dada. Tipos:

Diagrama de clases

Dependencia: Es una relacin donde existen entidades


independientes y otras dependientes, lo que implica que
cambiar el elemento independiente puede requerir
cambios en los dependientes. Se representa con una
lnea punteada direccional, indicando el sentido de la
dependencia.

Diagrama de clases

Diagrama de clases
Los

tipos de asociaciones entre clases


presentes en un diagrama esttico son:

Asociacin binaria.
Asociacin n-aria.
Composicin.
Generalizacin.
Refinamiento.

Diagrama de clases

Asociacin Binaria: Representa una relacin


sencilla entre dos clases, no muy fuerte (es decir,
no
se
exige
dependencia
existencial
ni
encapsulamiento). Se indica como una lnea slida
que une dos clases.
Asociacin n-aria: Es una asociacin entre tres o
ms clases. Se representa como un diamante del
cual salen lneas de asociacin a las clases.

Diagrama de clases

Diagrama de clases
Composicin:

implica:

Es una asociacin fuerte que

Dependencia existencial. El elemento


dependiente desaparece al destruirse el que lo
contiene y, si es de cardinalidad 1, es creado al
mismo tiempo.
Hay una pertenencia fuerte. Se puede decir que
el objeto contenido es parte constitutiva y vital del
que lo contiene.

Diagrama de clases

Los objetivos contenidos no son compartidos, esto es, no


hacen parte del estado de otro objeto.

Se

denota dibujando un rombo del lado de la clase


que contiene a la otra en la relacin.

Diagrama de clases

Diagrama de clases
Agregacin:

Relaciona una clase ya


ensamblada con una clase componente. Es
tambin una relacin de composicin menos
fuerte (no se exige dependencia existencial)
y se denota por un rombo sin rellenar en un
o de los extremos.

Diagrama de clases

Diagrama de clases

Generalizacin: es un proceso de abstraccin en el


cual un conjunto de clases existentes, que tienen
atributos y mtodos comunes, es referido por una
clase genrica a un nivel mayor de abstraccin. La
relacin de generalizacin denota una relacin de
herencia entre clases. Se representa dibujando un
tringulo sin rellenar en el lado de la superclase. La
subclase hereda todos los atributos y mensajes
descritos en la superclase.

Diagrama de clases

Diagrama de clases
Refinamiento:

Es una relacin que


representa la especificacin completa de
algo que ya ha sido especificado con cierto
nivel de detalle. Por ejemplo, una clase del
diseo es un refinamiento de una clase de
anlisis.

Diagrama de clases

Diagrama de clases

Tcnicas de modelado:
Modelado de dependencias simples.
Modelado de herencia simple.
Modelado de relaciones estructurales
(composiciones y agregaciones).
Modelado de comentarios.

Diagrama de clases

Diagrama de Interaccin

Diagrama de interaccin
Estos

son modelos que describen como los


grupos de objetos que colaboran en algunos
ambientes. Por lo general, un diagrama de
interaccin captura el comportamiento de un
nico caso de uso.
Hay dos tipos de diagramas de interaccin:
diagramas de secuencia y diagramas de
colaboracin.

Diagrama de interaccin

Un diagrama de secuencia muestra la interaccin de


un conjunto de objetos de una aplicacin a travs
del tiempo. Esta descripcin es importante porque
puede dar detalle a los casos de uso, aclarndolos
al nivel de mensajes de los objetos existentes, como
tambin muestra el uso de los mensajes de las
clases diseadas en el contexto de una operacin.

Diagrama de interaccin
Elementos

bsicos

del

diagrama

interaccin:

Objetos o actores para cada entidad.


Enlaces entre los objetos.
Procedimientos a invocar entre los objetos.
Mensajes entre los objetos.

de

Diagrama de interaccin

Un objeto se representa como una lnea vertical punteada


(lnea de vida), con un rectngulo de encabezado y con
rectngulo a travs de la lnea principal que denotan la
activacin, es decir, el perodo de tiempo en el cual el objeto se
encuentra desarrollando alguna operacin.
El rectngulo de encabezado contiene el nombre del objeto y
el de su clase, en un formato nombreObjeto: nombreClase. El
envo de mensajes entre objetos se denotan mediante una
lnea slida dirigida, desde el objeto que emite el mensaje
hacia el objeto que lo ejecuta.

Diagrama de interaccin

Diagrama de interaccin

Diagramas de Colaboracin:

Es una forma de representar interaccin entre los objetos,


es decir, las relaciones entre ellos y la secuencia de los
mensajes de las iteraciones que estn indicadas por un
nmero A diferencia de los diagramas de secuencia,
pueden mostrar el contexto de la operacin (cules objetos
son atributos, cules temporales, etc) y ciclos en la
ejecucin. Muestra como varios objetos colaboran en un
solo caso de uso.

Diagrama de interaccin

Diagrama de interaccin

Tcnicas de modelado:
Modelado dinmico del sistema.
Implementacin de un caso de uso en concreto para
cada diagrama.
Modelado del flujo de control por ordenacin temporal
(secuencia).
Modelado del flujo de control por organizacin
(colaboracin).

Diagrama de Estados

Diagrama de estados

Diagrama de Estados:
Muestra el conjunto de estado por los cuales
pasa un objeto durante su vida en una aplicacin
junto con los cambios que permiten pasar de un
estado a otro. Esta representado principalmente
por los siguientes elementos:
Estado.
Elemento.
Transicin.

Diagrama de estados
Estado: Identifica un perodo de tiempo del objeto

(no instantneo) en el cual el objeto esta esperando


alguna operacin, tiene cierto estado caracterstico o
puede recibir cierto tipo de estmulos.

Diagrama de estados
Partes

que componen un estado:

Nombre
Acciones de entrada y de salida.
Transiciones internas.
Subestados.
Eventos diferidos.

Diagrama de estados

Eventos: Es una ocurrencia que puede causar la


transicin de un estado a otro de un objeto. Esta,
puede ser una:

Condicin que toma el de verdadero o falso.


Recepcin de una seal de otro objeto en el modelo.
Recepcin de un mensaje.
Paso de cierto perodo de tiempo, despus de entrar al
estado o de cierta hora y fecha particular.

Diagrama de estados
Transicin: Es una relacin entre estados de un

fuente a un destino.
Partes que componen una transicin:

Estado de origen.
Evento de disparo.
Condicin de guarda.
Accin.
Estado de destino.

Diagrama de estados
Otros

elementos:

Subestados. Secuenciales o no, resultan en una nueva


mquina de estados.
Estados de historia.
Estados de historia. Permiten a un conjunto de estados o
subestados de un objeto, recordar el estado que estaba
activo en su ltima ejecucin. Si no existe historia, se
comenzara por el estado inicial.
Subestados concurrentes.

Diagrama de estados

Diagrama de estados

Tcnicas de modelado:
Modelado de la vida de un objeto. Este tipo de
diagramas se asocian directamente a una clase.

Diagrama de Actividades

Diagrama de Actividades

Un diagrama de actividades es un caso especial de


un diagrama de estados en el cual casi todos los
estados son estados de accin (identifican que
accin se ejecuta al esta en l ) y casi todas las
transiciones son enviadas al terminar la accin
ejecutada en el estado anterior.
Generalmente modelan los pasos de un algoritmo y
puede dar detalle a un caso de uso, un objeto o un
mensaje en un objeto.

Diagrama de Actividades

Sirven para representar transiciones internas, sin


hacer mucho nfasis en transiciones o eventos
externos.
Los elementos que conforman el diagrama son:

Accin
Transicin.
Objetos

Diagrama de Actividades
Estado

de Accin: representa un estado


con accin interna, con lo menos una
transicin que indica la culminacin de la
accin (por medio de un evento implcito).

Permite modular un paso dentro del algoritmo. Se


representan por un rectngulo con bordes
redondeados.

Diagrama de Actividades
Estado

de Actividad: Estado ms general


que permite su descomposicin en otro
diagrama de actividades interno, de nivel
ms bajo.

Su representacin, en cuanto a la notacin, es la


misma que el de Accin.

Diagrama de Actividades
Casos

especiales:

Estado inicial. Representa el punto de entrada del


diagrama de actividades.
Estado final. Su existencia depende de si el
diagrama es cclico.
tem de decisin. Representado con un rombo,
permite tomar bifurcaciones condicionales.

Diagrama de Actividades
Casos

especiales:

Carriles o Swim Lanes. Permiten acotar el rea a


las cuales las actividades estn asociadas
(departamentos, mdulos del sistema, etc).
Flujos con objetos. Hacer explcita la relacin con una
entidad en concreto.

Diagrama de Actividades
Transicin:

Es la relacin entre dos estados


y se encuentran unidos por flechas;
indicando que un objeto que est en el
primer estado realizar una accin
especificada y entrar en el segundo estado
cuando un evento implcito ocurra y unas
condiciones especificas sean satisfechas.

Diagrama de Actividades
Tipos

de transiciones:

Bifurcaciones condicionales. Permiten tomar


distintos caminos dentro del diagrama en funcin
de una condicin o guarda.
Divisin y unin. Permiten representar el
paralelismo en la ejecucin de actividades.

Diagrama de Actividades

Diagrama de interaccin

Tcnicas de modelado:

Modelado de un flujo de trabajo o Workflow. Uso intensivo de


estados de actividad, swim lanes y bifurcaciones
condicionales.
Modelado de una operacin concreta que resulta muy
complicada. Uso intensivo de transiciones (simples o
paralelas) y de estados de accin.

Diagrama de Componentes

Diagrama de componentes

Los diagramas de componentes describen los


elementos fsicos reemplazables del sistema y
sus relaciones

Muestran las opciones de realizacin


incluyendo cdigo fuente, binario y ejecutable

Diagrama de componentes

Los componentes representan todos los tipos de


elementos software que entran en la fabricacin de
aplicaciones informticas. Pueden ser simples
archivos, libreras, bibliotecas cargadas
dinmicamente, etc.

Las relaciones de dependencia se utilizan en los


diagramas de componentes para indicar que un
componente utiliza los servicios ofrecidos por otro
componente

Diagrama de componentes

Diagrama de componentes

Tcnicas de modelado:

Modelado de ejecutables y bibliotecas.


Modelado de tablas, archivos y documentos.
Modelado y diseo de un API.
Modelado del cdigo fuente.
Planificacin de versiones ejecutables para su implementacin
con Nant.

Diagrama de Despliegue

Diagrama de despliegue

Los diagramas de despliegue muestran la


disposicin fsica de los distintos nodos que
componen un sistema y el reparto de los
componentes sobre dichos nodos

Diagrama de despliegue

La vista de despliegue representa la disposicin de las


instancias de componentes de ejecucin en instancias de
nodos conectados por enlaces de comunicacin.
Un nodo es un recurso de ejecucin tal como
Dispositivos
Procesadores
Memoria
Los nodos se interconectan mediante soportes bidireccionales
que pueden a su vez estereotiparse.

Diagrama de despliegue
Los

nodos se interconectan mediante


soportes bidireccionales que pueden a su
vez estereotiparse.
Esta vista permite determinar las
consecuencias de la distribucin y la
asignacin de recursos.

Diagrama de despliegue

Diagrama de despliegue

Diagrama de despliegue

Tcnicas de modelado:

Modelado de procesadores y dispositivos.


Modelado de distribucin de componentes.

RUP: El Proceso Unificado de Rational

Proceso Unificado de Rational


Orgenes

Modelo original Objectory definido por Ivan


Jacobson (1987)
Rational Software compra la empresa de
Objectory (1995)
Surge la primera versin de UML (1997)
Se publica la primera versin del Proceso
Unificado de Rational - RUP (junio 1998)

Casos de uso

Dirigido por casos de uso

Se centra en la funcionalidad que el sistema debe poseer para


satisfacer las necesidades de un usuario (persona, sistema
externo, dispositivo) que interactua con l
Casos de uso como el hilo conductor que orienta las actividades de
desarrollo

Casos de Uso
<<defineNecesidades>>
Anlisis
Recopilar,
Clarificar y
Validar los
requerimientos

<<realiza>>

<<verifica>>

Diseo

Pruebas

Realizar los
casos de uso

Verificar que se
satisfacen los
casos de uso

Arquitectura

Centrado en la arquitectura

Concepto similar a la arquitectura de un edificio

Arquitectura en software

Varios planos con diferentes aspectos del edificio


Tener una imagen completa del edificio antes que comience la construccin
Diferentes vistas del sistema: estructural, funcional, dinmico, etc.
Plataforma en la que va a operar
Determina la forma del sistema

Arquitectura: determina la forma del sistema


Casos de uso: determinan la funcin del sistema

Modelo que implementa

Iterativo e incremental

Descomposicin de un proyecto grande en mini-proyectos


Cada mini-proyecto es una iteracin
Las iteraciones deben estar controladas
Cada iteracin trata un conjunto de casos de uso

Ventajas del enfoque iterativo

Deteccin temprana de riesgos


Administracin adecuada del cambio
Mayor grado de reutilizacin
Mayor experiencia para el grupo de desarrollo

Estructura
Dinmica
Ciclo: cada ciclo una nueva versin del producto
Fase: Etapas de un ciclo que finalizan en un HITO
Iteracin: Proceso de ingeniera sobre una funcionalidad
limitada del sistema

Esttica - Flujos de trabajo

Artefactos
Actividades
Roles

Estructura

Roles
Actividades
Artefactos
Flujo de Trabajo

QUIN?
CMO?
QU?
CUNDO?

realiza
diseador

responsable de

diagrama de
secuencia

diseo de caso
de uso

Roles

Definicin del comportamiento y responsabilidades


de los participantes
Propietario de una serie de artefactos
Recurso
Patricia
Juan
Mnica
Pedro

Rol

Actividad

Artefacto

Diseador
Analista
Dominio
Diseador
Funcional

Diseo de Objetos
Definicin de CU

DC
DCU

Diseo de CU

DS

Actividades

Unidad de trabajo que puede ejecutar un individuo en un rol


especfico
Tiene un propsito claro y se expresa en trminos de actualizar
artefactos
La granularidad de la actividad es generalmente de horas o
pocos das
Ejemplos de actividades

Planear una iteracin (administrador del proyecto)


Encontrar caso de uso y actores (analista del dominio)
Revisin del diseo (probador)

Artefactos

Pieza de informacin producida, modificada y


utilizada en un proceso
Productos tangibles del proyecto
Utilizados por los roles como entrada para la
realizacin de sus actividades
Resultado de las actividades realizadas por los roles
Metamodelo: Clase rol tiene como mtodos las
actividades y como parmetros los artefactos

Flujos de trabajo

Forma de describir significativamente la secuenciencias de


actividades que producen resultados y las interacciones
entre cargos
En trminos de UML se puede utilizar: diagrama de
actividades, de secuencia, de colaboracin
En RUP hay nueve tipos de flujos de trabajo

De ingeniera

Negocio, Requerimiento, Anlisis, Diseo, Pruebas, Liberacin

De soporte

Administracin del proyecto, Administracin del cambio, Ambiente

Dimensin dinmica
fase

ciclo

Concepcin Elaboracin

hito 1
Iter. 1

hito 2
Iter. 2

Construccin
hito 3
Iter. 3 Iter. 4 Iter. 5

Transicin

hito 4
Iter. 6

Hito: punto en el tiempo en donde se evaluan objetivos


logrados y se pueden tomar decisiones crticas

Desarrollo iterativo
Construccin
Ciclo de
desarrollo 1

Ciclo de
desarrollo 2

Perfeccionar
el plan
Anlisis

Diseo

Ciclo de
desarrollo n

Sincronizar
Artefactos
Construccin

Pruebas

Fase de concepcin

Objetivo: definir la razn de ser y el alcance del


proyecto. Estudio de oportunidad.

Actividades

Visin = QU + PARA QU + CUNTO


Especificacin de los criterios de xito del proyecto
Definicin de los requerimientos
Estimacin de los recursos necesarios
Cronograma inicial de fases

Artefactos

Documento de definicin del proyecto

Fase de elaboracin

Objetivo: establecer un plan de proyecto y una arquitectura


correcta del sistema
Actividades

Anlisis del dominio del problema


Definicin de la arquitectura bsica
Anlisis de riesgos
Planificacin del proyecto

Artefactos

Modelo del dominio


Modelo de procesos
Modelo funcional de alto nivel
Arquitectura bsica

Fase de construccin
Objetivo:

desarrollar el sistema a lo largo de


una serie de iteraciones
Actividades

Anlisis
Diseo
Codificacin
Pruebas (individuales, de integracin)

XP: eXtreme Programming

eXtreme Programming
Es

una metodologa gil

Diseada para entornos dinmicos


Pensada para equipos pequeos (hasta 10
programadores)
Orientada fuertemente hacia la codificacin
nfasis en la comunicacin informal, verbal

Valores que fomenta XP

Comunicacin

Simplicidad

Retroalimentacin

Coraje

Roles

Programador (Programmer)

Responsable de decisiones
tcnicas
Responsable de construir el
sistema
Sin distincin entre analistas,
diseadores o codificadores
En XP, los programadores
disean, programan y realizan las
pruebas

Jefe de Proyecto
(Manager)

Organiza y gua las


reuniones
Asegura condiciones
adecuadas para el proyecto

Cliente (Customer)

Es parte del equipo


Determina qu construir y
cundo
Establece las pruebas
funcionales

Roles
Encargado

de

Pruebas (Tester)

Ayuda al cliente con las


pruebas funcionales
Se asegura de que las
pruebas funcionales se
superan

Rastreador

(Tracker)

Metric Man
Observa sin molestar
Conserva datos
histricos

Entrenador

(Coach)

Responsable del proceso


Tiende a estar en un segundo
plano a medida que el equipo
madura

Captura de requisitos

Historias del Usuario (User-Stories)


Establecen los requisitos del cliente
Trozos de funcionalidad que aportan valor
Se les asignan tareas de programacin con un n de
horas de desarrollo
Las establece el cliente
Son la base para las pruebas funcionales

Planificacin

Planificacin por entregas (releases)


Se priorizan aquellas user-stories que el cliente
selecciona porque son ms importantes para el negocio
Entregas:

Son lo ms pequeas posibles


Se dividen en iteraciones (iteracin = 2 o 3 semanas)
Estn compuestas por historias

A cada programador se le asigna una tarea de la userstory

Programacin

La programacin de tareas se realiza por parejas

La pareja disea, prueba, implementa e integra el


cdigo de la tarea

Cdigo dirigido por las pruebas

Cdigo modular, intentando refactorizar siempre que


se pueda

Modelo de un proyecto

Prcticas
El juego de la
planificacin
Entregas
pequeas
Metfora
Diseo simple
Pruebas
Refactoring

Programacin en
parejas
Propiedad colectiva
Integracin contnua
Semana de 40 horas
Cliente in situ
Estndares de
programacin

El juego de la planificacin

Decisiones de negocio (cliente):

Alcance Cundo debe estar listo el producto para que sea


valioso en produccin?
Prioridad Prioriza la incorporacin de las user-stories
Composicin de entregas Qu se necesita para que el
negocio sea mejor antes de tener el sw?
Fechas de entrega Fechas cuando el software funcionando
causara una gran diferencia

El juego de la planificacin

Decisiones tcnicas (programadores y otros):

Estimaciones Cunto tiempo tardar en implementarse


una user-story?
Consecuencias Tener en cuenta las consecuencias tcnicas
de determinadas decisiones de negocio
Proceso Organizacin del proceso y el equipo
Planificacin detallada Dentro de una entrega, qu
user-stories se realizan primero. Intentar trasladar los
segmentos de desarrollo ms arriesgados al principio,
intentando respetar las prioridades del negocio

Entregas pequeas

Cada entrega es lo ms corta posible:

Contenga requisitos ms valiosos del sistema (bsicos)


Reducen el riesgo mayor retroalimentacin desde el
cliente, y ms frecuente

Minimizar el n de user-stories que componen una


entrega No realizar user-stories a medias

Diseo simple

Se disea la cosa ms simple que pueda funcionar


Uso de tarjetas CRC
Diseo de software correcto, es aquel que:

Supera todas las pruebas


No tiene lgica duplicada
Pone de manifiesto las intenciones importantes de los
programadores
Tiene el mnimo nmero de clases y mtodos

Pruebas

Las pruebas unitarias se escriben ANTES que el


cdigo
Pruebas automatizadas
Permiten el desarrollo de proyectos de forma rpida
y segura
Pruebas unitarias programadores
Pruebas funcionales cliente
Resultado Un programa cada vez ms seguro

NUnit

Framework para pruebas unitarias


Escritura de pruebas
Ejecucin de pruebas
Hacer un Assert de los resultados
Mostrar los fallos o xitos
Mantener un cdigo que pase los tests
http://nunit.org/

Ejemplo de un test en NUnit

Fallo en ejecucin de los tests

xito en ejecucin de los tests

Refactoring

Refactorizacin = Mejora del cdigo

Intentar eliminar complejidad

Cdigo duplicado Refactorizacin

Se plantea su aplicacin despus de implementar


cada user-story

C# Refactoring
Herramientas

integradas con Visual Studio


Simplifican la refactorizacin del cdigo
Mtricas para el anlisis del cdigo
http://www.xtreme-simplicity.net/

Integracin con Visual Studio

Mtricas de anlisis del cdigo

Refactoring con C# Refactory

Programacin en parejas

Toda el cdigo se escribe en parejas

Se produce cdigo de mayor calidad

Extiende el conocimiento

Se realiza el trabajo de 1 persona en casi la mitad


del tiempo y mejor (cuestionable)

Propiedad colectiva

Cualquiera puede modificar el cdigo en cualquier


momento Se evitan cuellos de botella en la
codificacin

Todos asume las responsabilidades sobre el conjunto


del sistema

Todos conocen algo sobre todas las partes y conocen


muy bien aqullas en las que trabajan

Integracin contnua

El cdigo se integra y se prueba despus de pocas


horas

Existe una ordenador dedicado para la integracin

Cada pareja integra su cdigo en dicho ordenador

Cliente in situ

Cliente real = Aquel que usar el sistema cuando est


en produccin

El cliente real debe estar con el equipo de trabajo:


Responder preguntas
Resolver disputas
Establecer prioridades
Discutir mejoras

Estndares de programacin

Son fundamentales cuando los programadores


cambian de pareja o hacen refactoring del cdigo de
otros

Se consigue un cdigo con el mismo estilo,


homogneo, legible

Patrones de diseo software

Definicin

Cada patrn describe un problema que ocurre una


y otra vez en nuestro ambiente, y luego describe el
ncleo de la solucin a ese problema, de tal
manera que puedes usar esa solucin un milln de
veces ms, sin hacer jams la misma cosa dos
veces (Christopher Alexander)
Son soluciones reutilizables a problemas
recurrentes que encontramos durante el desarrollo
de software

Ventajas que ofrece el uso de patrones

Disear cdigo orientado a objetos es costoso, y


disear cdigo orientado objetos reutilizable an lo
es ms
Los patrones permiten a los programadores
reconocer un problema e inmediatamente
determinar la solucin sin tener que pararse a
analizar el problema primero
Permiten trabajar a un nivel de abstraccin mayor
Aumentan la productividad, la reutilizacin del
cdigo y su consistencia

Ventajas que ofrece el uso de patrones

Capturan la experiencia en diseo. Los patrones se


crean a partir de ejemplos prcticos de diseo
Utilizar patrones de diseo es reutilizar la experiencia
adquirida diseando
Estudiar los patrones existentes es una manera de
aprender cmo los expertos disean sistemas
Los patrones definen un conjunto de trminos que
forman un vocabulario con el que poder hablar de
diseo de software

Componentes que constituyen un patrn

Nombre
Resumen o esencia de la solucin
Contexto al que se aplica
Razones para utlizar o no el patrn
Consideraciones de implementacin
Consecuencias e implicaciones de su uso
Ejemplo de uso (Test Case)
Patrones relacionados

Proceso de aplicacin de patrones


Problema
Problema
Contexto

Fuerza
Solucin
Solucin
Beneficios

Consecuencias

Patrones relacionados

Clasificacin de los patrones


Fundamentales
De

creacin
De particin
Estructurales
De comportamiento
De concurrencia

Fundamentales
Son

los patrones ms bsicos y


fundamentales:

Muchos del resto de patrones utiliza al menos


uno de ellos
Son tan bsicos que muchas veces no se
mencionan dndolos por supuestos

Fundamentales

Delegate
Interface
Abstract superclass
Interface + abstract class
Immutable
Proxy

De creacin

Provee de una gua de cmo crear objetos cuando


su creacin precisa de la toma de decisiones:

Las decisiones normalmente involucran la determinacin


de forma dinmica de qu clase instanciar o a qu objeto
delegar la responsabilidad
Estos patrones nos ayudan a estructurar y encapsular las
decisiones

De creacin

Factory
Builder
Prototype
Singleton
Object pool

De particin
Siguen

el paradigma de divide y vencers

Nos proporcionan la gua de cmo particionar las


clases e interfaces para llegar a un buen diseo

De particin
Filter
Composite
Read-only

interface

Estructurales
Describen

las formas ms comunes en las


que diferentes tipos de objetos pueden
organizarse para trabajar conjuntamente

Estructurales

Adapter
Iterator
Bridge
Faade
Flyweight
Dynamic linkage
Virtual proxy
Decorator
Cache management

De comportamiento
Patrones

utilizados para organizar, gestionar


y combinar comportamiento

De comportamiento

Chain of responsibility
Command
Little language
Mediator
Snapshot
Observer
State
Null object
Strategy
Template method
Visitor

De concurrencia
Patrones

para la coordinacin de
operaciones concurrentes y que permiten
solucionar dos problemas principalmente:

Recursos compartidos
Secuenciacin de operaciones

De concurrencia

Single threaded execution


Lock object
Guarded suspension
Balking
Scheduler
Read/Write lock
Producer-consumer
Two-phase termination
Double buffering
Asynchronous processing
Future

Arquitecturas dirigidas por modelos (MDA)

Introduccin

Nueva orientacin de las actividades del OMG


La base de todo son los modelos (ni su implementacin,
ni la plataforma)
Basado en el desarrollo de modelos independientes de
la plataforma (PIM)
Define un segundo nivel en el que diseamos para una
plataforma concreta pero de forma abstracta (PSM)
Definicin de transformaciones de PIM a PSM
Aunque la plataforma cambie, siempre mantenemos el
PIM

PIM, PSM y transformaciones en MDA

Modelo independiente
independiente de
de la
la plataforma
plataforma
Modelo
(PIM)
(PIM)
Reglas de transformacin

Modelo especfico
especfico
Modelo
(PSM)
(PSM)

Modelo especfico
especfico
Modelo
(PSM)
(PSM)

Ejemplos con MOF/XMI


UML Model (PIM)
Auto
Color : String
Door : Integer
Engine : Integer

XMI
Document (PSM)
<Auto>
<Color> Red </Color>
<Door> 4 </Door>
<Engine> 2 </Engine>
</Auto>

XMI
M

IDL,Auto
Java (PSM)
interface
{Class Auto
}; {public String color;
public int Door;
public int Engine;
}

XMI DTD, Schema (PSM)


<!Element Auto
(Color*,
Door*,
Engine*)>

Herramientas de apoyo al modelado

Herramientas de apoyo al modelado

Herramientas comerciales generales:

Herramientas libres o con versiones bsicas gratuitas:

Borland Together
IBM Rational Suite
Argo UML
Poseidon
Umbrello
Eclipse UML2
Eclipse Omondo

Integracin con los IDEs existentes

Ayuda a la generacin de cdigo

Herramientas con soporte de ingeniera inversa


Herramientas de generacin en un solo sentido
Herramientas de soporte MDA:

Together
AndroMDA

Intercambio de metadatos

Formato XMI
Importacin y exportacin a este formato por parte
de las herramientas
Base para las transformaciones en MDA

También podría gustarte