diff options
Diffstat (limited to 'memoria.tex')
-rwxr-xr-x | memoria.tex | 76 |
1 files changed, 45 insertions, 31 deletions
diff --git a/memoria.tex b/memoria.tex index 57538c3..35568e6 100755 --- a/memoria.tex +++ b/memoria.tex @@ -880,7 +880,8 @@ web básicas (HTML, CSS, JavaScript), más tediosas y propensas a error: lenguaje que se usa para implementar el resto de la funcionalidad. Se ha utilizado el módulo crispy-forms\footnote{\url{https://django-crispy-forms.readthedocs.org/en/latest/}} - para poder definir los formularios HTML directamente en Python. + para poder definir los formularios HTML (inicio de sesión, creación de + usuarios, etc.) directamente en Python. \item \textbf{Twitter Bootstrap}\footnote{\url{http://getbootstrap.com/}}. Bootstrap es un marco @@ -918,8 +919,6 @@ web básicas (HTML, CSS, JavaScript), más tediosas y propensas a error: \textbf{Tornado}\footnote{\url{http://www.tornadoweb.org//}}. \end{itemize} -La integración de todas estas partes se ilustra en la figura \ref{fig:warch}. - \tikzstyle{ncloud} = [draw, ellipse,fill=blue!10, node distance=2cm, minimum height=2em] @@ -961,26 +960,37 @@ minimum height=2em] \label{fig:warch} \end{figure} -A continuación veremos cómo se ha implementado cada uno de estos componentes y -formado el sistema completo. +La figura \ref{fig:warch} aporta una visión general del sistema completo. A +continuación se describirá cada uno de los componentes que lo forman, la forma +en que interactúa con el resto y el proceso de su implementación. \section{Implementación: servidor web} -Como ya hemos visto, el servidor web está implementado en Django -(Python). Django sigue el patrón modelo-vista-controlador (MVC), por lo que nos -centraremos en cada una de estas partes por separado para tener una idea -general de la implementación. +El servidor web es uno de los tres componentes fundamentales del sistema. A +pesar de todo, su papel es por encima de todo el de almacenaje de información y +punto de entrada al resto de los componentes. Concretamente, una vez el usuario +haya iniciado sesión, su papel será el de servir el código que implementa el +cliente y gestionar los datos que se almacenan remotamente. Tras esto, casi toda +la interacción con el sistema involucrará exclusivamente al cliente (sección +\ref{sec:impl-cliente}) y al servidor EasyCrypt (sección +\ref{sec:impl-serv-easycrypt}). + +El servidor web está implementado en Python, soportado por el marco de +desarrollo web Django y su gran colección de bibliosecas. Django sigue el patrón +modelo-vista-controlador (MVC) a la hora de organizar el código, por lo que nos +centraremos en cada una de estas partes por separado para tener una idea general +de la estructura del servidor web. \subsection{Modelo} \label{sec:modelo} -El modelo es el esquema general de los datos que se van a manejar en la -aplicación. En este caso va a ser muy simple, ya que los únicos datos que se van -a manipular son \textbf{proyectos} y \textbf{ficheros}. Normalmente también -necesitaríamos entidades como <<User>> para implementar la autenticación, -pero Django proporciona esa funcionalidad en una de sus bibliotecas estándares. +El modelo es el esquema de los datos que se van a manejar en la aplicación. En +este caso va a ser muy simple, ya que los únicos datos que se van a manipular +son \textbf{proyectos} y \textbf{ficheros}. Normalmente también necesitaríamos +entidades como <<User>> para implementar la autenticación, pero Django +proporciona esa funcionalidad por defecto. -Nuestras entidades serán las siguientes: +Nuestras entidades serán, por tanto, las siguientes: \begin{itemize} \item Entidad: \textbf{Project} @@ -1024,26 +1034,30 @@ Una vez definidos los modelos, Django genera automáticamente la base de datos (representando cada entrada en la base de datos como un objeto en Python), para poder hacer un uso totalmente transparente de ella. Además, Django incluye varios controladores de gestores de bases de datos que abstraen su acceso y -hacen posible intercambiarlos sin mayor problema. En nuestro caso, debido a la -facilidad de uso y la poca carga que tendrá el sistema, usaremos el gestor de -bases de datos \textbf{SQLite}\footnote{\url{http://www.sqlite.org/}}, aunque -debería ser trivial cambiarlo en el futuro por cualquier otro gestor. +hacen posible intercambiarlas sin mayor problema. En nuestro caso, debido a la +facilidad de uso hemos usado el gestor de bases de datos +\textbf{SQLite}\footnote{\url{http://www.sqlite.org/}} durante el desarrollo, +aunque debería ser trivial cambiarlo en el futuro por cualquier otro gestor en +caso de darse la necesidad. \subsection{Vista} \label{sec:vista} La vista es el subsistema encargado de generar y servir la parte visual de la -web: ficheros HTML (posiblemente incluyendo también código JavaScript y/o CSS). +web: ficheros HTML (que a menudo incluyen también código JavaScript y CSS). -En Django, la vista la implementa un sistema de plantillas (<<templates>>). Una -plantilla no es más que un fichero HTML incompleto que Django rellena en tiempo -de ejecución sustituyendo ciertas meta-directivas por código HTML válido. Las -plantillas se almacenan normalmente en un directorio ``/templates'', separadas -del resto del código del proyecto. +En Django, la vista la implementa un sistema de plantillas +(<<templates>>)\footnote{\url{https://docs.djangoproject.com/en/dev/topics/templates/}}. +Una plantilla no es más que un fichero HTML que Django modifica en tiempo de +ejecución según le indique la presencia de ciertas directivas. Por ejemplo, todo +lo que aparece dentro de dobles llaves <<\{\{, \}\}>> en la plantilla se +considera una expresión de Python y se sustituye por su valor en el momento de +realizar la sustitución. -Para desarrollar la interfaz web ha sido necesario escribir un total de 4 -plantillas, descritas a continuación junto con una captura de pantalla de su -resultado una vez servidas: +Las plantillas se almacenan normalmente en un directorio ``/templates'', +separadas del resto del código del proyecto. Para desarrollar la interfaz web ha +sido necesario escribir un total de 4 plantillas, descritas a continuación junto +con una captura de pantalla de su resultado una vez servidas: \begin{itemize} \item \textbf{base.html}, donde se define la estructura HTML básica del sitio @@ -1071,9 +1085,9 @@ resultado una vez servidas: \subsection{Controlador} \label{sec:controlador} -Por último, el controlador es la parte que coordina las otras dos (modelo y -vista) e implementa la lógica del sitio web como tal. En Django esto se lleva a -cabo fundamentalmente en dos ficheros: +El controlador es el subsistema que coordina los otras dos (modelo y vista) e +implementa la lógica del sitio web como tal. En Django esto se lleva a cabo +fundamentalmente en dos ficheros: \begin{itemize} \item \textbf{views.py}. En este fichero se definen las \textbf{vistas}, que es, |