Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Generación de código en la programación Web avanzada (página 2)




Enviado por Leevan Abon Cepeda



Partes: 1, 2

Desventajas de los
generadores existentes:

En el mundo existen una serie de Generadores de
códigos innumerables, pero a pesar de sus facilidades,
también tienen sus desventajas, como:

  • Generan código solo referente a los
    métodos básicos en las conexiones a la Base de
    datos, es decir, insertar, modificar, eliminar y en casos muy
    específicos consultas.
  • No están orientados a una arquitectura, y
    para especificarle una se debe realizar todos los modelos
    correspondientes a la misma, siendo esto un trabajo muy
    engorroso y difícil de modelar.
  • A veces deben ser demasiado detallados los
    diagramas para generar un simple código y otras veces
    no es posible a través de diagramas especificar lo que
    se quiere hacer.
  • La mayoría de los generadores de
    código son aplicaciones de escritorio.

Arquitectura
ideal para la generación de código:

Una aplicación se compone de varios componentes,
así como el modo en que cada uno de los cuales realiza una
tarea diferente. Todas las soluciones de software contienen tipos
de componentes similares, independientemente de las necesidades
que deban cubrir. Por ejemplo, la mayoría de las
aplicaciones contienen componentes que tienen acceso a datos,
encapsulan reglas empresariales y controlan la interacción
con el usuario, entre otros. La identificación de los
tipos de componentes que se encuentran normalmente en las
soluciones de software facilitará la elaboración de
un plano técnico para el diseño de las
aplicaciones, así como para una rápida
creación o utilización de herramientas de
generación de código.

Tipos de componentes:

El análisis de la mayoría de las
soluciones basadas en modelos de componentes por capas muestra
que existen varios tipos de componentes habituales. En la figura
1.1 se muestra una ilustración completa en la que se
indican estos tipos de componentes. Aunque la lista que se
muestra en la figura no es completa, representa los tipos de
componentes de software más comunes encontrados en la
mayoría de las soluciones con una arquitectura en capas,
orientada a objetos y servicios.

Figura 1.1. Arquitectura en capas.
Tipos de componentes utilizados.

Componentes de interfaz de usuario
(IU)
. La mayor parte de las soluciones necesitan
ofrecer al usuario un modo de interactuar con la
aplicación. Las interfaces de usuario se implementan
utilizando formularios, controles u otro tipo de
tecnología que permita procesar y dar formato a los datos
de los usuarios, así como adquirir y validar los datos
entrantes procedentes de éstos. En un gran número
de casos, la interacción del usuario con el sistema se
realiza de acuerdo a un proceso predecible.

Componentes de lógica de negocio o
empresariales
. Independientemente de si el proceso consta de
un único paso o de un flujo de trabajo organizado, la
aplicación requerirá probablemente el uso de
componentes que implementen reglas empresariales y realicen
tareas empresariales. Por ejemplo, en la aplicación
comercial, deberá implementar una funcionalidad que
calcule el precio total del pedido y agregue el costo adicional
correspondiente por el envío del mismo. Los componentes
empresariales implementan la lógica empresarial de la
aplicación.

Componentes de acceso a datos. La mayoría
de las aplicaciones y servicios necesitan obtener acceso a un
almacén de datos en un momento determinado del proceso
empresarial. Por ejemplo, la aplicación empresarial
necesita recuperar los datos de los productos de una base de
datos para mostrar al usuario los detalles de los mismos,
así como insertar dicha información en la base de
datos cuando un usuario realiza un pedido. Por tanto, es
razonable abstraer la lógica necesaria para obtener acceso
a los datos en una capa independiente de componentes
lógicos de acceso a datos, ya que de este modo se
centraliza la funcionalidad de acceso a datos y se facilita la
configuración y el mantenimiento de la misma.

