Sunteți pe pagina 1din 19

1. Mecanismos de Diseño.

Uno de los aspectos que toda aplicación debe considerar es la seguridad,


entendiendo como tal la necesidad de saber que el usuario es quien dice ser
(autenticación), permitirle acceso sólo a aquellos recursos necesarios
(autorización) y garantizar la confidencialidad de la información

1.1 Mecanismos de Diseño Identificados

 Autenticación:

Se refiere a la tarea de verificar la identidad de una persona o software que se


conecte a una BD; es decir consiste en una contraseña secreta que se debe
presentar cuando se abra una conexión del sistema a la BD. La autenticación
basada en palabras clave es ampliamente usada por los sistemas operativos y
bases de datos.

En el caso de la solución propuesta se realizará un módulo de autenticación para


llevar el control de los usuarios que acceden al sistema, así como la asignación de
los rolos definidos para los permisos que tendrán en cuanto a la realización de los
procesos de Gastos. Contará además de una capa para el acceso a los datos
donde estará presente en Mecanismo de Diseño Autenticación, el cual se
encargara de validar que la petición realizada por el usuarios sea válida, es decir
que los componentes clientes que están solicitando un servicio a los componentes
servidores, son usuarios registrados del sistema, o al menos son reconocidos por
este. En la aplicación se encontraran presente los roles siguientes: Especialista
en Gestión Económica y Administrador del Sistema.

 Autorización: la autorización puede verse en dos niveles:

1. Generación de la interfaz visual: Solo se muestran las opciones para las que el
usuario actual está autorizado.

2. Autorización de Acceso a recurso restringido: Si se solicita en el browser la


ejecución de una página, aunque no fuese desde un enlace de una página, hay
que verificar que en realidad el usuario estaba autorizado.

En el presente sistema se tuvo en cuenta los dos niveles de autorización


(Especialista en Gestión Económica y Administrador del Sistema), los cuales solo
podrán ejecutar y ver en la aplicación a lo que estén autorizados, ya sea por el rol
que desempeñan.
 Auditabilidad: Está referida a la necesidad de poder comprobar qué acciones
ha efectuado un usuario determinado. En este caso solo de deberán auditar
acciones que por su naturaleza puedan afectar la veracidad de la información.

 Acceso a Datos: El acceso a datos se puede realizar de dos formas:

1. Mecanismos de acceso a datos: No son más que mecanismos a través de


los cuales se puede hacer persistir la información manipulada por un
sistema de información. Ejemplo ADO, ODBC, JDBC entre otras.

2. Herramientas ORM: Facilitan el acceso a los datos mapeando la base de


datos a objetos y viceversa además de otras funcionalidades.

En el caso de este proyecto para el acceso a datos se utilizara la librería Adodb, la


cual nos permitirá acceder mediante el código PHP a las funcionalidades del
propio sistema. Además de permitir realizar operaciones comunes sobre la base
de dato como SELECT, INSERT o UPDATE también permite la creación y
modificación de tablas referente a los Gastos de Coordinación Agroalimentaria.

ADODB: es una librería de abstracción de base de datos para PHP muy potente.
Esta permite a los programadores desarrollar aplicaciones web de una manera
portable, rápida y fácil. La ventaja reside en que la base de datos puede cambiar
sin necesidad de reescribir cada llamada a la misma realizada por la aplicación.
[ADOdb, 2007] ADOdb soporta la mayoría de las bases de datos existentes como
MySQL, PostgreSQL,Interbase, Firebird, Oracle, MS SQL, FoxPro, Access,
SQLite, Etc. A pesar de la existencia de otras bibliotecas semejantes, en la
comunidad internacional de programadores para PHP, existen fuertes sugerencias
que señalan a ADOdb como la mejor biblioteca de abstracción de datos. El otro
gran ejemplo es PEAR DB, pero ADOdb es mucho más rápido (algunas veces
hasta un 300% más rápido) y tiene un menor consumo de memoria. Así como
tiene funciones de caché y un rango más amplio de los gestores de bases de
datos que soporta. Actualmente tiene soporte completo para PHP5.
1.2 Describir la vista estática del mecanismo de acceso a datos. Como
mediante el código u otro mecanismo acceda a los datos.

 Caso de Gestionar Colaborador- Flujo Insertar

 Caso de Gestionar Colaborador- Flujo Modificar


 Caso de Gestionar Colaborador- Flujo Eliminar

 Caso de Uso Actualizar Gastos-Flujo Básico

