DESARROLLO DE LA FASE DE PRUEBA Y CORRECCIÓN DE DEFECTOS DEL PROTOTIPO ELEDGE-UNAB VERSIÓN 4.0

 

 

 

 

 

 

 

 

 

 

SILVIA VIVIANA FLÓREZ TORRES

 

 

 

 

 

 

 

 

 

 

 

 

UNIVERSIDAD AUTONOMA DE BUCARAMANGA

FACULTAD DE INGENIERÍA DE SISTEMAS

BUCARAMANGA

2005

DESARROLLO DE LA FASE DE PRUEBA Y CORRECCIÓN DE DEFECTOS DEL PROTOTIPO ELEDGE-UNAB VERSIÓN 4.0

 

 

 

 

SILVIA VIVIANA FLÓREZ TORRES

 

 

 

Tesis de Grado para optar al titulo de
Ingeniera de Sistemas

 

 

Director

FERNANDO ANTONIO ROJAS MORALES

Ingeniero de Sistemas

 

 

Asesor

JAVIER ERNESTO MORENO GUALDRÓN

Ingeniero de Sistemas

 

 

 

UNIVERSIDAD AUTONOMA DE BUCARAMANGA

FACULTAD DE INGENIERÍA DE SISTEMAS

BUCARAMANGA

2005


El presente trabajo de grado lo dedico a mi Amado Padre, Germán Alfonso Flórez Vesga, quien a través de sus valiosos trabajos y esfuerzos, me ha brindado la oportunidad de acceder a la Educación Superior, me ha ofrecido constante orientación en cuanto a la manera de gestionar información y proyectos, y me ha compartido casos experimentados en su vida profesional que me han permitido entender y apreciar la importancia de formalizar y evidenciar cada una de mis actividades profesionales. Por haberme compartido sabios puntos de vista en lo referente al descubrimiento y a la definición de lo que uno quiere lograr como persona y como profesional, y por cada uno de los momentos que hemos compartido como padre e hija, durante el transcurso de este proyecto, y durante el transcurso de nuestras vidas... ¡¡Muchísimas Gracias!!


AGRADECIMIENTOS

 

 

Deseo manifestar mis más sinceros agradecimientos a:

 

Mi Apreciado Director de Proyecto, Fernando Antonio Rojas Morales, quien a través de sus diálogos ha logrado guiarme hacia lo que yo he querido realizar como autora del proyecto, compartiéndome constantemente los valiosos conocimientos que ha adquirido fruto de su experiencia profesional en la dirección y en la ejecución de proyectos de Ingeniería de Software.

 

Mi estimado asesor, Javier Ernesto Moreno Gualdrón, por brindarme información acerca de las funciones que desempeñan empresas dedicadas a la gestión del aprendizaje virtual.

 

Mis estimados evaluadores, Gareth Barrera Sanabria y Juan Carlos García Ojeda, por aportarme sus valiosas sugerencias y puntos de vista en lo que respecta a las presentaciones del proyecto y a la corrección y mejora de los informes de avance del mismo.

 

 

A Walter Francisco Vargas Pérez, estimado compañero, por ofrecerme su ayuda y asesoría en lo referente al funcionamiento y a las mejoras potenciales del prototipo Eledge.



LISTA DE TABLAS

 

Tabla 1. Productos finales del proyecto. 7

Tabla 2. Funciones desempeñadas por las clases de Eledge-UNAB 4.0. 7

Tabla 3. Relaciones entre las clases de Eledge-UNAB 4.0. 7

Tabla 4. Cantidad de relaciones establecidas entre cada clase y las demás. 7

Tabla 5. Estrategia utilizada para el diseño de las plantillas de prueba. 7

Tabla 6. Cuantificación de los resultados de la fase de pruebas de funcionalidad. 7

Tabla 7. Estrategia para la detección del mayor número de defectos que producen la mayor cantidad de fallas. 7

Tabla 8. Estrategia para la estimación de las alternativas de correcciones de los defectos y sus alcances  7

Tabla 9. Clases que contienen directamente el texto de sus interfases GUI 7

Tabla 10. Tipos de clases que componen el software Eledge-UNAB.. 7

Tabla 11. Estrategia para la discriminación de las clases en términos de los tipos de funciones que desempeñan. 7

Tabla 12. Contenido de las correcciones de traducción de idioma e internacionalización del mismo  7

Tabla 13. Contenido de las correcciones a nivel de intuitividad en el texto de la interfase de Eledge-UNAB   7

Tabla 14. Algunas estimaciones-estadísticas para el mantenimiento. 7

Tabla 15. Diagrama de paquetes y descripción tabular de su diseño, como propuesta para la reestructuración de Eledge a nivel de Arquitectura. 7

Tabla 16. Coste de las actividades de mantenimiento de software. 7

Tabla 17. Paralelo entre funcionalidades de Eledge-UNAB 4.0 y WebCT. 7

Tabla 18. Fases y actividades del Modelo Lineal Secuencial 7

Tabla 19. Fases y actividades del Proceso Unificado de Desarrollo. 7

Tabla 20. Características  del Proceso Unificado de Desarrollo. 7

Tabla 21. Correcciones implementadas a nivel de fallas. 7

Tabla 22. Correcciones implementadas a  los Defectos a nivel del grado en que la Interfase GUI posibilita la funcionalidad de Eledge. 7

Tabla 23. Correcciones implementadas a los Defectos a nivel de Reestructuración de Arquitectura de Código. 7

Tabla 24. Convenciones del anexo F.. 7

Tabla 25. Muestra representativa del trabajo elaborado para dar a conocer detalladamente las diferencias entre las clases originales y corregidas, sin reestructuración de arquitectura. 7

Tabla 26. Convenciones del anexo G.. 7

Tabla 27. Muestra representativa del trabajo elaborado para dar a conocer detalladamente las diferencias entre los archivos de internacionalización originales y corregidos. 7

Tabla 28. Convenciones del anexo H.. 7

Tabla 29. Muestra representativa del trabajo elaborado para dar a conocer detalladamente las diferencias entre las clases originales y corregidas, con reestructuración de arquitectura. 7

 

 




GLOSARIO

 

 

MANTENIMIENTO: modificación de un producto software después de su entrega al cliente o usuario para corregir defectos, para mejorar el rendimiento u otras propiedades deseables, o para adaptarlo a un cambio de entorno.

 

 

REINGENIERÍA: examen y modificación de un producto software o de ciertos componentes, para reconstruirlo en una nueva forma usando para el análisis del sistema existente técnicas de ingeniería inversa y, para la etapa de reconstrucción, herramientas de ingeniería directa.

 

INGENIERÍA DIRECTA: transformación de un modelo en código a través de su traducción a un determinado lenguaje de implementación.

 

INGENIERÍA INVERSA: análisis de un sistema para identificar sus componentes y las relaciones entre ellos, así como para crear representaciones del sistema en otra forma o en un nivel de abstracción más elevado. El proceso de construir especificaciones abstractas del código fuente de un sistema heredado, de manera que estas especificaciones puedan ser utilizadas para construir una nueva implementación del sistema hacia delante.

 

 

 

 

REESTRUCTURACIÓN DEL SOFTWARE: modificación del software para hacerlo más fácil de entender y cambiar o menos susceptible de incluir errores en cambios posteriores.

 

 


INTRODUCCIÓN

 

 

El desarrollo de la fase de prueba y corrección de defectos del prototipo Eledge-UNAB versión 4.0 es un proyecto de gran envergadura para el soporte de los procesos educativos de la Facultad de Ingeniería de Sistemas (FIS) de la Universidad Autónoma de Bucaramanga (UNAB), en lo que respecta a la creación, gestión, registro y distribución de sus cursos (apoyados en tecnologías informáticas y de comunicaciones), docentes y alumnos, así como el control de acceso y seguimiento del progreso de los mismos.

 

 

A pesar de los grandes logros obtenidos con la construcción de este prototipo[1], aún queda por desarrollar una fase de prueba para la evaluación de sus operaciones actuales y la determinación de los ajustes funcionales más adecuados a ser desarrollados, que permitan que Eledge-UNAB versión 4.0 opere como prototipo de un sistema de gestión de aprendizaje para el soporte de los procesos educativos de la FIS de la UNAB. En consecuencia, el problema que da origen al presente proyecto, radica en que la versión 4.0 de este prototipo se constituye actualmente como un producto susceptible de corrección en lo que respecta a su funcionamiento general.


La solución que este proyecto ofrece a tal problemática se enmarca dentro de su objetivo general, el cual consiste en ejecutar pruebas de funcionalidad a este prototipo e implementarle correcciones con base en los resultados de tales pruebas. Para materializar esta solución, el proyecto propone el estudio de los productos de las fases de ingeniería de software que permitieron la construcción del prototipo, así como la ejecución y documentación de pruebas rigurosas con respecto a su funcionalidad, y la posterior implementación y documentación de correcciones. 

 

 

La relevancia del presente proyecto para la ingeniería de sistemas radica en que sus resultados dan evidencia de la necesidad de incrementar el aseguramiento de la calidad de los productos de software a desarrollar en los proyectos de grado.


1. MARCO TEÓRICO

 

 

Con el objetivo de diseñar una metodología de trabajo adecuada a la naturaleza y propósito de este proyecto, se estudiaron los fundamentos conceptuales que orientan la planeación y ejecución de los procesos de pruebas del prototipo Eledge-Unab versión 4.0, así como las metodologías y técnicas de desarrollo de software: Modelo Lineal Secuencial* y Proceso Unificado de Desarrollo*.

 

El contenido de esta sección está organizado de la siguiente forma: primero, se presentan las metas e implicaciones generales del proceso de pruebas, luego la descripción del tipo de prueba que se aplicará en el presente proyecto, a saber: prueba de funcionalidad. Seguidamente, se incluye la esquematización gráfica y la explicación de las características y fases involucradas en las dos metodologías y técnicas de desarrollo ya mencionadas. Finalmente, se presenta el diseño de la metodología a seguir para el desarrollo de este proyecto, de manera gráfica y con una descripción y explicación de las etapas de su flujo de trabajo.

 

En el Anexo C, se exponen otros tipos de prueba cuya ejecución es bastante acostumbrada, debido al impacto que ejercen en el proceso de determinación de correcciones y mejoras de software; a saber: pruebas de caja negra, caja gris, caja blanca, de unidades, de integración, de desarrolladores y artefactos, de interfaz,


del sistema, de funcionalidad, de utilidad, de regresión, de aceptación, de instalación, y pruebas alfa y beta.

 

 

1.1 METAS E IMPLICACIONES DE LAS PRUEBAS

 

El objetivo de las pruebas es encontrar el mayor número de defectos, con el más alto nivel de severidad posible. Probar un software implica ejecutarlo en escenarios pre-diseñados y controlados, para detectarle defectos pero no para validar si éste funciona. Es decir, mediante las pruebas se puede evidenciar si existen o no defectos, pero jamás asegurar que no los hay. Por esto, un caso de prueba sólo es exitoso cuando permite descubrir un defecto[2].

 

Sin embargo, jamás podrá probarse un sistema a cabalidad. Esto se debe a que el número de maneras en que éste puede ejecutarse es ilimitado, debido a la enorme cantidad de combinaciones de datos que puede recibir de sus usuarios.

 

Es apropiado hacer notar que, antes de comenzar expresamente la fase de pruebas, el programador de la aplicación a probar realiza una depuración del código para verificar que lo “más básico” del mismo, funciona. Luego, en la fase de pruebas formales se comienzan a detectar defectos haciendo uso de un “criterio de búsqueda” a la vez, el cual determina el tipo de prueba a realizar[3].

 

Las pruebas son responsables de más de la mitad del tiempo dedicado a los proyectos; por esto siempre es necesario realizarlas lo más pronto posible, durante el proceso de desarrollo de la aplicación e inmediatamente después de lanzarse una primera versión de la misma[4].

 

 

1.2 PRUEBAS DE FUNCIONALIDAD

 

También denominadas “pruebas de caja negra”, la ejecución de este tipo de pruebas toma como parámetro de verificación y validación, la especificación de los requisitos funcionales del software a evaluar; y tiene como propósito encontrar los casos en los cuales éstos no se cumplan, partiendo del análisis de las salidas visibles al usuario, generadas por el ingreso de combinaciones controladas de datos[5].

 

Debido a que la actividad de probar el 100% de las posibilidades de ejecución de un software, tiene una complejidad infinita, es necesario precisar de un conjunto de técnicas mediante las cuales se diseñen casos de prueba que consideren la máxima cantidad de alternativas de entrada al sistema. Éstas técnicas se denominan: clases de equivalencia o particiones

 

Las clases de equivalencia son conjuntos de datos que al ingresar al sistema, producen un mismo tipo de respuesta o comportamiento. La determinación de éstas se logra identificando las condiciones de contenido y/o formato de las entradas válidas* del sistema. Así, los datos que cumplen con estas condiciones, corresponderán al rango de las clases de equivalencia válidas; y los que no, pertenecerán a las clases de equivalencia inválidas.

Algunas de las directrices que ayudan a encontrar estas clases son:

 

Al manejar rangos de datos de entrada, definir tres clases de equivalencia: una para los datos que pertenecen al rango, otra para los datos inferiores a este rango y una última para los superiores a él.

 

En situaciones en que los datos de entrada tienen que ser de cierto tipo (como booleano), definir dos clases de equivalencia: una para los que cumplan con tal condición y otra para los que no[6].

 

Si se intuye que hay ciertos elementos de una clase de equivalencia que no son tratados de la misma manera por el sistema, hay que asignarlos a una clase de equivalencia distinta -una por cada variación en el tratamiento -.

 

Posteriormente, se asigna a cada clase de equivalencia, un número único que la identifique de las demás. Para comenzar a diseñar los casos de prueba, se tiene presente que, a mayor número de clases de equivalencia válidas dentro de un caso de prueba, mayor eficiencia de prueba. Por el contrario, al tratarse de clases de equivalencia no válidas, hay que crear un caso de prueba por cada una de ellas[7].

 

 

 


1.3 METODOLOGÍAS DE DESARROLLO DE SOFTWARE

 

1.3.1 Modelo Lineal Secuencial

 

Este modelo de desarrollo de software consta de un conjunto de fases cuyo seguimiento se realiza en una sola dirección, y su progreso se da en términos de la completitud secuencial de cada una de ellas, a través del tiempo. No considera la presencia de ciclos de realimentación iterativos e incrementales, debido a que la ejecución de las actividades propias de cada fase se circunscribe estrictamente al período de duración de ésta[8].

 

Figura 1. Modelo Lineal Secuencial

 

 

 

Fuente documental:  PRESSMAN, Roger. Ingeniería del software: un enfoque práctico. 5 ed. Madrid: McGraw Hill, 1998.

En la Figura 1 se ilustra la estructura general que integra las fases del modelo, a saber: Análisis y Diseño (ambas fundamentadas en los resultados del Análisis del Dominio de Ingeniería de Sistemas / Información), Codificación, Pruebas y Mantenimiento del producto resultante. Y en el Anexo B, se presentan las fases que el Modelo Lineal Secuencial abarca, se describen las tareas específicas que han de cumplirse en cada una de ellas y las ventajas y desventajas que sugiere su dinámica de trabajo.

 

 

1.3.2 Proceso Unificado de Desarrollo

 

 

El modelo de trabajo que sigue el Proceso Unificado de Desarrollo se caracteriza por incluir ciclos de realimentación positiva entre las actividades pertenecientes a cada una de sus fases[9]. Esto posibilita que el equipo de desarrollo del software comience la elaboración y/o refine los artefactos propios de cada fase, durante el transcurso de todo el proyecto, como se muestra en la Figura 2.

 

Figura 2. Proceso Unificado de Desarrollo

 

 

 

Fuente documental: JACOBSON, Ivar. BOOCH, Grady. RUMBAUGH, James. El proceso unificado de desarrollo de software. Madrid: Pearson Educación, 2000.

La naturaleza iterativa e incremental del ciclo de realimentación general -que estructura la interacción entre las fases de este modelo-, se ilustra a continuación, en la Figura 3.

 

Figura 3. Interacción de las Fases del Proceso Unificado de Desarrollo

 

 

 

 

 

Fuente documental: JACOBSON, Ivar. BOOCH, Grady. RUMBAUGH, James. El proceso unificado de desarrollo de software. Madrid: Pearson Educación, 2000.

 

 

 

La descripción detallada de las tareas que se ejecutan en las fases de este modelo, se presenta en el Anexo B.


2. DESARROLLO DEL PRODUCTO FINAL

 

 

En esta sección se presentan los resultados del presente trabajo que, a la fecha y de acuerdo al cronograma del proyecto, validan el cumplimiento de los objetivos específicos del mismo, así como los productos que se corresponden con ellos y les proporcionan valor agregado.  Éstos resultados y productos se explican de manera resumida en la tabla 1, y de manera detallada en las sub-secciones que la siguen y/o en los Anexos y secciones que se especifican a continuación.

 

Tabla 1. Productos finales del proyecto

 

 

Objetivo específico

 

Resultado que lo valida

 

(Aportes del Proyecto)

 

Realizar un estudio detallado de las herramientas, metodologías, documentación, requisitos definidos; y fases de análisis, diseño e implementación del prototipo generado en el proyecto: “Desarrollo de un Prototipo LMS*”, dirigido por el Ing. Fernando Rojas Morales.

 

 

Paralelo entre funcionalidades de Eledge-UNAB 4.0 y WebCT (Anexo A).

 

 

Estrategia de entendimiento del código fuente de Eledge-UNAB 4.0 (Sección 2.1):

 

 

 


 

 

Objetivo específico

 

Resultado que lo valida

 

(Aportes del Proyecto)

 

 

 

 

  • Documentación de manera tabular de la relación que cada clase tiene con las demás clases

 

  • Documentación de la priorización de las clases, en términos de la cantidad de relaciones que tiene cada una con las demás

 

 

2. Diseñar la metodología para la ejecución de pruebas de funcionalidad y la implementación de correcciones en Eledge-UNAB 4.0, con base en un estudio del Proceso Unificado de Desarrollo y del Modelo Lineal Secuencial.

 

 

Modelo Lineal Secuencial y Proceso Unificado de Desarrollo (Anexo B).

 

 

3. Realizar un estudio de los tipos de pruebas de software y seleccionar los más apropiados para validar y verificar la funcionalidad de Eledge-UNAB 4.0.

 

 

Tipos de prueba de software (Anexo C).

 

 

4. Ejecutar y documentar pruebas rigurosas de funcionalidad al prototipo  Eledge-UNAB 4.0.

 

 

Estrategia utilizada para el diseño de las plantillas de prueba (Sección 2.2)

 

Documentación del proceso de prueba de funcionalidad del prototipo Eledge-UNAB 4.0 (Sección 2.3)

 

Diseño de plantillas de pruebas para evaluar la funcionalidad de Eledge y diligenciamiento de las plantillas de pruebas diseñadas, para evaluar la funcionalidad de Eledge (Sección 2.3.1)

 

Documentación de los resultados de la fase de pruebas de funcionalidad, por cada caso de prueba (Sección 2.4):

 

Especificación de las fallas y las funciones a mejorar detectadas al seguir un proceso riguroso de pruebas de funcionalidad (Sección 2.4.1)

 

 

 

Especificación de los requisitos de corrección y mejora correspondientes a cada una de las fallas de funcionalidad detectadas (Sección 2.4.2)

 

Cuantificación de los resultados de la fase de pruebas de funcionalidad (Sección 2.4.3)

 

 

5. Implementar y documentar las correcciones de funcionalidad al prototipo Eledge-UNAB 4.0, con base en los resultados del objetivo No. 4.

 

 

Estrategia utilizada para la detección del mayor número de defectos que producen la mayor cantidad de fallas (Sección 2.5)

 

Estrategia utilizada para la estimación de las alternativas de correcciones y su alcance (Sección 2.6)

ü      Identificación y priorización de las funcionalidades de Eledge (Sección 2.6.1)

 

Ingeniería inversa a nivel de diseño (Sección 2.7):

 

  • Diagrama de casos de uso actualizado (Sección 2.7.1)

 

  • Clases que contienen directamente el texto de sus interfases GUI (Sección 2.7.2)

 

  • Tipos de Clases que componen el software Eledge-UNAB (Sección 2.7.3)

 

  • Cuantificación del porcentaje de clases pertenecientes a cada tipo: Interfase, Control y Entidad (Sección 2.7.4)

 

·        Estrategia utilizada para la discriminación de las clases en términos de los tipos de funciones que desempeñan (Sección 2.7.5)

 

 

Reingeniería de Eledge >> Ingeniería directa  (Sección 2.8):

 

Documentación de las correcciones implementadas en el prototipo (Sección 2.8.1):

·        Reestructuración de Eledge a nivel de arquitectura (Sección 2.8.1.1)

 

  • Traducción al español de texto desplegado en Inglés, y en Español e Inglés de manera combinada (Sección 2.8.1.2)

 

  • Reemplazo de texto poco intuitivo a texto más intuitivo en términos de su redacción gramatical y de su coherencia con los nombres de las opciones de Eledge (Sección 2.8.1.3)

 

 

 

  • Documentación de las correcciones implementadas (Anexo E)

 

  • Diferencias entre las clases originales y corregidas (sin reestructuración de arquitectura) (Anexo F)

 

  • Diferencias entre los archivos de internacionalización (i18n) originales y corregidos (Anexo G)

 

  • Diferencias entre las clases originales y corregidas (con reestructuración de arquitectura) (Anexo H)

 

  • Diseño de plantillas de pruebas, documentación de los resultados de las pruebas, especificación de las fallas y las funciones a mejorar detectadas y especificación de los correspondientes requisitos de corrección y mejora (Anexo I)

 

Diagrama de Clases actualizado según correcciones  (Sección 2.9)

 

Manual Técnico actualizado, a partir de los productos del proyecto (Sección 2.10)

 

Manual de Instalación actualizado, en términos de claridad en el procedimiento de instalación y según lo realizado en el proyecto (Sección 2.11)

 

 

Fuente documental: autora del proyecto


Valores agregados:

 

  • Reingeniería de Eledge >> Ingeniería directa:

Algunas estimaciones–estadísticas para el mantenimiento (Sección 2.12)

 

  • Ingeniería inversa a nivel de diseño:

