Documentos de Académico
Documentos de Profesional
Documentos de Cultura
51
2.1 Iteración 1. 53
2.1.1 Reunión con el cliente. 53
2.1.2 Planificación y Análisis de riesgos. 55
2.1.3 Análisis. 61
2.1.3.1 Requerimientos. 61
2.1.3.2 Casos de uso. 62
2.1.3.3 Diagramas de secuencia. 67
2.1.3.4 Análisis de Clases. 69
2.1.4 Diseño. 74
2.1.4.1 Desarrollo de casos de uso y diagramas de secuencia. 74
2.1.4.2 Reunión RTF. 103
2.1.4.3 Análisis y Diseño posterior a la Reunión RTF. 103
2.1.5 Implementación. 123
2.1.5.1 Diccionario de Clases. 123
2.1.5.2 Mapeo de clases y tablas. 151
2.1.5.3 Patrones de diseño: 153
2.1.6 Plan de Testeo. 154
2.1.6.1 Testing unitario. 154
2.1.6.2 Testing de integración. 156
2.1.6.3 Diseños de casos de prueba. 157
2.1.7 Diagrama de Gantt real de la Iteración 1. 183
2.1.8 Conclusión de la Iteración 1. 184
2.2 Iteración 2. 189
2.2.1 Reunión con el cliente. 189
2.2.2 Planificación y Análisis de riesgos. 190
2.2.3 Análisis. 196
2.2.3.1 Requerimientos. 196
2.2.3.2 Casos de uso. 197
2.2.3.3 Análisis de Clases. 201
2.2.4 Diseño. 203
2.2.4.1 Desarrollo de casos de uso y diagramas de secuencia. 203
2.2.4.2 Reunión RTF. 230
2.2.5 Implementación de iteración 2. 231
2.2.5.1 Diccionario de Clases. 231
2.2.5.2 Mapeo de clases y tablas. 241
2.2.5.3 Patrones de diseño: 243
2.2.6 Plan de Testeo. 244
2.2.6.1 Testing unitario. 244
2.2.6.2 Testing de integración. 246
2.2.6.3 Diseños de casos de prueba. 247
2.2.7 Diagrama de Gantt real de la iteración 2. 265
2.2.8 Conclusión de la Iteración 2. 266
3 Manual de Usuario. 270
4 Deployment 285
5 Política de Seguridad y Respaldos. 296
6 Plan de Contingencia. 297
7 Grado de Satisfacción del Cliente. 298
8 Conclusión Final 299
9 Glosario. 303
10 Bibliografía. 305
CTA DE RELEVAMIENTO 2. 308
2.0 Proyecto
2.1 Iteración 1
2.1.1 Reunión con el cliente
Durante el proceso de desarrollo del Anteproyecto se adquirieron los requerimientos principales del
cliente, teniéndolos en cuenta se pudo plantear dos iteraciones en donde estos serían divididos para
llevarlos a cabo en fases separadas.
Ya dentro de la primera iteración, se realizó una reunión con el cliente donde fue informado de los
requerimientos que serían contemplados en la misma y se profundizó en ellos, obteniendo en detalle
todo lo necesario para continuar con el proceso de desarrollo.
Funcionalidades:
Registro de clientes: el registro de clientes es una parte esencial para el uso del sistema, ya que ellos
componen el núcleo sobre el que funcionará el mismo. De ellos se necesitará registrar los datos
necesarios para poder identificarlos fácilmente.
Registro de habitaciones: el registro de las habitaciones es otro de los puntos importantes a ser tenidos
en cuenta, ya que servirá para llevar la información de las mismas para después contar con la posibilidad
de poder asignarla a un cliente.
Registro de estadías: este punto comprende la actividad primordial del hotel, ya que es el servicio
principal que ofrece. Luego de seleccionar un cliente y una habitación, será posible asignar la estadía
correspondiente.
Gestión de tarifas: Es necesario llevar un registro modificable de las tarifas que serán manejadas por el
hotel, ya que al momento de realizar el check-out de la habitación se podrán generar los cálculos en
base a esta y asi tener un precio exacto de lo que se le cobrará al cliente.
Listados de habitaciones disponibles, reservadas y ocupadas: para saber qué habitaciones el hotel
debería poder ofrecer, es necesario generar listados de las mismas, que se actualicen cada vez que
existe un cambio en el estado de las habitaciones.
Calcular gastos de productos consumidos durante la estadía del cliente: Además de tener la tarifa fija que
se cobra en base a los días que el cliente se hospeda en el hotel, también puede tener otros gastos, por
ejemplo por consumir productos como bebidas o golosinas que suelen haber en las habitaciones, o uso
de la lavandería.
Calcular el monto a cobrar en el momento del check out: contando ya con los datos de la estadía y de los
productos consumidos por el cliente, es posible generar una precio exacto de los gastos que el huésped
realizó teniendo en cuenta los días que estuvo en el hotel, los productos consumidos, el tipo de
habitación y la cantidad de personas que estuvieron alojadas.
2.2.3 Análisis
2.2.3.1 Requerimientos
Una vez comenzada esta iteración y como ya fue mencionado anteriormente, se realizó una nueva
reunión con el cliente donde se pudieron profundizar las necesidades correspondientes a esta etapa. De
esta manera el trabajo será realizado de forma óptima, también reduciendo el riesgo de insatisfacción del
cliente. Es por esto que durante el transcurso del proyecto y en cada etapa, los requerimientos globales
planteados se afinarán para asegurase del buen curso del mismo; siempre respetando el modelo
prototipo que fue seleccionado por el equipo de desarrollo, presentando en cada entrevista la versión
prototipo más actualizada. Si bien ésta es la primera etapa del proyecto; es justo mencionar que en el
futuro, en cada nueva etapa, se deberán rever los requerimientos ya implementados para poder adecuar
los mismos a la nueva iteración, cuando corresponda. Un hecho resaltable, es que los requerimientos
que componen esta primera iteración, han sido seleccionados basándose netamente en sus
características, permitiendo la entrega de prototipos funcionales a medida que sea concretada cada
iteración; en el caso específico de ésta iteración, se basó en la prioridad de migrar cuanto antes los datos
de los clientes del hotel a la base de datos, ya que es una tarea que requiere mucho tiempo y también
brindar la posibilidad de realizar las tareas básicas del hotel: check in, check out e implementar las
reservas. Esta decisión si bien fue tomada por los miembros del equipo, fue planteada al cliente y se
obtuvo su aprobación que fue tomada como punto de partida para el comienzo del proyecto. Los
restantes requerimientos son dejados para futuras iteraciones y se deja abierta la posibilidad del
surgimiento de nuevas necesidades como se planteó anteriormente.
Nota: Será responsabilidad del equipo de desarrollo, realizar un análisis de los requerimientos de mayor
complejidad para cada iteración, ya que el equipo reconoce que estos implicarán un mayor esfuerzo y
desglose. Esto no implica de ninguna manera que los requerimientos seleccionados para cada iteración
no se realicen como se plantearon en las reuniones con el cliente.
En el marco del desarrollo orientado a objetos, es necesario identificar las clases cuyos objetos serán
necesarios para realizar un caso de uso y detallar su comportamiento mediante la interacción de estos
objetos (diagramas de interacción).
Esta tarea será llevada a cabo para cada caso de uso que exista en el desarrollo definido, en base a los
requerimientos.
Cabe destacar que estas actividades no serán realizadas de manera secuencial, sino en paralelo,
retroalimentándose continuamente entre ellas y con las ya realizadas anteriormente.
Diagrama de casos de uso general para esta iteración basado en los requerimientos a implementar.
Identificación Descripción
CUG-01 Gestionar paciente: Permitiría al usuario ingresar, modificar, dar de baja y restaurar clientes
dados de baja en el sistema. Realizar búsquedas y listados de Clientes.
CUG-02 Gestionar Habitación: Permitiría al usuario ingresar y modificar habitaciones, realizar
búsquedas y listados de Habitaciones.
CUG-03 Gestionar Tarifas: Permitiría al usuario poder ingresar o modificar las tarifas que se le asignan
a los distintos tipos de habitaciones.
CUG-04 Gestionar Comodidades: Permitiría al usuario ingresar una información más detallada de las
comodidades de cada habitación.
CUG-05 Gestionar Estadías: Permitiría al usuario ingresar, modificar y cancelar las estadías de los
clientes.
CUG-06 Gestionar Reservas: Permitiría al usuario ingresar las posibles estadías de los clientes,
permitiendo saber qué habitaciones podrían estar ocupadas una fecha determinada.
Identificación de Clases Asociadas a un Caso de Uso
En este punto se identifican los objetos necesarios para el desarrollo de un caso de uso, basándose en
las especificaciones del mismo, y estudiándolos, se puede extraer una lista de objetos candidatos a ser
clases.
En principio puede ocurrir que no se tenga a disposición la información necesaria para identificar todos
estos objetos, por lo que se obtendrá inicialmente una aproximación que se afinará durante esta
actividad y también en el diseño.
Se debe tener en cuenta además, que algunos objetos representan mejor la información del sistema si
se los identifica como atributos en lugar de clases. Para poder realizar esta diferenciación se estudia el
comportamiento de los mismos en el diagrama de interacción y además se toman en cuenta una serie de
reglas como el suprimir palabras con significado vago o sinónimos.
Una vez que se obtienen cada una de las clases, se incorporan al modelo de clases de la actividad
“Diseño”, donde se definen sus atributos, responsabilidades y relaciones.
Los tipos de clases que se identifican en esta tarea podrán tratarse de entidades, interfaces de usuario y
control.
Las clases “entidad” representan la información manipulada en el caso de uso. En el caso de las
interfaces se utilizan para describir la interacción del sistema con los actores; éstas suelen representar
abstracciones de ventanas, interfaces de comunicación, formularios, etc.
Por otro lado, las entidades de control se encargan de la coordinación, secuencia de transacciones y
control de los objetos relacionados con un caso de uso.
Especificación de casos de uso generales.
Identificación Descripción Caso de uso general asociado
Modificar datos de un Cliente: Permite al usuario poder actualizar los datos de los clientes.
Nueva Habitación: En el caso de que el hotel quiera expandirse, el usuario será capaz de agregar una
nueva habitación.
Modificar Habitación: En el caso de que el hotel modifique una habitación, el usuario será capaz de
agregar las modificaciones que se hagan.
Agregar Tarifa: Permite al usuario agregar las tarifas para cada tipo de habitación.
Agregar comodidad a habitación: Permite al usuario agregar las comodidades a las habitaciones.
Check In (agregar estadía): Permite al usuario, en base a un cliente, una habitación y una fecha, crear
una estadía.
Check Out (eliminar estadía): Permite al usuario eliminar las estadías luego de que concluyan.
Generar costos de estadía: Permite al usuario, generar un monto exacto en base a los datos de las
estadías.
Agregar Reserva: Permite al usuario crear reservas, para luego convertirlas en estadías.
Transformar Reserva en estadía: Permite al usuario que cuando sea la fecha de la reserva, poder
transformarla en una estadía.
Cancelar reserva: Permite al usuario cancelar las reservas en caso de que el cliente no pueda asistir en
la fecha de esta o en caso de que la reserva haya vencido.
Buscar Habitaciones ocupadas/libres/reservadas: Permite al usuario buscar con filtros los estados de
las habitaciones para saber si estas están disponibles o no.
Buscar estadía: Permite al usuario buscar una estadía determinada entre las existentes para
posteriormente modificarla o eliminarla.
En esta tarea se estudia y describe la cooperación entre los objetos utilizados para la realización de los
casos de uso detallados en el punto anterior.
Dicha cooperación se representa a través de diagramas de interacción, que se componen por instancias
de los actores involucrados, objetos y la secuencia de mensajes que intercambian entre ellos. Es
recomendable establecer criterios que determinen qué tipo de objetos y mensajes incluirán estos
diagramas, objetos y llamadas a bases de datos, objetos de interfaz de usuario, de control, etc.
Los mencionados diagramas podrán ser tanto de secuencia como de colaboración (en caso de que
corresponda), y su uso dependerá de si se centra en la secuencia cronológica o en cómo se realiza la
comunicación entre los objetos.
En los casos en donde se especifique más de un escenario posible para un caso de uso, podría
manejarse la posibilidad de representar cada uno de ellos en un diagrama de interacción; siendo también
recomendable en el caso anterior, completar algunos de los diagramas con una descripción textual.
Los diagramas de secuencia se generalizan por tipo. Esto quiere decir que no se hace un diagrama
particular para cada caso, sino que se realiza uno por cada categoría:
● Crear elemento.
● Modificar elemento.
● Eliminar elemento.
● Buscar Elemento.
● Listar Elementos.
Diagramas de secuencia generalizados
Para la realización de los siguientes diagramas se tuvo en cuenta algunos casos de uso previamente
planteados.
Diagrama de secuencia: Crear elemento.
Modificar elemento
Eliminar elemento
Buscar elemento
Listar elemento
Análisis de Clases
Basándose en las clases identificadas en el análisis de casos de uso, se elaborará un modelo de clases.
A medida que se avance en el análisis, el modelo se irá completando con las clases que aparezcan,
tanto para estudiar los casos de uso y diagramas de secuencia, como también la interface de usuario
necesaria para el sistema.
Esta tarea tendrá como objetivo el detallar cada una de las clases surgidas, identificando las
responsabilidades asociadas a las mismas, sus atributos y las relaciones existentes entre ellas.
Paso Descripción
Nombre de Se identifican las clases participantes y se define un nombre que identifica a cada
Clase una.
Este proceso se somete a un refinamiento iterativo hasta alcanzar un cierto nivel de conformidad. En los
siguientes apartados se presenta el producto final obtenido de dicho refinamiento.
Generalización Herencia
Responsabilidades y Atributos
En este punto se identifican las responsabilidades y atributos principales de una clase.
Atributos: Se encargan de especificar las propiedades que tiene una clase, y son identificados por estar
implicados en sus responsabilidades. Estos atributos deberían ser conceptuales y conocidos por el
dominio.
Basándose en lo explicado anteriormente, se realiza una especificación para cada clase. Ésta debe
incluir la lista de sus operaciones y las clases que colaboran para cubrir estas operaciones. Además
debe contar con una especificación de las responsabilidades, los atributos y las operaciones que
componen esa clase.
En el caso de las clases, las que su comportamiento dependerá del estado en que se encuentren, se
puede realizar también un diagrama de transición de estados.
Diagrama conceptual para la Iteración 1
Para obtener este diagrama se ha basado en los casos de uso realizados en la etapa de análisis y en
sus respectivos diagramas de secuencia.
De los casos de uso se obtuvo una aproximación a las interfaces de usuario, y en base a los diagramas
de secuencia, se ha podido identificar algunas de las clases de dominio que se representan en la figura
anterior.
De esta manera el equipo de desarrollo logró entender el funcionamiento de la operativa de trabajo, en la
presente iteración.
Una vez analizado el problema en profundidad, se optó por modificar el diagrama conceptual inicial
planteado en el anteproyecto, agregando varias clases a dicha solución inicial para de esa manera
modelar de forma más consistente el problema.
Clases:
Las entidades previamente descriptas, son un punto de partida inicial por lo que en el correr de la
iteración I podrían variar, o quizás se agreguen otras.
Cliente: este objeto contiene todos los atributos con información del cliente tales como nombre, ci (que
no necesariamente es un documento nacional, ya que el hotel cuenta con clientes del exterior o tambien
puede ser el rut de una empresa) y de contacto con éste, como por ejemplo teléfono o email.
Comodidad: en este objeto, se encuentran los atributos necesarios para hacer referencia a las
comodidades que ofrecen las distintas habitaciones.
Estadía: este objeto contiene los datos necesarios para llevar el mejor control posible de las estadías,
conociendo en qué habitación (nrohabitacion) se encuentra el cliente (ocupante), la cantidad de personas
que se alojarán en éstas (cantper) y la fechas en las que el cliente estará alojado (fechaentrada)
(fechasalida), entre otros datos
Factura: en este objeto contiene la información con la cual se podrá llevar una contabilidad de las
ganancias teniendo en cuenta las estadías y los consumos para cada una de ellas. Si en una iteración
futura el cliente decide imprimir una factura se podrá acceder a la información de este objeto para ello.
Habitacion: este objeto contiene los atributos con la información de las habitaciónes como
nrohabitacion, o el estado en el que se encuentran (estado) para saber si una habitación determinada
está disponible o no.
Reserva: en este objeto se encuentran los datos necesarios para que se pueda crear una reserva como
el documento del ocupante, la habitación en la que se va a hospedar, las fechas en las que planea
alojarse y la cantidad de personas, para luego usar esos datos para transformar la reserva en una
estadía.
Tarifa: en este objeto, se encuentra la información del precio de las habitaciones teniendo en cuenta el
tipo de habitación que sea.
Diseño
Identificación Descripción