[Pfc-prolog-cvs] prolix-doc/pfc-es/introduccion bibliografia.tex,NONE,1.1 herramientas.tex,1.1,1.2 s
Status: Beta
Brought to you by:
ivanfrade
From: <iva...@us...> - 2003-08-19 01:16:36
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion In directory sc8-pr-cvs1:/tmp/cvs-serv26082/introduccion Modified Files: herramientas.tex solo_intro.tex Added Files: bibliografia.tex Log Message: Incluida referencias web en la introduccion - mejorada seccion objetivos --- NEW FILE: bibliografia.tex --- \newcommand{\url}[1]{\texttt{#1}} \renewcommand{\bibname}{Referencias} \begin{thebibliography}{11} \bibitem{debian-web}Proyecto Debian GNU/Linux: \url{http://debian.org} \bibitem{blackdown-web}Proyecto Blackdown: \url{http://www.blackdown.org} \bibitem{gnu-fsf}Free Software Foundation: \url{http://www.gnu.org} \bibitem{gnu-emacs-web}GNU Emacs: \url{http://www.gnu.org/software/emacs/emacs.html} \bibitem{xemacs-web}XEmacs: \url{http://www.xemacs.org} \bibitem{jdee-web}JDEE: \url{http://jdee.sunsite.dk/rootpage.html} \bibitem{licencia-gpl}Licencia GPL: \url{http://www.gnu.org/licenses/licenses.html} \bibitem{ant-web}Ant: \url{http://ant.apache.org/} \bibitem{xdoclet-web}XDoclet: \url{http://xdoclet.sourceforge.net/index.html} \bibitem{j2ee-web}Plataforma J2EE: \url{http://java.sun.com/j2ee/} \bibitem{jboss-web}jBoss: \url{http://www.jboss.org/index.html} \bibitem{phpmyadmin-web}phpMyAdmin: \url{http://www.phpmyadmin.net/} \bibitem{struts-web}Struts: \url{http://jakarta.apache.org/struts/} \bibitem{jakarta-web}Proyecto Jakarta: \url{http://jakarta.apache.org/} \bibitem{wafer-web}Wafer: \url{http://www.waferproject.org/index.html} \bibitem{cvs-web}CVS: \url{http://www.cvshome.org/} \bibitem{sourceforge-web}Sourceforge: \url{http://www.sourceforge.net} \end{thebibliography} Index: herramientas.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/herramientas.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** herramientas.tex 18 Aug 2003 18:44:55 -0000 1.1 --- herramientas.tex 19 Aug 2003 01:16:34 -0000 1.2 *************** *** 16,20 **** \item Herramienta de compilación Ant \item Generador de código XDoclet 1.2b3 ! \item Implementación del entorno J2EE jBOSS \item Servidor de Base de Datos mySQL \item Gestión de la base de datos phpMyAdmin --- 16,20 ---- \item Herramienta de compilación Ant \item Generador de código XDoclet 1.2b3 ! \item Implementación de la plataforma J2EE jBoss \item Servidor de Base de Datos mySQL \item Gestión de la base de datos phpMyAdmin *************** *** 24,50 **** \item Sistema de control de bugs (proporcionado por sourceforge.net) \item Sistema de composición de textos \LaTeX \end{itemize} \subsubsection {Sistema Operativo Debian GNU/Linux} ! El proyecto comenzó a desarrollarse en la versión <<woody>> de Debian GNU/Linux, hasta este momento la versión estable, pero muchas de las herramientas utilizadas no estaban <<empaquetadas>> (precompiladas) para este sistema. El problema no es solo tener que buscar, bajar, y compilar los programas, sino la molestia de mantener al dia las versiones. La actualización a Sid corrigió este problema. Más software, más moderno y actualizado mucho mas a menudo esta a disposición del usuario con esta distribución, al coste de ser considerada <<inestable>>. Es interesante mencionar que durante el desarrollo del proyecto esta presunta <<inestabilidad>> brilló por su ausencia. \subsubsection {Entorno de desarrollo Java Blackdown 1.4} ! Blackdown se encarga de portar a linux el JDK Java de Sun. Empezó siendo el unico entorno disponible en linux, pero hoy en dia hay disponible incluso el famoso JBuilder. %FIXME poner mas \subsubsection {Editor XEmacs con JDE} ! El editor XEmacs es uno de los emblemas del software libre. Se trata de un editor de texto escrito en lisp, desarrollado originalmente por Richard Stallman (uno de los padres del software libre y de la Free Software Foundation). Como editor de texto simple incluye combinaciones de teclas para todos los eventos habituales (ir al principio, final del fichero, o linea o parrafo, borrar una linea, insertar una linea en blanco, avanzar o retroceder u palabra o linea,\dots), pero también dispone de decenas de opciones, algunas muy utiles y otras mas bien curiosas. En el aspecto util de editor, permite comparar ficheros, aplicar parches, y reconoce numerosos formatos a los que puede colorear la sintaxis (Tex, java, c, c++, haskell, \dots). En el aspecto mas lúdico-curioso, dispone de agenda, lector de correo, lector de news, juegos como el buscaminas o el tetris, \dots !incluso de un psicoanalista!. ! JDE (Java Desktop Environment) es un paquete de extras para xemacs que integra el editor con el JDK de java. El resultado es el de un Entorno de Desarrollo Integrado (IDE) en nuestro editor habitual. Con unos pequeños retoques a la configuración, podemos compilar nuestro proyecto con una combinación de teclas (Ctrl + (c v b)), obteniendo los errores en una de las ventanas del xemacs, en la que, seleccionando el error nos lleva a la linea de codigo que causa el problema. Otra de las utilidades, es la de automatizar los imports en java. Cuando se utiliza una clase, basta con ponerse encima del nombre de esa clase, usar la combinación ctrl + (c v z)) y ya coloca la linea con el import correspondiente en el lugar apropiado del fichero (la clase debe estar accesible en el CLASSPATH). Y una característica especialmente util, es la de autocompletar nombres de funciones, de nuevo con otra combinación de teclas (ctrl + (c v) .). ! Estan son las carácterísticas mas usadas para el desarrollo del proyecto, pero hay muchas más que es posible utilizar como la <<speedbar>> para navegar por el código, o los asistentes para generar código (get-set de atributos, o el esqueleto de una clase). ! Con un cierto aprendizaje es posible añadir mas plantillas para automatizar ciertas tareas, como incluir la licencia GPL en cada fichero de código fuente. \subsubsection{Herramienta de compilación Ant} ! A los programadores habituados a C o C++, o usuarios de software libre que hayan compilado algun programa, les sonará la herramienta <<make>>. Esta herramienta procesa un fichero con las instrucciones necesarias para compilar el programa, instalarlo, y otras operaciones habituales, facilitando el proceso de compilacion (no es necesario escribir a mano un comando de compilación muy engorroso o activa todo lo necesario para no recompilar ficheros que no han cambiado\dots). ! Ant cumple la misma función que <<make>> pero desarrollado en java y orientado a proyectos en java. <<make>> resulta muy dependiente de la plataforma, pues al fin y al cabo se parece mucho a un archivo de comandos para ejecutar por el shell del sistema operativo, y la sintaxis de sus ficheros además de complicada es muy quisquillosa con espaciados, lineas en blanco\dots Ant es multiplataforma, y utiliza un fichero XML con todas las ventajas de este en cuanto a facilidad de manejo y comprensión. ! El fichero XML utilizado por Ant se conoce como <<buildfile>> (al igual que en <<make>> se habla de <<makefile>>) y por defecto se utiliza el build.xml que debe estar en la raiz del proyecto. En él se definen objetivos (targets), que pueden depender de otros objetivos (el objetivo-desplegar-aplicación depende del objetivo-compilar) e incluyen tareas a ejecutar. Ant tiene definidas casi todas las tareas habituales de un proyecto: compilar, establecer los <<paths>> con las librerias, generar la JavaDoc, construir ficheros .jar o .war, copiar, mover o borrar ficheros, etc\dots Pero además se pueden añadir tareas a medida implementando algunos interfaces en Java. Por ejemplo no incluye tarea para compilar documentos en \LaTeX como esta documentación y fue necesario utilizar una tarea externa. --- 24,55 ---- \item Sistema de control de bugs (proporcionado por sourceforge.net) \item Sistema de composición de textos \LaTeX + % XSLT + % SVG + % Batik \end{itemize} \subsubsection {Sistema Operativo Debian GNU/Linux} ! El proyecto comenzó a desarrollarse en la versión <<woody>> de Debian GNU/Linux\cite{debian-web}, hasta este momento la versión estable, pero muchas de las herramientas utilizadas no estaban <<empaquetadas>> (precompiladas) para este sistema. El problema no es solo tener que buscar, bajar, y compilar los programas, sino la molestia de mantener al dia las versiones. La actualización a <<sid>> corrigió este problema. Más software, más moderno y actualizado mucho mas a menudo esta a disposición del usuario con esta distribución, al coste de ser considerada <<inestable>>. Es interesante mencionar que durante el desarrollo del proyecto esta presunta <<inestabilidad>> brilló por su ausencia. \subsubsection {Entorno de desarrollo Java Blackdown 1.4} ! El proyecto Blackdown\cite{blackdown-web} se encarga de portar a linux el JDK Java de Sun. Empezó siendo el unico entorno disponible en linux, pero hoy en dia hay disponible incluso el famoso JBuilder. %FIXME poner mas \subsubsection {Editor XEmacs con JDE} ! El editor GNU Emacs es uno de los emblemas del software libre. Se trata de un editor de texto escrito en Lisp, desarrollado originalmente por Richard Stallman (uno de los padres del software libre y de la Free Software Foundation\cite{gnu-fsf}). Debido a diferencias entre los desarrolladores, se produjo una división del proyecto, diferenciandose así la versión GNU Emacs\cite{gnu-emacs-web} de XEmacs\cite{xemacs-web}. Es esta última la utilizada para el desarrollo de \texttt{Prolix} ! Como editor de texto simple incluye combinaciones de teclas para todos los eventos habituales (ir al principio, final del fichero, o linea o parrafo, borrar una linea, insertar una linea en blanco, avanzar o retroceder u palabra o linea,\dots), pero también dispone de decenas de opciones, algunas muy utiles y otras mas bien curiosas. En el aspecto util de editor, permite comparar ficheros, aplicar parches, y reconoce numerosos formatos a los que puede colorear la sintaxis (Tex, java, c, c++, haskell, \dots). En el aspecto mas lúdico-curioso, dispone de agenda, lector de correo, lector de news, juegos como el buscaminas o el tetris, \dots !incluso de un psicoanalista!. ! JDE\cite{jdee-web} (Java Development Environment) es un paquete de extras para XEmacs (y GNU Emacs) que integra el editor con el JDK de java. El resultado es el de un Entorno de Desarrollo Integrado (IDE) en nuestro editor habitual. Con unos pequeños retoques a la configuración, podemos compilar nuestro proyecto con una combinación de teclas (\textsf{Ctrl + (c v b)}), obteniendo los errores en una de las ventanas del XEmacs, en la que, seleccionando el error nos lleva a la linea de codigo que causa el problema. Otra de las utilidades, es la de automatizar los imports en java. Cuando se utiliza una clase, basta con ponerse encima del nombre de esa clase, usar la combinación \textsf{ctrl + (c v z)} y ya coloca la linea con el import correspondiente en el lugar apropiado del fichero (la clase debe estar accesible en el CLASSPATH). Y una característica especialmente util, es la de autocompletar nombres de funciones, de nuevo con otra combinación de teclas (\textsf{ctrl + (c v) .}). ! Estan son las características mas usadas para el desarrollo del proyecto, pero hay muchas más que es posible utilizar como la <<speedbar>> para navegar por el código, o los asistentes para generar código (get-set de atributos, o el esqueleto de una clase). ! ! Con un cierto aprendizaje es posible añadir mas plantillas para automatizar ciertas tareas, como incluir la licencia GPL\cite{licencia-gpl} en cada fichero de código fuente. \subsubsection{Herramienta de compilación Ant} ! A los programadores habituados a C o C++, o usuarios de software libre que hayan compilado algun programa, les sonará la herramienta \texttt{make}. Esta herramienta procesa un fichero con las instrucciones necesarias para compilar el programa, instalarlo, y otras operaciones habituales, facilitando el proceso de compilacion (no es necesario escribir a mano un comando de compilación muy engorroso o activa todo lo necesario para no recompilar ficheros que no han cambiado\dots). ! Ant\cite{ant-web} cumple la misma función que \texttt{make} pero desarrollado en java y orientado a proyectos en este lenguaje. \texttt{make} resulta muy dependiente de la plataforma, pues al fin y al cabo se parece mucho a un archivo de comandos para ejecutar por el shell del sistema operativo, y la sintaxis de sus ficheros además de complicada es muy quisquillosa con espaciados, lineas en blanco\dots Ant es multiplataforma, y utiliza un fichero XML con todas las ventajas de este en cuanto a facilidad de manejo y comprensión. ! El fichero XML utilizado por Ant se conoce como \texttt{buildfile} (al igual que en \texttt{make} se habla de \texttt{makefile}) y por defecto se utiliza el \texttt{build.xml} que debe estar en la raiz del proyecto. En él se definen objetivos (targets), que pueden depender de otros objetivos (el objetivo-desplegar-aplicación depende del objetivo-compilar) e incluyen tareas a ejecutar. Ant tiene definidas casi todas las tareas habituales de un proyecto: compilar, establecer los <<paths>> con las librerias, generar la JavaDoc, construir ficheros .jar o .war, copiar, mover o borrar ficheros, etc\dots Pero además se pueden añadir tareas a medida implementando algunos interfaces en Java. Por ejemplo no incluye tarea para compilar documentos en \LaTeX como esta documentación y fue necesario utilizar una tarea externa. *************** *** 76,84 **** \subsubsection{Generador de código XDoclet} ! En el desarrollo de aplicaciones J2EE es necesario escribir varios ficheros por cada clase <<util>> que desarrollamos (codigo de negocio, interfaz local, interfaz remoto, objeto Value, \dots), que deben ser coherentes entre si, y con muchas dependencias sencillas pero propensas a error (definir un atributo, escribir sus métodos get y set, con el nombre del atributo pero la primera letra en mayúscula, los constructores con las iniciales ejb, \dots). En realidad se trata de normas facilmente automatizables, y esa es la función de xdoclet: escribiendo un único fichero con la información necesaria, él genera todas las clases auxiliares. Esto supone 2 ventajas principalmente: se elimina el factor error humano en la generación de código repetido, y el desarrollador puede centrarse en escribir una única clase con el código util. Y el resultado de estas 2 es que los cambios en la clase util se propagan a todos los ficheros generados: si se cambia el nombre de un método podemos estar seguros de que se cambia en todos los lugares donde aparece. ! XDoclet obtiene la información necesaria del mismo código de la clase, y luego puede darsele información adicional en etiquetas, especificando que necesitamos que genere y algunos datos que no puede deducir. Esta desarrollado como tareas para Ant. En Prolix se utilizan 2: EJBDoclet para generar el código relacionado con EJB's (Enterprise Java Beans) y WEBDoclet, para generar los ficheros de despliege de la aplicación web en el contenedor de trabajo, que para Prolix fue jBoss). ! Ejemplo de etiquetas incluidas al principio del fichero java de un EntityBean: Solo con la primera el Xdoclet sabria generar la información para el contenedor. Con la \texttt{@ejb.value-object} definimos objetos Value, y con la \texttt{@ejb.finder} metodos que nos permiten obtener todos los EntityBean que cumplen unas determinadas condiciones. \begin{verbatim} --- 81,89 ---- \subsubsection{Generador de código XDoclet} ! En el desarrollo de aplicaciones J2EE es necesario escribir varios ficheros por cada clase <<util>> que desarrollamos (codigo de negocio, interfaz local, interfaz remoto, objeto Value, \dots), que deben ser coherentes entre si, y con muchas dependencias sencillas pero propensas a error (definir un atributo, escribir sus métodos get y set, con el nombre del atributo pero la primera letra en mayúscula, los constructores con las iniciales ejb, \dots). En realidad se trata de normas facilmente automatizables, y esa es la función de XDoclet\cite{xdoclet-web}: escribiendo un único fichero con la información necesaria, él genera todas las clases auxiliares. Esto supone 2 ventajas principalmente: se elimina el factor error humano en la escritura de código repetido, y el desarrollador puede centrarse en escribir una única clase con el código util. Y el resultado de estas 2 es que los cambios en la clase util se propagan a todos los ficheros generados: si se cambia el nombre de un método podemos estar seguros de que se cambia en todos los lugares donde aparece y en todos los descriptores de despliegue y ficheros auxiliares utilizados en la aplicación. ! XDoclet obtiene la información necesaria del mismo código de la clase, y luego puede darsele información adicional en etiquetas, especificando qué necesitamos que genere y algunos datos que no puede deducir. Esta desarrollado como tareas para Ant. En \texttt{Prolix} se utilizan 2: EJBDoclet para generar el código relacionado con EJB's (Enterprise Java Beans) y WEBDoclet, para generar los ficheros de despliege de la aplicación web en el contenedor de trabajo, que para \texttt{Prolix} fue jBoss). ! Ejemplo de etiquetas incluidas al principio del fichero java de un EntityBean: Solo con la primera el XDoclet sabria generar la información para el contenedor. Con la \texttt{@ejb.value-object} definimos objetos Value, y con la \texttt{@ejb.finder} metodos que nos permiten obtener todos los EntityBean que cumplen unas determinadas condiciones. \begin{verbatim} *************** *** 120,131 **** * @ejb.value-object match="short" */ ! public abstract java.lang.String getTitle(); } \end{verbatim} ! \subsubsection{jBOSS} ! El entorno de desarrollo J2EE define unos interfaces y unos requisitos que espera encontrar en un <<contenedor>> de aplicaciones. Hay diferentes implementaciones de estos requerimientos, y para Prolix se utilizó el contenedor jBOSS. ! Es un proyecto distribuido como software libre, esta albergado en Sourceforge y es uno de los proyectos estrella en cuanto al índice de actividad. \subsubsection{Servidor de Base de Datos mySQL} --- 125,138 ---- * @ejb.value-object match="short" */ ! public abstractstract java.lang.String getTitle(); } \end{verbatim} ! \subsubsection{jBoss} ! La plataforma J2EE\cite{j2ee-web} define un amplio conjunto de estándares con todo lo necesario para el desarrollo y despliege de aplicaciones web (conectividad a bases de datos, transacciones, presentación, <<middleware>>,\dots). Fue definido por Sun e IBM en 1999. Para el desarrollo y puesta en marcha de aplicaciones web que cumplan estas recomendaciones es necesaria una implementación de esos estándares, en lo que se conoce como <<contenedor>> de aplicaciones. Hay varios en el mercado, la mayoria de ellos de pago. Para el desarrollo de \texttt{Prolix} se utilizó la implementación jBoss\cite{jboss-web}. ! Es un proyecto distribuido como software libre, esta albergado en Sourceforge y es uno de los proyectos estrella en cuanto al índice de actividad (cuenta con 10 desarrolladores fijos y mas de 50 colaboradores). ! ! %FIXME Hablar de alternativas y precios. \subsubsection{Servidor de Base de Datos mySQL} *************** *** 133,168 **** \subsubsection{Gestión de la base de datos phpMyAdmin} ! phpMyAdmin es un interfaz web escrito en PHP para trabajar con las bases de datos de MySQL. Es un proyecto software libre, que al igual que jBOSS esta albergado en Sourceforge y tiene un indice de actividad muy alto. Así, a traves de páginas web podemos manejar tanto el servidor completo de MySQL como una sola base de datos (ajustando convenientemente los permisos). Además de todas las tareas habituales (crear y borrar bases de datos, crear, copiar, modificar tablas, añadir y borrar datos, etc\dots) tambien exporta datos en XML y Latex. ! La versión utilizada es la 2.5.2 y permite escoger más de 40 idiomas, incluido catalán o gallego. Necesita para funcionar PHP3.0.8 o superior, y MySQL al menos la versión 3.21.x). \subsubsection{Entorno de desarrollo de aplicaciones web Struts} ! %FIXME Use the Web luke \subsubsection{Sistema de control de versiones CVS} ! Cuando varios desarrolladores trabajan en un proyecto, la tarea de coordinar el trabajo y mantener el codigo fuente al dia se complica. Además, si se modifica la misma parte de código y surgen problemas, resulta interesante saber quién y cuando la cambió, que habia antes, \dots Para resolver todos estos problema disponemos del CVS. En pocas palabras es una especie de <<copia virtual>> del proyecto, que se actualiza por transacciones cuando el programador decide: hace una copia local, trabaja sobre ella, realizando los cambios que considere oportunos y despues manda esos cambios a la copia virtual. Si durante el tiempo intermedio de trabajo otra persona subió cambios a esa copia virtual, el CVS se da cuenta e informa al segundo programador de ello (!si los cambios colisionan!, es decir, se modificó la misma parte de código). Así, varias personas pueden trabajar concurrentemente en el proyecto. ! En el caso de Prolix, donde solo hay un desarrollador, el CVS sigue resultando util para mantener una única versión del proyecto, a pesar de que el desarrollador trabaje desde distintos lugares y ordenadores. ! Sobre las modificaciones del código y su control, el CVS guarda las diferencias entre las sucesivas versiones, pudiendo volver de forma sencilla a cualquiera de ellas, o simplemente observar los cambios para entender la evolución del proyecto, y con el uso de <<tags>> (etiquetas) podemos <<marcar>> un momento determinado del proyecto (en Prolix esto se hizo con los releases), permitiendo así poder volver a ese estado del proyecto si es necesario. Es decir: podria obtenerse el codigo tal cual estaba cuando se hizo el lanzamiento de la version 0.1, por ejemplo. % FIXME: ejemplo de un diff ! La copia virtual del trabajo debe guardarse en alguna máquina que haga de servidor del CVS (puede ser local o remota), y se debe utilizar un cliente de CVS para obtener la copia de trabajo. Hay programas cliente para casi todas las plataformas y sistemas operativos. En el caso de Prolix se utilizó el servidor de CVS de sourceforge, y el cliente de consola incluido en Debian GNU/Linux. \subsubsection {Sourceforge.net} ! El proyecto Prolix esta albergado en el sitio web sourceforge.net. Sourceforge alberga proyectos de software libre y pone a disposición del programador/es una serie de herramientas muy utiles en el desarrollo de proyectos (indispensables si hay implicados varios desarrolladores). Las utilizadas por este proyecto son: \begin{itemize} ! \item Sistema de control de versiones CVS. Prolix alberga 4 modulos: \begin{itemize} \item prolix. Codigo fuente del proyecto, y ficheros necesarios para su compilación, excepto las librerias auxiliares. Estas están disponibles en la página web del proyecto. \item prolix-devel-doc. Documentación sobre el diseño de la aplicación. Diagramas UML, planificación temporal, estructura de directorios utilizada y en general información interesante solo para desarrolladores. \item prolix-doc. Documentación del proyecto. Aqui esta albergado el código fuente de este tomo. ! \item prolix-web. Para el desarrollo de la página web del proyecto. Nos referimos a la página web <<informátiva>> de prolix, y no a la web que el usuario se va a encontrar al utilizar Prolix. \end{itemize} ! \item Listas de correo para uso del proyecto. Prolix utiliza 4: \begin{itemize} \item pfc-prolog-users: para mensajes de usuarios en general. --- 140,184 ---- \subsubsection{Gestión de la base de datos phpMyAdmin} ! phpMyAdmin\cite{phpmyadmin-web} es un interfaz web escrito en PHP para trabajar con las bases de datos de MySQL. Es un proyecto software libre, que al igual que jBoss esta albergado en Sourceforge y tiene un indice de actividad muy alto. Así, a traves de páginas web podemos manejar tanto el servidor completo de MySQL como una sola base de datos (ajustando convenientemente los permisos). Además de todas las tareas habituales (crear y borrar bases de datos, crear, copiar, modificar tablas, añadir y borrar datos, etc\dots) tambien exporta datos en XML y Latex. ! La versión utilizada es la 2.5.2 y permite escoger más de 40 idiomas, incluido catalán o gallego. Necesita para funcionar PHP3.0.8 o superior, y MySQL al menos la versión 3.21.x. \subsubsection{Entorno de desarrollo de aplicaciones web Struts} ! Struts\cite{struts-web} es uno de los proyectos del grupo Jakarta, que desarrolla el servidor Web Apache. Implementa una biblioteca de clases en java que facilitan la construcción de aplicaciones web, de acuerdo con el paradigma de diseño Modelo-Vista-Controlador. ! ! Esta construido con elementos estandar (JavaServlets, JavaBeans, XML,\dots) y proporciona un conjunto de clases cuya utilidad extendemos para nuestra aplicación obteniendo una separación muy clara entre el control de la navegación, el codigo que actua sobre los datos, y la representación de estos, quedando así un esquema de aplicación donde la parte Web solo representa datos, lo que da lugar a un diseño mas robusto a la par que flexible a cambios. ! ! De esta forma el diseño de la aplicación web se resume en unas páginas en JSP que representan datos o los recogen en formularios que con Struts se tratan en una clase donde ser verifica su validez, para, si son correctos, pasarlos a una clase Accion. Esta realiza las tareas necesarias, habla con la aplicacion, actualiza los datos y en función de lo que haya ocurrido decide a que página mandar al usuario. ! ! Podemos encontrar varios entornos de desarrollo (más de 20) que ofrecen facilidades como estas (con distintas aproximaciones), muchos de ellos software libre, sin embargo Struts en este momento es el más utilizado, hay publicados al menos 6 libros sobre este entorno, y parece que IBM va a adaptar su WebSphere para poder utilizarlo. Teniendo también en cuenta que se trata de un proyecto de Jakarta, el grupo que desarrolla Apache, Tomcat y otras aplicaciones vitales en el entorno Web, esta implementación se coloca como una de las más sólidas y con más perspectivas de futuro. ! ! En su contra se pueden leer comentarios que hablan de su excesiva abstracción, lo cual complica en cierta manera su manejo. Hay incluso un proyecto en Sourceforge (Wafer\cite{wafer-web}) dedicado a la comparación de estos entornos de desarrollo. ! \subsubsection{Sistema de control de versiones CVS} ! Cuando varios desarrolladores trabajan en un proyecto, la tarea de coordinar el trabajo y mantener el codigo fuente al dia se complica. Además, si se modifica la misma parte de código y surgen problemas, resulta interesante saber quién y cuando la cambió, que habia antes, \dots Para resolver todos estos problema disponemos del CVS\cite{cvs-web}. En pocas palabras es una especie de <<copia virtual>> del proyecto, que se actualiza por transacciones cuando el programador decide: hace una copia local, trabaja sobre ella, realizando los cambios que considere oportunos y despues manda esos cambios a la copia virtual. Si durante el tiempo intermedio de trabajo otra persona subió cambios a esa copia virtual, el CVS se da cuenta e informa al segundo programador de ello (!si los cambios colisionan!, es decir, se modificó la misma parte de código). Así, varias personas pueden trabajar concurrentemente en el proyecto. ! En el caso de \texttt{Prolix}, donde solo hay un desarrollador, el CVS sigue resultando util para mantener una única versión del proyecto, a pesar de que el desarrollador trabaje desde distintos lugares y ordenadores. ! Sobre las modificaciones del código y su control, el CVS guarda las diferencias entre las sucesivas versiones, pudiendo volver de forma sencilla a cualquiera de ellas, o simplemente observar los cambios para entender la evolución del proyecto, y con el uso de <<tags>> (etiquetas) podemos <<marcar>> un momento determinado del proyecto (en \texttt{Prolix} esto se hizo con los releases), permitiendo así poder volver a ese estado del proyecto si es necesario. Es decir: podria obtenerse el codigo tal cual estaba cuando se hizo el lanzamiento de la version 0.1, por ejemplo. % FIXME: ejemplo de un diff ! La copia virtual del trabajo debe guardarse en alguna máquina que haga de servidor del CVS (puede ser local o remota), y se debe utilizar un cliente de CVS para obtener la copia de trabajo. Hay programas cliente para casi todas las plataformas y sistemas operativos. En el caso de \texttt{Prolix} se utilizó el servidor de CVS de sourceforge, y el cliente de consola incluido en Debian GNU/Linux. \subsubsection {Sourceforge.net} ! El proyecto \texttt{Prolix} esta albergado en el sitio web sourceforge.net\cite{sourceforge-web}. Sourceforge alberga proyectos de software libre y pone a disposición del programador/es una serie de herramientas muy utiles en el desarrollo de proyectos (indispensables si hay implicados varios desarrolladores). Las utilizadas por este proyecto son: \begin{itemize} ! \item Sistema de control de versiones CVS. \texttt{Prolix} alberga 4 modulos: \begin{itemize} \item prolix. Codigo fuente del proyecto, y ficheros necesarios para su compilación, excepto las librerias auxiliares. Estas están disponibles en la página web del proyecto. \item prolix-devel-doc. Documentación sobre el diseño de la aplicación. Diagramas UML, planificación temporal, estructura de directorios utilizada y en general información interesante solo para desarrolladores. \item prolix-doc. Documentación del proyecto. Aqui esta albergado el código fuente de este tomo. ! \item prolix-web. Para el desarrollo de la página web del proyecto. Nos referimos a la página web <<informátiva>> de \texttt{Prolix} como proyecto, y no a la web que el usuario se va a encontrar al utilizar \texttt{Prolix}. \end{itemize} ! \item Listas de correo para uso del proyecto. \texttt{Prolix} utiliza 4: \begin{itemize} \item pfc-prolog-users: para mensajes de usuarios en general. *************** *** 176,181 **** \item Compilación: problemas relativos a la compilación o puesta en marcha del proyecto. \item Documentación: errores o sugerencias sobre la documentación, desde los ficheros README de cada directorio hasta este documento. ! \item Interfaz: donde informar a los desarrolladores de errores o posibles mejoras en el aspecto gráfico de Prolix. ! \item Usabilidad: Este aspecto es importante en Prolix, por su caracter educativo. Aqui se recogen sugerencias respecto a este tema. \item Pagina Web: Mensajes sobre ficheros que deberian estar o no en la web informativa del proyecto y/o mejoras a la misma. \item Proyecto: Errores que no tiene cabida en las categorias anteriores o se refieren al proyecto en general. --- 192,197 ---- \item Compilación: problemas relativos a la compilación o puesta en marcha del proyecto. \item Documentación: errores o sugerencias sobre la documentación, desde los ficheros README de cada directorio hasta este documento. ! \item Interfaz: donde informar a los desarrolladores de errores o posibles mejoras en el aspecto gráfico de \texttt{Prolix}. ! \item Usabilidad: Este aspecto es importante en \texttt{Prolix}, por su caracter educativo. Aqui se recogen sugerencias respecto a este tema. \item Pagina Web: Mensajes sobre ficheros que deberian estar o no en la web informativa del proyecto y/o mejoras a la misma. \item Proyecto: Errores que no tiene cabida en las categorias anteriores o se refieren al proyecto en general. *************** *** 201,207 **** \end{itemize} ! Aunque el nombre del proyecto es Prolix, el nombre Unix asignado por sourceforge al proyecto (el nombre que utiliza en todos los aspectos técnicos) es <<pfc-prolog>>. Así, la pagina web del proyecto en SourceForge es http://www.sourceforge.net/projects/pfc-prolog. ! Además, Sourceforge cede al proyecto un espacio en sus servidores para la página web del mismo, con la única condición de colocar un logo de sourceforge en esas páginas. Prolix dispone de ese espacio en http://pfc-prolog.sourceforge.net, donde estan disponibles algunos ficheros que aunque son propios del proyecto no se incluyen en el CVS, como son los intérpretes o los DTD del XML utilizado en el proyecto. \subsubsection{Sistema de composición de textos \LaTeX} --- 217,223 ---- \end{itemize} ! Aunque el nombre del proyecto es \texttt{Prolix}, el nombre Unix asignado por sourceforge al proyecto (el nombre que utiliza en todos los aspectos técnicos) es <<pfc-prolog>>. Así, la pagina web del proyecto en SourceForge es \texttt{http://www.sourceforge.net/projects/pfc-prolog}. ! Además, Sourceforge cede al proyecto un espacio en sus servidores para la página web del mismo, con la única condición de colocar un logo de sourceforge en esas páginas. \texttt{Prolix} dispone de ese espacio en \texttt{http://pfc-prolog.sourceforge.net}, donde estan disponibles algunos ficheros que aunque son propios del proyecto no se incluyen en el CVS, como son los intérpretes o los DTD del XML utilizado en el proyecto. \subsubsection{Sistema de composición de textos \LaTeX} Index: solo_intro.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/introduccion/solo_intro.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** solo_intro.tex 18 Aug 2003 18:44:55 -0000 1.2 --- solo_intro.tex 19 Aug 2003 01:16:34 -0000 1.3 *************** *** 5,9 **** \usepackage{enumerate} %\usepackage[T1]{fontenc} ! \usepackage{pst-uml} \begin{document} --- 5,9 ---- \usepackage{enumerate} %\usepackage[T1]{fontenc} ! %\usepackage{pst-uml} \begin{document} *************** *** 13,15 **** --- 13,16 ---- %\input{introduccion/softexistente.tex} \input{herramientas.tex} + \input{bibliografia.tex} \end{document} |