Diagrama de Paquetes y Descripción tabular de su diseño, como propuesta para la reestructuración de Eledge a nivel de Arquitectura (Sección 2.13)

 

  • Reingeniería de Eledge >> Ingeniería directa >> Reingeniería de Interfases:

Propuesta de Diseño para la Interfase GUI de Eledge (Sección 2.14)

 

2.1 Estrategia de entendimiento del código de Eledge-UNAB 4.0.

 

Como estrategia para el entendimiento del código actual del prototipo Eledge-UNAB versión 4.0, se tiene el siguiente procedimiento:

 

1.      Identificar las clases que componen el prototipo.

 

2.      Para cada clase identificada, definir su función principal en el funcionamiento del prototipo.

 

3.      Identificar la relación que cada clase tiene con las demás clases del prototipo.

 

4.      Priorizar el entendimiento de cada clase según la cantidad de relaciones que tenga con las demás, en orden descendente; de manera que primero se comprenda el funcionamiento de las clases más invocadas por las demás (las más necesitadas), y de último, el comportamiento de aquéllas con menor número de invocaciones (las menos necesitadas).

Los resultados de la ejecución de cada uno de estos pasos, son presentados en las tres tablas que siguen (la tabla 2 expone los resultados de los pasos 1 y 2,  la tabla 3 expone los del paso 3 y la tabla 4 los del paso 4).

 

Tabla 2. Funciones desempeñadas por las clases de Eledge-UNAB 4.0.

 

NOMBRE ARCHIVO

(CLASE)

DESCRIPCIÓN

 

Calendar

Realiza todas las funciones de un calendario donde el docente:

 

Crea y modifica eventos en los días seleccionados del calendario 

Visualiza a los estudiantes del curso.

 

Esta clase fue modificada para que la información que maneja

pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

Course

Contiene la información de la configuración del servidor y de la base de datos que es utilizada por casi el resto de módulos servlets.

 

Esta clase fue modificada para la plataforma Eledge-UNAB.

 

Email

Para visualizar las direcciones de correo de los estudiantes del curso

 

Para que el docente envíe cualquier mensaje desde la aplicación

Para los estudiantes solo despliega la lista de direcciones.

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

Home

Cargar la página de inicio para el curso y para la plataforma. 

 

La pagina es por defecto y el administrador y docente pueden modificarlas.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

ManageContent

Para que el docente pueda:

 

Crear y editar el contenido del curso en temas

Agregar páginas en esos temas a través de un editor HTML 

Subir archivos para la ayuda del contenido del curso.

 

Esta clase es completamente nueva para la plataforma Eledge-UNAB.

 

ManageExam

Para que el docente pueda:

 

Crear, borrar y actualizar evaluaciones para el curso

Agregar y quitar preguntas de cada examen

Definir parámetros de los exámenes.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

 

Page

Para crear la pagina Web del sistema Eledge.

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

Profile

Mostrar los datos del usuario

Recuperar la contraseña del usuario

Crear nuevos usuarios en el sistema.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

Scores

Permite visualizar al usuario:

 

Los exámenes que están asignados

Aquellas actividades ya realizadas.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

TAPermission

Dar los permisos que tienen los docentes asignados a su perfil.

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

CharHider

Para insertar caracteres a las variables que la requieran, para utilizarlos tanto en código HTML y sentencias SQL.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

Cursos

Visualizar la lista de los cursos que hay en el sistema

 

Cargar el curso seleccionado por el usuario.

 

Esta clase es completamente nueva para la plataforma Eledge-UNAB.

 

Exam

Le indica al Compilador de Java y al Motor del Servlet cómo nombrar cada Importación del servlet

 

Install

Reiniciar la base de datos una vez que la aplicación haya sido utilizada.

 

Esta clase es completamente nueva para la plataforma Eledge-UNAB.

Logger

Para grabar logs, estos son registros del funcionamiento acerca del sistema.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB

 

ManageCourse

Permite:

 

Definir parámetros del sistema

Reiniciar la base de datos del sistema y la información de los logs.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

ManageFiles

Subir los archivos a los cursos -estos archivos son guardados en carpetas en el servidor-.

 

Esta clase es completamente nueva para la plataforma Eledge-UNAB.

 

Permission

Esta clase es fundamental para la clase Permissions

Tiene como función el permiso asignado para el usuario.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

Question

Gestionar las preguntas creadas para las evaluaciones del curso

Visualizar los formatos de las preguntas

Crear, modificar y eliminar preguntas.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

Student

Esta clase tiene los parámetros de los estudiantes (Usuarios) del sistema.

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

TAS

Crear el HasMap para los permisos de los docentes a partir de los permisos definidos en el sistema.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

Content

Visualizar el contenido de los cursos seleccionados

Proporciona el contenido en temas y en páginas, para una buena navegación.

 

Esta clase es totalmente nueva de la anterior versión ya que proporciona más funciones.

 

Esta clase es completamente nueva para la plataforma Eledge-UNAB.

 

DiscussionBoard

Agregar mensajes al foro del curso por parte de los estudiantes

Revisarlos y contestarlos.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

Gradebook

Permite visualizar las calificaciones obtenidas por los estudiantes

en las actividades asignadas por el docente. 

Permite al docente manipular las notas y agregar más notas a los estudiantes.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

InstallDB

Crear la base de datos por primera vez

Debe ser eliminada una vez haya cumplido su finalidad.

 

Esta clase es completamente nueva para la plataforma Eledge-UNAB.

Login

Visualizar la página para el ingreso de un usuario

 

Validar su existencia

Crear una sesión para dicho usuario.

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

ManageCursos

Crear, gestionar los cursos del sistema

Crear, editar, eliminar y exportar un curso.

 

Esta clase es completamente nueva para la plataforma Eledge-UNAB.

 

ManageTAPermissions

Proveer la interfase para los docentes

Modificar los permisos

Fijar nuevos permisos para el sistema.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

PermissionData

Contiene la base de datos de los permisos definidos en el sistema.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

RBStore

Buscar el lenguaje indicado para la plataforma.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB.

Syllabus

Visualiza la página de instrucciones de los cursos. 

 

El docente puede modificarla con el editor HTML.

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

Usuarios

Gestionar los usuarios existentes del sistema

 

Asignales los perfiles definidos por el administrador

Cambiar sus contraseñas de acceso.

 

Esta clase es completamente nueva para la plataforma Eledge-UNAB.

 

ContentPacking

Exportación del contenido del curso en el estándar IMS Content Parking

 

Crea el manifiesto, las paginas html (recursos), las organizaciones

 

Lo comprime en un archivo .ZIP

 

Esta clase es completamente nueva para la plataforma Eledge-UNAB.

 

EledgeResources

Contiene el idioma que utiliza el Eledge

Agregar otros idiomas.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

Help

Visualiza la página de ayuda para los profesores y para los estudiantes

 

Esta pagina es por defecto y el docente puede modificarla por

medio del editor HTML

Esta pagina da a conocer respuestas de varios interrogantes acerca del uso del sistema Eledge-UNAB.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

JSmethods

Validar el formato HTML, insertando código JavaScript.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB

 

Logout

Permite terminar la sesión del usuario que esta actualmente en el sistema.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB

 

ManageDiscussionBoard

Permite que el docente cree y borre categorías para el foro del 

curso.

 

Esta clase fue modificada de tal manera que la información que maneja pueda ser soportada para múltiples cursos de la plataforma Eledge-UNAB.

 

MultiPart

Esta clase complementa a la clases ManageFiles para subir los archivos de para un curso.

 

Esta fue adaptada para la plataforma Eledge-UNAB

 

Permissions

Controlar los permisos de los usuarios

 

Contiene el HasMap de los permisos definidos por el sistema.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

ResetCourse

Se encarga de partes de la base de datos

Sólo el administrador tiene acceso a esta clase

Define qué registros desea borrar.

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

TA

Esta clase tiene los parámetros de los usuarios que cumplan con las condiciones de Docentes.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

WebPage

Esta clase tiene los parámetros de las paginas para gestionarlas en la Base de datos.

 

Esta clase no fue modificada para la plataforma Eledge-UNAB.

 

 

Fuente documental: autora del proyecto

 

A continuación, en la tabla 3 se muestran las relaciones existentes entre todas y cada una de las clases que componen el prototipo Eledge-UNAB versión 4.0.

 

Tabla 3. Relaciones entre las clases de Eledge-UNAB 4.0

 

CLASE

RELACIONES

 

Calendar

Se asocia con Cursos

CharHider

 

Usada por Syllabus

Usada por Home

Usada por Content

Usada por Exam

Content

 

Asociada (administrada por) con ManageContent

Usa a ChartHider

Usa a RBStore

Asociada con Cursos

Usa a Page

ContentPacking

 

Asociada con Cursos (Los cursos se exportan en contentpacking)

Course

 

Usada por ManageCourse

Usada por Cursos

Cursos

 

Usa a Course

Asociada con Calendar

Asociada con Help

Asociada con Exam

Asociada con Email

Asociada con (administrada por) ManageCursos

Asociada con DiscussionBoard

Asociada con Scores

Asociada con GradeBook

Asociada con ManageFiles

Asociada con Content

Asociada con ContentPacking (se exportan en ContentPacking)

Asociada con Home

Asociada con Syllabus

DiscussionBoard (Foro)

 

Asociada con Cursos

Usa a Page

Usa a RBStore

Asociada con (administrada por) ManageDiscussionBoard

EledgeRecourses

Usada por RBStore

Email

 

Asociada con Cursos

Usa a Page

Usa a RBStore

Asociada con Logger

Exam

 

Asociada con Cursos

Usa CharHider

Usa a Page

Usa a RBStore

Usa a JSMethods

Asociada con (administrada por) ManageExam

Agrega por referencia a Question

Asociada con Logger

Gradebook

 

Asociada con Cursos

Usa a RBStore

Usa a Page

Usada por Scores

Help

 

Asociada con Cursos

Usa a Page

Usa a RBStore

Home

 

Usa a Page

Usa a CharHider

Usa a RBStore

Asociada con Cursos

Install

Aislada

Jsmethods

Usada por Exam

Logger

 

Asociada con Exam

Asociada con Email

Login

 

Usa a Student

Usa a Page

Logout

Usa a Student

ManageContent

Asociada con (administra a) Content

ManageCourse

 

Asociada con ResetCourse

Asociada con Usuarios

Usa a Course

ManageDiscussionBoard

Asociada con (administra a) DiscussionBoard

ManageExam

Asociada con (administra a) Exam

ManageFiles

 

Asociada con Cursos

Usa a Page

Usa a RBStore

Usa a Multipart

ManageTaPermissions

Asociada con (modifica a) TAPermission

MultiPart

 

Agrega (Composición-por Valor) a UploadedFile

Usada por ManageFiles

Page

 

Usa a WebPage

Usada por Login

Usada por ManageFiles

Usada por Gradebook

Usada por DiscussionBoard

Usada por Content

Usada por Syllabus

Usada por Home

Usada por Email

Usada por Exam

Usada por Help

Usada por Calendar

Permission

 

Usada por Permissions

Asociada con PermissionData

PermissionData

Asociada con Permission

Permissions

 

Usa a Permission

Es usada por TAS

Asociada con Student

Profile

 

Asociada con Student

Asociada con TA (TA la tiene)

Question

Agregada (por referencia) por Exam

RBStore

 

Usa a EledgeResources

Usada por Syllabus

Usada por Home

Usada por Content

Usada por DiscussionBoard

Usada por Calendar

Usada por Gradebook

Usada por Help

Usada por Scores

Usada por Exam

Usada por Email

Usada por ManageFiles

ResetCourse

Asociada con ManageCourse

Scores

 

Usa a Gradebook

Asociada con Cursos

Usa a RBStore

Student

 

Asociada con Permissions

Asociada con Profile

Asociada con TA (TA la tiene)

Usada por Login

Usada por Logout

Syllabus

 

Usa a Page

Usa a CharHider

Usa a RBStore

Asociada con Cursos

TA

 

Asociada con (tiene a) Profile

Asociada con (tiene a) Student

Asociada con TAPermission

TAPermission

 

Asociada con TAS

Asociada con (administrada por) ManageTAPermissions

Asociada con TA

TAS

 

Usa a Permissions

Asociada con TAPermission

Usuarios

Asociada con ManageCourse

WebPage

Usada por Page

 

Fuente documental: autora del proyecto

 

 

Tabla 4. Cantidad de relaciones establecidas entre cada clase y las demás

 

CLASE

CANTIDAD DE RELACIONES CON CLASES EXTERNAS

Calendar

3

CharHider

3

Content

5

ContentPacking

1

Course

2

Cursos

13

DiscussionBoard (Foro)

4

EledgeResourses

1

Email

4

Exam

8

Gradebook

4

Help

3

Home

4

Install

0

Jsmethods

1

Logger

2

Login

2

Logout

1

ManageContent

1

ManageCourse

3

ManageDiscussionBoard

1

ManageExam

1

ManageFiles

4

ManageTaPermissions

1

MultiPart

1

Page

11

Permission

2

PermissionData

1

Permissions

3

Profile

2

Question

1

RBStore

11

ResetCourse

1

Scores

3

Student

5

Syllabus

4

TA

3

TAPermission

3

TAS

2

Usuarios

1

WebPage

1

InstallDB

0

 

Fuente documental: autora del proyecto

 

 


2.2 Estrategia utilizada para el diseño de las plantillas de prueba

 

Tabla 5. Estrategia utilizada para el diseño de las plantillas de prueba

 

Estrategia

 

¿En qué consiste la estrategia?

Resultados de la aplicación

de la estrategia

 

Estrategia utilizada para el diseño de las plantillas de prueba

 

 

Tomar como guía el Manual de Usuario de Eledge, para el diseño de:

 

·        El orden de pasos que ha de seguirse para usar las opciones de Eledge.

 

·        Los procedimientos mediante los cuales se verifique que lo desplegado en pantalla al seguir tales pasos, sea lo correcto en términos de la funcionalidad establecida en el Manual de Usuario de Eledge.

 

·        Las diferentes alternativas de datos de entrada que pueden disparar eventos erróneos en términos de la funcionalidad establecida en el Manual de Usuario de Eledge.

 

 

Documentación del proceso de prueba de funcionalidad del prototipo Eledge-UNAB 4.0

(Sección 2.3)

 

Diseño de plantillas de pruebas para evaluar la funcionalidad de Eledge y diligenciamiento de las plantillas de pruebas diseñadas, para evaluar la funcionalidad de Eledge (Sección 2.3.1)

 

Documentación de los resultados de la fase de pruebas de funcionalidad, por cada caso de prueba (Sección 2.4):

 

Especificación de las fallas y las funciones a mejorar detectadas al seguir un proceso riguroso de pruebas de funcionalidad (Sección 2.4.1)

 

Especificación de los requisitos de corrección y mejora correspondientes a cada una de las fallas de funcionalidad detectadas (Sección 2.4.2)

 

Cuantificación de los resultados de la fase de pruebas de funcionalidad (Sección 2.4.3)

 

Fuente documental: autora del proyecto


2.3 Documentación del proceso de prueba de funcionalidad del prototipo Eledge-UNAB 4.0:

 

Esta documentación da evidencia del proceso seguido por la autora del proyecto, para realizar las pruebas de funcionalidad del prototipo Eledge-UNAB versión 4.0. La manera en que se llevó a cabo este proceso de pruebas, es la siguiente: primero, se dividieron los servicios generales del prototipo en funcionalidades concretas, con base en el contenido del manual de usuario elaborado en el proyecto anterior; segundo, se diseñaron las plantillas de pruebas para tales funcionalidades, de manera que estas últimas pudieran ser manejadas como casos de prueba; tercero, se documentaron las entradas utilizadas en cada caso de prueba, así como sus respectivas salidas, en función de la secuencia de pasos establecida en las plantillas de prueba. Finalmente, se documentaron los resultados del diligenciamiento de tales plantillas, por parte de la autora del proyecto, especificando las fallas de funcionalidad del prototipo y sus correspondientes requisitos de corrección.

 

El diligenciamiento de las plantillas para cada caso de prueba, se realizó teniendo en cuenta la secuencia presentada a continuación:

 

1.      Registro y Apertura de una Sesión

2.      Acceso y Adición de Cursos

3.      Edición de Páginas Web

4.      Gestión de Usuarios

5.      Gestión y Uso de Exámenes

6.      Gestión y Uso de Foros

7.      Uso del Correo

8.      Uso de la Agenda

9.      Uso de la Ayuda

10.  Gestión de Características de la Plataforma

La información propia de las secciones 2.3.1, 2.4, 2.4.1 y 2.4.2, se condensa dentro del contenido del Anexo I, de manera que se puedan apreciar ordenadamente los resultados de las siguientes actividades:

 

 

·        Diseño de plantillas de pruebas para evaluar la funcionalidad de Eledge y diligenciamiento de las plantillas de pruebas diseñadas, para evaluar la funcionalidad de Eledge

 

·        Documentación de los resultados de la fase de pruebas de funcionalidad, por cada caso de prueba.

 

·        Especificación de las fallas y las funciones a mejorar detectadas al seguir un proceso riguroso de pruebas de funcionalidad

 

·        Especificación de los requisitos de corrección y mejora correspondientes a cada una de las fallas de funcionalidad detectadas

 

 

2.4.3 Cuantificación de los resultados de la fase de pruebas de funcionalidad

 

La distribución de la cantidad detectada de puntos a corregir en el prototipo Eledge-UNAB versión 4.0, en función de sus casos de prueba, se muestra a continuación, en la tabla 6.

 

 

 

 

 

 

Tabla 6. Cuantificación de los resultados de la fase de pruebas de funcionalidad.

 

Caso de Prueba

Cantidad total de Fallas detectadas

Cantidad total de Funciones a mejorar detectadas

Registro y Apertura de una Sesión

3

1

Acceso y Adición de Cursos

24

4

Edición de Páginas Web

1

0

Gestión de Usuarios

3

5

Gestión y Uso de Exámenes

62

11

Gestión y Uso de Foros

10

3

Uso del Correo

 

5

0

Uso de la Agenda

 

9

1

Uso de la Ayuda

 

1

0

Gestión de Características de la Plataforma

10

3

TOTAL

128

28

 

Fuente documental: autora del proyecto


2.5 Estrategia utilizada para la detección del mayor número de defectos que producen la mayor cantidad de fallas.

 

Como resultado del análisis de las estrategias más adecuadas a seguir (en términos de costo/beneficio), para la corrección de la mayor cantidad de fallas en el menor período de tiempo, se determinó que el enfoque necesario consistía en corregir la raíz del problema y no sólo sus manifestaciones y/o consecuencias; es decir, corregir el defecto que ocasiona las fallas, en lugar de pretender “corregir” las fallas como tales.

 

Lo anterior, en razón a que:

 

·        El defecto se constituye como la causa de la falla

·        Un defecto puede ocasionar una o varias fallas

·        La corrección de un defecto puede repercutir en la corrección de más de una falla

 

 

Tabla 7. Estrategia para la detección del mayor número de defectos que producen la mayor cantidad de fallas.

 

 

Estrategia

 

¿En qué consiste la estrategia?

 

Resultados de la aplicación

de la estrategia

 

 

Estrategia utilizada para la detección del mayor número de defectos que producen la mayor cantidad de fallas.

 

 

1.   Identificar las funcionalidades que presta Eledge

 

2.   Priorizar estas funcionalidades según:

 

·        Cantidad de fallas detectadas en cada una de ellas

 

·        La estimación del porcentaje de servicios que cada una aporta a la  totalidad de los servicios de Eledge

 

3.   Definir un paquete por cada funcionalidad (descomposición de Eledge-UNAB en paquetes de clases, discriminados según la funcionalidad que cumplen)

 

4.   Priorizar cada paquete en términos de la prioridad de su funcionalidad

 

5.      Agrupar las clases según la funcionalidad que implementan.

 

6.      Examinar la arquitectura del código de las clases agrupadas en los paquetes que tienen mayor prioridad.

 

 

Criterios de discriminación de paquetes

 

Los paquetes se utilizan para agrupar los archivos de código fuente.

Teniendo en cuenta el hecho de que, todo sistema grande ha de dividirse en unidades más pequeñas, de modo que se facilite su mantenimiento y que los equipos de trabajo no interfieran con el trabajo de los otros.

Un paquete es una parte de un modelo. Cada parte del modelo debe pertenecer a un paquete. Pero para ser funcional, la asignación debe seguir un cierto principio racional, tal como funcionalidad común, implementación relacionada y punto de vista común. UML no impone una regla para componer los paquetes.

 

Esta descomposición de Eledge-UNAB en paquetes de clases, discriminados según la funcionalidad que cumplen, tiene como objetivo adicional:

 

Proporcionar a Eledge-UNAB una organización arquitectónica que facilite su mantenimiento e incorporación de funcionalidad a nivel de presentación, lógica e interacción con la base de datos

 

 

Sección 2.6.1

 

Al aplicar esta estrategia se detectaron los siguientes defectos:

A nivel de Arquitectura:

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de un solo tipo, es 21 %.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de dos tipos, es 18,5%.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de tres tipos, es 60,5%.

 

·        Existe redundancia de código entre diferentes clases.

 

·        Los códigos de definición y de manipulación de la base de datos de Eledge, se relacionan de manera altamente acoplada y bajamente cohesiva, puesto que en las mismas clases en que se crean las tablas de la base de datos, simultáneamente se insertan datos. Esto ocasiona dificultades en el proceso de pruebas de Eledge, porque cada vez que se realizan cambios en los datos que esa clase inserta en las tablas de Eledge, y luego se ejecuta tal clase (para probar tales cambios), se reinicia el proceso de creación de tales tablas y se eliminan automáticamente todos los datos que hasta el momento se hayan insertado en tales tablas. La pérdida de este gran volumen de datos repercute en una pérdida de tiempo directamente proporcional a tal volumen, durante el proceso de pruebas del software.

 

·        El código del 65% de las clases de Eledge incluye directamente texto a desplegar a nivel de interfase GUI; es decir, éste no es capturado de los archivos de Eledge que contienen texto en diferentes idiomas (archivos tipo properties). Por tanto, no aparece en pantalla el texto correspondiente al idioma configurado en la máquina, sino el incluido directamente en el código de tales clases, el cual No es internacionalizable debido a que siempre aparecerá en pantalla sin tener en cuenta el idioma configurado en la máquina.

 

