miércoles, 18 de mayo de 2016

Estudio de Usabilidad

Una vez nuestra página web se encuentra operativa podemos realizar diversos análisis con el fin de comprobar si la distribución de contenidos que hemos escogido a la hora de programar ha sido la correcta, si la información que se pretende dar es fácilmente accesible, si el usuario sabe navegar a través de la web,etc. En definitiva, realizar un estudio de usabilidad.

Hoy en día ha cobrado una gran importancia la usabilidad de las páginas Web, ya que si el usuario no encuentra algo o no sabe realizar una determinada tarea, lo más fácil es que se vaya a la competencia.

Desde construcciones Enessa se ha realizado un pequeño test para saber si se han organizado los contenidos de forma correcta, para ello se ha utilizado de herramienta OptimalSort  de Optimal Workshop, donde se pide a los receptores de la encuesta que organicen una serie de cartas en las categoría que ellos consideren.


Se han obtenido los siguientes datos:

  • 4 personas han completado la encuesta y han ordenado las 8 cartas en una media de 4 grupos.

El análisis de las respuestas ha producido los siguientes resultados:

En primer lugar observamos desglosado en que categorías se ha incluido cada carta:

Después también podemos ver las categorias que han usado los usuarios para clasificar nuestras cartas, aunque no coincida ninguna categoría se puede ver que varías de ellas podrían considerarse prácticamente sinónimos

A partir de estos datos, el programa elabora una matriz de similaridad, en la que se nos muestra que porcentaje de similitud hay entre las cartas.
Con estos datos el programa te calcula la mejor distribución posible de contenido en realación a las respuestas de los usuarios; gráficamente se puede observar en el diagrama abajo mostrado donde algunas de las cartas convergen en una misma categoría común

A la vista de este análisis podemos llegar a las siguientes conclusiones:


  • Contacto y Situación deberían estar agrupados bajo una misma categoría que podría llamarse contacto o datos de contacto, mientras que en nuestra web se encuentran separados formando 2 categorias diferentes.
  • Información Corporativa, Filosofía de empresa y Nuestro equipo al final convergen hacia una única categoría que podría llamarse Información empresarial o Sobre la Empresa. Por tanto podemos decir que se encuentran correctamente agrupados en nuestra web
  • Servicios y Clientes podría caber la posibilidad de agruparlos juntos pero hay mucha indecisión al respecto, por lo tanto es mejor dejarlos en categorías diferentes, tal y como se encuentran en nuestra web.  

Este tipo de análisis nos sirven de gran utilidad a la hora de conocer la desenvoltura de los usuarios en nuestra web y poder realizar mejoras inmediatas que incrementen la eficiencia de la web.

Inicio de Sesión

Se ha implementado un pequeño sistema a modo de ejemplo para poder autenticarse en la página web a través de un usuario y contraseña. A continuación mostramos su funcionamiento:

En primer observamos un mensaje informativo en la parte superior de la Web que indica al usuario que se ponga en contacto con la empresa o inicie sesión con su cuenta, clicando en el logo de usuario, accedemos a la página de identificación desplegable.


Una vez en la página de identificación, el sistema nos pide introducir los datos de acceso, Usuario y contraseña, ambos de carácter obligatorio:


Si el resultado de la autenticación ha sido válido, el usuario ya estará en su cuenta con su sesión abierta, como indica el mensaje informativo dando la bienvenida:


Si por el contrario el resultado de la autenticación no es correcto, el sistema mostrará que el usuario o contraseña introducidos no ha sido correcto:


Ahora veamos como se ha implementado este sistema haciendo uso de lenguaje y variables de PHP.

En primer lugar en el fichero header-info.php que contiene el panel superior informativo se ha añadido mediante php un mensaje variable en función de las variables de sesión que están definidas o bien si se ha pasado un mensaje de error durante el Login.


Una vez pulsado el botón de usuario, vemos que se nos despliega un banner que sigue el mismo estilo que el cuadro de búsqueda y que constituye la página de identificación, que consta de un formulario que solicita 2 parámetros de carácter obligatorio y redirige al fichero ProcesaLogin.php.


En procesaLogin.php se ha definido un array de "logins" es decir pares usuario-contraseña, donde se almacenan los datos de acceso del usario. Una manera más correcta de hacerlo seria hacer uso de una base de datos implementada de manera parecida a la anteriormente vista, pero como el objetivo de esta entrada era ejemplificar el inicio de sesión se ha simplificado esa parte.

