La importancia de documentar

Este será un post muy corto, leyendo en varios foros de Django buscando dudas me he dado cuenta de lo buena que es la documentación de proyecto (ya me había dado cuenta, quiero decir que he sido plenamente consciente de su magnitud).
El éxito de un proyecto software recae en un alto porcentaje en la documentación, también en su calidad y su sencillez, pero si no se como usarlo ya puede ser bueno (pero para comer en salsa). La documentación es simplemente excepcional. Y a parte de las evidentes bonanzas del dueto Python-Django, http://docs.djangoproject.com/ se ha convertido en una de mis páginas visitadas, si tengo una duda, en un porcentaje muy alto me la resolverá.

Anuncios

GFO, Gestión Funcionalidades by Okkum

OkkumFeatureManager
OkkumFeatureManager

En el último apunte comenté que habiamos decidido adaptar un mix de metodologías agiles a nuestra gestión de proyectos. Hemos cogido la metodología FDD y la norma ISO 15504, las hemos metido dentro de la coctelera y el resultado ha sido GFO. El trabajo de casar la norma con nuestra metodología no esta completa, pero avanza a buen ritmo. Lo que avanza a mejor ritmo todavía gracias a Django es nuestra herramienta de gestión de proyectos basada en GFO (como me gusta esto de tener nuestras propias siglas, no eres nadie en el mundo de la tecnología sino las tienes, nosotros como somos más web 2.0, le poniamos nombres a las cosas, por ejemplo Hawai a nuestra web de tramitación de vacaciones, aunque la tentación ha sido irresistible esta vez). Continúa leyendo GFO, Gestión Funcionalidades by Okkum

Django, metodologías agiles y calidad del software

Muchos programadores, entre los que estaba yo mismo, piensan que codificar es todo su trabajo, como mucho documentar someramente el código por el que dirán. La gestión de proyectos, para estos programadores, también suele reducirse a: nos sentamos cinco minutos a pensar que queremos que haga nuestro software y después a teclear, cientos, miles, decenas de miles de lineas de código ¡Que bonito es mi código y que bien funciona! Es la única conclusión posible, puesto que hace exactamente lo que el programador ha pensado que tiene que hacer. Continúa leyendo Django, metodologías agiles y calidad del software

Coopetencia

La web 2.0 y el código abierto, han traído un tendencia algo naif al mundo del software, la interoperabilidad, la estandarización y colaboración, son mantras de muchos desarrolladores, pero ¿lo son de los empresarios?

Ya he comentado que soy miembro de la junta directiva de las dos principales asociaciones locales de software: la patronal GsBIT y el cluster TIC para el turismo Turistec. Ya llevo dos años prácticamente en estos menesteres y mis conclusiones después de observar la colaboración que existe entre las empresas 2.0 y las 1.0 en el mundo tecnológico (somos unas 60-70 empresas en Mallorca) es que la colaboración entre empresas tiene muchas aristas que deben limarse. Es fundamental no pelearse con el de al lado por las migajas, sino mirar el pastel entero, ver que tenemos suficiente para los dos y trabajar para conseguir más juntos que por separado. pero no todas las empresas tienen un modelo de negocio compatible con la colaboración, otras veces una de las dos aprovecha mejor los recursos obtenidos de la colaboración, a veces competir implica no ser tan escrupuloso como requiere la cooperación y la confianza es imprescindible para colaborar. Continúa leyendo Coopetencia

Testing con Django (más alla de unittest)

Django tiene una serie de utilidades muy interesantes para el testeo de webs desarrolladas con el framework, podemos aprender sobre como usarlas aquí. En la documentación de Django, menciona además dos utilidades para testeo desde el navegador Twill y Selenium. Así, que ni corto ni perezoso, he dedicado varias horas del fin de semana a probar estas dos aplicaciones. Mi primera impresión con ambas fue: “esto es imprescindible”. Twill y Selenium son un lenguaje de comandos para realizar las acciones más habituales de navegación web, que nos permiten ejecutar una secuencia de forma automática sobre una página.

En el caso de Twill, su uso es sencillo y potentente, pero requiere conocimientos de Python y se ejecuta desde linea de comandos. Selenium, es el sueño de un programador web. Es un add-on de Firefox, que graba los clicks, textos y demás acciones sobre la página y después podemos reproducirlas tantas veces como sea necesario, sin necesidad de volver a realizar el proceso, Selenium lo hace por nosotros. Además, permite realizar algunas comprobaciones, como por ejemplo que el titulo de la página es el esperado, que existe determinado texto en la página, un id, etc. Además, podemos convertir nuestros guiones a varios lenguajes, para que se usen como test unitarios, uno de ellos es Python.

Hemos empezado a usar esta herramienta para generar nuestros tests funcionales, la solución completa ofrecida por SeleniumHQ, es SeleniumIDE y Selenium Remote Control. Selenium RC, es un servidor que ejecuta los scripts de test creados desde el IDE.  Como podeis ver una solución más que completa.

Instalar la aplicación es trivial, una vez instalada, vamos a Herramientas/Selenium IDE y ponernos a grabar (botón rojo de la parte superior derecha). Todo lo que hagamos en nuestro Firefox a partir de este momento hasta que paremos la grabación (con el mismo botón rojo) queda registrado y puede volver a ejecutarse. La grabación genera un código que podemos manipular fácilmente y que nos permitirá controlar el flujo de ejecución del test.