·        La arquitectura del código  que gestiona las interfases de Eledge (Html y JavaScript) posee un alto grado de acoplamiento y un bajo grado de cohesión con respecto al código que gestiona la lógica (Java Servlets) y la interacción con la base de datos (Sql). Este defecto dificulta el mantenimiento y la escalabilidad (incorporación de nueva funcionalidad) a niveles de interfase y lógica de Eledge.

 

 

A nivel del grado en que la interfase posibilita la funcionalidad del software:

 

·        Interfase poco intuitiva en cuanto al orden de pasos que el usuario ha de seguir para realizar determinada acción y usar las opciones de Eledge.

 

 

Fuente documental: autora del proyecto


2.6 Estrategia utilizada para la estimación de las alternativas de correcciones de los defectos y sus alcances

 

Tabla 8. Estrategia para la estimación de las alternativas de correcciones de los defectos y sus alcances

 

 

Estrategia

 

 

¿En qué consiste la estrategia?

 

Resultados de la aplicación

de la estrategia

 

 

Estrategia utilizada para la estimación de las alternativas de correcciones y su alcance

 

 

Proponer alternativas de corrección para cada uno de los defectos detectados, y realizar la estimación de sus alcances.

 

 

En la sección 2.12 se describen en detalle tales alternativas, así como las actividades realizadas para la estimación de sus alcances y los resultados de estas actividades.

 

 

Fuente documental: autora del proyecto

2.6.1 Identificación y priorización de las funcionalidades de Eledge

 

1.      Configurar el idioma del sistema

2.      Gestión de Usuarios

3.      Acceso y Adición de Cursos

4.      Gestión y Uso de Exámenes

5.      Gestión y Uso de Foros

6.      Uso de la Agenda

7.      Gestión de Características de la Plataforma

8.      Edición de Páginas Web

9.      Registro y Apertura de una Sesión

10. Gestión de Permisos

11. Uso del Correo

12. Uso de la Ayuda

13. Configurar servidor y base de datos

14. Crear logs

15. Crear y cargar páginas web

16. Crear y controlar base de datos

17. Crear sentencias Sql y Html

 

 


2.7 Ingeniería inversa a nivel de diseño

 

2.7.1 Diagrama de casos de uso actualizado

 

Figura 4. Diagrama de casos de uso actualizado

 

 

 

Fuente documental: autora del proyecto


2.7.2 Clases que contienen directamente el texto de sus interfases GUI

 

Tabla 9. Clases que contienen directamente el texto de sus interfases GUI

 

Clase

¿Contienen directamente el texto de sus interfases GUI?

Calendar

SI

CharHider

SI

Content

SI

Cursos

SI

DiscussionBoard

SI

Email

SI

Exima

SI

Gradebook

SI

Help

SI

Install

SI

InstallDB

SI

Logger

SI

ManageContent

SI

ManageCourse

SI

ManageCursos

SI

ManageDiscussionBoard

SI

ManageExam

SI

ManageFiles

SI

ManageTAPermissions

SI

Page

SI

Profile

SI

Question

SI

RBStore

SI

ResetCourse

SI

Scores

SI

Syllabus

SI

Usuarios

SI

Student

SI

ContentPacking

NO

 

Course

NO

EledgeResources

NO

Home

NO

Jsmethods

NO

Login

NO

Logout

NO

Multipart

NO

Permission

NO

PermissionData

NO

Permissions

NO

TA

NO

TAPermission

NO

TAS

NO

WebPage

NO

 

TOTAL:

 

 

28 clases de 43 (el 65%), contienen directamente el texto de sus interfases GUI.

 

Fuente documental: autora del proyecto


2.7.3 Tipos de clases que componen el software Eledge-UNAB

 

Tabla 10. Tipos de clases que componen el software Eledge-UNAB

 

Nombre del Paquete

Clases

Tipo de Clase

Interfase

Control

Entidad

Idioma

RBStore

 

X

 

EledgeResources

 

X

 

Usuarios

 

Student

X

 

X

Usuarios

X

X

X

Cursos

 

ManageContent

X

X

X

Cursos

X

X

X

ManageFiles

X

X

X

MultiPart

 

X

X

Content

X

X

X

ManageCursos

X

X

X

ContentPacking

X

X

X

Exámenes

ManageExam

X

X

X

Scores

X

X

X

Exam

X

 

X

Question

X

X

X

Gradebook

X

X

X

Foros

DiscussionBoard

X

X

X

 

ManageDiscussionBoard

X

X

X

Agenda

Calendar

X

X

X

CaracterísticasLMS

ManageCourse

X

X

X

Edicion

Syllabus

X

X

X

Sesiones

Profile

X

X

X

Login

X

X

X

Logout

X

X

 

Permisos

 

TAPermission

X

X

X

Permission

 

X

 

TA

 

 

X

TAS

 

X

 

ManageTAPermissions

X

 

X

Permissions

 

X

X

PermissionData

 

X

X

Correo

Email

X

X

X

Ayuda

Help

X

X

X

ConfigServBD

Course

 

X

 

Logs

Logger

X

X

X

PaginasWeb

 

Home

X

X

X

Page

X

 

X

Jsmethods

 

X

 

WebPage

 

X

 

BaseDatos

Install

X

X

X

InstallDB

X

X

X

ResetCourse

X

X

X

SqlHtml

CharHider

X

X

 

 

Fuente documental: autora del proyecto


2.7.4 Cuantificación del porcentaje de clases pertenecientes a cada tipo: Interfase, Control y Entidad

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de un solo tipo, es 21 %.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de dos tipos, es 18,5%.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de tres tipos, es 60,5%.

 

 

2.7.5 Estrategia utilizada para la discriminación de las clases en términos de los tipos de funciones que desempeñan

 

Tabla 11. Estrategia para la discriminación de las clases en términos de los tipos de funciones que desempeñan

 

 

Estrategia

 

 

¿En qué consiste la estrategia?

 

Resultados de la aplicación

de la estrategia

 

 

Estrategia utilizada para la discriminación de las clases en términos de los tipos de funciones que desempeñan.

 

 

Identificar los tipos de funciones que desempeña cada clase, teniendo en cuenta los siguientes criterios de discriminación:

 

Clases de tipo Interfase:

 

·        Gestionan el despliegue de las interfases de usuario

 

·        Capturan los datos de entrada, a través de las interfases de usuario

 

·        Interactúan con clases de tipo Control, enviándoles los datos de entrada capturados, y desplegando los datos de salida que aquellas clases le envían como resultado de sus procesamientos

 

 

 

Clases de tipo Control:

 

o    Manejan las transacciones y los eventos asociados a los casos de uso

 

o    Encapsulan el control de los casos de uso, los cálculos complejos y la lógica asociada a cada caso de uso

 

o    “Ejecutan” o “implementan” los casos de uso

 

o    Representan comportamiento complejo no asociado a un objeto entidad específico

 

·        Secuencian los eventos recibidos de la capa de interfase o presentación

 

Clases de tipo Entidad:

 

o    Definen y/o manipulan las tablas de la base de datos, a través de lenguajes de definición de datos (DDL) y lenguajes de manipulación de datos (DML)

 

o    Interactúan con las clases de tipo Control

 

o    Encapsulan el control de la lógica asociada a cada objeto Entidad

 

 

Sección 2.7.3

 

Fuente documental: autora del proyecto

 


2.8 Reingeniería de Eledge >> Ingeniería directa

 

2.8.1 Documentación de las correcciones implementadas en el prototipo

 

Las correcciones implementadas en el prototipo Eledge-UNAB versión 4.0, son introducidas en esta sección y documentadas a profundidad en los Anexos E, F, G y H.

 

2.8.1.1 Reestructuración de Eledge a nivel de arquitectura

 

2.8.1.1.1 Desagregación de clases que desempeñan funciones de despliegue de interfases

 

Aplicar mejores técnicas de programación, mediante la desagregación de clases que desempeñan funciones de despliegue de interfases. Esta desagregación consiste en trasladar las instrucciones que manejan el despliegue de interfases, de algunas clases hacia nuevas clases, mediante métodos dedicados exclusivamente al despliegue de interfases, implementados en nuevas clases e invocados en las clases ya existentes de Eledge que requirieron de modificación.

 

Trasladar las instrucciones que manejan el despliegue de interfases, de algunas clases hacia nuevas clases, mediante métodos dedicados exclusivamente al despliegue de interfases, implementados en nuevas clases e invocados en las clases ya existentes de Eledge que requirieron de modificación.

 

Esta actividad se realiza con el objetivo de facilitar una posterior implementación de la alternativa de corrección planteada, porque crea nuevas clases dedicadas exclusivamente a la gestión de las interfases GUI, las cuales contienen todo el código Html y JavaScript que maneja Eledge y los métodos Java que las conectan con las clases que originalmente incluían la gestión de tales interfases. Esto facilita la detección del código Html y Javascript que ha de contenerse en archivos *.Html, de manera que Eledge pueda gestionar sus interfases como lo propone el enfoque de Jsp.

 

Esta desagregación de clases que desempeñan funciones de despliegue de interfases, tiene como objetivo adicional: proporcionar a Eledge-UNAB una organización arquitectónica que facilite su mantenimiento e incorporación de funcionalidad a nivel de presentación, lógica e interacción con la base de datos

 

Para realizar las anteriores actividades (mantenimiento de Eledge), se aplicó el enfoque de ingeniería de software presentado en la figura 5.

 

Figura 5. Enfoque de ingeniería de software aplicado a las actividades de mantenimiento de Eledge.

 

 

 

Fuente documental: PIATTINI, Mario. Calidad en el desarrollo y mantenimiento del software. México: Alfaomega, 2003.

2.8.1.2 Traducción al español de texto desplegado en: Inglés, y en Español e Inglés de manera combinada

 

Las clases afectadas por las correcciones del idioma, se afectaron, no porque pertenecieran al nuevo paquete propuesto (nombrado ‘Idioma’), sino porque ese texto está incluido directamente en tales clases (no es texto internacionalizable), y por tanto falta configurar estas clases de manera que implementen el método de internacionalización para desplegar el texto de sus correspondientes interfases.

 

Tabla 12. Contenido de las correcciones de traducción de idioma e internacionalización del mismo

 

Palabra original

Reemplazo

Clases afectadas

Home

Página de Inicio

Calendar

DiscussionBoard

Exam

ManageContent

ManageCourse

ManageDiscussionBoard

ManageExam

ManageFiles

ManageTAPermissions

Profile

Scores

Syllabus

Usuarios

Logout

Cerrar sesión

Install

InstallDB

Studiante

Estudiante

ProfileResourceBundle

Eledge Logging Information:

Información de Registro de Eledge:

Logger

ID

Identificador

GradebookResourceBundle

Go To Current Month

Ir al mes actual

Calendar

Upload

Subir archivo

ManageFiles

 

Fuente documental: autora del proyecto

 

 

2.8.1.3 Reemplazo de texto poco intuitivo a texto más intuitivo en términos de su redacción gramatical y de su coherencia con los nombres de las opciones de Eledge

 

Las clases afectadas por las correcciones del idioma, se afectaron, no porque pertenecieran al nuevo paquete propuesto (nombrado ‘Idioma’), sino porque ese texto está incluido directamente en tales clases (no es texto internacionalizable), y por tanto falta configurar estas clases de manera que implementen el método de internacionalización para desplegar el texto de sus correspondientes interfases.

 

Tabla 13. Contenido de las correcciones a nivel de intuitividad en el texto de la interfase de Eledge-UNAB

 

Palabra original

Reemplazo

Clases afectadas

Fichero de registro:

Fichero y ruta del fichero de registro:

LoggerResourceBundle

 

Eledge Características del Curso

Preferencias de presentación del software

 

ManageCourseResourceBundle

ManageCourse

Nombre  - Valor Actual

Característica     -  Preferencia

ManageCourseResourceBundle

Limpiar el Curso

 

Borrar información de la Base de Datos

ManageCourseResourceBundle

Limpiar la Base de Datos de la clase

Borrar información de la Base de Datos

 

ManageCourseResourceBundle

LogLevel:

 

Nivel de información:

 

LoggerResourceBundle

Logger

Gestión de APs

 

Gestión de los permisos de usuario

ManageTAPermissionsResourceBundle

Información de los Permisos

Información de los permisos de usuario

ManageTAPermissionsResourceBundle

Actualizar el conjunto de permisos de AP

Actualizar el conjunto de permisos de usuario

ManageTAPermissionsResourceBundle

Puede crear varios perfiles de estas características si le da a cada uno un identificador único.

Puede crear varios perfiles de estas características si le asigna a cada uno un identificador único.

ManageTAPermissionsResourceBundle

Si ha creado perfiles por defecto, debe seleccionar uno de ellos y asignarlo a este AP para fijar sus permisos.

Si ha creado perfiles por defecto, debe seleccionar uno de ellos y asignarlo a este usuario para fijar los permisos de este último.

ManageTAPermissionsResourceBundle

Asignar a este AP los permisos del Perfil por Defecto seleccionado.

Asignar a este usuario los permisos del Perfil por Defecto seleccionado.

ManageTAPermissionsResourceBundle

Aquí se visualizan todos los estudiantes del LMS.

A continuación se visualizan todos los usuarios del sistema.

Usuarios

Estado

Clase

GradebookResourceBundle

Actualizar Datos de Selección

Actualizar datos del usuario seleccionado

GradebookResourceBundle

Borrar selección

Borrar usuario seleccionado

GradebookResourceBundle

Esta opción borrará los datos del estudiante seleccionado y sus calificaciones asociadas de la base de datos.

Esta opción borrará el usuario seleccionado y todos sus datos asociados, de la base de datos.

GradebookResourceBundle

 

(Dentro del menú del curso):

Página de Inicio

 

(Dentro del menú del curso):

Página de Inicio del Curso

Install:

InstallDB:

ManageTAPermissions

 

Eledge Enlaces de la Barra de Navegación

Opciones del Menú del Curso

ManageCourseResourceBundle

ManageCourse

Realice los cambios que desee en este área; después haga click en el botón 'Actualizar

Enlaces.

 

Configure las opciones que desea incluir en el Menú del Curso. Después haga clic en el botón “Actualizar cambios”

ManageCourseResourceBundle

 

Puede introducir enlaces, editarlos, ocultarlos o eliminarlos definitivamente

borrando su campo 'Nombre'.

(Se eliminó este texto, debido a que su contenido no se corresponde con la verdadera funcionalidad de Eledge-UNAB v. 4.0)

ManageCourseResourceBundle

 

Enlace#

Número de opción

ManageCourseResourceBundle

Característica

Opción

ManageCourseResourceBundle

 

Fuente documental: autora del proyecto

 

 

·         Documentación de las correcciones implementadas (Anexo E)

 

·        Diferencias entre las clases originales y corregidas (sin reestructuración de arquitectura) (Anexo F)

 

·        Diferencias entre los archivos de internacionalización (i18n) originales y corregidos (Anexo G)

 

·        Diferencias entre las clases originales y corregidas (con reestructuración de arquitectura) (Anexo H)

 


2.9 Diagrama de Clases actualizado según correcciones

 

  • El diagrama de clases actualizado según las correcciones implementadas a los defectos de reestructuración de arquitectura, es presentado en el archivo: DiagClasesReestruc.jpeg, ubicado dentro del directorio: Manuales\ManualTecnico\  del CD que contiene el presente documento.

 

  • El diagrama de clases actualizado según las correcciones implementadas a los defectos diferentes de reestructuración de arquitectura, es presentado en el archivo: DiagClasesNoReestruc.jpeg, ubicado dentro del directorio: Manuales\ManualTecnico\  del CD que contiene el presente documento.

 

 

2.10 Manual Técnico actualizado, a partir de los productos del proyecto

 

  • El Manual técnico actualizado a partir de los productos del proyecto, es presentado en el archivo: ManualTecnico.doc, ubicado dentro del directorio: Manuales\ManualTecnico\  del CD que contiene el presente documento.

 

 

2.11 Manual de Instalación actualizado, en términos de claridad en el procedimiento de instalación y según lo realizado en el proyecto

 

  • El Manual de instalación actualizado, en términos de claridad en el procedimiento de instalación y según lo realizado en el proyecto, es presentado en el archivo: ManualInstal.doc, ubicado dentro del directorio: Manuales\ManualInstal\  del CD que contiene el presente documento.

 


2.12 Reingeniería de Eledge >> Ingeniería directa >> Algunas estimaciones –estadísticas para el mantenimiento

 

Como resultado del estudio de los defectos encontrados a nivel de arquitectura e interfase de Eledge, se ha realizado una evaluación de las alternativas propuestas para corregirlos, en términos del tiempo requerido para implementarlas (en la forma de indicadores estadísticos), teniendo en cuenta las implicaciones de sus alcances. Esta evaluación se realizó con el objetivo de proporcionar documentación que facilite el mantenimiento a Eledge, en lo referente a los requerimientos de comprensión del software e incorporación de nueva funcionalidad.

 

Tabla 14. Algunas estimaciones-estadísticas para el mantenimiento

 

 

Alternativa de corrección

 

Actividad de estimación

 

 

Resultados de la

actividad de estimación

 

Implementar la separación entre la capa de presentación del software, y las capas lógica y de interacción con la base de datos, así:

 

Implementar las interfases de una manera similar a como se hace en JSP.  Pasar este código (que actualmente está dentro de los servlets):
String  buf.append("<INPUT TYPE=hidden NAME='Section' Value='" + student.getCourse_id() + "'></TD></TR>");

A una especie de llamado de los archivos que contienen tales instrucciones HTML y/o Java-Script, y que este llamado se realice dentro del código de los servlets, de manera que en los servlets no se incluya ninguna instrucción HTML ni Java-Script.

 

Lo anterior, con el objetivo de proporcionar a Eledge-UNAB una organización arquitectónica que facilite su mantenimiento y escalabilidad (incorporación de nueva funcionalidad) a nivel de interfase y lógica.

 

 

Consultar al Ingeniero Carlos Sáenz, quien trabaja en la universidad desde hace más
de un año desarrollando los portales de UNAB Virtual e incluso el Caldas,
usando Servlets, JSP y Java Beans.

 

 

 

La consulta tuvo como objetivo evaluar el alcance de esta alternativa de corrección, y la factibilidad de su completa implementación en términos del tiempo restante del proyecto.

 

Lo que se miró fue la complejidad del código, la cual se encuentra, al separar el código Java de Html. Al crear los Html lo complejo es ir determinando cada variables y reconstruir el código en la misma fuente de Java.

 

 

Los correos que evidencian los resultados de esta estimación, están documentados en el Anexo D.

 

Reingeniería de Interfases

 

Interfase más intuitiva en cuanto al orden de pasos que el usuario ha de seguir para realizar determinada acción y usar las opciones de Eledge.

 

Este proyecto propone un diseño para la interfase GUI de Eledge, con la intención de que ésta se pueda implementar siguiendo los principios de desagregación de clases de tipo interfase, y la separación entre la capa de presentación del software, y las capas lógica y de interacción con la base de datos, de manera que se posibilite implementar las interfases de una manera similar a como se hace en JSP, y se proporcione a Eledge una organización arquitectónica que facilite su mantenimiento y escalabilidad (incorporación de nueva funcionalidad) a nivel de interfase y lógica.

 

Desagregación de clases que desempeñan funciones de despliegue de interfases:

 

Trasladar las instrucciones que manejan el despliegue de interfases, de algunas clases hacia nuevas clases, mediante métodos dedicados exclusivamente al despliegue de interfases, implementados en nuevas clases e invocados en las clases ya existentes de Eledge que requirieron de modificación.

 

Esta actividad se realiza con el objetivo de facilitar una posterior implementación de la alternativa de corrección planteada, porque crea nuevas clases dedicadas exclusivamente a la gestión de las interfases GUI, las cuales contienen todo el código Html y JavaScript que maneja Eledge y los métodos Java que las conectan con las clases que originalmente incluían la gestión de tales interfases. Esto facilita la detección del código Html y Javascript que ha de contenerse en archivos *.Html, de manera que Eledge pueda gestionar sus interfases como lo propone el enfoque de Jsp.

 

Esta desagregación de clases que desempeñan funciones de despliegue de interfases, tiene como objetivo adicional:

Proporcionar a Eledge-UNAB una organización arquitectónica que facilite su mantenimiento e incorporación de funcionalidad a nivel de presentación, lógica e interacción con la base de datos.

 

Estudio del grado de independencia entre las clases que desempeñan funciones de Entidad, Interfase y Control.

 

Este estudio está documentado en la Sección 2.4.5, en el que se especifican los tipos de funciones que desempeñan clases de Eledge, y el paquete al cual pertenecen.

 

Los resultados de este estudio señalan que:

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de un solo tipo, es 21 %.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de dos tipos, es 18,5%.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de tres tipos, es 60,5%.

 

Para 224 líneas:

 

o    Primera vez: 3,5 horas

 

o    Promedio de tiempo a partir de la segunda vez: 3 horas

 

Desagregar Todas las clases según el tipo de función que desempeñan, y añadir las  nuevas clases requeridas para que cada una desempeñe sólo un tipo de función, implicaría una reorganización del código contenido en el 79% de las clases (60,5% + 18,5%); es decir, una reingeniería a nivel de arquitectura cuyo alcance se extiende más allá del tiempo destinado a la fase de correcciones.

 

Diseño de  paquetes de software para Eledge, con el fin de proporcionar a Eledge una organización arquitectónica que facilite:

 

·        Su mantenimiento y escalabilidad (incorporación de nueva funcionalidad y reutilización de su propio código)

·        La eliminación de redundancia de código entre diferentes clases, a nivel de interfase, lógica e interacción con la base de datos.

 

·        Un bajo grado de acoplamiento y un alto grado de cohesión entre los códigos de Interfase, Control y Entidad que sus clases implementan.

 

 

 

 

 

Con la intención de diseñar paquetes de software para Eledge, se realizó:

 

 

o    Una clasificación de los archivos de código fuente en términos de las funcionalidades que estos prestan.

 

