SlideShare una empresa de Scribd logo
1 de 20
DIVISIÓN DE ESTUDIOS PROFESIONALES PARA EJECUTIVOS

              INGENIERÍA DE SISTEMAS




 Proyecto Bastanteo de Poderes - PeruBank




                    Integrantes:

                  Alcántara, Jorge

                   Bruno, Harold

                   Espíritu, Hans

             Villayzan Chancafe, Gabriel



                      GitHub:

        https://github.com/hariki01/PeruBank



       PROGRAMACIÓN ORIENTADA A OBJETOS



                     Profesor:

              José Amadeo Martin Díaz




           Lima, 28 de Noviembre de 2011
INDICE

1.   INTRODUCCIÓN ........................................................................................................................... 3
2.   CASO PROPUESTO ....................................................................................................................... 3
3.   HISTORIAS DE USUARIO.............................................................................................................. 4
4.   ESPECIFICACIONES TÉCNICAS ..................................................................................................... 6
5.   GESTIÓN DEL CÓDIGO ................................................................................................................. 6
6.   CONSTRUCCIÓN Y METODOLOGÍA ............................................................................................. 7
7.   CASOS DE USO........................................................................................................................... 10
8.   MODELO CONCEPTUAL ............................................................................................................. 11
9.   PROTOTIPOS DE PANTALLA ...................................................................................................... 12
1. INTRODUCCIÓN

   Con esta documentación se pretende explicar y detallar las especificaciones del trabajo
desarrollado para atender los requerimientos del proyectoBastanteo de Poderes, así como para
respaldarla metodología basada en Test que se empleó a los largo del proceso.

Primero, que con esta metodología se desarrolla primero el test, para luego, en basea este,
desarrollar el código necesario para que se cumpla el requerimiento del test. Esto facilita el desarrollo
de un proyecto grupal como este, en el que se dividen los requerimientos y se van validando
granularmente.

En ese sentido, analizamos las historias de usuario detalladasen los requerimientos del proyecto y
luego pasamos a definir los test necesarios para que estas especificaciones se cumplan a cabalidad,
fragmentándolas según se considere necesario y definiendo las entidades conforme lo necesite el test
para arrojar la respuesta esperada.

Luego de haber conceptualizado los requerimientos en código, en forma de test, viene la etapa de
implementación del código para hacer funcionar los test. Y finalmente, cerrando el ciclo de desarrollo
de este proyecto, se Refactoriza el código, simplificándolo, reduciéndolo, organizándolo, pero
manteniendo las funcionalidades logradas.



   2. CASO PROPUESTO

   El caso propuesto es el desarrollo de un aplicativoque permita al cliente realizar el proceso de
bastanteo de poderes, donde los usuarios puedan:

   -   Registrar clientes
   -   Inscribir representantes
   -   Agregar poderes
   -   Bastantear poderes
   -   Verificar poderes
   -   Consultar poderes
   -   Controlar usuarios
3. HISTORIAS DE USUARIO

Se describen los criterios bajos los cuales se puede dar por cumplido un requerimiento, para cada uno
de estos requerimientos se establecen criterios que nuestros Test deben cumplir para dar por
concluida una funcionalidad.

Estas se listan a continuación:

1. Registrar clientes.- Como supervisor deseo registrar clientes de modo que los abogados puedan
bastantear sus poderes bancarios.

 Cuando:                                                      Espero:
 Registro un cliente debo indicar su RUC, su código de        - Confirmación del registro OK.
 cliente interno (8 dígitos), razón social, fecha de inicio   - Mensaje de error si no se ingresan los datos
 de operaciones, tipo de empresa (SAA, SAC, SRL, etc.)        requeridos.
 y cantidad de empleados.                                     - Mensaje de error si el cliente ya existe (RUC o
                                                              código de cliente repetido).



2. Inscribir representantes.- Como abogado deseo inscribir los representantes de cada cliente de
modo que luego puedan tener los poderes bastanteados.

 Cuando:                                                      Espero:
 Inscribo un representante debo indicar su tipo y             - Confirmación de la inscripción Ok.
 número de documento, sus nombres y apellidos,                - Mensaje de error si no se ingresan los datos
 cargo en la empresa y un grupo de bastanteo (A, B, C,        requeridos.
 etc.).                                                       - Mensaje de error si ya es representante de la
                                                              empresa (según tipo y número de documento).



3. Agregar poderes.- Como supervisor deseo agregar el listado de poderes para que los abogados
puedan asignarlos a los representantes según bastanteo.

 Cuando:                                                      Espero:
 Agrego un poder debo indicar su código corto de              - Confirmación de la agregación Ok.
 consulta (ej.: CHCO, EFRE), el nombre (ej.: Cobro de         - Mensaje de error si no se ingresan los datos
 Cheques, Retiro en Efectivo) y el tipo                       requeridos.
 producto/servicio (ej: Activo, Pasivo).                      - Mensaje de error si ya se agregó el poder (código
                                                              corto).



4. Bastantear poderes.- Como abogado deseo poder anotar el resultado del bastanteo de modo que el
personal de agencia pueda consultarlo antes de cada operación.
Cuando:                                                   Espero:
 Bastanteo debo indicar qué poderes puede realizar         - Mensaje de confirmación Ok.
 cada grupo de bastanteo de cada cliente. Además,          - Mensaje de error si ya se anotó el mismo poder para
 para esta asignación debo indicar el tipo de              el mismo grupo de bastanteo, en el mismo cliente,
 intervención (ej.: A Sola Firma, En Conjunto Con) y       considerando el mismo tipo de intervención y
 con qué otro(s) grupo(s) de bastanteo si corresponde      combinación.
 (combinación), así como el importe y la fecha de
 vencimiento (normalmente 6 meses).



5. Verificar poderes.- Como personal de agencia deseo poder consultar si un representante tiene
poder para una operación o no de manera que pueda realizarla.

 Cuando:                                                   Espero:
 Consulto debo indicar el RUC del cliente, la              - Mensaje indicando que el representante tiene poder
 identificación del representante, el código de poder      y cómo.
 (o elegirlo de una lista), y el importe.                  - Mensaje indicando que el poder está dado pero ya
                                                           venció.
                                                           - Mensaje indicando que el representante no tiene
                                                           poder para realizar la operación indicada o el importe
                                                           es superior.



