capitulo ii marco teÓrico. 2. teorÍa de sistemas. 2.1...

31
25 CAPITULO II MARCO TEÓRICO. 2. TEORÍA DE SISTEMAS. 2.1 DESARROLLO DE APLICACIONES INFORMÁTICAS. 2.1.1 ARQUITECTURA DE SISTEMAS INFORMÁTICOS. GENERALIDADES Las tendencias de la evolución tecnológica, determinan que el presente y el futuro inmediato de la informática, esta asociado a las tecnologías que utilizan la facilidad de las comunicaciones, para enlazar entornos empresariales con los usuarios, que necesitan acceso a la información. La arquitectura basada en los estándares Internet es "Navegador/Red", significando que el foco principal es la informática basada en Red. Bajo este enfoque, las aplicaciones únicamente existen en las redes y están disponibles para su acceso en el momento en el que esta sea requerida. Las arquitecturas basadas en n-capas permiten a los componentes de negocio correr en una LAN, WAN o Internet. Esto significa que cualquiera con un ordenador y conexión a la Red posee toda la funcionalidad que tendría si se encontrase delante de su sistema de escritorio. Una arquitectura de este tipo permite la integración, escalabilidad, enlace o reingeniería de los sistemas existentes para adaptarse continuamente a los constantes cambios en las necesidades de negocio y convertirse en una tarea manejable en el futuro. 2.1.2 DESARROLLO DEL MODELO DE N-CAPAS. El modelo n-tier (n-capas) de informática es un cambio en los modelos de computación, desde los tradicionales sistemas cliente-servidor, hacia sistemas

Upload: others

Post on 25-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

25

CAPITULO II MARCO TEÓRICO.

2. TEORÍA DE SISTEMAS.

2.1 DESARROLLO DE APLICACIONES INFORMÁTICAS.

2.1.1 ARQUITECTURA DE SISTEMAS INFORMÁTICOS.

GENERALIDADES

Las tendencias de la evolución tecnológica, determinan que el presente y el

futuro inmediato de la informática, esta asociado a las tecnologías que utilizan

la facilidad de las comunicaciones, para enlazar entornos empresariales con los

usuarios, que necesitan acceso a la información. La arquitectura basada en los

estándares Internet es "Navegador/Red", significando que el foco principal es la

informática basada en Red. Bajo este enfoque, las aplicaciones únicamente

existen en las redes y están disponibles para su acceso en el momento en el

que esta sea requerida.

Las arquitecturas basadas en n-capas permiten a los componentes de negocio

correr en una LAN, WAN o Internet. Esto significa que cualquiera con un

ordenador y conexión a la Red posee toda la funcionalidad que tendría si se

encontrase delante de su sistema de escritorio. Una arquitectura de este tipo

permite la integración, escalabilidad, enlace o reingeniería de los sistemas

existentes para adaptarse continuamente a los constantes cambios en las

necesidades de negocio y convertirse en una tarea manejable en el futuro.

2.1.2 DESARROLLO DEL MODELO DE N-CAPAS.

El modelo n-tier (n-capas) de informática es un cambio en los modelos de

computación, desde los tradicionales sistemas cliente-servidor, hacia sistemas

26

distribuidos multiplataforma altamente modulables, y representa un ejemplo de

los nuevos paradigmas en el desarrollo de aplicaciones.

Hay que destacar la importante distinción que existe entre niveles (tiers) y

capas (layers). Una capa es una separación lógica del software, una

separación básica de tareas en el nivel del desarrollador, de modo que se

pueden dividir más fácilmente las responsabilidades con respecto al sistema. El

patrón de capas establece que el uso de capas ayuda a estructurar aplicaciones

que pueden descomponerse en grupos de sub-tareas, cada uno de los cuales

se encuentra en un nivel de abstracción determinado. Dicho de otro modo:

dividir las diversas tareas de un sistema empresarial (recuperación de datos,

almacenamiento de datos, ejecución de reglas empresariales con esos datos,

visualización de datos, recopilación de entradas, etc.) en componentes o sub-

secciones, de modo que se pueda realizar con mayor facilidad un seguimiento

de lo que ocurre, dónde y cuándo.

La división del trabajo más frecuente de capas corresponde a niveles de de

funcionalidad bien definido: capa de presentación, capa de negocio (lógica del

dominio) y capa de acceso a datos.

Por otra parte, un nivel es una capa física de hardware; normalmente, un equipo

en el que se puede ejecutar todo el sistema o una parte de él. El entorno

tradicional de cliente/servidor (en el que se escribe un programa que ejecute

instrucciones SQL con una base de datos que se ejecuta en un servidor

independiente) es un sistema de dos niveles. El diseño de World Wide Web se

basa originalmente en un enfoque de dos niveles; uno de ellos, el del equipo

cliente, se encuentra en una oficina o un hogar y tiene acceso remoto a un

segundo nivel, que se encuentra en una sala de servidores en un lugar

indeterminado.

27

Los principios y motivos de la disposición del diseño de software en capas,

están basados en razones que justifican el modelo.

En primer lugar, colocar equipos con las características de un servidor ante los

usuarios, iría en detrimento de la centralización de los datos y la eficacia desde

un punto de vista económico.

Luego estaba la necesidad de escalabilidad: Con el crecimiento de Internet y

una mayor accesibilidad para los usuarios, las empresas se dieron cuenta de

que podían llevar sus sistemas hasta los clientes, y trasladar buena parte de la

tarea que antes llevaban a cabo los sistemas internos, fuera de la compañía, a

Internet. Por ejemplo, en 1980, un cliente tenía que llamar a una compañía de