Una vez obtenidos los valores de usuario y contraseña que ha introducido el usuario se comparan con los que contiene el array (usuarios registrados) si la búsqueda produce resultados positivos, se inicia sesión sesion_start() y se declara la variable PHP $_SESSION['user'] con el nombre de usuario conectado. En caso de que el Login no sea correcta, se vuelve a la pagina principal y se pasa un parámetro de error $error_login



A partir de este esquema básico se podrían implementar muchas más funcionalidades como manejo de base de datos, cookies,etc.

Manejo de Base de Datos con PHP

En esta entrada aprenderemos como hacer uso de una base de datos en nuestra web y manejarla usando PHP. La base de datos será SQL y haremos uso de MySQL y phpMyAdmin para su creación y manejo.
En nuestro caso nuestro servidor web 000webhost nos ofrece estas herramientas en el panel de control de nuestra Web.

En primer lugar creamos la base de datos usando MySQL:
Una vez creada la base de datos desde phpMyAdmin introduciendo las credenciales de acceso, podemos manejar nuestra base de datos y crear las tablas que necesitemos. 

Observamos que podemos crear nuevas tablas o bien manejar las ya existentes. añadir o quitar campos, visualizar el contenido de la tabla o añadir quitar entradas de la tabla.

En el caso de nuestro proyecto Web se ha decidido utilizar una base de datos relacional (SQL) para manejar las peticiones de puestos de trabajo, se trata de una base de datos simple pero que ejemplifica el modo de uso para aplicaciones Web.

Nuestra base de datos constará de una tabla "trabajos" que almacenará 4 parámetros: "id", "nombre", "apellidos" y "trabajo". id es un entero que se autoincrementa con cada entrada.

Hemos creado un directorio para almacenar los archivos que implementaran el manejo de la base de datos, éste contiene 2 ficheros: conectar.php y solicitud_trabajo.php
El primer archivo contiene la conexión con el servidor que almacena la base de datos, la cual se realiza mediante PHP de la siguiente forma: 


El segundo se trata de un script que maneja los datos pasados por la Query a través de un formulario y los inserta en la tabla de nuestra base de datos.
Se ha modificado el formulario de nuestra página Web para que inserte los parámetros correspondientes en la tabla de nuestra base de datos pasándoles los parámetros introducidos al script solicitud_trabajo.php

En el Script solicitud_trabajo.php observamos que lo primero es conectarse a la base de datos utilizando el código de conectar.php e introduciéndolo con require_once de php. Obtenemos los valores pasados a través del formulario que en PHP se almacenan en la variable $_REQUEST y comprobamos que no se encuentran vacíos. 
Acto seguido ejecutamos las funciones de insertar en la base de datos según se muestra y si todo ha sido correcto se redirige a la página puestos_trabajo.php


puestos_trabajo.php también ha sido modificado con respecto a la versión de nuestra Web estática, anteriormente el resultado que se mostraba era el mismo independientemente del formulario rellenado, ahora mediante PHP y pasando los parámetros deseados a través de la URL podemos hacer que el resultado cambie dinámicamente dependiendo del formulario que lo genere.

En nuestra página puestos_trabajo.php damos las gracias al usuario por rellenar la solicitud del puesto específico y mostramos el contenido de la base de datos indexado en un tabla. El resultado obtenido es este:


En el código observamos como se comprueba si se han pasado los parámetros correctamente y se le envía un mensaje al usuario, después se usa un SELECT en la tabla de la base de datos para ir recorriendo las filas e introduciéndolas en la tabla.


Así hemos escenificado el uso de una base de datos sencilla. En un caso real, se deberían almacenar todos los datos que se han obtenido en el formulario y las tablas se harían más grandes, si además hay un nº de usuarios muy elevado, habría que estudiar la convenencia de usar otros modelos de bases de datos como NoSQL (Not only SQL).

Migración a PHP

En esta parte de nuestro diseño web hemos decidido cambiar el formato de nuestro código de HTML a PHP, este cambio ha sido motivado por los siguientes motivos, entre otros:
  • Ejecución de funcionalidades en lado servidor
  • Manejo de base de datos
  • Gestión de sesiones
  • Formularios dinámicos 
  • Uso de plantillas
Lo primero que vamos a hacer es dividir las partes comunes de nuestro código en plantillas PHP o templates. Esto se debe que a medida que vayamos incorporando páginas nuevas a nuestra Web, querremos que sigan un patrón similar y de esta forma nos evitamos reescribir código y queda más visible el contenido propio de cada página.

