1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
15 \use_numerical_citations 0
16 \paperorientation portrait
19 \paragraph_separation indent
21 \quotes_language english
25 \paperpagestyle default
34 Taller de Programación I
36 Universidad de Buenos Aires
40 \begin_inset LatexCommand \tableofcontents{}
50 Nicolás Dimov (77.624)
53 Leandro Lucarella (77.891)
56 Ricardo Markiewicz (78.226)
62 Los programas de prueba se pueden encontrar en la carpeta
66 , allí se almacenaron los primeros ejecutables con los cuales se experimentó
67 en temas que no se habían visto hasta el momento como
82 Con la ayuda de la herramienta subversion no fue necesario ir guardando
83 versiones parciales del proyecto, ya que subversion guarda en un repositorio
84 todas las versiones intermedias por nosotros, a las cuales se puede acceder
86 Para obtener una versión particular del proyecto basta ejecutar:
89 svn co -r[rev|{fecha}] http://svn.llucax.hn.org/svn/plaqui/
96 toma un parámetro que puede ser el número de revisión que se quiere obtener
101 ) o una fecha ingresada entre llaves (
106 Por ejemplo para obtener la revisión 1 se puede hacer:
109 svn co -r1 http://svn.llucax.hn.org/svn/plaqui/
112 Y para obtener la versión de la fecha de la pre-entrega se puede hacer:
115 svn co -r'{2003-11-20 18:00}' http://svn.llucax.hn.org/svn/plaqui/
118 Es por esto que nos pareció que no tenía mucho sentido acompañar este manual
119 con una versión particular del repositorio en un momento dado.
122 Evolución del proyecto.
125 La evolución del proyecto también se documentó a través del subversion,
126 ya que a cada versión que se sube al servidor se la acompaña de un comentario
127 sobre los avances realizados.
128 Para ver el mensaje de cualquier cambio realizado en una revisión
135 svn log -rX http://svn.llucax.hn.org/svn/plaqui/
138 Para ver todos los mensajes basta con:
141 svn log -r0:HEAD http://svn.llucax.hn.org/svn/plaqui/
144 Por conveniencia, en el directoria raíz del código fuente entregado en el
145 CD se encuentra un archivo
149 con los mensajes de todas las revisiones del proyecto.
152 A continuación se muestra una gráfica generada con un
160 , que se adjunta en el CD) que indica la cantidad de
164 (cambios de versión) que se hicieron día a día, donde cada
175 PlaQui - Grafica de Progreso SVN
178 --------------------------------
187 2003-10-12 *******(rmarkie)
190 2003-10-13 **(rmarkie|luca)
193 2003-10-15 *(rmarkie)
196 2003-10-16 *(rmarkie)
199 2003-10-17 ***(rmarkie)
202 2003-10-18 **(rmarkie)
208 2003-10-20 ***(rmarkie|luca)
211 2003-10-21 ***(rmarkie|luca)
214 2003-10-22 ****(luca)
217 2003-10-23 *****(rmarkie)
220 2003-10-24 *****(rmarkie|luca)
226 2003-10-28 ***(sagar|rmarkie)
229 2003-11-06 ****(rmarkie)
232 2003-11-07 **(rmarkie)
235 2003-11-08 ****(rmarkie|sagar|luca)
238 2003-11-11 *****(rmarkie)
241 2003-11-12 ***(rmarkie|sagar|luca)
244 2003-11-13 *********(rmarkie|luca)
247 2003-11-15 *(rmarkie)
250 2003-11-16 *****(rmarkie|luca)
253 2003-11-17 *********(luca)
256 2003-11-18 **************(luca)
259 2003-11-19 *********(luca)
262 2003-11-20 ********************(rmarkie|sagar|luca)
271 2003-11-23 ************(luca)
274 2003-11-24 ******(rmarkie|luca)
277 2003-11-25 ******(rmarkie|luca)
283 2003-11-27 ***(rmarkie)
289 2003-11-29 *****(luca)
292 2003-11-30 ***************(rmarkie|luca)
295 2003-12-01 ****************************************(luca)
298 2003-12-02 *********************************(luca)
301 ( ) = Máximo Commiteador del Día
313 luca Leandro Lucarella
316 rmarkie Ricardo Markiewicz
319 Vale la pena aclarar que en este gráfico no se muestran la cantidad de líneas
320 modificadas, por lo que una gran cantidad de
324 no significa necesariamente un gran cambio en el repositorio.
330 A continuación se menciona, en términos generales la tarea que realizó cada
334 Leandro\SpecialChar ~
335 Lucarella PlaQui Server.
338 Ricardo\SpecialChar ~
339 Markiewicz PlaQui Model y PlaQui Client.
342 Nicolás\SpecialChar ~
343 Dimov PlaQui Constructor.
346 Obviamente en algunas circunstancias algún integrante aporto al desarrollo
347 de un módulo que no le estaba asignado.
348 La documentación fue realizada y revisada entre todos los integrantes.
351 Inconvenientes Encontrados.
357 El Servidor trajo varios problemas, en especial en cuanto al manejo de
366 El uso de señales (para hacer el servidor orientado a eventos) dio también
367 algunos problemas menores.
377 El principal problema de los threads fue el no poder saber fácilmente donde
378 se producía un error, en especial cuando el error venía por la falta de
384 En términos generales, cada vez que el server tenía una violación de segmento
385 se debía a la falta de un
392 Otro problema eran las excepciones no manejadas dentro del método
396 (que se ejecuta en su propio
401 Aunque se incluía un bloque
405 en el programa principal, al ocurrir una excepción en un
413 hasta el hilo padre y el programa sale con
422 tiene su propio bloque
426 donde pueda surgir una excepción y se incluyó la
434 para poder avisar de dicho error a quien lo necesite.
444 El principal problema con los
448 fue la imposibilidad (por enunciado) de usar
453 Esto tuvo particular repercusión en el
457 , ya que una vez llamado al
461 para aceptar una nueva conexión, esta no retorna hasta que efectivamente
462 se reciba una nueva conexión, haciendo imposible terminar el servidor de
464 Para resolver esto, al finalizar el
472 para hacer que la llamada a
476 retorne y el servidor pueda ser cerrado limpiamente.
482 La señales no dieron mayores problemas.
483 El único inconveniente es que complican la depuración del programa, ya
484 que uno no sabe de antemano quien las atenderá y se hace difícil seguir
491 El Server está preparado para servir (y simular) una cantidad indeterminada
493 Por problemas de tiempo esto no se llegó a implementar correctamente en
494 el programa, en particular por la complicación que traería implementar
495 dicha función en el cliente.
501 A lo largo del desarrollo nos hemos encontrado con diferentes tipos de problemas
502 los cuales pudieron ser solucionados, en su mayoría, de una forma aceptable.
506 Al trabajar con imágenes independientes, las verificaciones sobre cada una
507 de estas, dependen mucho de su posición en el área de trabajo y su orientación.
508 Esto provoca que haya que realizar demasiadas validaciones para los diferentes
509 tipos de verificaciones, y trae apareados problemas en la codificación
510 por el uso de gran cantidad de coordenadas.
513 Otro inconveniente no solucionado, fue que las imágenes de cada elemento
514 que se coloca sobre la grilla se crean tantas veces como elementos de ese
516 La idea en un principio fue crear todas estas imágenes estáticas, de modo
517 que para un elemento de cuatro imágenes, se cargarían en memoria solamente
518 esas cuatro imágenes y luego los elementos iguales apuntarían su imagen
519 actual a la que corresponda.
520 Esto no pudo ser solucionado pues no encontramos la forma de inicializar
521 las imágenes de manera estática, se producían errores en el momento del
525 Por problemas de tiempo, hubo algunas implementaciones sobre el Constructor
526 luego de cerrado el tema de la documentación, por ejemplo, el Constructor
527 pregunta si quiere guardar el trabajo antes de salir del programa.
528 Esto no fue documentado.
534 El principal problema del cliente fueron los
539 El asunto fue descubrir la forma de hacer que las actualizaciones de refresco
540 de las propiedades y la creación dinámica de objetos sea
544 para garantizar a la Gtk+ cierta estabilidad.
545 Luego de mucho leer se encontró el
549 , que es un evento asíncrono especialmente diseñado para comunicación entre
556 El Modelo tenía la complicación de la Union.
557 Este elemento es complicado ya que para poder saber el estado a su salida
558 se necesitaba saber el estado a sus 2 entradas, y esta información llegaba
560 Luego de mucho diseño, análisis de todas las combinaciones posibles entre
561 las entradas se llego a un método que resulto exitoso en la mayoría de
562 las pruebas y fue adoptado como definitivo.
565 Otro inconveniente fue la suma de colores.
566 El ejemplo dado en el enunciado no era para nada correcto.
567 Para solucionar esto nos pusimos en contacto con Nicolás Reyna, estudiante
568 de diseño industrial en la Universidad de La Plata, quien tiene un conocimiento
569 mayor al nuestro acerca del comportamiento de los colores aditivos y su
571 En base a sus recomendaciones hicimos las sumas de colores en los distintos
575 Por último, al verificarse la validez del conexionado de un archivo XML
576 de planta en el Constructor, el Modelo no vuelve a realizar el chequeo,
577 por lo que si se quiere levantar una planta desde un XML invalido los resultado
584 Se reforzaron los conocimientos en programación C++ y la programación orientada
586 El modelo utilizado aplica fuertemente estos conceptos, motivo por el cual
587 no fue necesario utilizar un grafo para verificar los flujos por el circuito
591 El programa de desarrollo de interfaces Glade-2, y las bibliotecas Gtk+
592 y Glademm facilitaron mucho la creación del Cliente y el Constructor, y
593 nos hemos familiarizado con sus prestaciones, para crear aplicaciones visuales.
597 Contamos con la ayuda del subversion y una lista de correos pudimos trabajar
598 a distancia cómodamente, lo cual facilitó muchísimo las cosas y permitió
599 que los tres integrantes del equipo pudiéramos contar con la totalidad
600 del proyecto en todo momento, pudiendo conocer el trabajo de los demás
601 y al mismo tiempo reportar
605 o complementar el trabajo de otro.
606 En todo momento estuvimos actualizados sobre el desarrollo.
607 Cabe mencionar que necesitamos juntarnos solamente una vez para distribuirnos
609 El resto del trabajo práctico se realizó a distancia.
612 Nos ha parecido muy importante haber hecho todo el trabajo con ayuda de
613 herramientas comunes de desarrollo de Software Libre, las cuales dejaron
614 un producto final de una calidad igual o superior a cualquier otro entorno
615 de desarrollo de aplicaciones, sobre todo las aplicaciones visuales que
616 aprovechan un excelente trabajo de la GTK+ que suma un valor agregado como
617 la posibilidad de cambiar la apariencia de la aplicación a través de
622 Esto también nos permitió hacer un trabajo práctico usando 100% software
623 legal, cosa que incluso grandes empresas no pueden realizar en muchos casos
624 (ni hablar un estudiante).
627 La documentación online generada con el Doxygen, si es bien utilizado, queda
628 muy completa y es muy fácil realizar una búsqueda con la ayuda de un navegador.
629 Esto puede comprobarse con la documentación online de la biblioteca Gtkmm
635 La documentación en formato HTML del proyecto se encuentra en el CD y en
638 http://www.llucax.hn.org/plaqui/docs/html/
643 Hubo algunas ideas que no pudieron ser implementadas por cuestión de tiempo,
644 y la documentación estaba programada para realizarse en cuatro días, pero
645 tres días antes de la entrega nos enteramos que debíamos entregar el Martes,
646 siendo que nosotros cursábamos los Jueves, lo que redujo el tiempo de documenta
647 ción a sólo dos días.
648 Aún así creemos que se logró hacer un trabajo muy completo de documentación,
649 en parte gracias a Doxygen (como se dijo antes) porque a medida que íbamos
650 escribiendo el código lo íbamos documentando en línea.
653 En general estamos muy conformes con el trabajo y la forma en la cuál fue
654 realizado, cumplimos los requisitos pedidos por el enunciado y creemos
655 que lo hicimos de una manera correcta.
658 El proyecto completo es entregado en un CD que puede ser leído desde cualquier
659 sistema operativo en cualquier tipo de lectora, pero también es un CD
663 con lo cual no es necesario ni siquiera tener un sistema operativo instalado
664 o un disco rígido para poder operar el PlaQui.
665 Basta activar la opción de