envíos y preguntar a un representante del servicio de atención en qué punto se

encontraba un determinado paquete en tránsito. El representante de atención al

cliente preguntaba el número de seguimiento y después usaba un sistema

interno de software para averiguar la ubicación del paquete. En 2005, el mismo

cliente sólo tenía que elegir su explorador web preferido en el sitio web de la

empresa y escribir el número de seguimiento. Se trata de los mismos algoritmos

de servicios de fondo que buscan en los mismos sistemas de almacenamiento

de datos, pero ahora es el usuario el que introduce directamente los datos, en

lugar de un empleado. Sin embargo, la ampliación del "alcance" del sistema

empresarial llevaba un costo aparejado: Mientras que el sistema interno sólo

tenía algunos centenares de usuarios (los representantes de atención al

cliente), ahora puede llegar a tener centenares de miles (los clientes). Y aquí

nos encontramos ante un problema, dado que la mayoría de los servidores de

bases de datos pueden admitir algunos centenares de conexiones simultáneas,

pero varios centenares de miles colapsarían la base de datos en poco tiempo

Sin embargo, se hizo evidente una propiedad relacionada con estas conexiones

simultáneas: La mayoría de las aplicaciones de cliente/servidor, la conexión

establecida con la base de datos permanecía inactiva la mayor parte del tiempo

(más del 95%), a la espera de solicitudes de operaciones con la base de datos.

28

Esto significaba que el cuello de botella se encontraba en el número de

conexiones, no en el trabajo que se llevaba a cabo. La implicación era que, para

ampliar la escalabilidad de la base de datos, sería preciso aumentar la cantidad

de trabajo que se podía realizar a través de cada una de estas conexiones. Así

pues, se creó un nivel intermedio, al que se conectan los clientes para la

multiplexación de las solicitudes a la base de datos. Si la base de datos sólo

puede admitir 100 conexiones, y cada conexión de cliente está siendo usada el

1% del tiempo, podemos ampliar la escalabilidad de la base de datos mediante

la conexión de 100 clientes a un servidor intermedio que, a su vez, usa una

conexión (100% del tiempo, 1% por cada cliente) para las operaciones con la

base de datos. La escalabilidad se multiplica por cien.

Lo anterior es valido para un entorno empresarial grande, pero difícilmente

justifica el modelo de n capas para entornos con pocos usuarios concurrentes

conectados a la base de datos. En este caso entran en juego factores de

seguridad. Para una aplicación que se ejecute en el equipo de un usuario final

(ya sea basada en web o de cliente enriquecida), no es probable que ningún

administrador de sistemas o consultor de seguridad recomiende colocar una

base de datos con información importante directamente tras un firewall (con

acceso directo desde equipos que se encuentren fuera del perímetro de

seguridad, por ejemplo). Si se interpone un equipo, con otro firewall detrás, se

crea lo que habitualmente se denomina una zona desmilitarizada, o DMZ, que

posibilita una mayor restricción del acceso a la base de datos. Esa zona

desmilitarizada fortalece considerablemente la infraestructura de seguridad, y

reduce las probabilidades de intrusión. Así, no sólo se protegen los datos de

intentos de robo, sino que también se contribuye a proteger los servidores (y,

por lo tanto, el resto de la aplicación o del sistema) de un ataque de denegación

de servicio.

Otro factor, que hace atractivos los sistemas de n módulos para muchos

propietarios de grandes sistemas, está relacionado con la implementación; es

29

decir, la instalación física del software en un equipo al que puedan tener acceso

los clientes. En el entorno tradicional de cliente/servidor, la convivencia de la

lógica empresarial con la lógica de presentación y la de acceso a datos llevó a

los programadores a una constatación poco agradable: Cada vez que se

precisaba una nueva actualización (por ejemplo, cambios en la forma de

procesar los datos en la empresa, o una nueva vista de esos datos), era preciso

reemplazar o ampliar con nuevo código el cliente de los escritorios de los

usuarios. Eso significaba, al menos entonces, que alguien (normalmente, el

desarrollador o administrador de sistemas que ocupaba el puesto más bajo en

el escalafón) tenía que ir de equipo en equipo para instalar el nuevo código. O

bien se pedía a los usuarios que descargasen a través de la red el código más

reciente; lo que, muchas veces, se pasaba por alto o no se hacía

correctamente. En ningún caso se daba una situación idónea para proponer

actualizaciones frecuentes. Las implementaciones requerían tiempo, durante el

cual tenía que interrumpirse el funcionamiento del sistema para evitar la

alteración semántica de datos debida a la mezcla de versiones de las

aplicaciones que trabajaban continuamente con la base de datos.

Este factor relacionado con la implementación contribuyó considerablemente a

acelerar la adopción del modelo de n niveles y, más concretamente, de la

aplicación basada en web. Ahora, en lugar de tener que llevar el código hasta el

escritorio de cada usuario, puede implementarse en el servidor web (único), de

modo que el explorador web del usuario final se limite a seleccionar los cambios

sin necesidad de más esfuerzo. Por sí misma, la implementación no constituye

un motivo para poner en marcha un sistema de n niveles; varias alternativas, no

disponibles en los tiempos de las aplicaciones tradicionales de cliente/servidor,

se han agregado ahora a la lista de posibilidades de implementación. De hecho,

actualmente es algo habitual lanzar una aplicación cliente enriquecida que se

actualice automáticamente en el inicio, conectándose a internet y descargando

los archivos necesarios para ello.

30

Algunas ventajas del modelo de desarrollo de aplicaciones en n-capas son las

siguientes:

Desarrollos paralelos (en cada capa)

Aplicaciones más robustas debido al encapsulamiento