o    Un estudio del grado de independencia entre las clases que desempeñan funciones de Entidad, Interfase y Control.

 

Este estudio está documentado en la Sección 8.4.5, en la cual se especifican los tipos de funciones que desempeñan clases de Eledge, y el paquete al cual pertenecen.

 

 

 

 

 

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de un solo tipo, es 21 %.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de dos tipos, es 18,5%.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de tres tipos, es 60,5%.

 

Para implementar un diseño de paquetes que facilite el mantenimiento y la escalabilidad del software (incorporación de nueva funcionalidad y reutilización de su propio código), se requiere:

 

1.   Desagregar las clases que desempeñan más de un tipo de función a la vez, y añadir las  nuevas clases requeridas para que cada una desempeñe sólo un tipo de función, para lograr bajo acoplamiento y alta cohesión entre los códigos de Interfase, Control y Entidad que éstas implementan.

 

2.   Partir de la desagregación de clases en términos del tipo de sus funciones, para eliminar la redundancia de código entre varias de ellas, y reutilizarlo a través de llamados a métodos que contengan tal código.

 

Desagregación de clases que desempeñan funciones de definición y de manipulación de la base de datos:

 

Separar los códigos de definición y manipulación de la base de datos, de manera que Todo el código de creación de tablas sea ejecutado por una sola clase que crea todas las tablas de la base de datos (una sola vez), y el código que manipula tales tablas se encuentre en otras clases diferentes de ésta.

 

 

 

 

 

Estudio del grado de independencia entre las clases que desempeñan funciones de Entidad, Interfase y Control.

 

Este estudio está documentado en la Sección 2.4.5, en la cual se especifican los tipos de funciones que desempeñan clases de Eledge, y el paquete al cual pertenecen.

 

Los resultados de este estudio señalan que:

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de un solo tipo, es 21 %.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de dos tipos, es 18,5%.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de tres tipos, es 60,5%.

 

Para 224 líneas:

 

o    Primera vez: 3,5 horas

 

o    Promedio de tiempo a partir de la segunda vez: 3 horas

 

Desagregar Todas las clases según el tipo de función que desempeñan y añadir las  nuevas clases requeridas para que cada una desempeñe sólo un tipo de función, implicaría una reorganización del código contenido en el 79% de las clases (60,5% + 18,5%); es decir, una reingeniería a nivel de arquitectura cuyo alcance se extiende más allá del tiempo destinado a la fase de correcciones.

 

Internacionalización de las interfases GUI de Eledge

 

Examen del enfoque utilizado en Eledge, para implementar la internacionalización del texto desplegado en sus interfases GUI.

 

 

 

 

El código del 65% de las clases de Eledge incluye directamente texto a desplegar a nivel de interfase GUI; es decir, éste no es capturado de los archivos de Eledge que contienen texto en diferentes idiomas (archivos de internacionalización, tipo properties). Por tanto, no aparece en pantalla el texto correspondiente al idioma configurado en la máquina, sino el incluido directamente en el código de tales clases, el cual No es internacionalizable debido a que siempre aparecerá en pantalla sin tener en cuenta el idioma configurado en la máquina.

 

Para lograr que Todo el texto que se despliega en pantalla sea internacionalizable, se requiere:

 

·        Crear variables por cada fragmento de texto que se despliegue de manera continua (o secuencial) en la pantalla.

 

·        Implementar dentro del archivo de internacionalización de cada una de las clases que constituyen tal porcentaje (65%), las correspondientes asignaciones ‘variable = fragmento de texto’. (Se toman estos ‘fragmentos de texto’ como los fragmentos de texto continuo que directamente se incluyen dentro del código del 65% las clases)

 

·        Crear para cada una de las clases que constituyen tal porcentaje (65%), métodos que reciban como argumentos los nombres de cada una de esas variables, para que capturen el texto almacenado en tales archivos 

 

·        Reorganizar el código de tal porcentaje de clases, de manera que éstas invoquen los métodos que capturan el texto de tales archivos, cada vez que éstas requieran la presencia de ese texto

 

Tiempo promedio: 10 minutos, para la reorganización de código en términos de lo descrito anteriormente, para los idiomas español e inglés (los 2 idiomas que Eledge maneja actualmente).

 

En promedio, para cada clase que constituye tal porcentaje (65%), se requieren realizar 20 implementaciones del proceso anteriormente descrito.

 

 

 

Fuente documental: autora del proyecto

 

 


2.13 Ingeniería inversa a nivel de diseño >> Diagrama de Paquetes y Descripción tabular de su diseño, como propuesta para la reestructuración de Eledge a nivel de Arquitectura.

 

  • El diagrama de paquetes, como propuesta para la reestructuración de Eledge a nivel de Arquitectura, es presentado en el archivo: DiagramaPaquetes.jpeg, ubicado dentro del directorio: Manuales\ManualTecnico\  del CD que contiene el presente documento.

 

Tabla 15. Diagrama de paquetes y descripción tabular de su diseño, como propuesta para la reestructuración de Eledge a nivel de Arquitectura

 

Funcionalidad

Nombre del Paquete correspondiente

 

Clases que componen el paquete

Configurar el idioma del sistema

Idioma

RBStore

 

 

EledgeResources

 

Gestión de Usuarios

 

Usuarios

Student

 

 

Usuarios

 

Acceso y Adición de Cursos

Cursos

ManageContent

 

Cursos

 

 

ManageFiles

 

 

MultiPart

 

 

Content

 

 

ManageCursos

 

 

ContentPacking

 

Gestión y Uso de Exámenes

Exámenes

ManageExam

 

Scores

 

 

Exam

 

 

Question

 

 

Gradebook

 

Gestión y Uso de Foros

 

Foros

DiscussionBoard

 

 

 

ManageDiscussionBoard

 

Uso de la Agenda

Agenda

Calendar

 

Gestión de Características de la Plataforma

 

CaracterísticasLMS

ManageCourse

Edición de Páginas Web

Edicion

Syllabus

 

Registro y Apertura de una Sesión

Sesiones

Profile

 

Login

 

 

Logout

 

Gestión de Permisos

 

Permisos

TAPermission

 

 

Permission

 

 

TA

 

 

TAS

 

ManageTAPermissions

 

 

Permissions

 

 

PermissionData

 

Uso del Correo

Correo

Email

 

Uso de la Ayuda

 

Ayuda

Help

Configurar servidor y base de datos

 

ConfigServBD

Course

 

Crear logs

Logs

Logger

 

Crear y cargar páginas web

PaginasWeb

 

Home

 

 

Page

 

 

JSmethods

 

 

WebPage

 

Crear y controlar base de datos

BaseDatos

 

Install

 

 

InstallDB

 

ResetCourse

 

Crear sentencias Sql y Html

SqlHtml

 

CharHider

 

Fuente documental: autora del proyecto

2.14 Reingeniería de Eledge >> Ingeniería directa >> Reingeniería de Interfases >> Propuesta de diseño para la Interfase GUI de Eledge.

 

 

Figura 6. Propuesta de diseño para la interfase GUI de Eledge

 

 

Fuente documental: autora del proyecto


3. CONCLUSIONES Y RECOMENDACIONES

 

 

De la presente tesis de grado se concluye, principalmente, que sus resultados dan evidencia de la necesidad de incrementar el aseguramiento de la calidad de los productos de software a desarrollar en los proyectos de grado. Como propuesta para incrementar tal aseguramiento de calidad, se propone incluir como parte del documento del Anteproyecto, la elaboración de un organigrama que establezca los roles y responsabilidades a cumplir por los integrantes de los equipos de trabajo que desarrollan productos de software en sus proyectos de grado. Se sugiere que en este organigrama se definan, como mínimo, los roles de: constructor del software, ejecutor de las pruebas del software, documentador del software y especialista temático, de manera que un integrante del equipo pueda desempeñar uno o varios de estos roles. Es muy importante crear conciencia al interior de la universidad, que los proyectos de desarrollo de software, más que grupos de programadores, requieren de la conformación de Equipos de Trabajo, preferiblemente multidisciplinarios, con roles y responsabilidades claramente definidas y asignadas.

 

 

3.1 Conclusiones de las actividades asociadas a la ejecución de pruebas de funcionalidad:

 

Se deduce, como primer punto de consideración, que la fase de pruebas de funcionalidad del software es un proceso de naturaleza bastante incierta. Esta afirmación se fundamenta en el hecho de que tal proceso se corresponde estrecha y directamente con el grado de rigurosidad en el control de la calidad de los productos de las etapas de desarrollo de tal software, y con el grado de


disponibilidad de éstos, en la fase de detección y corrección de sus defectos.

 

En el marco de la realización de este proyecto, el grado de disponibilidad de la documentación del proceso de desarrollo de Eledge-UNAB 4.0, fue considerablemente bajo. En consecuencia, los recursos actuales de documentación técnica de tal proceso, condicionan y limitan la fase de detección y corrección de defectos, en términos de la agilidad en la obtención de resultados más precisos[10].

 

En función de lo expresado anteriormente, se deduce que para incrementar el grado de completitud de la fase de detección y corrección de defectos de este proyecto, se requiere de la asignación de una mayor cantidad de recursos humanos, de tiempo y de documentación del proceso de desarrollo de Eledge-UNAB 4.0.[11]

 

Finalmente, se concluye que el proceso de pruebas de funcionalidad a Eledge ha llevado a la autora (quizá por las características de su perfil), a la realización de ingeniería inversa a las fases de análisis y diseño del proceso de desarrollo del prototipo, produciendo el diagrama de casos de uso (para la fase de análisis) y el diagrama de paquetes con la descripción tabular de su diseño (para la fase de diseño).

 


3.2 Conclusiones de las actividades de mantenimiento realizadas a Eledge

 

3.2.1 Dentro del marco de trabajo de Eledge:

 

1.      La estructura arquitectónica de Eledge y el alto grado de acoplamiento entre las clases que lo componen (en términos del tipo de sus funciones: Interfase, Control y Entidad), no han permitido la incorporación de clases desagregadas (cuyas funciones son exclusivamente de tipo Interfase), que compilan correctamente. Esto se manifiesta en que, al integrar (cargar y ejecutar) tales clases con la totalidad del código de Eledge, se generan excepciones que impiden la ejecución de las 7 clases, a pesar de haber implementado dentro de éstas los módulos try-catch correspondientes a cada una de las excepciones que arrojaban, siendo esto validado por el compilador de Java Servlets utilizado, al desplegar mensajes que informaban que todas las 7 clases compilaban correctamente (la estructura de desacoplamiento implementada en las 7 clases era correcta con respecto al código de las demás clases de Eledge, puesto que mediante ella se podían invocar los métodos de éstas últimas).

 

2.      Partiendo de lo anterior, se establece que las pruebas unitarias (de todas las clases modificadas y nuevas) resultaron exitosas (compilaron correctamente), mientras que las pruebas de integración (de todas las clases originales, modificadas y nuevas) resultaron fallidas (por las razones descritas en el párrafo anterior).

 

3.      Se invirtieron 3 días en investigación para detectar las causas de la generación de las excepciones que impiden la ejecución de las 7 clases desagregadas, y de esta manera dar respuesta al siguiente cuestionamiento: ¿Por qué se generan excepciones en las pruebas de integración de código mientras que en las pruebas unitarias no?

4.      Con base en esta investigación se determinó que el diseño arquitectónico de Eledge no favorece la detección de excepciones y el manejo de las mismas, en la etapa de integración de clases que sí funcionan por separado. Para lograr esta detección, se requiere un alto grado de pericia en el lenguaje de Java Servlets, que actualmente no se dispone).

 

5.      Con base en la anterior determinación, se decidió invertir el tiempo restante del proyecto en la corrección del mayor número de defectos de Eledge, y en la documentación del análisis de Ingeniería de Software realizado para justificar estas decisiones.

 

6.      Partiendo de las anteriores argumentaciones, se ha concluido que, en términos de relación costo / beneficio, es más conveniente realizar una reingeniería a Eledge a nivel de diseño y programación (comenzar desde cero), en lugar de continuar incorporándole funcionalidad, lo cual se traduce finalmente en un aumento de la complejidad de su código.

 

 

3.2.2 Dentro del marco de trabajo de la Ingeniería del Software en general:

 

1.      Es indispensable, al iniciar el desarrollo de un software, y a nivel de diseño arquitectónico, tener clara la manera en que éste manejará (arrojará y atrapará) las excepciones, para que, al integrar todos sus módulos de código (originales, modificados y nuevos) y realizarle mantenimiento, se sepa qué excepciones son las que se generarán, cuáles serán sus causas y qué acción se disparará para atraparlas y prevenir que el código no pueda seguir ejecutándose.

 

2.      Mediante este proyecto se pudo experimentar y comprender el por qué de los siguientes hechos:

·        El mantenimiento es la parte más costosa del ciclo de vida del sw.:
60-90% del coste total (y coste creciente).

 

 

·        El coste relativo de reparar un defecto aumenta en las últimas etapas del ciclo de vida (de 1 a 100).

 

 

·        En algunas empresas coste del  95%. Esta realidad se constituye como  una barrera o limitación del mantenimiento

(no se pueden desarrollar nuevos productos software).

 

·        El coste del mantenimiento se corresponde directamente con:

 

§         Oportunidades de desarrollo que se pierden.

 

§         Insatisfacción del cliente cuando no se puede atender en un tiempo aceptable una petición de reparación que parece razonable.

 

§         Los errores ocultos que se introducen al cambiar el software durante el mantenimiento reducen la calidad global del producto.

 

§         Perjuicio en otros proyectos de desarrollo cuando la plantilla tiene que dejarlos, total o parcialmente, para atender peticiones de mantenimiento.

 


§         Los siguientes indicadores estadísticos:

 

Figura 7. Indicadores estadísticos del costo del mantenimiento de software

 

Fuente documental: PIATTINI, Mario. Calidad en el desarrollo y mantenimiento del software. México: Alfaomega, 2003.

 

 

·        Las dificultades del mantenimiento se materializan en:

 

 

§         El hecho de que cambio tras cambio, los programas tienden a ser menos estructurados.

 

§         Ausencia de documentación.

 

 

·        Mediante este proyecto se ha logrado disminuir esta última dificultad, en razón a que se ha elaborado documentación que contiene: Diagramas de paquetes y Descripción tabular de su diseño, y Nuevo diagrama de casos de uso.

·        La realidad de que no existen registros de pruebas, lo cual repercute en la imposibilidad de ejecutar pruebas de regresión.

 

Esta última dificultad ha sido eliminada mediante este proyecto, en razón al proceso de pruebas rigurosas de funcionalidad que se realizó, y a la documentación de las fallas y a sus correspondientes requisitos de corrección y mejora.

 

·        Las actividades de mantenimiento tienen el siguiente coste:

 

Tabla 16. Coste de las actividades de mantenimiento de software

 

Fuente documental: PIATTINI, Mario. Calidad en el desarrollo y mantenimiento del software. México: Alfaomega, 2003.

Nótese cómo la comprensión del software y la comprensión de los cambios suponen casi un 50% del coste total de mantenimiento

 

 

 

 

3.      Con base en los anteriores indicadores estadísticos sobre el costo del mantenimiento del software, este proyecto proporciona un caso práctico que comprueba y evidencia lo siguiente:

 

·        El mantenimiento del software es una etapa bastante costosa, especialmente cuando no se dispone de documentación del código ni de la presencia del Equipo de Trabajo desarrollador del software.

 

·        Dentro del marco de trabajo del mantenimiento del software, el tiempo destinado a la modificación del mismo (modificación de su código y actualización de su documentación) es muy poco (supone un 25% de las actividades del mantenimiento), incluso si se dispone de la documentación del software para poder estudiarla antes de implementarle modificaciones (para realizar mantenimiento a Eledge sólo se contó con su Diagrama de Clases)[12].

 

 

Teniendo en cuenta las dos últimas conclusiones, y con el fin de proporcionar mayor facilidad para la realización de posteriores mantenimientos a Eledge (en lo referente a comprensión del software y de los cambios a realizar), se elaboró documentación que contiene: Diagramas de paquetes y Descripción tabular de su diseño, y Nuevo diagrama de casos de uso.  

 

Con el objetivo de aprovechar la máxima cantidad posible del tiempo destinado a la modificación de Eledge, el 50% de este tiempo se invirtió en la reestructuración de Eledge a nivel de arquitectura. Sin embargo, esta operación no fue suficiente para lograr tal aprovechamiento de tiempo, puesto que esta reestructuración no resultó funcional en razón a la generación de excepciones que impidieron la ejecución de las 7 clases reestructuradas (desagregadas).

 

 

3.3 Mediante la realización de este proyecto se lograron los siguientes beneficios, que se circunscriben dentro entorno global de la comunidad interesada en la Ingeniería del Software:

 

·        Se logró corroborar en la práctica, lo que la autora del proyecto ha aprendido en teoría, acerca de las dificultades y de los costos reales del mantenimiento de software.

 

·        Se documentó el aprendizaje del proceso (específicamente en la gestión, ejecución y comunicación interpersonal al definir criterios de decisión referentes al mantenimiento, pruebas, documentación de software, reingeniería, ingeniería inversa, ingeniería directa, reestructuración de código), como fruto de un Aprendizaje de Ingeniería de software en la práctica, y con la intención de consolidarlo en documentación para posteriores proyectos de mantenimiento.

 

·        Se registraron los criterios de decisión aplicados durante el transcurso del proyecto, las estrategias utilizadas para llegar a éstos, los ajustes realizados y los giros que produjeron en las actividades de mantenimiento, como producto de una disciplina en el seguimiento de los productos del proyecto.

 

·        En razón a que el proyecto tuvo sus raíces en un terreno no tan firme, inhóspito y de exploración (debido a que sus actividades se enfocaron en el mantenimiento de un software desarrollado por terceros), que demanda flexibilidad mental, surgió la necesidad de realizar ajustes al alcance y a la planeación del mismo, los cuales fueron posibilitados gracias a la flexibilidad de las tareas involucradas en el mantenimiento del software.

 

·        Teniendo en cuenta la brusquedad de los ajustes y giros realizados a las actividades del proyecto, y lo difícil de tomar decisiones en un terreno no tan firme (por las razones anteriormente expresadas), la relación de comunicación entre el Director y la Autora del proyecto, posibilitó que se  lograran sortear las dificultades de tomar decisiones y formular estrategias que satisficieran a ambas partes, en términos del aprendizaje a extraer del proyecto.

 

·        Para la UNAB (específicamente la Facultad de Ingeniería de Sistemas), se logró evaluar la factibilidad de mejorar Eledge para su implantación en los programas de pregrado. Los resultados de esta evaluación – documentados en la sección 9.2 -, arrojan las siguientes conclusiones:

 

o       En razón a que la labor del mantenimiento de Eledge se hizo muy trabajosa, y los beneficios en cuanto a la posibilidad de incorporación de funcionalidad a partir de su estado actual no han sido tan grandes, resulta mucho más conveniente hacerle reingeniería de software que un mantenimiento que parta desde su estado actual; inclusive, vale la pena considerar la posibilidad de comenzar tal reingeniería desde cero, considerando la posibilidad de reutilizar bloques de su código actual, de una manera consciente, y haciendo ajustes importantes (como el manejo de excepciones) antes de la reutilización de código.

 

 

 


BIBLIOGRAFÍA

 

 

BRAUDE, Eric J. Ingeniería de software : una perspectiva orientada a objetos.  México : Alfaomega, 2004. p. 29, 30, 31.

 

CALES, José. HURTADO, Rocío. Tomografía del e-learning en las universidades europeas [online], Edición no. 48, Diciembre 2004. Disponible en Internet: http://www.elearningamericalatina.com/radiografias/rad_9.php

 

DÍAZ, Ricardo. OLARTE Sara. VARGAS, Walter. Desarrollo de un prototipo LMS. Tesis, 2004. Facultad de Ingeniería de Sistemas, Universidad Autónoma de Bucaramanga.

 

E-learning América Latina [online]. Disponible en Internet: http://www.elearningamericalatina.com

 

ESPINOSA, Lina. SERRANO, Luis Carlos. Desarrollo de un prototipo de cursos virtuales con el estandar IMS (Instruction Management Systems). Tesis, 2004. Facultad de Ingeniería de Sistemas, Universidad Autónoma de Bucaramanga.

 

FLÓREZ, Rocío. Investigación de herramientas Courseware GNU aplicadas a la educación virtual o a distancia. Tesis, 2004. Facultad de Ingeniería de Sistemas, Universidad Autónoma de Bucaramanga.


FRANCO, Elizabeth. Sistema inteligente para la evaluación de hardware y software de usuario final en UNAB virtual. Tesis, 2003. Facultad de Ingeniería de Sistemas, Universidad Autónoma de Bucaramanga.

 

GALVIS, Julian. LIZARAZO, Juan. Desarrollo de un prototipo Web para la evaluación colaborativa de plataformas E-Learning. Tesis, 2004. Facultad de Ingeniería de Sistemas, Universidad Autónoma de Bucaramanga.

 

HELLERS, Nicolás. Los juegos seducen al e-learning [online], Edición no. 49, Enero 2005. Disponible en Internet: http://www.elearningamericalatina.com/edicion/enero1_2005/na_2.php

 

HELLERS, Nicolás. Rapid Learning: una tendencia para el 2005 [online], Edición no. 49, Enero 2005. Disponible en Internet: http://www.elearningamericalatina.com/edicion/enero1_2005/na_1.php

 

HUNTER, Jason.  Java Servlet programming.  1 ed.  Ucrania, Sebastopol : O'Reilly, 2001. p. 11–23.

 

INSTITUTO COLOMBIANO DE NORMAS TÉCNICAS Y CERTIFICACIÓN.  Tesis y otros trabajos de grado.  Bogotá :  ICONTEC, 2002.

 

JACOBSON, Ivar. BOOCH, Grady. RUMBAUGH, James. El proceso unificado de desarrollo de software. Madrid: Pearson Educación, 2000. p. 23-39, 45-46, 50, 52.

 

PRESSMAN, Roger. Ingeniería del software: un enfoque práctico. 5 ed. Madrid: McGraw Hill, 1998. p. 28-29.

 


PIATTINI, Mario. Análisis y Diseño de Aplicaciones Informáticas de Gestión. México: Alfaomega, 2000. p. 17-21, 24, 26-27.

 