<<Link>>

Sexo
Pantalla_Insertar_Gastos
Pantalla_Actualizar_Gastos Form_Insertar_Gastos Provincia
1
1
<<Link>> <<Submit>>
<<Build>>

1
Proyecto
* *
<<Build>> *
ADODB Colaborador
*
* 1
1 Empresa
Página Principal Controladora
* 1
Gastos
<<Build>> Profesion

* *

<<Link>>
1 1

Proveedor_de_Servicios Tipo_Moneda

Mensaje_Error
*

1
Tipo Prov eedor
 Caso de Uso Gastos por Proyecto-Flujo Básico

Pantalla_Select_Proyecto
Form_Select_Proyecto

Proyecto

<<Link>> <<Submit>>
<<Link>> 1

*
<<Build>> Gastos
ADODB Colaborador 1 *

* *
Página Principal Controladora

1
<<Build>>
Proveedor_de_Servicios
<<Build>>
1
*
Tipo_Moneda

Mensaje_Error 1

Reporte_Gastos_Proy ecto Tipo Prov eedor

1.3 Descripción de los Elementos de la Vista Estática

Pantalla Principal: Interfaz que el usuario utilizará para poder seleccionar la


opción que desee.

P_Gestionar_Colaborador: Página cliente en la que aparece un listado de los


todos los colaboradores que integran el Convenio, a través ella se podrá tener
acceso a la gestión de los técnicos (insertar, modificar, eliminar).

Pantalla_Insertar_Colaborador, Pantalla_Modificar_Colaborador: Página


cliente que contiene un formulario en el cual se escribirán o seleccionarán los
datos personales y laborales del colaborador y posteriormente se insertarán en la
BD.

Form_Insertar_Colaborador,Form_Modificar_Colaborador: Representa la
información solicitada por el usuario, estos formularios contienen los atributos que
van a ser utilizados por la controladora. Forman parte de las páginas clientes
(Pantalla_Insertar_Colaborador, Pantalla_Modificar_Colaborador).
Pantalla_Actualizar_Gastos: Página cliente en la que aparece un listado de los
colaboradores, a través de la cual se podrá tener acceso a la actualización de los
gastos.

Pantalla_Insertar_Gastos: Página cliente que contiene un formulario en el cual


escribirán o seleccionarán los datos de los gastos de los colaboradores y
posteriormente se insertarán en la BD.

Form_Insertar_Gastos:Información que se inserta en el sistema por el usuarios,


la cual será actualizada por el mismo, usando además la clase controladora.

Pantalla_Select_Proyecto: Página cliente en la que aparece un formulario, a


través del cual se podrá seleccionar el criterio de búsqueda.

Form_Select_Proyecto: Formulario que contiene los indicadores de selección


para realizar el reporte solicitado.

Reporte_Gastos_Proyecto: Página Cliente que muestra el reporte con los


principales datos de los gastos por proveedor de servicios que coincidieron con el
criterio de búsqueda.

Controladora: Página Servidora que se encarga de construir las páginas clientes,


realizar los cálculos pertinentes, las validaciones y generar los reportes, además
de solicitar los datos a ADODB para realizar las operaciones mencionadas.

ADODB: Permite la separación de la vista lógica del negocio, haciendo


transparente el acceso a la fuente de datos.

Mensaje_Error: Página Cliente, a través de ella se presenta al usuario una alerta


indicando la falta algún dato en el proceso de inserción de un colaborador.

Colaborador: Representa la clase persistente.


1.4 Colaboraciones Genéricas (Diagramas de Colaboración)

 Caso de Gestionar Colaborador- Flujo Insertar

3: *ListColab=GetColaborador()
10: Insertar(datos)
1: SeleccionaGestionarColaborador() 2: BuscarColaborador( ) 11: *List2=GetColaborador()

5: SelectInsertarColaborador ()
: Especialista Gestión : Página_Principal : Controladora : Colaborador
Comercial

4: Mostrar(ListColab)
12: Mostrar(List2)
7: Insertar(datos)

: Pantalla Gestionar Colaboradores 9: [error==false] Insertar(datos)


