You are on page 1of 13

FISW: Modelado Dinámico de

Análisis
Contratos

Temario
• ¿Qué es un Contrato?
• Para qué sirve un Contrato
• Materiales para un Contrato
• Secciones del Contrato
• Cómo escribir un contrato
• Running Example
• Para Reflexionar
• Ejercicio Running Example

Sesión 1 2

1
¿Qué es un Contrato?
• El Contrato es un documento que describe lo que
una operación se propone lograr
– Suele redactarse en un estilo declarativo, enfatizando lo que
sucederá y no cómo se conseguirá.
– Los contratos suelen expresarse a partir de los cambios de
estado de las precondiciones y de las poscondiciones.
– Puede elaborarse un contrato tanto para un método de una
clase, como para una operación más global del sistema, aunque
por ahora nos concentramos en su uso para las operaciones
globales del sistema.
• El contrato de operación del sistema describe
cambios del estado del sistema total cuando se llama
una de sus operaciones.

Sesión 1 3

¿Para qué sirve un Contrato?


• Permiten complementar la descripción Dinámica o
del Comportamiento del Sistema
– Describe en forma precisa qué información requerimos para
poder dejar el sistema en un determinado estado
– Detalla la información con que contaremos una vez efectuada la
operación que describe el contrato
• Idea!
– Si yo se cómo tengo que interactuar con una operación:
parámetros a entregar y respuesta a recibir, puedo considerarlo
como una caja negra…
– Puedo coordinar distintos equipos de trabajo, desarrollando
funcionalidades en paralelo…
– Si uno de los equipos requiere funcionalidades a implementar
por otro equipo, asume que existen y que puede acceder a ellas
de acuerdo a su contrato

Sesión 1 4

2
Materiales para un Contrato
• Para describir los Contratos de las Operaciones
Globales del Sistema, necesitamos:
– Un producto de trabajo que describa cuáles son esas
operaciones
– Un producto de trabajo que nos indique dónde podemos
registrar el estado resultante de las operaciones

• Ya tenemos estos dos productos de trabajo…

Sesión 1 5

Materiales para un Contrato: DSS


– Describe cuáles son
las operaciones
globales que provee
el sistema
– Indica parámetros de
invocación
– Indica salida
esperada
– Indica Actor que
invoca la operación

Sesión 1 6

3
Materiales para un Contrato: Modelo Dominio
– Describe entidades
Certificado emite RNP
del Dominio
+certificado 0..1
Representante Electronico

0..1
1 +rnp
tiene
*+unidades
– Permite registrar
Registro Comercio
+repsElectronicos
tiene
+sociedad
1
Unidad RNP
cambios en el estado
registra
respalda Modificador
Sociedad
+capitalEnterado: Integer
+capitalPorEnterar: Integer
pertenece
del sistema, a través
Escritura

+modificacion
1 +modificador
1
de:
realiza +sociedad 1 +sociedad
valida
1 0..*
+modificaciones tiene tiene
• Creación/Eliminación
de Instancias de las
Modificacion

+socios * *
+modificacion +representantes
RegistroBitacora
1
genera
Socio
+participacionCapital: Integer
Representante Legal
Entidades
+participacionUtilidad: Integer

0..1 +giro • Creación/Eliminación


se registra en Giro
de Asociaciones entre
Bitacora las entidades
• Asignación de valores
a sus atributos

Sesión 1 7

Secciones de un Contrato
• Nombre
– Nombre de la operación
• Parámetros
– Parámetros recibidos por la operación, indicando tipo de dato
• Responsabilidades
– Descripción informal de las responsabilidades que debe cumplir la
operación
• Tipo
– Describe quién provee la operación
• Estamos viendo operaciones globales del sistema, por lo tanto el tipo
es “Sistema”
• Referencias Cruzadas
– Referencias a Requerimientos Funcionales o Casos de Uso
relacionados con la operación

Sesión 1 8

4
Secciones de un Contrato
• Notas
– Detalles de implementación de la operación, por ejemplo, un
determinado algoritmo
• Excepciones
– Comportamiento de la operación ante casos excepcionales
• Salida
– Retorno esperado de la operación, indicando tipo de dato si es
necesario
• Precondiciones
– Descripción informal de las responsabilidades que debe cumplir la
operación
• Poscondiciones
– Estado del Sistema después de la operación

Sesión 1 9