PIATTINI, Mario. Calidad en el desarrollo y mantenimiento del software. México: Alfaomega, 2003. p. 51-69.

 

SUBOTOVSKY, Santiago. El cambio cultural, un gran desafío para el e-learning [online], Edición no. 50, Febrero 2005. Disponible en Internet: http://www.elearningamericalatina.com/edicion/febrero1_2005/tr_1.php.

 

SUBOTOVSKY, Santiago. La fuerza del e-learning global se sintió en Berlín [online], Edición no. 49, Enero 2005. Disponible en Internet:
http://www.elearningamericalatina.com/edicion/enero1_2005/tr_1.php


BIBLIOGRAFÍA COMPLEMENTARIA

 

 

CÓRICA, José Luis. En Latinoamérica hay un vacío legal en torno al e-learning [online], Edición no. 32, Marzo 2004. Disponible en Internet:
http://www.elearningamericalatina.com/edicion/marzo1_2004/tr_1.php

 

E-learning América Latina. Actualidad del e-Learning en Colombia [online], Edición no. 44, Septiembre 2004. Disponible en Internet: http://www.elearningamericalatina.com/edicion/septiembre2_2004/tr_1.php  

 

HELLERS, Nicolás. Expertos debatieron el futuro del e-learning [online], Edición no. 47, Diciembre 2004. Disponible en Internet: http://www.elearningamericalatina.com/edicion/diciembre1_2004/tr_1.php

 

PODLESKER, Christián. Actualidad de las TIC en la educación latinoamericana [online], Edición no. 45, Octubbe 2004. Disponible en Internet: http://www.elearningamericalatina.com/edicion/octubre1_2004/tr_1.php

 

SFORZA, Daniella. HELLERS, Nicolás. Debemos conocer y entender a los alumnos virtuales [online], Edición no. 50, Febrero 2005. Disponible en Internet: http://www.elearningamericalatina.com/edicion/febrero1_2005/tr_2.php

 

SUBOTOVSKY, Santiago. El e-learning es fundamental para la capacitación corporativa [online], Edición no. 48, Diciembre 2004. Disponible en Internet:

http://www.elearningamericalatina.com/edicion/febrero1_2005/na_1.php


ANEXOS

 

 

Anexo A. Paralelo entre funcionalidades de Eledge-UNAB 4.0 y WebCT

 

 

A continuación se presenta el conjunto de esquemas y tablas elaborado para organizar el conocimiento adquirido acerca de los módulos de servicios ofrecidos por Eledge-Unab 4.0 para las diferentes clases de usuarios, a saber: administradores del prototipo, profesores, estudiantes y estudiantes privilegiados. Se incluye un paralelo comparativo de los tipo de herramientas y servicios brindados por Eledge-Unab 4.0 y la plataforma WebCT, así como un listado de las herramientas generales que debe incluir un LMS y la manera como Eledge-Unab 4.0 satisface tales requerimientos.

 


Figura 8. Distribución de herramientas de Eledge-UNAB versión 4.0

 

 

 

Fuentes documentales:

 

DÍAZ, Ricardo. OLARTE Sara. VARGAS, Walter. Desarrollo de un prototipo LMS. Tesis, 2004. Facultad de Ingeniería de Sistemas, Universidad Autónoma de Bucaramanga.

 

Autora del proyecto.

 

 


Tabla 17. Paralelo entre funcionalidades de Eledge-UNAB 4.0 y WebCT.

 

CLASIFICACIÓN DE LOS SERVICIOS – TABLA COMPARATIVA

 

CATEGORÍA

SERVICIOS

 

WEB CT

ELEDGE-UNAB 4.0

Herramientas de distribución de contenidos

 

Editor de contenidos “on-line”.

 

 

Repositorios de archivos de imágenes, de video y de texto como biblioteca “on-line”.

 

 

Inserción de hipervínculos, imágenes y videos.

 

 

Administración de calendario de contenidos.

 

Contenidos del curso y materiales relacionados:

 

Programa – Calendario - Módulo de contenidos

Glosario – Buscar – Recopilar –

 

Administrar archivos:

 

Añadir, descargar, cambiar y organizar los archivos del curso.

Cargar - Crear - Editar - Copiar - Mover - Cambiar nombre - Borrar - Comprimir - Descomprimir - Descargar

Desarrollar contenidos del curso para alumnos con herramientas como: Programa y Módulo de contenidos.

 

Agrupar los contenidos y herramientas del curso, mediante Páginas de Organización.

 

Personalizar (editar) la página principal del curso.

 

Cambiar el contenido del curso.

 

Actualizar las vistas de los alumnos de los módulos de contenidos del curso:

 

Administrar copias de seguridad del curso.

Importar y exportar contenido de IMS.

 

Configurar curso: cambiar su aspecto y funcionamiento.

 

Nombre del profesor - Idioma - Formato de datos numérico - Formato horario - Presentación del Menú del curso - Página de inicio del profesor - Enlaces del profesor - Editar Menú del curso - Editar página de bienvenida - Personalizar colores del curso - Modificar/añadir imagen de fondo - Modificar estilo de iconos - Sustituir icono individual - Personalizar novedades del curso

 

Administrar las fichas de los alumnos y ayudantes del profesor.

Gestión de alumnos - Seguimiento de alumnos - Gestión de ayudantes del profesor - Seguimiento de páginas - Copia de seguridad del curso - Reiniciar curso - Compartir acceso - Importar contenido - Exportar contenido

 

Modulo de contenidos

 

Establecer los contenidos del curso.

Asignación de herramientas para el curso.

Seguimiento del estudiante.

Administrar, editar y borrar Contenidos.

 

Modulo de Exportación

 

Exportación del contenido de cursos a otras plataformas cumpliendo con el estándar IMS.

Importación de archivos HTML o HTM (contenidos) para modificarlos o agregarlos.

Compartir Información: Exportación de los contenidos de cada curso

 

Docente:

 

Administrar el contenido de los cursos al que pertenece

Definir la estructura del curso

Agregar el contenido del curso

Administrar la lista de notas de los alumnos del curso

Definir que alumnos pertenecen al curso

Editar las paginas de inicio del curso, de ayuda y de instrucciones.

 

Personalizar la presentación al programa que dirigirá, en la parte inferior de la página, aparece solo para administradores e instructores un enlace para editar el contenido de la misma.

 

Edición de Contenido. administrador o profesor editar el contenido en formato HTML. El editor HTML ayuda al usuario a editar.

 

Contenido del Curso. listar los temas que el profesor o administrador creó, para ingresar en uno especifico y gestionarlo, y poder seguir agregando nuevos temas.

 

Añadir / Editar Temas del Contenido: profesor o administrador crean fácilmente los contenidos de los temas. Para importar archivos HTML ya creados hacia la plataforma, ahorrando el trabajo de volverlos a crear si estos ya existen.

 

Contenido del curso. lista de temas disponibles del curso, para que los explore.

 

 

Administrar Contenidos:

 

Docente y Administrador montan, editan y eliminan el contenido HTLM del curso.

El contenido se monta de forma estructurada y ordenada para poder exportar en IMS. 

Definir herramientas que se usarán para el curso.

 

Exportación del Contenido: Administrador y Docente exportan el contenido del curso en IMS para uso en otras plataformas LMS.

 

Ver Cursos: Docente y Estudiante ven el contenido de un curso específico, e interactuan con sus herramientas.

 

Modulo de cursos

 

Crear, editar, listar administrar y eliminar los cursos.

Asignación de profesores y estudiantes al curso.

 

Manejo de múltiples cursos.

Administrar Currículo

 

Personalización del curso por parte del administrador o profesor.

 

Personalizar la barra de herramientas del curso.

 

Profesor - Mis Cursos. Listar los cursos a los cuales el instructor esta inscrito para aprender o asignado para dirigir.

 

Estudiante - Mis Cursos: lista de cursos inscritos por él o por un profesor o administrador de la aplicación.

 

Qué cursos tiene inscritos y cuales puede agregar.  Cuando se agrega un curso este es eliminado del área de cursos sin asignar.

 

Administrar Cursos: Administrador crea, describe y elimina cursos en la plataforma.

 

Asignación Docentes al Curso: Administrador asigna uno o varios docentes al curso, y los dá de baja.

 

Asignar Cursos: Estudiante asignarse a los cursos existentes en la plataforma, pero éste debe contar con los permisos necesarios para esta acción.

 

Asignar Estudiantes al Curso: Docente asigna estudiantes a su curso, y los dá de baja.

 

Administrador - Mis Cursos. Mostrar todos los cursos creados en la plataforma, gestionarlos y exportarlos a otras plataformas.

 

Herramientas de comunicación y colaboración

 

Foros de discusión por curso.

 

Sala de “chat” por curso.

 

Formación de grupos de trabajo.

 

Comunicación privada con el tutor.

 

Miembros del curso.

 

Novedades y calendario del curso.

 

Herramientas de Comunicación

 

Correo -  Foro de debate – Charla - Pizarra

Trabajos - Calendario - Charla - Recopilar - Módulos de contenido - Foro de debate - Glosario - Correo - Mis calificaciones - Mi progreso - Páginas de organización - Exámenes y cuestionarios - Buscar - Autoevaluaciones - Páginas personales de alumnos - Grupos de trabajo - Programa - Pizarra

 

Herramientas de Comunicación:

 

Foros de Discusión, Correo, montar y administrar recursos (cronograma estudiante, exámenes)

 

Docente crea foros, exámenes

 

Estudiante: participa en foros

 

Definir Herramientas: las del curso, como Exámenes, Foros, Ayuda, Instrucciones, Puntuaciones, E-mail y Agenda.

 

Ayudas interactivas para el manejo de la plataforma (soporte en línea al usuario).

 

Herramientas de administración y asignación de permisos

 

Otorgamiento de permisos y autorizaciones.

 

Asignación de permisos por perfil de usuario.

 

Administración personal de perfile de usuario.

 

Proceso de inscripción.

 

Planes de carrera y paquetes de cursos.

 

Administrar curso:

 

Hacer seguimiento del progreso de los alumnos.

 

Definir permisos (roles) usuario.

 

Permisos; Administrador asigna a los profesores los permisos de gestión de la plataforma.

 

Crear Perfiles de usuario: Administrador crea nuevos perfiles de usuario en la plataforma y define los permisos adecuados.

 

Asignar Permisos: asignar permisos a los perfiles de usuario existentes, los permisos definen el acceso de herramientas de administración del curso y de la plataforma.

 

Consulta, modifica usuarios del sistema.

Asignación de los perfiles de usuario especiales a los usuarios.

Crea perfiles de usuario.

 

Administrar, eliminar y listar Usuarios.

 

Administrador: admin usuarios, permisos y perfiles de usuario

 

Administrar Usuarios: Administrador crea, elimina y modifica usuarios en la base de datos, cambia sus contraseñas de acceso y les asigna el perfil de usuario.

 

Asignar o dar de baja al profesor o estudiante.

 

Interfase adecuada/personalizada para cada tipo de usuario (administrador, profesor, docente) para que cumpla sus funciones.

 

 

Herramientas de Administración: Autentificación, Autorización al curso, Registros de cursos, Asignación de usuarios al curso

 

Administración de múltiples cursos

 

Diseño del plan de estudios: Accesibilidad complaciente, Administración del plan de estudios, Apariencia a la medida

 

Administrador: interactua con cualquier curso.

 

Estudiantes. Muestra los usuarios registrados en el curso, y los que potencialmente pueden hacer parte de él.

 

Profesores: Muestra los usuarios asignados al curso, y los que potencialmente pueden dirigirlo.

 

Herramientas de seguimiento y evaluación

 

Estadísticas y ficha personal por alumno.

 

Seguimiento de cada actividad.

 

Sistemas de exámenes editables por el docente o tutor.

 

Reportes de actividad.

Herramientas de evaluación

 

Trabajos – Autoevaluación – Exámenes - Mis calificaciones

 

Herramientas de estudio

 

Páginas personales - Grupos de trabajo - Mi progreso - Exámenes y cuestionarios

 

Generación informes: Publicación notas

 

Modulo de contenidos

 

Seguimiento del estudiante.

Puntaje y pruebas automatizadas,

Herramientas de evaluación en línea

 

Herramientas de Productividad: Calendario, Orientación / Ayuda, Progreso del estudiante

 

 

Grupos de usuarios:

 

Administrador - Diseñador - Profesor - Estudiante

 

Estudiante Privilegiado, Estudiante, Visitante, Congelado, Administrador, Profesor

 

Fuente documental: autora del proyecto

 


Anexo B. Modelo Lineal Secuencial y Proceso Unificado de Desarrollo

 

 

En la tabla 18 se presentan las fases que el Modelo Lineal Secuencial abarca, se describen las tareas específicas que han de cumplirse en cada una de ellas y las ventajas y desventajas que sugiere su dinámica de trabajo. La descripción detallada de las tareas que se ejecutan en las fases del Proceso Unificado de Desarrollo, así como sus características y ventajas, también es expuesta a continuación, en las tablas 22 y 23.

 

Tabla 18. Fases y actividades del Modelo Lineal Secuencial

 

 

Fase

 

Actividades

 

 

Ventajas

 

Desventajas

Ingeniería y Modelado de Sistemas / Información

Establecer requisitos del Sistema (Organización) del que forma parte el software.

 

Asignar al software algún subgrupo de estos requisitos.

 

Realizar Análisis del Dominio de la Ingeniería de Información: recolectar los requisitos en el nivel de Empresa/Estratégico y del Área de Negocio.

Apropiado cuando los requisitos se han entendido correctamente, y cuando éstos no cambiarán durante el proceso de desarrollo.

 

 

Puede ser combinada y adaptada con otras metodologías de desarrollo de software.

 

Es difícil que el cliente exponga explícitamente los requisitos, y desde el principio.

 

 

No facilita el manejo de la incertidumbre al comienzo del proyecto de desarrollo del software.

 

 

 

Análisis de Requisitos del Software

Comprender el dominio de información del software, su función, comportamiento, rendimiento e interconexiones.

 

Proporciona una plantilla con métodos para el análisis, diseño, codificación, pruebas y mantenimiento.

 

Las versiones progresivas del software sólo se podrán ver hasta que estén muy avanzadas.

Diseño

 

Centrarse en los atributos del programa: estructura de datos, arquitectura del software, representaciones de interfaz y detalle procedimental (algoritmo).

 

Traducir requisitos a una representación de software donde pueda evaluarse su calidad antes de codificarse.

 

 

No apto para desarrollar software escalable porque no estructura iteraciones incrementales para mejorarlo.

 

 

Generación de Código

Traducir el diseño a una forma legible por la máquina.

 

 

Cada una de sus fases se debe cumplir en su totalidad para seguir a la siguiente.

 

Pruebas

 

Detectar errores

 

Asegurar que la entrada produce los resultados requeridos.

 

 

No permite la participación de los clientes en el desarrollo de software.

Mantenimiento

 

Aplicar las anteriores fases a un programa ya existente y no a uno nuevo.

 

 

 

 

Fuente documental: PRESSMAN, Roger. Ingeniería del software: un enfoque práctico. 5 ed. Madrid: McGraw Hill, 1998.

 

 

Tabla 19. Fases y actividades del Proceso Unificado de Desarrollo

 

 

Fases

 

Actividades

 

Inicio

 

·        Descripción del producto final

·        Análisis de Negocio para el producto (relación costo-beneficio)

·        Determinación de las principales funciones del sistema para sus usuarios más importantes

·        Análisis de las alternativas de arquitectura

·        Determinación del plan del proyecto

·        Análisis del costo de desarrollo del producto

·        Identificación y priorización de los riesgos más importantes

·        Planificación detallada de la fase de Elaboración

·        Estimación del proyecto

Elaboración

 

·        Especificación detallada de la mayoría de casos de uso del producto

·        Diseño de la arquitectura del sistema

·        Realización de los casos de uso más críticos identificados en la fase de Inicio

·        Responder si son suficientemente estables los casos de uso, la arquitectura y el plan del proyecto

·        Responder si están suficientemente controlados los riesgos

·        Resolver si se tiene la capacidad para comprometer el desarrollo del proyecto mediante un contrato

Construcción

·        Crear el producto

·        Añadir el software terminado a la arquitectura

·        Responder si el producto cumple suficientemente las necesidades de algunos usuarios para hacer una primera entrega

Transición

·        Convertir el producto en una versión Beta

·        Grupo de usuarios experimentados prueba el producto e informa deficiencias

·        Corregir problemas

·        Incorporar mejoras

·        Fabricación

·        Formación del cliente

·        Línea de ayuda / asistencia

·        Categorizar los defectos:

o       Los que tienen suficiente impacto en la operación como para justificar una versión incrementada

o       Los que pueden corregirse en la siguiente versión normal

 

Fuentes documentales:

 

BRAUDE, Eric J. Ingeniería de software : una perspectiva orientada a objetos.  México : Alfaomega, 2004. p. 29, 30, 31.

 

JACOBSON, Ivar. BOOCH, Grady. RUMBAUGH, James. El proceso unificado de desarrollo de software. Madrid: Pearson Educación, 2000.

 

PRESSMAN, Roger s. Ingeniería de software: un enfoque práctico. Madrid : cGraw Hill, 2002. p. 20, 21.

 

 

El modelo del Proceso Unificado de Desarrollo se precia de las características y ventajas que se listan y resumen a continuación, en la Tabla 20.

 

 

Tabla 20. Características  del Proceso Unificado de Desarrollo

 

 

Características

 

 

Ventajas

Dirigido por Casos de uso

Proporciona una guía para ordenar las actividades de un equipo desarrollador de software.

 

Es Iterativo / Incremental

Permite la dirección de tareas de cada desarrollador por separado y del equipo como un todo.

 

Usa UML para preparar todos los esquemas de un sistema software

Especifica los artefactos que deben desarrollarse.

 

Cada ciclo concluye con una Versión del producto para los clientes

Ofrece criterios para el control y medición de los productos y actividades del proyecto.

 

Cada ciclo consta de cuatro fases:  Inicio, Elaboración, Construcción, Transición

Puede especializarse para una gran variedad de software, áreas de aplicación, tipos de organizaciones, niveles de aptitud y tamaños de proyecto.

 

Cada fase se subdivide en Iteraciones.

Usa UML para preparar todos los esquemas de un software.

 

Cada versión constituye un producto para su entrega

Permite reducir el costo del riesgo a los costos de un solo incremento.

 

Cada fase termina con un Hito

Permite reducir el riesgo de no sacar el producto al mercado en el horario previsto.

 

Los cinco flujos de trabajo tienen lugar sobre las cuatro fases.

Facilita la identificación de riesgos en fases tempranas del desarrollo.

 

En cada iteración:

 

Se especifican los casos de uso relevantes

 

Se crea un diseño usando la arquitectura como guía

 

Se implementa el diseño mediante componentes

 

Se verifica qué componentes satisfacen los casos de uso.

 

Acelera el ritmo del esfuerzo de desarrollo al facilitar la entrega de resultados claros a corto plazo.

 

Permite refinar los requisitos en Iteraciones sucesivas.

 

 

Fuentes documentales:

 

BRAUDE, Eric J. Ingeniería de software : una perspectiva orientada a objetos.  México : Alfaomega, 2004.

 

JACOBSON, Ivar. BOOCH, Grady. RUMBAUGH, James. El proceso unificado de desarrollo de software. Madrid: Pearson Educación, 2000.

 

PRESSMAN, Roger. Ingeniería del software: un enfoque práctico. 5 ed. Madrid: McGraw Hill, 1998.


Anexo C. Tipos de prueba de software

 

 

Los intentos por clasificar las tareas que cubren las fases de prueba de software en general, producen resultados bastante imprecisos porque éstas, en vez de dividirse, se complementan entre sí. A continuación se presentan los tipos de prueba de software que, debido al impacto que ejercen en el ciclo de desarrollo de software, son bastante frecuentadas.

 

Pruebas de Unidades

 

El objetivo de estas pruebas es garantizar que los bloques de construcción del sistema sean totalmente confiables.

 

Pruebas de caja blanca

 

La meta de esta clase de pruebas es determinar cuáles son las líneas de código que tienen más probabilidad de contener defectos. Su proceso general involucra la división del diseño del sistema para encontrar sus rutas de ejecución y sus módulos de control y procesamiento de datos. De manera seguida se crean casos de prueba que realicen seguimiento a estos caminos y que permitan ejecutar sus módulos por separado.

 

Para el presente proyecto, no se considera prudente ni sensato el compromiso con las pruebas de caja blanca en razón de que:

 

1        El objetivo de las pruebas de caja blanca es determinar si se está construyendo correctamente el sistema, descubriendo casos en los que no se cumplan los requisitos de cada segmento, rama, condición/decisión y bucle del código.

 

2        El cumplimiento de ese objetivo requeriría de un conocimiento y experiencia previos igual o mayor que los de quienes construyeron la versión 1.3 de Eledge, guiados y asesorados por su autor, Charles A. Wight.

 

Pruebas de caja gris

 

Estas pruebas, como su nombre lo indica, incluyen aspectos de las pruebas de caja negra y caja blanca.

 

Prueba de Regresión

 

Estas pruebas determinan si la funcionalidad de una aplicación sigue vigente luego de haberle añadido código. Es decir, responde a la pregunta “¿es el software actual el mismo de antes pero con funcionalidad añadida?” Esto lo logra mediante la verificación de que el sistema siga pasando exitosamente las pruebas que se le practicaron justo antes de introducirle modificaciones.

 

Por lo anterior, este tipo de pruebas son llevadas a cabo de manera muy frecuente, dentro del proceso del desarrollo de la aplicación. En caso de que el tiempo no sea un factor de holgura en la ejecución de estas pruebas, se deben escoger las que ofrezcan mayor probabilidad de encontrar defectos.

 

Pruebas de Integración

 

Las pruebas de integración son llevadas a cabo durante el período de desarrollo de un sistema y al finalizar la implementación de sus módulos y/o versiones de evolución. Este tipo de pruebas es muy practicado en proyectos que requieren implementar sus aplicaciones a través del trabajo simultáneo de varios equipos de programadores, que construyen los módulos del sistema por separado.