Para ello hemos creado el directorio templates donde alojamos los archivos php que contienen el código común:
A modo de ejemplo, visualizamos el código de uno de ellos, el resto siguen el mismo procedimiento y contienen el código que antes teníamos en nuestra página principal.

Vemos el contenido de scripts.php que contiene los scripts que utiliza la web y que deberán ser importados en cada página de la misma.

Ahora solo nos queda, incluir las plantillas en la parte del código de nuestra página que deseemos, siguiendo con el ejemplo de scripts.php los incluimos al final para reducir los tiempos de carga de la página. Utilizamos include con PHP para incluirlo.

sábado, 2 de abril de 2016

Creación de la Web: Adaptando la plantilla.

Una vez que tenemos nuestra plantilla de Bootstrap, es hora de empezar a programar nuestra Web. Modificaremos el código de nuestra plantilla para adaptar su diseño a lo que queremos de nuestra Web. Usaremos muchas funcionalidades que nos proporciona la plantilla, creando y eliminando contenidos a nuestro gusto y haciendo uso de los plugins JQUERY para dotar de cierto dinamismo a nuestra Web.

El resultado final de nuestra Web se puede ver en http://construccionesenessa.tk. A continuación, explicaremos paso a paso como hemos programado el código para obtener nuestro resultado.


En la presentación de la página Web vamos a ver 3 elementos distintos: el encabezado informativo, el menú y el contenedor de presentación con el carrusel de noticias.

  • Encabezado informativo: 


Observamos que se trata de una fila (row), que se divide en 2 partes de 6 columnas, es responsive ya que se adapta dependiendo del tamaño del dispositivo. El primer contenedor de la fila contiene el teléfono de contacto y el fax de la empresa en una lista y el segundo un botón de contacto y el botón de búsqueda.

  • Menú Superfish 



Vemos que se trata de otra fila que se subdivide en un contenedor alineado en la parte izquierda que contiene el logotipo empresarial y otro contenedor alineado en la parte derecha que contiene el menú implementado mediante el plugin superfish. Una característica importante de este menú es su adaptabilidad a los dispositivos, podemos observar que para dispositivos grandes se muestra el menú completo mientras que para dispositivos móviles o más pequeños se muestra un menú desplegable.

Se muestra la implementación del primer elemento del menú "La Empresa" que además es desplegable y contiene 3 sub-elementos: "Información Corporativa", "Nuestro Equipo" y "Filosofía". El resto de elementos del menú se implementan de forma análoga.

Cabe destacar que en esta primera versión de la Web la mayoría de los enlaces no están operativos, en un futuro se implementarían redirigiendo los elementos a otras páginas html de la propia Web.

  • Contenedor presentación 
Este contenedor es lo primero que vemos al entrar en la página, su función es ser llamativo y causar una buena primera impresión. Consta de 2 elementos un contenedor informativo y un carrusel de noticias.

El contenedor informativo es simple, vemos un título dando la bienvenida a la página web y un subencabezado con un slogan. Destacamos el uso del plugin JQUERY stellar.js que dota de un cierto dinamismo a la imagen de fondo cuando nos desplazamos.



El Carrusel de noticias se implementa haciendo uso del plugin owl-carousel de la manera que vemos, se ha añadido a modo de ejemplo la implementación del primer elemento de noticias, el resto siguen el mismo esquema análogo.

Para hacer uso del carrusel se añade a la lista que contiene los elementos de las noticias el id="pm-presentation-owl" para posteriormente haciendo uso de JQUERY activarlo en el main.js siguiendo la documentación de owl-carousel de la siguiente manera.


Después se añaden las funcionalidades que queramos, en este caso, la fecha de publicación de la noticia, una breve introducción a la noticia, una imagen de fondo y un hover que al situar al ratón encima de la noticia  nos muestre una descripción más detallada sobre ella.


Seguimos navegando por la página web y lo siguiente que nos encontramos es un panel que describe los servicios ofrecidos por la empresa y otro panel que explica la filosofía, los valores morales y éticos de la empresa. Vamos a analizarlos más en detalle:

  • Panel de servicios: 



Vemos como se implementa el primer elemento o servicio, el resto se programan de la misma forma. Dentro de la misma fila, dividimos el espacio en 3 contenedores de tamaño 4 filas y situamos el icono deseado y los comentarios que queremos que aparezcan.

  • Panel "Filosofía de Empresa"


Vemos que este panel esta implementado mediante el plugin wow.js que hace que cuando llegas al punto de visibilidad del panel, los elementos aparezcan dinámicamente, vemos que podemos cambiar la velocidad, duración, etc.

