Está en la página 1de 20

Patrones de Anlisis

PROCESO DE DESARROLLO RELACIN ENTRE MODELOS ........... 1


MODELO DE ANLISIS .......................................................................4
MODELO DE DISEO ........................................................................4
MODELO DE ANLISIS - GUA DE SELECCIN DE OBJETOS .......... 5
PATRONES DE COLABORACIN ENTRE OBJETOS ..........................................5
REGLAS DE NEGOCIO ..................................................................... 10
Tipos de reglas ....................................................................... 10
Asignacin ............................................................................. 10
Patrones de asignacin de Reglas de Negocio.............................. 11
TIPOS DE SERVICIOS ...................................................................... 14
Asignacin ............................................................................. 14
CRITERIOS DE BUEN ANLISIS.................................................. 17

capacitacin y gua para el desarrollo de software

Proceso de desarrollo Relacin entre modelos

Objetivo: convertir en un sistema los requerimientos

capacitacin y gua para el desarrollo de software

Sabemos que el cdigo surgi de un diseo previo. Pero, Cmo surgi el


diseo?
Seguimos la secuencia de pasos que nos lleva a este Diseo.

Primer 1: relevar requerimientos a partir de las necesidades de los usuarios en


relacin con su trabajo utilizando el sistema en desarrollo.

capacitacin y gua para el desarrollo de software

Paso 2: especificar los casos de uso para entender su comportamiento dinmico


(diagramas de colaboracin y / o secuencia).
Tenemos Comportamiento, hace falta una estructura.

Paso 3: pensar una estructura simple a partir de conceptos extrados del dominio
del problema (Modelo de Dominio).

capacitacin y gua para el desarrollo de software

Paso 4: refinar el Modelo de Dominio a partir de la informacin de los Casos de


Uso y Patrones de Anlisis en un Modelo de Anlisis.

MODELO DE ANLISIS

Objetivo: entender en detalle el negocio y sus reglas


Mecanismo utilizado: Patrones de Anlisis

MODELO DE DISEO

Objetivo: implementar una solucin al problema planteado en el anlisis ms las


restricciones impuestas por los requerimientos no funcionales.
Mecanismo utilizado: Patrones de Diseo

capacitacin y gua para el desarrollo de software

Modelo de Anlisis - Gua de seleccin de objetos


Conceptos a buscar

Instancias

Gente

Actor
Rol

Lugares

Lugar
Gran Lugar

Cosas

tem
tem Especfico
Ensamble
Parte
Contenedor
Contenido
Grupo
Miembro

Eventos

Transacciones
Transacciones Compuestas
Transacciones Cronolgicas
Line tem

PATRONES DE COLABORACIN ENTRE OBJETOS

capacitacin y gua para el desarrollo de software


cd Class Model
Actor
1

Rol

0..*

Ejemplo
Empleado
0..1

1
Persona

Cliente
0..1

0..1

Prov eedor

cd Class Model
Lugar

GranLugar

0..1

1..*

Ejemplo
Puerto

1..*

AreaCarga

1..*

AreaDescarga

cd Class Model
Item

ItemEspecifico
1

0..*

0..*

Ejemplo
Pelicula

CopiaVideo

capacitacin y gua para el desarrollo de software

cd Class Model
Ensamble

Parte
0..1

1..*

Ejemplo
Computadora

Componente

cd Class Model
Contenedor

Contenido
0..1

0..*

Ejemplo
Pallet

Caj a

cd Class Model
Grupo

Miembro
0..*

0..*

Ejemplo
CategoriaProducto

Producto

cd Class Model
Rol

Transaccion
1

0..*

Ejemplo

Cliente

OrdenCompra
1

0..*

Vendedor
0..*

0..1

capacitacin y gua para el desarrollo de software


cd Class Model
Lugar

Transaccion
1

0..*

Ejemplo
Puerto

AreaDescarga
1

1..*
1
0..*
Deliv ery

cd Class Model
ItemEspecifico

Transaccion
1

0..*

Ejemplo

Inspeccion

Vehiculo

cd Class Model
ItemEspecifico

LineItem
1

0..*

Ejemplo
1

0..*
Productos
1

ItemsComprados

OrdenCompra
1..*

capacitacin y gua para el desarrollo de software


cd Class Model
TransaccionCompuesta

LineItem
1 1..*

Ejemplo
OrdenCompra

ItemsComprados

0..*

1..*
1
Productos

cd Class Model
Transaccion

TransaccionCronologica
1

0..*

Ejemplo

OrdenCompra
1

0..*

Env io
1

1
1..*

1..*

ItemsComprados

Env ioLineItem
0..*

0..*
1
Productos

capacitacin y gua para el desarrollo de software

REGLAS DE NEGOCIO
Son las restricciones que gobiernan las acciones dentro de un dominio
de negocio.

En el modelo se traducen en reglas de colaboracin.

La forma de incorporarlas al modelo consiste en restricciones a ser probadas


