Вы находитесь на странице: 1из 12

Para el caso de uso entregado:

Diagramas de secuencia, CU autenticar, CU Sincronizar

Diagrama de Clases
Cdigo resultante para la funcionalidad de sincronizar

Sistema de Apoyo a Administradores de Proyectos.


Una empresa que presta servicio a la minera tiene una PMO (Project Management Office) la cual
atiende proyectos de distintas compaas mineras. En el proceso de operacin, la PMO asigna a un
PM (Project Manager) a un grupo de proyectos que se estn desarrollando en una compaa minera.
El PM debe realizar sus actividades propias y reportar como van los avances del trabajo que se est
realizando a la PMO.
Para el PM es complejo llevar un orden de los proyectos que est administrando, lo cual involucra
gestionar presupuestos, personas, cumplimientos, plazos, productos, incidencias, entre otras cosas.
Para ello, normalmente utilizan una Carta Gantt y una planilla Excel, pero a medida que los proyectos
crecen en tamao y en cantidad se hace difcil reportar correctamente los estados de cada uno,
gastando mucho tiempo en actividades de reportabilidad en vez de dedicarlos a las actividades
principales del PM generando como consecuencia atrasos en alguna parte del proceso.
En un intento para resolver esta problemtica la empresa duea de la PMO decide implementar una
herramienta computacional que apoye la labor del PM. Como primera decisin la empresa requiere
que la herramienta este siempre disponible para el PM, no importando el lugar geogrfico donde se
encuentre e independiente de su conectividad a internet. Si se encuentra en un lugar fuera de
alcance, la herramienta debe almacenar los datos para luego cuando se encuentre en lnea
nuevamente sincronice con el repositorio central de datos de la PMO.
La herramienta debe poseer una interfaz de usuario simple de usar y que tenga dos modos de ingreso
de la informacin, uno a travs de una interfaz extendida donde el PM lleve el registro de avance de
sus proyectos, registra el cdigo del proyecto, actividades realizadas, horas trabajadas en cada
actividad, recursos humanos utilizados (HH), recursos monetarios utilizados, problemas encontrados,
observaciones. Esta interfaz es accesible va el cuerpo principal de la aplicacin, adicionalmente
existe otra interfaz que es un caso especial del registro de avance de proyectos, en la cual se ingresa
el cdigo del proyecto, las actividades realizadas y la cantidad de horas trabajadas en cada una. La
herramienta debe tener asociado un control de acceso de usuarios donde el PM debe ingresar su rut y
una password para iniciar actividades en la herramienta, si esta operacin no est completada,
ninguna funcin est disponible para uso.

El PM tiene acceso al registro de avance de sus proyectos, a cambiar su contrasea y a ver los
reportes asociados al estado de avance y uso de recursos en sus proyectos.
El administrador de la PMO tiene la posibilidad de crear cuentas a nuevos usuarios ya sean PM o
administradores, para las cuentas se requiere el nombre, rut y contrasea. Crean los proyectos
asociados a la PMO, indicando cdigo y presupuesto y asignan estos proyectos a sus
correspondientes PM. Adicionalmente los administradores tienen acceso a los reportes centralizados
y pormenorizados por proyecto de avance, uso de presupuesto, incidencias, observaciones,
desviaciones.
Dado lo critico y estratgico de la informacin se debe mantener un alto estndar de seguridad tanto
en el ingreso de los usuarios como en el manejo de los datos.

Requerimientos No funcionales

Seguridad de acceso de usuarios y manejo de datos


Proteccin de datos
Cliente del tipo Standalone
Sincronizado va web de datos locales con repositorio central
Integrado con Sistema Operativo Windows.

Nombre Caso

Autenticar

ID

MCP_CU03e

Actor(es)

PM, Administrador

Propsito

Autorizar el ingreso de un usuario al sistema e intentar sincronizacin de los


datos almacenados

Resumen

Este caso de uso tiene la finalidad de validar la identidad de un usuario del


sistema antes de realizar alguna operacin sobre l. Es obligatorio que antes
de realizar cualquier operacin sobre la herramienta se pase por este
proceso de validacin. Para realizar el proceso, el actor ingresa su rut y
password, el sistema valida esta informacin contra los datos almacenados y
concede o deniega el acceso al uso de la herramienta. Una vez validado el
usuario, se procede a intentar un proceso de sincronizacin con el
repositorio central.

Tipo

Primario, esencial

Referencias Cruzadas

MCP01, MCP02, MCP03, MCP05, MCP06, MCP07


Curso Normal de los Eventos

Actor

Sistema

1. El caso de uso comienza cuando el actor


desea registrar datos de avance de un
proyecto.
2. Selecciona la opcin autenticar.

3. Despliega un formulario para validar al usuario,


solicitando ingreso de rut y password.

4. Ingresa los datos solicitados.

12. Se termina el caso de uso.

5. Recepciona los datos.


6. Se recuperan los datos del usuario que intenta
autenticar.
7a. Si el usuario existe, compara las password
entregada y recuperada.
7b. Caso contrario se reporta usuario inexistente, el
curso normal contina en 4.
8. Se deja al usuario como activo en el sistema.
9. Se recupera la informacin de proyectos asociados
al usuario y se deja disponible para uso.
10. Se intenta proceso de sincronizacin (ver CU
MCP_CU04e)
11. Se informa xito en el proceso de autenticacin.
Curso Alternativo