En la parte superior del panel observamos un ejemplo de uso de icono a través de la tipografía Font-Awesome y su inclusión siguiendo la documentación que ofrece el plugin.


A continuación vemos un panel de estadísticas de la empresa y otro carrusel que muestra una serie de clientes importantes para los que trabaja la empresa. Vamos a analizarlo:

  • Panel de estadísticas: 


Vemos otro vez el uso de los plugins stellar.js y wow.js para dar dinamismo a este panel. Consta de un icono de Font-Awesome que delimita el panel, un contenedor informativo que te introduce las estadísticas y vemos un elemento de los 4 que proporcionan las estadísticas. El resto siguen el mismo esquema.

Las cajas de estadísticas se muestran dinámicamente al llegar a la sección mediante Wow, como ya hemos visto anteriormente. Se muestran dentro de un div en el que en el CSS se ha añadido una imagen triangular. En otro div añadimos una pequeña descripción de la estadística mostrada.

  • Carrusel de Clientes


La implementación del carrusel es idéntica a la realizada anteriormente en el carrusel de noticias, y su activación en main.js es igual que la del carrusel de noticias. Vemos el primer elemento del carrusel, consta de la imagen de la empresa y un enlace a su página web. Cabe la posibilidad de añadir una pequeña reseña para destacar el cliente como importante, implementada en el CSS.


Llegamos a uno de los elementos operativos de la página, un formulario para poder solicitar un puesto de trabajo en la empresa. Su implementación HTML es la siguiente:



Se trata de un formulario estándar HTML, donde hemos dividido el espacio en 2 contenedores de 6 columnas. En el primer contenedor se sitúan los datos personales requeridos agrupados bajo un fieldset. En el segundo se solicitan los datos profesionales tales como el CV  o el puesto de trabajo solicitado bajo un selector.

Una vez introducidos los datos correctamente y pulsado sobre el botón de enviar, la web nos redirige a una página html fija, que es la siguiente:


Vemos que esta página sigue el formato de la página principal, mismo estilo, mismo menú y mismo pie de página. El contenido de la página es una tabla a la que se ha añadido el CSS apropiado para que sea acorde con el estilo de la página. Esta tabla recoge los puestos vacantes que se ofertan en la empresa así como una breve descripción sobre el perfil profesional que se busca. Si hay plazas vacantes existe la opción de Solicitar una entrevista para ese puesto, si no los hubiese se da la opción de inscribirse en una base de datos de la empresa, para si en un futuro quedase una plaza vacante poder contar con el solicitante.

El código HTML es sencillo, posteriormente lo complementamos con el CSS.

Vemos el encabezado de la tabla y la primera fila, siguiendo el esquema de tabla HTML normal. Una parte del CSS de la tabla lo vemos a continuación:




Observamos que se aprovecha el pie de página, para introducir gran cantidad de información. Volvemos a ver una breve descripción de la empresa acompañada de unos enlaces a los servicios ofrecidos. También se ha aprovechado el pie de página para introducir todas las redes sociales en las que la empresa es activa, vemos los últimos tweets publicados por la cuenta de la empresa y más abajo los enlaces a las diferentes redes sociales.

También se incluye un formulario para subscribirse a la newsletter de la empresa. Por último al final se incluyen los derechos de CopyRight de la página Web y un pequeño menú.

  • Servicios

La implementación es sencilla, vemos el uso de Font-Awesome una vez más y el carácter responsive y adaptativo de los contenedores.

  • Tweets 


Haciendo uso del plugin Twitterfeed y del CSS del mismo, es sencillo añadir unos tweets a la página Web. El plugin es proporcionado por Twitter.

  • Social 


Vemos la implementación de los enlaces a las redes sociales haciendo uso de Font-Awesome y el posterior formulario para solicitar inscribirse a la newsletter.

  • Copyright y menú 


Por último añadimos el copyright en el que detallamos el diseñador web que ha desarrollado la página, en este caso nosotros mismos, y un enlace en este caso de la ETSIT, marco donde se ha desarrollado el proyecto. No nos olvidamos de hacer alusión a quien nos ha brindado la plantilla de Bootstrap.

Asimismo, la implementación del menú se realiza de forma normal.


Con esto damos por finalizada la construcción de la página Web, en lo referente a la estructura y el estilo que sigue. Más adelante introduciremos mejoras haciendo uso de formularios dinámicos, bases de datos, etc.

Espero que este ejemplo y tutorial hayan servido de ayuda para ilustrar el procedimiento de la construcción de una página Web.