Descargar

Estado del arte de metodologías, herramientas y lenguajes para el desarrollo de aplicaciones Web


Partes: 1, 2

  1. Resumen
  2. Introducción
  3. Fundamentación teórica
  4. Descripción y construcción de la solución propuesta
  5. Conclusiones Generales
  6. Recomendaciones
  7. Referencias Bibliográficas
  8. Glosario de Términos
  9. Anexos

En este artículo se realiza el estado del arte de distintas metodologías, herramientas y lenguajes para la realización de aplicaciones Web.

Desde el surgimiento de las computadoras estas se han presentado como un elemento útil y necesario de la vida cotidiana. Hoy en día el avance tecnológico hace vital el uso y la interacción con un equipo que facilite las tareas del hombre.

Las modernas máquinas de cómputo surgieron para desempeñar la función de auxiliares eficaces del hombre en el tratamiento de la información. Poco a poco la sociedad ha ido caminando hacia un estado donde la Informática tiene un profundo impacto en todos sus niveles y con ello han surgido nuevas necesidades y problemas sociales. (Blanco, 2007)

Con los avances tecnológicos cada vez se demandan aplicaciones más rápidas, ligeras y robustas que permitan ser usadas sin importar el lugar u horario; aprovechando las ventajas que brinda la red se comenzaron a desarrollar aplicaciones de servicio y de solución de problemas entre las que se encuentran las aplicaciones Web.

Las aplicaciones Web son utilizadas por muchas organizaciones, por las ventajas que estas proporcionan entre las que se puede mencionar que no requieren instalación, pues usan tecnología Web y además son fáciles de usar (no requieren conocimientos avanzados de computación). Estas aplicaciones brindan una mayor y más fácil difusión de la información en el proceso de gestión de información. (Tecnology, 2008)

CAPÍTULO I

1.1 Introducción.

En el presente capítulo se realiza un análisis del objeto de estudio y el campo de acción de la investigación las tendencias actuales de las metodologías de desarrollo de software, estilos arquitectónicos, patrones de arquitectura y tecnologías. Se concluye con la fundamentación de las tecnologías a utilizar.

1.2 Sistemas para la gestión del proceso técnico.

Cuando se define el término gestionar se habla de coordinar todos los recursos disponibles para conseguir determinados objetivos. Es el proceso que desarrolla actividades productivas con el fin de generar rendimientos de los factores que en él intervienen. Por lo que tanto en Cuba como en el resto del mundo se gestiona información de disímiles maneras. (Corona, 2010)

1.2.2 Sistema Manual.

El proceso de gestión de la información de los recursos entregados a los trabajadores relacionada con el pago salarial ha sido estudiado y establecido en aras de cumplir con el principio de distribución socialista, de cada cual según su capacidad a cada cual según su trabajo. Para ello en el Centro Telefónico de ETECSA Holguín se realiza el control de las operaciones del Grupo de Mantenimiento Técnico en distintos modelos, primero se llenan diariamente de forma manual los AT1 de cada pareja de trabajadores, los AT3 cada vez que se hace entrega de materiales a cada uno de ellos. Este proceso es bastante tedioso, debido a que requiere de muchos cálculos precisos durante el desarrollo de esta labor pues tiene una implicación directa con el salario del trabajador. En la actualidad, el Centro Telefónico de ETECSA Holguín carece de un sistema que facilite el control de los recursos, generando así un problema al cual se da solución con la realización de la presente investigación.

1.2.3 En el resto del Mundo.

Con el avance y generalización de la Informática se intenta informatizar todos aquellos trabajos que antes se llevaban a cabo manualmente. Actualmente existen software en la esfera internacional como Cumulus Software que gestiona el Control de Inventarios, Manejo de Ubicaciones de Almacenamiento, Áreas de Cuarentena, Lotes y Caducidad para la salida de los productos del almacén, Administración de Inventarios, Control de Pedidos, Control de Distribución, Administración del Espacio, Recibo de Productos y Surtido de Ordenes, Software Industrial destinado a facilitar y guiar el mantenimiento preventivo y correctivo de la empresa, estableciendo un control de materiales programado y un control de los principales componentes de las instalaciones, Secomat que es un software de escritorio pequeño y sencillo, diseñado para llevar control de los materiales, productos o artículos de una bodega o depósito y el Software Industrial Supervisión, control y gestión de la producción. (Cumulus, 2009 ; Pyssa, 2011)

1.2.4 En Cuba

En el ámbito nacional ETECSA cuenta con un Sistema de Implementación de Reclamos (SIPREC) aplicación web propietaria de CIMEX que hizo la aplicación junto a los especialistas de ETECSA, concebida para el control de los procesos técnicos ya que solo registra la acción realizada por los operadores y no la cantidad de materiales que se le entrega a cada uno de ellos y la cantidad que ha utilizado; con este sistema no se puede llevar un control de los recursos usados y recuperados por el Grupo de Operación y Mantenimiento Técnico. (ETECSA, 2010)