A manera de ilustración, estas pruebas comienzan con la detección de fallos a nivel de cada componente de la aplicación, para luego ir evaluando el comportamiento de aquéllos a medida que se integran unos con otros.

 

Finalmente, se verifica y valida el sistema en función de la interacción de sus módulos, al ser integrados como un todo.

 

Debido al carácter incremental del método que sugieren estas pruebas, es muy conveniente iniciarlas tan pronto como se desarrolle la primera versión de cada uno los módulos que compondrán la aplicación final.

 

A medida que se van probando y corrigiendo estos módulos, se incluyen en un conjunto que contiene los otros módulos que ya han sido validados exitosamente. A este conjunto se le denomina “la base”. Es decir, se van integrando uno a la vez, conforme van siendo evaluados y corregidos -si es del caso-. Esta base es el producto resultante de la prueba de los módulos, y constituye la versión actual del software a desarrollar.

 

Estas pruebas son hechas en conjunto con las de regresión, de manera que si los componentes integrados en la Base provocan errores en la ejecución del sistema, estos sean “des-integrados” para ser corregidos por separado y para luego ser añadidos de nuevo a la Base, en caso de que esta inclusión no afecte la funcionalidad existente y que a su vez, ofrezca nuevos servicios.

 

 

Pruebas de Desarrolladores y Artefactos

 

Estas pruebas tienen como objetivo asegurar que dentro del proceso de pruebas de integración, se incluyan: el modelo de casos de uso, los casos de prueba, procedimientos de prueba, el informe de las pruebas, el plan de pruebas, los componentes de las pruebas y los defectos encontrados.

 

Los roles que participan en este tipo de pruebas son el del Ingeniero de pruebas, el de componentes y el ejecutor de la prueba. 

Prueba de Interfaz

 

Para verificar y validar las interfases de un sistema, este tipo de prueba propone invocar los métodos que aquéllas implementan, de manera combinada y secuencial. Esto es útil siempre y cuando las combinaciones de invocación a métodos que se elijan, estén ajustadas al contexto en el cual adquieren sentido, ya que, de otra manera, sería poco factible –e irrelevante- predecir el resultado de tal prueba.

 

Pruebas del Sistema

 

Estas pruebas marcan la fase terminal del proceso de pruebas de integración, y toman como parámetro de validación de la aplicación, los requisitos a partir de los cuales ésta fue creada. Debido a que lo que se busca es determinar si tales requerimientos se cumplen o no, es necesario contar con casos de prueba que se  precien de un alto grado de rigurosidad.

 

Dado que las pruebas del sistema aseguran que los requerimientos se cumplen, deben validar de modo sistemático cada requerimiento. Se requiere una escritura de pruebas considerable para forzar la demostración de cada requerimiento. En este punto también se validan los casos de uso.

 

Los tipos de pruebas del sistema son: de volumen, de utilidad, de desempeño, de configurabilidad, de compatibilidad, de confiabilidad / disponibilidad, de seguridad, de uso de recursos, de aptitud de instalación, de funcionalidad y de carga o tensión.

 

 


Prueba de Utilidad

 

Las pruebas de utilidad tienen como objetivo verificar que el sistema esté en conformidad con la especificación de sus requisitos, y asegurar la aceptación del producto desarrollado, por parte de sus clientes y usuarios.

 

El método que estas pruebas proponen seguir para lograr aquello, es otorgar una medida al grado de satisfacción que expresan los usuarios del software, con respecto a su funcionamiento, cuando lo están usando “en vivo y en directo”.

 

Los criterios que se tienen en cuenta para validar la aplicación, en la ejecución de estas pruebas son: accesibilidad, facilidad de navegación, rapidez de respuesta, eficiencia y comprensión del producto a evaluar.

 

Pruebas de Aceptación

 

El objetivo general de esta clase de prueba es obtener una constancia del cliente mediante la cual él informa que recibió la aplicación en conformidad a lo estipulado en el contrato de negocio. En este contexto, las pruebas se realizan en presencia del cliente y son ejecutadas en la configuración hardware que él va a utilizar para correr la aplicación. La práctica de estas pruebas es pertinente en los casos en que se haya acordado que la organización cliente pagará cierto tipo de avances, logrados dentro del proceso de desarrollo de la aplicación final.

 

Pruebas de Instalación

 

Cuando una aplicación se ejecuta en distintos entornos, se presentan grandes posibilidades de que se generen errores en la misma. En vista de ello, las pruebas de instalación buscan validar el software directamente desde la máquina final, para luego practicar las Pruebas del Sistema anteriormente descritas. Es conveniente aclarar que, de no ser posible realizar este tipo de pruebas en la configuración de hardware cliente, es preciso llevarlas a cabo en plataformas que se ajusten y/o representen fielmente el tipo de máquinas que éste empleará.

 

Pruebas Alfa y Beta

 

Estas pruebas se realizan involucrando la participación del cliente en la ejecución de las Pruebas del Sistema. Concretamente, las pruebas alfa se llevan a cabo con un grupo confiable de usuarios, no necesariamente pertenecientes a la organización cliente. Esto se hace con la idea de que el usuario informe sobre los defectos que encuentra en aquélla sin que esto afecte la imagen o reputación de la misma. Posteriormente a la finiquitación de estas pruebas, siguen las pruebas tipo beta.

 

Por el contrario, las versiones beta del sistema sí son probadas por una porción de la comunidad final de clientes (o del público al que el producto va dirigido). Normalmente, las personas que se ofrecen a practicar estas pruebas lo hacen con el propósito de ganar comprensión acerca del funcionamiento del producto por el cual están pagando. Estas pruebas son ejecutadas inmediatamente antes del lanzamiento final de la aplicación. En la actualidad, las versiones beta son frecuentemente distribuidas hacia un extenso público, a través de Internet. Esto se realiza típicamente con el ánimo de generar publicidad, ofreciendo un adelanto de los servicios que la aplicación ofrecerá; el efecto colateral de esta actividad es en parte, lograr que el usuario potencial del software se familiarice con su interfaz y funcionalidad, de manera que en el futuro, se convierta en un fuerte candidato para la compra de las versiones mejoradas del producto.

 

A modo de síntesis, las pruebas alfa se constituyen como la primera fase del período de pruebas, mientras que las pruebas beta delimitan la segunda fase del mismo.


Anexo D. Evidencia de correos intercambiados en la estimación de una alternativa de corrección.

 

 

Figura 9. Correos intercambiado en la estimación de una alternativa de corrección

 

 

 

Fuente documental: autora del proyecto


Anexo E. Documentación de las correcciones implementadas

 

 

Las diferencias entre la totalidad de clases originales y corregidas (sin reestructuración de arquitectura), se exponen en el Anexo F.

 

Las diferencias entre la totalidad de los archivos de internacionalización (i18n) originales y corregidos, se exponen en el Anexo G.

 

Las diferencias entre la totalidad de clases originales y corregidas (con reestructuración de arquitectura), se exponen en el Anexo H.

 

 

Correcciones a fallas:

 

Tabla 21. Correcciones implementadas a nivel de fallas

 

 

Falla

 

Corrección

 

 

Clase afectada

 

Líneas de código afectadas

 

Independientemente de cómo estén configuradas en la máquina local, las características regionales de: idioma, país, fecha y hora, aparecen sólo en inglés.

 

 

 

La fecha y hora aparecen en pantalla dependiendo de cómo estén configuradas en la máquina local, las características regionales de: idioma, país, fecha y hora.

 

Usuarios

Exam

Gradebook

Scores

 

 

 

148 a 167

162 a 183

240 a 258

61 a 78

 

 

El Administrador se puede borrar a sí mismo de la base de datos de usuarios del prototipo. Esta falla se genera si, estando en la sesión de Administrador, se accede a la sección “Usuarios” y se eliminan todos los usuarios que aparecen en pantalla.

 

 

 

El sistema Eledge no debe permitir que los usuarios de tipo Administrador se borren a sí mismos y/o a otros Administradores, de la base de datos. El Administrador debe borrarse de la base de datos a través del sistema de gestión de la base de datos ‘Eledge’.

 

 

Usuarios

 

200 a 218

 

 

 

El permiso “Condicional” para ver los correos de los usuarios no está funcionando: al asignarse este nivel de permiso a un profesor que sí tiene estudiantes asignados, a éste no le aparecen los correos de tales estudiantes.

 

 

Al asignársele a un profesor - que sí tiene estudiantes en su curso X- el nivel de permiso “condicional” para ver correos, ahora sí le aparecen los correos de sus estudiantes del curso X.

 

El código corrector se ubica entre las líneas 208 y 243, de la clase ‘Email.java’.

 

 

Email

 

 

202 a 264

 

No salen las cuentas de correo de usuarios tipo ‘visitante’ ni ‘congelado’, dentro de la lista de correos de los cursos en los que éstos están inscritos.

 

 

Aparecen las cuentas de correo de usuarios tipo ‘visitante’ ni ‘congelado’, dentro de la lista de correos de los cursos en los que éstos están inscritos.

 

 

Email

 

72 a 83

94 a 110

 

Fuente documental: autora del proyecto


Correcciones a los Defectos a nivel del grado en que la Interfase GUI posibilita la funcionalidad de Eledge:

 

Defecto:

 

·        Interfase poco intuitiva en cuanto al orden de pasos que el usuario ha de seguir para realizar determinada acción y usar las opciones de Eledge.

 

Correcciones implementadas:

 

Tabla 22. Correcciones implementadas a  los Defectos a nivel del grado en que la Interfase GUI posibilita la funcionalidad de Eledge.

 

 

Clase

 

Archivo i18n

 

Corrección implementada

 

Calendar

CalendarResourceBundle

·        Adición de:

 

str_bar1=Página de Inicio

 

str_bar2=>> Agenda

 

str_noAutho=Sin Autorización

 

str_noAuthoMsg1=Lo sentimos, pero no es un usuario registrado y no puede acceder a esta opción. Regístrese entrando a "Registrar Usuario".

 

str_noAuthoMsg2=Si olvido la contraseña, entre a "Registrar Usuario". Si no puede, contacte a su docente o administrador.

str_noAuthoMsg3=Muchas Gracias.

 

str_goCurrMonth=Ir al mes actual

 

str_ContrPanel=Panel de control

 

str_help = Ayuda

 

str_calendar_title = Agenda para:

 

 

CalendarResourceBundle_en

·        Adición de:

 

str_bar1=Home

 

CharHider

CharHiderResourceBundle

·        Creación del archivo ‘CharHiderResourceBundle’, dentro del conjunto de archivos de internacionalización de las interfases de Eledge

 

·        Adición de:

 

str_servlet_info=Este modulo servlet de Eledge es usado para reemplazar los caracteres enmarcados con comilla sencilla, con su equivalente en cadena de caracteres (para introducir cadenas de caracteres en la base de datos), o con su caracter especial equivalente en HTML (para  incluir comillas sencillas en elementos de formularios web).

 

CharHiderResourceBundle_en

·        Creación del archivo ‘CharHiderResourceBundle_en’, dentro del conjunto de archivos de internacionalización de las interfases de Eledge

 

·        Adición de:

 

str_servlet_info=This Eledge servlet module is used to replace single quotation mark characters with the string literal equivalent (for entering strings into the database) or with the HTML special character equivalent (for including single quotes in web form elements).

 

Content

ContentResourceBundle

·        Adición de:

 

str_bar1=Página de Inicio

 

str_courseCont=>> Contenido del Curso

 

str_themeCont=Contenido del tema

 

 

 

str_theme=Tema

 

 

 

 

str_themList=Lista de temas disponibles del curso

 

 

 

str_selecThem=Seleccione el tema del curso que guste, y de clic en Ingresar o sobre el título del tema.

 

 

 

str_toNavig= Para navegar por el contenido del tema, use los bótones Atras y Siguiente.

 

 

 

str_toEdit= Para Editar o Agregar una nueva página, de clic en Editar/Añadir Nueva Página.

 

 

 

str_toRemove= Si desea eliminar la página actual, de clic en Eliminar.

 

 

 

str_toEditThem=Para editar el título del tema o la breve descripción del tema, de clic en Editar

 

 

 

str_toRemThem=Si desea eliminar el tema con sus respectivos contenidos por completo, de clic en Eliminar.

 

 

 

str_entThem=Ingresar

 

 

 

str_ediThem=Editar

 

 

 

str_toRemoveBtn=Eliminar

 

 

 

str_toEditBtn=Editar/Añadir Nueva Página

 

 

 

str_nextBtn=Siguiente>

 

 

 

str_previBtn=<Atrás

 

EledgeResources

 

 

Implementación del método ‘getCharHiderBundle’, para la extracción del texto asignado a las variables del archivo ‘CharHiderResourceBundle’ creado para la internacionalización de la interfase de la clase CharHider:

 

public static RBStore getCharHiderBundle()

{

            RBStore rb= new RBStore();

   rb.setBaseName("CharHiderResourceBundle");

     

return rb;

}

 

Help

 

HelpResourceBundle

·        Adición de:

 

str_help10_text =La primera persona que registra una {0}Nueva Cuenta de Estudiante{1} en el curso adquiere el rol de coordinador/a del mismo, y se le asignan privilegios para añadir contenidos al curso, ver puntuaciones, y asignar a otros su mismo rol o el que desee (en el servlet Lista de la Clase). Una vez que haya entrado como Coordinador/a, haga click en el enlace {0}Sólo para el/la Coordinador{1} de la Página Principal para {0}Gestionar el Curso{1}. Elija ahí las características apropiadas para su curso y los enlaces de navegación que desee. Visite posteriormente los enlaces y use los enlaces {0}Sólo para el/la Coordinador{1} de estas páginas para comenzar a añadir contenido al curso (páginas web, tareas, pruebas, exámenes, deberes, calendario de eventos, etc...).

 

str_help10_title = Para uso del Administrador y/o Profesor

 

Home

HomeResourceBundle

·        Eliminación y traslado de lo siguiente, hacia HelpResourceBundle:

 

 

 

str_home2_text=La primera persona que registra una {0}Nueva Cuenta de Estudiante{1} en el curso adquiere el rol de coordinador/a del mismo, y se le asignan privilegios para añadir contenidos al curso, ver puntuaciones, y asignar a otros su mismo rol o el que desee (en el servlet Lista de la Clase). Una vez que haya entrado como Coordinador/a, haga click en el enlace {0}Sólo para el/la Coordinador{1} de la Página Principal para {0}Gestionar el Curso{1}. Elija ahí las características apropiadas para su curso y los enlaces de navegación que desee. Visite posteriormente los enlaces y use los enlaces {0}Sólo para el/la Coordinador{1} de estas páginas para comenzar a añadir contenido al curso (páginas web, tareas, pruebas, exámenes, deberes, calendario de eventos, etc...).

                       

str_home2_title= Para uso del Administrador y/o Profesor

 

a ‘HelpResourceBundle’ con los nombres: ‘str_help10_text’ y ‘str_help10_title’, respectivamente

 

 

 

·        Adición de:

 

str_home0_title=Bienvenida/o

 

 

str_home0_texta=Por favor agregue esta página a sus Marcadores para que le resulte más sencillo volver a ella en el futuro. Dése cuenta, que la URL es sensible a mayúsculas y minúsculas y debe teclearse exactamente como se le muestra más arriba.

 

str_home0_textb=Debe entrar siempre por esta página al sitio web, puesto que las noticias se envíaran aquí.

 

str_home1_title= Cuenta de Usuario

 

str_home1_text=Si esta es su primera visita a este sitio web y es usted un/a estudiante, profesor o ayudante, haga click, por favor en el enlace {0}Cuenta de Usuario{1} de la barra de navegación para registrar una {0}nueva cuenta de usuario{1} en la clase.

 

 

 

str_db_created_ok=La base de datos de la clase se creó correctamente.

 

 

Fuente documental: autora del proyecto


Defecto:

 

·        El código del 65% de las clases de Eledge incluye directamente texto a desplegar a nivel de interfase GUI; es decir, éste no es capturado de los archivos de Eledge que contienen texto en diferentes idiomas (archivos tipo properties). Por tanto, no aparece en pantalla el texto correspondiente al idioma configurado en la máquina, sino el incluido directamente en el código de tales clases, el cual No es internacionalizable debido a que siempre aparecerá en pantalla sin tener en cuenta el idioma configurado en la máquina.

 

Correcciones implementadas:

 

·        Se crearon variables por cada fragmento de texto que se despliega de manera continua (o secuencial) en la pantalla.

 

·        Se implementaron, dentro del archivo de internacionalización de cada una de las clases que constituyen tal porcentaje (65%), las correspondientes asignaciones ‘variable = fragmento de texto’. (Se toman estos ‘fragmentos de texto’ como los fragmentos de texto continuo que directamente se incluyen dentro del código del 65% las clases)

 

·        Se crearon, para cada una de las clases que constituyen tal porcentaje (65%), métodos que reciben como argumentos los nombres de cada una de esas variables, para que capturen el texto almacenado en tales archivos 

 

·        Se reorganizó el código de tal porcentaje de clases, de manera que éstas invoquen los métodos que capturan el texto de tales archivos, cada vez que éstas requieran la presencia de ese texto

 

Los resultados de estas correcciones se exponen de manera detallada en los Anexos F y G.


Correcciones a los Defectos a nivel de Reestructuración de Arquitectura de Código:

 

Defectos:

 

·        La arquitectura del código  que gestiona las interfases de Eledge (Html y JavaScript) posee un alto grado de acoplamiento y un bajo grado de cohesión con respecto al código que gestiona la lógica (Java Servlets) y la interacción con la base de datos (Sql). Este defecto dificulta el mantenimiento y la escalabilidad (incorporación de nueva funcionalidad) a niveles de interfase y lógica de Eledge.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de un solo tipo, es 21 %.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de dos tipos, es 18,5%.

 

·        El porcentaje de clases que simultáneamente desempeñan funciones de tres tipos, es 60,5%.

 

·        Existe redundancia de código entre diferentes clases.

 

Correcciones implementadas:

 

Trasladar las instrucciones que manejan el despliegue de interfases, de las clases que desempeñan más de un tipo de función (en términos de Interfase, Control y Entidad), hacia nuevas clases creadas, de manera que estas últimas implementen métodos dedicados exclusivamente al despliegue de interfases, los cuales sean invocados por parte de las clases que originalmente desplegaban tales interfases de manera altamente acoplada con funciones de tipo Control y Entidad.

Tabla 23. Correcciones implementadas a los Defectos a nivel de Reestructuración de Arquitectura de Código.

 

 

Clase original

 

 

Tipos de funciones de la clase original

 

Clase corregida

 

 

 

Tipos de funciones de la clase corregida

 

Clase creada

 

 

Tipos de funciones de la clase creada

 

 

Student

(631 líneas)

 

Interfase y Entidad

 

Student

(664 líneas)

 

 

Entidad

 

StudentInterfase

(120 líneas)

 

 

Interfase

 

Calendar

(794 líneas)

 

 

Interfase, Control y Entidad

 

Calendar

(805 líneas)

 

 

Control y Entidad

CalendarInterfase

(863 líneas)

 

Interfase

 

Content

(471 líneas)

 

 

Interfase, Control y Entidad

 

 

Content

(538 líneas)

 

 

Control y Entidad

 

ContentInterfase

(460 líneas)

 

Interfase

 

 

 

 

CharHider

(126 líneas)

 

 

Interfase y Control

 

CharHider

(155 líneas)

 

 

Control

 

CharHiderInterfase

(93 líneas)

 

 

Interfase

 

ContentPacking

(507 líneas)

 

 

Interfase, Control y Entidad

 

 

ContentPacking

(485 líneas)

 

 

Control y Entidad

 

ContentPackingInterfase

(334 líneas)

 

 

Interfase

 

Cursos

(196 líneas)

 

 

Interfase, Control y Entidad

 

 

Cursos

(200 líneas)

 

 

 

Control y Entidad

CursosInterfase

(155 líneas)

 

Interfase

 

DiscussionBoard

(1300 líneas)

 

 

Interfase, Control y Entidad

 

 

DiscussionBoard

(1453 líneas)

 

 

Control y Entidad

 

DiscussionBoardInterfase

(1070 líneas)

 

 

Interfase

 

 

Fuente documental: autora del proyecto


Anexo F. Diferencias entre las clases originales y corregidas (sin reestructuración de arquitectura)

 

 

Este anexo contiene una muestra representativa del trabajo elaborado para dar a conocer detalladamente las diferencias entre las clases originales y corregidas, sin reestructuración de arquitectura. El contenido completo de este trabajo se encuentra disponible en el CD del presente proyecto.

 

Convenciones a utilizar en las tablas contenidas en este anexo:

 

Tabla 24. Convenciones del anexo F

 

 

Color

 

Significado

 

Negro

Contenido Exacto

 

Rojo

Contenido Diferente

 

Azul

Contenido que no existe en el otro lado (en el otro archivo)

 

 

 

Fuente documental: autora del proyecto


COMPARACIÓN DE ARCHIVO
Fecha:03/11/2005 11:36:31 a.m.
   
Modo:  Todas las Líneas  
   
Archivo Izquierdo: CodigoOriginal\Exam.java  
Archivo Derecho: CodigoModificado\Exam.java  

                                                                                  

 

Tabla 25. Muestra representativa del trabajo elaborado para dar a conocer detalladamente las diferencias entre las clases originales y corregidas, sin reestructuración de arquitectura.

 

 

1

package Eledge;  // this tells the java compiler and servlet engine how to name each servlet

=

3

package Eledge;  // this tells the java compiler and servlet engine how to name each servlet

2

import java.io.*;

 

4

import java.io.*;

3

import java.sql.*;

 

5

import java.sql.*;

4

import java.util.*;

 

6

import java.util.*;

5

import java.util.Calendar;

 

7

import java.util.Calendar;

6

import java.util.Date;

 

8

import java.util.Date;

7

import java.text.SimpleDateFormat;

 

9

import java.text.SimpleDateFormat;

8

import javax.servlet.http.*;

 

10

import javax.servlet.http.*;

9

import javax.servlet.*;

 

11

import javax.servlet.*;

10

import java.text.MessageFormat;

 

12

import java.text.MessageFormat;

 

 

<> 

13

import java.util.Locale;

 

 

 

14

import java.text.DateFormat;

