Foros - Stratos

Stratos => General => Mensaje iniciado por: Diferencial en 17 de Enero de 2007, 02:14:25 PM

Título: Problemas con los tiempos.
Publicado por: Diferencial en 17 de Enero de 2007, 02:14:25 PM
Como sabeis vosotros de antemano cuanto vais a tardar en realizar una tarea. Es decir como ejemplo gestión de clientes alta,baja,modificación etc...
Título: Problemas con los tiempos.
Publicado por: Buffon en 17 de Enero de 2007, 02:53:19 PM
Uf primero hazte el diseño conceptual, luego el modelo de sequencia con sus contratos (para el ejemplo que has puesto unos 20 min) y más o menos calculas.

[Cliente]
dni
nombre

[Empresa]
cif
nombre

                                     pertenece
Relación [b]Cliente[/b] * --------------------- 0..1 [b]Empresa[/b]
[i]Un cliente puede pertenecer a una sola empresa pero una Empresa puede tener varios clientes.[/i]


Caso de uso
(http://www.microsiervos.com/images/icocente.gif)
Gerente -------------------------- [ Alta Cliente ]

Modelo de sequencia del caso de uso Alta cliente.

(http://www.microsiervos.com/images/icocente.gif)

Gerente ----------------------------------------Sistema
   ||                                                   ||
   ||       crearCliente(Dni)                    ||
   || ------------------------------------------------>||
   ||                :Cliente                        ||
   ||                                                   ||
   ||       insertarCliente(Cliente,Cif)      ||
   || ------------------------------------------------>||


Contrato crearCliente(Dni:String):Cliente
Semantica damos de alta un cliente
Precondiciones: No existe un cliente con dni = Dni
Postcondiciones: hemos dado de alta un cliente

traducido

Contrato crearCliente(Dni:String):Cliente
Semantica damos de alta un cliente
Precondiciones: Cliente.allInstances->select(c|c.dni=Dni)->isEmpty()
Postcondiciones: cl.oclIsNew() and cl.oclIsTypeOf(Cliente) and cl.Dni = dni.
Salida result = cl

----

Contrato insertarCliente(c:Cliente, Cif:String)
Semantica damos de alta un cliente en la empresa
Precondiciones: Existe una empresa con cif = Cif
Postcondiciones: hemos dado de alta un cliente en la empresa

traducido

Contrato insertarCliente(c:Cliente,Cif:String)
Precondiciones: Empresa.allInstances->exists(e|e.cif=Cif)
Postcondiciones: p.oclIsNew() and p.oclIsTypeOf(Pertenece) and p.Cliente = c and p.Empresa.cif = Cif.


Lo interesante de hacerlo con el traducido es aprender a ver las diferencias entre Precondicion y Postcondición en un lenguaje formal y saber que pasos has de hacer para pasar de uno a otro, entonces calculas el tiempo que necesitas.

Edito
Al final lo que hace mucha gente es decir ... mmm Alta cliente .. unas 2 horas xD
Título: Problemas con los tiempos.
Publicado por: Diferencial en 17 de Enero de 2007, 04:08:01 PM
:D si es verdad, pero ultimamente me estan machacando mucho con el planning y claro yo no se como calcular algo asi porque puede que tarde un rato como puede que tarde 10 horas pero vamos que tu exposición usando casos etc esta bastante bien.