Mantenimiento y soporte más sencillo (es más sencillo cambiar un

componente que modificar una aplicación monolítica)

Mayor flexibilidad (se pueden añadir nuevos módulos para dotar al

sistema de nueva funcionalidad)

Alta escalabilidad. La principal ventaja de una aplicación distribuida bien

diseñada es su buen escalado, es decir, que puede manejar muchas

peticiones con el mismo rendimiento simplemente añadiendo más

hardware. El crecimiento es casi lineal y no es necesario añadir más

código para conseguir esta escalabilidad.

Como tecnología, las arquitecturas de n-capas proporcionan una gran

cantidad de beneficios para las empresas que necesitan soluciones flexibles y

fiables para resolver complejos problemas inmersos en cambios constantes.

Diagrama esquemático de una arquitectura de 3 capas (3-tiers).

31

2.1.3 CARACTERÍSTICAS DE UNA APLICACIÓN WEB.

Aunque muchas variaciones son posibles, una aplicación Web está

comúnmente estructurada como una aplicación de tres-capas. En su

forma más común, el navegador Web es la primera capa, un servidor

usando alguna tecnología Web dinámica (como PHP) es la capa media, y

una base de datos como última capa. El navegador Web manda

peticiones a la capa media, que la entrega valiéndose de consultas y

actualizaciones a la base de datos, y genera la imagen con la

información requerida en la interfaz de usuario.

Las aplicaciones Web tienen la ventaja adicional que las actualizaciones

son relativamente poco costosas, ya que no requieren replicarse a los

clientes. Cualquier cambio o modificación de la aplicación solo es

requerida en el servidor Web.

2.2 SERVIDORES DE APLICACIONES.

2.2.1 DEFINICIONES.

Un servidor de aplicaciones es un servidor en una red de computadores

que ejecuta aplicaciones, y se puede definir como un servidor Web

interconectado con componentes adicionales para despliegue de

aplicaciones. Proporciona servicios de aplicación a computadoras cliente

y generalmente gestiona la mayor parte (o la totalidad) de las funciones

de lógica de negocio y de acceso a los datos de la aplicación. Los

principales beneficios de la tecnología de servidores de aplicación son la

centralización y la disminución de la complejidad en el desarrollo de

aplicaciones.

32

Las aplicaciones distribuidas que frecuentemente se ejecutan a través de

Internet (comercio electrónico, aplicaciones bancarias, etc.), están

formadas por componentes que pueden estar ubicados en distintas

máquinas. Estos componentes, se ensamblan en una aplicación, se

verifica que estén bien formados, y se despliegan en el entorno de

producción, donde se ejecutan y son controlados por el servidor de

aplicaciones.

2.2.2 CONFIGURACIÓN DE SERVIDORES DE APLICACIONES.

La configuración de un servidor de aplicaciones depende de los

requerimientos que se tengan de parte de los usuarios o la compañía, y

de las funcionalidades del software que se esta utilizando. Los servidores

de aplicación típicamente incluyen middleware (o software de

conectividad) que les permite intercomunicarse con variados servicios,

para efectos de confiabilidad, seguridad, no-repudio, etc. También

brindan a los desarrolladores una Interfaz para Programación de

Aplicaciones (API), de manera que no tengan que preocuparse por el

sistema operativo o por la cantidad de interfaces requeridas en una

aplicación Web moderna. Los servidores de aplicación también brindan

soporte a variedad de estándares, como HTML, XML, SSL, etc. lo que

incrementa la complejidad a la hora de configurar un servidor de

aplicaciones. Entre las tareas de un servidor de aplicaciones están:

Cargar los módulos requeridos del contenedor de servlets e

inicializarlo (antes de servir peticiones).

Cuando llega una petición, verifica si petición pertenece a un servlet,

si es así necesita permitir que el contenedor tome el control y lo

maneje.

33

El contenedor necesita saber qué peticiones va a servir, usualmente

basándose en algún patrón de la URL requerida, y dónde dirigir estas

peticiones.

Tareas complejas como cuando el usuario selecciona una

configuración que use hosts virtuales, o cuando se quiere que

múltiples desarrolladores trabajen en el mismo servidor Web pero en

distintos contenedores de Servlets.

Básicamente, un servidor de aplicaciones siempre está esperando

peticiones de un cliente HTTP. Cuando estas peticiones llegan, el

servidor hace lo que sea necesario para servir las peticiones

proporcionando el contenido necesario.

La configuración básica esta basada en la identidad de las URLs que

están bajo la responsabilidad del contenedor. Algunos ítems de

configuración que se deben evaluar son:

La configuración sobre los procesos disponibles y los puertos/host

TCP/IP sobre los que estos están escuchando.

Indicarle al servidor Web la localización de las librerías de los

módulos (para que pueda cargarlas en el inicio).

Configurar la información interna del adaptador sobre cuantos

registros guardar, cantidad de memoria a utilizar, etc.

La importancia de la configuración radica en que afecta directamente el

rendimiento de una aplicación, y también en el aspecto de seguridad, por

lo que se debe ser acucioso al configurar un servidor de aplicaciones.

34

2.2.3 SEGURIDAD DEL SERVIDOR DE APLICACIONES.

El servidor de aplicaciones es el que recibe las peticiones de los usuarios

para luego direccionarlas a la aplicación y a la base de datos. Por lo

tanto, se convierte en la puerta de entrada y el primer objetivo de un

ataque para intentar violar la seguridad del sistema. Debido a esto, es

importante tomar las medidas necesarias para asegurar la información.

Esto supone requerimientos de seguridad para obtener un ambiente

