]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
- Se termina manual del proyecto.
authorLeandro Lucarella <llucax@gmail.com>
Tue, 2 Dec 2003 18:02:05 +0000 (18:02 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Tue, 2 Dec 2003 18:02:05 +0000 (18:02 +0000)
- Se actualiza TODO.

Constructor/doc/manual.lyx
TODO
docs/manual_proyecto.lyx

index 7e31dea99ca2ba50ae7beb83a3fc1881f59c8e48..aee0c2e6848d2fb5f0dbcf4377fa1b35c45756ed 100644 (file)
@@ -41,13 +41,6 @@ Manual de Usuario
 \end_inset 
 
 
-\layout Author
-
-Nicolás Dimov
-\newline 
-Leandro Lucarella
-\newline 
-Ricardo Markiewicz
 \layout Date
 
 Versión 1.0
diff --git a/TODO b/TODO
index 3d48b9733626adf805cdec9b65a450ef89b194b9..5ab3f7b5e437294a3a41b902b431218043a57cb5 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,19 +1,5 @@
 $Id$
 
-1) Terminar manuales.
-  b) Hacer manual del proyecto.
-    i)   Poner falencias:
-         - Lo de los sockets bloqueantes y conexion suicida.
-         - (sagar, esto anda???) El constructor no pregunta si hay que grabar al salir.
-    ii)  Problemas encontrados (sockets no bloqueantes, colores de gdk?,
-         que la entrega sea el martes cuando cursamos el jueves).
-    iii) (sagar) Terminar conclusiones.
-
-2) Imprimir.
-  a) (luca, gazer) Manuales.
-  b) (gazer) Programas de prueba (calculo que lo que esta en tests/).
-  c) (gazer) Archivos de prueba.
-
 3) (luca) Armar CD.
   a) Generar documentacion en linea (ejecutar doxygen).
   b) Meterle los manuales en PDF y en lo posible en HTML tambien.
@@ -25,5 +11,6 @@ $Id$
     iii) Poner symlink a los archivos de prueba de 4-e).
     iv)  Poner iconos para entrar al plaqui desde el desktop.
     v)   Armar index.html para navegar el CD.
+  f) Poner changelog.
 
 NOTA: Las cosas estan maaas o menos en el orden que habria que ir terminandolas.
index 7b83ce1c146d1feb12fd8c7d1ec47aa34959f660..291174bb88bf82da2ccd9cc15d87eac03943543a 100644 (file)
@@ -1,11 +1,12 @@
 #LyX 1.3 created this file. For more info see http://www.lyx.org/
 \lyxformat 221
-\textclass article
+\textclass book
 \language spanish
 \inputencoding auto
 \fontscheme default
 \graphics default
 \paperfontsize default
+\spacing single 
 \papersize Default
 \paperpackage a4
 \use_geometry 0
 
 \layout Title
 
-Manual del Proyecto PlaQui
+Manual del Proyecto
+\newline 
+PlaQui
+\layout Author
+
+Taller de Programación I
+\newline 
+Universidad de Buenos Aires
 \layout Standard
 
 
@@ -34,7 +42,7 @@ Manual del Proyecto PlaQui
 \end_inset 
 
 
-\layout Section
+\layout Chapter
 
 Integrantes.
 \layout Itemize
@@ -46,7 +54,7 @@ Leandro Lucarella (77.891)
 \layout Itemize
 
 Ricardo Markiewicz (78.226)
-\layout Section
+\layout Chapter
 
 Programas de Prueba.
 \layout Standard
@@ -55,13 +63,26 @@ Los programas de prueba se pueden encontrar en la carpeta
 \emph on 
 tests
 \emph default 
-, allí se almacenaron los primeros ejecutables con los que luego se comenzó
- el desarrollo.
+, allí se almacenaron los primeros ejecutables con los cuales se experimentó
+ en temas que no se habían visto hasta el momento como 
+\emph on 
+drag&drop
+\emph default 
+, 
+\emph on 
+threads
+\emph default 
+ y 
+\emph on 
+sockets
+\emph default 
+.
 \layout Standard
 
 Con la ayuda de la herramienta subversion no fue necesario ir guardando