59

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> Examenes</em><br><br>"+res.getString("str_account_frozen").concat(res.getString("str_contact_instructor")),student));

<> 

66

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Página de Inicio</a> >> Exámenes</em><br><br>"+res.getString("str_account_frozen").concat(res.getString("str_contact_instructor")),student));

68

        out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> Examenes</em><br><br>"+err.toString(),student));

<> 

75

        out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Página de Inicio</a> >> Exámenes</em><br><br>"+err.toString(),student));

80

    out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> Examenes</em><br><br>"+examSelectForm(student),student));

<> 

87

    out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Página de Inicio</a> >> Exámenes</em><br><br>"+examSelectForm(student),student));

94

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> Examenes</em><br><br>"+res.getString("str_account_frozen").concat(res.getString("str_contact_instructor")),student));

<> 

101

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Página de Inicio</a> >> Exámenes</em><br><br>"+res.getString("str_account_frozen").concat(res.getString("str_contact_instructor")),student));

102

        out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> <a href='"+Course.name+".Exam'>Examenes</a> >> Examen Error</em><br><br>"+err.toString(),student));

<> 

109

        out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Página de Inicio</a> >> <a href='"+Course.name+".Exam'>Exámenes</a> >> Error </em><br><br>"+err.toString(),student));

113

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> Examenes</em><br><br>"+examSelectForm(student),student));

<> 

120

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Página de Inicio</a> >> Exámenes</em><br><br>"+examSelectForm(student),student));

122

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> <a href='"+Course.name+".Exam'>Examenes</a> >> No Examen</em><br><br>"+res.getString("str_select_valid_exam"),student));

<> 

129

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Página de Inicio</a> >> <a href='"+Course.name+".Exam'>Exámenes</a> >> No existe el Examen</em><br><br>"+res.getString("str_select_valid_exam"),student));

128

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> <a href='"+Course.name+".Exam'>Examenes</a> >> "+getExamTitle(assignmentNumber)+"</em><br><br>"+printExam(student,assignmentNumber,request.getRemoteAddr()),student));

<> 

135

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Página de Inicio</a> >> <a href='"+Course.name+".Exam'>Exámenes</a> >> "+getExamTitle(assignmentNumber)+"</em><br><br>"+printExam(student,assignmentNumber,request.getRemoteAddr()),student));

135

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> <a href='"+Course.name+".Exam'>Examenes</a> >> "+getExamTitle(assignmentNumber)+"</em><br><br>"+gradeExam(student,assignmentNumber,possibleScore,code,request),student));

<> 

142

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Página de Inicio</a> >> <a href='"+Course.name+".Exam'>Exámenes</a> >> "+getExamTitle(assignmentNumber)+"</em><br><br>"+gradeExam(student,assignmentNumber,possibleScore,code,request),student));

139

    out.println("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> <a href='"+Course.name+".Exam'>Examenes</a> >> Examen Error</em><br><br>"+Page.create(res.getString("str_dont_understand"),student));

<> 

146

    out.println("<em class='bar-body'><a href='"+Course.name+".Home'>Página de Inicio</a> >> <a href='"+Course.name+".Exam'>Exámenes</a> >> Error</em><br><br>"+Page.create(res.getString("str_dont_understand"),student));

145

    SimpleDateFormat df = new SimpleDateFormat("MMM dd, yyyy h:mm a"); //i18n sensible?

 

153

    //SimpleDateFormat df = new SimpleDateFormat("MMM dd, yyyy h:mm a"); //i18n sensible?

 

 

 

154

    //La variable df se reemplazó por 'fullDateFormatCO, de tipo DateFormat

 

 

 

158

    // Get the current system date and time.

147

    Date now = new Date();

 

159

        Date date = new Date();

 

 

 

162

        /*  SV

 

 

 

163

        // Create an Spanish/Colombia locale using the constructor.

 

 

 

164

           Locale localeES = new Locale("es", "CO" );

 

 

 

166

                Corrección: desplegar la fecha y hora en el formato determinado por el locale configurado en la máquina local.

 

 

 

168

        SV */ 

 

 

 

170

        //Inicio de la Corrección

 

 

 

172

                Locale locale = Locale.getDefault();

 

 

 

174

        // Get a date time formatter for display in Colombia

 

 

 

175

        DateFormat fullDateFormatCO =

 

 

 

176

            DateFormat.getDateTimeInstance(

 

 

 

177

            DateFormat.FULL,

 

 

 

178

            DateFormat.FULL,

 

 

 

179

            locale);

148

    buf.append("<br>" + df.format(now));

 

181

    buf.append("<br>" + fullDateFormatCO.format(date));

 

 

 

183

    //Fin de la Corrección

195

        if (deadline.before(now))  // this is an expired exam

<> 

232

        if (deadline.before(date))  // this is an expired exam

