Download 796.8-B862s-Capitulo II

Document related concepts

Middleware wikipedia , lookup

Servidor de aplicaciones wikipedia , lookup

PHP wikipedia , lookup

Servidor wikipedia , lookup

Microsoft Azure wikipedia , lookup

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 subsecciones, 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
Ingeniería de
Sistemas
Análisis
Diseño
Codificación
Prueba
Mantenimiento
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.
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
Recolección de
Requerimientos
Diseño Rápido
Evaluar y pulir los
Requerimientos
Construcción del
Prototipo
Producto Terminado
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
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.