1.3 Tendencias actuales de las tecnologías.

1.3.1 Framework

Muchos de los que se dedican al desarrollo de software utilizan, conocen o, como mínimo, se han encontrado con el concepto de framework (cuya traducción aproximada sería "marco de trabajo"). Sin embargo, el concepto de framework no es sencillo de definir, a pesar de que un programador con experiencia captará su sentido de manera casi intuitiva, y es muy posible que esté utilizando su propio framework (aunque no lo llame así).

Framework es por tanto, un esquema (un esqueleto, un patrón) para el desarrollo y/o la implementación de una aplicación. Su utilización fomenta la reutilización de código, promueve buenas prácticas de desarrollo y proporciona una reducción de tiempo en los procesos de desarrollo. (Alonso, 2006)

Zend Framework

Zend Framework (ZF) es un framework para desarrollo de aplicaciones Web y servicios Web con PHP, brinda soluciones para construir sitios web modernos, robustos y seguros. Además es Open Source y trabaja con PHP 5. (Leopoldo, 2007) Está implementado usando código 100% orientado a objetos. La estructura de los componentes de ZF es algo único; cada componente está construido con una baja dependencia de otros componentes. (Technologies, 2009)

Aunque se pueden utilizar de forma individual, los componentes de la biblioteca estándar de Zend Framework conforman un potente y extensible framework de aplicaciones web al combinarse. ZF ofrece una robusta implementación Modelo Vista-Controlador y una abstracción de base de datos fácil de usar. (Technologies, 2009)

Symfony

La primera versión de Symfony fue publicada en Octubre de 2005 por Fabien Potencier, empleó un año entero para desarrollar el núcleo de Symfony, basando su trabajo en el framework Mojavi, en la herramienta Propel para el mapeo de objetos a bases de datos y en los helpers empleados por Ruby on Rails en sus plantillas. Después de utilizar Symfony en algunos proyectos, Fabien decidió publicarlo bajo una licencia de software libre. (Potencier & Zaninotto, 2008)

Symfony está desarrollado completamente con PHP. Está diseñado para optimizar el desarrollo de aplicaciones Web, entre sus características se presenta que separa la lógica de negocio, la lógica de servidor y la presentación de la aplicación web, es compatible con la mayoría de gestores de bases de datos, como MySQL, PostgreSQL, Oracle y SQL Server de Microsoft, se puede ejecutar tanto en plataformas *nix, como en plataformas Windows, además implementa excelentes prácticas y patrones de diseño para la web.

Symfony emplea el tradicional patrón de diseño MVC para separar las distintas partes que forman una aplicación web. El modelo representa la información con la que trabaja la aplicación y se encarga de acceder a los datos. La vista transforma la información obtenida por el modelo en las páginas web a las que acceden los usuarios. El controlador es el encargado de coordinar todos los demás elementos y transformar las peticiones del usuario en operaciones sobre el modelo y la vista. (Fabien Potencier, 2008)

La lista de ideas que incorpora Symfony y que tienen su origen en otros frameworks y aplicaciones es la siguiente:

Ruby on Rails: sistema de enrutamiento, helpers, scaffolding, archivos de configuración en formato YAML y la herramienta Rake (que en Symfony se llama Pake).

Django: el nuevo mecanismo de formularios y widgets que incorpora la versión 1.1 de Symfony.

Propel y Doctrine: son los dos ORM principales de Symfony, sobre todo Propel, que se encuentra completamente integrado.

Prado: todo lo relacionado con la internacionalización (i18n) y la localización (l10n).

Cocoa: el nuevo sistema de eventos de Symfony 1.1 se basa completamente en este framework de Apple.

Test::More: la herramienta Lime, para crear pruebas unitarias, está basada en el framework Test::More de Perl.

Prototype, script.aculo.us, TinyMCE: utilidades relacionadas con Ajax y JavaScript. (Eguiluz, 2008)

1.3.2 Herramienta de desarrollo para php. Netbeans.

Los IDEs (Integrated Development Environment) son un conjunto de herramientas para el programador, que suelen incluir en una misma suite, un buen editor de código, administrador de proyectos y archivos, enlace transparente a compiladores y debuggers e integración con sistemas controladores de versiones o repositorios. (NetBeans.org, 2010)

NetBeans es un IDE de código abierto (open source) para desarrolladores. Posee todas las herramientas necesarias para crear aplicaciones web, de escritorio y por teléfonos móviles con los lenguajes de programación Java, C, C++ e incluso lenguajes dinámicos como: PHP, Javascript, Groovy, y Ruby. Es fácil de usar, instalar y puede ser ejecutado en múltiples plataformas como Windows, Linux, Mac OS X y Solaris.

