Requisitos generales

Instalación

  • Linux: para equipos con sistema operativo Linux se desarrollará un paquete .deb que contendrá lo necesario para la instalación automática y la configuración de la plataforma en una máquina con una distribución Debian o Ubuntu.
  • Windows: para equipos con sistema operativo Windows XP o Vista se desarrollará un instalador que contendrá lo necesario para la instalación automática y la configuración de la plataforma.

Aspectos visuales

  • Navegadores: será obligatorio que el interfaz de la plataforma funcione y se visualice correctamente como mínimo en Mozilla Firefox e Internet Explorer.
  • Usabilidad: el interfaz ha de resultar cómodo a los usuarios y lo suficientemente intuitivo como para que puedan comprender el manejo de las funcionalidades de una forma rápida.
  • Aspecto: el estilo del interfaz será común entre todos los elementos del mismo, sencillo, claro y visualmente agradable.

Autenticación

  • Registro de usuarios: existirá un mecanismo de registro de usuarios en la plataforma para los cuales será necesario establecer un nombre de usuario y una contraseña al menos, así como unos permisos asociados al usuario. Adicionalmente se podrán almacenar datos identificativos adicionales de los usuarios.
  • Login/Logout: para usar la plataforma será necesario autenticarse mediante el identificador de usuario y la contraseña. Asímismo habrá un mecanismo para cerrar la sesión.
  • Variable de usuario: existirá una variable plataforma que permitirá acceder al identificador de usuario para que pueda ser utilizado por las instancias de los gadgets.

Internacionalización

  • Soporte para internacionalización: es necesario que la plataforma sea internacionalizable en múltiples idiomas. Asímismo, los usuarios podrán seleccionar el idioma en el que desean que se presente el interfaz. Todos elementos de texto susceptibles de aparecer en el interfaz han de poder traducirse al idioma seleccionado.
  • Idiomas soportados: inicialmente se dará soporte a los siguientes idiomas: inglés, portugués y castellano.
  • Variable de idioma: existirá una variable plataforma que permitirá acceder al idioma para que pueda ser utilizado por las instancias de los gadgets.

Servicios

  • API: la plataforma proporcionará una API mediante la cual los gadgets podrán acceder a los distintos servicios disponibles en la misma. Esta API tendrá la siguiente funcionalidad:
    • Creación de variables de la plataforma vinculadas a iGadgets.
    • Consulta de valores de variables de la plataforma y de los iGadgets.
    • Propagación de eventos a través del Wiring.
    • Realización de peticiones HTML (get, post, put y delete).
  • Persistencia: la plataforma contará con un módulo servidor de persistencia el cual será el encargado de almacenar toda la información de la plataforma en la base de datos y acceder a la misma.
  • Proxy: existirá un módulo que realizará las funciones de proxy HTTP con el fin de proporcionar un medio a través del cual la plataforma pueda llevar a cabo peticiones HTTP provenientes de los iGadgets con el fin de proporcionar un medio de intercomunicación con servicios que puedan ser proporcionados de manera externa a EzWeb.

Errores

  • Detección de errores: los errores que se produzcan durante el uso de la plataforma no han de afectar a los restantes elementos de la plataforma de manera que sea posible continuar usando la plataforma.
  • Notificación: existirá una manera de notificar a los usuarios los errores ocurridos durante el uso de la plataforma. Los mensajes de error han de ser lo suficientemente descriptivos para que los usuarios comprendan la causa del error.

