Nathaly González Andrés Ramos Fernando Bernate Néstor Bohórquez Kerlyn Hans Mariño Bello

18
Nathaly González Andrés Ramos Fernando Bernate Néstor Bohórquez Kerlyn Hans Mariño Bello Análisis y Diseño de Software Sistema de Parqueaderos

description

Análisis y Diseño de Software Sistema de Parqueaderos. Nathaly González Andrés Ramos Fernando Bernate Néstor Bohórquez Kerlyn Hans Mariño Bello. Agenda. Requerimientos Funcionales Requerimientos No Funcionales Modelo del Mundo Diseño Detallado. Descripción del Proyecto. - PowerPoint PPT Presentation

Transcript of Nathaly González Andrés Ramos Fernando Bernate Néstor Bohórquez Kerlyn Hans Mariño Bello

Page 1: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

• Nathaly González• Andrés Ramos• Fernando Bernate• Néstor Bohórquez • Kerlyn Hans Mariño Bello

Análisis y Diseño de Software

Sistema de Parqueaderos

Page 2: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Agenda

Requerimientos Funcionales Requerimientos No Funcionales Modelo del Mundo Diseño Detallado

Page 3: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

El Proyecto “Sistema de Parqueaderos - PARQ” se realiza con el fin de proveer el diseño de una capa que permita la administración de la operación de un edificio de parqueaderos, considerando las especificaciones dadas en la descripción del problema.

El resultado planteado abarcará el análisis y diseño de una solución que de soporte a los requerimientos para el proceso de negocio del parqueadero.

A continuación se definirán los requerimientos de software necesarios para desarrollar una propuesta que soporte las necesidades globales que se han identificado al interior del proceso.

Descripción del Proyecto

Page 4: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Requerimientos Funcionales (1)

RF -01 Registrar Vehículo en parqueadero estándar

Se requiere registrar el ingreso de un vehículo al parqueadero a un sitio estándar, según su tipo. Debe haber un sitio disponible para estacionar. El sistema debe indicar cuál es el sitio disponible asignado para el vehículo.

RF -02 Revisar el estado de ocupación de un piso

Se requiere que el sistema pueda entregar un listado, que permita notificar si cada espacio está libre u ocupado, de estar ocupado debe indicar el tiempo que lleva el vehículo correspondiente.

RF -03 Autorizar salida de un vehículo

Se requiere que el sistema permita autorizar la salida de un vehículo, para lo cual debe notificar el sitio, tiempo de parqueo dado su placa y registrar el valor a cobrar.

Page 5: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Requerimientos Funcionales (2)

RF -04 Registrar el parqueo en sitios dobles

Se requiere registrar el ingreso de 2 vehículos en un sitio de parqueo doble cuando hay alta demanda de sitios de parqueo en horas pico y se agotaron los sitios estándar. En esos casos el primer vehículo queda bloqueado.

Reglas de Negocio:• El vehículo bloqueado se identifica con el número del sitio y la letra “B”.• El vehículo libre se identifica con el número del sitio y la letra “N”.• El sitio de parqueo doble se puede asignar si no está previamente reservado.• Solo se autoriza el parqueo del segundo vehículo si éste planea salir antes que el primer vehículo.

Page 6: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Requerimientos Funcionales (3)

RF -05 Autorizar salida de un vehículo

Se requiere que el sistema permita autorizar la salida de un vehículo, para lo cual debe notificar el sitio, tiempo de parqueo dado su placa y registrar el valor a cobrar.

Reglas de Negocio:• Si es un sitio de parqueo doble y el vehículo bloqueado desea salir (bien sea por que sale antes o porque el segundo vehículo no salió a la hora pactada) el sistema debe notificar al dueño del segundo vehículo, éste tendrá 5 minutos para mover su vehículo de no hacerlo el sistema cobra una multa de $20.000.oo.• Cuando se ha liberado por lo menos el 30% de los sitios estándar y si hay cupos dobles asignados el sistema debe notificar éste hecho.• La tarifa de parqueo se cobra en unidades de 15 minutos. Se cobran las primeras 20 unidades y posteriormente la tarifa es plana.

RF -06 Obtener el sitio de parqueo de un vehículo dada su placa

Se requiere poder consultar el sitio de parqueo de un vehículo dada su placa.

Page 7: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Requerimientos Funcionales (3)

RF -05 Autorizar salida de un vehículo

Se requiere que el sistema permita autorizar la salida de un vehículo, para lo cual debe notificar el sitio, tiempo de parqueo dado su placa y registrar el valor a cobrar.

