Está en la página 1de 11

PRCTICA CALIFICADA - 3

SESIN 11: LENGUAJE USE MBITO DE ESPECIFICACIONES


BASADAS EN UML
Alumno: Niebles Mamani, Luis
Grupo n: 1
EJERCICIOS
Ejemplo: Una empresa en la que hay: empleados, departamentos, proyectos.
Las especificaciones del modelo mostrado en la figura siguiente, estn contenidos en el
archivo de especificacin Demo.use. Se ejecuta en el programa USE, con interfaz
grfica.

El modelo construido en USE:

La ejecucin se muestra en:

. Crear objetos de la clase departamento:


Objeto Departamento:
Name := 'Computer Science'
Location := 'Bremen'
Budget := 10000

.Aadiendo dos objetos empleados y asignando valores a sus atributos

Para Jhon:
name := 'John'
salary := 4000

Para Frank
name := 'Frank'
salary := 4500

. Aadiendo las asociaciones:


(john,cs) into WorksIn
(frank,cs) into WorksIn

. Chequeo de invariantes de OCL

. Luego de las ejecuciones via Consola:

Evaluacion de las expresiones OCL

La expresin encuentra todos los proyectos en el departamento de Computer


Science en el cual un empleado llamado Jhon est involucrado.

Lee el paper gogolla_2003_uml.pdf adjunto. Crea todos los escenarios


alli planteados usando UML dentro del lenguaje USE. Saca conclusiones
y anotalas.

CUESTIONARIO
1. Cul es tu opinin sobre la importancia de lo aprendido en esta prctica?
El lenguaje USE permite modelar diagramas de clases, y encontrar errores en la
especificacin de cada objeto. Se puede delimitar el alcance y contexto de ellos, a
travs de invariantes, pre y pos condiciones.
2. Describe ms ejemplos donde servira aplicar dicho lenguaje.
Ms ejemplos en USE:
Factorial:

La clase Frutas:

La clase GRAFO

model Graph
class Node
operations
newTarget()
end
association Edge between
Node[*] role source

Node[*] role target


end
constraints
context Node::newTarget()
post oneNewTarget:
(target - target@pre)->size() = 1
post targetNodeIsNew:
(target - target@pre)->forAll(n | n.oclIsNew())

PERSONAS Y COMPAIAS
model Employee
-- classes
class Person
attributes
name : String
age : Integer
salary : Real
operations
raiseSalary(rate : Real) : Real
end
class Company
attributes
name : String
location : String
operations
hire(p : Person)
fire(p : Person)
end
-- associations
association WorksFor between
Person[*] role employee
Company[0..1] role employer
end
-- constraints
constraints
context Person::raiseSalary(rate : Real) : Real
post raiseSalaryPost:
salary = salary@pre * (1.0 + rate)
post resultPost:
result = salary

context Company::hire(p : Person)


pre hirePre1: p.isDefined()
pre hirePre2: employee->excludes(p)
post hirePost: employee->includes(p)
context Company::fire(p : Person)
pre firePre: employee->includes(p)
post firePost: employee->excludes(p)

También podría gustarte