Requisitos específicos

  • Creación de recursos: un usuario ha de poder crear un recurso proporcionando la URI de su template mediante el interfaz del catálogo. Se tiene que notificar al usuario cualquier error relacionado con creación de recursos ya existentes o errores en los datos del recurso.
  • Búsqueda de recursos: el catálogo ha de proporcionar un interfaz sencillo de búsqueda por palabras que se muestre en el interfaz del Catálogo.
    • Búsqueda avanzada: se proporcionará un interfaz adicional para realizar búsquedas complejas basadas en palabras que por defecto ha de estar oculto y será accesible mediante un enlace cuya activación lo integrará dentro del interfaz del Catálogo. Permitirá los siguientes tipos de búsquedas:
      • Por etiquetas: se mostrarán los recursos que contengan etiquetas con las palabras introducidas en el el correspondiente campo.
      • Por ranuras (slots): se mostrarán los recursos que contengan slots cuyos nombres coincidan con las palabras dadas.
      • Por eventos (events): se mostrarán los recursos que contengan eventos cuyos nombres coincidan con las palabras dadas.
      • Por todas/alguna/ninguna de las palabras de un conjunto: se podrá realizar una búsqueda combinada en función de criterios que comprueben si los recursos contienen todas, alguna o ninguna de las palabras definidas.
    • Etiquetado avanzado: se proporcionará un interfaz adicional para realizar búsquedas sobre etiquetas (tags), este interfaz será accesible mediante un enlace cuya activación lo integrará dentro del interfaz del Catálogo. Permitirá mostrar lo siguiente:
      • Todas las etiquetas comunes entre los recursos.
      • Todas las etiquetas definidas por el usuario comunes a los recursos.
      • Todas las etiquetas comunes a los recursos que hayan definido otros usuarios.
  • Operaciones sobre los recursos
    • Instanciación: se podrán añadir instancias de recursos a los tabs de un workspace. Las nuevas instancias de gadgets se ajustarán a las variables definidas en el template del recurso.
    • Obtener información: mediante un click en la imagen que representa al recurso aparecerá un pestaña con la información asociada al recurso y los enlaces que permiten acceder a las operaciones de que se puedan llevar a cabo sobre el mismo. La información asociada que se presentará será la descripción del recurso, su conectividad, su valoración en función de los votos de los usuarios y los tags asociados al mismo.
      • Consultar la wiki del recurso: en la representación del recurso en el catálogo existirá un botón que permita la apertura una nueva ventana con la página de la wiki de desarrollo del gadget. También habrá un enlace con la misma finalidad en el desplegable con la información del recurso.
      • Consultar su template: en la representación del recurso en el catálogo existirá un botón que permita la apertura una nueva ventana con el template de desarrollo del gadget. También habrá un enlace con la misma finalidad en el desplegable con la información del recurso.
    • Sistema de etiquetado (tagging): se podrán etiquetar los gadgets accediendo al desplegable de información del recurso y mediante el interfaz de etiquetado avanzado. Para cada recurso se podrán consultar todos los tags con los que se haya etiquetado un recurso por parte de los distintos usuarios, los que haya definido el usuario en concreto para el recurso y todos los tags en general.
    • Sistema de votos (voting): mediante la pestaña de información se podrá acceder a un mecanismo de voto mediante el cual podrá valorar el gadget y se podrá ver la valoración general que le han dado otros usuarios.
    • Actualizacion su código: podrá actualizar el código del gadget mediante un enlace presente en la pestaña desplegable de información.
    • Listar un determinado número de recursos por página: en función del número de recursos que se hayan agregado al catálogo se ofrecerá la posibilidad de listar una cantidad de los mismos por página. Si inicialmente sólo hay cuatro o menos recursos agregados, solamente se mostraran los que haya. En caso de que haya un número superior a cuatro se ofrecerá la posibilidad de listar una cantidad de recursos que sea múltiplo de cuatro siendo el máximo el primer múltiplo que sea mayor que la cifra total de recursos agregados. Además para facilitar la navegación a través de las diversas páginas se dispondrá de un medio para acceder a las páginas inicial, anterior, posterior y final del catálogo (siempre que en este haya más de una página).
    • Listar ordenando en función de criterios los recursos: los recursos podrán ser ordenados y mostrados en función de varios los siguientes criterios:
      • Fecha de creación.
      • Nombre.
      • Distribuidor.
      • Autor.
      • Popularidad.
  • Sistema de recomendación de recursos

Entorno Operacional (Dragboard)

  • Entornos de trabajo (Workspaces)
    • Creación y eliminación de workspaces: los usuarios podrán crear nuevos entornos de trabajo, que inicialmente tendrán una única pestaña. La eliminación de entornos de trabajo afectará a las pestañas, instancias de gadgets, conexiones y variables relacionadas. Al crear un nuevo entorno de trabajo se solicitará al usuario un nuevo nombre identificativo para él (no pudiendo repetir los ya existentes). Por defecto,un usuario inicialmente dispondrá de un único workspace con una sola pestaña.
    • Renombrado de workspaces: los workspaces se podrán renombrar con la única restricción de no poder repetir nombres ya existentes.
    • Bloqueo de todas las pestañas del workspace: existirá la opción de bloquear todas las pestañas del entorno de trabajo, de forma que todas las instancias de gadgets de todas las pestañas queden bloqueadas.
  • Pestañas (Tabs)
    • Creación y eliminación de pestañas: los usuarios podrán crear nuevas pestañas, inicialmente vacías sin ninguna instancia de gadget. La pestaña inicial se llamará "MyTab?" y las nuevas pestañas que se creen seguirán inicialmente el patrón "MyTab?<número>", donde el número se irá incrementando a medida que se vayan creando nuevas pestañas. Al eliminar una pestaña se eliminarán las instancias de gadgets, variables y conexiones asociadas a la misma.
    • Renombrado de pestañas: las pestañas podrán ser renombradas por usuarios.
  • Instancias de gadgets (iGagdets)
    • Redimensionado: las instancias de gadgets inicialmente tienen una altura y anchura definida en el campo correspondiente del template pero los usuarios dispondrán de la posibilidad de redimensionarlos dentro del dragboard conforme su rejilla de celdas. El redimensionamiento de gadgets se llevará a cabo mediante el ratón y se podrá acceder sus funciones haciendo clic en la esquina inferior derecha y arrastrando.
    • Posicionado en el dragboard: los usuarios podrán posicionar las instancias de gadgets dentro del dragboard ajustándose a la rejilla de celdas y restringiendo sus posibles ubicaciones en función de su tamaño y las posiciones de las restantes instancias de gadgets.
    • Contexto: se definirá una serie de variables de contexto cuyo fin es almacenar la información útil de la plataforma de cara a los gadgets, a las cuales se podrá acceder desde los gadgets mediante la API de la plataforma.
  • Instancias de gadgets: las intancias de gadgets se presentarán inicialmente con una barra superior que asemeje una ventana de un sistema operativo en la cual se ofrecerán las distintas operaciones relacionadas con el entorno operacional vinculadas a los iGadgets.
    • Eliminación de un iGadget: en la esquina superior derecha de un iGadget se dispondrá de un botón que permita eliminar la instancia de gadget y todas la variables y conexiones relacionadas con la misma.
    • Preferencias de usuario: en cada iGadget se podrá mostrar un interfaz de consulta y modificación de las preferencias de usuario que se hayan definido para cada gadget.
    • Estado de bloqueo: los iGadget bloqueados mediante las operaciones de workspaces y tabs carecerán de barra superior, no se podrán redimensionar ni reubicar dentro del dragboard.
    • Minimización/Restauración: existirá la posibilidad de minimizar los iGadget y que sólo se muestre la barra superior, y de la misma forma se podrá restaurar su tamaño.

Conexión de iGadgets (Wiring)

  • Creación y eliminación de canales: el usuario dispondrá de un mecanismo de creación y eliminación de canales dentro del interfaz del Wiring. Los canales nuevos que se creen se nombrarán inicialmente conforme al patrón "My_Channel<número>", donde el número indica su cardinal a la hora de ser creado.
  • Renombrado de canales: se podrán renombrar canales siempre y cuando no se repitan nombres ya existentes.
  • Consulta de contenido de canales: ha de ser posible consultar la información que haya en cada instante en los canales.
  • Conexión y desconexión de eventos y slots de iGadgets de distintos tabs: a través del interfaz de Wiring se podrán interconectar los eventos de los iGadgets con canales y estos a su vez con slots de otros iGadgets para que a través de estas conexiones se puedan transmitir los datos deseados.
  • Conexión y desconexión con slots de tabs: se podrán conectar canales a slots de tabs con la finalidad de que al recibir el tab un evento se active y sea la que se muestre en el entorno.

Gadget

  • Template: los aspectos estructurales de cada gadget que le vinculen con la plataforma estarán definidos en un fichero XML al cual se le denomina template. Este fichero debe ubicarse en un servidor accesible y su estructura y propiedades son las que están definidas en Template.
  • Código: el comportamiento de los gadgets estará definido en un fichero HTML o XHTML que también debe estar publicado en servidor accesible.
    • Gestión de variables: en el caso de que en el template del gadget se haya defindo alguna variable, será necesario que el código del mismo la gestione mediante los servicios proporcionados por la API de la plataforma EzWeb.