• No se han encontrado resultados

Sistema de Monitoreo y Control para los Examenes Realizados en Laboratorios

N/A
N/A
Protected

Academic year: 2023

Share "Sistema de Monitoreo y Control para los Examenes Realizados en Laboratorios"

Copied!
89
0
0

Texto completo

(1)

Universidad de las Ciencias Informáticas FACULTAD 2

“Sistema de Monitoreo y Control para los Exámenes Realizados en Laboratorios”

___________________________________________

Trabajo de Diploma para optar por el título de Ingeniero en Ciencias Informáticas

Autor(es): Dolores Rodríguez Vega Anabel Soria Guerra

Tutor(es): Lic. Alain Pérez Balart

Lic. Lester Rodríguez Vallejo

(2)

“Al mundo nuevo corresponde la Universidad nueva.

A nuevas ciencias que todo lo invaden, reforman y minan nuevas cátedras.

Es criminal el divorcio entre la educación que se recibe en una época, y la época.

En tiempos teológicos, universidad teológica.

En tiempos científicos, universidad científica”

(3)

RESUMEN

_______________________________________________________________________________________________

La Universidad de las Ciencias Informáticas, como centro generador de conocimientos y principal impulsor del uso de las Tecnologías de la Información y las Comunicaciones (TICs), ha venido desarrollando una serie de exámenes digitales en los laboratorios del centro, ya sean prácticos o teóricos. La aplicación de este tipo de evaluación ha ido en incremento, siendo esta una de las vías más factibles para poner en práctica los conocimientos adquiridos por los estudiantes, así como valorar el estado académico de los mismos.

Actualmente resulta muy difícil controlar, por parte del profesor las actividades que realiza cada estudiante en su puesto de trabajo. El proceso de entrega y recogida de los exámenes, debido a su complejidad, requiere de más tiempo del establecido para la realización de los mismos.

El presente trabajo de diploma tiene como objetivo fundamental la implementación de un software encargado de brindar de forma cómoda y ágil las funcionalidades necesarias para el proceso de monitoreo y control de las evaluaciones realizadas en los laboratorios. El sistema está compuesto por dos aplicaciones: Esclavo y Maestro, que estarán en constante comunicación, con el objetivo de controlar las actividades que se realizan en cada una de las computadoras desde el momento en que inicia el examen.

Con el cumplimiento de estos objetivos se garantiza la agilización del tiempo de aplicación del examen, y se logra llevar un control automatizado del mismo.

Palabras claves:

Monitoreo, Control, Aplicación Maestro, Aplicación Esclavo

(4)

ÍNDICE

_______________________________________________________________________________________________

RESUMEN... I ÍNDICE ... II ÍNDICE DE TABLAS ... VI ÍNDICE DE FIGURAS ... IX

INTRODUCCIÓN ... 1

CAPÍTULO I: FUNDAMENTACIÓN TEÓRICA ... 5

1.1. Introducción. ... 5

1.2. Antecedentes del tema, tendencias y tecnologías actuales. ... 5

1.2.1. Sistemas automatizados existentes... 5

1.2.2. Tendencias y tecnologías actuales ... 6

1.3. Comunicación entre aplicaciones. ... 7

1.3.1. Comunicación a través de Socket TCP/IP. ... 7

1.4. Lenguajes de programación ... 8

1.4.1. Java ... 9

1.4.1.1. Máquina Virtual de Java ... 10

1.4.2. JNI (Interfaz Nativa de Java) ... 10

1.4.2.1. Características ... 10

1.4.3. C ... 11

1.4.3.1. Características ... 11

1.4.4. DLL (Librería de Enlace Dinámico) ... 12

1.4.4.1. Características ... 12

1.5. Entornos de desarrollo de Java... 13

(5)

1.5.1. NetBeans ... 13

1.6. Metodologías de desarrollo de software ... 14

1.7. Programación Extrema (XP) ... 15

1.8. Conclusiones ... 17

CAPÍTULO II: CARACTERÍSTICAS DEL SISTEMA. EXPLORACION Y PLANIFICACION ... 18

2.1. Introducción ... 18

2.2. Objeto de Estudio. ... 18

2.2.1. Problema y situación problémica. ... 18

2.2.2. Flujo actual de los procesos. ... 19

2.2.3. Objetivos estratégicos. ... 19

2.2.4. Análisis crítico del funcionamiento del sistema actual. ... 20

2.2.5. Objeto de automatización. ... 20

2.2.6. Propuesta de Sistema ... 21

2.2.7. Características de la propuesta de sistema ... 22

2.3. Fase de exploración ... 22

2.3.1. Historias de Usuario ... 23

2.3.2. Estimación de esfuerzo por historia de usuario... 27

2.3.3. Plan de Iteraciones ... 27

2.3.4. Plan de duración de las iteraciones ... 29

2.3.5. Plan de entregas ... 29

2.4. Conclusiones ... 30

CAPÍTULO III: DISEÑO ... 31

3.1. Introducción ... 31

3.2. Interfaz de usuario ... 31

(6)

3.2.1.1. Establecer Conexión ... 32

3.2.1.2. Limpiar Escritorio ... 33

3.2.1.3. Distribuir Archivos ... 33

3.2.1.4. Recoger Archivos... 34

3.2.1.5. Iniciar Monitoreo ... 34

3.2.1.6. Establecer Tiempo ... 35

3.2.1.7. Desconectar ... 36

3.3. Descripción de las clases del diseño. ... 36

3.3.1. Tarjetas CRC de la aplicación Maestro... 36

3.3.2. Tarjetas CRC de la aplicación Esclavo. ... 40

3.4. Patrones de diseño ... 45

3.5. Conclusiones ... 46

CAPÍTULO IV: IMPLEMENTACION Y PRUEBAS ... 47

4.1. Introducción ... 47

4.2. Implementación ... 47

4.2.1. Iteración 1 ... 47

4.2.1.1. Tareas de las Historias de Usuario desarrolladas en la primera iteración ... 48

4.2.2. Iteración 2 ... 49

4.2.2.1. Tareas de las Historias de Usuarios desarrolladas en la segunda iteración. ... 50

4.2.3. Iteración 3 ... 52

4.2.3.1. Tareas de las Historias de Usuarios desarrolladas en la tercera iteración. ... 52

4.2.4. Iteración 4 ... 54

4.2.4.1. Tareas de las Historias de Usuarios desarrolladas en la cuarta iteración. ... 55

4.3. Pruebas ... 56

(7)

4.4. Conclusiones... 59

CAPÍTULO V: ESTUDIO DE FACTIBILIDAD ... 60

5.1. Introducción ... 60

5.2. COCOMO II ... 60

5.3. Características del proyecto ... 61

5.3.1. Entradas externas ... 61

5.3.2. Salidas externas ... 61

5.3.3. Consultas Externas ... 62

5.3.4. Archivos Lógicos Internos ... 62

5.3.5. Archivos de Interfaz Externos ... 63

5.3.6. Puntos de función desajustados ... 63

5.4. Cálculo de instrucciones fuentes, esfuerzo, tiempo de desarrollo, cantidad de hombres y costo. ... 64

5.4.1. Cálculo de instrucciones fuentes. ... 64

5.4.2. Cálculo del esfuerzo nominal ... 65

5.4.2.1. Ajuste del esfuerzo nominal ... 66

5.4.3. Cálculo del tiempo de desarrollo del software ... 67

5.4.4. Cálculo del costo total del proyecto. ... 67

5.5. Resultados ... 68

5.6. Conclusiones ... 69

CONCLUSIONES ... 70

RECOMENDACIONES ... 71

REFERENCIAS BIBLIOGRAFICAS ... 72

GLOSARIO DE TERMINOS ... 75

(8)

ÍNDICE DE TABLAS

_______________________________________________________________________________________________

Tabla 2. 1.Historia de usuario “Conexión entre la aplicación maestro y las aplicaciones esclavos”. ... 23

Tabla 2. 2. Historia de usuario “Eliminar Archivos”... 24