NetBeans 6.9 permite crear aplicaciones web con PHP 5, se puede escribir, compilar, depurar y ejecutar aplicaciones de escritorio y/o, web con múltiples lenguajes de programación, cuenta con un potente debugger integrado y además viene con soporte para Symfony y AJAX.

Entre sus principales características se puede mencionar:

Creación de proyectos PHP: provee de una estructura para los proyectos que pueden crear junto a este IDE, nos propone un esqueleto para organizar nuestro código fuente, el editor conjuntamente integra los lenguajes como HTML, JavaScript y CSS.

Integración con Symfony y ZenFramework: gracias a NetBeans ya es posible dejar de lado la consola de comandos de Symfony y centrarse en desarrollar en el IDE, además se encuentra cargadas todas las clases, ayuda en línea, etc.

Editor de código fuente: el editor de PHP, es mucho más ágil y a la vez robusto, contiene más ayuda en línea, reconocimiento de sintaxis y todo lo que provee la versión de PHP 5.3.

Integración con PHP Unit Testing: Es posible crear test con PHPUnit, para diferentes funciones, luego realizar la comprobación y ver todos los resultados. En las propiedades PHPUnit puede definir una configuración personalizada de archivos XML, un archivo de arranque para las opciones de línea de comandos, o una serie de pruebas a medida, o puede que el IDE genera el código esqueleto para usted.

Depuración de PHP: NetBeans integra muy bien la utilización Xdebug, gracias a esto podemos inspeccionar y examinar cada variable local, establecer puntos de interrupción y evaluar el código en nuestra lógica.

El IDE de NetBeans para PHP también ofrece la línea de comandos de depuración: La salida del programa PHP aparece en una pantalla de línea de comandos en el IDE de sí mismo y se puede inspeccionar el código HTML generado sin tener que cambiar a un navegador.

Integración con MySQL: posee una integración completa en términos de administración básico y avanzada de MySQL, y todo desde el mismo entorno.

Integración con Sistemas de Control de Versiones: esta es una de las condiciones necesarias para los proyectos y es la posibilidad de contar con la integración de sistemas de control de versiones, tales como SVN, CVS, Mercurial y Git.

Desde el editor es posible realizar la administración de estos sistemas versionados, sus commit, branch, importar, exportar, revert, clonar, etc. (Gamboa & Nuez, 2009)

1.3.3 Aplicaciones web.

Por la gran expansión que ha tenido Internet así como el uso de las Intranet corporativas, ha habido una evolución en la necesidad de información de las organizaciones, que ha provocado la proliferación del cambio de las aplicaciones de escritorio por las aplicaciones web. (Tecnology, 2008)

En la ingeniería de software se denomina aplicación web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a un servidor web a través de Internet o de una Intranet mediante un navegador. En otras palabras, es una aplicación software que se codifica en un lenguaje soportado por los navegadores web en la que se confía la ejecución al navegador.

Servidores Web

  • En Internet, un servidor es un ordenador remoto que provee los datos solicitados por parte de los navegadores de otras computadoras.

  • En redes locales se entiende como el software que configura un PC como servidor para facilitar el acceso a la red y sus recursos.

  • Los Servidores almacenan información en forma de páginas web y a través del protocolo HTTP lo entregan a petición de los clientes (navegadores web) en formato HTML. (Masadelante, 2006)

Los servidores web más difundidos a nivel mundial son Apache e Internet Information Server (IIS).

IIS (Internet Information Server)

El servidor web IIS (del inglés, Internet Information Server) fue lanzado en Windows NT 3.51 por la Microsoft. Está considerado como un potente servidor web de gran fiabilidad, capacidad de manejo y estabilidad de aplicaciones web.

Sólo funciona sobre sistemas operativo Windows, soporta varias tecnologías de programación como ASP, ASP.NET y PHP, está basado en arquitectura modular, posibilitando a los desarrolladores añadir, eliminar y sustituir fácilmente componentes adecuados para un determinado sitio web y posibilita a los administradores web manejar solo los componentes requeridos para mantener un control completo del servidor y así minimizar los recursos a utilizar.

Acelera las aplicaciones web por la utilización de la cache dinámica y la mayor comprensión de ancho de banda. (Gamboa & Nuez, 2009)

Apache

El NCSA (del inglés, National Center for Super Computing Applications) creó en 1995 un servidor web, pero el principal desarrollador de servidores web del NCSA abandonó el proyecto y este se vio notablemente afectado. Los que utilizaban el servidor web de NCSA empezaron a intercambiar sus propios paquetes para el servidor y pronto pensaron que era necesario un foro para gestionarlos, así nació el grupo Apache, el grupo utilizaba el código del servidor Web de NCSA y dio nacimiento a un nuevo servidor web llamado Apache. (Fundation, 2011)

Apache no sólo funciona en la mayoría de las versiones de Unix sino que, además, funciona en Windows 2000/NT/9x y en muchos otros sistemas operativos de escritorio y de tipo servidor como son Amiga OS 3.x y OSl2. Es una tecnología gratuita de código fuente abierta.

