Marco Teórico

    1. Reingeniería

La reingeniería de software la podemos definir como la modificación de un producto software, o de ciertos componentes, usando para el análisis del sistema existente técnicas de Ingeniería Inversa. Para la etapa de reconstrucción, herramientas de Ingeniería Directa, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, re-utilización, comprensión o evaluación en este caso con el Sistema de Seguimiento a Egresados y Graduados de la Facultad de Electrotecnia y Computación.

Cuando una aplicación lleva siendo usada mucho tiempo, es fácil que esta aplicación se vuelva inestable como fruto de las múltiples correcciones, adaptaciones o mejoras que han podido surgir a lo largo del tiempo. Esto deriva en que cada vez que se pretende realizar un cambio se producen efectos colaterales inesperados y hasta de gravedad, por lo que se hace necesario, si se prevé que la aplicación seguirá siendo de utilidad, aplicar reingeniería a la misma.

Arnold [1], la definen como una actividad que mejora la comprensión del software, o bien, lo prepara o mejora para incrementar su facilidad de mantenimiento, reutilización o evolución.

Entre los beneficios de aplicar reingeniería a un producto existente se puede incluir:

  • Pueden reducir los riegos evolutivos de una organización.
  • Puede ayudar a las organizaciones a recuperar sus inversiones en software.
  • Puede hacer el software más fácilmente modificable.
  • Amplía las capacidades de las herramientas CASE.
  • Es un catalizador para la automatización del mantenimiento del software.
  • Puede actuar como catalizador para la aplicación de técnicas de inteligencia artificial para resolver problemas de reingeniería.

En el proceso de reingeniería se podrían distinguir las siguientes fases:

  • Traducción del código fuente. El programa se convierte a una versión moderna del lenguaje en que estaba codificado o a un lenguaje diferente. Los motivos que llevan a una traducción pueden ser muy diversos: falta de conocimientos del personal en ese lenguaje, falta de soporte en los compiladores, actualización de la plataforma de hardware o de software, políticas de empresa, necesidad de cambio en las interfaces de usuario, etc. El proceso será económicamente rentable, si se dispone de alguna herramienta que realice el grueso de la traducción. En muchos casos, el código que se obtiene tiene que ser modificado de forma manual.
  • Ingeniería inversa. Se analiza el programa y se extrae información de él, la cual ayuda a documentar su organización y funcionalidad. Es el proceso de analizar el software con el objetivo de recuperar su diseño y especificación. Lo normal es que la entrada a este proceso sea el código fuente si se dispone de él. Se alterna el análisis utilizando herramientas automatizadas con el trabajo manual en el código fuente para obtener el diseño del sistema. La información obtenida suele almacenarse como un grafo dirigido, que se va modificando y completando. A partir del grafo se generarán otros documentos como diagramas de estructura de programas, diagramas de estructura de datos y matrices. Las herramientas que se utilizan para comprender el programa suelen ser de tipo navegadores, que permiten moverse por el código, definir unos datos y rastrearlos por el programa. Suelen ser necesarias anotaciones manuales.
  • Mejora de la estructura del programa: Se analiza y modifica la estructura de control del programa para hacerlo más fácil de leer y comprender. Los programas pueden presentar lógica de control no intuitiva lo que puede hacer que no se entiendan fácilmente. El principal factor a tener en cuenta es que el control sea estructurado.
  • Modularización del programa: Es el proceso de reorganizar un programa de forma que partes relacionadas se integren de forma conjunta. Esto facilita eliminar componentes y mejorar la comprensión. Se pueden considerar diferentes tipos de módulos: abstracciones de datos, módulos de hardware, módulos funcionales, módulos de apoyo al proceso.
  • Reingeniería de datos: Se trata de analizar y reorganizar las estructuras, e incluso a veces, los valores de los datos de un sistema para hacerlos más comprensibles. Si la funcionalidad del sistema no cambia, la reingeniería de datos no es necesaria.
    1. Las Aplicaciones Web

Las Aplicaciones Web son interfaces entre un formulario diseñado específicamente para cubrir con las necesidades de un negocio y la información que actualmente tiene hacia el interior de su empresa, como pueden ser sistemas administrativos, inventarios, facturación, cuentas por cobrar, productos. La información puede ser de dominio público o restringida a ciertas personas a través de un nombre de usuario y contraseña, con el objetivo de que cualquier persona pueda consultarla e interaccionar con ella desde Internet.1

La puesta en marcha de un sistema web se realiza en un servidor, no siendo necesario instalarlo en cada terminal que lo va a utilizar. Dentro y fuera de la empresa el acceso al sistema se realiza desde cualquier PC o Dispositivo Móvil que tenga conexión a Internet, e inclusive sin contar con conexión dentro de la empresa, igual se puede acceder al sistema si las terminales están conectadas a través de la red interna. 2

El usuario interacciona con las aplicaciones web a través del navegador web. Como consecuencia de la actividad del usuario, se envían peticiones al servidor, donde se aloja la aplicación y que normalmente hace uso de una base de datos que almacena toda la información relacionada con la misma. El servidor procesa la petición y devuelve la respuesta al navegador que la presenta al usuario. Por tanto, el sistema se distribuye en tres componentes: el navegador, que presenta la interfaz al usuario; la aplicación, que se encarga de realizar las operaciones necesarias según las acciones llevadas a cabo por éste y la base de datos, donde la información relacionada con la aplicación se hace persistente. Esta distribución se conoce como el modelo o arquitectura de tres capas.