Lnea 4. El actor desiste del proceso de autenticacin.

Nombre Caso

Sincronizar

ID

MCP_CU04e

Actor(es)

PM, Administrador

Propsito

Sincronizar los datos almacenados localmente con el repositorio central.

Resumen

Este caso de uso tiene la finalidad sincronizar los datos almacenados


localmente con los datos disponibles en el repositorio central. Los datos que
se deben sincronizar son: los usuarios, los proyectos y sus avances por
usuario. Para realizar el proceso, el sistema debe verificar si existe conexin
con el servidor del repositorio, de ser as, el proceso se realiza en dos etapas,
primero el cliente local enva sus datos al servidor y luego recupera una
versin actualizada por el servidor de esos datos. Una vez terminada la
sincronizacin para cada elemento se debe almacenar de forma local los
nuevos datos. El proceso interno de sincronizacin en el servidor se
profundiza en otro caso de uso.

Tipo

Primario, esencial

Referencias Cruzadas

MCP05, MCP06, MCP012


Curso Normal de los Eventos

Actor

Sistema

1. El caso de uso comienza cuando el actor


desea registrar datos de avance de un
proyecto.
2. Selecciona la opcin sincronizar

9. Se termina el caso de uso.

3. Verifica que existe conexin con el repositorio de


datos.
4a. Si no existe conexin, el curso normal contina en
9.
4b. Si existe conexin, se avisa al repositorio que se
inicia un proceso de sincronizacin entregando el
identificador del cliente que inicia el proceso.
5. Se envan los datos de los usuarios existentes en el
cliente para la sincronizacin en el servidor.
6. Se recuperan los datos sincronizados desde el
servidor y se almacenan localmente.
7. Se envan los datos de los proyectos y sus
actividades para el proceso de sincronizacin.
8. Se recuperan los datos sincronizados desde el
servidor y almacenan localmente.
.
Curso Alternativo

Modelo Conceptual

Glosario

Cliente: Software, parte de un sistema que tiene interaccin con los usuarios.
Sincronizar: Proceso que busca mantener consistencia en los datos disponibles en varias
locaciones, transfiriendo los datos necesarios entre ellos para lograr tener los mismos datos en
un momento de tiempo en particular.

public class ControladorLogicaCliente {


private PMO pmo;
public void sincronizar(){
pmo.sincronizar();
}
}
public class PMO {
private ControladorComunicacionCliente CCCli;
private ControladorPersistenciaCliente CPCli;
public void sincronizar(){
boolean res = CCCli.probarConexionServer();
if(res==true){
CCCli.inicioSync();
HashMap lstUsuarios = CPCli.cargarUsuarios();
Collection lstRuts = lstUsuarios.keySet();
HashMap lstProyectos = CPCli.cargarProyectos(lstRuts);
CCCli.syncUsuarios(lstUsuarios);
CCCli.syncProyectos(lstProyectos);
lstUsuarios = CCCli.recupUsuarios();
lstProyectos = CCCli.recupProyectos();
CPCli.actualizarUsuarios(lstUsuarios);
CPCli.actualizarProyectos(lstProyectos);
}
}
}
public class ControladorComunicacionCliente {
private ControladorComunicacionServidor CCSer;
private String idCli;
public void inicioSync() {
CCSer.inicioSync(idCli);
}
public boolean probarConexionServer() {
return CCSer.testConexion();
}
public void syncUsuarios(HashMap lstUsuarios) {
Collection data = this.prepararDatosSalida(lstUsuarios);

CCSer.enviarUsuarios(data);
}
public void syncProyectos(HashMap lstProyectos) {
Collection data = this.prepararDatosSalida(lstProyectos);
CCSer.enviarProyectos(data);
}

public HashMap recupUsuarios() {


Collection data = CCSer.recuperarUsuarios();
return prepararDatosEntrada(data);
}
public HashMap recupProyectos() {
Collection data = CCSer.recuperarProyectos();
return prepararDatosEntrada(data);
}
private Collection prepararDatosSalida(HashMap lstUsuarios) {
Collection data = new ArrayList();
data = lstUsuarios.values();
return data;
}
private HashMap prepararDatosEntrada(Collection data) {
//insertar codigo aca
return null;
}
}
class ControladorPersistenciaCliente {
HashMap cargarUsuarios() {
throw new UnsupportedOperationException("Not yet implemented");
}
HashMap cargarProyectos(Collection lstRuts) {
throw new UnsupportedOperationException("Not yet implemented");
}
void actualizarUsuarios(HashMap lstUsuarios) {
throw new UnsupportedOperationException("Not yet implemented");
}
void actualizarProyectos(HashMap lstProyectos) {

throw new UnsupportedOperationException("Not yet implemented");


}
}
public class ControladorComunicacionServidor {
void inicioSync(String idCli) {
throw new UnsupportedOperationException("Not yet implemented");
}
boolean testConexion() {
throw new UnsupportedOperationException("Not yet implemented");
}
void enviarUsuarios(Collection data) {
throw new UnsupportedOperationException("Not yet implemented");
}
void enviarProyectos(Collection data) {
throw new UnsupportedOperationException("Not yet implemented");
}
Collection recuperarUsuarios() {
throw new UnsupportedOperationException("Not yet implemented");
}
Collection recuperarProyectos() {
throw new UnsupportedOperationException("Not yet implemented");
}
}

Вам также может понравиться