Ejemplo Doo

Embed Size (px)

Citation preview

  • 8/18/2019 Ejemplo Doo

    1/12

    Para el caso de uso entregado:

    Diagramas de secuencia, CU autenticar , CU Sincronizar

    • Diagrama de Clases • Código resultante para la funcionalidad de sincronizar

    Sistema de Apoyo a Administradores de Proyectos.

    Una empresa que presta servicio a la minería tiene una PMO (Project Management Office) la cualatiende proyectos de distintas compañías mineras. En el proceso de operación, la PMO asigna a un

    PM (Project Manager) a un grupo de proyectos que se estén desarrollando en una compañía 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 involucragestionar 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 proyectoscrecen en tamaño y en cantidad se hace difícil reportar correctamente los estados de cada uno,gastando mucho tiempo en actividades de reportabilidad en vez de dedicarlos a las actividadesprincipales del PM generando como consecuencia atrasos en alguna parte del proceso.

    En un intento para resolver esta problemática la empresa dueña de la PMO decide implementar unaherramienta computacional que apoye la labor del PM. Como primera decisión la empresa requiereque la herramienta este siempre disponible para el PM, no importando el lugar geográfico donde seencuentre e independiente de su conectividad a internet. Si se encuentra en un lugar fuera dealcance, la herramienta debe almacenar los datos para luego cuando se encuentre en líneanuevamente 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 ingresode la información, uno a través de una interfaz extendida donde el PM lleve el registro de avance desus proyectos, registra el código del proyecto, actividades realizadas, horas trabajadas en cadaactividad, recursos humanos utilizados (HH), recursos monetarios utilizados, problemas encontrados,observaciones. Esta interfaz es accesible vía el cuerpo principal de la aplicación, adicionalmenteexiste otra interfaz que es un caso especial del registro de avance de proyectos, en la cual se ingresael código del proyecto, las actividades realizadas y la cantidad de horas trabajadas en cada una. Laherramienta debe tener asociado un control de acceso de usuarios donde el PM debe ingresar su rut yuna password para iniciar actividades en la herramienta, si esta operación no está completada,ninguna función está disponible para uso.

  • 8/18/2019 Ejemplo Doo

    2/12

    El PM tiene acceso al registro de avance de sus proyectos, a cambiar su contraseña y a ver losreportes 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 oadministradores, para las cuentas se requiere el nombre, rut y contraseña. Crean los proyectosasociados a la PMO, indicando código y presupuesto y asignan estos proyectos a suscorrespondientes PM. Adicionalmente los administradores tienen acceso a los reportes centralizadosy pormenorizados por proyecto de avance, uso de presupuesto, incidencias, observaciones,desviaciones.

    Dado lo critico y estratégico de la información se debe mantener un alto estándar de seguridad tantoen el ingreso de los usuarios como en el manejo de los datos.

    Requerimientos No funcionales

    • Seguridad de acceso de usuarios y manejo de datos• Protección de datos• Cliente del tipo Standalone• Sincronizado vía web de datos locales con repositorio central• Integrado con Sistema Operativo Windows.

  • 8/18/2019 Ejemplo Doo

    3/12

    Nombre Caso Autenticar ID MCP_CU03e

    Actor(es) PM, Administrador

    Propósito Autorizar e in!reso de un usuario a sistema e intentar sincronización de osdatos a macenados

    "esumen #ste caso de uso tiene a $ina idad de %a idar a identidad de un usuario desistema antes de rea izar a !una operación sobre & ' #s ob i!atorio ue antesde rea izar cua uier operación sobre a erramienta se pase por esteproceso de %a idación' Para rea izar e proceso, e actor in!resa su rut *pass+ord, e sistema %a ida esta in$ormación contra os datos a macenados *concede o denie!a e acceso a uso de a erramienta' Una %ez %a idado eusuario, se procede a intentar un proceso de sincronización con erepositorio centra '

    ipo Primario, esencia

  • 8/18/2019 Ejemplo Doo

    4/12

    "e$erencias Cruzadas MCP0-, MCP0., MCP03, MCP0/, MCP0 , MCP01

    Curso Norma de os #%entos

    Actor 2istema

    -' # caso de uso comienza cuando e actordesea re!istrar datos de a%ance de un

    pro*ecto'

    .' 2e ecciona a opción autenticar'

    ' In!resa os datos so icitados'

    -.' 2e termina e caso de uso'

    3' Desp ie!a un $ormu ario para %a idar a usuario,so icitando in!reso de rut * pass+ord'

    /' "ecepciona os datos'' 2e recuperan os datos de usuario ue intenta

    autenticar'1a' 2i e usuario e4iste, compara as pass+ordentre!ada * recuperada'1b' Caso contrario se reporta usuario ine4istente, ecurso norma contin5a en '6' 2e de7a a usuario como acti%o en e sistema'8' 2e recupera a in$ormación de pro*ectos asociadosa usuario * se de7a disponib e para uso'-0' 2e intenta proceso de sincronización (%er CUMCP_CU0 e)--' 2e in$orma &4ito en e proceso de autenticación'

    Curso A ternati%o

    9:nea ' # actor desiste de proceso de autenticación'

  • 8/18/2019 Ejemplo Doo

    5/12

    Nombre Caso 2incronizar ID MCP_CU0 e

    Actor(es) PM, Administrador

    Propósito 2incronizar os datos a macenados oca mente con e repositorio centra '

    "esumen #ste caso de uso tiene a $ina idad sincronizar os datos a macenadosoca mente con os datos disponib es en e repositorio centra ' 9os datos ue

    se deben sincronizar son; os usuarios, os pro*ectos * sus a%ances porusuario' Para rea izar e proceso, e sistema debe %eri$icar si e4iste cone4ióncon e ser%idor de repositorio, de ser as:, e proceso se rea iza en dos etapas,primero e c iente oca en%:a sus datos a ser%idor * ue!o recupera una%ersión actua izada por e ser%idor de esos datos' Una %ez terminada asincronización para cada e emento se debe a macenar de $orma oca os

    nue%os datos' # proceso interno de sincronización en e ser%idor sepro$undiza en otro caso de uso'

    ipo Primario, esencia

    "e$erencias Cruzadas MCP0/, MCP0 , MCP0-.

    Curso Norma de os #%entos

    Actor 2istema

    -' # caso de uso comienza cuando e actordesea re!istrar datos de a%ance de un

    pro*ecto'

    .' 2e ecciona a opción sincronizar

    8' 2e termina e caso de uso'

    3'

  • 8/18/2019 Ejemplo Doo

    6/12

    Modelo Conceptual

    Glosario

    • Cliente : Software, parte de un sistema que tiene interacción 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 enun momento de tiempo en particular.

  • 8/18/2019 Ejemplo Doo

    7/12

  • 8/18/2019 Ejemplo Doo

    8/12

  • 8/18/2019 Ejemplo Doo

    9/12

  • 8/18/2019 Ejemplo Doo

    10/12

    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);

  • 8/18/2019 Ejemplo Doo

    11/12

    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 acareturn 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) {

  • 8/18/2019 Ejemplo Doo

    12/12

    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");

    }

    }