de producción que no pueda ser violado por algún intruso informático.

Entre los aspectos de seguridad a tomar en cuenta en un servidor de

aplicaciones, se encuentran los siguientes:

Integridad de datos: Asegurar que los datos no son modificados

durante la transmisión.

Privacidad de los datos: Se debe asegurar que los datos no son

inapropiadamente detectados mientras se transmiten.

Autenticación: Se debe garantizar una correcta validación de la

identidad de usuarios, clientes y equipos involucrados en el proceso.

Políticas de contraseñas: Se deben establecer y esforzar reglas de

cómo las contraseñas son definidas y utilizadas.

Protección de contraseñas: Debe asegurarse la seguridad de las

contraseñas.

Adicionalmente un servidor Web puede aprovechar estándares como

Secure Socket Layer para incrementar la seguridad en la transmisión de

datos, entre otros mecanismos para reforzar la seguridad.

35

2.3 SISTEMA OPERATIVO WINDOWS.

2.3.1 RESEÑA DEL SISTEMA OPERATIVO WINDOWS.

Cuando en 1980 IBM introdujo la computadora personal , popularmente

conocida como PC , una compañía hasta entonces apenas conocida,

Microsoft , había estado trabajando en un sistema operativo para la

nueva arquitectura de computadoras, basadas en circuitos LSI (Large

Scale Integration), que abrieron paso a la nueva generación de

computadoras. El sistema operativo DOS (Disk Operative System) de

Microsoft aparece en 1981 dominando este mercado de las PCs

inmediatamente, aunque el sistema UNIX, predomina en las estaciones

de trabajo. Desde un inicio, Windows nació bajo el concepto de un

sistema propietario, distribuido bajo licencia.

En la década de los 90, aumenta el uso de conexiones en redes, equipos

de trabajo y aplicaciones distribuidas, con ello los Sistemas Operativos

como Windows NT, etc., soportan muchos clientes, dando así el

nacimiento de la Computación en Red. El camino de este sistema

operativo abarca entre sus principales versiones el Windows 3.11,

Windows 95, Windows 98, Windows Millenium, Windows XP, Windows

NT Server, Windows 2000 Server y Windows 2003 Server.

2.3.2 CARACTERÍSTICAS DEL SISTEMA OPERATIVO

WINDOWS.

Windows es un sistema operativo propietario, creado y distribuido por la

empresa Microsoft. Los sistemas operativos Windows se orientan a que

los usuarios de todo el mundo desarrollen su potencial en el lugar de

36

trabajo, en el hogar y en los desplazamientos. Para esto, siempre se ha

caracterizado por una interfaz bastante amigable, que facilita su uso por

los usuarios.

Entre las características de Windows podemos mencionar:

Se ejecuta sobre múltiples arquitecturas de hardware y

plataformas.

Una limitante es que los programas hechos para Windows, solo se

ejecutan sobre este sistema operativo, por ejemplo el servidor de

base de datos SQL Server.

Reúne los requisitos de la industria para la seguridad del Sistema

Operativo.

Es un sistema que corre y balancea los procesos de forma

paralela en varios procesadores a la vez.

Es un Sistema Operativo de memoria virtual.

Uno de los pasos más importantes que revolucionó los Sistemas

Operativos de Microsoft fue el diseño y creación del Sistema Operativo

Windows NT, el cual significo una mejora respecto a todo lo que la

compañía había hecho hasta entonces, ya que implico un kernel

rediseñado totalmente desde el inicio.

Windows NT, y sus versiones posteriores, son sistemas que aprovechan

la potencia de los procesadores, ya que son diseñados para adaptarse a

las nuevas tecnologías, ofrece compatibilidad con varias plataformas

(OS/2, Unix entre otros) con buen rendimiento, conectividad y seguridad,

requisitos que poco a poco se fueron convirtiendo en indispensables

hasta el día de ahora.

La competencia en el mundo de la informática impuesta por los sistemas

operativos de licenciamiento libre, específicamente Linux en sus

diferentes distribuciones, imponen a Microsoft un reto constante para la

mejora de sus productos.

37

2.3.3 SEGURIDAD DE LOS SISTEMAS OPERATIVOS WINDOWS.

Windows es un sistema operativo inicialmente orientado mas a satisfacer

las demandas de funcionalidad de los usuarios que los requerimientos de

seguridad, u otros como estabilidad y confiabilidad. Esto implico que la

seguridad era una mejora al sistema operativo cuando este ya estaba

terminado, no un requerimiento de diseño.

Solo después de mucho tiempo, y cuando otros sistemas operativos que

compiten en el mercado como Unix y Linux, presentaban entre sus

características el ser poco vulnerables a ataques de intrusos, la empresa

Microsoft inicio un proceso de cambio en su filosofía. En el año 2002,

Microsoft dio el giro necesario para hacer de Windows un sistema

operativo tan seguro como los estándares exigidos por la industria, en

parte por el hecho que los ataques a servidores y sistemas basados en

Windows, se multiplicaban , y lo hacían de forma exitosa para los

intrusos, poniendo a muchas empresas fuera de línea, con grandes

perdidas económicas y de imagen, convirtiendo los requerimientos de

seguridad en una prioridad para cualquier proveedor de sistemas

operativos y aplicaciones.

Este esfuerzo ha dado resultados después de mucho tiempo, y las

últimas versiones de Windows presentan características más seguras

para los usuarios. Microsoft apunta a una mejora constante y sostenida

en sus productos para hacer sus sistemas invulnerables a ataques

maliciosos, mejorando el control de calidad de los productos desde su

diseño, y adoptando un esquema de actualizaciones más dinámico y

efectivo.

38