6. Consultar poderes.- Debo poder consultar los bastanteos registrados.

 Cuando:                                             Espero:
 Consulto debo indicar el RUC del cliente, la        - Lista de registros de bastanteo que se tienen
 identificación del representante, el grupo de       según los criterios de búsqueda ingresados.
 bastanteo o tipo de intervención.                   - Mensaje indicando que no hay resultados
                                                     según criterios.



7. Controlar usuarios.- Como administrador deseo poder controlar a los usuarios de modo que al
ingresar puedan acceder a sus funcionalidades ya sea como supervisor, como abogado o empleado.

 Cuando:                                                   Espero:
 Doy de alta un usuario debo indicar qué rol tiene         - Mensaje de bienvenida indicando el rol que tiene así
 asignado. Cada usuario debe identificarse por una         como las opciones que le corresponde.
 clave al ingresar.                                        - Mensaje de error si no se autentica correctamente.
4. ESPECIFICACIONES TÉCNICAS

Lenguaje y Versión: El aplicativo fue desarrollado en JAVA v1.6.

Test: Se utiliza la librería JUnit 4 para los Test.

IDE: SpringSource Tool Suite2.8.0



    5. GESTIÓN DEL CÓDIGO

   El desarrollo del aplicativo se realizó con el soporte de la herramienta colaborativa GitHUB, que
permite trabajar en equipo de una manera distribuida.

El repositorio principal https://github.com/hariki01/PeruBank es administrado por uno de los
integrantes del grupo, mientras que el resto hace fork al proyecto, creando clones que permiten
alterar el código y subirlo a su repositorio clonado, para que luego el administrador del proyecto junte
el código en 1 solo.

El historial de cambios se puede mostrar de la siguiente manera, gráficamente:
CONSTRUCCION


El sistema de información tiene como objetivo final elaborar y probar los distintos componentes de
test en Java a partir del conjunto de la especificación lógicas y físicas del mismo con la metodología
POO, obtenido en el proceso de diseño del sistema de Información.

En esta etapa se hará realidad el modelo de diseño es decir se diseñan los objetos así como también
se codificaran el entorno de pruebas. Los programas se definirán y se prepararan para que el sitio
quede en funcionamiento. Así mismo realizara pruebas exhaustivas para asegurar el perfecto
funcionamiento del mismo.



Para este proyecto PERUBANK se utilizaran los siguientes elementos:



Plataforma: Windows 7

Lenguaje de Desarrollo: Java

Herramienta de Modelado: Rational Rose

Herramienta de diseño: Spring



Participantes en las actividades



     Construcción del Sistema
                                                     Actividades
     de Información
                                     A1    A2   A3   A4   A5   A6   A7   A8   A9
     Enegelbert Hans Espiritu        x     x    x    x    x    x    x    x    x
     Muñoz
     Jorge Luis Alcántara Ospina     x     x    x    x    x    x    x    x    x
     Harold     Josimar      Bruno
     Calixto
     Gabriel    Jesus    Villayzan
     Chancafe


Actividades:



A1. Preparación del entorno de Generación y construcción.
A2. Generación del código de los componentes y Procedimientos.

A3. Ejecución de las pruebas de Unitarias.

A4. Ejecución de las pruebas de integración.

A5. Ejecución de las pruebas del Sistema.

A6. Elaboración de los manuales de Usuarios.

A7. Definición de la formación de usuarios Finales.

A8. Construcción de los componentes y procedimiento de migración y carga inicial   de datos.




                             MODELO Y METODOLOGIA



   El lenguaje unificado de modelado (UML) es un lenguaje para representar modelos de sistemas
   especialmente intensivos en uso de software y un método de desarrollo de software como
   piensan muchos.



   UML es un lenguaje gráfico para especificación, visualización construcción y documentación de
   piezas de información usadas o producidas durante el proceso de desarrollo de software. A estas
   piezas de información se le conoce como artefactos. El UML provee marco arquitectónico
   modelamiento de negocios y otros sistemas que son software.



   La decisión de utilizar UML (UnifiedModeling Lenguaje – Lenguaje unificado de modelado) como
   notación para nuestro método de software se debe a que es un estándar de modelado y tiene los
   siguientes beneficios aportados por el UML:



   1. Provee a los desarrolladores en lenguaje de modelamiento visual listo para utilizar, es así
      como nosotros podemos desarrollar e intercambiar modelos orientados a objetos
      significativos. El UML consolida un conjunto de conceptos que son generalmente aceptados
      por muchos métodos y herramientas de modelado y necesarios en una amplia gama de
      aplicaciones. Este es uno de los principales beneficios aportados por UML, permitiendo el
      avance de la industria de software para construir modelos que puedan ser utilizados por
      deferentes herramientas, debido a su aceptación como estándar de modelado.
2. Es independiente de los lenguajes de programación y de métodos y procesos de desarrollo
   de software. UML puede y debe soportar todos los lenguajes de programación y varios
   métodos y procesos para construir modelos sin mayor dificultad.


3. Proporciona una base frontal para entender el lenguaje de modelado. Los usuarios usan la
   formalidad para ayudarse a comprender el lenguaje, pero el formalismo no debe requerir
   muchos niveles o capas de uso excesivo de matemáticas. UML provee de una definición
   formal del modelo estático usando el diagrama de clases. Este diagrama es muy popular y
   ampliamente aceptado como aproximación formal de un modelo y del intercambio de
   información, pero además, el UML expresa restricciones de OCL (ObjectConstraint Lenguaje)
   y las operaciones en un lenguaje natural muy preciso.
Casos de Uso de Sistema


Proyecto Perú Bank
Modelo Conceptual


                                                                                                                                                                                                                AdmPoderes
                                                                                                                                                             * poderes : List<Poderes>
                                                                                                                                                             + <<Constructor>> AdmPoderes ()
                                                                                                                                                             +                  registrarPoderes (String codigo, String nombre, String tipoProducto)                      :   void
                                                                                                                                                             +                  registrarPoderesparabastanteo (String codigo, String nombre, String tipoProducto)         :   void
                                                                                                                                                             -                  validarDuplicado (String nombre, String tipoProducto)                                     :   void
                                                                                                                                                             +                  validarPoder (String nombre, String tipoProducto)                                         :   void
                                                                                                                                                             -                  validarDatosPoderes (String codigo, String nombre, String tipoProducto)                   :   void
                                                                                                                                                             -                  poderExiste (String nombre, String tipoProducto)                                          :   boolean
                                                                                                                                                             +                  buscarPoderes (String nombre, String tipoProducto)                                        :   Poderes
                                                                                                                                                             +                  buscarcodigoPoder (String nombre, String tipoProducto)                                    :   String
                                                                                                                                                                                ...
                                                                                                                                                                                                                            admpoder
                                                                               AdmBastanteos