- parcialmente el proyecto, ya que subversion guarda en un repositorio todas
- las versiones intermedias del proyecto.
+ versiones parciales del proyecto, ya que subversion guarda en un repositorio
+ todas las versiones intermedias por nosotros, a las cuales se puede acceder
+ en cualquier momento.
  Para obtener una versión particular del proyecto basta ejecutar:
 \layout LyX-Code
 
@@ -72,7 +93,7 @@ Donde
 \family typewriter 
 -r
 \family default 
- toma un parametro que puede ser el número de revisión que se quiere obtener
+ toma un parámetro que puede ser el número de revisión que se quiere obtener
  (
 \family typewriter 
 rev
@@ -88,7 +109,7 @@ rev
 svn co -r1 http://svn.llucax.hn.org/svn/plaqui/
 \layout Standard
 
-Y para obtener la versión de la fecha de la preentrega se puede hacer:
+Y para obtener la versión de la fecha de la pre-entrega se puede hacer:
 \layout LyX-Code
 
 svn co -r'{2003-11-20 18:00}' http://svn.llucax.hn.org/svn/plaqui/
@@ -96,7 +117,7 @@ svn co -r'{2003-11-20 18:00}' http://svn.llucax.hn.org/svn/plaqui/
 
 Es por esto que nos pareció que no tenía mucho sentido acompañar este manual
  con una versión particular del repositorio en un momento dado.
-\layout Section
+\layout Chapter
 
 Evolución del proyecto.
 \layout Standard
@@ -121,14 +142,192 @@ svn log -r0:HEAD http://svn.llucax.hn.org/svn/plaqui/
 \layout Standard
 
 Por conveniencia, en el directoria raíz del código fuente entregado en el
- CD se encuentra un archivo ChangeLog con los mensajes de todas las revisiones
- del proyecto.
-\layout Section
+ CD se encuentra un archivo 
+\family typewriter 
+ChangeLog
+\family default 
+ con los mensajes de todas las revisiones del proyecto.
+\layout Standard
+
+A continuación se muestra una gráfica generada con un 
+\emph on 
+script
+\emph default 
+ hecho en Perl (
+\family typewriter 
+log_trace.pl
+\family default 
+, que se adjunta en el CD) que indica la cantidad de 
+\emph on 
+commits
+\emph default 
+ (cambios de versión) que se hicieron día a día, donde cada 
+\family typewriter 
+*
+\family default 
+ representa un 
+\emph on 
+commit
+\emph default 
+.
+\layout LyX-Code
+
+PlaQui - Grafica de Progreso SVN
+\layout LyX-Code
+
+--------------------------------
+\layout LyX-Code
+
+Fecha  Commits
+\layout LyX-Code
+
+2003-10-08     *(luca)
+\layout LyX-Code
+
+2003-10-12     *******(rmarkie)
+\layout LyX-Code
+
+2003-10-13     **(rmarkie|luca)
+\layout LyX-Code
+
+2003-10-15     *(rmarkie)
+\layout LyX-Code
+
+2003-10-16     *(rmarkie)
+\layout LyX-Code
+
+2003-10-17     ***(rmarkie)
+\layout LyX-Code
+
+2003-10-18     **(rmarkie)
+\layout LyX-Code
+
+2003-10-19     ***(luca)
+\layout LyX-Code
+
+2003-10-20     ***(rmarkie|luca)
+\layout LyX-Code
+
+2003-10-21     ***(rmarkie|luca)
+\layout LyX-Code
+
+2003-10-22     ****(luca)
+\layout LyX-Code
+
+2003-10-23     *****(rmarkie)
+\layout LyX-Code
+
+2003-10-24     *****(rmarkie|luca)
+\layout LyX-Code
+
+2003-10-26     *(luca)
+\layout LyX-Code
+
+2003-10-28     ***(sagar|rmarkie)
+\layout LyX-Code
+
+2003-11-06     ****(rmarkie)
+\layout LyX-Code
+
+2003-11-07     **(rmarkie)
+\layout LyX-Code
+
+2003-11-08     ****(rmarkie|sagar|luca)
+\layout LyX-Code
+
+2003-11-11     *****(rmarkie)
+\layout LyX-Code
+
+2003-11-12     ***(rmarkie|sagar|luca)
+\layout LyX-Code
+
+2003-11-13     *********(rmarkie|luca)
+\layout LyX-Code
+
+2003-11-15     *(rmarkie)
+\layout LyX-Code
+
+2003-11-16     *****(rmarkie|luca)
+\layout LyX-Code
+
+2003-11-17     *********(luca)
+\layout LyX-Code
+
+2003-11-18     **************(luca)
+\layout LyX-Code
+
+2003-11-19     *********(luca)
+\layout LyX-Code
+
+2003-11-20     ********************(rmarkie|sagar|luca)
+\layout LyX-Code
+
+2003-11-21     ***(luca)
+\layout LyX-Code
+
+2003-11-22     **(luca)
+\layout LyX-Code
+
+2003-11-23     ************(luca)
+\layout LyX-Code
+
+2003-11-24     ******(rmarkie|luca)
+\layout LyX-Code
+
+2003-11-25     ******(rmarkie|luca)
+\layout LyX-Code
+
+2003-11-26     ***(luca)
+\layout LyX-Code
+
+2003-11-27     ***(rmarkie)
+\layout LyX-Code
+
+2003-11-28     ***(luca)
+\layout LyX-Code
+
+2003-11-29     *****(luca)
+\layout LyX-Code
+
+2003-11-30     ***************(rmarkie|luca)
+\layout LyX-Code
+
+2003-12-01     ****************************************(luca)
+\layout LyX-Code
+
+2003-12-02     *********************************(luca)
+\layout LyX-Code
+
+( ) = Máximo Commiteador del Día
+\layout LyX-Code
+
+* == 1 Commit
+\layout Standard
+
+Los usuarios son:
+\layout Description
+
+sagar Nicolás Dimov
+\layout Description
+
+luca Leandro Lucarella
+\layout Description
+
+rmarkie Ricardo Markiewicz
+\layout Standard
+
+Vale la pena aclarar que en este gráfico no se muestran la cantidad de líneas
+ modificadas, por lo que una gran cantidad de 
+\emph on 
+commits
+\emph default 
+ no significa necesariamente un gran cambio en el repositorio.
+\layout Chapter
 
 División de Tareas.
 \layout Standard
 
-A continuación se menciona, en terminos generales la tarea que realizó cada
+A continuación se menciona, en términos generales la tarea que realizó cada
  integrante:
 \layout Description
 
@@ -147,21 +346,155 @@ Dimov PlaQui Constructor.
 Obviamente en algunas circunstancias algún integrante aporto al desarrollo
  de un módulo que no le estaba asignado.
  La documentación fue realizada y revisada entre todos los integrantes.
-\layout Section
+\layout Chapter
 
 Inconvenientes Encontrados.
-\layout Subsection
+\layout Section
 
 Servidor.
 \layout Standard
 
-El servidor termina su ejecución si el XML que se le pasa como argumento
- no es válido.
-\layout Comment
+El Servidor trajo varios problemas, en especial en cuanto al manejo de 
+\emph on 
+sockets
+\emph default 
+ y 
+\emph on 
+threads
+\emph default 
+.
+ El uso de señales (para hacer el servidor orientado a eventos) dio también
+ algunos problemas menores.
+\layout Subsection
+
+
+\emph on 
+Threads
+\emph default 
+.
+\layout Standard
+
+El principal problema de los threads fue el no poder saber fácilmente donde
+ se producía un error, en especial cuando el error venía por la falta de
+ un 
+\emph on 
+mutex
+\emph default 
+.
+ En términos generales, cada vez que el server tenía una violación de segmento
+ se debía a la falta de un 
+\emph on 
+mutex
+\emph default 
+.
+\layout Standard
+
+Otro problema eran las excepciones no manejadas dentro del método 
+\family typewriter 
+real_run()
+\family default 
+ (que se ejecuta en su propio 
+\emph on 
+thread
+\emph default 
+).
+ Aunque se incluía un bloque 
+\family typewriter 
+try ; catch
+\family default 
+ en el programa principal, al ocurrir una excepción en un 
+\emph on 
+thread
+\emph default 
+, dicha excepción no 
+\emph on 
+sube
+\emph default 
+ hasta el hilo padre y el programa sale con 
+\family typewriter 
+abort()
+\family default 
+.
+ Es por esto que cada 
+\family typewriter 
+real_run()
+\family default 
+ tiene su propio bloque 
+\family typewriter 
+try ; catch
+\family default 
+ donde pueda surgir una excepción y se incluyó la 
+\family typewriter 
+signal_error()
+\family default 
+ en 
+\family typewriter 
+Runnable
+\family default 
+ para poder avisar de dicho error a quien lo necesite.
+\layout Subsection
+
+
+\emph on 
+Sockets
+\emph default 
+.
+\layout Standard
+
+El principal problema con los 
+\emph on 
+sockets
+\emph default 
+ fue la imposibilidad (por enunciado) de usar 
+\emph on 
+sockets
+\emph default 
+ no bloqueantes.
+ Esto tuvo particular repercusión en el 
+\family typewriter 
+TCPServer
+\family default 
+, ya que una vez llamado al 
+\family typewriter 
+accept()
+\family default 
+ para aceptar una nueva conexión, esta no retorna hasta que efectivamente
+ se reciba una nueva conexión, haciendo imposible terminar el servidor de
+ otra manera.
+ Para resolver esto, al finalizar el 
+\family typewriter 
+TCPServer
+\family default 
+ se hace una 
+\emph on 
+conexión suicida
+\emph default 
+ para hacer que la llamada a 
+\family typewriter 
+accept()
+\family default 
+ retorne y el servidor pueda ser cerrado limpiamente.
+\layout Subsection
+
+Señales.
+\layout Standard
 
-los otros puntos no se como explicarlos (sockets no bloqueantes etc)
+La señales no dieron mayores problemas.
+ El único inconveniente es que complican la depuración del programa, ya
+ que uno no sabe de antemano quien las atenderá y se hace difícil seguir
+ el flujo del mismo.
 \layout Subsection
 
+Falencias.
+\layout Standard
+
+El Server está preparado para servir (y simular) una cantidad indeterminada
+ de plantas.
+ Por problemas de tiempo esto no se llegó a implementar correctamente en
+ el programa, en particular por la complicación que traería implementar
+ dicha función en el cliente.
+\layout Section
+
 Constructor.
 \layout Standard
 
@@ -170,7 +503,7 @@ A lo largo del desarrollo nos hemos encontrado con diferentes tipos de problemas
  
 \layout Standard
 
-Al tabajar con imágenes independientes, las verificaciones sobre cada una
+Al trabajar con imágenes independientes, las verificaciones sobre cada una
  de estas, dependen mucho de su posición en el área de trabajo y su orientación.
  Esto provoca que haya que realizar demasiadas validaciones para los diferentes
  tipos de verificaciones, y trae apareados problemas en la codificación
@@ -184,27 +517,38 @@ Otro inconveniente no solucionado, fue que las im
  que para un elemento de cuatro imágenes, se cargarían en memoria solamente
  esas cuatro imágenes y luego los elementos iguales apuntarían su imagen
  actual a la que corresponda.
- Esto no pudo ser solucionado pués no encontramos la forma de inicializar
+ Esto no pudo ser solucionado pues no encontramos la forma de inicializar
  las imágenes de manera estática, se producían errores en el momento del
  linkeo.
 \layout Standard
 
-Por probemas de tiempo, hubo algunas implementaciones sobre el Constructor
+Por problemas de tiempo, hubo algunas implementaciones sobre el Constructor
  luego de cerrado el tema de la documentación, por ejemplo, el Constructor
  pregunta si quiere guardar el trabajo antes de salir del programa.
  Esto no fue documentado.
-\layout Subsection
+\layout Section
 
 Cliente.
 \layout Standard
 
-El principal problema del cliente fueron las threads.
+El principal problema del cliente fueron los 
+\emph on 
+threads
+\emph default 
+.
  El asunto fue descubrir la forma de hacer que las actualizaciones de refresco
- de las propiedades y la creación dinámica de objetos sea thread-safe para
- garantizar a la Gtk+ cierta estabilidad.
- Luego de mucho leer se encontro el Glib::Distpatcher, que es un evento
- asíncrono especialmente diseñado para comunicación entre hilos.
-\layout Subsection
+ de las propiedades y la creación dinámica de objetos sea 
+\emph on 
+thread-safe
+\emph default 
+ para garantizar a la Gtk+ cierta estabilidad.
+ Luego de mucho leer se encontró el 
+\family typewriter 
+Glib::Distpatcher
+\family default 
+, que es un evento asíncrono especialmente diseñado para comunicación entre
+ hilos.
+\layout Section
 
 Modelo.
 \layout Standard
@@ -215,7 +559,7 @@ El Modelo ten
  en forma asíncrona.
  Luego de mucho diseño, análisis de todas las combinaciones posibles entre
  las entradas se llego a un método que resulto exitoso en la mayoría de
- las pruebas y fue adoptado como definivito.
+ las pruebas y fue adoptado como definitivo.
 \layout Standard
 
 Otro inconveniente fue la suma de colores.
@@ -226,9 +570,15 @@ Otro inconveniente fue la suma de colores.
  distribución RGB.
  En base a sus recomendaciones hicimos las sumas de colores en los distintos
  objetos.
-\layout Section
+\layout Standard
+
+Por último, al verificarse la validez del conexionado de un archivo XML
+ de planta en el Constructor, el Modelo no vuelve a realizar el chequeo,
+ por lo que si se quiere levantar una planta desde un XML invalido los resultado
+s son impredecibles.
+\layout Chapter
 
-Conclusiones Generales.
+Conclusiones.
 \layout Standard
 
 Se reforzaron los conocimientos en programación C++ y la programación orientada
@@ -238,54 +588,87 @@ Se reforzaron los conocimientos en programaci
  creado.
 \layout Standard
 
-Con el programa de desarrollo de interfaces, Glade-2, y las bibliotecas
- Gtk+ y Glademm facilitaron mucho la creación del Cliente y el Constructor,
- y nos hemos familiarizado con sus prestaciones, para crear aplicaciones
- visuales.
+El programa de desarrollo de interfaces Glade-2, y las bibliotecas Gtk+
+ y Glademm facilitaron mucho la creación del Cliente y el Constructor, y
+ nos hemos familiarizado con sus prestaciones, para crear aplicaciones visuales.
  
 \layout Standard
 
-Contamos con la ayuda de trabajar a distancia, gracias al subversion el
- cual facilitó muchisimo las cosas y permitió que los tres integrantes del
- equipo pudieramos contar con la totalidad del proyecto en todo momento,
- pudiendo conocer el trabajo de los demás y al mismo tiempo reportar 
-\begin_inset Quotes eld
-\end_inset 
-
+Contamos con la ayuda del subversion y una lista de correos pudimos trabajar
+ a distancia cómodamente, lo cual facilitó muchísimo las cosas y permitió
+ que los tres integrantes del equipo pudiéramos contar con la totalidad
+ del proyecto en todo momento, pudiendo conocer el trabajo de los demás
+ y al mismo tiempo reportar 
+\emph on 
 bugs
-\begin_inset Quotes erd
-\end_inset 
-
+\emph default 
  o complementar el trabajo de otro.
  En todo momento estuvimos actualizados sobre el desarrollo.
+ Cabe mencionar que necesitamos juntarnos solamente una vez para distribuirnos
+ las tareas.
+ El resto del trabajo práctico se realizó a distancia.
 \layout Standard
 
 Nos ha parecido muy importante haber hecho todo el trabajo con ayuda de
- herramientas comunes de desarrollo de software libre, las cuales dejaron
+ herramientas comunes de desarrollo de Software Libre, las cuales dejaron
  un producto final de una calidad igual o superior a cualquier otro entorno
- de desarrollo de aplicaciones, sobre todo las aplicaciones visuales.
+ de desarrollo de aplicaciones, sobre todo las aplicaciones visuales que
+ aprovechan un excelente trabajo de la GTK+ que suma un valor agregado como
+ la posibilidad de cambiar la apariencia de la aplicación a través de 
+\emph on 
+themes
+\emph default 
+, sin costo alguno.
+ Esto también nos permitió hacer un trabajo práctico usando 100% software
+ legal, cosa que incluso grandes empresas no pueden realizar en muchos casos
+ (ni hablar un estudiante).
 \layout Standard
 
 La documentación online generada con el Doxygen, si es bien utilizado, queda
  muy completa y es muy fácil realizar una búsqueda con la ayuda de un navegador.
  Esto puede comprobarse con la documentación online de la biblioteca Gtkmm
- (www.gtkmm.org).
+ (
+\family typewriter 
+www.gtkmm.org
+\family default 
+).
+ La documentación en formato HTML del proyecto se encuentra en el CD y en
+\family typewriter 
+http://www.llucax.hn.org/plaqui/docs/html/
+\family default 
+.
 \layout Standard
 
 Hubo algunas ideas que no pudieron ser implementadas por cuestión de tiempo,
  y la documentación estaba programada para realizarse en cuatro días, pero
- tres días antes de la entrega nos avisaron que debíamos entregar el martes,
- siendo que nosotros cursábamos los jueves, lo que redujo el tiempo de documenta
-ción a solo dos días.
+ tres días antes de la entrega nos enteramos que debíamos entregar el Martes,
+ siendo que nosotros cursábamos los Jueves, lo que redujo el tiempo de documenta
+ción a sólo dos días.
+ Aún así creemos que se logró hacer un trabajo muy completo de documentación,
+ en parte gracias a Doxygen (como se dijo antes) porque a medida que íbamos
+ escribiendo el código lo íbamos documentando en línea.
 \layout Standard
 
-En general estamos muy conformes con el trabajo y la forma en la cuál fué
+En general estamos muy conformes con el trabajo y la forma en la cuál fue
  realizado, cumplimos los requisitos pedidos por el enunciado y creemos
- que lo hicimos de una manera sobresaliente.
+ que lo hicimos de una manera correcta.
 \layout Standard
 
-El proyecto completo es entregado en un CD que puede ser leido desde cualquier
- sistema operativo en cualquier tipo de lectora, y también es un CD booteable
- con lo cual no es necesario ni siquiera tener un sistema opertativo instalado
+El proyecto completo es entregado en un CD que puede ser leído desde cualquier
+ sistema operativo en cualquier tipo de lectora, pero también es un CD 
+\emph on 
+booteable
+\emph default 
+ con lo cual no es necesario ni siquiera tener un sistema operativo instalado
  o un disco rígido para poder operar el PlaQui.
+ Basta activar la opción de 
+\emph on 
+booteo
+\emph default 
+ desde el CD en el 
+\emph on 
+BIOS
+\emph default 
+ y colocar el CD.
 \the_end