Aqui tenemos un ejemplo (ya en python) del guión que se genera para ir desde la página de inicio de djangoproject.com hasta la primera página del tutorial (http://docs.djangoproject.com/en/dev/intro/tutorial01/#intro-tutorial01), donde comprobamos que el texto “Writing your first Django app, part 1”  esta presente.

    sel = self.selenium
    sel.open("/")
    self.assertEqual("Django | The Web framework for perfectionists with deadlines", sel.get_title())
    sel.click("link=Documentation")
    sel.wait_for_page_to_load("30000")
    self.assertEqual("Django | Django documentation | Django Documentation", sel.get_title())
    sel.click("//div[@id='s-first-steps']/ul/li[2]/a[1]/em")
    sel.wait_for_page_to_load("30000")
    self.assertEqual("Django | Writing your first Django app, part 1 | Django Documentation", sel.get_title())
    try: self.failUnless(sel.is_text_present("Writing your first Django app, part 1"))
    except AssertionError, e: self.verificationErrors.append(str(e))

Como comentaba, usaremos Selenium para crear nuestros tests funcionales, para agilizar las pruebas que hacemos al programar, para documentar las pruebas y el funcionamiento de la aplicación, pero también para test de carga, para comprobar que el tiempo de respuesta de la aplicación es aceptable y cualquier cosa más que se nos ocurra. En los últimos meses, especialmente desde que estamos inmersos en la evaluación de SPICE, estamos prestando mucha atención a la capacidad de predecir y documentar (en la medida de lo posible) nuestro trabajo, los test unitarios y funcionales son una prioridad en mi agenda, creo que Selenium se convertirá en una herramienta al nivel de Subversion o Netbeans en Okkum, simplemente parte integral de nuestra forma de trabajar.


Pinax, acercando la web 2.0

Ya comente que estábamos realizando una comunidad virtual alrededor de Turistec, la hemos basado en Pinax, un proyecto desarrollado con django. Es una interesantisima plataforma sobre la que construir aplicaciones en las que la interacción entre los usuarios y la creación de contenidos es primordial. Continúa leyendo Pinax, acercando la web 2.0

Ultimando el lanzamiento de la nueva web corporativa

Llevamos varios meses trabajando en un cambio absoluto en nuestras web corporativa y esta semana que viene vamos a presentaros el resultado de este esfuerzo.
La nueva web se ejecuta sobre un proyecto que hemos realizado sobre el framework de desarrollo web Django y que vamos a liberar bajo licencia Apache 2.0 o Afero GPL. Por el momento el proyecto es más un ejemplo de trabajo con Django y algunas apliaciones como son django-cms o django-filebrowser, que una verdadera solución, pero esperamos ir añadiendo funcionalidad hasta convertirla en una página corporativa estandar que se pueda enchufar a cualquier proyecto hecho con django.

La experiencia ha sido muy positiva y gracias a ella se ha renovado mi pasión por la programación, como fruto de este proyecto piloto hemos decidido trabajar con Python como lenguaje principal, todavia tenemos muchos proyectos que estan hechos en Java y algunos clientes (principalmente la administración púbica) quieren continuar con el lenguaje de Sun. Antoni Aloy, nos esta ayudando a ponernos al día con Django y creo que el resultado esta siendo excelente. Por el momento, a parte de la web, estamos realizando otros 3 miniproyectos, una aplicación (en el sentido django) para consultar el registro de llamadas de un servidor Asterisk, una galeria de fotográfias artísticas basada en django-photologue y un generador informes sobre una base de datos legada con gráficas basdas en Open Flash Chart; espero ir liberando cada uno de los proyectos cuando esten terminados (primera versión estable) y continuar compartiendo nuestros avances con vosotros.

Estos últimos meses, cada vez que me he sentado delante del ordenador de casa ha sido para programar (en el trabajo no suelo tener tiempo), por lo cual tengo mi cuenta de Flickr abandonada, el blog con menos entradas de las que me gustaría y un par de cenas con amigos pospuestas.

¡La semana que viene página renovada!

Iniciamos un miniproyecto para empezar con Django

En las últimas semanas hemos trabajado duro (especialmente Dani), para comenzar con un proyecto pequeño con el que iniciarnos en Django. Ya comente que tenemos un proyecto grande a la vista que no tenemos claro sobre que tecnología queremos desarrollarlo, así que antes de lanzarme a la piscina sin conocer los pormenores del marco de trabajo (de verdad que si tenéis una traducción mejor la adopto) hemos decidido darle un par de vueltas a nuestra web. Continúa leyendo Iniciamos un miniproyecto para empezar con Django

Primeros avances con Django

Hace unos días comente que estabamos iniciando un nuevo proyecto, que para este proyecto nos estabamos planteando cambiar desde Java hacia Python y vuestras opiniones eran favorables a ir cambiando paulatinamente y comenzar con lo que ya conocemos. Vamos a trabajar sobre nuestra web, que necesita algo más que un lavado de cara, con Django y con la experiencia adquirida veremos si comenzamos el nuevo projecto con la archiconocida combinación Java+JPox+Servlets+GWT o nos pasamos a Python+Django. Continúa leyendo Primeros avances con Django