viernes, 20 de febrero de 2009

El desarrollo de una página web

Me ha dado mucha envidia José Pujol con sus "posts" en los que explica el día a día de su trabajo, así que en esta entrada voy a hacer lo mismo.

En la web de Público tenemos dos partes muy diferenciadas: el gestor de contenidos y las páginas que genera (básicamente, la portada, las subportadas y las páginas con noticias) y el resto (blogs, video, sección de cine, archivos estáticos, etc).

Hoy voy a tratar de contar cómo hemos construido la página web del concurso Foto Libre.

Lo primero que hicimos fue reunirnos con la gente del periódico que organizaba el concurso (departamentos de fotografía, "marketing" y sistemas). En esta reunión se estableció la mecánica del concurso desde un punto de vista genérico, sin entrar en detalles técnicos.
Esta fase se suele denominar "toma de requisitos" y es fundamental para que un proyecto salga adelante. Tienen que quedar perfectamente especificadas todas las características deseables.

Con esta información, desde la parte de diseño y programación web (nosotros) se hicieron unos bocetos o esquemas de las páginas. Por ejemplo: "pantalla de inicio, desde ahí el usuario puede ir al formulario de registro o a la galería de fotos", o "pantalla de registro, el usuario introduce sus datos para participar y se le envía un correo de confirmación", etc.
Existe un término llamado "casos de uso" que sirve para documentar las posibles interacciones y flujo de trabajo de una aplicación.
En este punto, todavía no se ha escrito nada de código, pero son pasos necesarios para que todo salga bien. Si no está claro qué se quiere obtener, difícilmente el proyecto será del gusto del peticionario.

Cuando todos los implicados han dado el visto bueno a estos bocetos, empieza el trabajo de los diseñadores (Matteo y Daniel) y programadores (Rodrigo y el autor de estas líneas).

El separar funciones es bueno y productivo y permite avanzar en paralelo. Mientras los diseñadores van esbozando las distintas pantallas, los programadores vamos haciendo el trabajo "de trastienda": diseño de la base de datos (si es necesaria, claro), elección de la tecnología que se utilizará en el desarrollo (lenguajes de programación, "frameworks", etc), diseño funcional de la aplicación (separación de las distintas funcionalidades de la aplicación), etc.

En este punto, los diseñadores nos proveen con algunos archivos HTML y CSS estáticos. Los programadores los "desmenuzamos" y asignamos a cada parte de la aplicación una labor, algunas de estas unidades funcionales son las que se encargan de generar el HTML de forma dinámica (obteniendo los datos de las fotos de una base de datos, validando los datos que introducen los usuarios cuando se registran o suben fotos, etc).
Es la llamada "capa de presentación".

Hoy en día muchas webs se diseñan siguiendo un patrón o modelo muy conocido: MVC (Modelo, Vista, Controlador).
La capa M (modelo) abstrae, representa y ofrece mecanismos de acceso a los datos "crudos" de la aplicación, la capa C (controlador) se ocupa de gestionar las peticiones de las distintas páginas y solicitar los datos para generar estas páginas.
Por último, la capa V (vista o presentación) "pinta" o representa los datos en un formato determinado (en nuestra aplicación de Foto Libre, en HTML).

Para muchas páginas web sencillas o informales esta separación está casi más en la mente de las persona que escribe el código, pero en desarrollos de mayor entidad conviene separar físicamente estas funcionalidades.

Espero no haberles aburrido mucho. Es difícil condensar en unas pocas líneas tanta información. Otro día les contaremos más cosas sobre el trabajo que hacemos.

9 comentarios:

  1. Bien explicado. Sigue con la idea.

    ResponderEliminar
  2. Creo que es muy interesante saber como se lo curra la gente, me ha encantado y servido para hacerme una ideal. Muchas gracias y seguir así.

    ResponderEliminar
  3. Bien descrito David! ;)Sólo añadir que para estos proyectos ''relámpago'' utilizamos un framework MVC de PHP llamado Symfony y con web www.symfony-project.orgLa verdad es que una vez que te has acostumbrado a manejarlo (como cualquier framework requiere un par de proyectos de prueba) es una forma estupenda de desplegar aplicaciones robustas muy rápidamente.La propia manera de trabajar del framework posibilita además que los diseñadores puedan estar metiendo mano al sistema de plantillas mientras los programadores cambiamos toda la lógica de un site. También facilita enórmemente el acceso a los datos, abstrayendo todas las entidades en un modelo de clases (tipos de datos, con propiedades y métodos) que luego utilizas en tu código.Automatiza logs, tiene un sistema configurable de caché, hace auténticas maravillas construyendo URLs, tiene un sistema de entornos... no sé dónde parar :)I love Symfony

    ResponderEliminar
  4. Desde luego, el uso de un framework es un auténtico salvavidas. Con el PFC (que juro que algún día terminaré) estoy usando Symfony, que como comenta @rodivi, es un auténtico monstruo. Quizá lo peor de Symfony sea precisamente sus virtudes: hace tantas cosas que la curva de aprendizaje se puede hacer muy cuesta arriba. Menos mal que su documentación es impagable. Aun así, creo que Symfony es muy bueno para proyectos grandes pero que para proyectos pequeños como que sobra un poco.Hace unas semanas que estoy trasteando con Kohana (http://kohanaphp.com/), un fork de CodeIgniter que a mi forma de ver cumple de sobra para desarrollar aplicaciones entre pequeñas y medianas. La documentación no es gran cosa pero nada que un poco de Google no pueda solucionar. Ah, y si ha esto le sumamos Doctrine (http://www.doctrine-project.org/) ya tienes el entorno de desarrollo ágil perfecto :PPerdonad, que me he emocionado. He estado leyendo el blog y me he tenido esa sensación de ''No estoy sólo''. Seguid así.Un saludo.

    ResponderEliminar
  5. QUÉ BIEN, NO SABÍA QUE EXISTIERA ESTA PÁGINA EN EL PERIÓDICO. AHORA QUE HE EMPEZADO, YO QUE ESTOY MÁS VERDE QUE UNA LECHUGA, A CREAR UNA PÁGINA WEB CON ASPIRACIONES, ENCONTRAR TODA ESTA INFORMACIÓN DE LA QUE NO ENTIENDO NADA ME ALEGRA MUCHO. GRACIAS. ME REPASARÉ LOS ARCHIVOS DE ESTA SECCIÓN.

    ResponderEliminar
  6. Por favor, no lo dudéis, seguid explicando este tema. Es muy interesante.

    ResponderEliminar
  7. Hola! ando un poco perdido en estos temas y no se.. a ver si me podeis ayudar.Estaba buscando un sitio para crear mi propia web sobre mi pyme y encontre este sitio de desarrollo web... a ver web ya tengo pero es una que cree yo mismo y os podeis imaginar como quedo jajjaja asi que busco algo profesional y si puede ser por aqui por bilbao pues mejor, y parece que por aqui son de lo mejor. A ver que os parece a ver si me dais vuestra opinion :)Gacias y un saludo!

    ResponderEliminar
  8. HolaSi me parece muy interesante y me gustaria que lo siguieras explicando-----------------------------------------------Te invito a que visites y comentes mi blogBlog - http://www.ddsmedia.net/blogPost de Interes - (http://www.ddsmedia.net/blog/2009/04/el-termino-influenza-porcina-podria-ser-aprovechado-para-crear-virus-informaticos/)

    ResponderEliminar