en la colaboracin entre los distintos objetos del modelo.

En el modelo se traduce por ejemplo en si dos objetos pueden crear una


nueva relacin o remover una existente.

Donde ubicarlas?

Si no se ubican en el modelo, el mismo es incompleto. La dinmica de los


objetos ser externa al mismo.

Cmo expresarlas? Qu colaborador (objeto) prueba cada regla en funcin


de la informacin que conoce o puede consultar?

Tipos de reglas

Tipo: un medicamento puede ser cargado solo en un container refrigerado

Multiplicidad: un pallet refrigerado puede contener hasta 10 cajas

Propiedad (validacin, comparacin): un pago debe registrar un nmero


vlido de tarjeta de crdito, la temperatura de un container refrigerado debe
ser menor a 0 grados centgrados

Estado: una orden no debe ser entregada si antes fue cancelada

Conflicto: un vuelo no puede ser programado en una puerta en un mismo


horario que otro vuelo, un producto no puede ser sumado a una orden de
compra de un menor de edad si la venta est prohibida a menores.

Reglas de colaboracin: chequeo de reglas de negocio entre objetos


participantes de las relaciones. El cambio de estado, el establecimiento de una
relacin o la ruptura de la misma requiere el chequeo de una regla de negocio. Este
chequeo lo vemos como una colaboracin entre objetos.

Asignacin
Asignacin de Reglas:
1. cuando se modela gente, lugares y cosas, SIEMPRE asignar las reglas a los
objetos ms especficos, locales o detallados.
2. cuando la gente, lugares y cosas interactan con un evento, son los
propietarios de sus reglas.
3. cuando existen transacciones en secuencia, la transaccin precedente es la
que chequea las reglas.

10

capacitacin y gua para el desarrollo de software


Regla

Patrn de colaboracin
A-R

GL-L

I-IE

E-P

C-C

G-M

T-R

T-L

T-IE

TC-LI

LI-IE

TC-T

LI, IE

TC, T

Tipo

IE

IE

LI

Multiplicidad

GL, L

I, IE

E, P

C, C

G, M

T, R

T, L

T, IE

TC, LI

Propiedad

GL, L

IE

E, P

C, C

G, M

IE

Estado

GL, L

I, IE

E, P

C, C

G, M

IE

Conflicto

IE

G, M

IE

4. En el patrn A-R las reglas dependen del contexto, por esta razn estn
asignadas al rol, ya que este es quien conoce el contexto.
5. Los patrones de agregacin (GL-L, E-P, C-C, G-M) tienen un comportamiento
similar en cuanto a las reglas que deben probar. Solo en el G-M el G debe
probar la regla que define el conflicto con otros grupos.
6. Los patrones en los que uno de los objetos es un evento o transaccin (T-R,
T-L, T-IE) la responsabilidad de la prueba de las reglas es asignada a los
objetos que participan de la transaccin. La transaccin debe cumplir con que
solo conoce al colaborador y no puede romper con l. Los objetos que
participan pueden ser interrogados acerca de si aceptan participar de la
transaccin, en ese momento prueban las reglas. (ver servicios que
conducen). En el caso de las transacciones cronolgicas se da el mismo
patrn, donde la precedente adopta el rol de la prueba de reglas.
7. En el caso de transacciones secuenciales o cronolgicas (TC-T), la precedente
prueba las reglas. Solo la multiplicidad es chequeada por la segunda
transaccin.

Patrones de asignacin de Reglas de Negocio


Reglas asociadas a Propiedades de las clases

Tipos de Reglas
Tipo, Propiedades, Fechas, Horas, Descripciones, Estados
Patrn
setXXX(valor) solo estos mtodos aparecen en las interfaces
testXXX(valor)
doSetXXX(valor)
Ej. SetTitle(String) en Documento
Ej. makeChair() en TeamMember (no se usa setChair porque se
reservan los sets para mtodos con valores).
Validacin

11

capacitacin y gua para el desarrollo de software

La validacin la realiza la clase propietaria de la propiedad


Variaciones
Validaciones cruzadas
Una propiedad de una clase depende de otra clase (Ej. TeamMember
Team)
Ej. testSetRoleChair() en TeamMember
Ej. Implementacin
cd DD_DiagramaClasesRN_3
Adm inStock

Im plem e nta la re gla R N_3


Producto
-

C odigopProducto: String
Descripcion: String

inStock (int) : boole a n

boole an inStock (int ca ntidad)