Tabla 2. 3. Historia de Usuario “Distribuir Examen”. ... 24

Tabla 2. 4. Historia de Usuario “Establecer tiempo de duración del examen”. ... 25

Tabla 2. 5. Historia de usuario “Monitoreo de la actividad en cada una de las computadoras”. ... 25

Tabla 2. 6. Historia de usuario “Deshabilitar teclado”. ... 26

Tabla 2. 7. Historia de Usuario “Recoger Exámenes”.Fase de Planificación ... 26

Tabla 2. 8. Estimación de esfuerzo por historias de usuario ... 27

Tabla 2. 9. Plan de Iteraciones ... 29

Tabla 2. 10. Plan de entregas ... 30

Tabla 3. 1. Tarjeta CRC de la clase “SMCMaestro”. ... 37

Tabla 3. 2. Tarjeta CRC de la clase “RegConexion”. ... 38

Tabla 3. 3. Tarjeta CRC de la clase “ControlMonitoreo”. ... 39

Tabla 3. 4. Tarjeta CRC de la clase “Archivo”. ... 39

Tabla 3. 5. Tarjeta CRC de la clase “Reporte”. ... 40

Tabla 3. 6. Tarjeta CRC de la clase “Comandos”. ... 40

Tabla 3. 7. Tarjeta CRC de la clase “SMCEsclavo”... 41

Tabla 3. 8. Tarjeta CRC de la clase “Tiempo”. ... 42

Tabla 3. 9. Tarjeta CRC de la clase “ContTiempo”... 42

Tabla 3. 10. Tarjeta CRC de la clase “LibTiempo”. ... 42

Tabla 3. 11. Tarjeta CRC de la clase “IntMonitoreo”. ... 43

Tabla 3. 12. Tarjeta CRC de la clase “Monitoreo”. ... 44

(9)

Tabla 3. 13. Tarjeta CRC de la clase “LibMonitoreo”. ... 44

Tabla 3. 14. Tarjeta CRC de la clase “Main”. ... 44

Tabla 4. 1. Historias de Usuario Iteración 1 ... 47

Tabla 4.1. 1. Tarea #1 de la Historia de Usuario “Conexión entre la aplicación Maestro y las aplicaciones Esclavos”. ... 48

Tabla 4.1. 2. Tarea #2 de la Historia de Usuario “Conexión entre la aplicación Maestro y las aplicaciones Esclavos”. ... 48

Tabla 4.1. 3. Tarea #3 de la Historia de Usuario “Conexión entre la aplicación Maestro y las aplicaciones Esclavos”. ... 49

Tabla 4. 2. Historias de Usuario Iteración 2 ... 49

Tabla 4.2. 1. Tarea #1 de la Historia de Usuario “Monitoreo de la actividad en cada una de las computadoras”. ... 50

Tabla 4.2. 2. Tarea #2 de la Historia de Usuario “Monitoreo de la actividad en cada una de las computadoras”. ... 50

Tabla 4.2. 3. Tarea #3 de la Historia de Usuario “Monitoreo de la actividad en cada una de las computadoras”. ... 51

Tabla 4.2. 4. Tarea #4 de la Historia de Usuario “Monitoreo de la actividad en cada una de las computadoras”. ... 51

Tabla 4. 3. Historias de Usuario Iteración 3 ... 52

Tabla 4.3. 1. Tarea #1 de la Historia de usuario Distribuir Examen. ... 52

Tabla 4.3. 2. Tarea #2 de la Historia de Usuario Distribuir Examen. ... 53

Tabla 4.3. 3. Tarea #1 de la Historia de Usuario Recoger Examen. ... 53

Tabla 4.3. 4. Tarea #2 de la Historia de Usuario Recoger Examen. ... 54

Tabla 4. 4. Historias de Usuario Iteración 4 ... 54

Tabla 4.4. 1. Tarea #1 de la Historia de Usuario Eliminar archivos. ... 55

Tabla 4.4. 2. Tarea #1 de la Historia de Usuario Establecer tiempo de duración del examen. ... 55

Tabla 4.4. 3. Tarea #2 de la Historia de Usuario Establecer tiempo de duración del examen. ... 56

Tabla 4. 5. Pruebas de Aceptación Historia de Usuario: "Conexión entre la aplicación Maestro y la aplicación Esclavo" ... 57

Tabla 4. 6. Pruebas de Aceptación Historia de Usuario: "Eliminar archivos". ... 57

(10)

Tabla 4. 8. Pruebas de Aceptación Historia de Usuario: "Establecer tiempo de duración del examen". ... 58 Tabla 4. 9. Pruebas de Aceptación Historia de Usuario: "Recoger exámenes". ... 59

(11)

ÍNDICE DE FIGURAS

_______________________________________________________________________________________________

Figura 2. 1. Funcionamiento del sistema. ... 21

Figura 3. 1. Interfaz principal del software: “SMCPrincipal”. Aplicación Maestro ... 32

Figura 3. 2. Interfaz Establecer Conexión. Aplicación Esclavo ... 33

Figura 3. 3. Interfaz SMCDistribuirExamen. Aplicación Maestro ... 33

Figura 3. 4. Interfaz SMCRecogerArchivos. Aplicación Maestro ... 34

Figura 3. 5. Interfaz SMCReportes. Aplicación Maestro ... 35

Figura 3. 6. Formulario Tiempo. Aplicación Esclavo ... 35

(12)

INTRODUCCIÓN

_______________________________________________________________________________________________

Hoy en día la Universidad de las Ciencias Informáticas (UCI) se ha convertido en un centro generador de conocimientos, ciencia y tecnología, actuando como agente impulsor y receptor de las principales Tecnologías de la Información y las Comunicaciones (TICs) desde una perspectiva educativa y constructiva para el desarrollo que se está llevando a cabo. El uso y aplicación de las TICs constituye un proceso continuo de mejora del sistema docente educativo y su marcado avance ha llevado a la creación de nuevas técnicas que permiten mejorar la metodología de la enseñanza en la universidad, siendo ejemplo de estas, las continuas evaluaciones sistemáticas que el centro lleva a cabo en los laboratorios, fomentando así su uso y aprovechando al máximo sus beneficios.

Esta es una de las maneras en que es posible valorar el estado académico de los estudiantes, además de ser una de las vías más factibles para poner en práctica los conocimientos adquiridos por cada uno de ellos.

Actualmente el centro cuenta con una aplicación que facilita la realización de evaluaciones: Moodle;

esta tiene como ventajas fundamentales la publicación de exámenes y la descarga de los mismos, sin embargo, cuando se realiza un examen en tiempo real, en ocasiones se hace necesario desconectar la red para evitar cualquier tipo de incidente. La Facultad 1 ha desarrollado una herramienta que realiza funcionalidades similares, posibilitando que varias facultades interactúen con el sitio a la vez, con la característica de que la información de una facultad se torna transparente a la otra. Por cuestiones de seguridad el sitio puede ser accedido por rangos de direcciones IP, lo cual se configura de forma independiente para cada facultad. Consta de una parte administrativa específica para cada facultad, permitiendo a los profesores descargar las pruebas realizadas, las cuales salen organizadas, por facultad, grupo y nombre del estudiante.

Analizando las características de las aplicaciones antes mencionadas se detectaron los siguientes inconvenientes:

(13)

Resulta muy difícil controlar, por parte del profesor, las actividades que realiza cada estudiante en su puesto de trabajo. De la misma forma en que las tecnologías facilitan el trabajo de los profesores con la digitalización de la mayor parte de las pruebas, también se hace inevitable y casi indetectable el hecho de que, durante la realización de una evaluación, se coloquen en la computadora dispositivos externos o accedan a determinada información que puede estar o no ubicada en la red.

El proceso de entrega y recogida de los exámenes a los estudiantes resulta complejo y demora demasiado tiempo, ya que se debe copiar en cada computadora los elementos necesarios para realizar la evaluación; una vez concluida, esta es recogida por cada uno de los puestos de trabajo, de forma similar a la vía antes expuesta.