Cómo escribir un Contrato


• Identifique las operaciones del sistema a partir de los
diagramas de secuencia.
• Elabore un contrato en cada operación del sistema.
– …en serio? [reflexiones al final de la sesión]
• Comience redactando la sección “Responsabilidades”;
después describa informalmente el propósito de la operación.
• Complete la sección “Post-condiciones”, describiendo en forma
declarativa los cambios de estado de los objetos en el modelo
conceptual.
• Para describir las post-condiciones use las siguientes
categorías:
• Creación y eliminación de instancias.
• Modificación de atributos.
• Asociaciones formadas y canceladas.

Sesión 1 10

5
Cómo escribir un Contrato
• Después de la sección de Responsabilidades, la parte más
importante del contrato son las post-condiciones, que estipulan
cómo cambió el sistema tras la operación.
• Las post-condiciones se expresan dentro del modelo de
dominio
– ¿Qué instancias es posible crear? La repuesta es: las provenientes
del modelo de dominio
– ¿Qué asociaciones es posible formar? La repuesta es: las que
están en el modelo de dominio

Sesión 1 11

Cómo escribir un Contrato


• Cuando se formula contratos, en general se agregará al modelo
conceptual nuevos conceptos, atributos y asociaciones.
– Esto nos permite refinar el modelo conforme a los nuevos
descubrimientos,
• Las poscondiciones deben expresar el estado del sistema, no
acciones a realizar.
– Deben ser expresadas en tiempo pasado para enfatizar que se trata
de declaraciones sobre un cambio pretérito de estado.
• P.ej.: Se creó una instancia “RepresentanteLegal” en vez de Crear una
instancia “RepresentanteLegal” .

Sesión 1 12

6
Running Example: Desde Diagrama de Casos de Uso…

Mantener Socios Consultar Estado Socios

<<extend>>

<<extend>> Modificar Capital

<<extend>>
Mantener Sociedad Mantener Representantes Legales

Funcionario <<extend>>

<<extend>>
Emitir Giro

Confirmar Cambios
<<extend>>

Pagar Giro
<<extend>>

<<include>>

Generar Certificado Validar Documentación Legal

Contribuyente

Consultar Modificaciones

Sociedad

Representante Electrónico

Sesión 1 13

Running Example:…a CU Expandido - encabezado

Caso de uso: Mantener Representantes Legales


Actores: Contribuyente (iniciador)
Propósito: Permitir Agregar y Eliminar Representantes Legales de
la Sociedad
Resumen: El Contribuyente puede consultar los Representantes Legales de la
Sociedad, pudiendo agregar uno nuevo o eliminar uno de los
existente.
Tipo: Primario, Esencial

Descripción: El Contribuyente accede a la opción de Mantener Representantes


Legales, donde ve los Representantes actuales de la Sociedad.
Puede agregar un nuevo Representante o Eliminar uno existente.
Referencias Mantener Sociedad
cruzadas:

Sesión 1 14

7
Running Example:…a CU Expandido - Curso Normal
Curso Normal de los eventos
Acción del actor Respuesta del Sistema
1. El contribuyente solicita Mantener
Representantes Legales
2. El sistema muestra los Representantes
Legales de la Sociedad del Contribuyente
3. El contribuyente escoge una opción:
•Si desea Agregar un Representante Legal,
ver subsección “Agregar Representante
Legal”
•Si desea Eliminar un Representante Legal,
ver subsección “Eliminar Representante
Legal”
4. El contribuyente confirma los cambios de
Representantes
5. El sistema almacena cambios de
Representantes

Sesión 1 15

Running Example:…a CU Expandido: subsección


Subsección Agregar Representante Legal - Curso Normal de los eventos
Acción del actor Respuesta del Sistema
1. El contribuyente solicita Agregar un
Representante Legales
2. El contribuyente ingresa el Rut del nuevo
representante
3. El sistema obtiene nombres y apellidos
desde sistema de Personas del RNP

4. El contribuyente ingresa la Fecha de Inicio


de Representación
5. El contribuyente confirma los cambios

6. El sistema almacena el nuevo


representante legal

Sesión 1 16

8
Running Example: Antes del DSS
• Al revisar el detalle del ingreso de un Representante
Legal, vemos una interacción con el Sistema de
Personas del RNP
– Necesitamos modificar nuestro Diagrama de Casos de Uso