4. Servicios. Cuando un componente empresarial
requiere el uso de la funcionalidad proporcionada por un servicio
externo, tal vez sea necesario hacer uso de código para
administrar la semántica de la comunicación con
dicho servicio. Los agentes de servicios permiten aislar las
idiosincrasias de las llamadas a varios servicios desde la
aplicación y pueden proporcionar servicios adicionales,
como la asignación básica del formato de los datos
que expone el servicio al formato que requiere la
aplicación.

5. Componentes de seguridad: La directiva de
seguridad se ocupa de la autenticación,
autorización, comunicación segura, auditoria y
administración de perfiles.

Cada componente tiene sus especificidades las cuales
cumple funcionalidades de acuerdo al rol que tienen en la
aplicación. A continuación se muestra una
descripción un poco mas detallada por cada componente,
para una mucha mejor comprensión de la
arquitectura.

Funcionalidades
de los componentes de interfaz de usuario

Los componentes de la interfaz de usuario deben mostrar
datos al usuario, obtener y validar los datos procedentes del
mismo e interpretar las acciones de éste que indican que
desea realizar una operación con los datos. Asimismo, la
interfaz debe filtrar las acciones disponibles con el fin de
permitir al usuario realizar sólo aquellas operaciones que
le sean necesarias en un momento determinado. Los componentes de
interfaz de usuario:

  • No inicializan, participan ni votan en
    transacciones.
  • Presentan una referencia al componente de proceso
    de usuario actual si necesitan mostrar sus datos o actuar en
    su estado.
  • Pueden encapsular tanto la funcionalidad de
    visualización como un controlador.

Al aceptar la entrada del usuario, los componentes de la
interfaz:

  • Adquieren los datos del usuario y atienden su entrada
    utilizando guías visuales (como informaciones sobre
    herramientas) y sistemas de validación, así como
    los controles necesarios para realizar la tarea en
    cuestión.
  • Capturan los eventos del usuario y llaman a las
    funciones de control para indicar a los elementos de la
    interfaz de usuario que cambien el modo de visualización
    de los datos, bien inicializando una acción en el
    proceso de usuario actual, o bien, modificando los datos del
    mismo.
  • Restringen los tipos de entrada del usuario. Por
    ejemplo, un campo puede limitar las entradas del usuario a
    valores numéricos.
  • Realizan la validación de entrada de datos,
    por ejemplo, restringiendo el intervalo de valores que se
    pueden escribir en un campo determinado, o garantizando que se
    escriben los datos obligatorios.
  • Llevan a cabo la asignación y
    transformación simple de la información
    proporcionada por los controles del usuario en los valores
    necesarios para que los componentes subyacentes realicen su
    trabajo (por ejemplo, un componente de interfaz de usuario
    puede mostrar el nombre de un producto pero pasar el Id. del
    mismo a los componentes subyacentes).
  • Interpretar las acciones del usuario (como las
    operaciones de arrastrar y colocar o los clics de botones) y
    llamar a una función de control.
  • Pueden utilizar un componente de utilidad para el
    almacenamiento de datos en caché.
  • Pueden utilizar un componente de utilidad para
    realizar la paginación. Es frecuente, especialmente en
    las aplicaciones Web, mostrar largas listas de datos como
    conjuntos paginados. Asimismo, se suele disponer de un
    componente de ayuda para realizar el seguimiento de la
    página actual en la que se encuentra el usuario y, por
    tanto, invocar a las funciones de consulta paginada de los
    componentes lógicos de acceso a datos con los valores
    adecuados relativos al tamaño de página y
    página actual. La paginación se puede realizar
    sin la interacción del componente de proceso de
    usuario.

Componentes de
lógica de negocio
o
empresariales