En todos los sistemas de este tipo y ortogonalmente a cada una de las capas de despliegue comentadas, podemos dividir la aplicación en tres áreas o niveles:

  • Nivel de presentación: es el encargado de generar la interfaz de usuario en función de las acciones llevadas a cabo por el mismo.
  • Nivel de negocio: contiene toda la lógica que modela los procesos de negocio y es donde se realiza todo el procesamiento necesario para atender a las peticiones del usuario.
  • Nivel de administración de datos: encargado de hacer persistente toda la información, suministra y almacena información para el nivel de negocio.

Los sistemas de información se desarrollan con diversos propósitos, según las necesidades de la empresa. Los sistemas de procesamiento de transacciones (TPS, Transaction Processing Systems) funcionan al nivel operativo de una organización, los sistemas de automatización de la oficina (OAS, Office Automation Systems) y los sistemas de trabajo del conocimiento (KWS, Knowledge Work Systems) apoyan el trabajo al nivel del conocimiento. Los sistemas de información gerencial (MIS, Management Information Systems) y los sistemas de apoyo a la toma de decisiones (DSS, Decisión Support Systems) se encuentran entre los sistemas de alto nivel. 3

    1. Bases de Datos

Las bases de datos están compuestas de datos y de metadatos. Los metadatos son datos que sirven para especificar la estructura de la base de datos; por ejemplo qué tipo de datos se almacenan (si son texto, números, fechas, otros), qué nombre se le da a cada dato (nombre, apellidos,...), cómo están agrupados, cómo se relacionan. De este modo se producen dos visiones de la base de datos:

  • Estructura lógica: Indica la composición y distribución teórica de la base de datos. La estructura lógica sirve para que las aplicaciones puedan utilizar los elementos de la base de datos sin saber realmente cómo se están almacenando. Es una estructura que permite idealizar a la base de datos. Sus elementos son objetos, entidades, nodos, relaciones, enlaces,... que realmente no tienen presencia real en la física del sistema. Por ello para acceder a los datos tiene que haber una posibilidad de traducir la estructura lógica en la estructura física.
  • Estructura física: Es la estructura de los datos tan cual se almacenan en las unidades de disco. La correspondencia entre la estructura lógica y la física se almacena en la base de datos (en los metadatos).

La mayor parte de las bases de datos que hoy se usan pertenecen a la categoría de bases de datos relacionales. El SQL (Structured Query Language- Lenguaje de Consulta Estructurado), permite que se desarrollen aplicaciones independientes del DBMS (DataBase Management System- sistema Gestor de Bases de Datos) concreto relacional que se use.

Las bases de datos por objetos son la nueva frontera en la investigación sobre las bases de datos; efectivamente, sus características de extendibilidad, que se derivan de la posibilidad de definir nuevos tipos de datos y comportamientos, las hacen particularmente apetecibles para todas las aplicaciones que usan datos complejos, como por ejemplo imágenes, sonidos o ambos coordinados.

    1. Seguridad web

Con respecto a la seguridad web, resulta más que conveniente instalar algún tipo de programa informático que garantice la privacidad de cada uno de los usuarios de esa computadora, especialmente si se trata de una computadora utilizada por un grupo. Vinculando la seguridad al servidor y sus respectivos datos de almacenamiento, es importante que se garantice la operación constantemente del servidor como también es fundamental que ninguno de los datos almacenados sea modificado y que solo personas autorizadas por el sistema puedan tener acceso a toda la información.4

Como parte de la seguridad de sistemas web, debemos tomar en cuenta:

  • Control de acceso: una vez protegido de los extraños, es necesario determinar si el usuario es la persona que dice ser para posteriormente permitirle realizar aquellas operaciones a las que tiene acceso.
  • Controles de integridad: protegen a los datos de ser, intencionalmente o por error, alterados durante su transmisión.

Un sitio en Internet, debe tratar la seguridad de la red y la seguridad de la plataforma.

La seguridad en web tiene 3 etapas primarias:

  • Seguridad de la computadora del usuario: Los usuarios deben contar con navegadores y plataformas seguras, libres de virus y vulnerabilidades. También debe garantizarse la privacidad de los datos del usuario.
  • Seguridad del servidor web y de los datos almacenados: Se debe garantizar la operación continua del servidor, que los datos no sean modificados sin autorización (integridad) y que la información sólo sea distribuida a las personas autorizadas (control de acceso).
  • Seguridad de la información que viaja entre el servidor web y el usuario: Garantizar que la información en tránsito no sea leída (confidencialidad), modificada o destruida por terceros. También es importante asegurar que el enlace entre cliente y servidor no pueda interrumpirse fácilmente (disponibilidad).5
1. Netcommerce, consultoría en comercio electrónico. Desarrollo de Aplicaciones Web. 2009
2. http://www.redhuanuco.com/sistemas_dinamicos.php
3. Kendall & Kendall, Análisis y diseño de sistemas, México: PEARSON EDUCACIÓN S.A, 2005, 6ta edición, pág. 28
4. http://www.antirrobo.net/seguridad/seguridad-web.html
5. http://www.mitecnologico.com

results matching ""

    No results matching ""