Infome Programacion
Infome Programacion
TECNOLOGIA.
U.P.T.P “LUIS MARIANO RIVERA”
EXTENSION VALDEZ-GUIRIA – ESTADO – SUCRE.
P.N.F.I.: PROYECTO FORMATIVO
Fundamentos de la Programación
Orientada a Objetos
(POO)
PARTICIPANTE
PROFESOR: ING TAYLHADAT FRANKLIN
C.I:20564340, López Francisco
Características de la POO
Abstracción: Permite representar objetos del mundo real en forma de clases que tienen
sus propiedades y comportamientos.
Encapsulación: Permite ocultar los detalles internos de una clase y solo exponer los
métodos necesarios para interactuar con ella.
Herencia: Permite crear nuevas clases a partir de clases ya existentes, heredando sus
propiedades y comportamientos.
En la programación orientad a objetos: Tenemos una clase padre, y las clases hijas heredan
funcionalidades y atributos, pero no son idénticas. Solamente aprovechan eso que ya existen y
luego se le añaden nuevas cosas.
Por ejemplo: Si tenemos una clase para crear usuarios genéricos, pero luego necesitamos un
usuario diferente, de staff, solamente para el equipo de EDteam y que tenga diferentes
funcionalidades y atributos que un usuario normal ¿Qué podemos hacer? crear una nueva
clase que herede de la clase padre, y esa sería el staff.
Si luego necesitamos otro usuario que sea profesor, entonces heredamos de la clase usuario y
creamos la clase profesor, y de allí, creamos todos los usuarios de profesores del equipo.
Ahora bien, si queremos meter invitados a la página, personas que sin pagar una suscripción
puedan tener acceso a los sorteos o campañas, podemos crear un rol de invitados. Y así
funciona la herencia en la POO.
Los diagramas de clases contienen clases y sus interacciones. cada clase se muestra en un
rectángulo que, de arriba a abajo, contiene el nombre de la clase, sus atributos y sus métodos.
solo el nombre de la clase es obligatorio. los diagramas de clases son uno de los tipos de
diagramas más útiles, ya que trazan claramente la estructura de un sistema concreto al
modelar sus clases, atributos, operaciones y relaciones entre objetos.
Existen 3 maneras de comprobar los tipos: estático, dinámico, estricto, este último casi
siempre suele tomarse como tipo estático.
Tipo estático
Consiste en qué el tipo exacto de cada expresión pueda ser localizado en tiempo de
compilación mediante un análisis estático de la aplicación. el tipo estático detecta anomalías
en tiempo de compilación, pero puede ser muy restrictivo.
Entre los lenguajes que utilización tipado estático podemos mencionar, java o C++.
Porqué estos permiten que los errores sean detectados antes de la ejecución, haciendo así la
aplicación más eficiente.
Estricto. todas las expresiones de los tipos deben de ser consistentes en tiempo de
compilación.
Dejando más claro los tipos de datos estrictos aseguran que no se asignen accidentalmente un
tipo de valor incorrecto o una variable.
Este tipo de datos también asegura que no se acceda a propiedades o métodos que no formen
parte de dicho tipo de objeto.
pero… ¿qué es la consistencia?
La consistencia es la cualidad que tiene un objeto que resiste sin corromperse fácilmente.
La consistencia se define a través de tres restricciones fundamentales.
Restricción de declaración: indica que todas las entidades deben tener un tipo declarado.
Restricción de compatibilidad: el tipo fuente debe ser compatible con el tipo de destino.
Restricción de llamada a característica: para poder llamar a un atributo o clase x desde la
clase y, x tiene que estar definida en y en sus antecesores.
Pesimismo se llama así cuando se tienen operaciones con tipos las cuales creemos estar
seguros que funcionaran o serán válidas siempre, pero si no se tiene dicha seguridad,
entonces es mejor que no se permitan.
Objetos: Los objetos son instancias de una clase. Cada objeto tiene sus propios atributos y
puede ejecutar los métodos definidos en su clase. Siguiendo el ejemplo anterior, cada perro
individual sería un objeto con atributos como nombre, edad y raza.
Herencia: La herencia permite definir una nueva clase basada en una clase existente,
tomando sus atributos y métodos y añadiendo nuevos o modificando los existentes. Esto
facilita la reutilización de código y permite crear una jerarquía de clases.
I.1 Introducción
El objetivo principal cuando se empezó a gestar UML era posibilitar el
intercambio de modelos entre las distintas herramientas CASE orientadas a
objetos del mercado. Para ello era necesario definir una notación y semántica
común. En la
Figura 2 se puede ver cuál ha sido la evolución de UML hasta la creación de
UML
1.1.
Hay que tener en cuenta que el estándar UML no define un proceso de
desarrollo específico, tan solo se trata de una notación. En este curso se sigue
el método propuesto por Craig Larman [Larman99] que se ajusta a un ciclo de
vida iterativo e incremental dirigido por casos de uso.
En la parte II de este texto se expone la notación y semántica básica de UML,
en la parte III se presentan conceptos avanzados de la notación UML, mientras
que en la parte IV se presenta el método de desarrollo orientado a objetos de
Larman, que se sirve de los modelos de UML que se han visto anteriormente.
Notación Básica UML
En esta parte se verá cómo se representan gráficamente en UML los conceptos principales
de la orientación a objetos.
II.1 Modelos
Un modelo representa a un sistema software desde una perspectiva
específica. Al igual que la planta y el alzado de una figura en dibujo técnico nos
muestran la misma figura vista desde distintos ángulos, cada modelo nos
permite fijarnos en un aspecto distinto del sistema.
Los modelos de UML que se tratan en esta parte son los
siguientes:
actores definidos en el
Usuario
Figura 3 Ejemplo de nota
Dependencias
La relación de dependencia entre dos elementos de un diagrama significa que
un cambio en el elemento destino puede implicar un cambio en el elemento
origen (por tanto, si cambia el elemento destino habría que revisar el elemento
origen).
Una dependencia se representa por medio de una línea de trazo discontinuo
entre los dos elementos con una flecha en su extremo. El elemento dependiente
es el origen de la flecha y el elemento del que depende es el destino (junto a él
está la flecha).
forman (clases y objetos) y las relaciones que existen entre los mismos
(asociaciones).
Clases
Una clase se representa mediante una caja subdividida en tres partes: En la
superior se muestra el nombre de la clase, en la media los atributos y en la
inferior las operaciones. Una clase puede representarse de forma esquemática
(plegada), con los detalles como atributos y operaciones suprimidos, siendo
entonces tan solo un rectángulo con el nombre de la clase. En la Figura 5 se ve
cómo una misma clase puede representarse a distinto nivel de detalle según
Clase con
detalles + establecer_temp (valor: Temperatura)
suprimidos
Termostato
Objetos
Un objeto se representa de la misma forma que una clase. En el compartimento
superior aparecen el nombre del objeto junto con el nombre de la clase
subrayados, según la siguiente sintaxis:
nombre_del_objeto: nombre_de_la_clase
Puede representarse un objeto sin un nombre específico, entonces sólo aparece el
nombre de la clase.
Asociaciones
Las asociaciones entre dos clases se representan mediante una línea que las
une. La línea puede tener una serie de elementos gráficos que expresan
características particulares de la asociación. A continuación, se verán los más
importantes de entre dichos elementos gráficos.
Nombre de la Asociación y Dirección
El nombre de la asociación es opcional y se muestra como un texto que está
próximo a la línea. Se puede añadir un pequeño triángulo negro sólido que
indique la dirección en la cual leer el nombre de la asociación. En el ejemplo de
Agregación
El símbolo de agregación es un diamante colocado en el extremo en el que está
la clase que representa el “todo”.
CPU
Ordenador Pantalla
Teclado
Clases Asociación
Cuando una asociación tiene propiedades propias se representa como una
clase unida a la línea de la asociación por medio de una línea a trazos. Tanto la
línea como el rectángulo de clase representan el mismo elemento conceptual: la
asociación. Por tanto ambos tienen el mismo nombre, el de la asociación.
Cuando la clase asociación sólo tiene atributos el nombre suele ponerse sobre
la línea (como ocurre en el ejemplo de la Figura 11). Por el contrario, cuando la
clase asociación tiene alguna operación o asociación propia, entonces se pone
Asociaciones N-Arias
En el caso de una asociación en la que participan más de dos clases, las clases
se unen con una línea a un diamante central. Si se muestra multiplicidad en un
rol, representa el número potencial de tuplas de instancias en la asociación
cuando el resto de los N-1 valores están fijos. En la Figura 12 se ha impuesto la
restricción de que un jugador no puede jugar en dos equipos distintos a lo largo
de una temporada, porque la multiplicidad de “Equipo” es 1 en la asociación
ternaria.
Figura 12 Ejemplo de asociación ternaria
Navegabilidad
En un extremo de una asociación se puede indicar la navegabilidad mediante
una flecha. Significa que es posible "navegar" desde el objeto de la clase origen
hasta el objeto de la clase destino. Se trata de un concepto de diseño, que
indica que un objeto de la clase origen conoce al (los) objeto(s) de la clase
destino, y por tanto puede llamar a alguna de sus operaciones.
Herencia
La relación de herencia se representa mediante un triángulo en el extremo de la relación
que corresponde a la clase más general o clase “padre”.
Uso clase “Departamento” tiene subclases adicionales, como podrían ser “Recursos
Humanos” y “Producción”.
Elementos
Los elementos que pueden aparecer en un Diagrama de Casos de Uso son:
Actores
Un actor es una entidad externa al sistema que realiza algún tipo de interacción con
el mismo. Se representa mediante una figura humana dibujada con palotes. Esta
representación sirve tanto para actores que son personas como para otro tipo de
actores (otros sistemas, sensores, etc.).
Casos de Uso
Un caso de uso es una descripción de la secuencia de interacciones que se
producen entre un actor y el sistema, cuando el actor usa el sistema para llevar
a cabo una tarea específica. Expresa una unidad coherente de funcionalidad, y
se representa en el Diagrama de Casos de Uso mediante una elipse con el
nombre del caso de uso en su interior. El nombre del caso de uso debe reflejar
la tarea específica que el actor desea llevar a cabo usando el sistema.
Diagrama de Secuencia
Un diagrama de Secuencia muestra una interacción ordenada según la
secuencia temporal de eventos. En particular, muestra los objetos participantes
en la interacción y los mensajes que intercambian ordenados según su
secuencia en el tiempo.
El eje vertical representa el tiempo, y en el eje horizontal se colocan los objetos
y actores participantes en la interacción, sin un orden prefijado. Cada objeto o
actor tiene una línea vertical, y los mensajes se representan mediante flechas
entre los distintos objetos. El tiempo fluye de arriba abajo.
Se pueden colocar etiquetas (como restricciones de tiempo, descripciones de
acciones, etc.) bien en el margen izquierdo o bien junto a las transiciones o
activaciones a las que se refieren.
Diagrama de Colaboración
Un Diagrama de Colaboración muestra una interacción organizada basándose
en los objetos que toman parte en la interacción y los enlaces entre los mismos
(en cuanto a la interacción se refiere). A diferencia de los Diagramas de
Secuencia, los Diagramas de Colaboración muestran las relaciones entre los
roles de los objetos. La secuencia de los mensajes y los flujos de ejecución
concurrentes deben determinarse explícitamente mediante números de
secuencia.
En cuanto a la representación, un Diagrama de Colaboración muestra a una
serie de objetos con los enlaces entre los mismos, y con los mensajes que se
intercambian dichos objetos. Los
II.6 Diagrama de Estados
mensajes son flechas que van junto al enlace por el que “circulan”, y con el nombre del
Cada mensaje lleva un número de secuencia que denota cuál es el mensaje que
le precede, excepto el mensaje que inicia el diagrama, que no lleva número de
secuencia. Se pueden indicar alternativas con condiciones entre corchetes (por
ejemplo 3 [condición_de_test] : nombre_de_método() ), tal y como aparece en el
ejemplo de la Figura 17. También se puede mostrar el anidamiento de mensajes
con números de secuencia como 2.1, que significa que el mensaje con número
de secuencia 2 no acaba de ejecutarse hasta que no se han ejecutado todos los
2. x .
Diagrama de Estados
Un Diagrama de Estados muestra la secuencia de estados por los que pasa un caso
de uso o un objeto a lo largo de su vida, indicando qué eventos hacen que se pase
de un estado a otro y cuáles son las respuestas y acciones que genera. En cuanto a
la representación, un diagrama de estados es un grafo cuyos nodos son estados y
cuyos arcos dirigidos son transiciones etiquetadas con los nombres de los eventos.
Un estado se representa como una caja redondeada con el nombre del estado
en su interior. Una transición se representa como una flecha desde el estado
origen al estado destino.
La caja de un estado puede tener 1 o 2 compartimentos. En el primer
compartimento aparece el nombre del estado. El segundo compartimento es
opcional, y en él pueden aparecer acciones de entrada, de salida y acciones
internas.
Una acción de entrada aparece en la forma entrada/acción_asociada donde
acción_asociada es el nombre de la acción que se realiza al entrar en ese
estado. Cada vez que se entra al estado por medio de una transición la acción
de entrada se ejecuta.
Una acción de salida aparece en la forma salida/acción_asociada. Cada vez que se
sale del estado por una transición de salida la acción de salida se ejecuta. Una
acción interna es una acción que se ejecuta cuando se recibe un determinado evento
en ese estado, pero que no causa una transición a otro
• Diagramas de secuencia
• Diagramas de colaboración
• Diagramas de estados
• Diagramas de casos de uso
• Diagramas de actividades
En este capítulo nos centraremos en los diagramas de actividades que sirven fundamentalmente
para modelar el flujo de control entre actividades.
La idea es generar una especie de diagrama Pert, en el que se puede ver el
flujo de actividades que tienen lugar a lo largo del tiempo, así como las tareas
concurrentes que pueden realizarse a la vez. El diagrama de actividades sirve
para representar el sistema desde otra perspectiva, y de este modo
complementa a los anteriores diagramas vistos.
Gráficamente un diagrama de actividades será un conjunto de arcos y nodos.
Desde un punto de vista conceptual, el diagrama de actividades muestra cómo
fluye el control de unas clases a otras con la finalidad de culminar con un flujo de
control total que se corresponde con la consecución de un proceso más
complejo.
Por este motivo, en un diagrama de actividades aparecerán acciones y
actividades correspondientes a distintas clases. Colaborando todas ellas para
conseguir un mismo fin. Ejemplo: Hacer un pedido.
ProcesarFactura(Fact) entry/SacarPrimeraFactura(Fact)
Estado de Actividad
Transiciones
Las transiciones reflejan el paso de un estado a otro, bien sea de actividad o de
acción. Esta transición se produce como resultado de la finalización del estado
del que parte el arco dirigido que marca la transición. Como todo flujo de control
debe empezar y terminar en algún momento, podemos indicar esto utilizando
dos disparadores de inicio y fin tal y como queda reflejado en el ejemplo de la
Figura
21.
Modelado Dinámico
Bifurcaciones
Un flujo de control no tiene por qué ser siempre secuencial, puede presentar
caminos alternativos. Para poder representar dichos caminos alternativos o
bifurcación se utilizará como símbolo el rombo. Dicha bifurcación tendrá una
transición de entrada y dos o más de salida. En cada transición de salida se
colocará una expresión booleana que será evaluada una vez al llegar a la
bifurcación, las guardas de la bifurcación han de ser excluyentes y contemplar
todos los casos ya que de otro modo la ejecución del flujo de control quedaría
interrumpida.
Para poder cubrir todas las posibilidades se puede utilizar la palabra ELSE, para
indicar una transición obligada a un determinado estado cuando el resto de
guardas han fallado.
En la Figura 22 podemos ver un ejemplo de bifurcación.
División y unión
No sólo existe el flujo secuencial y la bifurcación, también hay algunos casos en
los que se requieren tareas concurrentes. UML representa gráficamente el
proceso de división, que representa la concurrencia, y el momento de la unión
de nuevo al flujo de control secuencial, por una línea horizontal ancha. En la
Figura 23 podemos ver cómo se representa gráficamente.
División
Unión
División y unión
Calles
Cuando se modelan flujos de trabajo de organizaciones, es especialmente útil
dividir los estados de actividades en grupos, cada grupo tiene un nombre
concreto
y se denominan calles. Cada
calle representa a la parte de la organización responsable de las actividades que aparecen
Figura 24 Calles
XXXX.dll
Vamos a ver con más detalle cuáles son los parecidos y las diferencias entre los componentes
y las clases.
PARECIDOS
Ambos tienen nombre
Ambos pueden realizar un conjunto de interfaces.
Pueden participar en relaciones de dependencia, generalización y
asociación.
Ambos pueden anidarse
Ambos pueden tener instancias
Ambos pueden participar en interacciones
DIFERENCIAS
Las Clases LosComponentes
Interfaces
Tanto los servicios propios de una clase como los de un componente, se
especifican a través de una Interfaz. Por ejemplo, todas las facilidades más
conocidas de los sistemas operativos, basados en componentes (COM+,
CORBA, etc.), utilizan las interfaces como lazo de unión entre unos
componentes y otros.
La relación entre un componente y sus interfaces se puede representar de dos
maneras diferentes, de forma icónica como se indica en la Figura 27, y de forma
expandida como se muestra en la Figura 28.
Organización de componentes
Los componentes se pueden agrupar en paquetes de la misma forma que se organizan las
clases.
Además, se pueden especificar entre ellos relaciones de dependencia, generalización,
asociación (incluyendo agregación), y realización.
Estereotipos de componentes
UML define cinco estereotipos estándar que se aplican a los
componentes: executable Componente que se puede ejecutar en un nodo.
library Biblioteca de objetos estática o dinámica. table
file Componente que representa un documento que contiene código fuente o datos. document
Componente que representa un documento.
UML no especifica iconos predefinidos para estos estereotipos.
Despliegue
Nodos
Al igual que los componentes los nodos pertenecen al mundo material. Vamos a
definir un nodo como un elemento físico, que existe en tiempo de ejecución y
representa un recurso computacional que generalmente tiene alguna memoria
y, a menudo, capacidad de procesamiento.
Los nodos sirven para modelar la topología del hardware sobre el que se
ejecuta el sistema. Un nodo representa normalmente un procesador o un
dispositivo sobre el que se pueden desplegar los componentes.
DIFERENCIAS
Un nodo debe tener un nombre asignado que lo distinga del resto de nodos.
Nombre
del nodo
Figura 29 Nodos
Nodos y componentes
En muchos aspectos los nodos y los componentes tienen características
parecidas. Vamos a ver con más detalle cuales son los parecidos y las
diferencias entre los componentes y los nodos.
PARECIDOS
Ambos tienen nombre
Pueden participar en relaciones de dependencia, generalización y
asociación.
Ambos pueden anidarse
Ambos pueden tener instancias
Ambos pueden participar en interacciones
Son los elementos donde se Son los elementos que ejecutan los componentes. participan
en la ejecución de un sistema. Representan el despliegue físico Representan el de los
componentes. empaquetamiento físico de los elementos lógicos.
La relación entre un nodo y los componentes que despliega se pueden representar mediante
una relación de dependencia como se indica en la Figura
30.
Los nodos se pueden agrupar en paquetes igual que los las clases y los componentes.
Los tipos de relación más común entre nodos es la asociación. Una asociación
entre nodos viene a representar una conexión física entre nodos como se puede
ver en la Figura 31.
Existen dos tipos de diagramas que sirven para modelar los aspectos físicos de un sistema
orientado a objetos:
Diagramas de Componentes
Diagramas de Despliegue
Seguidamente veremos para qué sirve cada uno de ellos y cuál es su representación gráfica.
Diagramas de Componentes
Un diagrama de componentes muestra la organización y las dependencias entre un
conjunto de componentes.
Para todo sistema OO se han de construir una serie de diagramas que modelan
tanto la parte estática (diagrama de clases), como dinámica (diagramas de
secuencia, colaboración, estados y de actividades), pero llegado el momento
todo esto se debe materializar en un sistema implementado que utilizará partes
ya implementadas de otros sistemas, todo esto es lo que pretendemos modelar
con los diagramas de componentes.
Algunos conceptos
Un diagrama de componentes muestra un conjunto de componentes y sus relaciones de
manera gráfica a través del uso de nodos y arcos entre estos.
Normalmente los diagramas de componentes contienen:
Componentes
Interfaces
Paquetes o subsistemas
Para cada componente de este conjunto hay que considerar las relaciones
con los vecinos. Esto implica definir las interfaces importadas por ciertos
componentes y las exportadas por otros.
c) Modelado de una base de datos física
Para modelar una base de datos física es necesario:
Identificar las clases del modelo que representan el esquema lógico de la base de
datos.
Seleccionar una estrategia para hacer corresponder las clases con tablas.
Donde sea posible es aconsejable utilizar herramientas que ayuden a transformar diseño
lógico en físico.
Diagramas de Despliegue
Técnicas más comunes de modelado
a) Modelado de un sistema empotrado
El desarrollo de un sistema empotrado es más que el desarrollo de un sistema
software. Hay que manejar el mundo físico. Los diagramas de despliegue son
útiles para facilitar la comunicación entre los ingenieros de hardware y los de
software.
Para modelar un sistema empotrado es necesario:
Identificar los dispositivos y nodos propios del sistema.
Proporcionar señales visuales, sobre todo para los dispositivos poco usuales.
Arquitectura MULTI-nivel
La arquitectura de tres niveles puede pasar a llamarse de Múltiples Niveles si tenemos en
cuenta el hecho de que todos los niveles de la arquitectura de tres niveles se pueden
descomponer cada uno de ellos cada vez más.
Por ejemplo, el nivel de Servicios, se puede descomponer en servicios de alto y de bajo nivel,
identificando como de alto nivel los servicios de generación de informes y como de bajo nivel
los de manejo de ficheros de entrada y salida. El motivo que lleva a descomponer la
arquitectura del sistema en diferentes niveles es múltiple:
Separación de la lógica de la aplicación en componentes separados que sean más fácilmente
reutilizables.
Distribución de niveles en diferentes nodos físicos de computación.
Reparto de recursos humanos en diferentes niveles de la arquitectura.
Paquetes
La forma que tiene UML de agrupar elementos en subsistemas es a través del
uso de Paquetes, pudiéndose anidar los paquetes formando jerarquías de
paquetes. De hecho, un sistema que no tenga necesidad de ser descompuesto
en subsistemas se puede considerar como con un único paquete que lo abarca
todo.
Gráficamente un paquete viene representado como se indica en la Figura 32.
En la Figura 33, vemos cómo se representa la arquitectura del sistema con la notación de
paquetes.
Presentación
Presentación
Dominio
Lógica de la Aplicación
Servicios
Almacenamiento
Los elementos que se agrupen en un mismo paquete han de presentar un alto grado de
cohesión, es decir deben estar muy relacionados.
Los elementos que estén en diferentes paquetes deben tener poca relación, es decir
deben colaborar lo menos posible.
45
IV.1 Proceso de Desarrollo
• Construcción: La construcción del sistema. Las fases dentro de esta etapa son las
siguientes:
- Análisis: Se analiza el problema a resolver desde la perspectiva de los usuarios y
de las entidades externas que van a solicitar servicios al sistema.
- Diseño: El sistema se especifica en detalle, describiendo cómo va a funcionar
internamente para satisfacer lo especificado en el análisis.
- Implementación: Se lleva lo especificado en el diseño a un lenguaje de
programación.
- Pruebas: Se llevan a cabo una serie de pruebas para corroborar que el software
funciona correctamente y que satisface lo especificado en la etapa de Planificación
y Especificación de Requisitos.
9. Refinar el Plan.
IV.2.2 Requisitos
Un requisito es una descripción de necesidades o aspiraciones respecto a un
producto. El objetivo principal de la actividad de definición de requisitos consiste
en identificar qué es lo que realmente se necesita, separar el grano de la paja.
Esto se hace en un modo que sirva de comunicación entre el cliente y el equipo
de desarrollo.
Es aconsejable que un documento de Especificación de Requisitos tenga los siguientes
puntos:
− Propósito.
− Tipo: primario
Re
10. coge el recibo.
11. Re
coge el dinero y se va. Cursos
Alternativos:
• Línea 4: La clave es incorrecta. Se indica el error y se cancela la operación.
• Línea 8: La cantidad solicitada supera el saldo. Se indica el error y se cancela la
operación.
El significado de cada apartado de este formato es como sigue:
− Cursos Alternativos: Puntos en los que puede surgir una alternativa, junto con la
descripción de la excepción.
IV.2.3.3 Identificación de Casos de Uso
La identificación de casos de uso requiere un conocimiento medio acerca de los
requisitos, y se basa en la revisión de los documentos de requisitos existentes,
y en el uso de la técnica de brainstorming entre los miembros del equipo de
desarrollo.
Como guía para la identificación inicial de casos de uso hay dos métodos:
a) Basado en Actores
b) Basado en Eventos
1. Identificar los eventos externos a los que el sistema va a tener que responder.
2. Relacionar los eventos con actores y casos de uso.
• Pedir un producto.
• Matricularse en un curso de la facultad.
• Comprobar la ortografía de un documento en un procesador de textos.
• Realizar una llamada telefónica.
“sistema”. Para que los casos de uso tengan un significado completo es necesario que
el sistema esté definido con precisión.
Al definir los límites del sistema se establece una diferenciación entre lo que es
interno y lo que es externo al sistema. El entorno exterior se representa
mediante los actores.
Ejemplos de sistemas son:
a) Según Importancia
Para poder priorizar los casos de uso que identifiquemos los vamos a distinguir entre:
• Primarios: Representan los procesos principales, los más comunes, como Realizar
Reintegro en el caso del cajero automático.
• Secundarios: Representan casos de uso menores, que van a necesitarse raramente, tales
como Añadir Nueva Operación.
5. etc. 6. etc.
En principio, los casos de uso reales deberían ser creados en la fase de Diseño
y no antes, puesto que se trata de elementos de diseño. Sin embargo, en
algunos proyectos se plantea la definición de interfaces en fases tempranas del
ciclo de desarrollo, en base a que son parte del contrato. En este caso se
pueden definir algunos o todos los casos de uso reales, a pesar de que
suponen tomar decisiones de diseño muy pronto en el ciclo de vida.
No hay una diferencia estricta entre un Caso de Uso Esencial y uno Real, el
grado de compromiso con el Diseño es un continuo, y una descripción
específica de un caso de uso estará situada en algún punto de la línea entre
Casos de Uso Esenciales y Reales, normalmente más cercano a un extremo
que al otro, pero es raro encontrar Casos de Uso Esenciales o Reales puros.
a) Nombre
El nombre de un Caso de Uso debería ser un verbo, para enfatizar que se trata de un
proceso, por ejemplo: Comprar Artículos o Realizar Pedido.
b) Alternativas equiprobables
Cuando se tiene una alternativa que ocurre de manera relativamente ocasional,
se indica en el apartado Cursos Alternativos. Pero cuando se tienen distintas
opciones, todas ellas consideradas normales se puede completar el Curso Típico
de Eventos con secciones adicionales.
Así, si en un determinado número de línea hay una bifurcación se pueden poner
opciones que dirigen el caso de uso a una sección que se detalla al final del
Curso Típico de Eventos, en la siguiente forma:
− Sección: Principal
Acción del Actor Respuesta del Sistema
3. Escoge la operación A.
4. Presenta las opciones de pago.
5. Selecciona el tipo de pago:
a. Si se paga al contado ver sección Pago al Contado.
6. Genera recibo.
b. Si se paga con tarjeta ver sección Pago con Tarjeta.
Cursos Alternativos:
6. Se crean casos de uso reales sólo cuando: • Descripciones más detalladas ayudan
significativamente a incrementar la comprensión del problema.
Peso 2 4 1 3 4
Caso de Uso a b c d e f
Suma
Reintegro 5 4 1 0 5 2 50
...
IV.3.1 Actividades
Las actividades de la fase de Análisis son las siguientes:
Avión
Objetos físicos o tangibles Terminal_de_Caja
Supermercado
Lugares Aeropuerto
Venta, Pago
Transacciones Reserva
Cajero
Roles de una persona Piloto
Artículo Pasajero
Cosas en un contenedor
Departamento_de_Ventas
Organizaciones Compañía_Aérea_Toto
Política_de_Devoluciones
Reglas y políticas Política_de_Cancelaciones
Catálogo_de_Productos Catálogo_de_Piezas
Catálogos
• Usar los nombres existentes en el territorio: Hay que usar el vocabulario del dominio
para nombrar conceptos y atributos.
• Excluir características irrelevantes: Al igual que el cartógrafo elimina características
no relevantes según la finalidad del mapa (por ejemplo datos de población en un
mapa de carreteras), un Modelo Conceptual puede excluir conceptos en el dominio
que no son pertinentes en base a los requisitos.
• No añadir cosas que no están ahí: Si algo no pertenece al dominio del problema no se
añade al modelo.
Una asociación es una relación entre conceptos que indica una conexión con sentido y que
es de interés en el conjunto de casos de uso que se está tratando.
Se incluyen en el modelo las asociaciones siguientes:
• Asociaciones para las que el conocimiento de la relación necesita mantenerse por
un cierto período de tiempo (asociaciones “necesitaconocer”).
• Asociaciones derivadas de la Lista de Asociaciones Típicas que se muestra en la
Tabla 2.
Tabla 2 Lista de Asociaciones Típicas
Categoría Ejemplos
A es una parte física de B Ala – Avión
A es una parte lógica de B Artículo_en_Venta –Venta
A está físicamente contenido en B Artículo – Estantería
Pasajero – Avión
A está lógicamente contenido en
B Descripción_de_Artículo – Catálogo
A es una descripción de B Descripción_de_Artículo – Artículo
Eventos
1. Este caso de uso empieza cuando un Cliente introduce una tarjeta en el cajero.
2. Pide la clave de identificación.
3. Introduce la clave.
4. Presenta las opciones de operaciones disponibles.
5. Selecciona la operación de Reintegro.
6. Pide la cantidad a retirar.
7. Introduce la cantidad requerida.
8. Procesa la petición y, eventualmente, da el dinero solicitado.
Devuelve la tarjeta y genera un recibo.
9. Recoge la tarjeta.
10. Recoge el recibo.
11. Recoge el dinero y se va.
Figura 36 Ejemplo de Diagrama
de Secuencia del Sistema
Contrato
Nombre: insertarTarjeta (número_tarjeta: número)
Responsabilidades: Comenzar una sesión con el sistema para realizar una operación.
Cruzadas:
Casos de Uso: Reintegro
Notas:
IV.3.5.2 Post-condiciones
Las post-condiciones se basan en el Modelo Conceptual, en los cambios
que sufren los elementos del mismo una vez se ha realizado la
operación. Es mejor usar el tiempo pasado o el pretérito perfecto al
redactar una postcondición, para enfatizar que se trata de declaraciones
sobre un cambio en el estado que ya ha pasado. Por ejemplo es mejor
decir “se ha creado una Sesión” que decir “crear una Sesión”.
Cuando se ha creado un objeto, lo normal es que se haya asociado a
algún otro objeto ya existente, porque si no queda aislado del resto del
sistema. Por tanto, al escribir las postcondiciones hay que acordarse de
añadir asociaciones a los objetos creados. Olvidar incluir estas
asociaciones es el fallo más común cometido al escribir las post-
condiciones de un contrato.