Mantener Sociedad

Contribuyente <<extend>>

Mantener Representantes Legales


<<sistema>>
Personas

– Necesitamos definir exactamente cómo interactuaremos con


el Sistema de Personas
• ¿Y Dónde?

Sesión 1 17

Running Example: DSS de Agregar Capital

ASR : System

: Contribuyente : Personas

1 : mantenerRepresentantesLegales()

2 : obtenerRepresentantes()

3 : agregarRepresentante()

4 : ingresarRutRepresentante()

5 : obtenerPersona()

6 : ingresarFechaInicioRepresentacion()

7 : confirmarCambios()

8 : guardarRepresentante()

Sesión 1 18

9
Running Example: Antes de los contratos

• ¿Vale la pena escribir los contratos para todas las


operaciones?
– Si un proyecto mediano tiene 50 Casos de Uso…
– Si un caso de uso tiene 5 pasos en promedio…
– Tenemos 50 DSS, con 5 operaciones cada uno…
– …son 250 contratos…sólo para los Cursos Normales!

Sesión 1 19

Running Example: Antes de los contratos

• Sólo algunas de las operaciones del DSS son


interesantes de ser descritas por Contratos
– Que permiten definir interacciones con otros sistemas
– Aquellas que nos permitan aclarar dudas acerca del ciclo de
vida de las entidades del dominio
• Revisemos los contratospara:
– agregarRepresentanteLegal
– obtenerPersona

Sesión 1 20

10
Running Example: Contratos
Contrato agregarRepresentanteLegal
Nombre agregarRepresentanteLegal

Parámetros Sociedad
Responsabilidades Crear un nuevo Representante Legal para la Sociedad indicada
por parámetro
Tipo Sistema
Referencias Cruzadas CU Mantener Representantes
Notas Nuevo Representante se crea sólo en memoria

Excepciones No aplica
Salidas Representante Legal creado
Precondiciones La Sociedad indicada como parámetro existe en el sistema
Poscondiciones Se creó una nueva instancia de RepresentanteLegal
Se asoció el nuevo RepresentanteLegal a la Sociedad de
parámetro

Sesión 1 21

Running Example: Contratos


Contrato obtenerPersona
Nombre obtenerPersona

Parámetros rut
Responsabilidades Obtener una instancia de clase Persona desde el Sistema de
Personas de RNP, a través de su RUT
Tipo Sistema
Referencias Cruzadas CU Mantener Representantes
Notas Rut sin dígito verificador

Excepciones Si no se encuentra persona, retornar valor nulo


Salidas Instancia de Persona
Precondiciones El rut de parámetro ha sido validado previamente
Poscondiciones Se creó una nueva instancia de Persona

Sesión 1 22

11
Para Reflexionar

• En agregarRepresentanteLegal, la Nota señala que la nueva instancia


se crea en memoria
– Esta es una decisión de diseño, sólo si tenemos un requerimiento explícito
que lo señale debemos incluirlo
• En obtenerPersona, el retorno esperado desde el sistema de Personas,
es una instancia de clase Persona
– ¿En qué sistema existe esta clase? ¿En ASR o en Personas?
– Las organizaciones pueden definir Modelos de Entidades Corporativos,
donde las entidades son transversales a los sistemas
– Para poder ser utilizados por todos los sistemas, estos deben estar hechos
en las mismas tecnologías…
– O debe existir una infraestructura (arquitectura) que permita su integración
• Si no existe, debemos integrarnos a nivel de datos: la respuesta esperada ya no
será una Persona, sino dos strings: Nombre y Apellido
• Viendo los sistemas en su conjunto, podemos identificarlos como
unidades funcionales que resuelven problemas determinados, y que
colaboran entre sí mediante funcionalidades específicas
– Estas funcionalidades son Servicios

Sesión 1 23

Running Example: Ejercicios

• Modificar Subsección, DSS y crear Contrato para


Agregar Representante Legal
– Se debe ingresar información de la escritura que respalda la
nueva representación

• Subsección y Contratos para:


– Eliminar Representante Legal
• Debe ingresar fecha de fin de representación

Sesión 1 24

12
Referencias
• [LARMAN]
– Larman, Craig.
– Applying UML and Patterns. An Introduction to
Object Oriented Analysis and Design.
– Prentice Hall, 1998.

Sesión 1 25

13

You might also like