Empaqueté las clases del Modelo Conceptual de una manera más fácil de manejar (para evitar el síndrome de la hoja gigante). También extraje parcialmente el diagrama de clases de la interfaz, deduciéndolo a partir del código.
Adicionalmente comencé una evaluación
de Delta Pensum 1.0, que incluye tambien las mejoras posibles.
El reporte de la evaluación mencionada nunca fue
completada y su estado es bastante deficiente. Actualmente (Septiembre
2000) es preferible consultar el reporte de la evaluación
de la versión 1.1.
Al realizar la evaluación empecé a detectar fallas en
el software.
Evidentemente se trata de un "parche" --a futuro este valor debe
poderse modificar desde un menú de Preferencias. Esta preferencia
debe persistir no sólo de una consulta a otra, sino de una sesión
a otra.
Actualicé la versión de Delta Pensum de la Coordinación
de Computación para que Maruja la pudiera usar en esta semana de
consultas y solicitudes de permisos. Tuve dificultades con el classpath
(resuelto con ayuda de un preparador del LDC) y luego con la resolución
de la pantalla de la PC (Maruja lo resolvió al escoger el refresh
mode de defecto).
Específicamente si uno realiza la siguiente secuencia de acciones:
#Determinar estado de un estudiante
en pensum viejo
#Pasar a pensum nuevo
#Elaborar recomendación
(con desempates nulos)
#Salir de recomendación
#Seleccionar nueva consulta
#Determinar estado del estudiante
en pensum viejo
#Pasar a pensum nuevo
Al llegar a este punto el software se "paraliza" (no pasa al pensum
nuevo) y en la ventana del terminal emite el siguiente mensaje de error:
Exception occurred during event dispatching:
java.lang.NullPointerExceptionat deltapensum.CalendarioCurricular.improbarEncajable(Compiled Code)
at deltapensum.Despachador.improbarEncajable(Compiled Code)
at deltapensum.Despachador.improbarMaterias(Compiled Code)
at interfaz.DP_oldPensum.realizarAprobaciones(Compiled Code)
at interfaz.DP_mainWindow.actionPerformed(Compiled Code)
...
Al agregarla permite entrar a una segunda consulta.
En algunas corridas me encontré con el siguiente mensaje por terminal:
Ran out of swap space for compiled code.Modifiqué el archivo DeltaPensum para incorporar el parámetro al comando java.
Ran out of space for compiled code.
Current size is 16777216 bytes.
Increase code space with -Xmaxjitcodesize
Run-time exception error; current exception: xalloc
No handler for exception.
También me salió:
Exwin_CheckPoint: couldn't fork child process: not enough memoryAl parecer quedaban procesos viejos del java runtime, junto con DeltaPensum. Los maté con kill.
Audit_CheckPoint: couldn't fork child process: not enough memory
Exception occurred during event dispatching:at java.util.Hashtable.get(Compiled Code)java.lang.NullPointerException
Este es un parche, ¿qué está haciendo un apuntador
nulo aquí abajo? La falla tiene que venir de antes...
Interesante el problema de la(s) clase(s) adicional(es) que genera el compilador de Java para los JFrame como DP_mainWindow. Tuve problemas al trasladar el archivo por el nombre peculiar (sobre sobre la barra acostada previa al símbolo de dólar --¿un caracter de escape?):
DP_mainWindow\$1.classComencé a escribir esta bitácora para llevar mejor las estadísticas de fallas.
Al principio no estaba claro si es un problema de embasuramiento progresivo en alguna parte del software o si hay casos específicos que lo producen. En la Coordinación se presentó un caso que al relanzar la aplicación ejecutó perfectamente por lo que pareciera más un problema de embasuramiento progresivo.
Un escenario para producir la falla es:
| Caso | Aprobado pensum viejo | Aprobado pensum nuevo |
| 1 | 1, 3 | 2 |
| 2 | 1,4 | Algoritmos I,II |
| 3 | 1,3 | Algoritmos I,II, Lógica |
| 4 | 2,5 | -Algoritmos I,-II, BD, Sist. Progr. |
| 5 | 1,4 | ED1, Algoritmos III |
| 6 | 2 | BD, SO |
| 7 | 1,3 | Algoritmos I,II |
| 8 | 1,4 | Lógica, ED1 |
| 9 | 3,4 | Algoritmos II |
| 10 | 1,3, Mat IV,V | Algoritmos III |
| 11 | Asignaturas alternadas de 1,3 |
El sistema envía al terminal:
Exception occurred during event dispatching:Curiosamente la secuencia de casos en orden inverso no llega a producir la excepción.
java.lang.NullPointerException
at java.util.Hashtable.get(Compiled Code)
at deltapensum.CatalogoPrelacion.obtenerPrelacion(Compiled Code)
at deltapensum.Pensum.chequearPrelaciones(Compiled Code)
at deltapensum.Despachador.obtenerMateriasSinPrelaciones(Compiled Code)
at interfaz.DP_oldPensum.realizarAprobaciones(Compiled Code)
at interfaz.DP_mainWindow.actionPerformed(Compiled Code)
...