Reglas de Negocio:• Si es un sitio de parqueo doble y el vehículo bloqueado desea salir (bien sea por que sale antes o porque el segundo vehículo no salió a la hora pactada) el sistema debe notificar al dueño del segundo vehículo, éste tendrá 5 minutos para mover su vehículo de no hacerlo el sistema cobra una multa de $20.000.oo.• Cuando se ha liberado por lo menos el 30% de los sitios estándar y si hay cupos dobles asignados el sistema debe notificar éste hecho.• La tarifa de parqueo se cobra en unidades de 15 minutos. Se cobran las primeras 20 unidades y posteriormente la tarifa es plana.

RF -06 Obtener el sitio de parqueo de un vehículo dada su placa

Se requiere poder consultar el sitio de parqueo de un vehículo dada su placa.

Page 8: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Requerimientos NO Funcionales (1)

• RNF -01 Distribución

El sistema debe enviar notificaciones a diferentes sistemas que pueden estar distribuidos en diferentes ambientes.El sistema debe notificar al dueño del segundo vehículo de un sitio de parqueo doble en caso de que éste esté bloqueando a un primer vehículo.Cuando se ha liberado por lo menos el 30% de los sitios estándar y si hay cupos dobles asignados el sistema debe notificar éste hecho.

RNF -02 Desempeño

Todas las operaciones deben ser realizadas en el menor tiempo posible. La complejidad de las operaciones deben ser O(1).

Page 9: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Requerimientos NO Funcionales (2)

RNF -03 Concurrencia

Diferentes sistemas de monitoreo pueden acceder a la capa que se está diseñando de manera concurrente. Se debe asegurar consistencia en la información.

RNF -04 Persistencia

La información del sistema debe ser persistente. La configuración del parqueadero se hace dependiendo del edificio y se configura atreves de un archivo XML

RNF -04 Modificabilidad

El formato de carga de la configuración del parqueadero puede cambiar.

Page 10: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Modelo del Mundo

Page 11: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Diseño Detallado

Page 12: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Diseño Detallado

class System

EdificioParquederos

- tarifa: double

+ RegistrarParqueoEstandar(String, int) : String+ RegistrarParqueoDoble(Date, double, String, int) : String+ ObtenerOcupacionPiso(int) : List<int,Date>+ RegistrarSalida(String) : double+ ObtenerSitioParqueo(String) : String- CalcularTarifa(Date, Date) : void

«interface»IConfigurador

+ CrearEdificioParqueadero() : EdificioParquederos

FachadaSistema

+ RegistrarParqueoEstandar(String, int) : String+ RegistrarParqueoDoble(Date, double, String, int) : String+ ObtenerOcupacionPiso(int) : List<int,Date>+ RegistrarSalida(String) : double+ ObtenerSitioParqueo(String) : String+ AgregarObservador(IObservador) : void+ RemoverObservador(IObservador) : void

«interface»IServiciosClientes

+ RegistrarParqueoEstandar(String, int) : String+ RegistrarParqueoDoble(Date, double, String, int) : String+ ObtenerOcupacionPiso(int) : List<int,Date>+ RegistrarSalida(String) : double+ ObtenerSitioParqueo(String) : String+ AgregarObservador(IObservador) : void+ RemoverObservador(IObservador) : void

«Abstract»NotificacionObservable

+ AgregarObservador(IObservador) : void+ RemoverObservador(IObservador) : void+ Notificar() : void

+Configurador

1

+edificio 1

+notificadorObservable

1

Patrones de Diseño Utilizados

FachadaProvee una interfaz unificada para tener acceso a unsistema con ella Podemos controlar el punto de acceso a nuestro sistema

Page 13: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Diseño DetalladoPatrones de Diseño Utilizados

Forwarder - Receiver

El sistema puede ofrecer o consumir servicios de sistemas remotos. Necesitamos notificar variedad de sistemas independiente de su tecnología.

class System

NotificadorBloqueos

+ Notificar(Noti ficacion) : void

EdificioParquederos

- tarifa: double

+ RegistrarParqueoEstandar(String, int) : String+ RegistrarParqueoDoble(Date, double, String, int) : String+ ObtenerOcupacionPiso(int) : List<int,Date>+ RegistrarSalida(String) : double+ ObtenerSitioParqueo(String) : String- CalcularTarifa(Date, Date) : void

AgenteTransporte

+ EnviarMensaje(Notificacion) : void

«interface»INotificador

+ Notificar(Notificacion) : void

Notificacion

- medio: String- para: String- mensaje: String

1

+notificadorClientes

1

Page 14: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Diseño DetalladoPatrones de Diseño Utilizados

Observer

Permite a un objeto registrarse dinámicamente como dependiente de otro, de manera que, este otro, lo notifique cada vez que su estado interno cambie.Al no saber quien debe ser notificado lo dejamos las notificaciones en un medio de acceso "publico" para que quien se suscriba sea notificado

class System

EdificioParquederos

- tari fa: double

