Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CATÁLOGO DE REQUISITOS
En este punto se incluye una descripción del comportamiento del sistema que se va a
desarrollar.
Requisitos de Datos
Los requisitos de datos, también denominados requisitos de contenidos, requisitos
conceptuales o requisitos de almacenamiento de información responden a la pregunta de qué
información debe almacenar y administrar la aplicación.
Requisitos de Interfaz
Los requisitos de interfaz, también llamados requisitos de interacción de usuario responden a la
pregunta de cómo va a interactuar el usuario con la aplicación.
Requisitos de Rendimiento
Los requisitos de rendimiento especifican los recursos máximos que puede consumir la
aplicación.
Requisitos de Seguridad
Los requisitos de seguridad especifican las medidas necesarias de seguridad de la aplicación.
Rendimiento
Requisitos de Aplicacion
+ REQ.R.001 Tiempo de Respuesta
+ REQ.A.001 Sistema de Código Libre + REQ.R.002 Carga Computacional
+ REQ.A.002 Plataforma Hardware
Requisitos de Interfaz
Requisitos Funcionales
Registrar Mascota
Registrar Usuario «include»
Usuario
Usuario registrado
«include»
Adoptar Mascota
Listar Mascotas
«include»
«include»
Generar Notificaciones
Actualizar Catálogo de
Mascotas
«include»
«include»
Confirmar adopción
C.U.001 AUTENTICACIÓN DE USUARIO
Descripción El sistema requerirá que el usuario ingrese su nombre de usuario y
contraseña. Con estos datos autenticará al usuario y si es válido, la signará
el perfil que le corresponde y mostrará las opciones a las que tiene acceso.
Requisito REQ.D.002 – Información sobre Usuarios
Relacionado REQ.D.004 – Información sobre Administradores
REQ.I.001 – Diferentes Perfiles de Usuario
REQ.I.002 – Inicio de Sesión
REQ.S.002 – Almacenamiento de contraseñas
Precondición
Postcondición Autenticado el usuario se le asigna un perfil
Observaciones En caso de que el usuario no sea valido se le devolverá al formulario de
identificación.
Secuencia de
Paso Acción
Pasos
Este caso de uso se inicia cuando un usuario intenta acceder a la
1 aplicación. Se le mostrará un formulario para introducción de
usuario y contraseña.
2 El usuario introduce sus datos y acepta el formulario
3 El sistema valida el usuario contra la BD y le asigna el perfil.
4 Se le muestran las opciones a las que tiene acceso el usuario.
Secuencia de Paso Excepción
Excepciones Si el usuario no es válido se le devolverá al formulario de
3
identificación.
MODELO DE CLASES
Los diagramas de clase son el pilar básico del modelado con UML, siendo utilizados tanto para
mostrar lo que el sistema puede hacer (análisis), como para mostrar cómo puede ser construido
(diseño). El diagrama de clases de más alto nivel (main class diagram), será lógicamente un
dibujo de los paquetes que componen el sistema. A su vez cada paquete tendrá un main class
diagram que muestra las clases del paquete, ya en la parte del diseño.
Habiendo definido los requisitos que tiene que cumplir el sistema y también el funcionamiento
que debe tener, mediante el empleo de los casos de uso y los diagramas de actividad, toca ahora
realizar el modelo dinámico con el que contará la aplicación. Para eso, emplearemos en este
punto varios diagramas de clases de alto nivel en el que trataremos de abordar toda la
aplicación.
Tipo Package
Nombre ec.edu.utpl.modelo
Descripción Contendrá las clases que representan el mapeo entre la lógica de la
aplicación y una tabla que la represente en la base de datos. Estas clases
también realizarán todas las operaciones contra la base de datos para
almacenar, modificar, eliminar y obtener datos de esa tabla.
Tipo Package
Nombre ec.edu.utpl.controlador
Descripción Estas clases responden a eventos, usualmente acciones del usuario e
invoca cambios en el modelo y probablemente en la vista.
Contendrá las acciones, así como los beans que representan toda la
información que se muestra en las correspondientes páginas Web.
Tipo Package
Nombre ec.edu.utpl.util
Descripción Contendrá las funciones necesarias en las que se apoyan las acciones,
tales como obtención de variables de configuración, envío de correos,
cifrado de claves, importación y exportación de reportes, generación de
listas, envío de mensaje y/o errores, validación de datos
MODELO DE DATOS
Los puntos anteriores fueron dedicados a la definición de los distintos requerimientos de la
aplicación, así como describir, ya sea mediante distintas tablas como con diferentes diagramas,
el funcionamiento de la aplicación y los elementos que necesita esta para el correcto
cumplimiento de los requerimientos definidos.
En este punto, sin embargo, se pretende definir el modelo de datos que necesitará la aplicación
para almacenar toda la información con la que va a trabajar.
Para ello vamos a emplear un diagrama entidad relación. Los diagramas E-R son un lenguaje
gráfico para describir conceptos. Informalmente, son simples dibujos o gráficos que describen
la información que trata un sistema de información y el software que lo automatiza.
TPERSON
TUSUARIOS
TPERSONA
«column»
«column»
«column» *FK cpersona: INT
*PK cusuario: VARCHAR(12)
*PK cpersona: INT * tipodireccion: VARC
* password: VARCHAR(18)
* identificacion: VARCHAR(50) * direccion: VARCHA
*FK cpersona: INT
+IPK_TPERSONA * nombres: VARCHAR(50) * cpais: VARCHAR(4)
* fcreacion: DATE +IPK_TPERSONA
(cpersona = cpersona) * apeliidos: VARCHAR(50) * cprovincia: VARCH
activo: VARCHAR(1) (cpersona = cpersona)
* fnacimiento: DATE *FK cciudad: VARCHAR
0..* «FK» 1 * sexo: CHAR(1) «FK» referencia: VARCH
«FK» 1 0..*
+FK_TUSUPER telefono: VARCHAR(12)
+ FK_TUSUPER(INT)
celular: VARCHAR(12) +FK_TPERDIR «FK»
«index» fingreso: VARCHAR(50) + FK_TPERCPER(INT)
+ IDX_TUSUCPERSONA(INT) comentarios: VARCHAR(500) + FK_TPERDIR(INT)
«PK» + FK_TPERSONADIR
+ PK_TUSUARIOS(VARCHAR) «PK» «index»
+ IPK_TPERSONA(INT) +IPK_TPERSONA
+ IDX_TPERSCPER(IN
+PK_TUSUARIOS 1
1 + IXFK_TPERSONAD
+IPK_TPERSONA 1
(cusuario = cusuario)
(cpersona = cpersona)
«FK»
«FK»
(cpersona = cpersona)
«FK»
+FK_TUSUROL 0..*
+FK_TMASPER 0..*
TROLUSUARIO
TMASCOTA TADOP
«column» +FK_TADOPPER
«column» «column»
FK crol: INTEGER
*PK idmascota: INT
FK cusuario: VARCHAR(12) 0..* *PK idadopcion: IN
* nombre: VARCHAR(50)
*FK idmascota: IN
* tipomascota: VARCHAR(50) * cpersona_ado
«FK»
* raza: VARCHAR(50) * fadopción: DA
+ FK_TROLUSU(INTEGER)
* talla: VARCHAR(10)
+ FK_TUSUROL(VARCHAR) fentrega: DAT
* edad: INT (idmascota = idmascota) estado: VARC
«index» observaciones: VARCHAR(500)
+ IDX_TROLUSUROL(INTEGER) * comentarios:
historialmedico: VARCHAR(500) FK cpersona: INT
+ IDX_TROLUSUUSU(VARCHAR) fingreso: DATE 1 «FK» 0..*
estadoadopcion: VARCHAR(3) +PK_TMASCOTA +FK_TADOPMASC «FK»
+FK_TROLUSU 0..*
*FK cpersona: INT + FK_TADOPM
+ FK_TADOPPE
«FK»
+ FK_TMASPER(INT) «index»
(crol = crol)
+ IDX_TADOPE
«FK» «index» + IDX_TADOPM
+ IDX_TMASCPERS(INT)
«PK»
«PK» + PK_TADOPCIO
+ PK_TMASCOTA(INT)
+PK_TROLES 1
TROLES
«column» TAUD
*PK crol: INT
descripcion: VARCHAR(50) «column»
TSESIONES
administrador: CHAR(1) *PK idauditoria: I
freal: DATET
«column»
«PK» tipo: VARCHA
*PK idsession: INT
+ PK_TROLES(INT) +PK_TSESIONES accionusuari
cusuario: VARCHAR(12)
detalleaccion
crol: INT (idsession = idsession)
resultado: VA
finicio_session: DATE 1 «FK» 0..* FK idsession: IN
ffin_session: DATE
dispositivo: VARCHAR(100) +FK_TAUDITSESION
«FK»
+ FK_TAUDITS
«PK»
+ PK_TSESIONES(INT) «index»
+ IDX_TAUDIS
«PK»
+ PK_TAUDITO
TPERSONADIRECCIONES
TCIUDADES
«column»
*FK cpersona: INT
* tipodireccion: VARCHAR(3) «column»
* direccion: VARCHAR(100) *PK cciudad: VARCHAR(3)
+FK_TPERSONADIRECCIONES nombre: VARCHAR(50)
* cpais: VARCHAR(4)
+IPK_TPERSONA FK cprovincia: VARCHAR(3)
* cprovincia: VARCHAR(3)
(cpersona = cpersona) (cciudad = cciudad) cpais: VARCHAR(4)
*FK cciudad: VARCHAR(3)
«FK» 0..* referencia: VARCHAR(500) 0..* «FK» 1
«FK»
+PK_TCIUDADES + FK_TCIUDPROV(VARCHAR)
+FK_TPERDIR «FK»
+ FK_TPERCPER(INT) «index»
+ FK_TPERDIR(INT) + IDX_TCIUDADES(VARCHAR)
+ FK_TPERSONADIRECCIONES(VARCHAR) «PK»
«index» + PK_TCIUDADES(VARCHAR)
IPK_TPERSONA
+ IDX_TPERSCPER(INT)
+ IXFK_TPERSONADIRECCIONES_TCIUDADES(VARCHAR) +FK_TCIUDPROV 0..*
(cprovincia = cprovincia)
«FK»
(cpersona = cpersona)
«FK»
+PK_TPROVINCIAS 1
TADOPCIONES TPROVINCIAS
+FK_TADOPPER
«column» «column»
0..* *PK idadopcion: INT *PK cprovincia: VARCHAR(3)
*FK idmascota: INT nombre: VARCHAR(50)
* cpersona_adopcion: INT FK cpais: VARCHAR(4)
* fadopción: DATE
fentrega: DATE «FK»
(idmascota = idmascota) estado: VARCHAR(50) + FK_TPAISES(VARCHAR)
* comentarios: VARCHAR(500) «index»
«FK» FK cpersona: INT + IDX_TPROVINCIAS(VARCHAR)
0..*
PK_TMASCOTA +FK_TADOPMASC «PK»
«FK»
+ PK_TPROVINCIAS(VARCHAR)
+ FK_TADOPMASC(INT)
+ FK_TADOPPER(INT) +FK_TPAISES 0..*
«index»
+ IDX_TADOPERSONA(INT)
(cpais = cpais)
+ IDX_TADOPMASC(INT)
«FK»
«PK»
+ PK_TADOPCIONES(INT)
+PK_TPAISES 1
TPAISES
TAUDITORIA «column»
*PK cpais: VARCHAR(4)
nombre: VARCHAR(50)
«column»
*PK idauditoria: INT
«PK»
freal: DATETIME(4)
+ PK_TPAISES(VARCHAR)
tipo: VARCHAR(12)
PK_TSESIONES accionusuario: VARCHAR(20)
(idsession = idsession) detalleaccion: VARCHAR(100)
resultado: VARCHAR(50)
«FK» 0..* FK idsession: INT
+FK_TAUDITSESION
«FK»
+ FK_TAUDITSESION(INT)
«index»
+ IDX_TAUDISESS(INT)
«PK»
+ PK_TAUDITORIA(INT)
Nombre TUSUARIOS
Descripción Entidad que sirve para mantener la información de cada uno de los
usuarios de la aplicación.
Nombre TPERSONA
Descripción Entidad que sirve para mantener la información de las personas de la
aplicación.
Nombre TMASCOTA
Descripción Entidad que sirve para mantener la información de cada una de las
mascotas registradas en el sistema.
Nombre TADOPCIONES
Descripción Entidad que sirve para mantener la información de las operaciones de
adopción de mascotas registradas en el sistema.
Nombre TPERSONADIRECCIONES
Descripción Entidad que sirve para mantener la información de las direcciones que
tiene una persona.
Nombre TROLUSUARIO
Descripción Entidad que sirve para mantener la información de la relación de roles y
sus respectivos usuarios.
Nombre TROLES
Descripción Entidad que sirve para mantener la información de los roles del sistema.
Nombre TSESSIONES
Descripción Entidad que sirve para mantener la información de las sesiones registradas
en el sistema.
Nombre TAUDITORIA
Descripción Entidad que sirve para mantener la información de auditoria para las
acciones de un usuario en una sesión.
Nombre TCIUDADES
Descripción Entidad que sirve para mantener la información de ciudades.
Nombre TPROVINCIAS
Descripción Entidad que sirve para mantener la información de provincias.
Nombre TPAISES
Descripción Entidad que sirve para mantener la información de países.
1. DISEÑO
DEFINICIÓN DE LA ARQUITECTURA
Centrándonos más en el propio sistema, en este punto trataremos de dividir el sistema en las
diferentes capas que pueden distinguirse. Como ya se ha comentado, el sistema seguirá el
patrón MVC. Por consiguiente, aquí estamos estableciendo un mínimo de 3 capas.
Capa 1: Será el diseño estético de la aplicación. En otras palabras, es la parte gráfica, la parte
que el usuario del sistema verá en su navegador web. Esta parte estará formada por las
páginas JSF de la aplicación.
Capa 2: Será el controlador. Todas las peticiones al sistema y respuestas del sistema pasarán
por este elemento. Él será el encargado de redirigir los diferentes mensajes entre las distintas
páginas JSF y Servlets.
HTTP/JSON
HTML XML
Present Lawyer (Web Interface)
CSS BOOTSTRAP
DataBase Interface
TCP/IP
OS: LINUX
MySQL DATABASE
DISEÑO DE CLASES
▪ Paquete ec.edu.utpl.modelo.gestion
Borrar
Insertar Obtener
class System
Mascota
Adopcion
- idmascota: int Direccion Ciudad
- nombre: String - idAdopcion: int
- tipomascota: String - mascota: Mascota - referencia: String - cciudad: String
- raza: String - personaAdopcion: Persona - direccion: String - nombre: String
- talla: String - persona: Persona - tipodireccion: String - provincia: Provincia
- edad: int - fadopcion: Date - ciudad: Ciudad
- observaciones: String - estado: String + setCciudad(String): void
+ setReferencia(String): void + getCciudad(): String
- historial: String - comentario: String
+ getReferencia(): String + setNombre(String): void
- fingreso: Date
+ setIdadopcion(int): void + setDireccion(String): void + getNombre(): String
- estadoAdopcion: String
+ getIdadopcion(): int + getDireccion(): String + setProvincia(Provincia): void
+ setIdmascota(int): void + setMascota(Mascota): void + setTipodireccion(String): void + getProvincia(): Provincia
+ getIdmascota(): int + getMascota(): Mascota + getTipodireccion(): String
+ setNombre(String): void + setPersonaadopcion(Persona): void + setCiudad(Ciudad): void
+ getNombre(): String + getPersonaadopcion(): Persona + getCiudad(): Ciudad
+ setTipomascota(String): void + setPersona(Persona): void
+ getTipomascota(): String + getPersona(): Persona
+ setRaza(String): void + setFadopcion(Date): void
+ getRaza(): String + getFadopcion(): Date
Provincia
+ setTalla(String): void + setEstado(String): void
+ getTalla(): String + getEstado(): String - cprovincia: String
+ setEdad(int): void + setComentario(String): void - nombre: String
+ getEdad(): int + getComentario(): String - pais: Pais
+ setObservaciones(String): void
Persona + setCprovincia(String): void
+ getObservaciones(): String
+ setHistorial(String): void + getCprovincia(): String
- cpersona: int
+ getHistorial(): String - identificacion: String + setNombre(String): void
+ setFingreso(Date): void + getNombre(): String
- nombres: String
+ getFingreso(): Date + setPais(Pais): void
Usuario - apellidos: String
+ setEstadoadopcion(String): void + getPais(): Pais
- fnacimiento: Date
+ getEstadoadopcion(): String - cusuario: int - sexo: String
- password: String - telefono: String
- fcreacion: Date - celular: String
- activo: String - fingreso: Date
- rol: Rol - comentarios: String Pais
class System
NavegacionAction
CreacionPersona
- logger: Logger = Logger.getLogger();
- logger: Logger = Logger.getLogger();
NotificarAdopcion + execute(ActionMapping, ActionForm): ActionFoward
+ execute(ActionMapping, ActionForm): ActionFoward
- logger: Logger = Logger.getLogger();
CreacionUsuario
GestionUsuario
CreacionMascota
Propiedades Listas