2.3.4 RENDIMIENTO DEL SISTEMA OPERATIVO

WINDOWS.

Windows siempre ha sido un sistema operativo bastante amigable en su

interfaz de usuario. Esto ha tenido un costo en términos de rendimiento, y

estabilidad del producto. Sin embargo, junto a tratar de resolver

problemas como los de seguridad, Microsoft aposto además a resolver lo

que los usuarios consideraban como fallas inherentes de sus productos.

A partir de Windows XP, Microsoft promovió un cambio radical a sus

antecesores, garantizando más estabilidad y seguridad.

Entre las propiedades de diseño para aumentar la productividad,

mejorando las redes y las herramientas de acceso remoto, están:

Fiabilidad a nivel empresarial: Proporcionando un nuevo nivel de

estabilidad.

Rendimiento avanzado: Los últimos sistemas operativos

administran los recursos del sistema con eficacia.

Nuevo diseño visual basado en tareas: Por medio de un diseño

más claro y nuevas pistas visuales llegará rápidamente a las

tareas que más utiliza.

Rápida reanudación desde el modo de hibernación o suspensión,

a un tiempo razonable de espera para los usuarios.

Restaurar sistema: Si se produce algún error en el equipo, puede

devolver el sistema a su estado anterior.

Todas estas características hacen de los productos Windows, un

sistema operativo del que puede esperarse un rendimiento aceptable.

39

2.4 BASES DE DATOS.

Una base de datos es un conjunto de datos que pertenecen al mismo

contexto almacenados sistemáticamente para su uso.

Un archivo por sí mismo, no constituye una base de datos, sino más bien

la forma en que está organizada la información que da origen a la base

de datos.

Entonces, podríamos definir una base de datos como un conjunto de

datos estructurados, fiables y homogéneos, organizados

independientemente, accesibles a tiempo real, compartibles por usuarios

concurrentes que tienen necesidades de información, diferente y no

predecible en el tiempo.

La idea general es que se trata de una colección de datos que cumplen

las siguientes propiedades:

Están estructurados independientemente de las aplicaciones y del

soporte de almacenamiento que los contiene.

Presentan la menor redundancia posible.

Son compartidos por varios usuarios y/o aplicaciones.

Un servidor de base de datos es un software capaz de servir a las

propiedades del repositorio a los usuarios y aplicaciones, y es

comúnmente conocido por el termino RDBMS (Relational Data Base

Management System). Existen en el mercado gran cantidad de

productos comerciales y libres que pueden utilizarse como servidores

de bases de datos, sin embargo, debe hacerse un análisis de

requerimientos para determinar el tipo de base de datos que es

necesario adquirir.

40

2.4.1 CARACTERÍSTICAS DE CONFIDENCIALIDAD,

INTEGRIDAD Y SEGURIDAD DE INFORMACIÓN.

Un servidor de base de datos debe tener características que garanticen

que la información que almacena se mantiene con el paso del tiempo,

solo modificándose por los procesos autorizados a ello. Las principales

características de un servidor de base de datos son:

Confidencialidad: El acceso a la información solo debe ser hecho por

los canales determinados por los gestores del sistema o el negocio.

Para esto, un servidor de base de datos debe tener un manejo de

accesos basados en usuarios, privilegios y contraseñas, que sea

confiable y difícil, por no decir imposible, de vulnerar.

Integridad: significa que las modificaciones de los datos deben

cumplir las reglas del negocio, y ser hechas respetando las relaciones

que han sido definidas entre los mismos datos. Se pretende que los

datos no sean modificados de forma maliciosa.

Seguridad: La seguridad garantiza en primer lugar que los datos se

mantienen inaccesibles a cualquier intruso, y en segundo lugar que

no hay perdidas de información por cualquier motivo. Debe contar con

validaciones a nivel de usuarios, objetos y mecanismos que permitan

rastrear el uso o violación de los accesos otorgados.

Las propiedades descritas anteriormente definen la calidad de un

servidor de base de datos. Los usuarios de sistemas basados en bases

de datos deben evaluar las características mencionadas, para acceder a

una plataforma que aporte a los objetivos trazados por el negocio.

41

2.4.2 CRITERIOS DE SELECCIÓN DE UNA BASE DE DATOS.

Habiendo en el mercado una amplia oferta de servidores de base de

datos, se debe hacer una cuidadosa selección del producto que a fin de

cuentas será el que proteja la información de la empresa. Se deben

evaluar diversos criterios entre los cuales están los siguientes:

Estabilidad: El servidor debe ser capaz de mantener una operación

continua, sin caídas repentinas, soportando la carga de los usuarios

en todo momento.

Dimensiones de la base de datos: Para evaluar esto es importante el

análisis de los requerimientos, que pueden dar una idea acerca de la

cantidad de datos que se manejaran con el tiempo, permitiendo tener

una base que no quedara pequeña al sistema al poco tiempo.

Escalabilidad: El servidor de base de datos debe ser capaz de

soportar no solo al sistema original, sino ampliaciones en el manejo

de procesos, recursos y usuarios.

Presupuesto: La disponibilidad del recurso económico es una variable

a tomar en cuenta. Dependiendo del costo del servidor, podría ser

inaccesible para muchos usuarios.

Compatibilidad: Una base de datos debe poder soportar aplicaciones

hechas en lenguajes de última generación. Esto permitirá aprovechar

los conocimientos y experiencia de diversos proveedores, sin

depender de uno solo, y minimiza los problemas al momento de

efectuar migraciones o actualizaciones a los sistemas.

42

2.4.3 BASE DE DATOS MYSQL.

