IP-EPD-09-ANEXO II-Ejemplo DSI OO
IP-EPD-09-ANEXO II-Ejemplo DSI OO
IP-EPD-09-ANEXO II-Ejemplo DSI OO
Edición: 01
Fecha: 01 de Abril de 2013
REGISTRO DE CAMBIOS
VERSIÓN DESCRIPCIÓN DEL CAMBIO FECHA DEL CAMBIO
V1 Versión Inicial 01 de Abril de 2013
Si es posible, añadir una descripción de la configuración global de todos los elementos técnicos
que participan en el sistema.
A continuación, en la Figura 1.1, se presenta la arquitectura técnica del sistema del cajero
automático.
Como puede verse, se trata de un sistema empotrado en un cajero automático real, que dispone
de dos interfaces de usuario análogos. Por un lado, haciendo uso de la interfaz táctil del cajero y
por otro lado, haciendo uso del teclado que el cajero automático lleva incorporado.
Dicho cajero dispone de un sistema operativo Solaris 10, que tiene instalada una máquina virtual
de java, cuya versión es la 1.5.0_09.
La aplicación que se ejecuta en el cajero automático, lo hace sobre un servidor Web, Oracle
WebLogic.
El cajero automático dispone de 8 núcleos, cada uno con una capacidad de cálculo de NNNN
Ghz. Esos núcleos se reparten por igual, asignándole 4 a al Servidor Web y 4 al Servidor de
BBDD.
A toda la infraestructura interna del cajero, se le suman dos componentes, uno que gestiona los
correos electrónicos y otro que opera las peticiones contra el ordenador central del banco, según
puede verse en la Figura 1.1, y según se expuso en el documento de análisis ya entregado.
Se aplicará una arquitectura en tres capas, que serán la capa de Presentación, la capa de
Negocio y la Capa de Datos. Esta arquitectura y las tecnologías asociadas quedan
representadas en la Figura 1.2.
Figura 1.2: Arquitectura en tres Capas del Sistema del Cajero Automático
Definir los estándares, normas y recomendaciones técnicas que aplicarán en el desarrollo del
sistema.”
A la hora de desarrollar los interfaces de diseño, deben tenerse en cuenta las limitaciones de uso
de la interfaz de teclado que ofrece el cajero automático. Sólo podrán diseñarse pantallas que
respeten este interfaz, cuyas características quedan expuestas en el documento técnico “TEC-
XXXX DDDDDDDDDDDD” suministrado por el proveedor del hardware del cajero automático.
En el desarrollo del sistema del cajero automático, debe aplicarse el patrón arquitectónico de
diseño Modelo-Vista-Controlador. Y debe aplicarse un patrón DAO, para la capa de acceso a
datos.
El patrón arquitectónico MVC, podrá aplicarse haciendo uso del framework JSF. Y el patrón
DAO, estará soportado por Spring JPA y Spring ORM.
SUB01 - Operaciones del Cliente Cajero Automático: Operaciones realizadas por los clientes
del banco en el cajero.
SUB02 - Operaciones Mantenimiento: Operaciones realizadas por el operador de cajero,
empleado del banco.
Por otro lado, y como ya se ha visto, se propone aplicar un patrón arquitectónico MVC, lo cual
supone una partición del sistema en tres grupos de elementos: Los elementos que forman parte
del Modelo, los que forman parte de la Vista, y los que forman parte del Controlador.
De este modo, una funcionalidad del cajero automático tendrá elementos en la Vista, en el
Modelo y en el Controlador.
SUB 04 - Módulo Peticiones: Interactúa con el ordenador central del banco, mediando con él las
peticiones realizadas por SUB01 y por SUB02, que serán realizadas desde el Controlador.
Por tanto, se identifican cuatro subsistemas de diseño, dos específicos y dos de soporte:
Y además, se deben tener en cuenta, los paquetes de soporte, que implementan el patrón
Modelo-Vista-Controlador.
Comentarios --
Objetivos Todos.
asociados
Descripción El sistema deberá comunicarse con el ordenador central del banco
utilizando un cifrado, del tipo CXXXXXX, de la misma forma que ya
operan otras comunicaciones dentro del propio banco, y para que
sean compatibles.
Comentarios --
Objetivos Todos.
asociados
Descripción El sistema deberá prestar un servicio de alta disponibilidad, con
sistema de reactivación autónoma, en caso de que exista algún tipo
de fallo en la operativa del mismo
Comentarios --
Recomendación: “Definir los módulos que forman parte de los subsistemas de soporte.
Puede tratarse de frameworks de desarrollo”
Figura 2.1: Diagrama de Clases que representa los mecanismos genéricos de diseño
Con esta arquitectura de clases, se aplican el patrón arquitectónico MVC, mediante JSF,
apoyando el diseño de la página xhtml con un backingbean de apoyo, que actúa como
controlador. El modelo al que tiene acceso el patrón MVC se localiza en la interfaz Servicio,
implementada por la clase ServicioSpringImpl. El Servicio, además de proporcionar acceso al
modelo, opera en la capa de negocio, pues contiene las operaciones de negocio.
Diseño del Sistema de Información Página 12 de 37
CAJEROS AUTOMÁTICOS
GRUPO Profesores
También, se aplica el patrón DAO, en la capa de datos. Se dispone de una interfaz DAO, y de su
implementación, objetos típicos en este patrón, y la clase Entity representa a la entidad básica
que se corresponderá con un registro de la base de datos, y que además es el TransferObject
que se utiliza en el patrón DAO.
Por tanto, por cada objeto del Modelo de Dominio (nombre es el nombre del objeto), deben
implementarse:
Y por cada pantalla de la interfaz del sistema, deben implementarse dos clases (teniendo en
cuenta que la página se denomina pagina):
Identificar las tablas de BBDD que se van a utilizar en el sistema, y para describir cada tabla
proporcionando nombre, columnas, tipos de datos de las columnas, clave primaria, claves
ajenas, índices y restricciones. Puede utilizarse la siguiente tabla formal:
Nombre Nombre
Descripción descripción
Atributos
Campo Tipo Obligatorio Descripción
nombre1 tipo S/N descripción
… … … …
nombren tipo S/N descripción
Clave primaria
Nombre Columnas Secuencia
nombre de la clave primaria Lista de campos que componen la Secuencia de base de datos que
clave primaria genera la clave, si Aplica.
Claves ajenas
Nombre Destino Columnas
nombre de la Clave Ajena Nombre de la tabla a la que hace Campo o Campos que componen la clave
1 referencia ajena
… … …
nombre de la Clave Ajena Nombre de la tabla a la que hace Campo o Campos que componen la clave
N referencia ajena
Claves únicas
Nombre Columnas
nombre Clave única 1 Campo o Campos que componen la clave única
… …
nombre Clave única N Campo o Campos que componen la clave única
Restricciones
Nombre Columnas Restricción
Nombre de la restricción nombre de los campos involucrados Descripción, expresión lógica o
pseudocódigo que define la restricción
… … …
Nombre de la restricción nombre de los campos involucrados Descripción, expresión lógica o
pseudocódigo que define la restricción
Nombre CLIENTES
Descripción Tabla de clientes del banco
Atributos
Campo Tipo Obligatorio Descripción
ID_CLIENTE NUMBER(12) S Código interno del cliente
C_NIF VARCHAR2(9) S NIF del cliente
T_NOMBRE VARCHAR2(40) S Nombre del cliente
T_APELLIDOS VARCHAR2(100) S Apellidos del Cliente
Clave primaria
Nombre Columnas Secuencia
CLIENTE_PK ID_CLIENTE SEQ_CLIENTE
…CUENTAS…
...TARJETAS…
...TIPO_TRASACCION…
Nombre TRANSACCIONES
Descripción Tabla de transacciones del cajero automático
Atributos
Campo Tipo Obligatorio Descripción
ID_TRANSACCION NUMBER(12) S Código interno de la transacción
F_TRANSACCIÓN DATE S Fecha de la transacción
N_IMPORTE NUMBER(9,2) S Importe de la transacción
ID_TARJETA NUMBER(12) S Clave ajena de la tarjeta que opera en la
transacción
ID_CUENTA_DESTINO NUMBER(12) N Clave ajena de la cuenta de destino de
una transferencia. No siempre se
rellenará este campo, sólo si el tipo de
transacción es transferencia
ID_TIPOTRANSACCION NUMBER(12) S Clave ajena del tipo de transacción
Clave primaria
Nombre Columnas Secuencia
TRANSACCION_PK ID_TRANSACCION SEQ_TRANSACCION
Claves ajenas
Nombre Destino Columnas
TRANS_TARJETA_FK TARJETAS.ID_TARJETA ID_TARJETA
TRANS_CUENTA_DESTINO_FK CUENTAS.ID_CUENTA ID_CUENTA_DESTINO
TRANS_TIPOTRANS_FK TIPO_TRANSACCION. ID_TIPOTRANSACCION
ID_TIPOTRANSACCION
Claves únicas
Nombre Columnas
-- --
Restricciones
Nombre Columnas Restricción
CONST_CCC_DESTINO ID_CUENTA_DESTINO //El código 23 corresponde con el tipo de
transacción Transferencia
(ID_CUENTA_DESTINO IS NOT NULL
AND ID_TIPOTRANSACCION = 23) OR
(ID_CUENTA_DESTINO IS NULL AND
ID_TIPOTRANSACCION <>23)
…RESTO DE TABLAS…
Recomendación: “Determinar como la aplicación accede a los datos. Será necesario definir las
cadenas de conexión, los DB link a otras BBDD, vistas materializadas, vistas materializadas
hacia otras BBDD.
Y pueden incorporarse diagramas de despliegue, que clarifiquen cuales son los accesos a los
datos.”
En el sistema del cajero automático, el acceso a los datos se produce siempre desde las clases
del modelo, del patrón MVC, a través del framework de Spring, y haciendo uso de los módulos
JPA y ORM, que ocupan la capa de datos en la arquitectura propuesta en el apartado 1.1.
Después de revisar los casos de uso identificados en la fase de análisis, se concluye que la
distribución de la funcionalidad en el sistema del cajero automático sigue siendo la misma, y por
tanto, el diagrama de casos de uso correspondiente al subsistema SUB01 - Operaciones del
Cliente Cajero Automático, mantiene los mismos casos de uso, y la misma interacción entre
actores y casos de uso y entre casos de uso, que fue descrita en el análisis, y que ahora se
representa en la Figura 4.1.
Los casos de uso CU06, CU07, CU08 y CU09 no pertenecen propiamente a este subsistema,
pero son necesarios para su realización. El CU08 pertenece al subsistema SUB03 – Módulo de
Diseño del Sistema de Información Página 18 de 37
CAJEROS AUTOMÁTICOS
GRUPO Profesores
Correo, identificado como subsistema de soporte en el apartado 1.3 de este documento. Los
CU06, CU07 y CU09 pertenecen al subsistema SUB04 – Módulo de Peticiones, que también fue
identificado como subsistema de soporte.
Recomendación: “Incorporar los casos de uso reales, con los diagramas de robustez
correspondientes”
A continuación se incorporan los casos de uso reales, donde se detalla la interacción con el
sistema y la funcionalidad soportada, y se han reescrito en forma detallada. Los casos de uso
que se detallan son los siguientes:
Para cada uno de ellos, se añade el diagrama de robustez que apoya la consistencia del mismo,
y que se ha utilizado para desarrollar los diagramas de secuencia de diseño del próximo
apartado.
Descripción El sistema debe permitir a los clientes autenticarse en el sistema si la tarjeta pertenece a
la red de cajeros y si la clave introducida es la correcta para dicha tarjeta.
Precondición La interfaz del cajero debe ser la identificada como IU0001 – Espera Cliente
PASO ACCIÓN
Postcondición La tarjeta se valida junto con la clave correctamente y el cliente puede comenzar a operar
en el cajero automático.
Observaciones --
Recomendación: “Describir cómo interactúan las clases identificadas en los casos de uso del
subsistema que se está modelando, utilizando los diagramas de interacción, preferentemente
diagramas de secuencia, aunque pueden ser diagramas de colaboración.”
A continuación, se incorpora un diagrama de interacción por cada caso de uso del sistema del
cajero automático. Los que contemplen una interacción excesivamente compleja, serán divididos
en varios diagramas, con el objetivo de aclarar el diseño.
Debe recordarse que los Boundary IU-NNNN corresponden con páginas xhtml, según se ha
explicado en el apartado 2.2. Pero también, se ha explicado que cada página xhtml tiene
asignado una clase backbean, que hace las veces de controlador MVC, y por tanto, este
backbean controla la navegación. Por tanto, los mensajes 4, 8 y resto, denominados
“Navega” serán implementados por los backbean correspondientes. En este sentido, debe
tenerse en cuenta que estos backbean serán:
Figura 4.3: Diagrama de Secuencia para el Caso de Uso CU01 – Validar Tarjeta y Clave
Recomendación: “Diagrama de clases de diseño, con las clases que formen parte del
subsistema, con las clases ya refinadas. Identificar clases abstractas, herencias, asociaciones,
etc.”
Recomendación: “Para cada clase del subsistema, definir atributos (nombre, tipo, restricciones,
etc.), definir las operaciones (nombre, parámetros y visibilidad), y para las clases más complejas,
definir un diagrama de transición de estados, para comprender la funcionalidad soportada por
dichas clases.
Operacion1
OperacionN
6.1.1 Navegación
Recomendación: “Realizar un diseño técnico para cada ventana del sistema, concretando todos
los detalles necesarios para su construcción.
Puede utilizarse una tabla formal parecida a la utilizada en análisis, en la que habría que ampliar
los detalles, incorporando, parámetros de entrada y de salida, eventos generales de la pantalla o
de los campos, validaciones que se realizan, etc.
IU-NNNN: Nombre
Descripción Descripción breve de las funciones del módulo
Tipo Editable/
Nombre Oblig. Descripción
Datos Consulta
Campos Campo Descripción del campo
Nombre Acción
Descripción de la acción que se lleva a cabo cuando
Botón
se pulsa el botón
Botones/Enlaces
Descripción de la acción que se lleva a cabo cuando
Enlace
se pulsa el enlace
Recomendación: “Realizar un diseño técnico para cada informe del sistema, concretando todos
los detalles necesarios para su construcción.
...
Puede verse como los equipos de los desarrolladores dispondrán de un cliente Oracle, que
permitirá conectar con la BBDD, estando permitido el uso de la herramienta de acceso a la
BBDD Toad 7.5. También estos equipos deben estar provistos de un servidor Oracle Weblogic,
para poder desarrollar los distintos componentes del sistema, y probarlos en los propios equipos.
También cada equipo de desarrollador, dispondrá de una instalación del cliente de maven, tal y
como puede verse en la Figura 7.1. El IDE utilizado en este proyecto es el Eclipse Helios 3.7.2
SR-2. Además, el Eclipse contiene los dos plugins mostrados en el esquema anterior, y otros
que se enumeran a continuación:
Diseño del Sistema de Información Página 28 de 37
CAJEROS AUTOMÁTICOS
GRUPO Profesores
Oracle Enterprise Pack for Eclipse 12.1.1.01
JBoss Tools RichFaces 3.3.1.v2
JAutodoc 1.10.0
WebLogic Server 10.3.6
Ant 1.7.1
Oracle DataModeler 3.1.4 Patch
…RESTO DE PLUGINS…
Por cada paquete, debe especificarse los componentes que lo forman, y podría añadirse el
diagrama de componentes asociado.”
A continuación se presentan los paquetes de diseño, sus relaciones, y los componentes que lo
forman. Debe tenerse en cuenta, que tanto SUB-01 como SUB-02 corresponden a agrupaciones
funcionales con las que el usuario puede interactuar. Sin embargo, los subsistemas SUB03 y
SUB04 son subsistemas de soporte, y realizan tareas específicas de conexión con sistemas
externos al cajero. Estos paquetes, sus relaciones y sus componentes se presentan en la Figura
7.2.
Figura 7.2: Diagrama de Paquetes de Diseño con sus componentes software asociados
JSF 2.0: JSF: es una tecnología y framework para aplicaciones Java basadas en web
que simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE.
RichFaces: Extensión de JSF, …
Facelets: Extensión de JSF, que pretende mejorar algunos aspectos.
SpringFrameWork: Framework de desarrollo Spring…..
…. RESTO DE COMPONENTES DEL DISEÑO DEL SISTEMA...
--NO APLICA--
No será necesario porque tengo descritos las características de navegación en los interfaces,
tengo descritos los mecanismos genéricos de diseño, donde diré qué ficheros deben
desarrollarse, tengo descritas las clases, sus interfaces, herencias, atributos y métodos, etc.
Recomendación: “Describir como generar los scripts de BBDD, a partir del modelo físico de
datos.”
El modelo de datos físico descrito en el apartado 3.1 de este documento está diseñado en la
herramienta CASE HHHHHHHHHH, que es capaz de generar los scripts de BBDD directamente
a partir del propio modelo. A cada tabla de la base de datos debe añadírsele 6 campos, que
sirven de campos de auditoría. Estos campos tienen la siguiente descripción:
Los campos ID_CLICREATE y ID_OPCREATE son excluyentes, de tal forma que registros que
tengan relleno ID_CLICREATE, no tendrán relleno ID_OPCREATE, y al contrario pasa lo
mismo. La misma regla aplica a los campos de auditoría de actualización ID_CLIUPDATE y
ID_OPUPDATE.
Aunque los campos ID de auditoría tienen relación directa con las tablas CLIENTES y
OPERADORES, no se establece la restricción correspondiente a la clave ajena, para facilitar las
operaciones de mantenimiento contempladas en el subsistema SUB 04 - Módulo Peticiones.
Donde NOMBRETABLA debe sustituirse por el nombre de la tabla a la que esté asociada el
trigger que se está creando.
No es necesario realizar una migración, puesto que se trata de un cajero automático nuevo, que
no tiene datos de otros sistemas anteriores. Por otra parte, sí será necesario realizar una carga
inicial de datos, que configure las tablas auxiliares del sistema, antes de comenzar a utilizarlo.
Esta carga inicial es una de las operaciones de mantenimiento que están soportadas por el
subsistema SUB02 - Operaciones Mantenimiento. En concreto, esta actualización inicial, es
necesaria realizarla periódicamente, y podrá realizarse haciendo uso de la funcionalidad que
soporta el caso de uso CU-12: Sincroniza con Ordenador Central del Banco.
Por tanto, no será necesario, tener en cuenta ninguna infraestructura adicional para la puesta en
marcha del sistema. Aunque como para el desarrollo, las pruebas unitarias y las pruebas de
integración son necesarios los datos de las tablas auxiliares, será necesario desarrollar una serie
de scripts de BBDD que carguen dichas tablas, en el orden correcto, y con los datos actuales.
En el siguiente apartado, se muestra el diseño del procedimiento de carga inicial, para estos
scripts, que sólo deben usarse durante la fase de construcción del sistema.
Recomendación: “Definir el proceso de migración y/o carga inicial, los procedimientos de carga
inicial y/o migración que participan en el proceso, y el orden o jerarquía de lanzamiento. Para lo
cual se utilizará un diagrama de actividad.
También debe realizarse el diseño detallado de cada procedimiento que participa en la migración
o carga inicial. Para esta definición detallada, también pueden utilizarse diagramas de actividad.”
Se describe el proceso de la carga inicial de las tablas auxiliares, que sólo debe ser utilizado
durante la fase de desarrollo. El proceso utilizado y el orden que sigue el lanzamiento de los
scripts de carga, es muy similar a los pasos que deben seguirse para la construcción del CU-12:
Sincroniza con Ordenador Central del Banco, ya descrito anteriormente.
Recomendación: “Describir el entorno para llevar a cabo las pruebas del sistema, incluyendo
restricciones operativas. Si se utilizan herramientas concretas de pruebas, especificarlas en este
apartado. El origen de los datos de pruebas, y cualquier otra cuestión relevante del entorno de
pruebas.
En primer lugar, las pruebas unitarias serán llevadas a cabo por los desarrolladores, en sus
propios equipos, haciendo uso de JUnit, por lo que, no será necesario ningún entorno adicional
al descrito en el apartado 7.1.
Las pruebas de integración serán llevadas a cabo tanto por los desarrolladores como por un
equipo del banco, destinado a tal fin. No será necesario utilizar un cajero automático real, puesto
que la validación inicial será simulada. Como ya se expuso en el entregable de análisis, estas
pruebas serán llevadas a cabo en un entorno replicado, con las características descritas en el
apartado 1.2 de aquel documento, y que se exponen con más detalle en el apartado 1.1 de este
documento. Como ya se ha expuesto, no se utilizará el hardware del cajero automático, y por
otra parte, se dispondrá de una réplica del ordenador central del banco, para realizar pruebas, a
la vez que es posible utilizar el mismo servicio de correo electrónico externo.
Por último, para llevar a cabo las pruebas de implantación y de aceptación se dispondrá de una
interfaz física del cajero automático, donde las pruebas serán realizadas de forma muy cercana a
la realidad. Por tanto, será necesario una réplica de un entorno tecnológico como el descrito en
el apartado 1.1 de este documento y además será necesario un cajero automático como los que
se implantarán en las distintas sucursales, que en este caso es wincor-nixdorf - CINEO C2560 -
Full function ATMs (http://www.wincor-nixdorf.com).
Para llevar a cabo las distintas pruebas, será necesario realizar una extracción de un juego de
datos, que no sea real, para que el equipo de desarrollo y el resto de personas que tengan
acceso a dicha réplica no puedan obtener datos reales de los clientes del banco. Y en el caso de
las cuentas de correo, se han creado unas genéricas a tal efecto.
Presentar los criterios que son necesarios cubrir para que se acepte cada prueba.”
Pruebas Unitarias: Serán llevadas a cabo por los desarrolladores, con JUnit, sobre los
componentes: ServiciosDAO, Beans de apoyo a la interfaz, Controladores…..
En ese sentido debería indicarse qué manuales son necesarios: de usuario, de explotación, etc.,
y las características de dichos documentos, como el tipo de formato, la estructura y el contenido,
control de versiones, a quien van dirigidos, etc.”
Los requisitos de implantación relacionados con la documentación que debe ser generada son
los que se muestran a continuación.
1. TTTTTTTT
1.1 TTTTTTT
….
Comentarios --