{
if(testInStock (ca ntida d))

doInStock (ca ntida d);


e lse
return false ;

RN_3

Reglas asociadas a Colaboraciones

Tipos de Reglas
Reglas que son validadas con la participacin de ms de una clase, los
que forman el patrn de anlisis.
Patrn
addXXX(referencia)
testAddXXX(referencia)
doAddXXX(referencia)
removeXXX(referencia)
testRemoveXXX(referencia)
doRemoveXXX(referencia)
Validacin
Asignar validacin y director a las colaboraciones
Las validaciones se delegan:

12

capacitacin y gua para el desarrollo de software

Genrico -> Especfico


Todo -> Parte
Especfico -> Transaccin
Las validaciones las conducen:
Genrico Especfico
Todo Parte
Especfico Transaccin
9
9

Los mtodos addXX y removeXX solo aparecen en las interfaces de


las clases que conducen las validaciones
Los mtodos doAddXX, doRemoveXXX y los testAddXX,
testRemoveXXX aparecen en todas

Ej. TeamMember Nominacion Documento


Reglas asociadas a Conflictos

Tipos de Reglas
Conflicto
Patrn
Validacin
El director las valida desde sus propias validaciones
Ej. Nominacion TestAddDocumento() > Documento
testAddNominationConflic()
Ej. Implementacin de Reglas compuestas

13

capacitacin y gua para el desarrollo de software


cd DD_DiagramaClases

Item

ITransaccion

DatosTransaccion

Items

realize

OrdenCompra
-

costoEnvio: double
estado: Estado
monto: double

+
+
+

addItem(int, String) : boolean


conItem() : boolean
getCosto() : double
getEstado() : Estado
setCostoEnvio(double) : void

RN_1

RN_2

RN_4

RN_5

RN_6
ReglaNegocio
1..* +

applyRuleObject() : Result

Test
+

Accion

test(Property) : boolean

ejecutarAccion() : void

1
ReglasNegocio

Property

TIPOS DE SERVICIOS
1. conduccin del negocio
2. interrogacin (informacin del estado actual)
3. anlisis de transacciones (informacin histrica)

Asignacin
Asignacin de servicios:

14

capacitacin y gua para el desarrollo de software


1. Los objetos ms especficos conducen la realizacin del negocio a partir de
sus servicios.
2. cuando para la realizacin de una accin es necesario la participacin de ms
de un objeto, los eventos conducen a travs de sus servicios.

15

capacitacin y gua para el desarrollo de software

Esquema de una clase


Tipo de
Servicios

Comentarios

Servicios de
Acciones: creacin de
Conduccin del objetos, asignacin de
Negocio
valores. Cambian
estados, establecen
relaciones y las rompen.

Tipo de mtodos comprendidos


void makeChair(), ver TeamMember
void grantNominatePrivilege(), ver
TeamMember

void nominate(ITeamMember), ver


Documento

Servicios de
Respuestas a preguntas: boolean hasNominatePrivilege(), ver
TeamMemberProfile
Determinacin informacin actual, no
de Valores
cambia estados,
boolean hasValidEmail(), ver PersonProfile
devuelve valores o los
calcula en colaboracin. boolean isPublished(), ver Documento
Servicios de
Anlisis de
Transacciones

Respuestas a preguntas: INomination getApprovedNomination(),


ver Documento
informacin histrica
INomination getLatestNomination(), ver
Documento

Acceso y
asignacin a
Propiedades

Propiedades: acceso a
propiedades para
obtener y asignar

String getTitle(), ver Documento

Suma y
remocin de
Colaboradores

Colaboradores:
establecen relaciones y
las rompen.

void addPerson(Iperson), ver TeamMember

Acceso a
Colaboradores

Colaboradores: acceso a IPerson getPerson(),


TeamMemberProfile
colaboradores

Reglas de
Colaboracin

Reglas de Negocio:
validacin de las reglas
asignadas

void setTitle(String), ver Documento

void removePerson(Iperson), ver

TeamMember

ver

void testAddPerson(IPerson aPerson),


ver TeamMember

Void
testAddNominationConflict(INomination
aNomination, ITeamMember
aTeamMember), ver Documento

16

capacitacin y gua para el desarrollo de software

Transicin Anlisis - Diseo

Definir entidades

Definir value objects

Delimitar agregaciones

Encapsular en paquetes / mdulos

Asle el Negocio de la aplicacin

Particionar el negocio en capas

Delimitar contextos

Segregar y abstraer la esencia (core)

Delimitar sub. dominios

Definir servicios
cd Domain Model

Negocio

Aplicacin

Decisin

Mecanismo analticos
(cambios muy lentos)

Polticas
Criterios de Administracin
del Negocio (cambios lentos)

Operaciones
Actividades que reflejan la realidad
del negocio (cambios rpidos)

Servicios
Procesos soporte
(cambios moderados)

Infraestructura

Servicio: generar
evento en base a
decisin de negocio

Servicio: enviar un
mail ante un dado
evento

Servicio:
procesamiento de
informacin

17

capacitacin y gua para el desarrollo de software

Referencias
BIBLIOGRAFA
Libros
Streamlined Object Modeling Patterns, rules and
implementations, Jill Nicola et. al., PHPTR, 2002.
Analysis Patterns, Martin Fowler, 1997.
Domain Driven Design, Eric Evans, Addison-Wesley, 2004.
Object-Oriented Analysis and Design with Applications (2nd
Edition), Grady Booch, 1994.

18

También podría gustarte