El parámetro datos representa:
Nombre
Papellido
Sapellido
CI 6: Mostrar()
FechaNac
DireccionP 8: error=Chequear(datos)
Proyecto
DireccionE
CargoDesempena
Perfil
AnosExperiencia
Salario
EstadoSalud
Profesion
Empresa
: Pantalla Insertar Datos_Colaborador
Sexo
Provincia
 Caso de Gestionar Colaborador- Flujo Modificar

3: *ListColab=GetColaborador()
10: Modificar(datos)
11: *List2=GetColaborador()
1: SeleccionaGestionarColaborador() 2: BuscarColaborador( )

: Especialista Gestión : Página_Principal : Controladora : Colaborador


Comercial 5: SelectModificar(colaborador)

4: Mostrar(ListColab)
7: Modificar(datos) 12: Mostrar(List2)

9: [error==false] Modificar(datos)

El parámetro datos representa:


Nombre : Pantalla Gestionar Colaboradores
Papellido
Sapellido
CI 6: Mostrar(colaborador)
FechaNac
DireccionP
Proyecto
DireccionE 8: error=Chequear(datos)
CargoDesempena
Perfil
AnosExperiencia
Salario
EstadoSalud
Profesion
Empresa
Sexo
Provincia : Pantalla Modificar Datos_Colaborador
 Caso de Gestionar Colaborador- Flujo Eliminar

3: *ListColab=GetColaborador()
9: Eliminar(colaborador)
10: *List2=GetColaborador()
1: SeleccionaGestionarColaborador () 2: BuscarColaborador( )

: Especialista Gestión 5: SelectEliminar(colaborador) : Página_Principal : Colaborador


: Controladora
Comercial

7: Selecciona(aceptar) 4: Mostrar(ListColab)
11: Mostrar(List2)

8: Eliminar_Colaborador(colaborador)

: Pantalla Gestionar Colaboradores

6: Mostrar(M1)

El parámetro M1 representa el
Mensaje a mostrar, que para este
caso es: "Desea Eliminar el
Colaborador Seleccionado"

: Mensaje Eliminar_Colaborador
 Caso de Uso Actualizar Gastos - Flujo Básico

: Principal 2: CargarColaboradores( )

1: SelecActualizarGastos( )

3: *List=GetColaboradores()
9: Insertar(gastos)
5: ActualizarGastosC(colaborador) 10: *List2=GetColaboradores()

4: Mostrar(List)
: Especialista Gestión : Pantalla_Actualizar_Gastos 11: Mostrar(List2) : Controladora : Colaborador
Eonómica
7: InsertarGastos(gastos)
8: ActualizarGastosC(gastos)

6: Mostrar(colaborador)
Son los Gastos que se
acumulan en atencion al
colaborador (los gastos
son en CUC Y CUP)

: Pantalla_Insertar_Gastos
 Caso de Uso Gastos por Proyecto-Flujo Básico

3: *ListProyectos=GetProyectos()
1: ReporteGProyecto( ) 7: *ListGastos=Proyecto(proyecto)
2: BuscarProyectos()

: Especialista Gestión : Principal : Controladora : Colaborador


Eonómica
8: Mostrar(ListGastos)
6: CargarGastosProyecto(proyecto)
5: SelectProyecto(proyecto)

4: Mostrar(ListProyectos)

: Pantalla_Buscar_GProyecto
: Reporte_Gastos_Proyecto
2. Estructuración en Capas.
2.1 Vista general de la arquitectura. Estructuración en capas
3. Diagrama de clases de diseño de cada paquete propio del sistema
desarrollado

3.1 Paquete Seguridad

3.1.1 Caso de usoAutenticarusuario

Form_Autenticar_Usu Rol
Pantalla_Autenticar_Usuario
srio

1
<<Submit>>
<<Redirect>>

*
<<Build>>
ADODB Usuario

Página Principal Controladora

3.1.2 Caso de uso Gestionar usuario

<<Link>>

Pantalla_Insertar_Usuario Rol
Pantalla_Gestionar_Usuario Form_Insertar_Usuario

<<Redirect>> 1
<<Link>> <<Submit>>
<<Build>>

*
<<Build>>
ADODB Usuario

Página Principal Controladora

<<Redirect>> <<Submit>>

Pagina_Modificar_Usu Form_Modif icar_Usuario


srio
3.2 Paquete Gestión
3.2.1 Caso de uso Gestionar bolsa de técnicos

<<Link>>