* bastanteos : List<Bastanteo>
+ <<Constructor>> AdmBastanteos ()
+                   registrarBastanteo (String codigo, String codigopoder, String grupo, String codcli, String intervencion, double importe, String fechavenc)       :   void
+                   validarBastanteo (String codigopoder, String grupo, String codcli, String intervencion)                                                          :   void
+                   validarFecha (Date fecha1, Date fecha2)                                                                                                          :   void                                                                                                                                                 AdmRepresentantes
+                   retornoFecha (Date fecha1, Date fecha2)                                                                                                          :   boolean                                                           * representantes :   List<Representante>
-                   validarDatos (String codigo, String codigopoder, String grupo, String codcli, String intervencion, double importe, String fechavenc)             :   void                admbastanteo
                                                                                                                                                                                                                                           + <<Constructor>>     AdmRepresentantes ()
+                   bastanteoexisteCodigo (String codigopoder, String grupo, String codcli, String intervencion)                                                     :   String                                                            +                     registrarRepresentante (String codigo, String nombres, String apellidos, String tipodoc, String ndoc, String cargo, String grupo, String codcli)   :   void
+                   bastanteoExisteCodigo (String codigoCliente, String codigoPoder)                                                                                 :   String                                                            -                     validarDuplicado (String tipodoc, String ndoc)                                                                                                     :   void
+                   bastanteoExisteGrupo (String codigoBastanteo)                                                                                                    :   String                                                            -                     representanteExiste (String tipodoc, String ndoc)                                                                                                  :   boolean
+                   bastanteoExisteIntervencion (String codigoBastanteo)                                                                                             :   String                                               admrep
                                                                                                                                                                                                                                           -                     validarDatosrep (String codigo, String nombres, String apellidos, String tipodoc, String ndoc, String cargo, String grupo, String codcli)          :   void
+                   bastanteoExisteFecha (String codigoBastanteo)                                                                                                    :   String                                                            +                     buscarRepresentante (String tipodoc, String ndoc)                                                                                                  :   Representante
+                   validarConsulta (String grupo1, String Intervencion1, String grupo2, String Intervencion2)                                                       :   void                                                              +                     representanteExisteNdoc (String ndoc)                                                                                                              :   String
+                   bastanteoExisteImporte (String codigoBastanteo)                                                                                                  :   double                                                            +                     validarRepresentanteNdoc (String ndoc)                                                                                                             :   void
+                   validarImporte (double importe1, double importe2)                                                                                                :   void                                                              +                     representanteExisteGrupo (String codigo)                                                                                                           :   String
                    ...                                                                                                                                                                                                                                          ...

                                                                                                                                                                          AdmBastanteoVerificacionTest
                                                                                                                                                    *   admcli          : AdmClientes          = new AdmClientes()
                                                                                                                                                    *   admpoder        : AdmPoderes           = new AdmPoderes()
                                                                                                                                                    *   admrep          : AdmRepresentantes = new AdmRepresentantes()
                                                                                                                                                    *   admbastanteo : AdmBastanteos           = new AdmBastanteos()
                                                                                                                                                    +   llenarDatos ()                       : void
                                                                                                                                                    +   ValidarEstadoFecha (boolean sw)      : void
                                                                                                                                                    +   VerificarBastanteoPoderYComo ()      : void
                                                                                                                                                    +   VerificarBastanteoPoderYaVencio () : void
                                                                                                                                                    +   VerificarBastanteoImporteSuperior () : void
                                                                                                                                                        ...


                                                                                                                                                                                                                                             AdmBastanteoTest
                                                                                                                                                                                                            *   admcli     : AdmClientes = new AdmClientes()
                                                                                                                                                                                                            *   admpoder : AdmPoderes = new AdmPoderes()
                                                                                                                                                                                                            +   LlenarDatos ()                                                       : void
                                                                                                                                                                                                            +   siIngresoDatosDeberiaRegistrarBastanteoaSolafirma ()                 : void
                                                                                                                                                                                                            +   siIngresoDatosnoDeberiaRegistrarBastanteoaduplicadoSolafirma ()      : void
                                                                                                                                                                                                            +   siIngresoDatosDeberiaRegistrarBastanteoconCombinacion ()             : void
                                                                                                                                                                                                            +   siIngresoDatosnoDeberiaRegistrarBastanteoconCombinacionaexistente () : void
                                                                                                                                                                                                                ...


                                                                                                                                                            admcli

                                                                                                                                                              AdmClientes
                                                                                     * clientes : List<Cliente>
                                                                                     + <<Constructor>> AdmClientes ()
                                                                                     +                    registrarCliente (String codigo, String ruc, String razonSocial, String fechaInicio, String tipoEmpresa, int empleados) : void
                                                                                     -                    validarDuplicado (String codigo, String ruc)                                                                            : void
                                                                                     +                    validarCliente (String nombre)                                                                                          : void                admcli
                                                                                     -                    clienteExiste (String codigo, String ruc)                                                                               : boolean
                                                                                     +                    clienteexisteCodigo (String nombre)                                                                                     : String
                                                                                     -                    validarDatos (String codigo, String ruc, String razonSocial, String fechaInicio, String tipoEmpresa)                    : void
                                                                                     +                    buscarCliente (String codigo)                                                                                           : Cliente
                                                                                     +                    clienteExisteRuc (String ruc)                                                                                           : String
                                                                                     +                    validarClienteRuc (String ruc)                                                                                          : void
                                                                                                          ...
                                                                                                                                                                     admcli




                                                                                                                                                                                                   AdmRepresentanteTest
                                                                                                                                                                                   * admcli : AdmClientes = new AdmClientes()
                                                                                                                                                                                   + LlamarClientes ()                              : void
                                                                                                                                                                                   + siIngresoDatosDeberiaRegistrarRepresentante () : void
                                                                                                                                                                                   + IngresoDatosRepClienteInexistente ()           : void
                                                                                                                                                                                   + IngresoDatosVaciosRepresentante ()             : void
                                                                                                                                                                                   + IngresoRepresentanteDuplicado ()               : void
                                                                                                                                                                                     ...


                                                                           Representante                                                                                                                                                                               Bastanteo