+ RegistrarParqueoEstandar(String, int) : String+ RegistrarParqueoDoble(Date, double, String, int) : String+ ObtenerOcupacionPiso(int) : List<int,Date>+ RegistrarSalida(String) : double+ ObtenerSitioParqueo(String) : String- CalcularTarifa(Date, Date) : void

FachadaSistema

+ RegistrarParqueoEstandar(String, int) : String+ RegistrarParqueoDoble(Date, double, String, int) : String+ ObtenerOcupacionPiso(int) : List<int,Date>+ RegistrarSalida(String) : double+ ObtenerSitioParqueo(String) : String+ AgregarObservador(IObservador) : void+ RemoverObservador(IObservador) : void

«interface»IObservador

+ Actualizar(object) : void

Lis t«Abstract»

NotificacionObservable

+ AgregarObservador(IObservador) : void+ RemoverObservador(IObservador) : void+ Notificar() : void

NotificacionEstadoOcupacion

- estadoOcupacion: double

+ ObtenerEstado() : double+ AsignarEstado(double) : void

foreach(IObservador o in observadores){ o.Actualizar(estado) }

+edificio 1

+notificadorObservable

1

+notificadorOcupacion

1

+observadores

1

Page 15: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Diseño DetalladoPatrones de Diseño Utilizados

DAO (Data Access Object)

El DAO fue utilizado para separar la complejidad de acceso a los datos. El medio en el cual se persista la información es independiente, y puede cambiar segun sea la necesidad

class System

«interface»IDaoGenerico<IEntidad>

+ Guardar(IEntidad) : void+ ObtenerPorId(IEnt idad) : IEnt idad+ ObtenerTodos() : IEnt idad[]+ Modificar(IEntidad) : IEntidad

«interface»IManejadorDatos

+ PersistirParqueadero(EdificioParquederos) : void+ GuardarParqueo(Vehiculo, int) : String+ ObtenerOcupacion(int) : Piso[]+ RegistrarSalida(String) : void+ ObtenerSitioPorPlaca(String) : String

«interface»IEntidad

+ Id: Object

ManejadorDatos

+ PersistirParqueadero(EdificioParquederos) : void+ GuardarParqueo(Vehiculo, int) : String+ ObtenerOcupacion(int) : Piso[]+ RegistrarSalida(String) : void+ ObtenerSitioPorPlaca(String) : String

1

+manejadorDatos

1

Page 16: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Diseño Detalladoclass System

Pis o

+ ObtenerSitioParqueo(String) : SitioParquedero+ ObtenerOcupacion() : Sitio[]+ RegistrarParqueo(Vehiculo, int) : String

SitioParquedero

- numero: int

+ IsVehiculo(String) : boolean+ RegistrarVehiculo(Vehiculo) : String

SitioParqueoDoble

- letra: String

+ IsVehiculo(String) : boolean+ RegistrarVehiculo(Vehiculo) : String

Vehiculo

- placa: String- telefonoDueño: String- horaLlegada: Date- posibleHoraSalida: Date

«interface»IEntidad

+ Id: Object

+vehiculo 0..1

+sitiosEstandar

1.. *

+vehiculoB 1

+sitiosDobles

*

Page 17: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

Diseño DetalladoPatrones de Diseño Utilizados

Factory

Mantiene la independencia entre la clase quepide la creación y la forma en cómo se crea.

Pueden haber diferentes fabricas concretas cada una se encarga de fabricar el parqueadero pero usando como materia prima diferentes fuentes (xml, BD,....)

class System

EdificioParquederos

- tarifa: double

+ RegistrarParqueoEstandar(String, int) : String+ RegistrarParqueoDoble(Date, double, String, int) : String+ ObtenerOcupacionPiso(int) : List<int,Date>+ RegistrarSalida(String) : double+ ObtenerSitioParqueo(String) : String- CalcularTarifa(Date, Date) : void

«interface»IConfigurador

+ CrearEdificioParqueadero() : EdificioParquederos

XmlConfigurador

+ CrearEdificioParqueadero() : EdificioParquederos

FachadaSistema

+ RegistrarParqueoEstandar(String, int) : String+ RegistrarParqueoDoble(Date, double, String, int) : String+ ObtenerOcupacionPiso(int) : List<int,Date>+ RegistrarSalida(String) : double+ ObtenerSitioParqueo(String) : String+ AgregarObservador(IObservador) : void+ RemoverObservador(IObservador) : void

+Configurador

1

+edificio 1

Page 18: Nathaly González  Andrés Ramos Fernando Bernate Néstor Bohórquez  Kerlyn Hans Mariño Bello

GRACIAS…• Nathaly González• Andrés Ramos• Fernando Bernate• Néstor Bohórquez• Kerlyn Mariño