No posee una interfaz de usuario gráfica para su administración, mediante un sencillo archivo de configuración llamado httpd.conf se puede configurar. Soporta tanto host basados en IP como host virtuales.

Brinda una gran flexibilidad en el registro y la monitorización del estado del servidor mediante un navegador web. (Gamboa & Nuez, 2009)

Las funcionalidades más elementales se encuentran en el módulo base, siendo necesario un módulo multiproceso para manejar las peticiones. Se han diseñado varios módulos multiproceso para cada uno de los sistemas operativos sobre los que se ejecuta el Apache, optimizando el rendimiento y rapidez del código. El resto de funcionalidades del servidor se consiguen por medio de módulos adicionales que se pueden cargar para añadir un conjunto de utilidades al servidor sin volver a instalar el software. (Pacheco & Pérez, 2009)

1.3.4 Lenguajes de programación web.

Desde los inicios de Internet, fueron surgiendo diferentes demandas por los usuarios y se dieron soluciones mediante lenguajes estáticos. A medida que pasa el tiempo, las tecnologías fueron desarrollándose y surgieron nuevos problemas a dar solución. Esto dio lugar a desarrollar lenguajes de programación dinámicos para la web, que permitieran interactuar con los usuarios y utilizaran sistemas de Bases de Datos.

Actualmente existen numerosos lenguajes de programación web. Los lenguajes de programación del lado del cliente que indican al navegador donde colocar cada texto, imagen o video y la forma que tendrán estos al ser colocados en la página; y los lenguajes del lado del servidor ejecutados en el servidor web justo antes de que se envíe la página a través de Internet al cliente, permitiendo que se muestre en la misma los datos deseados por el servidor.

Lenguajes de Programación del lado del cliente

HTML (Hyper Text Markup Language)

Desde el surgimiento de internet se han publicado sitios web gracias al lenguaje HTML. Es un lenguaje estático para el desarrollo de sitios web (acrónimo en inglés de HyperText Markup Language, en español Lenguaje de Marcas Hipertextuales). Desarrollado por el World Wide Web Consortium (W3C). Los archivos pueden tener las extensiones (htm, html).

Fue creado en 1986 por el físico nuclear Tim Berners-Lee; el cual tomo dos herramientas preexistentes: El concepto de Hipertexto (Conocido también como link o ancla) el cual permite conectar dos elementos entre si y el SGML (Lenguaje Estándar de Marcación General) el cual sirve para colocar etiquetas o marcas en un texto que indique como debe verse. (Ravioli, 2009)

Es sencillo, permite describir hipertexto, el texto es presentado de forma estructurada y agradable. No necesita de grandes conocimientos cuando se cuenta con un editor de páginas web. Consta de archivos pequeños un rápido despliegue, es de fácil aprendizaje y lo admiten todos los exploradores. (Valdez, 2009)

HTML constituye uno de los pilares sobre los que se asienta la web, es un lenguaje extensible al que se le pueden añadir características y funcionalidades mediante las CCS (Hojas de Estilo) y JavaScript obteniéndose como resultado páginas web rápidas y sencillas.

JavaScript

Este es un lenguaje interpretado, no requiere compilación. Fue creado por Brendan Eich en la empresa Netscape Communications. Utilizado principalmente en páginas web. Es similar a Java, aunque no es un lenguaje orientado a objetos, el mismo no dispone de herencias. La mayoría de los navegadores en sus últimas versiones interpretan código Javascript.

El código Javascript puede ser integrado dentro de nuestras páginas web. Para evitar incompatibilidades el World Wide Web Consortium (W3C) diseño un estándar denominado DOM (en inglés Document Object Model, en su traducción al español Modelo de Objetos del Documento).

Se trata de un lenguaje de programación del lado del cliente, porque es el navegador el que soporta la carga de procesamiento. Gracias a su compatibilidad con la mayoría de los navegadores modernos como Internet Explorer, Mozilla Firefox, Opera, Netscape, entre otros, es el lenguaje de programación del lado del cliente más utilizado. (Valdez, 2009)

Lenguajes de Programación del lado del servidor.

PHP (Hypertext Preprocessor)

Fue concebido en 1994 por Rasmus Lerdorf como un complemento para el lenguaje PERL y lo incorporó por primera vez en su propia página web para monitorizar las visitas que recibía. Fue tanta su popularidad que Rasmus se decidió a lanzar la primera versión completa de PHP, conocida por entonces como Personal Home Page Tools (Herramientas para Páginas Personales). (Gamboa & Nuez, 2009)

PHP es un lenguaje de script interpretado en el lado del servidor utilizado para la generación de páginas web dinámicas, embebidas en páginas HTML y ejecutadas en el servidor. PHP no necesita ser compilado para ejecutarse. Para su funcionamiento necesita tener instalado Apache o IIS con las librerías de PHP. La mayor parte de su sintaxis ha sido tomada de C, Java y Perl con algunas características específicas. Los archivos cuentan con la extensión (PHP). (Valdez, 2009)