MySQL es un servidor de bases de datos SQL de código abierto (Open

Source). Lo desarrolla, distribuye y soporta la empresa MySQL AB. Entre

las principales características del servidor de base de datos MySQL

podemos mencionar:

MySQL es un sistema de gestión de base de datos: Un sistema de

gestión de base de datos como MySQL Server permite añadir,

acceder, y procesar los datos almacenados en una base de datos.

MySQL es un sistema bases de datos relacionales: Una base de

datos relacional almacena datos en tablas separadas en lugar de

poner todos los datos en un gran almacén. MySQL utiliza el

"Structured Query Language" (SQL) que es el lenguaje estandarizado

más común para acceder a bases de datos.

MySQL software es Open Source: Open Source significa que usa la

licencia GPL (GNU General Public License). Se puede descargar el

software MySQL de internet y usarlo sin pagar nada. También es

posible estudiar el código fuente y cambiarlo para adaptarlo a lo que

uno necesita.

El servidor de base de datos MySQL es rápido, fiable y fácil de usar:

MySQL Server se desarrolló originalmente para tratar grandes bases

de datos mucho más rápido que soluciones existentes. Su

conectividad, velocidad, y seguridad hacen de MySQL Server

altamente apropiado para acceder bases de datos en Internet

43

MySQL Server trabaja en entornos cliente/servidor y web.

Puede concluirse que MySQL es una base de datos capaz de satisfacer

los requerimientos de un ambiente de producción que maneje gran

volumen de datos, con confiabilidad y seguridad garantizadas.

2.5 LENGUAJES DE PROGRAMACIÓN.

2.5.1 DEFINICIÓN DE LENGUAJE DE PROGRAMACIÓN.

Desde el punto de vista de la informática, un lenguaje de programación

es un conjunto de instrucciones que puede ser utilizado para controlar el

comportamiento de una máquina, particularmente una computadora o un

servidor. Consiste en un conjunto de reglas sintácticas y semánticas que

definen su estructura y el significado de sus elementos, respectivamente.

Un lenguaje de programación permite a un programador especificar de

manera precisa sobre qué datos una computadora debe operar, cómo

deben ser estos almacenados, transmitidos y qué acciones debe tomar

bajo una variada gama de circunstancias. Todo esto, a través de un

lenguaje que intenta estar relativamente próximo al lenguaje humano o

natural, de tal forma que facilite su entendimiento, tal como sucede con el

lenguaje Léxico.

Orientando el concepto a desarrollo de aplicaciones accesibles por redes

de área amplia, la programación Web permite la creación de sitios

dinámicos o aplicaciones de escritorio en Internet. Esto se consigue

generando los contenidos del sitio a través de una base de datos

mediante lenguajes de script como pueden ser PHP, ASP o JAVA, por

mencionar los más utilizados. Con la programación Web se pueden crear

44

sitios dinámicos o potentes aplicaciones informáticas para negocios, con

gran flexibilidad en cuanto a acceso y disponibilidad, y distribuidas en

diversos sitios según su tamaño y requerimientos.

2.5.2 LENGUAJE DE PROGRAMACIÓN PHP.

GENERALIDADES.

PHP es un lenguaje de programación nacido en 1994, creado por el

programador danés-canadiense Rasmus Lerdorf, y asociado luego bajo

los términos de licenciamiento libre. Su primera versión utilizable por los

usuarios salió hasta 1995. PHP en sus inicios era acrónimo de “Personal

Home Page”, termino que evoluciono posteriormente a “Profesional

Home Pages”, llegando por ultimo en el año 1997 a su actual significado,

“Hypertext Pre-processor”, liberado en ese entonces como la versión

PHP3. PHP es un lenguaje orientado a la programación en entorno web,

basado en scripts que se insertan en paginas HTML, y teniendo como

característica que el código PHP se interpreta y ejecuta del lado del

servidor, nunca del lado del cliente.

En julio de 2004 es liberada la versión PHP 5, siendo su última

actualización la versión 5.2.4, liberada en agosto de 2007. PHP es

utilizado para la creación de aplicaciones para servidores, o creación de

contenido dinámico para sitios Web, y ofrece una gran cantidad de

funciones para la explotación de bases de datos de una manera sencilla

y sin complicaciones.

Su interpretación y ejecución se da en el servidor Web, como se dijo

previamente, y en el cual se encuentra almacenado el script, de forma

que el cliente sólo recibe el resultado de la ejecución. Además es posible

45

utilizar PHP para generar archivos PDF, Flash, así como imágenes en

diferentes formatos, entre otras cosas.

Permite la conexión a diferentes tipos de servidores de bases de datos

tales como MySQL, Postgres, Oracle y Microsoft SQL Server entre otros.

También tiene la capacidad de ser ejecutado en la mayoría de los

Sistemas operativos tales como UNIX, Linux, Windows y Mac OSX, y

puede interactuar con los servidores de web más populares ya que existe

en versión CGI, módulo para Apache, e ISAPI.

PHP se puede obtener libremente desde el sitio

www.php.net/downloads.php, y la documentación para usuarios se puede

descargar en el sitio www.php.org.

RESUMEN DE LAS PRINCIPALES CARACTERÍSTICAS DE PHP:

Es un lenguaje multiplataforma.

Capacidad de conexión con la mayoría de servidores de base de

datos utilizados en la actualidad.

Leer y manipular datos desde diversas fuentes, incluyendo datos que

pueden ingresar los usuarios desde formularios HTML.

Capacidad de expandir su potencial utilizando la enorme cantidad de

módulos nativas del lenguaje.

Posee una amplia documentación en su página oficial, entre la cual

se destaca que todas las funciones del sistema están explicadas y