Los componentes empresariales pueden ser la raíz
de las transacciones atómicas. Éstos implementan
las reglas empresariales en diversos patrones y aceptan y
devuelven estructuras de datos simples o complejas. Los
componentes empresariales deben exponer funcionalidad de modo que
sea independiente de los almacenes de datos y los servicios
necesarios para realizar la tarea, y se deben componer de forma
coherente desde el punto de vista del significado y
transaccional. Si el proceso empresarial invocará a otros
procesos empresariales en el contexto de una transacción
atómica, todos los procesos invocados deben garantizar que
sus operaciones participan en la transacción existente de
modo que las operaciones se deshagan en caso de que la
lógica empresarial que realiza las llamadas se interrumpa.
Una técnica muy segura es volver a intentar una
operación atómica si ésta da error, sin
miedo a que los datos pierdan su coherencia. Considere el
límite de una transacción determinada como un
límite de reintento. En la siguiente lista se resumen las
recomendaciones relativas al diseño de componentes
empresariales:

  • Básese lo más que pueda en la
    comunicación basada en mensajes.
  • Asegúrese de que los procesos expuestos en
    las interfaces de servicios no se pueden alterar y que, por
    tanto, el estado de la aplicación o el servicio no
    perderá su coherencia si se recibe el mensaje dos
    veces.
  • Elija con cuidado los límites de la
    transacción de modo que se puedan realizar reintentos
    y composiciones. Esto se aplica tanto a las transacciones
    atómicas como a las de ejecución larga.
    Asimismo, debe considerar el uso de reintentos para sistemas
    basados en mensajes, sobre todo al exponer la funcionalidad
    de la aplicación como un servicio.
  • Los componentes empresariales se deben poder
    ejecutar en el contexto de cualquier usuario de servicio; no
    necesariamente suplantando a un usuario de una
    aplicación específica. Esto permite su
    invocación con mecanismos que ni transmiten ni delegan
    la identidad del usuario.
  • Elija y mantenga un formato de datos coherente
    (como XML, conjunto de datos, etc.) para los
    parámetros de entrada y los valores de
    devolución.

Los componentes empresariales son llamados por los
siguientes clientes:

  • Interfaces de servicios.
  • Componentes de proceso de usuario.
  • Flujos de trabajo empresariales.
  • Otros componentes empresariales.

En la figura1.2 se muestra un componente empresarial
típico que interactúa con los componentes
lógicos de acceso a datos, las interfaces y los agentes de
servicios y otros componentes empresariales.

Figura 1.2. Componentes
empresariales

Obsérvese los siguientes puntos:

  1. Los componentes empresariales pueden ser invocados
    por los componentes de las capas de
    presentación.
  2. Los componentes empresariales pueden ser invocados
    por interfaces de servicios (por ejemplo, un servicio Web
    XML).
  3. Los componentes empresariales pueden llamar a
    componentes lógicos de acceso a datos para recuperar y
    actualizar datos, y pueden invocar a otros componentes
    empresariales.
  4. Los componentes empresariales también pueden
    invocar a agentes de servicios. Tenga especial cuidado al
    diseñar la lógica de compensación en caso
    de que el servicio al que desea tener acceso no esté
    disponible o lleve demasiado tiempo devolver una
    respuesta.

Nota:   Las
flechas que aparecen en la figura representan el flujo de
control, no el flujo de datos.

Diseño de
capas de acceso a datos y almacén de datos

Casi todas las aplicaciones y servicios necesitan
almacenar y obtener acceso a un determinado tipo de
datos.

Al trabajar con datos debe determinar:

  1. El almacén de datos que utiliza.
  2. El diseño de los componentes utilizados para
    obtener acceso al almacén de datos.
  3. El formato de los datos pasados entre componentes y
    el modelo de programación necesario para
    ello.

La aplicación o servicio puede disponer de uno o
varios orígenes de datos, los cuales pueden ser de tipos
diferentes. La lógica utilizada para obtener acceso a los
datos de un origen de datos se encapsulará en componentes
lógicos de acceso a datos que proporcionan los
métodos necesarios para la consulta y actualización
de datos. Los datos con los que la lógica de la
aplicación debe trabajar están relacionados con
entidades del mundo empresarial que forman parte de la empresa.
En determinados escenarios, puede disponer de componentes
personalizados que representan estas entidades, mientras que en
otros puede decidir trabajar con datos utilizando directamente
conjuntos de datos o documentos XML. La mayoría de las
aplicaciones utilizan una base de datos relacional como
almacén principal de los datos de la
aplicación.

