SinaduraDsi

DSI - SINADURA #

Los apartados del Diseño del Sistema de Información son los siguientes:

  • Diseño de la arquitectura
  • Diseño de clases

Diseño de Arquitectura #

En el presente apartado del Diseño de los Sistemas de Información, se explica el diseño de la arquitectura del aplicativo. Se trata de dar una explicación de la estructura global del sistema y de mostrar las necesidades de infraestructura para el correcto funcionamiento del software de firma.

Esquema #

En el siguiente gráfico se muestran, visualmente, los diferentes componentes que forman parte del diseño de la arquitectura del aplicativo.

Esquema de arquitectura

Detalle de la arquitectura #

La visión del total de la arquitectura se divide en dos partes principales; el propio aplicativo de firma y el sistema donde va a funcionar dicho aplicativo.

Dentro del aplicativo se encuentran tanto la parte de la vista, la interfaz con el usuario como la parte de control, que se encarga de realizar los diferentes procesos de la firma. Ambas capas son independientes entre sí, lo que proporciona modularidad y escalabilidad al aplicativo para su posible evolución futura. Relativo al sistema distinguimos los conceptos de Sistema Operativo, en el que se encuentran los drivers para el manejo de dispositivos smartcard y los almacenes de certificados, como el keystore de Java. Además sobre el Sistema Operativo será necesaria la máquina virtual de Java, plataforma sobre la que se desarrolla el aplicativo, así como un servidor SMTP necesario si se quiere aprovechar la funcionalidad de envío por correo.

A continuación se detallan de forma pormenorizada los diferentes componentes de la arquitectura.

  • Aplicativo
    • Capa Vista - Interfaz de usuario
      • Se utiliza el Standard Widget Toolkit (SWT) para Java, lo que proporciona portabilidad a la hora de acceder a las características de interfaz de usuario de cada Sistema Operativo. Es decir, conserva el look-and-feel propio de cada Sistema Operativo.
    • Capa Controlador - Módulos distribuidos como librerías Java (jar), que realizan los procesos para cubrir las necesidades del aplicativo.
      • Certificados - el módulo de certificados se encarga de la gestión de los distintos certificados tanto software (keystore) como hardware (smartcard).
      • Firma (crypto + iText) - el módulo de firma, mediante la utilización de librerías existentes, es el encargado de realizar la firma dado un documento y un certificado. Además de la generación del código de barras propio de los formatos PDF.
      • Factura - en el módulo de factura se gestiona el manejo de las facturas electrónicas finales, esto es la gestión del documento original con la firma asociada y con el certificado firmante.
      • Envío - satisfacer la necesidad de la gestión de envío por correo electrónico de las facturas electrónicas, es el objetivo del módulo de envío. Necesitará tener acceso a un servidor de correo saliente (SMTP)
  • Sistema
    • Sistema Operativo- la orientación multiplataforma del aplicativo proporciona independencia del Sistema Base sobre el que ejecutarse, por ello es una "pieza intercambiable" dentro de la arquitectura global.
    • Máquina Virtual de Java - para la ejecución sobre cualquier Sistema Operativo hay que tener instalada la máquina virtual de Java 6 o superior, ya que el desarrollo del aplicativo se realiza con tecnología Java.
    • SMTP - para el envío de correo el sistema debe proveer de un servidor de correo saliente.
    • Drivers-Smartcard - el acceso a tarjetas de firma se realiza a través de los drivers específicos del Sistema Operativo. Sin este componente bien configurado no es posible la lectura de tarjetas Smartcard.
    • Keystore - almacén Java de certificados de firma. Para almacenar los certificados software con los que el aplicativo puede firmar las facturas.

Diseño de clases #

Este apartado está orientado al desarrollo posterior del aplicativo. La estructuración interna del mismo, normas de nomenclatura y normas de desarrollo. La información se estructura de la siguiente forma:
  • Nomenclatura
    • Normativa a la hora de estructurar los componentes del aplicativo
  • Esquema de clases
    • Se mostrará el diseño general de los componentes del aplicativo
    • Detalle de los diferentes componentes

Nomenclatura #

El desarrollo del aplicativo está dividido en dos partes principales (ver apartado Diseño de Arquitectura del DSI), por un lado está la librería core del proyecto y, consumiendo dicha librería, la librería de interfaz de escritorio para usuario.

Paquetería #

La estructura de paquetes a utilizar en el proyecto es la siguiente:

  • net
    • esle
      • efactura
        • core
          • certificados
          • firmas
            • crypto
            • iText
          • facturas
          • senders
        • gui
          • certificados
          • firmas
          • facturas
          • senders

Nomenclatura de componentes #

Para los diferentes objetos Java a emplear, la nomenclatura de los mismos será la siguiente:

  • Clases
    • El nombre de la clase no tiene niguna restricción especial.
  • Beans
    • El nombre del bean termina con el sufijo bean.
  • Interfaces
    • El nombre del interface termina con el sufijo iface.

Como buena práctica y norma general, a la hora de elegir nombres para las clases, se pondrán nombres con sustantivos. Los métodos de las clases deberían ser verbos-acciones que interactuán sobre éstas.

Esquema de clases #

Dentro de este apartado se muestra el análisis de las clases necesarias para la implementación de la parte core de la aplicación. La parte de interfaz de usuario (gui) se deja abierta, esto se debe a que esta capa es independiente del núcleo de la aplicación de firma digital, por lo que se deja abierta a las diferentes implementaciones que detallarán su correspondiente diseño.

Esquema de clases del core

Tipos #

  • Interfaces
    • Especificaciones que tienen que cumplir los conceptos lógicos de la aplicación.
    • Son públicos para que puedan ser importados desde la capa gui.
  • Implementaciones
    • A partir de las interfaces se crean las implementaciones necesarias. Si se crean nuevas necesidades se crearán nuevas implementaciones para satisfacer dichas necesidades.
  • Fachadas
    • Clases que exponen funcionalidades para ser consumidas desde otras capas de la aplicación.
    • Son públicos para que puedan ser utilizados desde la capa gui.
  • Controladores
    • Clases que realizan funcionalidades de control.
    • Son privados dado su caracter interno.
  • Factorías
    • Clases que construyen objetos con implementaciones de interfaces específicos.
    • Son públicos para que puedan ser utilizados desde la capa gui.
  • Helpers
    • Clases ayudantes que realizan funcionalidades muy específicas.
    • Son privados dado su caracter interno.
2 archivos adjuntos
10152 Accesos
Promedio (0 Votos)
Comentarios