Al tratarse de software libre puede descargarse y utilizarse en cualquier aplicación personal o profesional de manera completamente libre. Además se dispone de acceso a su código fuente. PHP puede usarse en todos los sistemas operativos gratuitos del tipo Unix, como Linux o en las diferentes versiones de Microsoft Windows.

1.3.5 Sistemas gestores de base de datos.

Un sistema gestor de bases de datos (SGBD[1]o DBMS (del inglés, Data Base Management System) es un software específico cuyo objetivo es servir de interfaz entre la base de datos, el usuario y las aplicaciones. Es un software que permite introducir, organizar y recuperar la información de las bases de datos. Existen distintos tipos de gestores de bases de datos: relacional, jerárquico, etc. El modelo relacional es el utilizado por casi todos los gestores de bases de datos para PC´s (Personal Computer).

Algunos ejemplos de SGBD son Oracle, PostgreSQL, MySQL, entre otros.

MySQL

MySQL es un sistema para la administración de bases de datos relacional (RDBMS) rápido y sólido creado por la empresa sueca MySQL AB. Está disponible desde 1996, pero su nacimiento se remonta a 1979. Ha obtenido el galardón Choice Award del Linux Journal Readers en varias ocasiones. (Gamboa & Nuez, 2009)

Es sistema gestor de base de datos relacional donde los datos están almacenados en tablas entre las cuales se establecen unas relaciones para manejar los datos de una forma eficiente y segura. Para usar y gestionar una base de datos relacional se usa el lenguaje estándar de programación SQL.

Es Open Source. El código fuente de MySQL se puede descargar y está accesible a cualquiera, por otra parte, usa la licencia GPL para aplicaciones no comerciales.

MySQL es muy utilizado en aplicaciones web. Es una base de datos muy rápida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la modificación de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones. MySQL usa el GPL (GNU General Public License) para definir qué puede hacer y que no puede hacer con el software en diferentes situaciones.

MySQL es un gestor de base de datos sencillo de usar e increíblemente rápido. También es uno de los motores de base de datos más usados en Internet, la principal razón de esto es que es gratis para aplicaciones no comerciales. (Pacheco & Pérez, 2009)

PostgreSQL

PostgreSQL es un sistema gestor de bases de datos objeto-relacionales (ORDBMS) libre, desarrollado originariamente en el Departamento de Ciencias de Computación de la Universidad de California en Barkeley.

PostgreSQL es un servidor de base de datos relacional orientada a objetos de software libre, publicado bajo la licencia BSD. Como muchos otros proyectos de código abierto (open source), el desarrollo de PostgreSQL no es manejado por una sola compañía sino que es dirigido por una comunidad de desarrolladores y organizaciones comerciales las cuales trabajan en su desarrollo. (Group, 2007)

Soporta casi toda la sintaxis SQL y ofrece muchas características modernas tales como: consultas complejas, integridad referencial (foreign keys), triggers, vistas (views), integridad transaccional, control de concurrencia multi-versión. También soporta almacenamiento de objetos grandes (imágenes, sonido y video).

Una de las características que comparte con otros motores de bases de datos es el hecho de ser multiplataforma y de tener varias herramientas para administrar. Cuenta con herramientas gráficas como PgAdmin, phpPgAdmin, las cuales hacen que la administración de la base de datos sea sencilla. Debido a su licencia libre PostgreSQL puede ser utilizado, modificado y distribuido por todo el mundo de forma gratuita para cualquier fin, ya sea privado, comercial o académico. (Gamboa & Nuez, 2009)

1.4 Metodologías de desarrollo de software.

En el mundo no existe una metodología universal que ayude a organizar el proceso de desarrollo de software, sin embargo hay varias metodologías que hacen que el proceso sea rápido y que el sistema desarrollado tenga calidad, aunque existen otras que requieren un poco más de personal y son más lentas obteniendo el mismo resultado.

Las Metodologías de Desarrollo de Software se pueden dividir en dos grupos: metodologías ágiles y las metodologías tradicionales (no ágiles). (Suárez, 2010)

Las metodologías ágiles se centran en el uso de documentación mínima en el momento de desarrollar los paquetes y buscar ser ágiles en cuanto a responder adecuadamente a los cambios de requerimientos.

1.4.1 Extreme programming (XP).

XP nace como nueva disciplina de desarrollo de software hace aproximadamente unos seis años, y ha causado un gran revuelo entre el colectivo de programadores del mundo. Kent Beck, su autor, es un programador que ha trabajado en múltiples empresas y que actualmente lo hace como programador en la conocida empresa automovilística DaimlerChrysler. Con sus teorías ha conseguido el respaldo de gran parte de la industria del software y el rechazo de otra parte. (Canós, Letelier, & Penadés, 2008)

La programación extrema se basa en la simplicidad, la comunicación y el reciclado continuo de código, para algunos no es más que aplicar una pura lógica.

Cuándo usar XP.

  • Cuando los clientes no tienen idea clara de los requerimientos y los van cambiando.

  • Para proyectos de riesgo: fecha fija de entrega, algo nunca hecho por el grupo, algo nunca hecho por la comunidad de desarrolladores.

  • Entre 2 y 10 programadores. No es apto para proyectos con mucho personal.

  • Integra gerentes y clientes a la formulación de preguntas, la negociación de cronograma y alcances, la creación de las pruebas.

  • Automatiza las pruebas; es posible en casi todos los dominios. Es lícito repensar el diseño para facilitar el ensayo.

  • El objetivo es entregar el software tal cual se necesita y en el momento en que se necesita. Incidentalmente, los proyectos XP muestran mayor productividad. (Pacheco & Pérez, 2009)

Características fundamentales.

  • Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.

  • Pruebas unitarias continuas, frecuentemente repetidas y automatizadas, incluyendo pruebas de regresión. Se aconseja escribir el código de la prueba antes de la codificación. Se basa en las pruebas realizadas a los principales procesos, de tal manera que adelantándonos en algo hacia el futuro, podamos hacer pruebas de las fallas que pudieran ocurrir. Es como si nos adelantáramos a obtener los posibles errores.

  • Programación en parejas: se recomienda que las tareas de desarrollo se lleven a cabo por dos personas en un mismo puesto. Se supone que la mayor calidad del código escrito de esta manera es más importante que la posible pérdida de productividad inmediata (el código es revisado y discutido mientras se escribe).

  • Integración del equipo de programación con el cliente o usuario. Se recomienda que un representante del cliente trabaje junto al equipo de desarrollo.

  • Corrección de todos los errores antes de añadir nueva funcionalidad. Hacer entregas frecuentes.

  • Refactorización del código, es decir, reescribir ciertas partes del código para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento. Las pruebas han de garantizar que en la refactorización no se ha introducido ningún fallo.

  • Propiedad del código compartida: en vez de dividir la responsabilidad en el desarrollo de cada módulo en grupos de trabajo distintos, este método promueve el que todo el personal pueda corregir y extender cualquier parte del proyecto. Las frecuentes pruebas de regresión garantizan que los posibles errores serán detectados.

  • Simplicidad en el código: es la mejor manera de que las cosas funcionen. Cuando todo funcione se podrá añadir funcionalidad si es necesario. La programación extrema apuesta que es más sencillo hacer algo simple y tener un poco de trabajo extra para cambiarlo si se requiere, que realizar algo complicado y quizás nunca utilizarlo.

  • Uso de Metáforas: La comunicación fluida es uno de los valores más importantes de la Programación Extrema, el hecho de incorporar al equipo una persona que represente los intereses del negocio y otras prácticas son valiosas entre otras cosas porque potencian enormemente la comunicación. Para conseguir que la comunicación sea fluida es imprescindible, entre otras cosas, utilizar el vocabulario del negocio. También es fundamental evadir las definiciones abstractas. Dentro de este enfoque es fundamental buscar continuamente metáforas que comuniquen intenciones y resulten descriptivas.

La simplicidad y la comunicación son extraordinariamente complementarias. Con más comunicación resulta más fácil identificar qué se debe y qué no se debe hacer. Cuanto más simple es el sistema, menos tendrá que comunicar sobre éste, lo que lleva a una comunicación más completa, especialmente si se puede reducir el equipo de programadores. (Wesley, 2000)

Objetivos de XP:

Los objetivos de XP son muy simples: la satisfacción del cliente. Esta metodología trata de dar al cliente el software que él necesita y cuando lo necesita. Por tanto, debemos responder muy rápido a las necesidades del cliente, incluso cuando los cambios sean al final de ciclo de la programación.

El segundo objetivo es potenciar al máximo el trabajo en grupo. Tanto los jefes de proyecto, los clientes y desarrolladores, son parte del equipo y están involucrados en el desarrollo del software. (Solís, 2003)

Bases de XP:

La programación extrema se basa en la simplicidad, la comunicación y el reciclado continuo de código, para algunos no es más que aplicar una pura lógica. Lo que buscan en definitiva es la reducción de costes.

Variables XP.

XP define cuatro variables para proyectos de software:

  • Coste

  • Tiempo

  • Calidad

  • Ámbito.

El ciclo de vida ideal de XP consiste de seis fases: Exploración, Planificación de la Entrega (Release), Iteraciones, Producción, Mantenimiento y Muerte del Proyecto. (Beck, 1999)

Fase 1: Exploración

En esta fase, los clientes plantean a grandes rasgos las historias de usuario que son de interés para la primera entrega del producto. Al mismo tiempo el equipo de desarrollo se familiariza con las herramientas, tecnologías y prácticas que se utilizarán en el proyecto. Se prueba la tecnología y se exploran las posibilidades de la arquitectura del sistema construyendo un prototipo. La fase de exploración toma de pocas semanas a pocos meses, dependiendo del tamaño y familiaridad que tengan los programadores con la tecnología.

Fase 2: Planificación de la Entrega

En esta fase el cliente establece la prioridad de cada historia de usuario, y correspondientemente, los programadores realizan una estimación del esfuerzo necesario de cada una de ellas. Se toman acuerdos sobre el contenido de la primera entrega y se determina un cronograma en conjunto con el cliente. Una entrega debería obtenerse en no más de tres meses. Esta fase dura unos pocos días.

Fase 3: Iteraciones

Esta fase incluye varias iteraciones sobre el sistema antes de ser entregado. En la primera iteración se puede intentar establecer una arquitectura del sistema que pueda ser utilizada durante el resto del proyecto. Esto se logra escogiendo las historias que fuercen la creación de esta arquitectura, sin embargo, esto no siempre es posible ya que es el cliente quien decide qué historias se implementarán en cada iteración (para maximizar el valor de negocio). Al final de la última iteración el sistema estará listo para entrar en producción.

Fase 4: Producción

La fase de producción requiere de pruebas adicionales y revisiones de rendimiento antes de que el sistema sea trasladado al entorno del cliente. Al mismo tiempo, se deben tomar decisiones sobre la inclusión de nuevas características a la versión actual, debido a cambios durante esta fase.

Fase 5: Mantenimiento

Mientras la primera versión se encuentra en producción, el proyecto XP debe mantener el sistema en funcionamiento al mismo tiempo que desarrolla nuevas iteraciones. Para realizar esto se requiere de tareas de soporte para el cliente. De esta forma, la velocidad de desarrollo puede bajar después de la puesta del sistema en producción. La fase de mantenimiento puede requerir nuevo personal dentro del equipo y cambios en su estructura.

Fase 6: Muerte del Proyecto

Es cuando el cliente no tiene más historias para ser incluidas en el sistema. Esto requiere que se satisfagan las necesidades del cliente en otros aspectos como rendimiento y confiabilidad del sistema. Se genera la documentación final del sistema y no se realizan más cambios en la arquitectura. La muerte del proyecto también ocurre cuando el sistema no genera los beneficios esperados por el cliente o cuando no hay presupuesto para mantenerlo. (Letelier & Penadés, 2006)

Extreme Programming es un éxito porque hace hincapié en la satisfacción del cliente. Faculta a los desarrolladores con confianza responder a las cambiantes necesidades de los clientes, incluso a finales del ciclo de vida. Se basa en el trabajo en equipo, los administradores, clientes y desarrolladores son socios iguales en un equipo de colaboración. Implementa un equipo simple, pero efectivo medio ambiente propicio para llegar a ser altamente productiva, el equipo se auto-organiza en torno al problema a resolver es la forma más eficiente posible.

Mejora un proyecto de software en cinco aspectos esenciales: la comunicación, la sencillez, la retroalimentación, el respeto y el coraje. Programadores Extreme constantemente se comunican con sus clientes y colegas programadores, mantienen su diseño sencillo y limpio, reciben retroalimentación mediante pruebas de su software a partir del primer día. Cada pequeño éxito profundiza su respeto por las contribuciones únicas de cada uno y cada miembro del equipo. Con esta base Extreme programadores son capaces de responder con valentía a las cambiantes necesidades y la tecnología. (Beck, 1999)

1.4.2 Rational Unified Process (RUP).

El Proceso Unificado Racional (Rational Unified Process en inglés, habitualmente resumido como RUP) es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos.

El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologías adaptables al contexto y necesidades de cada organización. También se conoce por este nombre al software desarrollado por Rational, hoy propiedad de IBM, el cual incluye información entrelazada de diversos artefactos y descripciones de las diversas actividades. Está incluido en el Rational Method Composer (RMC), que permite la personalización de acuerdo a necesidades.

Principios de desarrollo en Metodología RUP.

El RUP está basado en 5 principios clave que son:

Adaptar el proceso:

El proceso deberá adaptarse a las características propias del proyecto u organización. El tamaño del mismo, así como su tipo o las regulaciones que lo condicionen, influirán en su diseño específico. También se deberá tener en cuenta el alcance del proyecto.Balancear prioridades:

Los requerimientos de los diversos inversores pueden ser diferentes, contradictorios o disputarse recursos limitados. Debe encontrarse un balance que satisfaga los deseos de todos.

Demostrar valor iterativamente:

Los proyectos se entregan, aunque sea de un modo interno, en etapas iteradas. En cada iteración se analiza la opinión de los inversores, la estabilidad y calidad del producto, y se refina la dirección del proyecto así como también los riesgos involucrados. (Per Kroll, 2005)

Elevar el nivel de abstracción: Este principio dominante motiva el uso de conceptos reutilizables tales como patrón del software, lenguajes 4GL o esquemas (framework) por nombrar algunos. Esto previene a los ingenieros de software ir directamente de los requisitos a la codificación de software a la medida del cliente. Un nivel alto de abstracción también permite discusiones sobre diversos niveles arquitectónicos. Éstos se pueden acompañar por las representaciones visuales de la arquitectura, por ejemplo con UML.

Enfocarse en la calidad: El control de calidad no debe realizarse al final de cada iteración, sino en todos los aspectos de la producción. El aseguramiento de la calidad forma parte del proceso de desarrollo y no de un grupo independiente.

Características Metodología RUP.

• Forma disciplinada de asignar tareas y responsabilidades (quién hace qué, cuándo y cómo)

• Pretende implementar las mejores prácticas en Ingeniería de Software

• Desarrollo iterativo

• Administración de requisitos

• Uso de arquitectura basada en componentes

• Control de cambios

• Modelado visual del software

• Verificación de la calidad del software RUP es un producto de Rational (IBM). Se caracteriza por ser iterativo e incremental, estar centrado en la arquitectura y guiado por los casos de uso. Incluye artefactos (que son los productos tangibles del proceso como por ejemplo, el modelo de casos de uso, el código fuente, etc.) y roles (papel que desempeña una persona en un determinado momento, una persona puede desempeñar distintos roles a lo largo del proceso). (Corporation, 2003)

1.5 Fundamentación de las tecnologías a utilizar.

Para seleccionar las tecnologías a utilizar se tuvo en cuenta las prestaciones de cada una de ellas y la plataforma de desarrollo en que se desea construir la aplicación a modo de mantener la mayor integración posible entre las mismas. Además se tuvieron presentes los lineamientos del proyecto, así como las exigencias del cliente.

Dadas las características, ventajas y soporte que brinda NetBeans, y sobre todo por ser su licencia "open source", se eligió como IDE a utilizar para el desarrollo del sistema a implementar.

Teniendo en cuenta las particularidades del sistema propuesto se utilizará el framework Symfony de código abierto, compatible con la mayoría de los gestores de bases de datos y navegadores, es multiplataforma e implementa excelentes prácticas y patrones de diseño para la web. (Potencier & Zaninotto, 2008)

Se implementará haciendo uso de los lenguajes de programación: HTML que es el lenguaje de marcado predominante para la creación y publicación de páginas web al que se le pueden añadir características y funcionalidades mediante las CCS (Hojas de Estilo) y JavaScript dando como resultado páginas web rápidas y sencillas. PHP que es un lenguaje del lado del servidor diseñado específicamente para el desarrollo de páginas web dinámicas, que puede ser incluido con facilidad en el código HTML, incorpora una gran cantidad de funciones para realizar útiles tareas relacionadas con la web, permite una sencilla integración con PostgreSQL, es libre y es multiplataforma.

El servidor web usado será Apache debido a su gran cantidad de usuarios en el mundo entero en el tema de la web, en la Universidad de Granma también es uno de los servidores web más utilizados para el desarrollo de aplicaciones que ofrece un amplio soporte de PHP, es una tecnología gratuita de código abierto, es multiplataforma y extensible.

Como gestor de base de datos se utilizará PostgreSQL debido a que se caracteriza por ser confiable, instalación ilimitada ya que es frecuente que las bases de datos comerciales sean instaladas en más servidores de lo que permite la licencia. Algunos proveedores comerciales consideran a esto la principal fuente de incumplimiento de licencia. Con PostgreSQL, nadie puede demandar por violar acuerdos de licencia, puesto que no hay costo asociado a la licencia del software. Mantiene la integridad de sus datos, ofrece muchas funcionalidades modernas, puede usarse en la mayoría de los sistemas operativos y es libre.

Dadas las características de estas excelentes metodologías (XP y RUP) para el desarrollo de software y el uso frecuente de las mismas en proyectos de la universidad, se ha decidido aplicar XP (Extreme Programming) en este trabajo de diploma porque es la más utilizada en proyectos de corto plazo; para obtener un producto sencillo y eficaz que permitirá alcanzar el objetivo general y resuelva el problema que se plantea.

Conclusiones del capítulo.

En este capítulo se realizó un análisis de las metodologías de desarrollo, así como de las tendencias actuales de las tecnologías. Ya que el desarrollo del sistema será guiado por la metodología XP, como herramienta de modelado se utilizará el framework Symfony, el sistema se implementará mediante los lenguajes de programación web: HTML, JavaScript y PHP, el servidor web será Apache, el IDE a utilizar será Netbeans y el SGBD a utilizar será PostgreSQL.

CAPÍTULO II

2.1 Introducción

Partes: 1, 2
Página siguiente