Por todo lo antes expuesto ha surgido el siguiente problema científico: ¿Cómo entregar, controlar y recoger de forma eficiente los exámenes realizados en los laboratorios docentes?

El objeto de estudio a tener en cuenta para el desarrollo de este trabajo es el proceso de comunicación entre aplicaciones a través de la red, y el campo de acción: monitoreo de la actividad en una red de computadoras utilizando comunicación vía Socket TCP/IP.

Se plantea como objetivo general desarrollar una herramienta que permita monitorear y controlar los exámenes realizados en los laboratorios docentes; la misma estará compuesta por:

1. Desarrollar un software esclavo1 que brinde las funcionalidades necesarias para el control de la computadora.

2. Desarrollar un software maestro2 que permita dirigir el proceso de monitoreo y control.

1Software esclavo: Es el encargado de procesar los pedidos del software maestro y luego enviar la respuesta, permite chequear las actividades que se realizan en la PC y ejecutar comandos

2 Software maestro: Es un software diseñado para usarlo en la red, desde una PC determinada, el cual estará en constante comunicación con el software esclavo, es el encargado de realizar solicitudes, funcionando a la vez como un controlador.

(14)

Para facilitar la investigación se proponen las siguientes preguntas científicas:

1. ¿Qué antecedentes se tienen del proceso de evaluación de las diferentes asignaturas que se imparten en la universidad?

2. ¿Cuál es la situación actual que enfrentan los profesores durante la aplicación de los exámenes en los laboratorios?

3. ¿Qué aspectos deben tenerse en cuenta para la elaboración del software esclavo y el software maestro que faciliten el cumplimiento de los objetivos propuestos?

4. ¿Cuál es la efectividad de la propuesta elaborada, una vez aplicada en la práctica?

Para un mejor entendimiento y logro de los objetivos se trazaron las siguientes tareas científicas:

1. Investigar acerca de los métodos que se llevan a cabo actualmente para el control de los exámenes en los laboratorios, tanto en Cuba como en el resto del mundo.

2. Investigar acerca de las tecnologías, lenguajes y herramientas a utilizar 3. Realizar el proceso de análisis y diseño del software.

4. Investigar acerca de las vías existentes para desarrollar la comunicación entre dos aplicaciones a través de la red.

5. Llevar a cabo la implementación de cada uno de los subsistemas y posteriormente del sistema en general.

6. Realizar las pruebas necesarias al software implementado.

Para una mejor organización, el presente trabajo se ha estructurado por capítulos que abordan diferentes temáticas y aspectos de la investigación, así como cada uno de los pasos que se tuvieron en cuenta para el desarrollo del software:

Capítulo 1. Fundamentación Teórica: Se dará una panorámica acerca de las herramientas que antecedieron esta aplicación, especificando las funcionalidades que presentan en común. Se aborda

(15)

acerca de la tecnología en la que se apoya, así como la metodología a utilizar en cada una de las etapas de desarrollo del software.

Capítulo 2. Características del sistema: Se realiza una descripción general de la propuesta de sistema teniendo como objetivo fundamental comprender y entender los problemas actuales por lo que es necesaria su realización, así como describir los procesos que serán objeto de automatización para su posterior representación mediante cada uno de los artefactos generados por la metodología seleccionada.

Capítulo 3. Exploración y Planificación: Se realiza la descripción de los requerimientos del software mediante las historias de usuario que describirán en detalle las características del sistema definidas previamente. Se definirá además el tiempo total dedicado a cada iteración del proyecto durante la etapa de implementación.

Capítulo 4. Implementación y prueba: Se definen las tareas que darán cumplimiento a cada Historia de Usuario. Se describen las clases del diseño utilizando las Tarjetas CRC (Clases, Responsabilidades y Colaboración). Por cada historia de usuario se realizan las pruebas necesarias a través de las pruebas de aceptación, artefacto generado por la metodología

Capítulo 5. Estudio de Factibilidad: Se realiza un estudio de factibilidad del sistema propuesto, obteniéndose así una idea aproximada del costo y el esfuerzo empleados en el desarrollo del mismo.

(16)

CAPÍTULO I: FUNDAMENTACIÓN TEÓRICA

_______________________________________________________________________________________________

1.1. Introducción.

En este capítulo se presentan los fundamentos teóricos que apoyan el tema de desarrollo, referidos a los procesos que se llevan a cabo para el control de exámenes realizados en laboratorios docentes, se profundiza sobre el proceso de comunicación entre aplicaciones a través de la red, se realiza un análisis de los software existentes en la universidad profundizando además en las tendencias existentes actualmente respecto al desarrollo de software; se describen las tecnologías y metodologías utilizadas exponiendo las razones por las que fueron seleccionadas, así como las herramientas de desarrollo empleadas para el cumplimiento de los objetivos trazados.

1.2. Antecedentes del tema, tendencias y tecnologías actuales.

1.2.1. Sistemas automatizados existentes

En la universidad se han desarrollado aplicaciones encargadas de gestionar los exámenes que se realizan en los laboratorios docentes. Un ejemplo representativo de estas lo constituye la plataforma Moodle, la misma se caracteriza por ser un sitio web, implementado en el lenguaje de programación PHP, que ofrece funcionalidades tales como la gestión de cursos. Sin embargo presenta varias desventajas que provocan que el trabajo con la misma resulte tedioso, ejemplo de esto lo constituye el hecho de que al realizar los exámenes prácticos en los laboratorios, una vez finalizado el tiempo establecido para el desarrollo de los mismos, el estudiante debe subir la prueba para la plataforma, por lo que es necesario establecer la red, esto traería como consecuencia que el mismo pueda acceder a cualquier información que se encuentre disponible dentro de la misma. En caso que el servidor presente algún fallo en el momento que se esté efectuando una evaluación, puede provocar pérdida de información y datos necesarios para el trabajo que esté realizando el estudiante en ese instante.

(17)

La Facultad 1 cuenta con una herramienta implementada, al igual que en el caso anterior, en el lenguaje de programación PHP, con MySQL como Gestor de Base de Datos, permite que varias facultades interactúen con el sitio a la vez; a modo de seguridad permite ser accesible por rangos de direcciones IP, lo cual es configurable de forma independiente para cada facultad. El proceso de recogida del examen, se realiza de la siguiente manera: después de estar desconectada la red, el profesor debe ir por cada puesto de trabajo, es conectada y da paso a que el estudiante suba hacia el sitio la prueba, de forma similar al ejemplo expuesto anteriormente, esto provoca que se requiera de más tiempo del establecido para el examen.

En general, estas aplicaciones contribuyen a la gestión de exámenes, pero no han sido diseñadas pa ra controlar las actividades que realiza cada estudiante desde su computadora en el momento activo de la prueba.

En el país actualmente no existe un software que solucione el problema actual. En el mundo existen herramientas encargadas de monitorear recursos, sitios Web, procesos, pero son productos propietarios que requieren el pago de una licencia para su uso, y ninguna de ellas satisface las necesidades existentes.

Luego de un profundo análisis de la situación actual se hace necesario el desarrollo de u n software capaz de dar solución al problema en cuestión.

1.2.2. Tendencias y tecnologías actuales

Cuba tiene como una de sus tendencias principales la utilización del software libre, debido a la situación existente y a muchas de las restricciones que existen actualmente en el campo de la informática, en la que se ve mayormente afectada, por lo que se hace necesaria la migración desde los sistemas de licencia comercial a aquellos cuyo uso por parte de cualquiera que esté interesado en hacerlo, está exento de pago o paga muy poco por el derecho de usarlo.

Actualmente la UCI se propone como objetivo fundamental la migración al software libre, sin embargo, por diversas razones esto no se ha logrado en su totalidad. Teniendo en cuenta estas tendencias la herramienta en cuestión se desarrolla siguiendo estas premisas, brindando la posibilidad de su utilización en la universidad.

(18)

1.3. Comunicación entre aplicaciones.