-   codigo    : String                                                                                                                                                                   -    codigo        : String
-   nombres : String                                                                                                                                                                     -    codigopoder : String
-   apellidos : String                                                                                                                                                                   -    grupo         : String
-   tipodoc   : String                                                                                                                                                                   -    codcli        : String
-   ndoc      : String                                                                                                                                                                   -    intervencion : String
-   cargo     : String                                                                                                                                                                   *    importe       : double
-   grupo     : String                                                                                                                                                                   -    fechavenc     : String
-   codcli    : String                                                                                                                                                                   +     <<Constructor>> Bastanteo (String codigo, String codigopoder, String grupo, String codcli, String intervencion, double importe, String fechavenc)
+    <<Constructor>> Representante (String codigo, String nombres, String apellidos, String tipodoc, String ndoc, String cargo, String grupo, String codcli)                             +                       getCodigo ()                                                                                                                    : String
+                      getCodigo ()                                                                                                                          : String                    +                       getCodigopoder ()                                                                                                               : String
+                      getNombres ()                                                                                                                         : String                    +                       getGrupo ()                                                                                                                     : String
+                      getApellidos ()                                                                                                                       : String                    +                       getCodCli ()                                                                                                                    : String
+                      getTipodoc ()                                                                                                                         : String                    +                       getIntervencion ()                                                                                                              : String
+                      getNdoc ()                                                                                                                            : String                    +                       getImporte ()                                                                                                                   : double
+                      getCargo ()                                                                                                                           : String                    +                       getFechaVenc ()                                                                                                                 : String
+                      getGrupo ()                                                                                                                           : String                                            ...
+                      getCodcli ()                                                                                                                          : String
                       ...


                                                         Usuario                                                                                                                                                Cliente                                                                                                      <<Unresolved Class>>
-   nombre       : String                                                                                                                  -   codigo        : String                                                                                                                                                             Exception
-   documento : String                                                                                                                     -   ruc           : String
-   email        : String                                                                                                                  -   razonSocial : String
-   user         : String                                                                                                                  -   fechaInicio   : String
-   clave        : String                                                                                                                  -   tipoEmpresa : String
-   rol          : String                                                                                                                  -   empleados : int
+    <<Constructor>> Usuario (String nombre, String documento, String email, String user, String clave, String rol)                        +    <<Constructor>> Cliente (String codigo, String ruc, String razonSocial, String fechaInicio, String tipoEmpresa, int empleados)
+    <<Constructor>> Usuario ()                                                                                                            +                      getCodigo ()                                                                                                 : String
+                       getNombre ()                                                                                : String               +                      getRuc ()                                                                                                    : String
+                       getDocumento ()                                                                             : String               +                      getRazonSocial ()                                                                                            : String                                         ClienteException
+                       getEmail ()                                                                                 : String               +                      getFechaInicio ()                                                                                            : String
+                       getUser ()                                                                                  : String               +                      getTipoEmpresa ()                                                                                            : String                    + <<Constructor>> ClienteException (String mensaje)
+                       getClave ()                                                                                 : String               +                      getEmpleados ()                                                                                              : int                                         ...
+                       getRol ()                                                                                   : String                                      ...
                        ...


                                                             AdmUsuario                                                                                                                       Combinacion                                                                                                   Poderes                                                                                                      AdmCombinacion
* usuarios : List<Usuario>                                                                                                                              - codigo       : String                                                                                      - codigo       : String                                                                                  * combinaciones :    List<Combinacion>
* roles    : List<Rol>                                                                                                                                  - grupo        : String                                                                                      - nombre       : String                                                                                  + <<Constructor>>    AdmCombinacion ()
+ <<Constructor>> AdmUsuario ()                                                                                                                         - combinacion : String                                                                                       - tipoProducto : String                                                                                  +                    registrarCombinacion (String codigo, String grupo, String combinacion) : void
+                   registrarUsuario (String nombre, String documento, String email, String user, String clave, String rol) : Usuario                   + <<Constructor>> Combinacion (String codigo, String grupo, String combinacion)                              + <<Constructor>> Poderes (String codigo, String nombre, String tipoProducto)                            -                    validarDatos (String codigo, String grupo, String combinacion)         : void
+                   RegistrarRol (String nombre, String opcion)                                                             : Rol                       +                   getCodigo ()                                                : String                     +                   getCodigo ()                                              : String                   +                    bastanteoexistecombinacion (String codigo, String grupo)               : String
+                   logon (String user, String clave)                                                                       : void                      +                   getGrupo ()                                                 : String                     +                   getNombre ()                                              : String                   +                    validarCombinacion (String codigo, String grupo, String combinacion) : void
+                   encuentraUsuario (String user, String clave)                                                            : Usuario                   +                   getCombinacion ()                                           : String                     +                   getTipoProducto ()                                        : String                                        ...
                    ...                                                                                                                                                     ...                                                                                                          ...


                      AdmLlenarDatos                                                               Rol                                                                    AdmPoderesTest                                                  AdmClienteTest                                       AdmUsuarioTest                                          RepresentanteTest                                                          BastanteoTest
                                                                      - nombre : String
+ registrarVariosClientes ()       : AdmClientes                      - opcion : String                                                                 + siIngresoDatosDeberiaRegistrarPoderes () : void                + siIngresoDatosDeberiaRegistrarCliente () : void              + ejecutarLogon ()      : void            + representanteDeberiaCrearseConDatosIniciales () : void                + bastanteoDeberiaCrearseConDatosIniciales () : void
+ registrarVariosPoderes ()        : AdmPoderes                       + <<Constructor>> Rol (String nombre, String opcion)                              + IngresoDatosPoderNulo ()                 : void                + deberiaValidarDatosRequeridos ()         : void              + siRegistrarUsuario () : void              ...                                                                     ...
+ registrarVariosRepresentantes () : AdmRepresentantes                +                 getNombre ()                       : String                     + IngresoDatosPoderDuplicado ()            : void                + noDeberiaRegistrarClientesDuplicados () : void               + siRegistrarRol ()     : void
+ registrarVariosBastanteos ()     : AdmBastanteos                    +                 getOpcion ()                       : String                       ...                                                              ...                                                            ...
  ...                                                                                   ...


                      ClienteTest                                      UsuarioTest