Diseño de la directiva de
seguridad

La directiva de seguridad se ocupa de la
autenticación, autorización, comunicación
segura, auditoría y administración de perfiles, tal
como muestra la figura 1.3.

Figura 1.3. Aspectos de la directiva
de seguridad

Principios
generales sobre seguridad

Existen ciertos principios generales sobre seguridad que
se deben tener en cuenta a la hora de desarrollar una directiva
de seguridad. Hay que tener en cuenta las siguientes
directrices:

  • Siempre que sea posible, se debe recurrir a sistemas
    de seguridad que se hayan comprobado y demostrado su eficacia
    en lugar de generar su propia solución
    personalizada.
  • Nunca confiar en las aportaciones externas.
    Deberá validar todos los datos que introduzcan los
    usuarios o envíen otros servicios.
  • Considerar por principio que los sistemas externos no
    son seguros. Si su aplicación recibe datos
    confidenciales sin cifrar desde un sistema externo, asuma que
    dicha información no es segura.
  • Aplicar el principio del menor privilegio. No
    habilitar más atributos en las cuentas de servicios que
    los que resulten estrictamente necesarios para la
    aplicación. Obtener acceso a los recursos con cuentas
    que tengan los mínimos permisos necesarios.
  • Reducir el área de superficie. El riesgo se
    incrementa según aumenta el número de componentes
    y datos que haya expuesto a través de la
    aplicación y, por lo tanto, se deberá exponer
    únicamente la funcionalidad que se crea que otros van a
    utilizar.
  • Establecer como predeterminado un modo seguro. No
    habilitar servicios, tecnologías y derechos de cuenta
    que no sean absolutamente necesarios. Cuando se implemente la
    aplicación en equipos cliente o servidor, la
    configuración predeterminada de esta deberá ser
    segura.
  • No confiar en la seguridad a través del
    ocultamiento. El cifrado de los datos implica disponer de
    claves y de un algoritmo de cifrado demostrado. El
    almacenamiento de los datos seguros evitará el acceso a
    ésta en cualquier circunstancia. No se puede considerar
    seguridad la mezcla de diversas cadenas, el almacenamiento de
    la información en rutas de archivo inesperadas y
    demás técnicas similares.
  • Seguir los principios de STRIDE. (STRIDE responde a
    las siglas inglesas de Simulación, Alteración,
    Repudio, Revelación de información,
    Denegación de servicio y Elevación de
    privilegios). Todas estas son clases de vulnerabilidades de la
    seguridad contra los que un sistema se debe
    proteger.
  • Realizar la comprobación desde la misma
    puerta. No permitir que los procesos vayan más
    allá del lugar para el que los usuarios están
    autorizados.
  • Bloquear su sistema interna y externamente: los
    usuarios y operadores internos pueden representar un riesgo
    igual que los intrusos externos.

Conclusiones:

Valorados los impactos causados por los generadores de
código, se puede afirmar que su uso es de gran ayuda en la
confección de softwares, mejorándose grandemente la
calidad de la producción, el establecimiento de
estándares de código y el tiempo de desarrollo de
las aplicaciones.

Además, con un buen uso una arquitectura en
componentes se puede llegar a obtener un máximo
rendimiento del generador de código que se utilice,
así como una buena practica de lo métodos de
construcción de software utilizando capas o
componentes.

Referencias
Bibliográficas:

 

Referente al Autor:

Leevan Abon Cepeda

Año de nacimiento: 1983.

Titulo: Ingeniero en Ciencias
Informáticas.

Datos Adicionales: Trabajador de la Universidad de
Ciencias Informáticas. Graduado con Titulo de Oro de
Ingeniero en Ciencias Informáticas en dicha
universidad.

Referente al Trabajo:

Ciudad: Ciudad de la Habana.

País: Cuba.

Fecha de Realización: febrero del
2008.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter