Savia PDF
Savia PDF
SAVIA
SISTEMA PARA EL ALMACENAMIENTO VIRTUAL Y GESTION DE ARCHIVOS
EDUARDO ARAGÓN MONTES, JULIÁN CAMILO PÉREZ PARRA
Universidad del Valle, Cali, Colombia
earagon87@[Link], jcpmmx@[Link]
Resumen — Una de las tendencias con mayor auge en el Abstract — The reliability and permanent availiability of
entorno informático actualmente es la disponibilidad personal content within network‐based environments is a
inmediata y permanente de contenidos personales. Siguiendo growing trend nowadays. This is a sensible need also for most
esta línea, el almacenamiento virtual de archivos es una tarea scientific communities, which are in need of intuitive,
indispensable que apunta en esta dirección. Los usuarios de efficient, and secure data portability, regardless of any
sistemas académicos y científicos no son ajenos a la necesidad physical storage device. Here we describe the implementation
de portabilidad de información, con independencia del of SAVIA, an online storage system tailored to scientific
dispositivo físico de transporte y almacenamiento, y con dosis communities. Apart from basic storage capabilities, it features
elementales de intuitividad, eficacia y seguridad. Bajo este tools for social interaction among users and
contexto desarrollamos un sistema de almacenamiento virtual intercommunication capabilities with external applications.
y gestión de archivos, orientado a la comunidad académica, SAVIA has been developed using Django and applying
que provee almacenamiento básico, diferentes herramientas concepts of web 2.0. It intends to set a solid precedent in this
de interacción social entre sus usuarios y la posibilidad de area, to be a starting point and to raise the bar high up in this
interconexión con otros sistemas existentes. Desarrollado por continuous evolving field.
completo utilizando Django y aplicando los conceptos de la
web 2.0, SAVIA nace para sentar un precedente sólido en su
ámbito, servir como marco de referencia y poner el listón alto
dentro de un campo de acción que está en evolución
continua.
Palabras clave — Almacenamiento Virtual, Web 2.0, Internet, Keywords — Online Storage, Web 2.0, Internet, Django
Django
1
SAVIA
2
SAVIA
Almacenamiento • Dentro del dispositivo C, debemos acceder primero al
Un computador puede almacenar información en varios directorio CarpetaPadre. Una vez estando dentro de
soportes, como los discos magnéticos y los discos ópticos. CarpetaPadre, localizamos y accedemos el directorio
También en otros dispositivos como el almacenamiento llamado CarpetaHijo. En este último directorio estará
primario (de manera temporal, en la memoria RAM) y las nuestro archivo almacenado.
tarjetas de almacenamiento portátil con interfaz USB. • Cabe destacar que la jerarquía en este caso se
El sistema operativo se encarga de brindar una vista lógica presenta como C > CarpetaPadre > CarpetaHijo >
uniforme para el almacenamiento de la información, [Link], siendo C la unidad más general de
proporcionando una abstracción de las propiedades físicas de almacenamiento (el dispositivo físico en este caso).
los elementos de almacenamiento, con el fin de definir una Todos los archivos cuentan con otros atributos que ofrecen
unidad lógica de almacenamiento: el archivo. información adicional, siendo de manera típica los siguientes
• Nombre: es la etiqueta del archivo en formato legible
A. ¿Qué es un archivo? para personas.
Un archivo es una colección de información relacionada, con • Identificador: una etiqueta unívoca (usualmente un
nombre y atributos asociados, que se graba en un número) que identifica al archivo dentro del sistema
almacenamiento secundario. También podemos verlo, desde el de archivos; es la versión no legible para personas del
punto de vista del usuario, como la unidad más pequeña de nombre del archivo.
almacenamiento secundario; no podremos guardar datos a • Tipo: indica el tipo de archivo, para que pueda ser
menos de que estén dentro de un archivo [3]. procesado por una determinada aplicación.
De manera general, un archivo es una secuencia de bits, • Ubicación: indica la ubicación lógica del archivo,
bytes, líneas o registros, cuyo significado está definido por el siendo puntero a un dispositivo y la ruta que le
creador y el usuario del archivo. corresponde.
Las operaciones típicas disponibles para un archivo son • Tamaño: etiqueta que expresa, por lo general, el
• Creación del archivo. número de bytes que ocupa el archivo.
• Configuración de sus atributos para establecer control. • Protección: indica el control de acceso al archivo, para
• Apertura del archivo para almacenar datos. permitir o restringir las distintas operaciones que se
• Lectura o modificación de contenido de un archivo. pueden efectuar sobre el archivo.
• Reubicación del archivo dentro del sistema de • Fecha, hora e identificación del usuario: se utiliza para
archivos. determinar la fecha de creación, modificación o de
• Eliminación del archivo. ultimo acceso al archivo, así como también el usuario
dueño del mismo.
B. Atributos de un archivo
Los archivos tienen asociado siempre un nombre y, casi C. Protección de archivos
siempre (algunos sistemas utilizan metadatos), una extensión Los sistemas informáticos modernos proporcionan varios
que identifican su tipo. Así mismo, siempre se almacenan métodos para proteger archivos frente a eventos accidentales o
dentro de una entidad contenedora de manera lógica: un deliberados.
directorio o carpeta (otra abstracción). Los computadores multiusuario implementan permisos
Los sistemas modernos referencian cualquier archivo sobre archivos para controlar quién puede ejecutar ciertas
mediante su ruta (el camino de directorios contenedores de operaciones sobre el archivo. Por ejemplo, un usuario o un
manera jerárquica) y su nombre. grupo de usuarios pueden acceder al contenido de un archivo,
Por ejemplo, si tenemos la ruta (en formato DOS/Windows) pero no modificarlo ni eliminarlo. De esta manera, se garantiza
C:\CarpertaPadre\CarpetaHijo\[Link], podemos decir la integridad de un archivo ante intentos desautorizados de
lo siguiente manipulación.
• El archivo objetivo se llama MiArchivo y es del tipo Otra estrategia asumida es la habilitación de la etiqueta
texto. (otro atributo de un archivo) archivo de sólo lectura. Así, el
• La ruta completa de este archivo es archivo sólo podrá modificarse en caso de estar deshabilitado
C:\CarpertaPadre\CarpetaHijo\. esta bandera.
• La unidad de almacenamiento que lo contiene está
identificada como C.
3
SAVIA
D. Sistemas de archivos Un ejemplo es el uso que tiene en redes de área local (LAN),
Un sistema de archivo es un método para almacenar y comunicando sistemas tipo Unix con sistemas Windows y Mac
organizar archivos (y los datos que contienen) con el fin de OS (cada uno de los cuales tiene su propio sistema de archivos)
facilitar su búsqueda y acceso en un dispositivo de con transparencia para el usuario final [5].
almacenamiento, una red de computadores o en un sistema F. Sistemas de archivos distribuidos
virtual de datos (como los generados dinámicamente por el
kernel de sistemas tipo Unix) [4]. Es un sistema de archivos de red en el que un sistema de
De manera más formal, podemos decir que un sistema de archivos único se puede distribuir entre varios computadores
archivos es una base de datos, de propósito especial, para que actúan como nodos, cada uno separado del otro y con
almacenar, organizar jerárquicamente, manipular, acceder y acceso a una sola parte de todo el sistema de archivos original.
obtener datos. Contrasta con los sistemas de archivos de discos
Dentro de los sistemas de archivos, podemos destacar las compartidos, que proporcionan acceso directo y uniforme, a
siguientes categorías cada nodo de la red, a todo el almacenamiento disponible.
Una de sus ventajas es la facilidad que tienen para hacer
• Sistema de archivos de disco: es un sistema de
transparentes los procesos de copias de seguridad (backup) y
archivos diseñado para almacenar archivos en un
de tolerancia a los errores; cuando cierto número de nodos de
dispositivo de almacenamiento, como los discos duros.
la red presentan fallas, el sistema continúa su operación con los
Un ejemplo es el sistema NTFS, que utiliza Windows en
nodos restantes y sin pérdida de información [6].
sus versiones actuales, o el HFS, utilizado por Apple.
• Sistema de archivos de unidades flash: diseñado para G. Almacenamiento de archivos
el almacenamiento de archivos en dispositivos El almacenamiento de archivos se refiere al proceso físico de
portátiles basados en memoria flash. Un ejemplo es el grabar datos en un dispositivo de almacenamiento
JFFS2. (permanente, temporal o removible) a través de un equipo de
• Sistema de archivos de bases de datos: además de almacenamiento de datos, previamente configurado de manera
almacenar los archivos de manera jerárquica, lógica con un sistema de archivos. En este caso, se presenta la
almacena también metadatos para referencian sus relación Disco duro (dispositivo que almacena los datos) –
características. Computador (dispositivo que accede y manipula los datos), por
• Sistemas de archivo de transacciones: diseñados para ejemplo.
ser robustos, son utilizados principalmente en
operaciones a través de redes de computadores, cada H. Almacenamiento virtual de archivos
uno de los cuales almacena archivos. Está basado en Podemos llamar así al proceso de almacenar archivos en una
registro de actividades (journaling o logging) para red de computadores utilizando al menos dos máquinas,
comprobar que las operaciones entre distintas distintas y conectadas entre sí.
máquinas se efectúen de manera satisfactoria. Una de las máquinas actúa como servidor de la red, que se
• Sistema de archivos de red: es un sistema de archivo encarga de almacenar los archivos físicamente. La otra máquina
que actúa como cliente para un protocolo de acceso hace el papel usuario cliente que se comunica con el servidor
remoto de archivos, como la comunicación con para enviar datos que se encuentran alojados en él.
servidores. Un ejemplo es el FTP. En este proceso debemos tener en cuenta varios factores
• Sistemas de archivo de propósito especial: no se que lo hacen más complejo que un almacenamiento local en un
basan ni en discos ni en redes. Son sistemas de dispositivo, algunos como
archivos virtuales temporales o que se generan • La comunicación entre los equipos debe existir y ser
dinámicamente por medio de software. Un ejemplo es estable en el momento de realizarse transferencias.
el procfs, utilizado por sistemas tipo Unix. • El equipo servidor y su(s) cliente(s) no necesariamente
disponen de la misma arquitectura, haciéndose
E. Sistemas de archivo virtual
necesaria (en algunos casos) una capa de abstracción
Es una capa de abstracción que se superpone a un sistema (middleware) que haga transparentes las operaciones
de archivos concreto, teniendo como objetivo otorgar acceso a y permita el interoperabilidad entre nodos que utilizan
diferentes sistemas de archivos concretos de manera única y distintos sistemas operativos, distintos sistemas de
uniforme, por medio de aplicaciones cliente. archivo, distintas prestaciones, entre otras cosas.
4
SAVIA
• Deben existir estrategias de seguridad que garanticen Las funciones principales de un metadato son las de facilitar
la integridad del sistema de almacenamiento para la identificación, localización, retorno, manipulación y uso de
brindar la tolerancia a errores adecuada, tanto físicos objetos digitales en un entorno de red.
(fallas del fluido eléctrico, fallas en la comunicación en Aunque el término metadato no excluye los datos no
red, entre otros) como lógicos (intrusión de usuarios electrónicos, en la actualidad su uso implica casi de facto datos
no autorizados, fallas en los distintas aplicaciones almacenados en dispositivos electrónicos. La Internet y las
involucradas, entre otros). bibliotecas digitales han desvelado la creciente necesidad de
los metadatos para las distintas categorías de objetos
Metadatos disponibles en formato digital.
La cantidad de datos presente en la Internet, y en general,
todos los datos almacenados en los millones de computadores B. El estándar Dublin Core (DC)
que existen alrededor del planeta, hacen casi imposible que En 1995 se llevó a cabo, en Dublin (Ohio, [Link].), el primer
podamos catalogarlos de una manera apropiada. Y, añadido a taller de trabajo de The Dublin Core Workshop Series,
la dificultad intrínseca que conlleva la manipulación de grandes convocando a sus participantes por medio de una invitación,
volúmenes de datos, está la dificultad que representa la calidad entre quienes se encontraban bibliotecarios, investigadores de
de los mismos [7]. bibliotecas digitales, expertos en contenidos y expertos en
Con estos dos factores en contra debemos adoptar medidas lenguajes de marcas, con el fin de desarrollar estándares para
que nos lleven a la optimización de la organización de los datos los recursos electrónicos. El resultado fue la creación del Dublin
que almacenamos, para procurar la mejora en la capacidad de Core Metadata Initiative (DCMI), una organización dedicada a
encontrar fácilmente esos recursos y en la calidad de la fomentar la adopción extensa de los estándares interoperables
información que representan. Una de esas estrategias, aunque de los metadatos y a promover el desarrollo de los vocabularios
obvia y simple, no es utilizada como debería ser por los actores especializados de metadatos para describir recursos. La última
implicados en la producción de información: los metadatos. versión, la 1.1, fue radicada como norma ISO en Enero de 2008.
DC se compone de un conjunto de 15 elementos
A. ¿Qué son los metadatos? descriptores que intentan promover que los autores de
El término metadatos, en sí mismo, no tiene una definición contenidos de la Internet describan sus recursos. Dichos
única. Descomponiendo la palabra, se puede decir que su elementos se pueden clasificar en 3 grupos, según su clase o
significa más simple es datos sobre datos. Esto es, datos que ámbito de la información que contienen.
nos proporcionan datos sobre otros datos. Obviando la Los elementos descriptores de DC, que son opcionales,
redundancia aparente, es la definición más simple que nos repetibles y pueden aparecer en cualquier orden, son
otorga una idea general del concepto [8]. • Content (De contenido):
Refinando el concepto, podemos decir que esos datos no - Title (Título): nombre del recurso.
son datos cualesquiera: son datos llenos de significado, que - Subject (Tema): tópico que describe el contenido
están asociados y que pueden describir atributos o del recurso.
características. Un ejemplo típico es el de las bibliotecas. Un - Description (Descripción): acerca del contenido
libro es una entidad que se puede describir mediante varios del recurso.
metadatos. Si para archivar un libro en una sección - Type (Tipo): naturaleza o género del contenido
determinada de la biblioteca utilizamos un código (llamémoslo del recurso.
ID), dicho código podría tener asociado algunos metadatos, - Source (Fuente): referencia un recurso del cual el
como por ejemplo actual se deriva.
• Título: el título del libro representado con ID. - Relation (Relación): referencia a un recurso
• Autor: el nombre de la persona que escribió el libro ID. relacionado.
• Fecha: el año de publicación del libro ID. - Coverage (Cubrimiento): la extensión u ámbito
Y así como este ejemplo, podríamos enumerar muchos que del contenido del recurso.
se asemejan, como los inventarios de cualquier cosa: discos, • Intellectual property (de propiedad intelectual):
periódicos, artículos de un supermercado, entre otros. - Creador (Creador): el responsable principal de la
Los metadatos soportan una variedad de operaciones creación del contenido del recurso.
posibles. Sus usuarios pueden ser tanto humanos como
- Publisher (Publicador): el responsable de la
programas automatizados por computador.
publicación del recurso.
5
SAVIA
- Contributor (Contribuyente): el o los responsables • Basado en el patrón MVC (aunque sus creadores lo
de realizar contribuciones al recurso. llaman Model‐Template‐View).
- Rights (Derechos): indica los derechos o permisos • Mapeo de objetos‐relaciones que traduce modelos de
que recaen sobre el recurso. datos (escritos como clases en Python) y una base de
• Instantiation (de instanciación): datos relacional, bien sea para MySQL, PostgreSQL,
- Date (Fecha): fecha en el que el recurso fue Oracle o SQLite3 (Que viene como componente del
manifestado por primera vez. núcleo de Python).
- Format (Formato): indica la naturaleza de la • Generación automática y dinámica de un módulo de
manifestación física o digital del recurso. administración con funciones CRUD.
- Identifier (Identificador): referencia única al • Un servidor web (software) liviano para pruebas,
recurso, según su contexto. independiente del que se tenga instalado en (Apache,
- Language (Lenguaje): El lenguaje utilizado para el Tomcat, ISS, etc.)
contenido del recurso. • Sistema de plantillas (templates) propio.
Para utilizar DC en recursos localizados en la Internet, • Sistema extensible de autenticaciones.
podemos hacerlo mediante la inclusión de etiquetas <meta… /> • Serializaciones vía XML o JSON.
y <link… />, ubicadas a su vez dentro de las etiquetas • Soporte para sindicación (feeds) Atom o RSS.
<head>…</head>, en documentos HTML o XHTML. • Enrutamiento de URLs basado en expresiones
regulares.
Django
• Soporte para clases middleware.
El entorno de desarrollo idóneo para SAVIA debía ser aquel • Sistema de internacionalización.
que mejor se comportará con las necesidades del proyecto. Así, Esta etapa de selección fue enriquecedora para los
se plantearon tres alternativas: integrantes de este proyecto. Fue una buena excusa para
• Django, basado en Python. indagar y conocer más los diferentes lenguajes y estructuras
• Symfony, basado en PHP5. para desarrollar un proyecto de software de este tipo. Además,
• Ruby On Rails, basado en Ruby. permitió identificar tópicos relevantes a la hora de desarrollar
Para evaluar cual lenguaje era el apropiado se tuvieron en un proyecto como SAVIA.
cuenta consideraciones como la experiencia de los Durante el proceso de desarrollo comprobamos que la
programadores en el mismo, la documentación disponible, el decisión por Django fue acertada, puesto que se acopló desde
uso del patrón de diseño MVC (Modelo Vista Controlador). En un principio a las necesidades existentes (y a las resultantes en
la Tabla 1 se encuentra detallado el proceso de selección del el camino) y contamos con herramientas embebidas que
framework para el desarrollo de SAVIA, donde 5 representa la facilitaron el manejo de los datos y la manipulación de la parte
nota más alta y 1 la más baja. gráfica de la aplicación.
Servicios web
FRAMEWORK
TOPICO
Un servicio web (en inglés, web service) es un conjunto de
DJANGO SYMFONY RUBY ON RAILS PONDERADO
Conocimiento previo del lenguaje protocolos y estándares que sirven para intercambiar datos
1 3 1 20%
por parte de los programadores
entre aplicaciones. Distintas aplicaciones de software
Acceso fácil, y en cantidad, a
documentación
3 4 3 desarrolladas en lenguajes de programación diferentes, y
15%
Antecedentes de proyectos sobre
almacenamiento virtual 4 2 2 ejecutadas sobre cualquier plataforma, pueden utilizar los
30%
El lenguaje permite la programación servicios web para intercambiar datos en redes de ordenadores
4 4 5 15%
multiparadigma como Internet. La interoperabilidad se consigue mediante la
Implementa el patrón de diseño
5 4 4 adopción de estándares abiertos. Las organizaciones OASIS y
20%
Modelo Vista Controlador (MVC)
TOTAL 3,45 3,2 2,8
W3C son los comités responsables de la arquitectura y
100%
reglamentación de los servicios web. Para mejorar la
Tabla. 1 Proceso de selección del entorno de desarrollo. interoperabilidad entre distintas implementaciones de servicios
Teniendo en cuenta los resultados obtenidos, Django resultó web se ha creado el organismo WS‐I, encargado de desarrollar
vencedor y fue elegido como el entorno de desarrollo propicio. diversos perfiles para definir de manera más exhaustiva estos
Algunas de las características principales de Django son estándares [9].
6
SAVIA
A. Ventajas de los servicios web Hay muchas convenciones establecidas de facto y otras tantas
• Aportan interoperabilidad entre aplicaciones de que, a pesar de ser originadas por las autoridades virtuales, no
software independientemente de sus propiedades o son ampliamente conocidas ni aplicadas. XML nace como una
de las plataformas sobre las que se instalen. propuesta para solucionar este inconveniente, pues pretende
• Los servicios web fomentan los estándares y poner algo de orden y de reglas comunes para el intercambio
protocolos basados en texto, que hacen más fácil de datos.
acceder a su contenido y entender su funcionamiento. A. ¿Qué es XML?
• Al apoyarse en HTTP, los servicios web pueden
El lenguaje de marcas extensible, o XML por sus siglas en
aprovecharse de los sistemas de seguridad firewall sin
ingles (eXtensible Markup Language), es una especificación de
necesidad de cambiar las reglas de filtrado.
propósito general para la creación de lenguajes de marcas
• Permiten que servicios y software de diferentes
personalizados con capacidad de ser extensible (un usuario
compañías ubicadas en diferentes lugares geográficos
puede definir sus propios elementos), utilizada para codificar y
puedan ser combinados fácilmente para proveer
serializar datos. Una de sus metas principales es la de brindar
servicios integrados.
ayuda a los sistemas de información para compartir datos
• Permiten la interoperabilidad entre plataformas de organizados y estructurados, particularmente vía Internet. Fue
distintos fabricantes por medio de protocolos estándar desarrollado y es mantenido por la W3C y su última versión es
y abiertos. Las especificaciones son gestionadas por la 1.1 (liberada en 2006) [10].
una organización abierta, la W3C, por tanto no hay Cuando realizamos un documento XML (su extensión de
secretismos por intereses particulares de fabricantes archivo es .xml), podemos observar que hay dos niveles de
concretos y se garantiza la plena interoperabilidad correctitud: la correctitud en la forma (un documento bien
entre aplicaciones. formado: que cumple con las reglas de sintaxis del lenguaje) y
B. Desventajas de los servicios web la correctitud en el significado (un documento válido: se apega
a unos normas de semántica).
• Para realizar transacciones no pueden compararse en
su grado de desarrollo con los estándares abiertos de B. Ventajas de XML
computación distribuida como CORBA (Common Entre las ventajas que proporciona este lenguaje podemos
Object Request Broker Architecture). encontrar
• Su rendimiento es bajo si se compara con otros • Soporte de Unicode para la representación adecuada
modelos de computación distribuida, tales como RMI de datos.
(Remote Method Invocation), CORBA o DCOM • Se pueden representar estructuras de datos comunes
(Distributed Component Object Model). Es uno de los como los árboles, los registros y las listas.
inconvenientes derivados de adoptar un formato
• Su formato para codificar nuevos elementos hace casi
basado en texto. Y es que entre los objetivos de XML
evidente su estructura.
no se encuentra la concisión ni la eficacia de
• Es estricto en la sintaxis, promoviendo las buenas
procesamiento.
prácticas.
• Al apoyarse en HTTP, pueden esquivar medidas de
• Es extensible.
seguridad basadas en firewall cuyas reglas tratan de
• Se basa en estándares internacionales.
bloquear o auditar la comunicación entre programas a
• Es un lenguaje independiente de la plataforma.
ambos lados de la barrera.
C. Desventajas de XML
XML
Algunas de las desventajas que conlleva el uso de XML son
Internet definitivamente ha sido la revolución más grande
sufrida por las redes de comunicaciones. Ahora son, en gran • La estructura jerárquica de los datos es limitada en
parte, gigantes, abiertas y gratuitas, sentando las bases comparación con un modelo orientado a objetos.
fundamentales para la convergencia de masas ávidas de crear, • Expresar relaciones entre objetos solapados puede ser
compartir y consultar contenidos. Es bastante evidente que así, difícil.
en estas condiciones, los problemas son fáciles de hallar. La • Fomenta estructuras de datos no relacionales y, por lo
reunión de muchísima gente en las redes posibilita la dificultad tanto, no normalizadas.
en la intercomunicación utilizando un lenguaje claro y unificado.
7
SAVIA
RIA JQUERY
Las RIAs (o Aplicaciones Ricas en Internet) son aplicaciones jQuery es una biblioteca o framework de Javascript, creada
web que tienen características y funcionalidades de una inicialmente por John Resig, que permite simplificar la manera
aplicación de escritorio común [11]. de interactuar con los documentos HTML, manipular el arbol
Normalmente en las aplicaciones web hay una recarga DOM, manejar eventos, desarrollar animaciones y agregar
continua y total de páginas cada vez que el usuario pulsa un interacción con la tecnología AJAX a páginas web [14]. Fue
enlace. De esta forma se produce un tráfico muy alto entre el presentada en enero de 2006 en el BarCamp NYC.
cliente y el servidor, causando la recarga de la misma página, jQuery, al igual que otras bibliotecas, ofrece una serie de
con todos sus componentes, con un mínimo cambio. También funcionalidades basadas en Javascript que de otra manera
tienen poca capacidad multimedia. requerirían de mucho más código. Es decir, con las funciones
En los entornos RIA no se producen recargas de página, ya propias de esta biblioteca se logran grandes resultados en
que desde el principio se carga toda la aplicación y sólo se menos tiempo y espacio.
produce comunicación con el servidor cuando se necesitan Entre las principales características que ofrece jQuery
datos externos como datos de una Base de Datos o de otros tenemos
ficheros externos [12]. • Selección de elementos DOM.
Su mayor desventaja es que dependen totalmente de que • Interactividad y modificaciones del árbol DOM,
exista una rápida y estable conexión a Internet (algo estándar incluyendo soporte para CSS 1‐3 y un plugin básico de
hoy en día para algunos). XPath.
• Manipulación de eventos.
AJAX
• Manipulación de la hoja de estilos CSS.
AJAX, acrónimo de Asynchronous JavaScript And XML • Efectos y animaciones.
(JavaScript asíncrono y XML), es una técnica de desarrollo web • Funcionalidades de AJAX.
para crear aplicaciones interactivas o RIA. Se ejecutan en el
• Utilidades varias como obtener información del
navegador de los usuarios y mantiene comunicación asíncrona
navegador, operar con Objetos y Arrays, función trim()
con el servidor en segundo plano; de esta forma es posible
(elimina los espacios en blanco del principio y final de
realizar cambios sobre la misma página sin necesidad de
una cadena de caracteres), etc.
recargarla. Esto significa aumentar la interactividad, velocidad y
• Compatible con los navegadores Firefox 2.0+, Internet
usabilidad en la aplicación [13].
Explorer 6+, Safari 2.0.2+ y Opera 9+.
AJAX es una combinación de cuatro tecnologías ya existentes:
• XHTML (o HTML) y hojas de estilos en cascada (CSS)
para el diseño que acompaña a la información. III. PROGRAMACIÓN EXTREMA, ¿PARA QUÉ ES? Y ¿CÓMO SE
• Document Object Model (DOM) accedido con un
DEBE EJECUTAR?
lenguaje de scripting por parte del usuario,
especialmente implementaciones ECMAScript como
JavaScript y JScript, para mostrar e interactuar Gran parte de los programadores tienen cierta inclinación en
dinámicamente con la información presentada. discusiones técnicas: hablan de lenguajes de programación, de
• El objeto XMLDisponible en httpRequest para técnicas de programación, de entornos de desarrollo o de
intercambiar datos asincrónicamente con el servidor editores de recursos.
web. En algunos frameworks y en algunas situaciones Pero no tienen en cuenta un tema que puede crear
concretas, se usa un objeto iframe en lugar del inconvenientes si no se enfrenta de la manera correcta: la
XMLDisponible en httpRequest para realizar dichos Ingeniería de Software, la forma en que se debe desarrollar
intercambios. software.
• XML es el formato usado comúnmente para la Sobre cómo hacer software existe un gran número de
transferencia de vuelta al servidor, aunque cualquier autores y teorías propuestas. De forma breve se explicará en
formato puede funcionar, incluyendo HTML qué consiste la metodología de Programación Extrema y las
preformateado, texto plano, JSON y hasta EBML. ventajas que podemos encontrar del uso de esta metodología
Como el DHTML, LAMP o SPA, AJAX no constituye una en SAVIA.
tecnología en sí, sino que es un término que engloba a un
grupo de éstas que trabajan conjuntamente [13].
8
SAVIA
mayor que si se toma la decisión de desarrollarlo de
nuevo.
A. ¿Qué es?
• Falsa riqueza: El software hace muchas cosas
La metodología de Programación Extrema, o XP por sus técnicamente muy interesantes y divertidas, pero no
siglas en inglés (eXtreme Programming) [15] nace como una resuelven el problema del cliente, ni hace que éste
nueva disciplina de desarrollo de software hace gane más dinero.
aproximadamente unos diez años, y ha causado un gran • Cambios de personal: Después de unos años de
revuelo entre el colectivo de programadores del mundo. Kent trabajo los programadores comienzan a odiar el
Beck, su autor, es un programador que ha trabajado en proyecto y lo abandonan.
múltiples empresas y que actualmente lo hace como Todos estos problemas se pueden eliminar o minimizar usando
programador en la conocida empresa automovilística la metodología XP.
DaimlerChrysler. Con sus teorías ha conseguido el respaldo de
gran parte de la industria del software y el rechazo de otra C. Los objetivos de XP
parte. La programación extrema se basa en la simplicidad, la El objetivo fundamental de XP es muy simple y está
comunicación y el reciclado continuo de código, para algunos enfocado en una meta precisa: la satisfacción del cliente. Esta
no es más que aplicar pura lógica. metodología trata de dar al cliente el software que él necesita y
cuando lo necesita. Por tanto, se debe responder muy rápido a
las necesidades del cliente, incluso cuando los cambios sean al
final de ciclo de la programación.
El segundo objetivo es potenciar al máximo el trabajo en
grupo. Tanto los jefes de proyecto, los clientes y
desarrolladores, son parte del equipo y están involucrados en
el desarrollo del software.
D. Las cuatro variables definidas por XP
XP define cuatro variables para proyectos de software: coste,
tiempo, calidad y ámbito.
Además de estas cuatro variables, Beck propone que sólo
tres puedan ser establecidas por las fuerzas externas (jefes de
Figura 2. Ciclo de vida del proceso XP. proyecto y clientes), mientras que el valor de la cuarta variable
debe ser establecido por los programadores en función de las
B. Inconvenientes del desarrollo de software convencional
otras tres.
Entre los principales problemas que los programadores se
encuentran en el momento en que están desarrollando E. Fases de la Metodología
software tenemos: Existen diversas prácticas inherentes al desarrollo de
• Retrasos en la planificación: Llegada la fecha de software.
entregar el software éste no está disponible. • Planificación.
• Sistemas deteriorados: El software se ha creado pero XP plantea la planificación como un permanente dialogo
después de un par de año el coste de su entre las partes, la empresarial y la técnica. Las personas
mantenimiento es tan complicado que del negocio necesitan determinar:
definitivamente se abandona su producción. Ámbito: ¿Qué es lo que el software debe de resolver para
• Tasa de defectos: El software se pone en producción que este genere valor?
pero los defectos son tantos que nadie lo usa. Prioridad: ¿Qué debe ser hecho en primer lugar?
• Requerimientos mal comprendidos: El software no Composición de versiones: ¿Cuánto es necesario hacer
resuelve los requerimientos planificados inicialmente para saber si el negocio va mejor con software que sin él?
con el cliente. En cuanto el software aporte algo al negocio se deben
• Cambios de negocio: El problema que resolvía el tener lista las primeras versiones.
software ha cambiado y el coste de adaptarlo es
9
SAVIA
Fechas de versiones: ¿Cuáles son las fechas en la presencia su papel: uno codifica en el ordenador y piensa la mejor
del software o parte del mismo pudiese marcar la manera de hacerlo, el otro piensa más estratégicamente,
diferencia? ¿Va a funcionar?, ¿Puede haber pruebas donde no
El personal del negocio no puede tomar en vació estas funcione?, ¿Hay forma de simplificar el sistema global para
decisiones, y el personal técnico tomará las decisiones que el problema desaparezca?
técnicas que proporcionan la metería prima para las El emparejamiento es dinámico, puedo estar emparejado
decisiones del negocio. por la mañana con una persona y por la tarde con otra, si
Estimaciones: ¿Cuánto tiempo lleva implementar una tienes un trabajo sobre un área que no conoces muy bien
característica? puedes emparejarte con otra persona que si conozca ese
Consecuencias: Informar sobre las consecuencias de la área. Cualquier miembro del equipo se puede emparejar
toma de decisiones por parte del negocio. con cualquiera.
Procesos: ¿Cómo se organiza el trabajo y el equipo? Propiedad colectiva: Cualquiera que crea que puede
Programación detallada: Dentro de una versión ¿Qué aportar valor al código en cualquier módulo puede hacerlo,
problemas se resolverán primero? ningún miembro del equipo es propietario del código. Si
Pequeñas versiones: Cada versión debe de ser tan alguien quiere hacer cambios en el código puede hacerlo.
pequeña como fuera posible, conteniendo los Si hacemos el código propietario, y necesitamos de su
requerimientos de negocios más importantes, las versiones autor para que lo cambie entonces estaremos alejándonos
tiene que tener sentido como un todo, no se puede cada vez mas de la comprensión del problema, si
implementar media característica y lanzar la versión. necesitamos un cambio sobre una parte del código lo
• Diseño hacemos y punto. XP propone un propiedad colectiva
Metáfora: Una metáfora es una historia que todo el sobre el código nadie conoce cada parte igual de bien pero
mundo puede contar a cerca de cómo funciona el sistema. todos conoce algo sobre cada parte, esto nos preparará
Algunas veces se pueden encontrar metáforas sencillas para la sustitución no traumática de cada miembro del
“Programa de gestión de compras, ventas, con gestión de equipo.
cartera y almacén”. Las metáforas ayudan a cualquier Integración continúa: El código se debe integrar como
persona a entender el objeto del programa. mínimo una vez al día, y realizar las pruebas sobre la
Diseño sencillo: El diseño adecuado para el software es totalidad del sistema. Una pareja de programadores se
aquel que: encargara de integrar todo el código en una maquina y
1. Funciona con todas las pruebas. realizar todas las pruebas hasta que estas funcionen al
2. No tiene lógica duplicada. 100%.
3. Manifiesta cada intención importante para los Estándares de codificación: Si los programadores van a
programadores. estar tocando partes distintas del sistema, intercambiando
4. Tiene el menor número de clases y métodos. compañeros, haciendo refactoring, se debe establecer un
• Desarrollo. estándar de codificación aceptado e implantado por todo
Recodificación: Cuando se implementan nuevas el equipo.
características en los programas se plantea la manera de • Pruebas
hacerlo lo más simple posible, después de implementar No debe existir ninguna característica en el programa que
esta característica, nos preguntamos cómo hacer el no haya sido probada, los programadores escriben pruebas
programa más simple sin perder funcionalidad, este para chequear el correcto funcionamiento del programa,
proceso se le denomina recodificar o refactorizar los clientes realizan pruebas funcionales. El resultado un
(refactoring). Esto a veces nos puede llevar a hacer más programa más seguro que conforme pasa el tiempo es
trabajo del necesario, pero a la vez estaremos preparando capaz de aceptar nuevos cambios.
nuestro sistema para que en un futuro acepte nuevos
Aplicando la metodología XP en SAVIA
cambios y pueda albergar nuevas características. No
debemos de recodificar ante especulaciones si no solo Después de entender en qué consiste la metodología XP, fue
cuándo el sistema lo pida. necesario adaptarla al desarrollo de SAVIA.
Programación por parejas: Todo el código de producción La metodología se acopla muy bien a la naturaleza del
lo escriben dos personas frente al ordenador, con un sólo proyecto, y uno de sus puntos fuertes se refleja de manera
ratón y un sólo teclado. Cada miembro de la pareja juega clara: XP está diseñado para grupos pequeños de
10
SAVIA
11
SAVIA
Figura 5. Página principal de [Link]
V. ESTO ES SAVIA
Hacer la mejor experiencia de usuario posible
Con esta idea en mente desde un principio y siempre
pensando en el cumplimiento total de los objetivos planteados,
en la simplificación y potencialización al máximo de las
funcionalidades, en la intuitividad y la retroalimentación de la
Figura 4. Página principal de [Link]. interfaz gráfica, en la eficiencia de las tareas de procesamiento,
utilizando como guía continua la metodología XP y aplicando
• Enviar archivos a cualquier persona. los conceptos y tecnologías detalladas en las secciones
• Guardar copias de seguridad de los archivos. anteriores, SAVIA comienza su camino desde ser un proyecto
• Subir archivos vía Email. práctico con buenas ideas para convertirse en un producto
• Publicar en páginas web con Box. robusto, amigable, funcional y versátil.
12
SAVIA
13
SAVIA
• Selección del tema preferido (el color disponible para todos los mensajes son almacenados. Este sistema de mensajes
el marco de la interfaz gráfica) para visualizar los también es utilizado de manera automática e interna cuando es
contenidos. necesario notificar a un usuario de una operación solicitada al
• Gestión de la información personal disponible, tanto a sistema.
nivel público como a nivel privado, desplegada en los
perfiles de usuarios.
• Gestión de una imagen representativa de la cuenta de
usuario, o avatar.
• Gestión de la información sobre la ubicación
geográfica de un usuario a través de Google Maps [22].
• Visualización del perfil público de cualquier usuario
registrado, con información básica dispuesta y
autorizada.
• Eliminación total, voluntaria y accesible en cualquier
momento, de la cuenta de usuario.
Iteración 2: Modulo de relaciones
Figura 10. Envío de mensajes entre amigos.
El modulo de relaciones surge como una idea para hacer que
SAVIA sea algo más que un sistema personal de El sistema de búsqueda de usuarios permite localizar a
almacenamiento. Teniendo como estructura general el cualquier usuario en el sistema a partir de un formulario de
concepto de usuario final, surge como una idea innovadora el parámetros básicos y conocerlo a través de su perfil público de
concepto de relaciones: una comunidad de usuarios usuario. Estando aquí, es posible solicitar una amistad (entre
interconectada entre sí por medio de un sistema de amistades dos usuarios sin vínculo) o ver la versión extendida del mismo
y mensajes internos. perfil (para usuarios que ya son amigos).
En este contexto, una amistad es el vinculo creado a partir
del binomio solicitud creada / solicitud aceptada entre dos Funcionalidades disponibles en este módulo
usuarios registrados que toman contacto entre sí a través del • Gestión de las solicitudes de amistad entre dos
sistema de búsqueda de perfiles públicos. Un usuario puede usuarios, con la posibilidad de envío desde una parte y
tener tantos amigos como desee (Figura 9) e iniciar la relación el veredicto (aprobación o rechazo) de la otra.
en dos vías: realizando las solicitudes de amistad que quiera, o • Gestión de amistades establecidas entre usuarios,
aprobando (o rechazando si es el caso) las solicitudes de para marcar como amistad destacada o para terminar
amistad que reciba de otros usuarios. una relación unilateralmente.
• Búsqueda de usuarios registrados en el sistema y
visualización de perfiles públicos y perfiles extendidos.
• Gestión de mensajes, bien sea como comunicación
privada entre dos amigos o como notificación del
administrador.
Iteración 3: Modulo de almacenamiento
Está claro: la esencia de SAVIA es la gestión de archivos.
Siendo el componente principal del desarrollo, el módulo de
almacenamiento se encarga de todo el proceso que involucra
los archivos personales de un usuario.
Figura 9. Listado de amigos de un usuario.
El primer paso es la subida de un archivo a través de un
Así mismo, un mensaje es una comunicación textual directa formulario tipo AJAX, como lo describe la Figura 11. Cada
y privada entre dos usuarios enlazados previamente entre sí archivo debe cumplir con tres normas básicas de formato para
como amigos. No hay límite en el número de mensajes que se ser válido: tener la extensión adecuada, no sobrepasar ni el
envían (Figura 10) ni en el número de mensajes que se reciben: límite de tamaño máximo por archivo ni el límite de espacio
14
SAVIA
asignado libre y contar con metadatos correctos a nivel de cuenta de usuario tienen como destino (a nivel lógico) una
caracteres. entidad virtual denominada espacio.
Cabe destacar que a nivel interno del sistema hay Soportada totalmente a nivel tecnológico por AJAX y con un
disponibles variables parametrizables que determinan la lista tamaño asignado por defecto, un espacio asociado (Figura 13) a
de extensiones aceptadas de archivos, los tamaños máximos un usuario es el lugar único y exclusivo de control de los
permitidos, la ubicación física de los archivos almacenados y la archivos disponibles. Desde aquí es posible la búsqueda de
posibilidad de realizar copias de seguridad, como medida de archivos, la visualización jerárquica y la gestión individual de
redundancia de datos en caso de emergencias. cada uno. Es una vista divida en tres grandes secciones: el árbol
de navegación, el visualizador de contenidos de la carpeta
actual y el visualizador del archivo actual seleccionado.
Figura 11. Formulario para subir un archivo. Figura 13. Vista general de un espacio, en vista de modo amplio.
Un archivo almacenado cuenta con información asociada Al lado izquierdo y ocupando la tercera parte del ancho de la
interfaz gráfica, en la sección del árbol de navegación se
para permitir su localización lógica dentro de una cuenta de
usuario: el esquema de metadatos. Posibilitando la búsqueda disponen los archivos de manera jerárquica con una
de archivos y la generación de estadísticas, y tomando como abstracción del concepto de carpeta contenedora (no se
base los elementos descriptores del estándar Dublin Core permiten carpetas anidadas), organizados alfabéticamente.
(presentado en la sección II de este documento), los principales Cada archivo subido, por defecto, es alojado dentro de la
metadatos asociados a un archivo se presentan en la Figura 12. carpeta de inicio del espacio. De la misma manera esta sección
cuenta con una barra dinámica de búsqueda de los archivos
disponibles, que utiliza como parámetros los metadatos
METADATOS asociados y muestra los resultados adecuados cada vez que
algún texto es digitado.
Del lado derecho se ubican, en forma de pila, las sección de
Dueño visualización de la carpeta actual (parte superior) y del archivo
actual (parte inferior).
Nombre Desde la parte relacionada con la carpeta contenedora
seleccionada en el momento podemos ver sus archivos
asociados en forma de tabla, y realizar algunas tareas de
Extensión gestión: marcar el archivo como importante, marcar como
archivo compartido, eliminar el archivo o descargar el
Descripción contenido de la carpeta (en formato comprimido). Un archivo
compartido es aquel que un usuario determina como visible, o
público, para descargas por parte de la red de sus amigos
Palabras clave directos. En la versión extendida de un perfil se encuentran los
enlaces para descargar los archivos compartidos de un usuario
Figura 12. Esquema de metadatos asociados a un archivo.
específico.
Le gestión de los archivos, al igual que la consulta de datos En el cuadro de visualización del archivo actual seleccionado
estadísticos, es factible cuando se cuenta con al menos un contamos con información más detallada de dicho archivo, así
archivo almacenado. Todos los archivos almacenados en una como también con opciones adicionales de gestión:
15
SAVIA
modificación de algunos de los metadatos, envío del archivo Iteración 4: Modulo de comunicaciones
por medio de un mensaje (sólo si está marcado como archivo Uno de los objetivos principales de este proyecto es la
compartido), cambio de la carpeta contenedora asociada y la integración con aplicaciones y desarrollos existentes, de la
descarga del archivo, en su formato original o en formato manera más sencilla y menos traumática posible. Conectarse e
comprimido. interactuar con sistemas externos, de distinto propósito y con
La consulta de datos estadísticos brinda al usuario una distinta arquitectura, es una labor cada vez más popular e
pequeña referencia sobre los tópicos más importantes y críticos indispensable para ofrecer herramientas compuestas con más
para tener en cuenta, y facilitan su análisis. Asumiendo el funcionalidades. En esta moda vive los servicios web (descritos
formato de presentación de datos en un diagrama de pastel en la sección II) en sus distintos sabores. Así mismo, uno de los
construido en tiempo real (a través de Google Chart [23], a lenguajes de intercambio de información mas utilizados,
partir de los archivos almacenados se pueden ver tres gráficas: también explicado anteriormente, es XML. En este marco
la ocupación actual del espacio (como lo muestra la Figura 14), contextual nacen los servicios web de SAVIA, basados en una
el porcentaje de archivos almacenados según cada extensión implementación sencilla pero poderosa: XML‐RPC.
aceptada y la clasificación de los archivos según su visibilidad. XML‐RPC [24] (donde RPC significa Remote Procedure Call,
en inglés) es un conjunto de bibliotecas de funciones
implementadas en distintos lenguajes (Python lo incorpora en
sus versiones actuales) que proporciona los artefactos
necesarios para realizar comunicaciones HTTP con el modelo
cliente‐servidor tradicional en una red.
Este módulo contiene las dependencias necesarias para
ofrecer las funcionalidades elementales de SAVIA: gestión
básica de archivos. Basta con consultar la URL de enlace para
descubrir cuáles operaciones tiene el servidor de escucha de
servicios web (como lo indica la Figura 15).
Figura 14. Gráfico de pastel mostrando la ocupación actual de
un espacio.
Funcionalidades disponibles en este módulo
• Subida de los archivos al espacio asociado a un
usuario actual.
• Visualización de todos los archivos disponibles desde
la interfaz de espacio.
Figura 15. Interfaz de acceso a los servicios web basados en
• Localización de archivos disponibles desde la barra de
XML‐RPC.
búsqueda dinámica, desde el árbol de navegación y
desde la visualización de la carpeta actual. Funcionalidades disponibles en este módulo
• Gestión de un grupo de archivos asociados a una • Almacenamiento de archivos al espacio asociado a un
misma carpeta contenedora. usuario solicitante (si no existe, es creado). Esta
• Gestión de un archivo particular desde el cuadro de función sobrescribe los archivos existentes en caso de
visualización del archivo actual. ser necesario.
• Compartir archivos entre una red de amigos, y a través • Descarga de un archivo solicitado por un usuario
de mensajes. autorizado
• Descarga de archivo almacenados en formato original • Eliminación completa de un archivo solicitado por un
y formato comprimido. usuario autorizado.
16
SAVIA
17
SAVIA
18