+ clienteDeberiaCrearseConDatosIniciales () : void               + usuarioAdd () : void
  ...                                                              ...




                                                                                                                                                                                                                11
PROTOTIPOS DE PANTALLA



MENU PRINCIPAL




                           12
REGISTRO DE CLIENTES




                       13
REGISTRO DE REPRESENTANTES




                             14
REGISTRO DE PODERES




                      15
REPRESENTANTE TIENE PODER Y COMO




                                   16
EL PODER ESTA DADO PERO YA VENCIO




                                    17
REPRESENTANTE NO TIENE PODER PARA REALIZAR LA OPERACIÓN INDICA O EL IMPORTE ES
SUPERIOR




                                         18
LISTADO DE REGISTRO DE BASTANTEO




                                   19
NO HAY RESULTADO




                   20

Más contenido relacionado

Similar a Documentacion bastanteo - peru bank

Planificacion para Gerencia de Ventas RRHH - FZ0
Planificacion para Gerencia de  Ventas RRHH - FZ0Planificacion para Gerencia de  Ventas RRHH - FZ0
Planificacion para Gerencia de Ventas RRHH - FZ0
franckfz0
 
CERTIFICADO DE "MI PERFIL"
CERTIFICADO DE "MI PERFIL"CERTIFICADO DE "MI PERFIL"
CERTIFICADO DE "MI PERFIL"
Alejandro Leon
 
4. marcos de referencia distribuciones la mundial
4. marcos de referencia distribuciones la mundial4. marcos de referencia distribuciones la mundial
4. marcos de referencia distribuciones la mundial
DISTRIBUCIONES LA MUNDIAL
 

Similar a Documentacion bastanteo - peru bank (20)

VISUAL FAC
VISUAL FACVISUAL FAC
VISUAL FAC
 
Planificacion para Gerencia de Ventas RRHH - FZ0
Planificacion para Gerencia de  Ventas RRHH - FZ0Planificacion para Gerencia de  Ventas RRHH - FZ0
Planificacion para Gerencia de Ventas RRHH - FZ0
 
Auditoria informatica
Auditoria informatica Auditoria informatica
Auditoria informatica
 
Proyecto 2 juan pablo porras
Proyecto 2 juan pablo porrasProyecto 2 juan pablo porras
Proyecto 2 juan pablo porras
 
Estudio admnistrativo
Estudio admnistrativoEstudio admnistrativo
Estudio admnistrativo
 
Componente 3
Componente 3 Componente 3
Componente 3
 
Tdr termino de referencia 4 c2
Tdr termino de referencia 4 c2Tdr termino de referencia 4 c2
Tdr termino de referencia 4 c2
 
Componente 3
Componente 3Componente 3
Componente 3
 
Proyecto registro de marca.
Proyecto registro de marca. Proyecto registro de marca.
Proyecto registro de marca.
 
empresas
empresas empresas
empresas
 
Taller VEC.pdf
Taller VEC.pdfTaller VEC.pdf
Taller VEC.pdf
 
Capítulo 6: Planeación de la Auditoría (Equipo 6) 6A
Capítulo 6: Planeación de la Auditoría (Equipo 6) 6ACapítulo 6: Planeación de la Auditoría (Equipo 6) 6A
Capítulo 6: Planeación de la Auditoría (Equipo 6) 6A
 
Proyecto 2
Proyecto 2Proyecto 2
Proyecto 2
 
Proyecto 2
Proyecto 2Proyecto 2
Proyecto 2
 
CERTIFICADO DE "MI PERFIL"
CERTIFICADO DE "MI PERFIL"CERTIFICADO DE "MI PERFIL"
CERTIFICADO DE "MI PERFIL"
 
4. marcos de referencia distribuciones la mundial
4. marcos de referencia distribuciones la mundial4. marcos de referencia distribuciones la mundial
4. marcos de referencia distribuciones la mundial
 
Pasos y requisitos
Pasos y requisitosPasos y requisitos
Pasos y requisitos
 
Act2_45697.docx
Act2_45697.docxAct2_45697.docx
Act2_45697.docx
 
Proyecto Final Grupo Rey
Proyecto Final Grupo ReyProyecto Final Grupo Rey
Proyecto Final Grupo Rey
 
Pedro Espino Vargas - Plan de negocios version final
Pedro Espino Vargas - Plan de negocios version finalPedro Espino Vargas - Plan de negocios version final
Pedro Espino Vargas - Plan de negocios version final
 