Una de las características más importantes del sistema a implementar es que ambas aplicaciones serán capaces de conectarse entre sí aun encontrándose en equipos totalmente diferentes, además de que el envío de datos entre ellas es fundamental para el funcionamiento del software en general. Por este motivo fue necesario realizar un estudio de algunas formas de comunicación entre aplicaciones a través de la red, llegando a la conclusión de que el mecanismo más apropiado para dar solución a los objetivos propuestos es utilizando la Comunicación vía Sockets TCP/IP.

1.3.1. Comunicación a través de Socket TCP/IP.

Un socket (enchufe), es un método para la comunicación entre un programa del cliente y un programa del servidor en una red, se define, por tanto, como el punto final en una conexión (1).

Este mecanismo surge a principios de los 80 con el sistema UNIX de Berkeley, para proporcionar un medio de comunicación entre procesos (2) y presentan la misma funcionalidad que tiene la comunicación por correo o por teléfono (de un buzón se extraen mensajes completos, mientras que el teléfono permite el envío de flujos de información que no tienen una estructura claramente definida), es decir permiten que un proceso hable (emita o reciba información) con otro incluso estando estos en distintas máquinas. Esta característica de ínter conectividad hace que el concepto de socket sea de gran utilidad (3).

Cuando un cliente conecta con el servidor se crea un nuevo socket, de esta forma, el servidor puede seguir esperando conexiones en el socket principal y comunicarse con el cliente conectado, de igual manera se establece un socket en el cliente en un puerto local (3).

Una aplicación servidor normalmente escucha por un puerto específico esperando una petición de conexión de un cliente, una vez que se recibe, el cliente y el servidor se conectan de forma que les sea posible comunicarse entre ambos. Durante este proceso, el cliente es asignado a un número de puerto, mediante el cual envía peticiones al servidor y recibe de este las respuestas correspondientes.

Similarmente, el servidor obtiene un nuevo número de puerto local que le servirá para poder continuar escuchando cada petición de conexión del puerto original. De igual forma une un socket a este puerto local (4).

(19)

Generalmente la comunicación con sockets se realiza mediante un protocolo de la familia TCP/IP (Protocolo de control de transmisión/Protocolo de Internet). Los dos más utilizados son: TCP (Protocolo de Control de Transmisión) y UDP (Protocolo de Datagrama de Usuario), el primero es orientado a la conexión, permite a dos anfitriones establecer una conexión e intercambiar datos y garantiza la entrega de datos, es decir, que los mismos no se pierdan durante la transmisión y que los paquetes sean entregados en el mismo orden en el cual fueron enviados; el segundo ofrece ventajas como rapidez y facilidad de recibir datos de varios anfitriones usando un solo socket (5).

En la actualidad existen varios tipos de socket y cada uno por lo regular se asocia a un tipo de protocolo, por ejemplo:

SOCK_STREAM: está asociado al protocolo TCP. El cual brinda seguridad en la transmisión de datos, seguridad en la recepción, en la integridad y en la secuencia, entre otros.

SOCK_DGRAM: está asociado al protocolo UDP, e indica que los paquetes viajarán en tipo datagramas, el cual tiene una comunicación asíncrona (6).

Su principal ventaja radica en que son muy eficientes a la hora de enviar muchos mensajes y datos, tales como transmisión de ficheros, lo cual es fundamental para el envío y recogida de exámenes, funcionalidades de gran importancia en el sistema.

1.4. Lenguajes de programación