Pantalla_Insertar_Colaborado Sexo
Pantalla_Gestionar_Colaborador Form_Insertar_Colaborador
r
Prov incia
1
<<Redirect>>
<<Link>> <<Submit>>
<<Build>> 1

* *
<<Build>> Proy ecto
ADODB Colaborador
* 1
* *
Página Principal Controladora

<<Redirect>> <<Submit>> 1
Empresa
1
Prof esion

Pagina_Modificar_Cola Form_Modif icar_Colaborador


borador
3.3 Paquete Reportes
3.3.1 Caso de uso Gestionar reportes

Pantalla_Select_Proyecto
Form_Select_Proyecto

Proyecto

<<Link>> <<Submit>>
<<Link>> 1

*
<<Build>> Gastos
ADODB Colaborador 1 *

* *
Página Principal Controladora

1
<<Build>>
Proveedor_de_Servicios
<<Build>>
1
*
Tipo_Moneda

Mensaje_Error 1

Reporte_Gastos_Proy ecto Tipo Prov eedor


4. Modelo de datos
4.1 Modelo Lógico de la Base de Datos

Colabrorador
Nombre : String Sexo
Papellido : String Sexo : Char
Usuario Sapellido : String 1
usuario : String Rol CI : String
1..* 1 *
contrasena : String NombreRol : String FechaNac : Date
NombreUsuario : String DireccionP : String
Direccion : String
CargoDesemp : String * 1 Provincia
Perfil : String Provincia : String
AnosExperiencia : Integer
1 Salario : Double *
EstadoSalud : String
Municipio : String 1
* * Proyecto
* Proyecto : String
Gastos
MontoGasto : Double
NumeroFactura : String
1 1
NumeroOrdenTrabajo : String
FechaServicio : Date

Profesion Empresa
* * Empresa : String
Profesion : String

1
1

Tipo_Moneda
Proveedor_Servicios TipoMoneda : String
NProveedor : String
NCuentaBancaria : String
NumCuentaBancaria : String
NumeroContrato : String

Tipo_Proveedor
TipoProveedor : String
4.4.2 Modelo Físico de la Base de Datos

T_Sexo
(from S_8)

T_Usuario T_Colabrorador Sexo : SMALLINT


(from S_8) (from S_8) T_Sexo_ID : INTEGER
usuario : VARCHAR(255) <<Non-Identif y ing>> Nombre : VARCHAR(255)
contrasena : VARCHAR(255) T_Rol Papellido : SMALLINT <<PK>> PK_T_Sexo104()
1
(from S_8)
NombreUsuario : VARCHAR(255) Sapellido : VARCHAR(255)
NombreRol : VARCHAR(255) <<Non-Identif y ing>>
T_Usuario_ID : INTEGER CI : VARCHAR(255)
1..* 1 T_Rol_ID : INTEGER
T_Rol_ID : INTEGER FechaNac : DATE
DireccionP : VARCHAR(255)
<<PK>> PK_T_Rol102()
<<PK>> PK_T_Usuario101() Direccion : VARCHAR(255)
0..*
<<FK>> FK_T_Usuario86() CargoDesemp : VARCHAR(255)
<<Index>> TC_T_Usuario4331() Perf il : VARCHAR(255) T_Empresa
AnosExperiencia : INTEGER <<Non-Identif y ing>> (from S_8)
Salario : SMALLINT 1 Empresa : VARCHAR(255)
EstadoSalud : VARCHAR(255) T_Empresa_ID : INTEGER
0..*
Municipio : VARCHAR(255)
T_14 T_Colabrorador_ID : INTEGER <<PK>> PK_T_Empresa108()
(from S_8) T_Sexo_ID : INTEGER
T_Tipo_Prov eedor_ID : INTEGER T_Prov incia_ID : INTEGER
0..* <<Non-Identif y ing>>
T_Proveedor_Serv icios_ID : INTEGER T_Proy ecto_ID : INTEGER
T_Prof esion_ID : INTEGER
<<PK>> PK_T_14112() T_Empresa_ID : INTEGER 1
<<FK>> FK_T_1493() 0..*
<<FK>> FK_T_1494() <<PK>> PK_T_Colabrorador103() T_Prov incia
<<Index>> TC_T_144344() <<FK>> FK_T_Colabrorador90() (from S_8)