ejemplificadas en un único archivo de ayuda.

Es libre, por lo que se presenta como alternativa de fácil acceso

desde el punto de vista económico.

Permite las técnicas de Programación Orientada a Objetos, aunque

no obliga a su implementación.

46

Permite crear los formularios para la Web.

Implementa el manejo de excepciones.

2.5.3 ESQUEMA DE FUNCIONAMIENTO DE PHP.

El diagrama anterior describe de forma esquemática el funcionamiento

básico de un proceso ejecutándose con PHP:

1- El cliente, desde el navegador hace una petición al

servidor de capa internet.

2- El servidor de internet (normalmente llamado de capa

media) recibe la petición y la procesa, utilizando su

modulo de PHP.

3- La pagina es procesada y el resultado enviado en HTML

al navegador del usuario.

47

Este funcionamiento sencillo, permite el desarrollo de aplicaciones

robustas con lenguaje PHP.

2.5.4 ADMINISTRADOR DE BASE DE DATOS PHP.

La conectividad a diversas bases de datos, es una de las

principales opciones del lenguaje PHP, por lo que la administración de

bases de datos se vuelve una imperiosa necesidad, y para desempeñar

esta función, existe una herramienta libre hecha en PHP, el

“phpMyAdmyn”, el cual es liberado en diferentes versiones, y que se

utiliza para efectuar tareas administrativas y de mantenimiento sobre

servidores de bases de datos como MySQL y Postgress. Consta de una

interfaz grafica fácil de conocer y entender. No requiere mayor proceso

de instalación, ni recursos de hardware, y se encuentra disponible sin

costo de licenciamiento. Entre las tareas que se pueden ejecutar están:

Creación de objetos de base de datos, como tablas, índices, y

objetos asociados.

Modificación de estructuras de base de datos.

Operaciones de mantenimiento de datos (SQL).

Tareas de respaldo de información, como importar y/o exportar

estructuras y datos.

Consultas y modificación de privilegios de usuarios.

48

2.6 MODELOS DE DESARROLLO DE SOFTWARE.

2.6.1 INTRODUCCIÓN A LOS PARADIGMAS DE DESARROLLO

DE SOFTWARE.

Concebido como un Conjunto de instrucciones que cuando se ejecutan

suministran la función y comportamiento adecuados, el software es un

elemento de los Sistemas Basados en Computadora y tiene

características peculiares. La más importante es el hecho que el

“software se desarrolla”, lo cual requiere todo un proceso que involucre

las tareas de Análisis, Especificación, Planificación, Diseño, Codificación,

Prueba y Mantenimiento.

La Ingeniería de Software (IS) es una disciplina de la Informática que

ofrece métodos y técnicas para desarrollar, mantener y documentar

software. La Ingeniería de Software integra Métodos, Herramientas y

Procesos para el desarrollo del Software, bajo un enfoque de calidad.

Los métodos indican cómo construir técnicamente el software.

Las herramientas son un soporte para el proceso y los métodos. Los

procesos son los encargados de integrar los métodos y herramientas,

además de definir la secuencia en la que se aplican los métodos, las

entregas que requieren, los controles de calidad y las guías para el

desarrollo. Dentro del Desarrollo de Software, existen tres fases

Genéricas que deben cumplirse:

49

Definición. Tareas que la componen:

Análisis del sistema.

Planificación del Proyecto. QUÉ

Análisis de requisitos.

Desarrollo. Tareas que la componen:

Diseño del software.

Codificación. CÓMO

Prueba del Software.

Mantenimiento. Tipos de cambios:

Corrección.

Adaptación.

Mejora. TIPO

Prevención o Reingeniería.

Todo lo definido anteriormente, se encierra en un concepto de vital

importancia “El Modelo o Paradigma de Desarrollo de Software”.

El Modelo o Paradigma de Desarrollo dentro de la Ingeniería de Software

es una estrategia que comprenden métodos, herramientas y procesos. El

desarrollador debe seleccionar un Modelo de proceso para ingeniería del

software según la naturaleza del proyecto y la aplicación, los métodos,

las herramientas a utilizar, y los controles y entregas que se requieren.

Los diferentes paradigmas intentan ordenar las actividades en el

desarrollo del software, de manera que no sean llevadas a cabo de

manera caótica.

Para efectos de visualización y comparación se exponen brevemente 4

paradigmas, que pueden ser aplicados en el desarrollo de Sistemas

Informáticos, destacando sus virtudes y debilidades.

50

2.6.2 MODELO LINEAL SECUENCIAL

Es el también llamado Ciclo de Vida Clásico de los Sistemas o Modelo

de Cascada. Sugiere un enfoque sistemático o secuencial del desarrollo

de software; comenzando en un nivel de sistemas y progresando con el

Análisis, Diseño, Codificación, Prueba y Mantenimiento.

MODELO LINEAL SECUENCIAL

Es el paradigma de desarrollo de software más antiguo que existe, sin

embargo aun es muy utilizado. Algunas de las desventajas que presenta:

El cliente pocas veces establece todos los requerimientos al principio.

El cliente no tiene un producto hasta el final.

Los responsables del desarrollo de software se pueden retrasar

innecesariamente

Con todo y sus desventajas este paradigma sigue siendo el más utilizado

para el desarrollo del software, siendo mejor que un enfoque al azar.

Ingeniería de Sistemas

Prueba Codificación

Diseño Análisis

Mantenimiento

51

2.6.3 MODELO DE CONSTRUCCIÓN DE PROTOTIPOS.

Es un modelo que se centra en la idea de presentar uno o más prototipos

antes de llegar a un producto final. Parte de la recolección o