Los lenguajes de programación son herramientas que permiten crear programas y software. Disponen de formas adecuadas que posibilitan ser leídas y escritas por personas; a su vez resultan independientes del modelo de la computadora a utilizar (7). En la actualidad existen variedades de lenguajes, cada uno con características que los hacen diferentes de los demás. En la universidad son utilizados un gran número de ellos, debido a las necesidades y requisitos de las que disponga el software a desarrollar, un ejemplo de estos es C++, el cual es un lenguaje orientado a objetos derivado del C, que nació para añadirle cualidades y aspectos de los que carecía, entre sus principales características se encuentran portabilidad, brevedad y velocidad; y C Sharp (C#) que es un lenguaje de propósito general orientado a objetos creado por Microsoft para la plataforma .NET. Se caracteriza por la sencillez de uso, modernidad, orientado a componentes y seguridad de tipos.

(20)

1.4.1. Java

Teniendo en cuenta el estudio realizado sobre estos y otros lenguajes de programación orientada a objetos, se llega a la conclusión de que el lenguaje a utilizar para la implementación del sistema es Java, debido fundamentalmente a que es un lenguaje multiplataforma que, a medida que pasan los años, toma mayor importancia en el mundo de la informática, además, no requiere de mucho tiempo para producir.

Los programas desarrollados en Java presentan diversas ventajas frente a otros implementados en lenguajes como C/C++. Permite fácilmente el desarrollo tanto de arquitecturas cliente - servidor como de aplicaciones distribuidas, consistentes en crear sistemas capaces de conectarse a otros ordenadores y ejecutar tareas en los mismos simultáneamente, repartiendo por lo tanto el trabajo. Aunque también otros lenguajes de programación permiten crear aplicaciones de este tipo, Java incorpora en su propio API (Interfaz de Programación de Aplicación) estas funcionalidades.

Java es un lenguaje de programación lo bastante potente para desarrollar aplicaciones en cualquier ámbito, o sea, prácticamente todo aquello que se puede hacer en cualquier lenguaje se puede hacer también en Java y muchas veces con grandes ventajas (8).

En la actualidad es un lenguaje muy extendido enfocado fundamentalmente a cubrir las necesidades tecnológicas más punteras, por lo que cada vez cobra importancia tanto en el ámbito de Internet como en la informática en general. Es además un lenguaje de propósito general con el que se puede escribir desde un Applet para una página Web, hasta una aplicación financiera en modo texto sin ninguna conexión a Internet (9). Todo esto, unido a la portabilidad, potencia, seguridad y estabilidad que presenta lo ha hecho convertirse en un lenguaje utilizado por millones de programadores de todo el mundo.

Es un lenguaje dinámico, la máquina virtual de java, enlaza los programas java en tiempo de ejecución, eliminando la necesidad de enlazarlos con las librerías en tiempo de compilación (10).

Es un lenguaje preparado para la red, puesto que fue creado desde el principio como un lenguaje pensado para esta. La máquina virtual de Java evita que los programas transferidos al ordenador lo destruyan, facilita la rápida transferencia de dichos programas y los ejecuta de modo que no dependan del sistema operativo subyacente (10).

(21)

Java proporciona una colección de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando así la creación de aplicaciones distribuidas (11).

Hoy en día ya se ven limitadas las aplicaciones que sólo pueden ejecutar una acción a la vez. Java soporta sincronización de múltiples hilos de ejecución a nivel de lenguaje, especialmente útiles en la creación de aplicaciones de red distribuidas. Así, mientras un hilo se encarga de la comunicación, otro puede interactuar con el usuario, mientras otro presenta una animación en pantalla y otro realiza cálculos (11).

1.4.1.1. Máquina Virtual de Java

Un programa Java no tiene contacto con el ordenador en el que se ejecuta, sino que se relaciona con la máquina virtual. Esta configuración tiene una serie de implicaciones de gran importancia, técnicamente esta decide lo que los programas Java pueden hacer y lo que no (12).

Esta máquina virtual actúa como un cortafuego entre el ordenador host (anfitrión) y el programa Java.

Este último nunca accede a los mecanismos de entrada y salida del ordenador, al sistema de archivos, ni a la memoria, simplemente solicita a la máquina virtual que lo haga (12).

1.4.2. JNI (Interfaz Nativa de Java)

La plataforma Java es relativamente nueva, lo que significa que algunas veces se necesita integrar programas escritos en Java con servicios, programas o APIs existentes desarrollados en lenguajes distintos. La plataforma Java proporciona la Interfaz Nativa de Java (JNI) para contribuir con dicha integración (13).

1.4.2.1. Características

El JNI define una convención de nombres y llamadas para que la Máquina Virtual Java pueda localizar e invocar a los métodos nativos, está construido dentro de la máquina virtual Java, por lo que puede llamar a sistemas locales para realizar entrada / salida, gráficos, trabajos de red y operaciones de hilos de ejecución sobre el host del sistema operativo (13).

(22)

Posibilita modificar programas existentes escritos en algún otro lenguaje, permitiéndoles ser accesibles desde aplicaciones Java. Muchas de las clases de la API estándar de Java dependen del JNI para proporcionar funcionalidad al desarrollador y al usuario, por ejemplo las funcionalidades de sonido o lectura/escritura de ficheros. El desarrollador debe asegurarse que la API estándar de Java no proporciona una determinada funcionalidad antes de recurrir al JNI, ya que la primera ofrece una implementación segura e independiente de la plataforma (14).

Posibilita realizar llamadas a código nativo desarrollado en lenguajes como C y C++, permitiendo la utilización de los objetos Java de la misma forma en que el propio código lo hace (14).

1.4.3. C

El lenguaje de programación C, es un lenguaje conocido como de alto nivel. Una de sus características fundamentales es que es un lenguaje estructurado, lo que permite generar código claro y sencillo, ya que está basado en la modularidad (15).

La popularidad, eficacia y potencia de C se ha producido porque este lenguaje no está prácticamente asociado a ningún sistema operativo, ni a ninguna máquina en especial. Esta es la razón fundamental por la que C es conocido como el lenguaje de programación de sistemas por excelencia (16).

1.4.3.1. Características

Hay numerosas características que diferencian al lenguaje C de otros, y lo hacen eficiente, potente, eficaz, rápido e indispensable para todos los programas. Algunas son:

1. Una nueva sintaxis para declarar funciones: Una declaración de función puede añadir una descripción de los argumentos de la función. Esta información adicional sirve para que los compiladores detecten más fácilmente lo errores causados por argumentos que no coinciden.

2. Asignación de estructuras (registros) y enumeraciones.

3. Preprocesador más sofisticado.

(23)

4. Una nueva definición de la biblioteca que acompaña a C. Entre otras funciones se incluyen: acceso al sistema operativo (por ejemplo, lectura / escritura de archivos), entrada y salida con formato, asignación dinámica de memoria, manejo de cadenas de caracteres.

5. Una colección de cabeceras estándar que proporciona acceso uniforme a las declaraciones de funciones y tipos de datos (16).

6. Permite la creación de DLLs (Librería de Enlace Dinámico), ofreciendo la posibilidad de implementar métodos nativos en las mismas, siendo de gran utilidad ya que brinda a otros lenguajes funcionalidades de las que carecen.

1.4.4. DLL (Librería de Enlace Dinámico)

Una DLL es un archivo con código ejecutable que se carga bajo demanda del programa por parte del sistema operativo. Contiene funciones que se pueden llamar desde aplicaciones u otras DLLs y son utilizadas para poder reciclar el código y aislar las diferentes tareas (17)

1.4.4.1. Características

1. Reducen el tamaño de los archivos ejecutables: Gran parte del código puede estar almacenado en bibliotecas y no en el propio ejecutable lo que redunda en una mejor modularización.

2. Pueden estar compartidas entre varias aplicaciones: Si el código es suficientemente genérico, puede resultar de utilidad para múltiples aplicaciones

3. Facilitan la gestión y aprovechamiento de la memoria del sistema: La carga dinámica permite al sistema operativo aplicar algoritmos que mejoren el rendimiento del sistema cuando se carguen estas bibliotecas. Además, al estar compartidas, basta con mantener una copia en memoria para todos los programas que la utilicen.

4. Brindan mayor flexibilidad frente a cambios: Es posible mejorar el rendimiento o solucionar pequeños errores distribuyendo únicamente una nueva versión de la biblioteca dinámica.

Nuevamente, está corrección o mejora será aprovechada por todas las aplicaciones que compartan la biblioteca siempre será verdad (18).

(24)

1.5. Entornos de desarrollo de Java

En la actualidad existen distintos programas que permiten desarrollar el código Java, dada a la distribución gratuita del Java(tm) Development Kit (JDK), el cual lleva implícito un conjunto de programas y librerías que permiten desarrollar, compilar y ejecutar programas en Java. Incorpora además la posibilidad de ejecutar parcialmente el programa, deteniendo la ejecución en el punto deseado y estudiando en cada momento el valor de cada una de las variables (con el denominado Debugger). Cuenta además con una versión reducida del JDK, denominada JRE (Java Runtime Environment) destinada únicamente a ejecutar código Java (19).

Un IDE (Entorno de Desarrollo Integrado), tal y como su nombre indica, es un entorno de desarrollo integrado. En un mismo programa es posible escribir el código Java, compilarlo y ejecutarlo sin tener que cambiar de aplicación. Estos entornos integrados permiten desarrollar las aplicaciones de forma mucho más rápida, incorporando en muchos casos librerías con componentes ya desarrollados, los cuales se incorporan al proyecto o programa, proveen un marco de trabajo amigable para la mayoría de los lenguajes de programación como C++, Java, C#, Delphi, Visual Basic, Object Pascal, Velneo y entre otros (19).

1.5.1. NetBeans

NetBeans IDE es una herramienta para programadores pensada para escribir, compilar, depurar y ejecutar programas. Ofrece a los desarrolladores numerosas ventajas, en la creación de nuevas aplicaciones multiplataforma. Es un producto de código abierto tanto para su uso comercial como no comercial, con todos los beneficios del software disponible en forma gratuita y sin restricciones (20).

En su núcleo, es una herramienta de desarrollo Java, escrita puramente sobre la base de dicha tecnología, de modo que puede ejecutarse en cualquier ambiente que ejecute la misma. Las amplias posibilidades de desarrollo multiplataforma de NetBeans atraen a muchos desarrolladores que han trabajado con otras herramientas. Posee numerosas características que hacen que el IDE sea atractivo para cualquier desarrollador, incluyendo la amplia integración de las características específicas de la tecnología Java que no se encuentran disponibles en otros conjuntos de herramientas de aplicaciones multiplataforma (21).

(25)

Entre sus principales características se encuentran facilidad de uso, cumplimiento de regulaciones, perfiles de rendimiento, flexibilidad entre plataformas y la capacidad de desarrollar de manera eficiente las aplicaciones Java, lo que permite que el código fuente se modifique automáticamente junto con los cambios de modelo y elimine la necesidad de los desarrolladores de tener que referirse constantemente a los comentarios de este (21).

1.6. Metodologías de desarrollo de software

Una metodología para el desarrollo de un proceso de software, es un conjunto de filosofías, fases, procedimientos, reglas, técnicas, herramientas, documentación y aspectos de formación para los desarrolladores de Sistemas Informáticos (22).

En los últimos tiempos la cantidad y variedad de metodologías de desarrollo de software ha aumentado de forma impresionante, se podría decir que en estos últimos años se han desarrollado dos corrientes en lo referente a estas metodologías, las llamadas metodologías pesadas y metodologías ágiles. La diferencia fundamental entre ambas es que mientras las pesadas intentan conseguir el objetivo común por medio del orden y documentación, las ágiles (o ligeras como también se le llaman) tratan de mejorar la calidad del software por medio de una comunicación directa e inmediata entre las personas que intervienen en el proceso.

Entre las metodologías más utilizadas en la actualidad se encuentra: RUP (Proceso Unificado de Software), el mismo es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado (UML), constituye una metodología estándar muy utilizada para el análisis, implementación y documentación de sistemas orientados a objetos. Se caracteriza por ser iterativo e incremental, estar centrado en la arquitectura y guiado por los casos de uso. Incluye artefactos que son los productos tangibles del proceso como el modelo de casos de uso, el código fuente, etc., y roles, que no es mas que el papel que desempeña una persona en un determinado momento (23). La metodología RUP es más apropiada para proyectos grandes ya que requiere de un equipo de trabajo capaz de administrar un proceso complejo en varias etapas. En proyectos pequeños, es posible que no se puedan cubrir los costos de dedicación del equipo de profesionales necesarios (24).

(26)

1.7. Programación Extrema (XP)

XP es la metodología de desarrollo de software seleccionada para el desarrollo de este trabajo ya que está diseñada principalmente para proyectos a corto plazo y requiere de un equipo pequeño de trabajo. Se caracteriza por potenciar las relaciones interpersonales como clave para el éxito en el desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. XP se basa en la retroalimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes y simplicidad en las soluciones implementadas. XP se define como especialmente adecuada para proyectos con requisitos imprecisos, muy cambiantes y con alto riesgo técnico. Exige, dentro del equipo de desarrollo, la existencia permanente de un representante competente del cliente, con lo que intenta minimizar las probabilidades de fallo del proceso y garantizando, además, un mínimo de inconformidades de este último con el producto final.

Los roles que define esta metodología son:

1. Programador: Escribe las pruebas unitarias y produce el código del sistema.

2. Cliente: Escribe las historias de usuario y las pruebas funcionales para validar su implementación.

Además, asigna la prioridad a las historias de usuario y decide cuáles se implementan en cada iteración centrándose en aportar mayor valor al negocio.

3. Encargado de pruebas (Tester): Ayuda al cliente a escribir las pruebas funcionales. Ejecuta las pruebas regularmente, difunde los resultados en el equipo y es responsable de las herramientas de soporte para pruebas.

4. Encargado de seguimiento (Tracker): Proporciona realimentación al equipo. Verifica el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado, para mejorar futuras estimaciones. Realiza el seguimiento del progreso de cada iteración

5. Entrenador (Coach): Es responsable del proceso global. Debe proveer guías al equipo de forma que se apliquen las prácticas XP y se siga el proceso correctamente.

6. Consultor: Es un miembro externo del equipo con un conocimiento específico en algún tema necesario para el proyecto, en el que puedan surgir problemas.

(27)

7. Gestor (Big boss): Es el vínculo entre clientes y programadores, ayuda a que el equipo trabaje efectivamente creando las condiciones adecuadas. Su labor esencial es de coordinación.

El ciclo de vida ideal de XP consiste de cuatro fases:

1. Exploración: En esta fase, los clientes plantean a grandes rasgos las historias de usuario que son de interés para la primera entrega del producto. Al mismo tiempo el equipo de desarrollo se familiariza con las herramientas, tecnologías y prácticas que se utilizarán en el proyecto. Se prueba la tecnología y se exploran las posibilidades de la arquitectura del sistema construyendo un prototipo.

2. Planificación de la Entrega (Release): En esta fase el cliente establece la prioridad de cada historia de usuario, y correspondientemente, los programadores realizan una estimación del esfuerzo necesario de cada una de ellas. Se toman acuerdos sobre el contenido de la primera entrega y se determina un cronograma en conjunto con el cliente.

3. Implementación: El desarrollo es la parte más importante en el proceso de la programación extrema. Todos los trabajos tienen como objetivo que se programen lo más rápidamente posible, sin interrupciones y en dirección correcta. También es muy importante el diseño, y se establecen los mecanismos, para que éste sea revisado y mejorado de manera continuada a lo largo del proyecto, según se van añadiendo funcionalidades al mismo.

4. Prueba: Las pruebas son realizadas mediante test para comprobar el funcionamiento del código que será implementado. Se deben crear las aplicaciones que realizarán los test con un entorno de desarrollo específico. Un punto importante es crear test que no tengan ninguna dependencia del código que en un futuro evaluará.

Entre sus principales características se encuentran:

1. Pruebas unitarias continuas, frecuentemente repetidas y automatizadas, incluyendo pruebas de regresión: Generalmente se escribe el código de la prueba antes de la codificación.

(28)

2. Programación en parejas: Las tareas de desarrollo generalmente son llevadas a cabo por equipos conformados por dos personas, garantizando así mayor calidad del código escrito y, como consecuencia, del producto en general.

3. Frecuente integración del equipo de programación con el cliente o usuario: Un representante del cliente trabaja con el equipo de desarrollo.

4. Corrección de todos los errores antes de añadir nueva funcionalidad: Conlleva a hacer entregas frecuentes.

5. Refactorización del código: Se reescriben ciertas partes del código para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento.

6. Propiedad del código compartida: Promueve el que todo el personal pueda corregir y extender cualquier parte del proyecto.

1.8. Conclusiones

En este capítulo se han abordado todos los puntos fundamentales que constituirán la base para el desarrollo del trabajo, por lo que se puede concluir que:

1. Las aplicaciones existentes aunque no constituyen la solución al problema brindan una visión optimista del software final que se desea obtener.

2. Las tecnologías y metodologías seleccionadas contribuyen a lograr la solución del problema de forma eficiente, posibilitando así, un mejor entendimiento del mismo.

3. La herramienta de desarrollo seleccionada se destaca por la ventaja de crear aplicaciones multiplataforma, aspecto fundamental por la migración hacia el software libre, además de proporcionar los elementos necesarios para establecer una excelente comunicación entre aplicaciones, la cual se realizará a través de Socket TCP/IP.

(29)

CAPÍTULO II: CARACTERÍSTICAS DEL SISTEMA. EXPLORACION Y PLANIFICACION

_______________________________________________________________________________________________

2.1. Introducción

En el presente capítulo se realiza una descripción general de la propuesta de sistema, teniendo como objetivo fundamental comprender y entender los problemas actuales por lo que es necesaria su realización. Partiendo de este análisis se da paso a las dos primeras fases de la metodología XP:

Exploración y Planificación, en las que quedarán plasmadas las funcionalidades del sistema mediante las historias de usuario, dando una idea de cuáles son los requisitos que el cliente desea cumpla el producto una vez finalizado. Se definirá además el tiempo total dedicado al proyecto con el objetivo de que la entrega de este se realice sin retrasos en la fecha solicitada.

2.2. Objeto de Estudio.

2.2.1. Problema y situación problémica.

La universidad fomenta, en cada una de las actividades docentes que desarrolla, el uso de las tecnologías, apoyando así el desarrollo tecnológico evidenciado en el país en los últimos años. Es por ello que se desarrollan diariamente métodos que de una forma u otra mejoran el proceso docente - educativo del centro, siendo un ejemplo crucial la aplicación de exámenes en los laboratorios.

En este caso, la metodología que se ha estado llevando a cabo ha tenido gran aceptación, puesto que esta representa una forma mucho más eficiente de evaluar el nivel de aprendizaje de los estudiantes. Sin embargo, al realizar un examen, los profesores encargados de evitar que el estudiante realice una actividad fuera de lo establecido, se enfrentan a una serie de problemas dificultando su trabajo debido, fundamentalmente, al gran número de computadoras existentes en el laboratorio.

Otro aspecto a tener en cuenta es la entrega y recogida de estos exámenes, procesos que actualmente son llevados a cabo por el profesor, quien se encarga de ir por cada puesto copiando, en el primer caso hacia cada computadora y en el segundo, hacia un dispositivo de almacenamiento externo, dirección IP o

(30)

El centro no cuenta con un sistema capaz de solucionar todo lo antes expuesto, es por ello que se hace necesario implementar una herramienta que contenga las funcionalidades requeridas para controlar, eficientemente, estas evaluaciones.

2.2.2. Flujo actual de los procesos.

Actualmente el proceso de aplicación de los exámenes en los laboratorios se realiza a través de la plataforma Moodle, la cual es una herramienta muy efectiva fundamentalmente en el desarrollo de exámenes teóricos. En el caso particular de las pruebas prácticas permite la descarga del archivo correspondiente a la misma, esto presenta varias desventajas, siendo ejemplo de estas el hecho de que una vez abierto el sitio puede ocurrir que el examen no se encuentre disponible, siendo necesario qu e el estudiante espere hasta su publicación provocando que el horario de inicio del mismo no coincida con el establecido.

Estas evaluaciones son gestionadas por un servidor central por lo que, en ocasiones, debido al gran número de estudiantes conectados al sitio, provoca que el proceso de navegación y descarga desde el mismo se torne demasiado lento.

Generalmente por cada laboratorio son ubicados a lo sumo dos profesores, que son los encargados de controlar las actividades que realizan los estudiantes en su puesto de trabajo. Cuando el examen no se encuentra publicado en el Moodle, en el mejor de los casos se cuenta con una dirección IP que los contiene, en caso contrario se requiere de un dispositivo externo que se irá conectando en cada computadora. El mismo proceso es necesario llevarlo a cabo a la hora de recoger las evaluaciones, tornándose tedioso y dificultando el trabajo de las personas responsables en cada laboratorio.

2.2.3. Objetivos estratégicos.

El Moodle es una herramienta cuyo objetivo fundamental es la gestión y publicación de las evaluaciones que se realizan en la universidad. Entre sus funcionalidades más importantes podemos encontrar la descarga de los archivos contenedores del examen, control del tiempo de duración del mismo y la facilidad de la aplicación de pruebas teóricas directamente desde la red.

A pesar de las muchas ventajas y facilidades que brinda, esta plataforma posee también desventajas

(31)

realizar exámenes prácticos, puesto que es imposible controlar la actividad de cada estudiante en su puesto de trabajo, siendo esta una forma efectiva aunque no eficiente de evitar el fraude.

El sistema a automatizar se propone como objetivos fundamentales monitorear y controlar estas actividades sin que se requiera la previa desconexión de la red; distribuir los exámenes a realizar en cada una de las computadoras sin necesidad de descargarlos y agilizar el proceso de recogida de los mismos una vez finalizado el tiempo señalado.

2.2.4. Análisis crítico del funcionamiento del sistema actual.

El funcionamiento de los procesos a automatizar debe verse desde las siguientes vertientes:

Actualmente no existe ningún sistema capaz de monitorear y controlar los exámenes que se realizan en los laboratorios de la universidad, siendo este un proceso no eficiente llevado a cabo por los profesores.

No existe una vía que posibilite la recogida de estos exámenes de forma rápida puesto que actualmente esta acción se realiza manualmente.

Un sistema automatizado, capaz de garantizar la distribución y recogida de las evaluaciones, además de realizar todo el proceso de monitoreo y control de las mismas, mejoraría el trabajo de los profesores encargados de estos exámenes, siendo esta una vía factible para chequear eficientemente lo que realiza cada estudiante en su computadora, además de garantizar que se cumpla con el tiempo destinado al mismo.

2.2.5. Objeto de automatización.

Inicialmente se tiene en cuenta la necesidad de llevar a cabo un control exhaustivo de los exámenes desarrollados en los laboratorios de la universidad. Para ello es necesario contar con una aplicación que permita monitorear cada una de las computadoras durante el tiempo de duración de los mismos. De esta forma se garantizará el mantener informado al profesor encargado, de las actividades que realiza cada estudiante desde su puesto de trabajo.

(32)

El sistema permitirá además entregar y recoger dichos exámenes a través de la red y que el tiempo de demora de cada estudiante durante el desarrollo de los mismos sea exactamente el establecido para esta actividad.

2.2.6. Propuesta de Sistema

El sistema a automatizar está compuesto por dos aplicaciones, encargadas de controlar las actividades que se realizan en la computadora desde el momento en que inicia el examen. Esto se logra mediante la comunicación entre ambas herramientas, la cual se realiza a través de Socket TCP\IP, la siguiente figura muestra el funcionamiento del sistema.

Figura 2. 1. Funcionamiento del sistema.

El software maestro es el encargado de dirigir todo el proceso de monitoreo y control. Cuenta con una interfaz gráfica, flexible y amigable para que pueda ser utilizada fácilmente por la persona autorizada, brindando las funcionalidades necesarias que el subsistema deberá realizar. Es la parte del software con la que interactuaría el usuario. Su mayor responsabilidad es la de enviar las peticiones al software

(33)

objetivo fundamental es monitorear las actividades que realiza el estudiante en su computadora, garantizándole al software maestro poder visualizar lo referente a las operaciones que realiza el mismo desde su puesto de trabajo, como conectar un dispositivo externo.

2.2.7. Características de la propuesta de sistema

En el presente trabajo se propone la implementación de un sistema que permita fundamentalmente monitorear y controlar la actividad de cada estudiante en su puesto de trabajo en un examen determinado.

El mismo estará programado en java y será multiplataforma, por lo que podrá ser visualizado en sistemas operativos tales como versiones de Windows y Linux.

El software estará disponible mientras exista conexión entre ambos subsistemas, dígase aplicación maestro y aplicaciones esclavos, la misma se realizará a través de la comunicación Sockets TCP/IP y será gestionada por un switch ubicado en cada uno de los laboratorios. Contará con una interfaz fácil de usar y amigable para que pueda ser utilizada fácilmente por el usuario; podrá ser utilizado solo por las personas autorizadas para ello y contendrá un menú en donde estarán visibles las funcionalidades del mismo, facilitando así la distribución de las mismas y la localización de estas por el usuario.

Para lograr eficiencia en la distribución de los exámenes hacia las computadoras determinadas se utilizará la sincronización de múltiples hilos de ejecución, que son útiles, especialmente, en la creación de aplicaciones de red distribuidas. Se requiere la instalación en cada computadora de la máquina virtual de java.

2.3. Fase de exploración

Esta es la fase en la que se especifica el alcance general del proyecto. Se definen las funcionalidades necesarias que debe cumplir el sistema mediante la redacción de sencillas “historias de usuarios”. En base a esta información es estimado el tiempo de desarrollo del software (25). El equipo de desarrollo se familiariza con las herramientas, tecnologías y prácticas que se utilizarán en el proyecto. Se prueba la tecnología y se exploran las posibilidades de la arquitectura del sistema construyendo un prototipo (26).

(34)

2.3.1. Historias de Usuario

Uno de los artefactos más importantes que genera la metodología XP son las Historias de Usuario. Estas tienen el mismo propósito que los casos de uso y son escritas por el propio cliente, tal y como ven ellos las necesidades del sistema, por tanto son descripciones cortas y escritas en el lenguaje del usuario sin terminología técnica.

Conducen al proceso de creación de los test de aceptación, los cuales servirán para verificar que estas historias se han implementado correctamente. Otra de sus características es que solamente proporcionan los detalles sobre la estimación del riesgo y cuánto tiempo conllevará su implementación. Su nivel de detalle debe ser el mínimo posible, de manera que permita hacerse una ligera idea de cuánto costará implementar el sistema.

El software en cuestión cuenta con un total de 7 historias de usuario, cada una de ellas respondiendo a las diferentes funcionalidades solicitadas por el cliente y dando una idea al resto del equipo de desarrollo de cómo debe ser su posterior implementación.

Historia de Usuario

Número: 1 Usuario: Profesor

Nombre historia: Conexión entre la aplicación maestro y las aplicaciones esclavos.

Prioridad en negocio: Alta Riesgo en desarrollo: Media Puntos Estimados: 2 Iteración asignada: 1

Programador responsable: Dolores Rodríguez, Anabel Soria

Descripción:

La aplicación maestro se conectará a las aplicaciones esclavos a través de la comunicación vía Sockets TCP/IP.

Observaciones:

Tabla 2. 1.Historia de usuario “Conexión entre la aplicación maestro y las aplicaciones esclavos”.

(35)

Historia de Usuario

Número: 2 Usuario: Profesor Nombre historia: Eliminar archivos.

Prioridad en negocio: Baja Riesgo en desarrollo: Baja Puntos Estimados: 0.5 Iteración asignada: 4 Programador responsable: Dolores Rodríguez, Anabel Soria Descripción:

Dada una petición de la aplicación maestro a las aplicaciones esclavas, estas últimas se encargarán de eliminar los archivos existentes en cada uno de los escritorios de las computadoras conectadas.

Observaciones:

Tabla 2. 2. Historia de usuario “Eliminar Archivos”.

Historia de Usuario

Número: 3 Usuario: Profesor Nombre historia: Distribuir examen

Prioridad en negocio: Media Riesgo en desarrollo: Baja Puntos Estimados: 2 Iteración asignada: 3 Programador responsable: Dolores Rodríguez, Anabel Soria Descripción:

La aplicación maestro se encargará, apoyándose en las aplicaciones esclavos, de distribuir los exámenes en cada una de las computadoras conectadas.

Debe ser especificado el archivo que se desea distribuir.

Observaciones:

Tabla 2. 3. Historia de Usuario “Distribuir Examen”.

(36)

Historia de Usuario

Número: 4 Usuario: Profesor

Nombre historia: Establecer tiempo de duración del examen

Prioridad en negocio: Baja Riesgo en desarrollo: Baja Puntos estimados: 0.5 Iteración asignada: 4 Programador responsable: Dolores Rodríguez, Anabel Soria Descripción:

Después de ser distribuidos los exámenes se establece el tiempo destinado para su desarrollo. Este se mostrará en la pantalla de cada una de las computadoras.

Observaciones:

Tabla 2. 4. Historia de Usuario “Establecer tiempo de duración del examen”.

Historia de Usuario Número: 5 Usuario:

Nombre historia: Monitoreo de la actividad en cada una de las computadoras Prioridad en negocio: Alta Riesgo en desarrollo: Baja Puntos estimados: 3 Iteración asignada: 2 Programador responsable: Dolores Rodríguez, Anabel Soria Descripción:

Las aplicaciones esclavos se mantendrán constantemente monitoreando la actividad de la computadora correspondiente y notificará a la aplicación maestro en caso de que un usuario conecte cualquier

dispositivo de almacenamiento externo.

Observaciones:

Tabla 2. 5. Historia de usuario “Monitoreo de la actividad en cada una de las computadoras”.

(37)

Historia de Usuario Número: 6 Usuario:

Nombre historia: Deshabilitar teclado

Prioridad en negocio: Baja Riesgo en desarrollo: Alta Puntos estimados: 3 Iteración asignada: 5 Programador responsable: Dolores Rodríguez, Anabel Soria Descripción:

Una vez culminado el tiempo establecido para el examen, cada aplicación Esclavo se encargará de deshabilitar el teclado de la computadora correspondiente.

Observaciones:

Tabla 2. 6. Historia de usuario “Deshabilitar teclado”.

Historia de Usuario

Número: 7 Usuario: Profesor Nombre historia: Recoger exámenes

Prioridad en negocio: Media Riesgo en desarrollo: Media Puntos estimado: 1 Iteración asignada: 3

Programador responsable: Dolores Rodríguez, Anabel Soria Descripción:

Una vez culminado el examen, las aplicaciones esclavas enviarán los mismos a la aplicación maestro y este se encargará de copiarlos a la dirección especificada.

Observaciones:

Tabla 2. 7. Historia de Usuario “Recoger Exámenes”. Fase de Planificación

(38)

La metodología XP plantea la planificación como un diálogo continuo entre las partes involucradas en el proyecto, incluyendo al cliente, a los programadores y a los coordinadores o gerentes. Es una fase corta, en la que el cliente, los gerentes y el grupo de desarrolladores acuerdan el orden en que deberán implementarse las historias de usuario, y, asociadas a éstas, las entregas. Típicamente esta fase consiste en una o varias reuniones grupales de planificación. El resultado de esta fase es un Plan de Entregas (25).

2.3.2. Estimación de esfuerzo por historia de usuario

Durante la fase de planificación se realiza una estimación del esfuerzo que costará implementar cada historia de usuario. Este se expresa utilizado como medida el punto. Un punto se considera como una semana ideal de trabajo donde los miembros de los equipos de desarrollo trabajan el tiempo planeado sin ningún tipo de interrupción (27). Los resultados obtenidos en esta estimación se exponen en la siguiente tabla:

Historias de Usuario Puntos estimados

Conexión entre la aplicación maestro y las aplicaciones

esclavos. 2

Eliminar archivos 0.5

Distribuir examen 2

Establecer tiempo de duración del examen 0.5 Monitoreo de la actividad en cada una de las computadoras. 3

Deshabilitar teclado 3

Recoger exámenes 1

Tabla 2. 8. Estimación de esfuerzo por historias de usuario 2.3.3. Plan de Iteraciones

Las historias de usuarios seleccionadas para cada entrega son desarrolladas y probadas en un ciclo de iteración, de acuerdo al orden preestablecido. Al comienzo de cada ciclo, se realiza una reunión de planificación de la iteración. Cada historia de usuario se traduce en tareas específicas de programación.

Asimismo, para cada historia de usuario se establecen las pruebas de aceptación.

Estas pruebas se realizan al final del ciclo en el que se desarrollan, pero también al final de cada uno

(39)

pruebas de aceptación que hayan fallado en el ciclo anterior son analizadas para evaluar su corrección, así como para prever que no vuelvan a ocurrir (25).

Iteración 1

En esta primera iteración se implementan las historias de usuario con mayor prioridad, obteniendo al final de la misma una primera versión de prueba y dando al sistema las primeras funcionalidades, centrándose en la conexión entre la aplicación maestro con las esclavas.

Iteración 2

En la segunda iteración se realiza la implementación de las historia de usuario con prioridad alta, relacionadas con el proceso de monitoreo de las actividades que se realizan en la computadora, debido a que la misma requiere de mucho tiempo de trabajo y cada iteración no debe sobrepasar 3 semanas para su desarrollo. De esta forma se obtiene la segunda versión de pruebas del software.

Iteración 3

La tercera iteración está basada en las historias de usuario con prioridad media, obteniendo al final de la misma las funcionalidades referidas a la gestión de exámenes que, agregadas a las obtenidas en la iteración anterior, constituyen los requerimientos fundamentales que debe tener el sistema. Se obtiene además la versión número tres de pruebas.

Iteración 4

En la cuarta iteración se desarrollan las historias de usuario con menor prioridad, se agregan a las funcionalidades ya implementadas las concernientes a la eliminación de archivos y el establecimiento del tiempo de duración del examen.

Iteración 5

En la quinta iteración ya implementadas las funcionalidades especificadas se realiza el desarrollo la última historia de usuario correspondiente a deshabilitar teclado obteniendo así la versión 1.0 del producto final.

(40)

2.3.4. Plan de duración de las iteraciones

Este plan se realiza con el objetivo de reflejar cuales serán las historias de usuario que serán implementadas en cada una de las iteraciones, así como el tiempo destinado a cada una de ellas y e orden en que se implementaran, lo que ayuda a obtener una idea general del tiempo que durara la confección total del sistema.

Tabla 2. 9. Plan de Iteraciones 2.3.5. Plan de entregas

El cronograma de entregas establece las fechas para las cuales se planifica serán entregadas cada una de las iteraciones y no es más que el resultado de una reunión entre todos los actores del proyecto (cliente, desarrolladores, gerentes, etc.); XP denomina a esta reunión “Juego de planeamiento”.

Este cronograma se realiza en base a las estimaciones de tiempos de desarrollo realizadas por los desarrolladores. Luego de algunas iteraciones es recomendable realizar nuevamente una reunión con los actores del proyecto, para evaluar nuevamente el plan de entregas y ajustarlo si es necesario.

Iteración Orden de la historias de usuario a implementar Duración total de la iteración Iteración 1 1. Conexión entre la aplicación maestro y las aplicaciones

esclavos. 2 semanas

Iteración 2 1. Monitoreo de la actividad en cada una de las

computadoras 3 semanas

Iteración 3 1. Distribuir examen.

2. Recoger exámenes

3 semanas

Iteración 4 1. Eliminar archivos

2. Establecer tiempo de duración del examen 1 semana

Iteración 5 1. Deshabilitar teclado 3 semanas

Referencias

Documento similar