<<Index>> TC_T_144345() <<FK>> FK_T_Colabrorador92() <<Non-Identif y ing>> Prov incia : VARCHAR(255)


<<FK>> FK_T_Colabrorador89() T_Provincia_ID : INTEGER
0..* <<FK>> FK_T_Colabrorador91()
<<Identify ing>> <<FK>> FK_T_Colabrorador88() <<PK>> PK_T_Prov incia105()
<<Index>> TC_T_Colabrorador4335()
0..*
0..* <<Index>> TC_T_Colabrorador4343()
<<Index>> TC_T_Colabrorador4339() 1
<<Index>> TC_T_Colabrorador4341()
<<Index>> TC_T_Colabrorador4337()
1
1 <<Non-Identif y ing>>
T_Prof esion
<<Identify ing>>
<<Non-Identif y ing>> (from S_8)

T_Tipo_Prov eedor Prof esion : VARCHAR(255)


(from S_8) T_Prof esion_ID : INTEGER
TipoProv eedor : VARCHAR(255)
T_Tipo_Prov eedor_ID : INTEGER <<PK>> PK_T_Prof esion107()

<<PK>> PK_T_Tipo_Prov eedor109() 0..*


1

1 T_Gastos
(from S_8)
MontoCUC : SMALLINT T_Proyecto
<<Non-Identif y ing>> MontoCUP : SMALLINT (from S_8)
T_Prov eedor_Serv icios
1 0..* T_Gastos_ID : INTEGER Proy ecto : VARCHAR(255)
(from S_8)
NProv eedor : VARCHAR(255) T_Colabrorador_ID : INTEGER T_Proy ecto_ID : INTEGER
T_Prov eedor_Serv icios_ID : INTEGER T_Prov eedor_Serv icios_ID : INTEGER
<<PK>> PK_T_Proy ecto106()
<<PK>> PK_T_Prov eedor_Serv icios110() <<PK>> PK_T_Gastos111()
<<FK>> FK_T_Gastos87()
<<FK>> FK_T_Gastos95()
<<Index>> TC_T_Gastos4333()
<<Index>> TC_T_Gastos4347()

Diagrama de Clase del mecanismo.


Clases persistentes

BDConecctionData

iniciarConexion()
finalizarConexion()
ResultSet executeQuery()
boolean executeUpdate()

ResultSet DriverManager

getString() static Connection getConnection()

Statement Connection

ResultSet executeQuery() Statement createStatement()

Descripción de cada elemento mostrado en la vista estática.


Clases persistentes: Estas clases le entregan a las funciones de la Clase
BDConexionData el tipo de operación a realizar (consulta o actualización).
Clase BDConexionData: Clase principal encargada del acceso a datos, utiliza la
clases: Connection, DriverManager, Statement y ResultSet para realizar la conexión a
la base de datos, además tiene dos métodos para realizar las operaciones con los
datos persistentes: executeQuery() y executeUpdate(), estos reciben como parámetro
el tipo de consulta a realizar:
 executeQuery(): Devuelve un Resulset a la clase persistente que lo utilizó con
el resultado de la consulta.
 executeUpdate(): Devuelve un boolean a la clase que lo utilizó, (true si la
operación se realizó o false en caso contrario), este método está diseñado para
insertar, modificar o eliminar.
Clase Connection: Crea una sesión con una base de datos en específico,
permitiendo que las instrucciones en SQL sean ejecutadas retornando un valor del tipo
ResultSet, utiliza la Clase DriverManager para realizar la conexión mediante el
método getConnection(), y esta a su vez envía un URL con los datos de la conexión
(tipo de driver, dirección del servidor, usuario, contraseña, base de datos), esta
información proviene de la Clase BDConexionData, a la cual se le envían el nombre
de usuario y la contraseña, implementándose el mecanismo de seguridad en cada
conexión efectuada. La Clase Statement es empleada para realizar la consulta
utilizando la función executeQuery() que devuelve un valor del tipo ResultSet mediante
el método readQuery().
Diagrama de Secuencia del mecanismo:
: Clases : BDConecctionData : Connection : DriverManager : Statement : ResulSet
persistentes

ResulSet ExecuteQuery( )

Statement createStatement( )

staticConecction getConecction(url)

ResultSet executeQuery(string sql)


GetString( )

Colaboraciones Genéricas (Con Diagramas de Secuencia o de Colaboración).

S-ar putea să vă placă și