Documentos de Académico
Documentos de Profesional
Documentos de Cultura
¿QUÉ ES UML?
Es importante resaltar que UML es un "lenguaje de modelado" para especificar o para describir
métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema
y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el
modelo.
Se puede aplicar en el desarrollo de software entregando gran variedad de formas para dar
soporte a una metodología de desarrollo de software (tal como el Proceso Unificado Racional o
RUP), pero no especifica en sí mismo qué metodología o proceso usar.
UML no puede compararse con la programación estructurada, pues UML significa Lenguaje
Unificado de Modelado, no es programación, solo se diagrama la realidad de una utilización en
un requerimiento. Mientras que, programación estructurada, es una forma de programar como
lo es la orientación a objetos, sin embargo, la programación orientada a objetos viene siendo un
complemento perfecto de UML, pero no por eso se toma UML sólo para lenguajes orientados a
objetos.
UML cuenta con varios tipos de diagramas, los cuales muestran diferentes aspectos de las
entidades representadas.
1
Se encuentran la siguiente desventaja:
Ventajas
La mayoría de las veces el modelado de la vista de despliegue implica modelar la topología del
hardware sobre el que se ejecuta el sistema
Desventajas
Tales sistemas contienen a menudo varias versiones de componentes software, alguno de los
cuales pueden incluso migrar de un nodo a otro. El diseño de tales sistemas requiere tomar
decisiones que permitan un cambio continuo de la topología del sistema.
A pesar de su status de estándar ampliamente reconocido y utilizado, UML siempre ha sido muy
criticado por su carencia de una semántica precisa, lo que ha dado lugar a que la interpretación
de un modelo UML no pueda ser objetiva. Otro problema de UML es que no se presta con
facilidad al diseño de sistemas distribuidos. En tales sistemas cobran importancia factores como
transmisión, serialización, persistencia, etc. UML no cuenta con maneras de describir tales
factores. No se puede, por ejemplo, usar UML para señalar que un objeto es persistente o
remoto, o que existe en un servidor que corre continuamente y que es compartido entre varias
instancias de ejecución del sistema analizado. Sin embargo, UML sí acepta la creación de
nuestros propios componentes para este tipo de modelado.
El dueño de un hotel le pide a usted desarrollar un programa para consultar sobre las piezas
disponibles y reservar piezas de su hotel.
El hotel posee tres tipos de piezas: simple, doble y matrimonial, y dos tipos de clientes:
habituales y esporádicos. Una reservación almacena datos del cliente, de la pieza reservada, la
fecha de comienzo y el número de días que será ocupada la pieza.
2
El administrador puede usar el programa para:
El hotel posee información sobre cuales clientes son habituales. Esta estructura puede
manejarla con un diccionario, cuya clave sea el número de RUT y como significado tenga los
datos personales del cliente.
Actor (UML)
En el Lenguaje Unificado de Modelado (UML), un actor "especifica un rol jugado por un usuario
o cualquier otro sistema que interactúa con el sujeto”.
Un actor modela un tipo de rol jugado por una entidad que interactúa con el sujeto (esto es,
intercambiando signos y datos), pero que es externo a dicho sujeto.1
Los actores pueden representar roles jugados por usuarios humanos, hardware externo, u otros
sujetos. Un actor no necesariamente representa una entidad física específica, sino simplemente
una faceta particular (es decir, un "rol") de alguna actividad que es relevante a la especificación
de sus casos de uso asociados. Así, una única instancia física puede jugar el rol de muchos
actores diferentes y, asimismo, un actor dado puede ser interpretado por múltiples instancias
diferentes.1
Ilustración de un actor, junto con los demás elementos de un diagrama de casos de uso
3
Ejemplo sencillo de diagrama de casos de uso, donde se muestran los actores críticos de
comidas y chef
Implementación (Java)
1.
public class Test
{
public static void main( String arg[] )
{
try
{
State state = new ConcreteStateA();
Context context = new Context();
context.setState( state );
context.request();
}
catch( Exception e )
{
e.printStackTrace();
}
}
}
2.
public class Context
{
private State state;
4
public void setState( State state )
{
this.state = state;
}
3.
public interface State
{
void handle();
}
4.
public class ConcreteStateA implements State
{
public void handle()
{
}
}
5.
/**
* State patter:We have a specific class(Context) that manages the state changes of a external
class by creating different instance depending
* on the state you want to adopt.
* Every class that you create implements an interface(State) that define the method name that
they have to implement
* @author Pperez
*
*/
5
public class StatePattern {
public void main(String args[]){
try{
State state;
Context context = new Context();
SocketChannel socketChannel = null;
//-----------------------------\\
// OPEN/LISTENING SOCKET \\
//-----------------------------\\
//First State:
state = new ConnectSocketState(socketChannel);
context.setState( state );
socketChannel = context.request();
//-----------------------------\\
// CLOSE SOCKET \\
//-----------------------------\\
//Second State:
state = new CloseSocketState(socketChannel);
context.setState( state );
socketChannel = context.request();
}catch( Exception e ) {
e.printStackTrace();
}
}
6
public ConnectSocketState(SocketChannel socketChannel){
this.socketChannel=socketChannel;
}
public SocketChannel processState()
{
try {
int port = 21;
InetAddress host = InetAddress.getByName("192.168.1.1");
SocketAddress adress = new InetSocketAddress(host, port);
socketChannel = SocketChannel.open(adress);
socketChannel.configureBlocking(true);
} catch (IOException e) {
e.printStackTrace();
}
return socketChannel;
}
}