Documentacion bastanteo - peru bank

  • 1. DIVISIÓN DE ESTUDIOS PROFESIONALES PARA EJECUTIVOS INGENIERÍA DE SISTEMAS Proyecto Bastanteo de Poderes - PeruBank Integrantes: Alcántara, Jorge Bruno, Harold Espíritu, Hans Villayzan Chancafe, Gabriel GitHub: https://github.com/hariki01/PeruBank PROGRAMACIÓN ORIENTADA A OBJETOS Profesor: José Amadeo Martin Díaz Lima, 28 de Noviembre de 2011
  • 2. INDICE 1. INTRODUCCIÓN ........................................................................................................................... 3 2. CASO PROPUESTO ....................................................................................................................... 3 3. HISTORIAS DE USUARIO.............................................................................................................. 4 4. ESPECIFICACIONES TÉCNICAS ..................................................................................................... 6 5. GESTIÓN DEL CÓDIGO ................................................................................................................. 6 6. CONSTRUCCIÓN Y METODOLOGÍA ............................................................................................. 7 7. CASOS DE USO........................................................................................................................... 10 8. MODELO CONCEPTUAL ............................................................................................................. 11 9. PROTOTIPOS DE PANTALLA ...................................................................................................... 12
  • 3. 1. INTRODUCCIÓN Con esta documentación se pretende explicar y detallar las especificaciones del trabajo desarrollado para atender los requerimientos del proyectoBastanteo de Poderes, así como para respaldarla metodología basada en Test que se empleó a los largo del proceso. Primero, que con esta metodología se desarrolla primero el test, para luego, en basea este, desarrollar el código necesario para que se cumpla el requerimiento del test. Esto facilita el desarrollo de un proyecto grupal como este, en el que se dividen los requerimientos y se van validando granularmente. En ese sentido, analizamos las historias de usuario detalladasen los requerimientos del proyecto y luego pasamos a definir los test necesarios para que estas especificaciones se cumplan a cabalidad, fragmentándolas según se considere necesario y definiendo las entidades conforme lo necesite el test para arrojar la respuesta esperada. Luego de haber conceptualizado los requerimientos en código, en forma de test, viene la etapa de implementación del código para hacer funcionar los test. Y finalmente, cerrando el ciclo de desarrollo de este proyecto, se Refactoriza el código, simplificándolo, reduciéndolo, organizándolo, pero manteniendo las funcionalidades logradas. 2. CASO PROPUESTO El caso propuesto es el desarrollo de un aplicativoque permita al cliente realizar el proceso de bastanteo de poderes, donde los usuarios puedan: - Registrar clientes - Inscribir representantes - Agregar poderes - Bastantear poderes - Verificar poderes - Consultar poderes - Controlar usuarios
  • 4. 3. HISTORIAS DE USUARIO Se describen los criterios bajos los cuales se puede dar por cumplido un requerimiento, para cada uno de estos requerimientos se establecen criterios que nuestros Test deben cumplir para dar por concluida una funcionalidad. Estas se listan a continuación: 1. Registrar clientes.- Como supervisor deseo registrar clientes de modo que los abogados puedan bastantear sus poderes bancarios. Cuando: Espero: Registro un cliente debo indicar su RUC, su código de - Confirmación del registro OK. cliente interno (8 dígitos), razón social, fecha de inicio - Mensaje de error si no se ingresan los datos de operaciones, tipo de empresa (SAA, SAC, SRL, etc.) requeridos. y cantidad de empleados. - Mensaje de error si el cliente ya existe (RUC o código de cliente repetido). 2. Inscribir representantes.- Como abogado deseo inscribir los representantes de cada cliente de modo que luego puedan tener los poderes bastanteados. Cuando: Espero: Inscribo un representante debo indicar su tipo y - Confirmación de la inscripción Ok. número de documento, sus nombres y apellidos, - Mensaje de error si no se ingresan los datos cargo en la empresa y un grupo de bastanteo (A, B, C, requeridos. etc.). - Mensaje de error si ya es representante de la empresa (según tipo y número de documento). 3. Agregar poderes.- Como supervisor deseo agregar el listado de poderes para que los abogados puedan asignarlos a los representantes según bastanteo. Cuando: Espero: Agrego un poder debo indicar su código corto de - Confirmación de la agregación Ok. consulta (ej.: CHCO, EFRE), el nombre (ej.: Cobro de - Mensaje de error si no se ingresan los datos Cheques, Retiro en Efectivo) y el tipo requeridos. producto/servicio (ej: Activo, Pasivo). - Mensaje de error si ya se agregó el poder (código corto). 4. Bastantear poderes.- Como abogado deseo poder anotar el resultado del bastanteo de modo que el personal de agencia pueda consultarlo antes de cada operación.
  • 5. Cuando: Espero: Bastanteo debo indicar qué poderes puede realizar - Mensaje de confirmación Ok. cada grupo de bastanteo de cada cliente. Además, - Mensaje de error si ya se anotó el mismo poder para para esta asignación debo indicar el tipo de el mismo grupo de bastanteo, en el mismo cliente, intervención (ej.: A Sola Firma, En Conjunto Con) y considerando el mismo tipo de intervención y con qué otro(s) grupo(s) de bastanteo si corresponde combinación. (combinación), así como el importe y la fecha de vencimiento (normalmente 6 meses). 5. Verificar poderes.- Como personal de agencia deseo poder consultar si un representante tiene poder para una operación o no de manera que pueda realizarla. Cuando: Espero: Consulto debo indicar el RUC del cliente, la - Mensaje indicando que el representante tiene poder identificación del representante, el código de poder y cómo. (o elegirlo de una lista), y el importe. - Mensaje indicando que el poder está dado pero ya venció. - Mensaje indicando que el representante no tiene poder para realizar la operación indicada o el importe es superior. 6. Consultar poderes.- Debo poder consultar los bastanteos registrados. Cuando: Espero: Consulto debo indicar el RUC del cliente, la - Lista de registros de bastanteo que se tienen identificación del representante, el grupo de según los criterios de búsqueda ingresados. bastanteo o tipo de intervención. - Mensaje indicando que no hay resultados según criterios. 7. Controlar usuarios.- Como administrador deseo poder controlar a los usuarios de modo que al ingresar puedan acceder a sus funcionalidades ya sea como supervisor, como abogado o empleado. Cuando: Espero: Doy de alta un usuario debo indicar qué rol tiene - Mensaje de bienvenida indicando el rol que tiene así asignado. Cada usuario debe identificarse por una como las opciones que le corresponde. clave al ingresar. - Mensaje de error si no se autentica correctamente.
  • 6. 4. ESPECIFICACIONES TÉCNICAS Lenguaje y Versión: El aplicativo fue desarrollado en JAVA v1.6. Test: Se utiliza la librería JUnit 4 para los Test. IDE: SpringSource Tool Suite2.8.0 5. GESTIÓN DEL CÓDIGO El desarrollo del aplicativo se realizó con el soporte de la herramienta colaborativa GitHUB, que permite trabajar en equipo de una manera distribuida. El repositorio principal https://github.com/hariki01/PeruBank es administrado por uno de los integrantes del grupo, mientras que el resto hace fork al proyecto, creando clones que permiten alterar el código y subirlo a su repositorio clonado, para que luego el administrador del proyecto junte el código en 1 solo. El historial de cambios se puede mostrar de la siguiente manera, gráficamente:
  • 7. CONSTRUCCION El sistema de información tiene como objetivo final elaborar y probar los distintos componentes de test en Java a partir del conjunto de la especificación lógicas y físicas del mismo con la metodología POO, obtenido en el proceso de diseño del sistema de Información. En esta etapa se hará realidad el modelo de diseño es decir se diseñan los objetos así como también se codificaran el entorno de pruebas. Los programas se definirán y se prepararan para que el sitio quede en funcionamiento. Así mismo realizara pruebas exhaustivas para asegurar el perfecto funcionamiento del mismo. Para este proyecto PERUBANK se utilizaran los siguientes elementos: Plataforma: Windows 7 Lenguaje de Desarrollo: Java Herramienta de Modelado: Rational Rose Herramienta de diseño: Spring Participantes en las actividades Construcción del Sistema Actividades de Información A1 A2 A3 A4 A5 A6 A7 A8 A9 Enegelbert Hans Espiritu x x x x x x x x x Muñoz Jorge Luis Alcántara Ospina x x x x x x x x x Harold Josimar Bruno Calixto Gabriel Jesus Villayzan Chancafe Actividades: A1. Preparación del entorno de Generación y construcción.
  • 8. A2. Generación del código de los componentes y Procedimientos. A3. Ejecución de las pruebas de Unitarias. A4. Ejecución de las pruebas de integración. A5. Ejecución de las pruebas del Sistema. A6. Elaboración de los manuales de Usuarios. A7. Definición de la formación de usuarios Finales. A8. Construcción de los componentes y procedimiento de migración y carga inicial de datos. MODELO Y METODOLOGIA El lenguaje unificado de modelado (UML) es un lenguaje para representar modelos de sistemas especialmente intensivos en uso de software y un método de desarrollo de software como piensan muchos. UML es un lenguaje gráfico para especificación, visualización construcción y documentación de piezas de información usadas o producidas durante el proceso de desarrollo de software. A estas piezas de información se le conoce como artefactos. El UML provee marco arquitectónico modelamiento de negocios y otros sistemas que son software. La decisión de utilizar UML (UnifiedModeling Lenguaje – Lenguaje unificado de modelado) como notación para nuestro método de software se debe a que es un estándar de modelado y tiene los siguientes beneficios aportados por el UML: 1. Provee a los desarrolladores en lenguaje de modelamiento visual listo para utilizar, es así como nosotros podemos desarrollar e intercambiar modelos orientados a objetos significativos. El UML consolida un conjunto de conceptos que son generalmente aceptados por muchos métodos y herramientas de modelado y necesarios en una amplia gama de aplicaciones. Este es uno de los principales beneficios aportados por UML, permitiendo el avance de la industria de software para construir modelos que puedan ser utilizados por deferentes herramientas, debido a su aceptación como estándar de modelado.
  • 9. 2. Es independiente de los lenguajes de programación y de métodos y procesos de desarrollo de software. UML puede y debe soportar todos los lenguajes de programación y varios métodos y procesos para construir modelos sin mayor dificultad. 3. Proporciona una base frontal para entender el lenguaje de modelado. Los usuarios usan la formalidad para ayudarse a comprender el lenguaje, pero el formalismo no debe requerir muchos niveles o capas de uso excesivo de matemáticas. UML provee de una definición formal del modelo estático usando el diagrama de clases. Este diagrama es muy popular y ampliamente aceptado como aproximación formal de un modelo y del intercambio de información, pero además, el UML expresa restricciones de OCL (ObjectConstraint Lenguaje) y las operaciones en un lenguaje natural muy preciso.
  • 10. Casos de Uso de Sistema Proyecto Perú Bank
  • 11. Modelo Conceptual AdmPoderes * poderes : List<Poderes> + <<Constructor>> AdmPoderes () + registrarPoderes (String codigo, String nombre, String tipoProducto) : void + registrarPoderesparabastanteo (String codigo, String nombre, String tipoProducto) : void - validarDuplicado (String nombre, String tipoProducto) : void + validarPoder (String nombre, String tipoProducto) : void - validarDatosPoderes (String codigo, String nombre, String tipoProducto) : void - poderExiste (String nombre, String tipoProducto) : boolean + buscarPoderes (String nombre, String tipoProducto) : Poderes + buscarcodigoPoder (String nombre, String tipoProducto) : String ... admpoder AdmBastanteos * bastanteos : List<Bastanteo> + <<Constructor>> AdmBastanteos () + registrarBastanteo (String codigo, String codigopoder, String grupo, String codcli, String intervencion, double importe, String fechavenc) : void + validarBastanteo (String codigopoder, String grupo, String codcli, String intervencion) : void + validarFecha (Date fecha1, Date fecha2) : void AdmRepresentantes + retornoFecha (Date fecha1, Date fecha2) : boolean * representantes : List<Representante> - validarDatos (String codigo, String codigopoder, String grupo, String codcli, String intervencion, double importe, String fechavenc) : void admbastanteo + <<Constructor>> AdmRepresentantes () + bastanteoexisteCodigo (String codigopoder, String grupo, String codcli, String intervencion) : String + registrarRepresentante (String codigo, String nombres, String apellidos, String tipodoc, String ndoc, String cargo, String grupo, String codcli) : void + bastanteoExisteCodigo (String codigoCliente, String codigoPoder) : String - validarDuplicado (String tipodoc, String ndoc) : void + bastanteoExisteGrupo (String codigoBastanteo) : String - representanteExiste (String tipodoc, String ndoc) : boolean + bastanteoExisteIntervencion (String codigoBastanteo) : String admrep - validarDatosrep (String codigo, String nombres, String apellidos, String tipodoc, String ndoc, String cargo, String grupo, String codcli) : void + bastanteoExisteFecha (String codigoBastanteo) : String + buscarRepresentante (String tipodoc, String ndoc) : Representante + validarConsulta (String grupo1, String Intervencion1, String grupo2, String Intervencion2) : void + representanteExisteNdoc (String ndoc) : String + bastanteoExisteImporte (String codigoBastanteo) : double + validarRepresentanteNdoc (String ndoc) : void + validarImporte (double importe1, double importe2) : void + representanteExisteGrupo (String codigo) : String ... ... AdmBastanteoVerificacionTest * admcli : AdmClientes = new AdmClientes() * admpoder : AdmPoderes = new AdmPoderes() * admrep : AdmRepresentantes = new AdmRepresentantes() * admbastanteo : AdmBastanteos = new AdmBastanteos() + llenarDatos () : void + ValidarEstadoFecha (boolean sw) : void + VerificarBastanteoPoderYComo () : void + VerificarBastanteoPoderYaVencio () : void + VerificarBastanteoImporteSuperior () : void ... AdmBastanteoTest * admcli : AdmClientes = new AdmClientes() * admpoder : AdmPoderes = new AdmPoderes() + LlenarDatos () : void + siIngresoDatosDeberiaRegistrarBastanteoaSolafirma () : void + siIngresoDatosnoDeberiaRegistrarBastanteoaduplicadoSolafirma () : void + siIngresoDatosDeberiaRegistrarBastanteoconCombinacion () : void + siIngresoDatosnoDeberiaRegistrarBastanteoconCombinacionaexistente () : void ... admcli AdmClientes * clientes : List<Cliente> + <<Constructor>> AdmClientes () + registrarCliente (String codigo, String ruc, String razonSocial, String fechaInicio, String tipoEmpresa, int empleados) : void - validarDuplicado (String codigo, String ruc) : void + validarCliente (String nombre) : void admcli - clienteExiste (String codigo, String ruc) : boolean + clienteexisteCodigo (String nombre) : String - validarDatos (String codigo, String ruc, String razonSocial, String fechaInicio, String tipoEmpresa) : void + buscarCliente (String codigo) : Cliente + clienteExisteRuc (String ruc) : String + validarClienteRuc (String ruc) : void ... admcli AdmRepresentanteTest * admcli : AdmClientes = new AdmClientes() + LlamarClientes () : void + siIngresoDatosDeberiaRegistrarRepresentante () : void + IngresoDatosRepClienteInexistente () : void + IngresoDatosVaciosRepresentante () : void + IngresoRepresentanteDuplicado () : void ... Representante Bastanteo - codigo : String - codigo : String - nombres : String - codigopoder : String - apellidos : String - grupo : String - tipodoc : String - codcli : String - ndoc : String - intervencion : String - cargo : String * importe : double - grupo : String - fechavenc : String - codcli : String + <<Constructor>> Bastanteo (String codigo, String codigopoder, String grupo, String codcli, String intervencion, double importe, String fechavenc) + <<Constructor>> Representante (String codigo, String nombres, String apellidos, String tipodoc, String ndoc, String cargo, String grupo, String codcli) + getCodigo () : String + getCodigo () : String + getCodigopoder () : String + getNombres () : String + getGrupo () : String + getApellidos () : String + getCodCli () : String + getTipodoc () : String + getIntervencion () : String + getNdoc () : String + getImporte () : double + getCargo () : String + getFechaVenc () : String + getGrupo () : String ... + getCodcli () : String ... Usuario Cliente <<Unresolved Class>> - nombre : String - codigo : String Exception - documento : String - ruc : String - email : String - razonSocial : String - user : String - fechaInicio : String - clave : String - tipoEmpresa : String - rol : String - empleados : int + <<Constructor>> Usuario (String nombre, String documento, String email, String user, String clave, String rol) + <<Constructor>> Cliente (String codigo, String ruc, String razonSocial, String fechaInicio, String tipoEmpresa, int empleados) + <<Constructor>> Usuario () + getCodigo () : String + getNombre () : String + getRuc () : String + getDocumento () : String + getRazonSocial () : String ClienteException + getEmail () : String + getFechaInicio () : String + getUser () : String + getTipoEmpresa () : String + <<Constructor>> ClienteException (String mensaje) + getClave () : String + getEmpleados () : int ... + getRol () : String ... ... AdmUsuario Combinacion Poderes AdmCombinacion * usuarios : List<Usuario> - codigo : String - codigo : String * combinaciones : List<Combinacion> * roles : List<Rol> - grupo : String - nombre : String + <<Constructor>> AdmCombinacion () + <<Constructor>> AdmUsuario () - combinacion : String - tipoProducto : String + registrarCombinacion (String codigo, String grupo, String combinacion) : void + registrarUsuario (String nombre, String documento, String email, String user, String clave, String rol) : Usuario + <<Constructor>> Combinacion (String codigo, String grupo, String combinacion) + <<Constructor>> Poderes (String codigo, String nombre, String tipoProducto) - validarDatos (String codigo, String grupo, String combinacion) : void + RegistrarRol (String nombre, String opcion) : Rol + getCodigo () : String + getCodigo () : String + bastanteoexistecombinacion (String codigo, String grupo) : String + logon (String user, String clave) : void + getGrupo () : String + getNombre () : String + validarCombinacion (String codigo, String grupo, String combinacion) : void + encuentraUsuario (String user, String clave) : Usuario + getCombinacion () : String + getTipoProducto () : String ... ... ... ... AdmLlenarDatos Rol AdmPoderesTest AdmClienteTest AdmUsuarioTest RepresentanteTest BastanteoTest - nombre : String + registrarVariosClientes () : AdmClientes - opcion : String + siIngresoDatosDeberiaRegistrarPoderes () : void + siIngresoDatosDeberiaRegistrarCliente () : void + ejecutarLogon () : void + representanteDeberiaCrearseConDatosIniciales () : void + bastanteoDeberiaCrearseConDatosIniciales () : void + registrarVariosPoderes () : AdmPoderes + <<Constructor>> Rol (String nombre, String opcion) + IngresoDatosPoderNulo () : void + deberiaValidarDatosRequeridos () : void + siRegistrarUsuario () : void ... ... + registrarVariosRepresentantes () : AdmRepresentantes + getNombre () : String + IngresoDatosPoderDuplicado () : void + noDeberiaRegistrarClientesDuplicados () : void + siRegistrarRol () : void + registrarVariosBastanteos () : AdmBastanteos + getOpcion () : String ... ... ... ... ... ClienteTest UsuarioTest + clienteDeberiaCrearseConDatosIniciales () : void + usuarioAdd () : void ... ... 11
  • 17. EL PODER ESTA DADO PERO YA VENCIO 17
  • 18. REPRESENTANTE NO TIENE PODER PARA REALIZAR LA OPERACIÓN INDICA O EL IMPORTE ES SUPERIOR 18
  • 19. LISTADO DE REGISTRO DE BASTANTEO 19