Universidad de las Ciencias Informáticas FACULTAD 8
Herramienta para la gestión de contenido y configuración de ejercicios y clases reutilizables
Trabajo de Diploma para optar por el Título de Ingeniero en Ciencias Informáticas
Autores
Humberto Martín Morales Marlon Abreu Lugo
Tutores
Ing. Geyser Zamora Sánchez Ing. Abel Ernesto Lorente Rodríguez
Ciudad de La Habana Junio del 2009
DECLARACIÓN DE AUTORÍA
Declaramos que somos los únicos autores de este trabajo y autorizamos a la Universidad de las Ciencias Informáticas (UCI) a que haga el uso que estimen pertinente con este trabajo.
Para que así conste firmamos la presente a los __ días del mes de Junio del 2008.
Autores:
Humberto Martín Morales Marlón Abreu Lugo
____________________ _____________________
Tutores:
Geyser Zamora Sánchez Abel Ernesto Lorente Rodríguez
____________________ ______________________
“Beethoven era un buen compositor porque utilizaba ideas nuevas en combinación con ideas antiguas. Nadie, ni siquiera Beethoven podría inventar la música desde cero. Es igual con la informática“.
Richard Stallman
DEDICATORIA
A la auténtica heroína de esta hazaña: mi madre. Sin ella nada tuviera sentido.
A mis abuelas y abuelos, por su confianza en el resultado.
A mi familia en general, por su decisivo aporte.
A mis amigos de aquí y de allá, por su ayuda constante y valiosa.
A mis hermanos, por su preocupación.
Marlon
A mi madre, abuela y padre por haberme brindado una maravillosa educación. Todo lo que soy es gracias a ellos.
A mi novia por ser parte de mi vida.
A mi familia en general por haberme apoyado toda mi vida.
A todos mis amigos.
A mis compañeros por su apoyo y colaboración de forma incondicional.
Humberto
AGRADECIMIENTOS COMUNES
A la Revolución y todos los que la forjaron para que pudiésemos tener la oportunidad de estudiar, especialmente al compañero Fidel por su infinita obra y ejemplo.
A la Universidad, hogar y escuela, que nos convirtió en profesionales comprometidos.
A la Facultad, nuestra trinchera y campo de batalla diaria.
A nuestros tutores, el Ing. Geyser Zamora Sánchez y el Ing. Abel Ernesto Lorente Rodríguez por sus orientaciones y apoyo.
A todos los profesores quienes labraron la senda que hoy concluye.
A los amigos todos, sin ustedes hubiese sido, simplemente, imposible.
A los equipos GALM y Primavera, por su valiosa asistencia.
A muchos más que nos ayudaron y también lo merecen…
Gracias
AGRADECIMIENTOS
A mi mamá, todo lo que soy se lo debo a ella.
Al Niño, mi tercer abuelo, que aunque ya no está me inculcó los deseos de aprender.
A mi tía Mairel, por todos los sacrificios que asumió por mi causa.
A Humbe, mi compañero de tesis: el sólo es un ejército.
A Leosvel, Alexey y Humbertico, venimos remando juntos hace tiempo.
A Sussy y Karlita, mis amigas, siempre presentes aún en la distancia.
A mis amigos de Florencia, sobre todo a Alain, el Ale, Wilmete y mi primo Daiver.
A las cochinillas, estos 5 años fueron mejores por su culpa.
A Yaima, por su constancia.
A mis compañeros de aula, por su ayuda y paciencia en todo este período.
A mi gran familia, estuvieron constantemente pendientes de mis estudios y apoyando a mi mamá.
Marlon
A mi mamá simplemente por ser la mejor del mundo.
A mi papá por estar a mi lado en mi transcurso en la vida.
A mi abuela por ser tan importante en mi formación como persona.
A toda mi familia por el apoyo brindado.
A mi novia Meylin por estar a mi lado en el transcurso de mi desarrollo profesional.
A Marlon por tener tanta paciencia conmigo.
A todos mis amigos.
A mis todos mis compañeros por haberme ayudado en estos 5 años.
A todos aquellos que de algún modo aportaron su granito de arena en mi desarrollo profesional.
Humberto
RESUMEN
El impacto que causan las nuevas tecnologías de la información y comunicaciones es significativo hoy en día y todos los sectores de la economía y la sociedad se ven influidos por este fenómeno. La esfera de la Educación ha experimentado un cambio dramático con la introducción de la computadora en las aulas y por tanto la demanda de software educativo se ha incrementado considerablemente, sobre todo en formato multimedia. A raíz de esta situación se han creado una serie de ejercicios y clases reutilizables que agilizan el desarrollo de los productos enfocados en este sentido. La información de contenido y configuración que manejan estas aplicaciones se hace difícil de gestionar debido a que las herramientas existentes no se ajustan a los estándares internos o están bajo licencias restrictivas. El sistema que se propone es una herramienta web desarrollada sobre entornos libres que permite introducir los datos de los ejercicios y a partir de estos generar sus ficheros de configuración y contenido. En el presente trabajo están documentados los resultados del estudio del arte realizado con respecto a las soluciones semejantes y las herramientas y tecnologías empleadas para este fin. Además se describen las características de la aplicación y las actividades relacionadas con la metodología XP adoptada para cubrir su ciclo de desarrollo.
ABSTRACT
The current impact caused by new information and communications technologies is remarkable and all sectors of the economy and society are affected by this phenomenon.
The education field has changed dramatically with the introduction of computers in the classrooms and therefore the demand for educational software has grown considerably, especially in multimedia format. Due to this situation has created a set of reusable classes and exercises that speed up product development focused in this direction. The content and settings information that use these applications are difficult to manage because the existing tools do not meet the internal standards or they are under restrictive licenses. The system proposed is a web tool developed on free environments that allows you to enter exercises data since these generate your configuration and content files. In this paper the results of the study of art done on similar solutions and the tools and technologies used for this purpose are documented. It also describes the characteristics of the application and the activities associated with the XP methodology adopted to cover their development cycle.
ÍNDICE
FUNDAMENTACIÓN TEÓRICA ... 9
CAPÍTULO 2... 38
EXPLORACIÓN Y PLANIFICACIÓN ... 38
CAPÍTULO 3... 51
DISEÑO, CODIFICACIÓN Y PRUEBAS ... 51
CONCLUSIONES ... 79
RECOMENDACIONES ... 80
REFERENCIAS BIBLIOGRÁFICAS ... 79
BIBLIOGRAFÍA ... 84
GLOSARIO DE TÉRMINOS ... 85
ÍNDICE DE TABLAS
TABLA 1: TABLA DEL PERFIL TECNOLÓGICO ... 40
TABLA 2: HU INTRODUCIR DATOS DE EJERCICIO ... 42
TABLA 3: HU VER DATOS DE EJERCICIO ... 42
TABLA 4: HU MODIFICAR DATOS DE EJERCICIO... 42
TABLA 5: HU GENERAR FICHERO DE CONFIGURACIÓN Y CONTENIDO ... 43
TABLA 6: HU GESTIONAR TIPOLOGÍA DE EJERCICIO ... 43
TABLA 7: HU GESTIONAR TEMA DE UN PRODUCTO... 44
TABLA 8: HU GESTIONAR PRODUCTO DE UN PROYECTO ... 44
TABLA 9: HU GESTIONAR PROYECTO ... 44
TABLA 10: HU BUSCAR EJERCICIO... 45
TABLA 11: HU GESTIONAR USUARIO ... 45
TABLA 12: HU AUTENTICAR USUARIO ... 45
TABLA 13: PUNTOS DE ESTIMACIÓN POR HISTORIAS DE USUARIO ... 47
TABLA 14: HISTORIAS DE USUARIO POR MÓDULOS ... 48
TABLA 15: PLAN ENTREGAS ... 49
TABLA 16: PLAN DE DURACIÓN DE LAS ITERACIONES ... 51
TABLA 17: TARJETA CRC USUARIO ... 55
TABLA 18: TARJETA CRC PROYECTO ... 55
TABLA 19: TARJETA CRC PRODUCTO ... 56
TABLA 20: TARJETA CRC TEMA ... 56
TABLA 21: TARJETA CRC EJERCICIO ... 56
TABLA 22: TARJETA CRC CONTENIDO VERDADERO Y FALSO ... 57
TABLA 23: TARJETA CRC CONFIGURACIÓN VERDADERO Y FALSO ... 57
TABLA 24: TARJETA CRC INCISO ... 57
TABLA 25: TARJETA CRC CONTENIDO ARRASTRE CON IMÁGENES... 58
TABLA 26: TARJETA CRC CONFIGURACIÓN AI ... 58
TABLA 27: TARJETA CRC IMAGEN ... 58
TABLA 28: TARJETA CRC CONTENIDO SELECCIÓN ... 59
TABLA 29: TARJETA CRC CONFIGURACIÓN SELECCIÓN ... 59
TABLA 30: PREGUNTA ... 59
TABLA 31: PF VALIDAR DATOS DE UN EJERCICIO ... 66
TABLA 32: PF MOSTRAR DATOS DE UN EJERCICIO ... 67
TABLA 33: PF GENERAR FICHERO DE CONFIGURACIÓN Y CONTENIDO ... 67
TABLA 34: PF DESCARGAR FICHERO DE CONFIGURACIÓN Y CONTENIDO ... 68
TABLA 35: PF ADICIONAR TIPOLOGÍA DE EJERCICIO ... 68
TABLA 36: PF MOSTRAR TIPOLOGÍA DE EJERCICIO ... 69
TABLA 37: PF ADICIONAR TEMA A UN PRODUCTO ... 69
TABLA 38: PF MOSTRAR LISTADO DE TEMAS DE UN PRODUCTO ... 70
TABLA 39: PF ELIMINAR TEMA DE UN PRODUCTO ... 70
TABLA 40: PF ADICIONAR PRODUCTO A UN PROYECTO ... 71
TABLA 41: PF MOSTRAR LISTADO DE PRODUCTOS DE UN PROYECTO ... 71
TABLA 42: PF ELIMINAR PRODUCTO DE UN PROYECTO ... 72
TABLA 43: PF ADICIONAR PROYECTO ... 72
TABLA 44: PF MOSTRAR LISTADO DE PROYECTOS ... 73
TABLA 45: PF ELIMINAR PROYECTO ... 73
TABLA 46: PF BUSCAR EJERCICIO... 74
TABLA 47: PF ADICIONAR USUARIO ... 74
TABLA 48: PF MOSTRAR LISTADO DE USUARIOS... 75
TABLA 49: PF MODIFICAR INFORMACIÓN DE USUARIO ... 75
TABLA 50: PF ELIMINAR USUARIO ... 76
TABLA 51: PF AUTENTICAR USUARIO ... 76
TABLA 52: COBERTURA DE PRUEBAS UNITARIAS ... 77
TABLA 53: COBERTURA DE PRUEBAS DE ACEPTACIÓN ... 77
ÍNDICE DE FIGURAS
FIGURA 1: MODELO DE DOMINIO ... 40
FIGURA 2: ESTRUCTURA DE UN PROYECTO ... 53
FIGURA 3: ESTRUCTURA DE UNA APLICACIÓN ... 53
FIGURA 4: ESTRUCTURA DE UN MÓDULO ... 54
FIGURA 5: ESTRUCTURA DEL DIRECTORIO WEB ... 54
FIGURA 6: ESTRUCTURA DEL SUBDIRECTORIO MODEL ... 60
FIGURA 7: DIAGRAMA DE CLASES PERSISTENTES ... 61
FIGURA 8: MODELO DE DATOS ... 62
[1]
INTRODUCCIÓN
El ritmo acelerado en que se desarrolla el industrializado universo que rodea la actividad humana y su progreso en las actuales circunstancias y en cualquiera de sus esferas, está fuertemente determinado por el impacto inevitable de las Tecnologías de la Información y las Comunicaciones (TICs). Los resultados de su aplicación son notables debido al amplio espectro de posibilidades que genera y por lo tanto su aceptación es un hecho confirmado e irrefutable, aunque están indiscriminadamente distribuidos y son una utopía para muchos. Debido a que hoy en día es imposible imaginar la realización de las tareas inherentes a la acción del hombre en su constante interacción con la naturaleza sin la presencia de este factor, los gobiernos, organizaciones y empresas están prestándole especial atención a este fenómeno y han enfocando sus estrategias en aras de aprovechar las ventajas que ofrece para mejorar su desempeño.
El mundo informático es cada vez más dinámico e impredecible y está estrechamente vinculado a otras ramas que requieren de su aporte para perfeccionar su funcionamiento.
El surgimiento de Internet como estructura para conectar todo el planeta y de la World Wide Web como sistema para enlazar la información y hacerla accesible desde cualquier rincón han condicionado aún más esta dependencia. La rama educacional no está exenta del impacto que se origina como consecuencia del proceso de innovación tecnológica.
Hoy se escuchan novedosos términos en materia de Educación; tales como Aulas Virtuales, e-learning o pizarras interactivas; que vienen a enriquecer el extenso vocabulario de este vital sector. Las aplicaciones multimedia también han revolucionado este campo y su ingente aporte ha sido bendecido por todos los implicados. Todo este sofisticado andamiaje ha permitido extender y consolidar los métodos de enseñanza- aprendizaje y constituye un paso importante en esa dirección.
Cuba, como baluarte indiscutible y reconocido a nivel mundial en cuestiones educativas y como una tarea esencial y prioritaria en el marco de la Batalla de Ideas en la que está involucrada, ha hecho énfasis en el proceso de Informatización de la Sociedad, el cual se encarga de poner todo el desarrollo tecnológico al alcance del pueblo. Como resultado todos los niveles de enseñanza cuentan con la ayuda inestimable que brindan las TICs, en especial los centros universitarios donde se precisa de sus servicios para reforzar la
[2]
formación general integral de cada profesional.
La Universidad de las Ciencias Informáticas (UCI) está a la vanguardia en la producción de software como parte esencial de esta industria en nuestro país. Son múltiples los proyectos productivos que se dedican a esta labor y específicamente a la creación de aplicaciones multimedia educativas que favorecen la adquisición de conocimientos al alumno. Este movimiento se ve obstaculizado por el hecho de que las herramientas utilizadas son propietarias y Cuba no cuenta con la posibilidad de obtener sus licencias debido a restricciones impuestas como parte de la injusta y despiadada política del bloqueo económico.
Surge como alternativa a la necesidad, dentro de la estrategia del Ministerio de la Informática y las Comunicaciones (MIC) para la migración a plataformas y software libres en el país en concordancia con sus principios y convicciones, la intención y disposición de desarrollar herramientas para este fin, orientadas a tecnologías libres que proporcionen una base que sustente la gestión e implementación de aplicaciones multimedia eliminando los inconvenientes que supone depender de productos privados y además fungiendo como pilar para el insoslayable proceso de migración mencionado con anterioridad y que garantizará la independencia en materia tecnológica.
Situación Problémica:
Cuba ha desarrollado un programa de Informatización de la Sociedad que le permita adaptarse a las actuales circunstancias tecnológicas como proceso natural dentro de la vertiginosa revolución científica que se produce en el contexto internacional. Como parte de esta estrategia se han visto beneficiados numerosos sectores entre los que cuales se destaca la Educación, en el que se aprecia un uso y aprovechamiento intensivos de las ventajas que brinda la vinculación con las TICs. La necesidad de software educativo se ha incrementado notablemente, fundamentalmente en formato multimedia, como complemento al aprendizaje de los alumnos con la introducción de la computadora en las aulas cubanas.
Actualmente en la UCI, como una de sus más importantes misiones y como apoyo además a la industria del software nacional, existen disímiles proyectos que se encargan
[3]
de este tipo de producción, específicamente en el campo de las aplicaciones multimedia.
Han surgido a raíz de este movimiento diferentes tipologías de ejercicios educativos y clases reutilizables, los cuáles facilitan la creación de productos en este sentido y hacen más dinámico e interactivo el entorno de aprendizaje del estudiante captando mejor su atención. Sin embargo se hace difícil gestionar la información de contenido y configuración que se requiere en la confección de los ejercicios y por consiguiente crear un software educativo con menor esfuerzo, en corto tiempo y con la calidad requerida, además de viabilizar el diálogo entre los educadores y los desarrolladores que por múltiples motivos se torna complejo en ocasiones, por lo que se hace necesario la automatización de estos procesos como complemento a dicha producción.
Las herramientas disponibles en la actualidad para este fin están desarrolladas sobre plataformas propietarias y bajo las restricciones impuestas por las licencias privadas y por tanto lejos del alcance de la UCI debido al absurdo y brutal bloqueo al cual estamos sometidos y que nos impide o limita el intercambio comercial o, por otro lado, no cumplen con las necesidades existentes. También el proceso de migración a software libre que se ejecuta a nivel nacional se ve frenado por esta situación, así como la aspiración de lograr la independencia tecnológica, indispensable para progresar en este ambiente globalizado y desigual.
Problema científico:
La no existencia de una herramienta libre que posibilite la creación de ficheros XML de contenido y configuración para la confección de ejercicios y clases reutilizables en el desarrollo de productos educativos en formato multimedia.
Objeto de estudio:
Herramientas libres para la gestión de contenidos y configuración de ejercicios y clases reutilizables necesarios en la creación de aplicaciones multimedia.
Campo de acción:
Herramientas web libres para la gestión de contenidos y configuración de ejercicios y clases reutilizables requeridas en el desarrollo de productos multimedia y software educativo en la UCI.
[4]
Objetivo General:
Proporcionar a los desarrolladores una herramienta libre que posibilite crear archivos de configuración y contenido para más tarde ser utilizados por una serie de clases y ejercicios reutilizables destinadas a un rápido desarrollo de aplicaciones multimedia educativas.
Objetivos Específicos:
Realizar un estudio y documentación de las diferentes tendencias y herramientas que existen en el mundo del software libre referentes a la gestión de contenidos y configuración de ejercicios y clases reutilizables.
Realizar un estudio y documentación de los diferentes mecanismos de generación de ficheros XML, necesarios para la creación de ejercicios educativos.
Realizar el análisis y diseño para la implementación de una herramienta que posibilite crear archivos XML para la elaboración de ejercicios educativos.
Implementar dicha herramienta para posteriormente utilizarla en la producción de Software Educativo en la UCI.
Idea a defender:
La creación de una herramienta libre para la gestión de contenidos y configuración de ejercicios y clases reutilizables, para facilitar el trabajo de los desarrolladores de aplicaciones multimedia y mejorar el diálogo entre estos y los clientes.
Tareas de Investigación:
1. Revisar el estado del arte.
Revisar la bibliografía existente sobre la gestión de contenidos y configuración de ejercicios y clases reutilizables necesarios en la creación de productos multimedia.
Estudiar los documentos XML que se utilizan para la creación de ejercicios educativos.
Estudiar, documentar y justificar la selección de las herramientas y tecnologías web a utilizar para realizar el sistema propuesto.
[5]
2. Elaborar Diseño Teórico de la investigación.
Definir situación problémica, problema a resolver, objeto de investigación, campo de acción, objetivos, idea defender, aportes e impacto social.
Elaborar el Cronograma de Actividades.
3. Elaborar la propuesta de solución.
Evaluar patrones de arquitectura y estándares de codificación y diseño a emplear.
Definir las historias de usuarios y estimar el esfuerzo requerido para desarrollarlas.
Realizar la planificación general de entregas y de cada una de las iteraciones en específico.
Elaborar y ejecutar las pruebas unitarias y funcionales.
Efectuar la codificación de la aplicación propuesta.
4. Estructurar el Documento de Tesis.
Documentar en su totalidad la labor realizada.
Revisar toda la documentación generada.
Aportes:
1. Herramienta web libre para la gestión de contenidos y la configuración de ejercicios y clases reutilizables, que apoye y simplifique el trabajo a los desarrolladores de aplicaciones multimedia.
2. Facilitar el diálogo entre los desarrolladores y clientes.
3. Apoyo al proceso de migración a software libre que se lleva a cabo en la UCI.
Estructuración del contenido por capítulos
Capítulo 1: Fundamentación Teórica. En este capítulo se hace referencia a los elementos teóricos que constituyen la base de la investigación realizada. Se exponen los resultados del estudio estado del arte y se describen las soluciones similares existentes. Se presentan las herramientas, tecnologías y metodología a utilizar fundamentándose su selección teniendo como base el análisis exhaustivo desarrollado.
[6]
Capítulo 2: Exploración y Planificación. En este capítulo se hace alusión a los conceptos que rodean el negocio y se utiliza como apoyo auxiliar un modelo de dominio que los refleja sintetizadamente, se presentan las Historias de Usuario capturadas en la fase de Exploración y la planificación realizada a partir de éstas como parte del trabajo llevado a cabo en la fase de igual nombre.
Capítulo 3: Diseño, Codificación y Pruebas. En este capítulo se describen los aspectos asociados al diseño, la implementación y las pruebas de la aplicación. Se presentan artefactos como las tarjetas CRC (Clase, Responsabilidad, Colaboración), el diagrama de clases persistentes y el modelo de datos. Se detallan las pruebas funcionales realizadas para verificar la correspondencia con lo acordado con el usuario.
[9]
CAPÍTULO 1
FUNDAMENTACIÓN TEÓRICA
1.1 Introducción
En este capítulo se abordan las cuestiones vinculadas a las soluciones similares que existen en materia de gestión de contenidos y configuración de ejercicios y clases reutilizables útiles en la producción de aplicaciones multimedia, que se originan como resultado del estudio analítico del estado del arte y también las referentes a las proyecciones, tecnologías y herramientas que para estos fines se emplean. Basada en la investigación correspondiente se seleccionan y argumentan aquellas que se ajustan más al medio circundante y se conjugan mejor con las necesidades actuales de desarrollo.
1.2 Gestión de Contenidos
La definición de gestión de contenidos puede ser una tarea algo difícil debido a que el término es utilizado en ámbitos diversos y por supuesto con puntos de vista diferentes.
Algunos conceptos en distintos contextos son:
En el mundo informático se refiere a un sistema que posibilita la administración y publicación de los contenidos de una página web, alojados en una base de datos, permitiendo su diseño de manera independiente.
Por otra parte, la gestión de contenidos también puede equipararse a un planteamiento más amplio enfocado a la gestión global de los recursos de información de una institución o empresa mediante tecnologías web (Internet e Intranet). Este enfoque da a la tecnología un papel facilitador, y el mayor peso recae en los aspectos relacionados con la identificación de recursos de información internos y externos, su valoración, gestión y tratamiento eficiente. (1)
[10]
Una tercera definición de gestión de contenidos procede del área de la gestión de publicaciones y documentos electrónicos. En este ámbito, se usa el término para referirse a la aplicación de una serie de técnicas y herramientas para la codificación, almacenamiento y distribución de publicaciones en formato digital. Es en este ámbito donde la utilización de los lenguajes de marcas " inicialmente SGML y posteriormente XML " ha sido una constante debida a su carácter abierto, la independencia de proveedores y de plataformas hardware/software específica, y la posibilidad de reutilizar el mismo contenido en múltiples productos y publicaciones. En los tres casos se pueden encontrar puntos comunes. El más importante de ellos, la necesidad de utilizar tecnologías de la información y sistemas informáticos para el almacenamiento y distribución de información de naturaleza textual. (2)
1.3 Análisis de Soluciones Similares Existentes LIM Libros Interactivos Multimedia
El sistema Lim es un entorno para la creación de materiales educativos, formado por un editor de actividades (EdiLim), un visualizador (LIM) y un archivo en formato XML que define las propiedades del libro y las páginas que lo componen.
Ventajas:
No es necesario instalar nada en el ordenador.
Accesibilidad inmediata desde Internet.
Independiente del sistema operativo, hardware y navegador web.
Tecnología Macromedia Flash, de contrastada fiabilidad y seguridad.
Entorno abierto, basado en el formato XML.
Desde el punto de vista educativo:
Entorno agradable.
Facilidad de uso para los alumnos y el profesorado.
Actividades atractivas.
Posibilidad de control de progresos.
Evaluación de los ejercicios.
No hay que preparar los ordenadores, es un recurso fácil de manejar.
Posibilidad de utilización con ordenadores, PDA y Pizarras Digitales Interactivas.
Creación de actividades de forma sencilla. (3)
[11]
EdiLIM es el editor de libros LIM para entornos Microsoft Windows. (4)
JClic
JClic está formado por un conjunto de aplicaciones informáticas que sirven para realizar diversos tipos de actividades educativas: rompecabezas, asociaciones, ejercicios de texto, palabras cruzadas...
Las actividades no se acostumbran a presentar solas, sino empaquetadas en proyectos.
Un proyecto está formado por un conjunto de actividades y una o más secuencias, que indican el orden en qué se han de mostrar.
JClic está desarrollado en la plataforma Java, es un proyecto de código abierto y funciona en diversos entornos y sistemas operativos. (5)
JClic es software libre, y se distribuye bajo los términos de la Licencia Pública General de GNU (GPL).
Los datos de JClic se almacenan en formato XML. Eso permite su integración en bancos de recursos de estructura compleja, así como la reutilización de los proyectos JClic en otras aplicaciones. (6)
Constructor
CONSTRUCTOR es un poderoso instrumento de creación de contenidos educativos digitales; se trata de una herramienta de autor que se puede instalar en modo local o en un servidor, y tiene versiones para sistemas Debian (LinEx, Ubuntu, Max, Lliurex, Guadalinex, Molinux...) y Windows. Por lo tanto, se puede usar en cualquier ordenador personal que tenga instalado uno de estos sistemas operativos o en un servidor (por ejemplo, de un centro educativo) para ser usado conjuntamente por diferentes usuarios.
(7)
Su funcionamiento obedece a un principio fundamental: la facilidad de uso para el profesor, que puede incorporar cualquier elemento por el sencillo procedimiento de
[12]
arrastrar y soltar. Consta de un variado plantillero que incluye 47 modelos diferentes de actividades (crucigrama, sopa de letras, emparejamientos diversos, dictados de palabras o frases, completar u ordenar frases o textos, pirámide, ahorcado, rompecabezas, puzzles, tangram, reconstrucción de figuras, compositor musical,…) además de un conjunto de aplicaciones sumamente avanzadas (calculadoras básica y científica, fórmulas y gráficas matemáticas, y un completo laboratorio virtual de física). Permite además la inclusión de zonas interactivas, documentos de todo tipo (applets, pdfs, etoys de Squeak…), crear presentaciones de imágenes o generar enlaces a materiales externos para el diseño de estructuras de navegación tan complejas como desee el profesor-autor, de modo que el Constructor acepta tanto la utilización del plantillero como la creación de WebQuest o de páginas web. (8)
1.4 Lenguaje de Programación
Un lenguaje de programación es aquel elemento dentro de la informática que nos permite crear programas mediante un conjunto de instrucciones, operadores y reglas de sintaxis;
que pone a disposición del programador para que este pueda comunicarse con los dispositivos hardware y software existentes. (9)
Lenguajes y tecnologías del lado del cliente HTML
HTML (HyperText Markup Language) es un lenguaje muy sencillo que se utiliza en la construcción de páginas web, por tanto el formato más fácil para este fin debido a su simplicidad, concebido por Tim Berners Lee a principios de la década de los noventa.
Permite estructurar el contenido de los documentos mediante el uso de etiquetas y en combinación con CSS (Cascading Style Sheet) dotarlos de una apariencia agradable.
Además de texto, puede incluir otros componentes multimedia como imágenes y animaciones que hacen más atractiva las páginas a la vista del usuario.
AJAX
El término es un acrónimo de Asynchronous JavaScript And XML y tiene que ver con la manera asincrónica en que se establece la comunicación entre la aplicación creada con Ajax que se ejecuta en el cliente y el servidor. Las modificaciones en las páginas pueden
[13]
realizarse sin necesidad de que sean recargadas con lo que se logra una mayor rapidez y usabilidad en las aplicaciones.
Ajax no es una tecnología. Es realmente muchas tecnologías, cada una floreciendo por su propio mérito, uniéndose en poderosas nuevas formas. AJAX incorpora (10):
presentación basada en estándares usando XHTML y CSS.
exhibición e interacción dinámicas usando el Document Object Model.
Intercambio y manipulación de datos usando XML and XSLT.
Recuperación de datos asincrónica usando XMLHttpRequest.
y JavaScript poniendo todo junto.
Se encuentra soportada en múltiples sistemas operativos y navegadores debido a que se rige por estándares abiertos y goza de una amplia popularidad en el mundo del desarrollo web.
CSS
Hojas de Estilo en Cascada (Cascading Style Sheets), es un mecanismo simple que describe cómo se va a mostrar un documento en la pantalla, o cómo se va a imprimir, o incluso cómo va a ser pronunciada la información presente en ese documento a través de un dispositivo de lectura. Esta forma de descripción de estilos ofrece a los desarrolladores el control total sobre estilo y formato de sus documentos. (11)
CSS se utiliza para dar estilo a documentos HTML y XML, separando el contenido de la presentación. Los Estilos definen la forma de mostrar los elementos HTML y XML. CSS permite a los desarrolladores Web controlar el estilo y el formato de múltiples páginas Web al mismo tiempo. Cualquier cambio en el estilo marcado para un elemento en la CSS afectará a todas las páginas vinculadas a esa CSS en las que aparezca ese elemento.
(12)
XML
XML es un Lenguaje de Etiquetado Extensible muy simple, pero estricto que juega un papel fundamental en el intercambio de una gran variedad de datos. Es un lenguaje muy
[14]
similar a HTML pero su función principal es describir datos y no mostrarlos como es el caso de HTML. XML es un formato que permite la lectura de datos a través de diferentes aplicaciones. Las tecnologías XML son un conjunto de módulos que ofrecen servicios útiles a las demandas más frecuentes por parte de los usuarios. XML sirve para estructurar, almacenar e intercambiar información. (13)
XML fue creado al amparo del Word Wide Web Consortium (W3C) organismo que vela por el desarrollo de WWW partiendo de las amplias especificaciones de SGML. Su desarrollo se comenzó en 1996 y la primera versión salió a la luz el 10 de febrero de 1998. (14)
Lenguajes y tecnologías del lado del servidor PHP
Acrónimo de "PHP: Hypertext Preprocessor", es un lenguaje "Open Source" interpretado de alto nivel, especialmente pensado para desarrollos web y el cual puede ser embebido en páginas HTML. La mayoría de su sintaxis es similar a C, Java y Perl y es fácil de aprender. La meta de este lenguaje es permitir escribir a los creadores de páginas web, páginas dinámicas de una manera rápida y fácil, aunque se pueda hacer mucho más con PHP. (15)
Quizás la característica más potente y destacable de PHP es su soporte para una gran cantidad de bases de datos. Escribir un interfaz vía web para una base de datos es una tarea simple con PHP (16). Entre los gestores pueden destacarse:
MySQL.
Oracle (OCI7 and OCI8).
PostgreSQL.
PHP puede ser utilizado en cualquiera de los principales sistemas operativos del mercado, incluyendo Linux, muchas variantes Unix (incluyendo HP-UX, Solaris y OpenBSD), Microsoft Windows, Mac OS X, RISC OS y probablemente alguno más. PHP soporta la mayoría de servidores web de hoy en día, incluyendo Apache, Microsoft Internet Information Server, Personal Web Server, Netscape e iPlanet, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd y muchos otros. PHP tiene módulos disponibles para la mayoría de los servidores, para aquellos otros que soporten el estándar CGI, PHP puede usarse como procesador CGI. (17)
[15]
PHP tiene unas características muy útiles para el procesamiento de texto, desde expresiones regulares POSIX extendidas o tipo Perl hasta procesadores de documentos XML. Para procesar y acceder a documentos XML, soportamos los estándares SAX y DOM. Puede utilizar la extensión XSLT para transformar documentos XML. (18)
JSP
Es un acrónimo de Java Server Pages, que en castellano vendría a decir algo como Páginas de Servidor Java. Es, pues, una tecnología orientada a crear páginas web con programación en Java. Con JSP podemos crear aplicaciones web que se ejecuten en variados servidores web, de múltiples plataformas, ya que Java es en esencia un lenguaje multiplataforma. Las páginas JSP están compuestas de código HTML/XML mezclado con etiquetas especiales para programar scripts de servidor en sintaxis Java. Por tanto, las JSP podremos escribirlas con nuestro editor HTML/XML habitual. (19)
Perl
Es actualmente un lenguaje interpretado de propósito general aunque en sus inicios fue pensado por Larry Wall para hacer más sencillas las tareas relacionadas con la administración de sistemas Unix. Existen versiones para la mayoría de los sistemas operativos por lo que se ha convertido en un lenguaje multiplataforma ampliando un poco más su alcance. Una de sus limitaciones está dada por la herencia de algunas estructuras del intérprete de comandos Unix que convierte a su sintaxis, en muchas ocasiones, difícil de comprender.
Mediante una serie de módulos adicionales, tales como el DBD o el ODBC, Perl puede servir para acceder a bases de datos, desde BD gratuitas como MySQL hasta el Microsoft SQL server usando ODBC. (20)
1.5 Framework
Conjunto de APIs y herramientas destinadas a la construcción de un determinado tipo de aplicaciones de manera generalista. (21)
[16]
En general los framework son soluciones completas que contemplan herramientas de apoyo a la construcción de aplicaciones.
Symfony en Pocas Palabras
Un framework simplifica el desarrollo de una aplicación mediante la automatización de algunos de los patrones utilizados para resolver las tareas comunes. Además, un framework proporciona estructura al código fuente, forzando al desarrollador a crear código más legible y más fácil de mantener. Por último, un framework facilita la programación de aplicaciones, ya que encapsula operaciones complejas en instrucciones sencillas. (22)
Symfony es un completo framework diseñado para optimizar, gracias a sus características, el desarrollo de las aplicaciones web. Para empezar, separa la lógica de negocio, la lógica de servidor y la presentación de la aplicación web. Proporciona varias herramientas y clases encaminadas a reducir el tiempo de desarrollo de una aplicación web compleja. Además, automatiza las tareas más comunes, permitiendo al desarrollador dedicarse por completo a los aspectos específicos de cada aplicación. El resultado de todas estas ventajas es que no se debe reinventar la rueda cada vez que se crea una nueva aplicación web. (23)
Symfony está desarrollado completamente con PHP 5. Ha sido probado en numerosos proyectos reales y se utiliza en sitios web de comercio electrónico de primer nivel.
Symfony 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 (Unix, Linux, etc.) como en plataformas Windows. A continuación se muestran algunas de sus características. (24)
Características de Symfony
Symfony se diseñó para que se ajustara a los siguientes requisitos (25):
Fácil de instalar y configurar en la mayoría de plataformas (y con la garantía de que funciona correctamente en los sistemas Windows y *nix estándares)
Independiente del sistema gestor de bases de datos
Sencillo de usar en la mayoría de casos, pero lo suficientemente flexible como para
[17]
adaptarse a los casos más complejos
Basado en la premisa de "convenir en vez de configurar", en la que el desarrollador sólo debe configurar aquello que no es convencional
Sigue la mayoría de mejores prácticas y patrones de diseño para la web
Preparado para aplicaciones empresariales y adaptable a las políticas y arquitecturas propias de cada empresa, además de ser lo suficientemente estable como para desarrollar aplicaciones a largo plazo
Código fácil de leer que incluye comentarios de phpDocumentor y que permite un mantenimiento muy sencillo
Fácil de extender, lo que permite su integración con librerías desarrolladas por terceros.
Automatización de Características de Proyectos Web
Symfony automatiza la mayoría de elementos comunes de los proyectos web, como por ejemplo (26):
La capa de internacionalización que incluye Symfony permite la traducción de los datos y de la interfaz, así como la adaptación local de los contenidos.
La capa de presentación utiliza plantillas y layouts que pueden ser creados por diseñadores HTML sin ningún tipo de conocimiento del framework. Los helpers incluidos permiten minimizar el código utilizado en la presentación, ya que encapsulan grandes bloques de código en llamadas simples a funciones.
Los formularios incluyen validación automatizada y relleno automático de datos ("repopulation"), lo que asegura la obtención de datos correctos y mejora la experiencia de usuario.
Los datos incluyen mecanismos de escape que permiten una mejor protección contra los ataques producidos por datos corruptos.
La gestión de la caché reduce el ancho de banda utilizado y la carga del servidor.
La autenticación y la gestión de credenciales simplifican la creación de secciones restringidas y la gestión de la seguridad de usuario.
El sistema de enrutamiento y las URL limpias permiten considerar a las direcciones de las páginas como parte de la interfaz, además de estar optimizadas para los buscadores.
El soporte de e-mail incluido y la gestión de APIs permiten a las aplicaciones web interactuar más allá de los navegadores.
[18]
Los listados son más fáciles de utilizar debido a la paginación automatizada, el filtrado y la ordenación de datos.
Los plugins, las factorías (patrón de diseño "Factory") y los "mixin" permiten realizar extensiones a medida de Symfony.
Las interacciones con Ajax son muy fáciles de implementar mediante los helpers que permiten encapsular los efectos JavaScript compatibles con todos los navegadores en una única línea de código.
Zend Framework
Zend Framework se trata de un framework para desarrollo de aplicaciones Web y servicios Web con PHP, te brinda soluciones para construir sitios web modernos, robustos y seguros. Además es Open Source y trabaja con PHP 5. Características fundamentales (27):
Trabaja con MVC (Model View Controller)
Cuenta con módulos para manejar archivos PDF, canales RSS, Web Services (Amazon, Flickr, Yahoo), etc.
El Marco de Zend también incluye objetos de las diferentes bases de datos, por lo que es extremadamente simple para consultar su base de datos, sin tener que escribir ninguna consulta SQL.
Una solución para el acceso a base de datos que balancea el ORM con eficiencia y simplicidad.
Completa documentación y tests de alta calidad.
Soporte avanzado para i18n (internacionalización).
Robustas clases para autenticación y filtrado de entrada.
Zend Framework reúne otras características que lo hacen interesante como ser implementado totalmente usando el paradigma orientado a objetos, soportar múltiples gestores de bases de datos entre ellos MySQL, PostgreSQL, Oracle, basar su estructura en componentes que están débilmente acoplados y que pueden utilizarse independientemente y manejar la seguridad a través de Listas de Control de Acceso. El hecho de ser patrocinado por la empresa Zend Technologies, a quien también se
[19]
considera como uno de los principales impulsores de PHP, le otorga un mérito adicional aunque otras compañías como Google y Microsoft han contribuido también.
CakePHP
Es un framework de código abierto creado con PHP, siguiendo la filosofía de Ruby on Rails, que brinda una estructura sólida que permite el desarrollo rápido de aplicaciones Web. Algunas de sus características son (28):
Comunidad afectiva y amistosa
Licencia flexible
Compatible con PHP4 y PHP5
CRUD integrado para la interacción con la base de datos
Soporte de aplicación [scaffolding]
Generación de código
Arquitectura Modelo Vista Controlador (MVC)
Despachador de peticiones [dispatcher], con URLs y rutas personalizadas y limpias
Validación integrada
Plantillas rápidas y flexibles (sintaxis de PHP, con ayudantes[helpers])
Ayudantes para AJAX, JavaScript, formularios HTML y más
Componentes de Email, Cookie, Seguridad, Sesión y Manejo de solicitudes
Listas de control de acceso flexibles
Limpieza de datos
Caché flexible
Localización
Funciona en cualquier subdirectorio del sitio web, con poca o ninguna configuración de Apache
1.6 Servidor Web
Un servidor de páginas Web es un programa que permite acceder a páginas Web alojadas en un ordenador. Hoy en día Apache es el servidor Web más utilizado del mundo, encontrándose muy por encima de sus competidores, tanto gratuitos como comerciales. Es un software de código abierto que funciona sobre cualquier plataforma.
Desde su origen ha evolucionado hasta convertirse en uno de los mejores servidores en términos de eficiencia, funcionalidad y velocidad, surgió en abril de 1996 y ya en julio del
[20]
2002 era utilizado por el 57% de los sitios Web de Internet. (29)
Tiene capacidad para servir páginas tanto de contenido estático, para lo que nos serviría sencillamente un viejo ordenador 486, como de contenido dinámico a través de otras herramientas soportadas que facilitan la actualización de los contenidos mediante bases de datos, ficheros u otras fuentes de información, además de que es muy potente y altamente configurable. (30)
Los servidores Web suministran páginas Web a los navegadores que lo solicitan. En términos más técnicos, los servidores Web soportan el Protocolo de Transferencia de Hipertexto como HTTP (HyperText Transfer Protocol), el estándar de Internet para comunicaciones Web. Usando HTTP, un servidor Web envía páginas Web en HTML y Common Gateway Interface (CGI), así como otros tipos de scritps a los navegadores o browsers cuando éstos los requieren. Cuando un usuario hace clic sobre un enlace a una página Web, se envía una solicitud al servidor Web para localizar los datos nombrados por ese enlace. El servidor Web recibe esta solicitud y suministra los datos que le han sido solicitados o bien devuelve un mensaje de error. (31)
El servidor Apache
Es un software que está estructurado en módulos, es decir, está dividido en muchas porciones de código que hacen referencia a diferentes aspectos o funcionalidades del servidor Web. Esta modularidad es intencionada ya que la configuración de cada módulo se hace mediante la configuración de las directivas que están contenidas dentro del módulo. Los módulos del Apache se pueden clasificar en tres categorías: (32)
Módulos Base: Módulo con las funciones básicas del Apache.
Módulos Multiproceso: Son los responsables de la unión con los puertos de la máquina, aceptando las peticiones y enviando a los hijos a atender a las peticiones.
Módulos Adicionales: Cualquier otro módulo que le añada una funcionalidad al servidor.
Cherokee
Cherokee es un servidor web de licencia libre (GPL) con un desarrollo aún reciente. Ha sido creado desde el principio con el objetivo de ser eficiente, modular y sencillo de
[21]
configurar. Es una alternativa rápida e innovadora a otros servidores web más establecidos como el omnipresente Apache, que lastran años de evolución en su código y de la sobre implementación de características. (33)
Este proyecto comenzó en el año 2001 por iniciativa de Álvaro López y fue desarrollado con el lenguaje C. Además es multiplataforma, flexible y brinda soporte a tecnologías ampliamente difundidas como: FastCGI, SCGI, PHP, CGI, SSI, TLS y conexiones encriptados usando SSL.
IIS
Internet Information Server es desarrollado por Microsoft y ofrece un conjunto de servicios para computadoras que utilizan el SO del propio fabricante como pueden ser FTP, SMTP, HTTP/HTTPS, entre otros. Este último le permite realizar las funciones de un servidor web y publicar distintos tipos páginas, entre ellas ASP, ASP.NET, PHP y Perl. Es relativamente fácil de instalar.
1.7 Gestor de Bases de Datos
Un Sistema Gestor de Bases de Datos (SGBD) o DBMA (DataBase Management System) es una colección de programas cuyo objetivo es servir de interfaz entre la base de datos, el usuario y las aplicaciones. Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta. Un SGBD permite definir los datos a distintos niveles de abstracción y manipular dichos datos, garantizando la seguridad e integridad de los mismos. (34)
MySQL
Es un sistema gestor de base de datos relacional multiplataforma, fácil de usar y rápido en lecturas de datos usando el motor MyISAM.
Las características principales de MySQL son: (35)
Es una base de datos relacional. Una base de datos relacional es un conjunto de datos que 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
[22]
a cualquiera, por otra parte, usa la licencia GPL para aplicaciones no comerciales.
Es una base de datos muy rápida, segura y fácil de usar. Gracias a la colaboración de muchos usuarios, la base de datos se ha ido mejorando optimizándose en velocidad. Por eso es una de las bases de datos más usadas en Internet.
Su uso está contemplado bajo un esquema de licenciamiento dual y por tanto posibilita igualmente el desarrollo abierto, bajo la licencia GPL con empleo regido por ella, como el de aplicaciones privativas con una licencia dedicada a este fin.
PostgreSQL
PostgreSQL es un sistema de gestión de bases de datos objeto-relacional (ORDBMS) Open Source desarrollado en la universidad de Berkeley como parte del proyecto POSTGRES.
PostgreSQL es un sistema objeto-relacional, ya que incluye características de la orientación a objetos, como puede ser la herencia, tipos de datos, funciones, restricciones, disparadores, reglas e integridad transaccional. A pesar de esto, PostgreSQL no es un sistema de gestión de bases de datos puramente orientado a objetos. Entre sus características están:
Implementación del estándar SQL92/SQL99.
Soporta distintos tipos de datos: además del soporte para los tipos base, también soporta datos de tipo fecha, monetarios, elementos gráficos, datos sobre redes (MAC, IP...), cadenas de bits, etc. También permite la creación de tipos propios.
Incorpora una estructura de datos array.
Incorpora funciones de diversa índole: manejo de fechas, geométricas, orientadas a operaciones con redes, etc.
Permite la declaración de funciones propias, así como la definición de disparadores.
Soporta el uso de índices, reglas y vistas.
Incluye herencia entre tablas (aunque no entre objetos, ya que no existen), por lo que a este gestor de bases de datos se le incluye entre los gestores objeto- relacionales.
[23]
Permite la gestión de diferentes usuarios, como también los permisos asignados a cada uno de ellos. (36)
Oracle
Es un potente Sistema Gestor de Base de Datos Relacional (SGBDR) multiplataforma propiedad de Oracle Corporation. Es utilizado generalmente por empresas grandes debido a su alto precio y debido a esto no se encuentra tan extendido como otros gestores. Características: (37)
Mecanismos de seguridad: acceso a los datos según privilegios concedidos por el administrador.
Copia de seguridad y recuperación: sofisticados procedimientos para hacer copias de seguridad y recuperar datos.
Gestión del espacio: podemos asignar espacio en disco para almacenar datos y controlar ese espacio.
Conectividad abierta: es posible acceder a datos de Oracle usando SW de otros fabricantes.
Herramientas de desarrollo: el motor de la base de datos, Oracle Server, admite una amplia gama de herramientas de desarrollo de aplicaciones: de consulta para el usuario y de gestión de la información.
1.8 Entornos de Desarrollo Integrado (IDE)
Los Entornos de Desarrollo Integrado son aplicaciones informáticas que engloban varias herramientas que son muy útiles a los desarrolladores de software porque facilitan y optimizan su tarea de escribir programas, corregirlos y ejecutarlos. Las herramientas que pueden estar presentes, sin ser absolutos, son:
Editor de código.
Compilador.
Intérprete.
Constructor de interfaz gráfica.
Depurador.
[24]
Zend Studio
Se trata de un programa de la casa Zend, impulsores de la tecnología de servidor PHP, orientada a desarrollar aplicaciones web, como no, en lenguaje PHP. El programa, además de servir de editor de texto para páginas PHP, proporciona una serie de ayudas que pasan desde la creación y gestión de proyectos hasta la depuración de código. (38)
Zend Studio consta de dos partes en las que se dividen las funcionalidades de parte del cliente y las del servidor. Las dos partes se instalan por separado, la del cliente contiene el interfaz de edición y la ayuda. Permite además hacer depuraciones simples de scripts, aunque para disfrutar de toda la potencia de la herramienta de depuración habrá que disponer de la parte del servidor, que instala Apache y el módulo PHP o, en caso de que estén instalados, los configura para trabajar juntos en depuración. (39)
El editor
La parte del programa que nos permite escribir los scripts es bastante útil para la programación en PHP. La interfaz está compuesta por varias partes, en las que encontramos un explorador de archivos, una ventana de depuración, los menús y otra para mostrar el código de las páginas. (40)
Lo más destacable es que contiene una ayuda contextual con todas las librerías de funciones del lenguaje que asiste en todo momento ofreciendo nombres de las funciones y parámetros que deben recibir. Aunque esta ayuda contextual no sólo se queda en las funciones definidas en el lenguaje, sino que también reporta ayudas con las funciones que vayamos creando nosotros, incluso en páginas que tengamos incluidas con la función include(). (41)
Sin duda más de una vez los programadores de PHP se han visto en un duro problema por no encontrar un error en algún script que está haciendo devuelva resultados inesperados. En estos casos lo que se suele hacer es escribir el contenido de diversas variables en la página web y rezar para que nos den algún indicio del lugar donde está el error. (42)
[25]
Para hacernos la vida más fácil en estas tesituras Zend Studio dispone de una herramienta muy interesante de debug o depuración. Gracias a ella podemos ejecutar páginas y conocer en todo momento el contenido de las variables de la aplicación y las variables del entorno como las cookies, las recibidas por formulario o en la sesión.
Podemos colocar puntos de parada de los scripts y realizar las acciones típicas de depuración. (43)
Además de la ventana para visualizar el contenido de las variables, dispone de otras donde muestra la salida del script según se va generando, y otra donde se pueden ver las alertas y errores. Las posibilidades se completan con distintos tipos de depuración, en local, en remoto o a partir de una URL. (44)
También ofrece la posibilidad de refactorización, incorpora soporte para PHPUnit Testing, JavaScript y HTML, permite controlar el versionado de código a través de Subversion y genera automáticamente los métodos Get y Set.
Aptana Studio
Es un IDE de desarrollo para aplicaciones de la web 2.0, gratuito, código libre, con soporte Ajax, PHP, Ruby on Rails, Adobe Air, iPhone, etc. Con Aptana se facilita el desarrollo integrado de Ajax con las tecnologías emergentes. (45)
Aptana está basado en el conocido entorno de desarrollo Eclipse (IDE = Integrated Development Environment), también Open Source. Pero mientras que Eclipse está focalizado en el desarrollo para Java, Aptana Studio es una distribución focalizada en el desarrollo web, con soporte a HTML, CSS y JavaScript, así como opcionalmente a otras tecnologías mencionadas como PHP, Adobe Air o Ruby on Rails. Aptana Studio está disponible como una aplicación independiente o como plug-in para Eclipse. (46)
En resumen, estas son algunas de las características principales de Aptana Studio (47):
Ayudas visuales para la escritura de scripts en diversos lenguajes, como coloreado y auto escritura del código, ayudas contextuales de referencia a medida que se escribe, etc.
Visualización de errores de sintaxis a medida que se escribe.
[26]
Soporte para hacer FTP a servidores remotos, con herramientas para sincronización.
Debug en Firefox (Debug Internet Explorer también con la versión Profesional)
Librerías de funciones en JavaScript populares en Ajax/JavaScript para utilizar en los proyectos.
Ejemplos ya creados para empezar a conocer las posibilidades de desarrollo rápidamente.
Previsualización de estilos CSS con el editor CSS.
Extensible a partir de plug-ins que puede crear Aptana u otras empresas y herramientas para estar al tanto de cualquier nuevo añadido.
Extensible por JavaScript. Los usuarios pueden escribir scripts para realizar acciones y macros.
Los Snippets permiten insertar fragmentos de texto que se utilizan muy a menudo.
PHP Development Tools (PDT)
Es un IDE que facilita el desarrollo de aplicaciones Web usando PHP.
Entre las características en esta versión 1.0 se encuentran (48):
Editor sensible al contexto, el cual provee de resaltamiento de código, asistente de código y autocompletado de código.
Integración con el modelo del proyecto Eclipse, que permite para inspeccionar el uso de las vistas del contorno del fichero y del proyecto, así como la nueva vista PHP Explorer.
Soporte para el debug incremental del código de PHP.
Extensos frameworks y APIs que permiten a los desarrolladores e ISVs (vendedores de software independientes) fácilmente extender PDT para crear nuevas e interesantes herramientas orientadas al desarrollo de PHP.
Ya está disponible la versión 2.0 de los PHP Development Tools (PDT) de Eclipse, los componentes especialmente diseñados para facilitar el desarrollo en PHP de acuerdo a los estándares del proyecto Eclipse. Entre otras cosas, los PDT agregados al IDE de Eclipse permiten (49):
1. Editar tu código PHP.
2. Usar asistentes de codificación.
3. Usar plantillas de código PHP.
[27]
4. Formatear automáticamente el código.
5. Navegar por los elementos del código PHP.
PDT 2.0 incluye además un robusto soporte de características de orientación a objetos, como herencia y polimorfismo, siendo también más pequeño y rápido gracias a la reducción de sus dependencias innecesarias (como componentes Java y J2EE). (50)
EasyEclipse
Es un IDE que facilita el desarrollo de aplicaciones Web, el objetivo principal es la facilidad de instalación. (51)
El proyecto EasyEclipse empaqueta el entorno de desarrollo Eclipse junto con una cuidada selección de "plugins" Open Source para obtener un IDE final excepcionalmente bueno para el desarrollo de aplicaciones en PHP, Python, Ruby y por supuesto Java, con todos los plugins ya instalados y configurados para que el desarrollador final sólo tenga que preocuparse del código de su aplicación y no de afinar su IDE. (52)
EasyEclipse dispone de varias "distribuciones": para desarrollo Java de servidor, de aplicaciones Java de escritorio, para dispositivos móviles, para LAMP, para PHP, para Python y para Ruby, y por supuesto, EasyEclipse es Open Source y multiplataforma. (53) EasyEclipse está bajo los términos de Open Software License version 2.1. (54)
Easy Eclipse for PHP es un IDE súper funcional que nos ayudará a programar en PHP5 con programación orientada a objetos, tiene funcionalidades como:
1. Provee de resaltamiento de código, asistente de código y autocompletado de código.
2. Soporte para el debug incremental del código de PHP.
3. Usar plantillas de código PHP.
4. Permite crear templates propios además de los definidos.
5. Navegar por los elementos del código PHP.
1.9 Metodología de Desarrollo de Software y Lenguaje de Modelado
Las metodologías o procesos de desarrollo de software ofrecen un método para la creación de aplicaciones flexibles y robustas de un modo organizado y disciplinado, facilitando su comprensión.
[28]
Es la definición del conjunto de actividades que guían los esfuerzos de las personas implicadas en el proyecto, a modo de plantilla que explica los pasos necesarios para terminar el proyecto. (55)
Para lograr el éxito del producto software se apoyan en (56):
Flujos de actividades: Secuencia de actividades realizadas por trabajadores y que produce un resultado de valor observable.
Actividades: Es una tarea que tiene un propósito claro, es realizada por un trabajador y manipula elementos.
Trabajadores: Define el comportamiento y responsabilidades (rol) de un individuo, grupo de individuos, sistema automatizado o máquina, que trabajan en conjunto como un equipo. Ellos realizan las actividades y son propietarios de los elementos.
Artefactos: Productos tangibles del proyecto que son producidos, modificados y usados por las actividades. Pueden ser modelos, elementos dentro del modelo, código fuente y ejecutables.
Existen actualmente numerosas propuestas probadas que se aplican en ámbitos variables y que sirven al mismo propósito: producir software competente, aunque con un enfoque diferente:
Metodologías Tradicionales
Fueron concebidas a partir de ideas basadas en la experiencia de la aplicación de la metodología en otras ramas y adaptadas concretamente al desarrollo de software. Entre sus peculiaridades resalta la preocupación de documentar exhaustivamente el proyecto, cumplir cabalmente el plan definido y escasa flexibilidad ante las fluctuaciones de los requisitos, suceso cotidiano dada lo impredecible de su naturaleza.
Rational Unified Process (RUP)
Es una metodología tradicional de desarrollo de software para proyectos complejos que involucran equipos amplios, aunque puede adaptarse a contextos más pequeños. Sus características fundamentales lo definen como un proceso: guiado por casos de uso, centrado en la arquitectura e iterativo e incremental. Organiza el ciclo de vida de un producto en 4 fases:
[29]
Inicio: Se describe el negocio y se delimita el proyecto describiendo sus alcances con la identificación de los casos de uso del sistema.
Elaboración: Se define la arquitectura del sistema y se obtiene una aplicación ejecutable que responde a los casos de uso que la comprometen. A pesar de que se desarrolla a profundidad una parte del sistema, las decisiones sobre la arquitectura se hacen sobre la base de la comprensión del sistema completo y los requerimientos (funcionales y no funcionales) identificados de acuerdo al alcance definido.
Construcción: Se obtiene un producto listo para su utilización que está documentado y tiene un manual de usuario. Se obtiene 1 o varios release del producto que han pasado las pruebas. Se ponen estos release a consideración de un subconjunto de usuarios.
Transición: El release ya está listo para su instalación en las condiciones reales. Puede implicar reparación de errores.
En cada una de estas fases se trabaja iterativamente y además, a semejanza con el desarrollo en cascada, se realizan actividades asociadas, aunque unas en mayor escala que otras, a todos los flujos de trabajo definidos, que están agrupados en:
Disciplinas de Ingeniería:
Modelamiento del negocio: Describe los procesos de negocio, identificando quiénes participan y las actividades que requieren automatización.
Requerimientos: Define qué es lo que el sistema debe hacer, para lo cual se identifican las funcionalidades requeridas y las restricciones que se imponen.
Análisis y Diseño: Describe cómo el sistema será realizado a partir de la funcionalidad prevista y las restricciones impuestas (requerimientos), por lo que indica con precisión lo que se debe programar.
Implementación: Define cómo se organizan las clases y objetos en componentes, cuáles nodos se utilizarán y las ubicación en ellos de los componentes y la estructura de capas de la aplicación.
Prueba: Busca los defectos a los largo del ciclo de vida.
Despliegue: Produce release del producto y realiza actividades (empaque, instalación, asistencia a usuarios, etc.) para entregar el software a los usuarios finales.
Disciplinas de Soporte:
Gestión de Configuración y Cambios: Involucra actividades con las que se busca