209

          if (allowWorkAhead || available.before(now) || student.getIsInstructor()) {

<> 

246

          if (allowWorkAhead || available.before(date) || student.getIsInstructor()) {

227

        buf.append("\n<td>" +  df.format(deadline) + "</td>");

<> 

264

        buf.append("\n<td>" +  fullDateFormatCO.format(deadline) + "</td>"); 

284

    Calendar now = Calendar.getInstance();

<> 

324

    Calendar date = Calendar.getInstance();

295

        if (!now.after(then)) {  // not yet eligible for new exam

<> 

335

        if (!date.after(then)) {  // not yet eligible for new exam

296

          out.println(Page.create(mf.format(mfArgs).concat(res.getString("str_exam_dlInterval")).concat("<br>").concat(res.getString("str_current_time")).concat(now.getTime().toString()).concat("<br>").concat(res.getString("str_next_exam_availability")).concat(then.getTime().toString()).concat("<hr>").concat(res.getString("str_exam_dlTip")),student));

 

336

          out.println(Page.create(mf.format(mfArgs).concat(res.getString("str_exam_dlInterval")).concat("<br>").concat(res.getString("str_current_time")).concat(date.getTime().toString()).concat("<br>").concat(res.getString("str_next_exam_availability")).concat(then.getTime().toString()).concat("<hr>").concat(res.getString("str_exam_dlTip")),student));

298

        returnValue = now.after(then);

<> 

338

        returnValue = date.after(then);

320

    SimpleDateFormat df = new SimpleDateFormat("MMM dd, yyyy h:mm a"); //i18n sensible?

 

362

    //SimpleDateFormat df = new SimpleDateFormat("MMM dd, yyyy h:mm a"); //i18n sensible?

 

 

 

363

    //La variable df se reemplazó por 'fullDateFormatCO, de tipo DateFormat

 

 

 

371

    //Date now = new Date();

325

    Date now = new Date();

 

372

    Date date = new Date();

 

 

 

374

    // Create an Spanish/Colombia locale using the constructor.

 

 

 

375

        Locale localeES = new Locale("es", "CO" );

 

 

 

378

    DateFormat fullDateFormatCO =

 

 

 

379

            DateFormat.getDateTimeInstance(

 

 

 

380

            DateFormat.FULL,

 

 

 

381

            DateFormat.FULL,

 

 

 

382

            localeES);

326

    buf.append("<br>" + df.format(now));

 

385

    buf.append("<br>" + fullDateFormatCO.format(date));

474

    SimpleDateFormat df = new SimpleDateFormat("MMM dd, yyyy h:mm a"); //i18n sensible?

 

535

    //SimpleDateFormat df = new SimpleDateFormat("MMM dd, yyyy h:mm a"); //i18n sensible?

 

 

 

536

    //La variable df se reemplazó por 'fullDateFormatCO, de tipo DateFormat

 

 

 

538

    // Create an Spanish/Colombia locale using the constructor.

 

 

 

539

        Locale localeES = new Locale("es", "CO" );

 

 

 

541

    DateFormat fullDateFormatCO =

 

 

 

542

            DateFormat.getDateTimeInstance(

 

 

 

543

            DateFormat.FULL,

 

 

 

544

            DateFormat.FULL,

 

 

 

545

            localeES);

479

    Date now = new Date();

<> 

550

    Date date = new Date();

480

    buf.append("<br>" + df.format(now));

 

551

    buf.append("<br>" + fullDateFormatCO.format(date));

920

    Date now = new Date();

<> 

991

    Date date = new Date();

922

    log.paranoid("now.getTime() yields: " + now.getTime(),"Exam:elapsedMinutes");

<> 

993

    log.paranoid("date.getTime() yields: " + date.getTime(),"Exam:elapsedMinutes");

924

    long elapsedMilliseconds = now.getTime() - dateTaken.getTime();

<> 

995

    long elapsedMilliseconds = date.getTime() - dateTaken.getTime();

964

    Date now = new Date();

<> 

1035

    Date date = new Date();

1137

      buf.append("<table border=1 cellspacing=0><thead><b>Exams</b></thead>");

<> 

1208

      buf.append("<table border=1 cellspacing=0><thead><b>Exámenes</b></thead>");

 

Fuente documental: autora del proyecto


Anexo G. Diferencias entre los archivos de internacionalización (i18n) originales y corregidos

 

 

Este anexo contiene una muestra representativa del trabajo elaborado para dar a conocer detalladamente las diferencias entre los archivos de internacionalización originales y corregidos. El contenido completo de este trabajo se encuentra disponible en el CD del presente proyecto.

 

 

Convenciones a utilizar en las tablas contenidas en este anexo:

 

Tabla 26. Convenciones del anexo G

 

 

Color

 

Significado

 

Negro

Contenido Exacto

 

Rojo

Contenido Diferente

 

Azul

Contenido que no existe en el otro lado (en el otro archivo)

 

 

 

Fuente documental: autora del proyecto


COMPARACIÓN DE ARCHIVO
Fecha:06/11/2005 10:32:09 a.m.
   
Modo:  Todas las Líneas  
   
Archivo Izquierdo: ArchivosOriginales\i18n\HelpResourceBundle.properties  
Archivo Derecho: ArchivosModificados\i18n\HelpResourceBundle.properties

 

 

Tabla 27. Muestra representativa del trabajo elaborado para dar a conocer detalladamente las diferencias entre los archivos de internacionalización originales y corregidos

 

 

2

str_help2_text=Haga click en el enlace Mi Cuenta en la barra de navegación y entre en el sistema, si es necesario. Edite el formulario que contiene la información que corresponde a su cuenta. Una vez haya terminado, haga click en el botón Envíar para guardar los cambios que haya realizado.

<> 

2

str_help2_text=Haga clic en la opción "Registrar Usuario" de la barra de navegación superior. Diligencie el formulario que contiene la información que corresponde a su cuenta. Una vez haya terminado, haga clic en el botón Envíar para guardar los cambios que haya realizado.

5

str_help3_text=Haga click en el enlace Mi Cuenta en la barra de navegación y entre en el sistema, si es necesario. Edite el formulario que contiene la información que corresponde a su cuenta. Una vez haya terminado, haga click en el botón Envíar para guardar los cambios que haya realizado.

<> 

5

str_help3_text=Haga clic en el enlace Mi Cuenta en la barra de navegación y entre en el sistema, si es necesario. Edite el formulario que contiene la información que corresponde a su cuenta. Una vez haya terminado, haga clic en el botón Envíar para guardar los cambios que haya realizado.

10

str_help5_text=Haga click en el enlace Mi Cuenta en la barra de navegación e introduzca su número de identificación de estudiante en el formulario titulado Recuperar Contraseña .  Se le formulará la pregunta que introdujera en el apartado Pregunta Secreta cuando creó su cuenta. Si su respuesta es correcta, se le mostrará su contraseña. Si es capaz de entrar en el sistema aunque haya olvidado su contraseña (p.ej. usando un cookie de entrada) podrá editar su cuenta para fijar una contraseña nueva.

<> 

10

str_help5_text=Haga clic en el enlace Mi Cuenta en la barra de navegación e introduzca su número de identificación de estudiante en el formulario titulado Recuperar Contraseña .  Se le formulará la pregunta que introdujera en el apartado Pregunta Secreta cuando creó su cuenta. Si su respuesta es correcta, se le mostrará su contraseña. Si es capaz de entrar en el sistema aunque haya olvidado su contraseña (p.ej. usando un cookie de entrada) podrá editar su cuenta para fijar una contraseña nueva.

12

str_help6_text=Las contraseñas son sensibles a mayúsculas y minúsculas, asegúrese, por tanto, de que las está tecleando con exactitud. Asegúrese, igualmente, de que la tecla de Activar Mayúsculas de su teclado no se ha pulsado por error. Si estos consejos no sirven, haga click  en el enlace Mi Cuenta en la barra de navegación  siga las instrucciones para recuperar una contraseña que se haya perdido.

<> 

12

str_help6_text=Las contraseñas son sensibles a mayúsculas y minúsculas, asegúrese, por tanto, de que las está tecleando con exactitud. Asegúrese, igualmente, de que la tecla de Activar Mayúsculas de su teclado no se ha pulsado por error. Si estos consejos no sirven, haga clic  en el enlace Mi Cuenta en la barra de navegación  siga las instrucciones para recuperar una contraseña que se haya perdido.

14

str_help7_text=Haga click en el enlace Puntuaciones en la barra de navegación. Las puntuaciones que se le mostrarán en una tabla son las que se utilizan para determinar su puntuación global en el curso.

<> 

14

str_help7_text=Haga clic en el enlace Puntuaciones en la barra de navegación. Las puntuaciones que se le mostrarán en una tabla son las que se utilizan para determinar su puntuación global en el curso.

17

str_help0_text=Si está experimentando problemas al navegar por este sitio, revise por favor las siguientes Preguntas Frecuentes. Puede ser que encuentre ahí respuestas a los problemas que ha tenido. Use la función Encontrar Texto de su navegador para buscar en la página la palabra clave que represente su problema. Si aún así, no encuentra solución, envíe un email al/la coordinador. Si cree que se ha producido un bug (error) en el programa recopile toda la información posible sobre el mismo y realice un informe de bug con Sistema de Aprendizaje Abierto Eledge.

<> 

17

str_help0_text=Si está experimentando problemas al navegar por el sistema, por favor revise las siguientes "Preguntas Frecuentes". Aquí puede encuentrar respuestas a los problemas que ha tenido. Use la función "Encontrar Texto" de su navegador para buscar en la página la palabra clave que represente su problema. Si aún así, no encuentra solución, envíe un correo electrónico al Administrador del sistema.

19

str_help1_text=Haga click en el enlace Mi cuenta en la barra de navegación y siga las instrucciones para Crear una Cuenta Nueva de Estudiante.

<> 

19

str_help1_text=Haga clic en el enlace Mi cuenta en la barra de navegación y siga las instrucciones para Crear una Cuenta Nueva de Estudiante.

 

 

 

23

str_help10_title=Para uso del Administrador y/o Profesor

 

Fuente documental: autora del proyecto


Anexo H. Diferencias entre las clases originales y corregidas

(con reestructuración de arquitectura)

 

 

Este anexo contiene una muestra representativa del trabajo elaborado para dar a conocer detalladamente las diferencias entre las clases originales y corregidas, con reestructuración de arquitectura. El contenido completo de este trabajo se encuentra disponible en el CD del presente proyecto.

 

 

Convenciones a utilizar en las tablas contenidas en este anexo:

 

Tabla 28. Convenciones del anexo H

 

 

Color

 

Significado

 

Negro

Contenido Exacto

 

Rojo

Contenido Diferente

 

Azul

Contenido que no existe en el otro lado (en el otro archivo)

 

 

 

Fuente documental: autora del proyecto


COMPARACIÓN DE ARCHIVO
Fecha:03/11/2005 01:03:35 p.m.
   
Modo:  Todas las Líneas  
   
Archivo Izquierdo: CodigoOriginal\Clases\Calendar.java  
Archivo Derecho: CodigoModificado\Calendar.java  

 

 

Tabla 29. Muestra representativa del trabajo elaborado para dar a conocer detalladamente las diferencias entre las clases originales y corregidas, con reestructuración de arquitectura.

 

 

13

package Eledge;  // this tells the java compiler and servlet engine how to name each servlet

 

13

package Eledge;  // this tells the java compiler and servlet engine how to name each servlet

14

import java.io.*;

 

14

import java.io.*;

15

import java.sql.*;

 

15

import java.sql.*;

16

import java.util.*;

 

16

import java.util.*;

17

import java.text.*;

 

17

import java.text.*;

18

import javax.servlet.http.*;

 

18

import javax.servlet.http.*;

19

import javax.servlet.*;

 

19

import javax.servlet.*;

20

import java.text.MessageFormat;

 

20

import java.text.MessageFormat;

22

public class Calendar extends HttpServlet {

=

23

public class Calendar extends HttpServlet {

23

       

 

24

       

24

  private RBStore res = EledgeResources.getCalendarBundle();

 

25

  private RBStore res = EledgeResources.getCalendarBundle();

 

 

 

27

  CalendarInterfase interfase = new CalendarInterfase();

27

  protected String titleBar = Course.name + " " +res.getString("str_calendar_title"); // label shown on the top bar of the Calendar

<> 

31

 

28

  protected String cTFontsColor = "#000000";  // black

 

 

 

29

  protected String cTopBarColor = "#B0D8FF";  // Eledge sandstone

 

 

 

30

  protected String cDayBarColor = "#B0D8FF";  // Eledge sandstone

 

 

 

31

  protected String cOutDayColor = "#DDDDDD";  // gray

 

 

 

32

  protected String cTodaysColor = "#D0D0D0";  // lighter gray

 

 

 

33

  protected String cBGCellColor = "#FFFFFF";  // white

 

 

 

34

  protected String cDtFontColor = "#000000";  // black

 

 

 

35

  protected String timeFormat = "HH:mm";  // use "HH:mm" for 24-hr format or "h:mma" for 12-hr AM/PM format

 

 

 

36

  protected String dateFormat = "M/d/yy"; // or may changed to some other form such as "d-M-yyyy"

 

 

 

42

  protected SimpleDateFormat dfTimeField = new SimpleDateFormat(timeFormat);

<> 

37

 

43

  protected SimpleDateFormat dfDateField = new SimpleDateFormat(dateFormat);

 

38

 

44

  SimpleDateFormat dfMonthYear = new SimpleDateFormat("MMMM yyyy");  // used for the title bar

 

 

 

45

  SimpleDateFormat dfMonthName = new SimpleDateFormat("MMMM");       // used for next/last month navigation

 

 

 

46

  SimpleDateFormat dfMySQLDate = new SimpleDateFormat("yyyy-MM-dd"); // matches format used by MySQL database

 

 

 

47

  SimpleDateFormat dfMySQLTime = new SimpleDateFormat("HH:mm");       //format used by MySQL database

 

 

 

48

  SimpleDateFormat dfDayOfMonth = new SimpleDateFormat("d");         // used for writing date numerals in the calendar

 

 

 

49

  String time0000 = dfTimeField.format(new java.util.Date(25200000));  // 00:00 (beginning of day in local time format)

 

39

  String time0000 = interfase.dfTimeField.format(new java.util.Date(25200000));  // 00:00 (beginning of day in local time format)

50

  String time2359 = dfTimeField.format(new java.util.Date(111540000)); // 23:59 (end of day in local time format)

 

40

  String time2359 = interfase.dfTimeField.format(new java.util.Date(111540000)); // 23:59 (end of day in local time format)

76

        out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> Agenda</em><br><br>"+

<> 

 

 

77

        "<head><title>Sin Autorización</title></head>" +

 

 

 

78

        "<body>" +

 

68

   

79

        "<p>Lo sentimos, pero no es un usuario registrado y no puede acceder a esta opci&oacute;n.Registrese entrando a My Profiles.</p>" +

 

69

        //MÉTODO 1

80

        "<p>Si olvido la contrase&ntilde;a entre a My Profiles. Si no puede contacte a su docente o administrador.</p>" +

 

70

       

81

        "<p>Muchas Gracias.</p>"+

 

71

        interfase.noAuthoMsg(student, out);

82

        "</body></html>",student));

 

72

       

95

        out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> Agenda</em><br><br>"+err.toString(),student));

<> 

85

       

 

 

 

87

        //MÉTODO 2

 

 

 

89

        interfase.bar(err, student, out);

117

      out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> Agenda</em><br><br>"+res.getString("str_no_visitor"),student));

<> 

112

     

 

 

 

113

      //MÉTODO 3

 

 

 

115

      interfase.barNoVisitor( student, out );

125

        thisDate = dfDateField.parse(request.getParameter("date"));

<> 

124

        thisDate = interfase.dfDateField.parse(request.getParameter("date"));

129

        log.sparse("Caught: " + e.getMessage(),"Calendar:doGet");

 

129

                log.sparse("Caught: " + e.getMessage(),"Calendar:doGet");

130

        out.println(Page.create("<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> Agenda</em><br><br>"+res.getString("str_error_parse_date"),student));

 

130

       

 

 

 

131

        //MÉTODO 4

 

 

 

133

        interfase.barErrDate(student, out);

141

        "<em class='bar-body'><a href='"+Course.name+".Home'>Home</a> >> Agenda</em><br><br>"+tableHeader(thisMonth) + tableCells(thisMonth, student) + tableFooter(thisMonth),student));

 

145

           

 

Fuente documental: autora del proyecto


Anexo I. Diseño de plantillas de pruebas, documentación de los resultados de las pruebas, especificación de las fallas y las funciones a mejorar detectadas y especificación de los correspondientes requisitos de corrección y mejora

 

 

Este anexo contiene una muestra representativa del trabajo de diseño de plantillas de pruebas, documentación de los resultados de las pruebas, especificación de las fallas y las funciones a mejorar detectadas y especificación de los correspondientes requisitos de corrección y mejora. El contenido completo de este trabajo se encuentra disponible en el CD del presente proyecto.

 

 

El diligenciamiento de las plantillas para cada caso de prueba, se realizó teniendo en cuenta la secuencia presentada a continuación[13]:

 

1.      Registro y Apertura de una Sesión

2.      Acceso y Adición de Cursos

3.      Edición de Páginas Web

4.      Gestión de Usuarios

5.      Gestión y Uso de Exámenes

6.      Gestión y Uso de Foros

7.      Uso del Correo

8.      Uso de la Agenda

9.      Uso de la Ayuda

10. Gestión de Características de la Plataforma

 


CASO: REGISTRO Y APERTURA DE UNA SESIÓN

 

Propósito

 

Encontrar defectos de funcionalidad en las opciones que ofrece el prototipo para el registro de usuarios en su base de datos, y para el inicio y cierre de las sesiones de los mismos.

Prerrequisitos

Ninguno

 

1.      Acción:

o        Visitar http://fis.unab.edu.co:8081/LMS/Eledge/index.html

 

Respuesta esperada del sistema

 

 

      Resultado (Acertado /Fallido): Acertado

Respuesta del sistema (si resultó fallida):

 

2.      Acción:

o        Hacer clic en “Entrar”

 

Respuesta esperada del sistema

 

 

Resultado (Acertado /Fallido): Acertado

Respuesta del sistema (si resultó fallida):

 

3.      Acción:

  • Hacer clic en “Mi Perfil”
  • En la sección “Editar una Cuenta de Estudiante Existente”, hacer clic en “aquí”
  • En la sección “Crear una Cuenta Nueva de Estudiante”:

 

 

Validación con diferentes datos de cada una de las casillas que solicitan información.

 

 

 

CASILLA

 

DATO

 

ENVÍO DE DATO

 

RESPUESTA ESPERADA DEL SISTEMA

 

RESULTADO (Acertado / Fallido)

 

RESPUESTA DEL SISTEMA

(si resultó fallida)

 

Nombre de usuario

KDFDJS

 

 

 

 

Contraseña

DFDS

 

 

 

 

Confirmar contraseña

DFDS

 

 

 

 

Nombre

FSDA

 

 

 

 

Apellidos

 

 

 

 

 

Email

DFSSD

 

 

 

 

Pregunta secreta

DA

 

 

 

 

Respuesta secreta

#FASD

Hacer clic en “Enviar datos de cuenta de Studiante”

Error.

Falte parte de la información o es incorrecta. 

 

Debe introducir sus apelllidos.


Haga click en el enlace 'Cuenta' de la barra de navegación o en el botón 'Atrás' del navegador para volver a intentarlo.

Si ha creado ya una cuenta de estudiante debe entrar en el sistema con esa cuenta antes de intentar modificar los datos de la misma.

 

 

¿Qué el sw diga todos los datos que están erróneos de una vez o no?

Acertado

 

Nombre de usuario

KDFDJS

 

 

 

 

Contraseña

DFDS

 

 

 

 

Confirmar contraseña

DFDS

 

 

 

 

Nombre

FSDA

 

 

 

 

Apellidos

DFDS

 

 

 

 

Email

DFSSD

 

 

 

 

Pregunta secreta

DA

 

 

 

 

Respuesta secreta

#FASD

Hacer clic en “Enviar datos de cuenta de Studiante”

Error.

Falte parte de la información o es incorrecta. 

 

La dirección email que suministró no parece válida.


 Haga click en el enlace 'Cuenta' de la barra de navegación o en el botón 'Atrás' del navegador para volver a intentarlo.

 

Acertado

 

Nombre de usuario

KDFDJS

 

 

 

 

Contraseña

DFDS

 

 

 

 

Confirmar contraseña

DFDS

 

 

 

 

Nombre

FSDA

 

 

 

 

Apellidos

DFDS

 

 

 

 

Email

DFSSD@gmail.com

 

 

 

 

Pregunta secreta

DA

 

 

 

 

Respuesta secreta

#FASD

Hacer clic en “Enviar datos de cuenta de Studiante”

Si ha creado ya una cuenta de estudiante debe entrar en el sistema con esa cuenta antes de intentar modificar los datos de la misma.

Acertado

 

Nombre de usuario

KDFDJS

 

 

 

 

Contraseña

DFDSdd

 

 

 

 

Confirmar contraseña

DFDSdd

 

 

 

 

Nombre

FSDA

 

 

 

 

Apellidos

DFDS

 

 

 

 

Email

DFSSD@gmail.com

 

 

 

 

Pregunta secreta

DA

 

 

 

 

Respuesta secreta

#FASD

Hacer clic en “Enviar datos de cuenta de Studiante”

Error.

Falte parte de la información o es incorrecta. 

 

No parece que la contraseña sea válida.

 

Debe tener entre 6 y 12 caracteres y coincidir exactamente con la que haya introducido en el campo Confirmar.


Haga click en el enlace 'Cuenta' de la barra de navegación o en el botón 'Atrás' del navegador para volver a intentarlo.

Si ha creado ya una cuenta de estudiante debe entrar en el sistema con esa cuenta antes de intentar modificar los datos de la misma.

Acertado

 

Nombre de usuario

#FASD

 

 

 

 

Contraseña

DFDSdd

 

 

 

 

Confirmar contraseña

DFDSdd

 

 

 

 

Nombre

FSDA

 

 

 

 

Apellidos

DFDS

 

 

 

 

Email

DFSSD@gmail.com

 

 

 

 

Pregunta secreta

DA

 

 

 

 

Respuesta secreta

#FASD

Hacer clic en “Enviar datos de cuenta de Studiante”

Bienvenid@ al Eledge Espacio Web de la Clase

Se ha creado correctamente el nombre de usuario y la contraseña y ha entrado en el sistema como FSDA DFDS.
Haga click en cualquiera de los enlaces de la barra de navegación para empezar a trabajar en el curso.

Acertado

 

Nombre de usuario

#FASD

 

 

 

 

Contraseña

DFDSdd

 

 

 

 

Confirmar contraseña

DFDS

 

 

 

 

Nombre

FSDA

 

 

 

 

Apellidos

DFDS

 

 

 

 

Email

DFSSD@gmail.com

 

 

 

 

Pregunta secreta

DA

 

 

 

 

Respuesta secreta

#FASD

Hacer clic en “Enviar datos de cuenta de Studiante”

Error.

Falte parte de la información o es incorrecta. 

 

No parece que la contraseña sea válida.

 

Debe tener entre 6 y 12 caracteres y coincidir exactamente con la que haya introducido en el campo Confirmar.
 Haga click en el enlace 'Cuenta' de la barra de navegación o en el botón 'Atrás' del navegador para volver a intentarlo.

Si ha creado ya una cuenta de estudiante debe entrar en el sistema con esa cuenta antes de intentar modificar los datos de la misma.

Acertado

 

 

4.      Acción:

 

o        Hacer clic en “Logout”

o        Hacer clic en “Mi Perfil”

 

 

Validación con diferentes datos de cada una de las casillas que solicitan información.

 

 

 

CASILLA

 

DATO

 

ENVÍO DE DATO

 

RESPUESTA

ESPERADA

DEL SISTEMA

 

RESULTADO

(Acertado / Fallido)

 

RESPUESTA DEL

SISTEMA

(si resultó fallida)

 

Casilla adyacente a “Recuperar Contraseña”

Nombre de usuario con el que se creó una cuenta nueva de estudiante

Hacer clic en “Recuperar Contraseña”

 

Recuperación de Contraseña Perdida

Para acreditar su identidad teclee, por favor, la respuesta correcta a su pregunta secreta:

Acertado

 

Casilla adyacente a “Mostrar mi Contraseña”

La respuesta correcta a su pregunta secreta

Hacer clic en “Mostrar mi Contraseña”

 

Su contraseña es : (la contraseña con la que se creó la cuenta de estudiante)

Ha entrado en el sistema correctamente y puede continuar operando.

Acertado

 

 

Hacer clic en “Atrás” (en la barra de navegación del browser), Dos Veces

 

Casilla adyacente a “Recuperar Contraseña”

DFJDFEE

Hacer clic en “Recuperar Contraseña”

 

Recuperación de Contraseña Perdida

Para acreditar su identidad teclee, por favor, la respuesta correcta a su pregunta secreta:
El número de identificación del/la Estudiante no es válido: DFJDFEE

Acertado

 

 

Hacer clic en “Atrás” (en la barra de navegación del browser)

 

Casilla adyacente a “Recuperar Contraseña”

Nombre de usuario con el que se creó una cuenta nueva de estudiante

Hacer clic en “Recuperar Contraseña”

 

Recuperación de Contraseña Perdida

Para acreditar su identidad teclee, por favor, la respuesta correcta a su pregunta secreta:

Acertado

 

Casilla adyacente a “Mostrar mi Contraseña”

Un dato diferente de la respuesta correcta a su pregunta secreta

Hacer clic en “Mostrar mi Contraseña”

 

Su respuesta es incorrecta.

 

La respuesta debe coincidir exactamente con la que introdujo cuando creó su cuenta de estudiante.

 

Si no puede recordar su contraseña ni la respuesta secreta, debe hablar con el coordinador para que le asigne una nueva contraseña.

Acertado

 

 

5.      Acción:

  • Hacer clic en “Mi Perfil”

 

 

Validación con diferentes datos de cada una de las casillas que solicitan información.

 

 

CASILLA

 

DATO

 

ENVÍO DE DATO

 

RESPUESTA ESPERADA DEL SISTEMA

 

RESULTADO (Acertado / Fallido)

 

RESPUESTA DEL SISTEMA (si resultó fallida)

 

Pregunta secreta que nadie podría acertar salvo usted

Dato diferente del contenido actualmente en esta casilla.

 

 

 

 

Respuesta correcta a la pregunta secreta

Dato diferente del contenido actualmente en esta casilla.

Hacer clic en “Enviar datos de cuenta de estudiante”

 

Gracias.

Su cuenta de estudiante se ha actualizado adecuadamente.

Acertado

 

 

 

6.      Acción:

  • Hacer clic en “Mi Perfil”

 

Verificación de datos.

 

 

 

CASILLA

 

RESPUESTA ESPERADA DEL SISTEMA

 

RESULTADO (Acertado / Fallido)

 

RESPUESTA DEL SISTEMA (si resultó fallida)

 

Pregunta secreta que nadie podría acertar salvo usted

Valor introducido en esta casilla, la última vez (en la anterior tabla)

Acertado

 

Respuesta correcta a la pregunta secreta

Valor introducido en esta casilla, la última vez (en la anterior tabla)

Acertado

 

 

 

7.      Acción:

  • Hacer clic en “Logout”
  • Hacer clic en “Login”

 

 


Validación con diferentes datos de cada una de las casillas que solicitan información.

 

 

 

CASILLA

 

DATO

 

ENVÍO DE DATO

 

RESPUESTA ESPERADA DEL SISTEMA

 

RESULTADO (Acertado / Fallido)

 

RESPUESTA DEL SISTEMA

(si resultó fallida)

 

Nombre de Usuario

 

Nombre de usuario con el que se creó una nueva cuenta de estudiante.

 

 

 

 

 

Contraseña

 

(ningún dato)

Hacer clic en “Entrar ahora”

 

Entrada Fallida. Utilice el botón 'Atrás' de su navegador e inténtelo de nuevo.

Acertado

 

 

 

Hacer clic en “Atrás” (en la barra de navegación del browser)

 

Nombre de usuario

(ningún dato)

 

 

 

 

Contraseña

La contraseña con la que se creó una nueva cuenta de estudiante.

 

Hacer clic en “Entrar ahora”

 

Entrada Fallida. Utilice el botón 'Atrás' de su navegador e inténtelo de nuevo.

Acertado

 

Hacer clic en “Atrás” (en la barra de navegación del browser)

 

Nombre de Usuario

 

JJJJJJJ

 

 

 

 

 

 

 

Contraseña

 

JJJJJJJ

Hacer clic en “Entrar ahora”

 

Entrada Fallida. Utilice el botón 'Atrás' de su navegador e inténtelo de nuevo.

Acertado

 

Hacer clic en “Atrás” (en la barra de navegación del browser)

 

Nombre de Usuario

 

(ningún dato)

 

 

 

 

Contraseña

 

(ningún dato)

Hacer clic en “Entrar ahora”

 

Entrada Fallida. Utilice el botón 'Atrás' de su navegador e inténtelo de nuevo.

Acertado

 

Hacer clic en “Atrás” (en la barra de navegación del browser)

 

Nombre de Usuario

 

Nombre de usuario con el que se creó una nueva cuenta de estudiante.

 

 

 

 

 

Contraseña

 

La contraseña con la que se creó una nueva cuenta de estudiante.

 

Hacer clic en “Entrar ahora”

 

Bienvenida/o

 

Por favor agregue esta página a sus Marcadores para que le resulte más sencillo volver a ella en el futuro. Dése cuenta, que la URL es sensible a mayúsculas y minúsculas y debe teclearse exactamente como se le muestra más arriba.

Acertado

 

8.      Acción:

  • Hacer clic en “Logout”

 

 

Respuesta esperada del sistema

 

 

y luego (automáticamente):

 

 

Resultado (Acertado /Fallido): Acertado

Respuesta del sistema (si resultó fallida):

 

 

9.      Acción:

  • Hacer clic en “Mi Perfil”
  • En la sección “Editar una Cuenta de Estudiante Existente”, hacer clic en “aquí”

 


Validación con diferentes datos de cada una de las casillas que solicitan información.

 

 

 

CASILLA

 

DATO

 

ENVÍO DE DATO

 

RESPUESTA ESPERADA DEL SISTEMA

 

RESULTADO (Acertado / Fallido)

 

RESPUESTA DEL SISTEMA

(si resultó fallida)

 

Nombre de Usuario

El nombre de usuario con el que se creó una nueva cuenta de estudiante.

 

 

 

 

 

Contraseña

La contraseña con la que se creó una nueva cuenta de estudiante.

 

Hacer clic en “Entrar ahora”

 

Bienvenida/o

Por favor agregue esta página a sus Marcadores para que le resulte más sencillo volver a ella en el futuro. Dése cuenta, que la URL es sensible a mayúsculas y minúsculas y debe teclearse exactamente como se le muestra más arriba.

Acertado

 

 

 

10.  Acción:

  • Hacer clic en “Mi Perfil”

 


Verificación de datos.

 

 

 

CASILLA

 

RESPUESTA ESPERADA DEL SISTEMA

 

RESULTADO (Acertado / Fallido)

 

RESPUESTA

DEL

SISTEMA

(si resultó fallida)

 

Su nombre de usuario para este sitio

Nombre de usuario con el que se creó una nueva cuenta de estudiante

Acertado

 

Nombre

El nombre con el que se creó una nueva cuenta de estudiante

Acertado

 

Apellidos

Apellidos con los que se creó una nueva cuenta de estudiante

Acertado

 

Email

El Email con el que se creó una nueva cuenta de estudiante

Acertado

 

Pregunta secreta que nadie podría acertar salvo usted

La Pregunta secreta con la que se creó una nueva cuenta de estudiante

Acertado

 

Respuesta correcta a la pregunta secreta

La Respuesta con la que se creó una nueva cuenta de estudiante

Acertado

 

 

 

 

Validación con diferentes datos de cada una de las casillas que solicitan información.

 

 

 

CASILLA

 

DATO

 

ENVÍO DE DATO

 

RESPUESTA ESPERADA DEL SISTEMA

 

RESULTADO (Acertado / Fallido)

 

RESPUESTA DEL SISTEMA

(si resultó fallida)

 

Contraseña

Dato diferente del contenido actualmente en esta casilla.

 

 

 

 

 

Confirmar contraseña

El mismo dato introducido en la casilla “Contraseña”

Hacer clic en “Enviar datos de cuenta de Studiante”

 

Gracias.

Su cuenta de estudiante se ha actualizado adecuadamente

 

Acertado

 

 

11.  Acción:

 

o        Hacer clic en “Logout”

o        Hacer clic en “Login”

 

Validación con diferentes datos de cada una de las casillas que solicitan información.

 

 

 

CASILLA

 

DATO

 

ENVÍO DE DATO

 

RESPUESTA ESPERADA DEL SISTEMA

 

RESULTADO (Acertado / Fallido)

 

RESPUESTA

DEL

SISTEMA

(si resultó fallida)

 

Nombre de Usuario

Nombre de usuario con el que se creó una nueva cuenta de estudiante

 

 

 

 

Contraseña

La nueva contraseña de su cuenta de estudiante

Hacer clic en “Entrar ahora”

 

Bienvenida/o

 

Por favor agregue esta página a sus Marcadores para que le resulte más sencillo volver a ella en el futuro.

Acertado

 

Resultados del Caso de Prueba

 

 

Fallas encontradas:

 

 

1.      En la página “Registrar Usuario”, en la casilla adyacente a “Recuperar Contraseña”, al introducir un Seudónimo de usuario no registrado, aparece el mensaje:”El número de identificación del/la Estudiante no es válido”.

 

Corrección: En la página “Registrar Usuario”, en la casilla adyacente a “Recuperar Contraseña”, al introducir un Seudónimo de usuario no registrado, debe aparecer el mensaje:
”El Seudónimo de Usuario introducido no está registrado en el sistema”.

 

2.      En la sesión de un usuario al que no se le permite cambiar datos de su cuenta de usuario, si se hace clic en “Registrar Usuario” y se modifican datos de su cuenta, y luego se hace clic en “Enviar datos de cuenta de nuevo usuario”, entonces aparece el mensaje: “Lo sentimos, no puede cambiar datos en la cuenta de usuario tipo 'visitante'. Contacte al Administrador del sistema.” 

 

Corrección: en la sesión de un usuario al que no se le permite cambiar datos de su cuenta de usuario (usuario tipo ‘Visitante’), si se hace clic en “Registrar Usuario”, debe aparecer el mensaje: “No puede cambiar datos en la cuenta de usuario tipo 'visitante'. Contacte al Administrador del sistema.”, en reemplazo del mensaje: “Modifique los datos de su cuenta en la parte inferior de la página. Todos los campos son obligatorios. Cuando haya finalizado, haga clic en el botón 'Enviar datos de Cuenta Nueva de Usuario', con el fín de guardarlos en la base de datos del curso. Gracias.”.

 

Esto con el propósito de que el usuario sepa que no se le permite cambiar sus datos.

 

3.      Cuando se hace clic en “Registrar Usuario” sin haber iniciado ninguna sesión de usuario, y luego se hace clic en “aquí” (en la sección “Editar cuenta de usuario Existente”), entonces se solicitan los datos para iniciar sesión y luego aparece la pantalla de bienvenida.

 

Corrección: La pantalla que ha de aparecer inmediatamente después de iniciar sesión (habiendo hecho clic en “Editar cuenta de usuario Existente >> aquí”, previamente), No debe ser la de bienvenida sino la de “Editar cuenta de usuario”, y la cual debe contener solamente:

 

 

 

 

 

Funciones a mejorar:

 

1.      Al haber introducido datos erróneos en el formulario de Registro de Usuario, el sistema no menciona todos los datos erróneos introducidos (para fines de corrección, por parte del usuario).

 

Mejora: el sistema debe mencionar todos los datos erróneos introducidos, de una vez (para fines de corrección, por parte del usuario).



[1] Como resultado del proyecto de grado titulado “Desarrollo de un prototipo LMS”, y elaborado en el año 2004 en la Facultad de Ingeniería de Sistemas de la Universidad Autónoma de Bucaramanga.

 

*Se estudiaron estas técnicas y metodologías de desarrollo de software, debido a que ambas presentan aspectos que -al combinarse como propone el diseño metodológico del proyecto-, se complementan entre sí y resultan adecuados para el logro de los objetivos general y específicos del presente trabajo. El Modelo Lineal Secuencial soporta una secuencia de actividades que se ajustan a los procesos por los que el prototipo ha de pasar para ser mejorado. El Proceso Unificado de Desarrollo, por su parte, propone ciclos iterativos entre las fases de pruebas y correcciones del prototipo, que reflejan la naturaleza (incremental e iterativa) del proceso intermedio que las relaciona -y que el Modelo Lineal Secuencial no tiene en cuenta-.

 

 

[2] BRAUDE, Eric J. Ingeniería de software : una perspectiva orientada a objetos.  México : Alfaomega, 2004. p.29, 30, 31.

 

 

[3] PRESSMAN, Roger s. Ingeniería de software: un enfoque práctico. Madrid : McGraw Hill, 2002. p. 20, 21.

 

 

[4] PIATTINI, Mario. Calidad en el desarrollo y mantenimiento del software. México: Alfaomega, 2003. p. 51-69.

 

[5] PIATTINI, Mario. Análisis y Diseño de Aplicaciones Informáticas de Gestión. México: Alfaomega, 2000. p. 17-21, 24, 26-27.

 

*Entrada válida es aquélla que genera una salida que posibilita la ejecución del sistema, de conformidad con su especificación de requisitos funcionales.

[6] PIATTINI, Mario. Calidad en el desarrollo y mantenimiento del software. México: Alfaomega, 2003. p. 51-69.

 

[7] PIATTINI, Mario. Análisis y Diseño de Aplicaciones Informáticas de Gestión. México: Alfaomega, 2000. p. 17-21, 24, 26-27.

 

 

[8] PRESSMAN, Roger S. Ingeniería de software: un enfoque práctico. Madrid : McGraw Hill, 2002. p. 20, 21.

 

PRESSMAN, Roger s. Ingeniería de software: un enfoque práctico. Madrid : McGraw Hill, 2002. p. 20, 21.

 

BRAUDE, Eric J. Ingeniería de software : una perspectiva orientada a objetos.  México : Alfaomega, 2004. p. 29, 30, 31.

 

 

 

[9] JACOBSON, Ivar. BOOCH, Grady. RUMBAUGH, James. El proceso unificado de desarrollo de software. Madrid: Pearson Educación, 2000 p. 23-39, 45-46, 50, 52. [8].

 

[10] Este hecho se fundamenta en la falta de disponibilidad de los diagramas de: secuencia, colaboración, casos de uso, estados, actividades, componentes y despliegue (aunque se contó con el diagrama de clases).

 

[11] Se hace referencia al defecto y no a la falla, debido a que el primero se constituye como la causa de la segunda. En razón a que un defecto puede ocasionar una o más fallas, la corrección de un defecto puede repercutir en la corrección de más de una falla.

 

[12] Este hecho se fundamenta en la falta de disponibilidad de los diagramas de: secuencia, colaboración, casos de uso, estados, actividades, componentes y despliegue (aunque se contó con el diagrama de clases).

 

[13]El diligenciamiento de las plantillas para cada caso de prueba, se realizó teniendo en cuenta esta secuencia, en razón a que en el seguimiento de ciertos casos de prueba se introducen datos que son requeridos por otros casos de prueba, para su correcto diligenciamiento.