determinación de los requerimientos, hace un diseño rápido que da como

resultado un modelo inicial, sobre el cual se van haciendo mejoras, hasta

convertirse en un software funcional.

MODELO DE CONSTRUCCIÓN DE PROTOTIPOS

Cualidades de este Modelo:

El cliente no puede especificar todos los requerimientos al principio. Por

medio de este modelo pueden ir agregándose, nuevos requerimientos a

medida se vayan presentando los prototipos.

Ayuda a comprender mejor en caso de que existan dudas de alguna

parte del sistema.

Facilita un modelo al programador.

Reduce el riesgo de construir productos que no satisfagan las

necesidades de los usuarios

Recolección de

Requerimientos

Evaluar y pulir los

Requerimientos

Construcción del

Prototipo Diseño Rápido

Producto Terminado

52

Reduce costos y aumenta la probabilidad de éxito

Una vez identificados todos los requisitos mediante el prototipo, se

construye el producto de ingeniería.

Desventajas o problemas del Modelo de Prototipos:

Exige disponer de las herramientas adecuadas

El cliente ve funcionando lo que es la primera versión del prototipo que

ha sido construido, y puede desilusionarse al ver un sistema incompleto.

El desarrollador puede caer en la tentación de ampliar el prototipo para

construir el sistema final sin tener en cuenta los compromisos de calidad

y de mantenimiento que tiene con el cliente.

2.6.4 MODELO DE DRA. (DISEÑO RÁPIDO DE APLICACIONES)

El Desarrollo Rápido de Aplicaciones o DRA, es un modelo del proceso de

desarrollo de software lineal secuencial que enfatiza un ciclo de desarrollo

extremadamente corto. Se logra el desarrollo rápido utilizando un enfoque

de construcción basado en componentes. El proceso DRA permite al equipo

de desarrollo crear un "sistema completamente funcional" dentro de

periodos cortos de tiempo. Cuando se utiliza principalmente para

aplicaciones de sistemas de información, el enfoque DRA comprende las

siguientes fases:

Modelado de gestión: El flujo de información entre las funciones de

gestión se modela de forma que responda a las siguientes preguntas:

¿Qué información conduce el proceso de gestión? ¿Qué información se

genera y quién la genera? ¿A dónde va la información? ¿Quién la

proceso?

53

Modelado de datos: El flujo de información definido como parte de la

fase de modelado de gestión se refina como un conjunto de objetos de

datos necesarios para apoyar la empresa. Se definen las características

o atributos de cada uno de los objetos y sus relaciones.

Modelado de proceso: los objetos de datos definidos en la fase de

modelado de datos quedan transformados para lograr el flujo de

información necesario para implementar una función de gestión. Es la

comunicación entre los objetos.

Generación de aplicaciones: El DRA asume la utilización de técnicas

de cuarta generación. DRA trabaja para volver a utilizar componentes de

programas ya existentes cuando es posible, o a crear componentes

reutilizables cuando sea necesario. En todos los casos se utilizan

herramientas automáticas para facilitar la construcción del software.

Pruebas y entrega: Como el proceso DRA enfatiza la reutilización, ya se

han probado muchos de los componentes de los programas. Esto reduce

el tiempo de pruebas. Sin embargo, se deben probar todos los

componentes nuevos y se deben ejercitar todas las interfaces a fondo.

Modelado de

Gestión

Modelado de

Datos

Modelado de

Procesos

Generación de

Aplicaciones

Pruebas y Entrega

De 60 a 90 días

54

Si una aplicación de gestión puede modularse de modo que permita

completar cada función principal en menos de tres meses, es candidato

del DRA. Cada una de las funciones puede ser afrontada por un equipo

DRA diferente e integrarse en un solo conjunto. Como todos los modelos

de proceso, el enfoque DRA tiene inconvenientes:

Para proyectos grandes, el DRA requiere recursos humanos

suficientes como para crear el número correcto de equipos DRA.

DRA requiere clientes y desarrolladores comprometidos en las

actividades necesarias para completar un sistema en un tiempo

abreviado. Si no hay compromiso los proyectos DRA fracasaran.

No todos los tipos de aplicaciones son apropiados para DRA. Si un

sistema no puede modelarse adecuadamente, la construcción de los

componentes para DRA será problemático. Si se requiere alto

rendimiento, y se conseguirá convirtiendo interfaces en componentes de

sistema, el enfoque DRA puede no funcionar. DRA no es adecuado

cuando hay riesgos técnicos altos, como una aplicación que usa nuevas

tecnologías, o cuando el nuevo software requiere alta interoperabilidad

con programas ya existentes.

2.6.5 MODELO EN ESPIRAL.

Es parte de los llamados Modelos Evolutivos, caracterizados por permitir

a los ingenieros en sistemas, desarrollar de manera iterativa, nuevas

versiones del software cada vez más completas.

Este modelo conjuga la naturaleza iterativa de construcción de

prototipos, con aspectos controlados y sistemáticos del modelo lineal

secuencial. Es ideal para hacer versiones incrementales de forma rápida.

55

Ventajas del Modelo en espiral, en el desarrollo de Sistemas:

Trata de mejorar los ciclos de vida clásicos y prototipos.

Permite acomodar otros modelos

Incorpora objetivos de calidad y gestión de riesgos

Elimina errores y alternativas no atractivas al comienzo

Permite iteraciones, vuelta atrás y finalizaciones rápidas

Cada ciclo empieza identificando:

Los objetivos de la porción correspondiente

Las alternativas

Restricciones

Cada ciclo se completa con una revisión que incluye todo el ciclo anterior

y el plan para el siguiente.