Para el desarrollo de las aplicaciones en la actualidad se utilizan herramientas que garantizan que estas salgan al mercado soportadas por las tecnologías más avanzadas.
El buen funcionamiento del sistema propuesto depende de la elección correcta de las tecnologías de que se dispone para su realización. Es por ello que en el presente capítulo se tienen en cuenta las ventajas y desventajas de las tendencias y tecnologías actuales, para justificar así el lenguaje de programación, el gestor de bases de datos y la metodología de análisis y diseño del sistema que fueron seleccionados.
2.1- Fundamentación de la metodología utilizada
2.1.1- Unified Modeling Language (UML)
UML es un lenguaje de modelado visual y consistente, que unifica varios de los lenguajes de modelado existentes anteriormente en un único lenguaje orientado a objetos. Cubre todas las vistas necesarias para desarrollar y luego desplegar los sistemas. Existe un equilibrio entre expresividad y simplicidad, pues no es difícil de aprender ni de utilizar.
Comprende un conjunto de estereotipos para la modelación de cualquier proyecto, ya sea de software, de arquitectura o de cualquier otra rama. Permite representar las distintas fases de desarrollo por las que atraviesa un software según RUP, mediante diagramas que relacionan cada uno de los componentes que constituyen el sistema que se modela. La unión de estos diagramas representa la arquitectura del sistema. Mediante UML es posible especificar todas las decisiones de análisis, diseño e implementación, construyéndose así modelos precisos, no ambiguos y completos [Jacobson, 2000].
Capítulo II. Tendencias y tecnologías actuales
Es el estándar para la modelación de la arquitectura de los sistemas en desarrollo y el resultado de su empleo constituye la documentación que acompañará al sistema para futuros mantenimientos.
2.1.2- Rational Unified Process™ (RUP)
Rational Unified Process™ (RUP) es una propuesta de proceso para el desarrollo de software orientado a objeto, que utiliza UML como Lenguaje de Modelamiento Unificado para describir un sistema, mejora la productividad del equipo de trabajo y entrega las mejores prácticas del software a todos los miembros del mismo. Es, además, una metodología de desarrollo de software que intenta integrar todos los aspectos a tener en cuenta durante el ciclo de vida del software, con el objetivo de abarcar tanto pequeños como grandes proyectos [Kruchten, 2001].
RUP tiene una estructura bidimensional, dividiendo el proceso en fases, y estas en flujos de trabajo, lo cual puede observarse en la siguiente figura.
Figura 3. Fases, iteraciones y disciplinas.
RUP divide el desarrollo del software en cuatro fases:
9 Inicio: Determinar la visión del proyecto.
9 Elaboración: Determinar la arquitectura óptima.
9 Construcción: Obtener la capacidad operacional inicial. 9 Transición: Obtener el release del proyecto.
Cada una de estas etapas es desarrollada mediante el ciclo de iteraciones, que consiste en reproducir el ciclo de vida en cascada a menor escala. Los objetivos de una iteración se establecen en función de la evaluación de las iteraciones precedentes.
El ciclo de vida que se desarrolla por cada iteración, es llevada bajo dos disciplinas o flujos de trabajo:
Disciplina de Desarrollo:
9 Ingeniería de Negocios: Entendiendo las necesidades del negocio.
9 Requerimientos: Trasladando las necesidades del negocio a un sistema automatizado.
9 Análisis y Diseño: Trasladando los requerimientos dentro de la arquitectura de software.
9 Implementación: Creando un software que se ajuste a la arquitectura y que tenga el comportamiento deseado.
9 Pruebas: Asegurándose que el comportamiento requerido es el correcto y que todo lo solicitado está presente.
Disciplina de Soporte:
9 Configuración y administración del cambio: Guardando todas las versiones del proyecto.
9 Administrando el proyecto: Administrando horarios y recursos. 9 Ambiente: Administrando el ambiente de desarrollo.
9 Distribución: Hacer todo lo necesario para la salida del proyecto. Las características distintivas de RUP son las siguientes:
Dirigido por Casos de Uso:
Tiene a los casos de uso como el hilo conductor que orienta las actividades de desarrollo. Se centra en la funcionalidad que el sistema debe poseer para satisfacer
Capítulo II. Tendencias y tecnologías actuales
las necesidades de un usuario (persona, sistema externo, dispositivo) que interactúa con él.
Centrado en la arquitectura:
La arquitectura involucra los elementos más significativos del sistema y está influenciada entre otros por plataformas de software, sistemas operativos, manejadores de bases de datos, protocolos; consideraciones de desarrollo como sistemas heredados y requerimientos no funcionales. Una vez definida la arquitectura se puede decir que el sistema tiene “forma”.
Iterativo e incremental:
Esta característica propone dividir el proceso de desarrollo en partes, cada una de las cuales incluya las fases de: Requerimientos, Análisis, Diseño, Implementación y Pruebas, con el objetivo de acelerar el ritmo de desarrollo para que el producto salga al mercado en el menor tiempo posible y con mayor calidad.
Cualquier tipo de proyecto (incluidos los pequeños, los basados en Web, aquellos fundamentales para un proyecto y los proyectos integrados) permiten obtener unos resultados más acordes con las previsiones gracias a la aplicación del proceso RUP™ [Jacobson, 2000].
2.1.3- Rational Rose Enterprise Edition
Rational Rose Enterprise Edition es una herramienta Lower CASE, que permite el diseño detallado del software y la generación de código fuente (de programas y bases de datos) e ingeniería inversa (obtención del diseño a partir del código fuente), basado en modelos con soporte UML [Anónimo, 2006]. Es una forma de ayuda para la comprensión del sistema y de sus distintos componentes. Su característica más significativa consiste en la creación de componentes, que contengan una serie de archivos dentro de los cuales se encuentran las distintas clases pertenecientes a dicho componente [Anónimo, 2002].
2.2- Fundamentación de las herramientas de desarrollo
seleccionadas
2.2.1- Tecnologías del lado del Servidor
Estas tecnologías son interpretadas y ejecutadas por el servidor. Se consideran de mayor importancia ya que son las que garantizan el intercambio de datos en ambos sentidos, entre el navegador del cliente y el servidor Web, y a su vez las que soportan la funcionalidad del sitio.
2.2.1.1- Java
En cuanto salió Java fue acogido con gran entusiasmo por la comunidad mundial de los diseñadores de programas y de los proveedores de servicios Internet. Esto porque Java permitía a los usuarios de Internet usar aplicaciones seguras e independientes de la plataforma, y que se pueden encontrar en cualquier punto de la red [Álvarez, 2005b].
Java es un lenguaje de programación orientado a objetos, y tiene todos los beneficios que ofrece esta metodología de programación. Además al ser Java un lenguaje se pueden hacer cálculos matemáticos, procesadores de palabras, bases de datos, aplicaciones gráficas, animaciones, sonido, hojas de cálculo, etc.
Permite desarrollar páginas Web dinámicas y se le pueden poner toda clase de elementos multimedia que permiten un alto nivel de interactividad, sin tener que gastar en paquetes costosos de multimedia [Monografías, 2005].
Java compila e interpreta por lo que consume doble tiempo. El tiempo de compilación es más lento que en otros lenguajes y es una tecnología nueva que no está estandarizada [Anónimo, 2005b].
2.2.1.2- ASP (Active Server Pages)
Es el lenguaje del lado del servidor creado por Microsoft para la creación de páginas dinámicas del servidor ASP, se puede programar utilizando el lenguaje Visual Basic Script, Jscrip (Javascript de Microsoft) u otros lenguajes Script popularmente conocidos para el uso del lado del cliente.
Capítulo II. Tendencias y tecnologías actuales
ASP permite el acceso a bases de datos para extraer información y visualizarla en el navegador, envío de correo electrónico, acceso al sistema de archivos del servidor y en general a todos los recursos que tenga el propio servidor. Una potencialidad en ASP está en el uso de controles ActiveX construidos para ser ejecutados en el servidor.
El código ASP está mezclado con el contenido, la implementación de componentes y la configuración es compleja y solo soporta lenguajes de scripting [Reynoso, 2006]. Es difícil proveer seguridad a los datos de los clientes. El rendimiento de las aplicaciones es limitado, debido al ancho de banda de Internet [Zarza, 2003].
2.2.1.3- Asp.NET
ASP.NET es la apuesta de la tecnología de Microsoft .Net para el desarrollo de páginas Web dinámicas. El cual trae diversas mejoras con respecto al ASP tradicional entre las que se destacan algunas:
Rapidez en programación: Mediante diversos controles se puede con unas pocas líneas y en menor tiempo mostrar toda una base de datos y hacer rutinas complejas.
Programación Multilenguaje: El programador ya no se encuentra restringido a la utilización de VBScript o JScript para programar las páginas ASP. Puede utilizar cualquiera admitido por la plataforma .NET, lo que incluye diversos lenguajes como C#, Visual Basic.NET, JScipt.NET, COBOL.NET, entre otros.
Programación visual: La arquitectura está diseñada de forma que el desarrollo de las aplicaciones Web sea análogo a la forma en que se hace en las aplicaciones de ventanas estándar, representando los controles como objetos que se pueden manipular en la programación, al igual que se hace en las librerías de ventanas orientadas a objetos. Además permitiendo que con herramientas visuales, diseñarlas sea fácil, como arrastrar los componentes necesarios sobre la página y hacer doble click sobre cada componente para escribir la lógica de respuesta a los eventos que se puedan realizar sobre ellos, de forma parecida a como se hace en entornos RAD (Rapid Application Development) como Delphi [Ciberaula, 2005].
Sus principales desventajas consisten en que, a pesar de que el software es gratis, su plataforma no lo es y además es solamente para Internet Information Server; su código no está disponible y, comparado con PHP, su velocidad y eficiencia es más débil [Hull, 2006].
2.2.1.4- PHP (Hypertext Preprocessor)
PHP es un lenguaje de programación, de código abierto, que se ejecuta del lado del servidor, cuyo código se combina con el HTML, para procesar la información de formularios, generar páginas con contenidos dinámicos, o mandar y recibir cookies [Cibertua, 2005].
Dispone de múltiples herramientas que permiten acceder a bases de datos de forma sencilla, por lo que es ideal para crear aplicaciones en Internet. Existe mucha documentación disponible sobre este lenguaje y miles de ejemplos y código fuente.
Es multiplataforma, funciona tanto para Unix (con Apache) como para Windows (con Microsoft Internet Information Server), de forma que el código que se haya creado para una de ellas no tiene por qué modificarse al pasar a la otra. Su integración con Apache y MySQL es perfecta [Cortés, 2002].
La sintaxis que utiliza la toma de otros lenguajes muy extendidos como C y Perl. PHP es muy parecido a las ASP (Active Server Pages) de Microsoft, solo que más rápido, gratuito y multiplataforma, es por ello que fue el lenguaje seleccionado para el desarrollo del sistema propuesto [Cibertua, 2005].
La versión utilizada es la 5.1.2, que es verdaderamente orientada a objetos.
2.2.2- Tecnologías del lado del cliente
Son las páginas dinámicas que se procesan en el navegador del cliente, en las que toda la carga de procesamiento de los efectos y funcionalidades la soporta el navegador. El código necesario para crear los efectos y funcionalidades se incluye dentro del mismo archivo HTML y es llamado SCRIPT. Cuando una página HTML contiene scripts de cliente, el navegador se encarga de interpretarlos y ejecutarlos para realizar los efectos y funcionalidades. Ofrecen respuestas inmediatas a las
Capítulo II. Tendencias y tecnologías actuales
acciones del usuario y permiten la utilización de algunos recursos de la máquina local [Álvarez, 2005a].
2.2.2.1- HTML (Hyper Text Markup Language)
HTML es el punto de partida para el desarrollo Web. Es una aplicación del SGML que utiliza etiquetas para marcar elementos, tales como texto y gráficos, en un documento para indicar cómo los navegadores del Web deben visualizar estos elementos al usuario y deben responder a las acciones del usuario.
Aunque existan ya, editores HTML muy potentes para la creación de páginas Web, es importante conocer en plenitud este "lenguaje de marcado", pues se utiliza en combinación con otros lenguajes de programación, como por ejemplo PHP, en el caso del sistema propuesto [Escobar, 2004].
2.2.2.2- XHTML (eXtensible Hyper Text Markup Language)
XHTML es el lenguaje de marcado pensado para sustituir a HTML como estándar para las páginas Web. Es la versión XML de HTML, por lo que tiene, básicamente, las mismas funcionalidades, pero cumple las especificaciones, más estrictas, de XML. Su objetivo es avanzar en el proyecto del W3C de lograr una Web semántica, donde la información, y la forma de presentarla estén claramente separadas. En este sentido, XHTML serviría únicamente para transmitir la información que contiene un documento, dejando para hojas de estilo y JavaScript su aspecto y diseño en distintos medios. Tiene facilidad de edición directa del código y de mantenimiento, pero presenta algunas desventajas como que algunos navegadores antiguos no son totalmente compatibles con los estándares, lo que hace que las páginas no siempre se muestren correctamente y muchas herramientas de diseño Web aún no producen código XHTML correcto [Wikipedia, 2006].
2.2.2.3- Cascading Style Sheets (CSS)
Las hojas de estilo facilitan muchísimo la creación de páginas. Gracias a estas podemos definir un estilo específico para cada atributo sin tener que modificar las
etiquetas dentro de la página HTML. CSS se puede utilizar para manejar los estilos de todo un sitio [Escobar, 2004].
2.2.2.4- JavaScript
JavaScript es un lenguaje script u orientado a documento. El código JavaScript para cliente se integra directamente en páginas HTML y es interpretado en su totalidad por el cliente Web en tiempo de ejecución. En este caso, lo importante es que, sin necesidad de realizar ninguna transmisión de datos por la red, se puede validar dicha información, mostrando al usuario un cuadro de diálogo en caso de que esta sea incorrecta.
Los clientes Web que soportan JavaScript, tales como el Netscape Navigator/Communicator (desde la versión 2.0) o el Microsoft Internet Explorer (desde la versión 3.0) pueden interpretar sentencias JavaScript colocadas en un documento HTML [Universidad de Navarra, 2005].
Se utiliza para activar procesos o desarrollar algoritmos que hagan tareas sencillas y para darle vida a las Webs, haciendo que cambien imágenes, que se procesen datos, entre otros.
2.3- Gestores de Bases de Datos
2.3.1- PostGreSQL
PostgreSQL es uno de los Sistemas de Gestión de Bases de Datos (SGBD) más conocidos del mundo del código libre. Surge a mediados de los años ochenta con el nombre Postgres, en sus inicios con un lenguaje de consulta propio denominado Postquel, hasta 1995 que adopta SQL como lenguaje y pasa a llamarse PostGreSQL en 1996 [Mateu, 2004].
Su principal desventaja es la velocidad, considerándose más lento que SqlServer y MySql. Además consume una gran cantidad de recursos.
Se puede integrar a la plataforma .Net instalando un proveedor de acceso a datos almacenados en bases de datos desarrolladas en PostGreSQL, denominado:
Capítulo II. Tendencias y tecnologías actuales
PostgreSQLDirect.Net. Está basado completamente en tecnología ActiveX Data Object para el framework .Net 1.1 o superior (ADO.Net). Puede ser utilizado de igual forma que el proveedor de acceso a datos para SQL Server que viene incluido en el framework [Development, 2005].
2.3.2- Oracle
Es un SGBD muy costoso aplicado fundamentalmente en grandes empresas multinacionales. Trabaja con un lenguaje propio denominado PL/SQL, muy potente.
Para utilizar Oracle primeramente habría que instalar la herramienta servidor, Oracle 8i, y luego se podría acceder a la base de datos desde otros equipos con herramientas de desarrollo como Oracle Designer y Oracle Developer, que son las herramientas básicas de programación sobre Oracle [Masip, 2002].
La principal limitante de utilizar Oracle como SGBD es el alto precio de las licencias, además de que se cuenta con muy poca experiencia en el manejo de este sistema.
2.3.3- Microsoft SQL Server 2000
Microsoft SQL Server 2000 está diseñado para funcionar eficazmente como base de datos central en un servidor compartido por muchos usuarios que se conectan a la misma a través de una red. El número de usuarios puede ascender a miles de empleados en una empresa de mediano o gran tamaño, o a cientos de miles de usuarios de la Web. Además está pensado como gestor de bases de datos de escritorio que sirvan solo a aplicaciones que se ejecutan en el mismo escritorio [Corporation, 2000].
Es el primero en soportar la auto-configuración y auto-sintonización y en proveer administración de multi-servidor para cientos de servidores.
Microsoft SQL Server 2000 asigna también de manera muy eficaz los recursos disponibles, como memoria, ancho de banda de la red y E/S del disco, entre los distintos usuarios [Corporation, 2000].
Su principal desventaja es que corre solamente sobre la plataforma Windows por lo que su portabilidad es limitada.
2.3.4- MySQL
MySQL es un gestor de bases de datos SQL; una implementación Cliente-Servidor que consta de un servidor y diferentes clientes [Fernández, 1998].
Una característica importante del servidor de bases de datos MySQL es que consume muy pocos recursos, tanto de CPU (Unidad Central de Procesamiento) como de memoria. Fue desarrollado originalmente para manejar grandes bases de datos mucho más rápido que las soluciones existentes. Son apropiadas su conectividad y velocidad para acceder a bases de datos en Internet.
Resulta útil para la administración (backup, recuperación de errores); no tiene límites en el tamaño de los registros; es portable de modo que se puede emplear tanto en servidores Linux como Windows y realiza control de acceso de usuarios y permisos; posee una gran velocidad a la hora de realizar las operaciones, lo que le hace uno de los gestores que ofrecen mayor rendimiento; tiene gran facilidad de configuración e instalación, y una probabilidad muy reducida de corromper los datos, incluso en los casos en los que los errores no se produzcan en el propio gestor, sino en el sistema en el que está [Aguilar, 2004] [Anónimo, 2005a].
Por todas las ventajas antes mencionadas y por la perfecta integración Apache-PHP- MySQL es el gestor de bases de datos seleccionado para el sistema propuesto.
2.4- Servidores
Un servidor es una máquina que provee datos de modo que otras máquinas (clientes) puedan utilizarlos. Los clientes se comunican con los servidores a través de los proveedores de Servicio de Internet, empresas que actúan de puente entre las comunicaciones de clientes y servidores. Los archivos para cada sitio de Internet se almacenan y se ejecutan en el servidor. Hay muchos servidores en Internet y muchos tipos de servidores, con el objetivo común de proporcionar el acceso a los archivos y servicios.
Capítulo II. Tendencias y tecnologías actuales
2.4.1- Servidores Web
Un Servidor Web es un programa de aplicación que satisface las solicitudes HTTP realizadas por los navegadores. La máquina que la soporta debe estar conectada a la Intranet y, por consiguiente, tener asignada una dirección IP [EO, 2005].
Figura 4. Servidor Web.
2.4.1.1- Internet Information Server (IIS)
Internet Information Server (IIS), es el servicio Web con el que cuenta la familia de Sistemas Operativos Windows 2000 y XP para la publicación de información en Intranets e Internet.
Incluye una herramienta de administrador personal de la Web, que ayuda a administrar y publicar un sitio de publicación personal. Permite a los usuarios remotos crear, mover o borrar archivos, directorios y propiedades de directorio en el servidor a través de una conexión HTTP. Brinda los servicios de FTP, Ghoper y WWW, al igual que de envío de correo electrónico y noticias, a través del servicio SMTP de Microsoft, que usa el Protocolo Simple de transferencia de correo (SMPT), un estándar de Internet.
Ofrece mayor protección y confiabilidad de las aplicaciones Web. De manera predeterminada, IIS ejecutará todas las aplicaciones en un proceso común o agrupado que está separado de los procesos del núcleo de IIS. También puede aislar
aplicaciones cuyas misiones sean críticas y que deban ejecutarse fuera tanto de los procesos de núcleo de IIS como de los agrupados [Internet Information Server, 2000].
Sin embargo, posee algunas desventajas, ya que solo está disponible para Windows, requiere pagar licencia para su utilización y resulta poco confiable ante los numerosos ataques que sufren los sitios de Internet [Osmosis Latina, 2000].
2.4.1.2- Apache
Apache es un servidor Web, que permite el alojamiento de páginas Web en una máquina específica. Es prácticamente universal ya que se ejecuta en la mayoría de