Blog de Julio César Pérez Arques
Historia de una integración (i): El principio
Marzo 31st, 2009 - [Enlace local]
Esta es la historia de un proyecto de desarrollo software. Como toda buena historia tiene momentos difíciles, personajes complejos, un final féliz y más de una lección que aprender.
Antecedentes
Así me encontré al frente de un equipo de desarrollo de 3-6 personas, residente en un importante cliente del sector sanitario público, y dirigiendo un buen número de proyectos Java, consistentes en nuevos desarrollos y mantenimientos.
Pero no sólo yo tenía ganas de cambios para el 2008. En una decisión tan valiente como inesperada, el cliente decide implantar un completo sistema SAP R/3 para sustituir la gran mayoría de sus sistemas de gestión.
Para esta obra faraónica se ha confiado en la típica pirámide de empresas, compuesta por (i) la super multinacional que aporta el nombre, más la élite, (ii)
El proyecto
Mi parte en la historia sería la de dirigir un proyecto consistente en desarrollar una aplicación web Java que hiciera de front-end para varios módulos del futuro SAP R/3 del cliente. El proyecto empezó oficialmente en junio con la idea de llevarlo de forma paralela a la implantación de SAP. El objetivo era poner en funcionamiento una primera versión para el 1 de enero del 2009 para un número de usuarios controlado y poco a poco ir difundiendo su uso. A día de hoy la aplicación está implantada de forma completa y funcionando estable y eficázmente.Como os imaginaréis ha sido una experiencia apasionante pero también muy exigente. Aunque me ha hecho pasar más de un trago amargo, en general estoy satisfecho con su resultado final y sobretodo con lo aprendido por el camino. Un camino que intentaré plasmar en esta serie de posts que espero se conviertan en un útil ejercicio de retrospectiva al que estais todos invitados.
Ecosistema software
No quería cerrar el post sin contar algo de verdad. Así que describiré las distintas partes que forman el ecosistema software que he ido construyendo desde mi llegada.- Eclipse. Una de las primeras decisiones que tomé fue usar Eclipse JEE como ide principal, por su potencia como editor e integración con el resto de herramientas y librerias que usamos. Anteriormente se usaba una antiquísima versión del IntelliJ IDEA pero no entraba en los planes corporativos adquirir licencias más modernas.
- CVS. Es el sistema de control de versiones que tiene implantado nuestro cliente para todos sus proyectos. No hay más. Mi parte aquí se redució a fomentar algunas buenas prácticas de uso, principalmente a incorporar las dependencias de cada proyecto en su estructura.
- Tomcat. Las aplicaciones se implantan en un servidor JBoss 3.2.6 y en un 4.2.2 las más recientes, pero en desarrollo usamos un Tomcat 6 como servidor individual por su mayor velocidad de arranque y fácil integración con Eclipse. Nuestras máquinas de desarrollo no son ninguna maravilla y Eclipse no se integra con JBoss 3.2.6 por si solo (sí con el 3.2.3), para ello necesitabamos las JBoss Tools. Pero entonces todo el entorno iba a pedales, cuando con Tomcat 6 vuela.
- ANT. El cambio a Eclipse-Tomcat y el hecho de incoporar las dependencias a la estructura de proyecto obligó a crear nuevos scripts Ant para automatizar las tareas de construcción de los proyectos. Aunque sólo los nuevos proyectos y los antiguos más significativos han sido migrados al nuevo entorno.
- Hudson. No fue hasta el último trimestre cuando conseguimos implantar Hudson como servidor de integración continua. Actualmente realiza las tareas de construcción, testing unitario y análisis de código Java con los plugins de Emma, Checkstyle y Findbugs.
- JIRA. Como herramienta de gestión de proyectos/tareas continuamos usando una antigua versión de JIRA. Es una maravilla y eso que no creo que estemos aprovechando todas sus posibilidades. Sólo echo de menos un wiki principal para todos los proyectos o individual por proyecto.
- Selenium. Hemos estado experimentando con Selenium para hacer testing funcional de aplicaciones web. Sin embargo estamos teniendo problemas a la hora de ponerlo en funcionamiento en el Hudson. Lo que está dificultando mucho su aceptación y uso generalizado. Aún así lo encuentro básico para dar el siguiente paso de calidad en nuestro modelo de desarrollo. Todos sabemos el infierno que es actualmente el desarrollo web...
- Maven. Aunque Ant es una herramienta genial, el elevado número y hetereogeneidad de proyectos que llevamos hace difícil el mantenimiento de los scripts. Por eso y otras razones quiero probar Maven en uno o dos proyectos serios.
- Mylyn. Mylyn es un plugin para integrar Eclipse con la mayoría de sistemas de control de tareas/tickets de forma avanzada. No sólo permite tener visibilidad de los tickets en Eclipse, también dota de memoría a Eclipse para recordar qué ficheros del proyecto están asociados con cada tarea. Con lo primero espero, sobretodo, mejorar la trazabilidad entre lo que hace el código realmente y lo que dice la descripción de la tarea.
- Wiki. Tengo ganas de probar una wiki para gestionar la documentación interna que vamos generando, en lugar de, como hacemos ahora, crear y copiar documentos word a una carpeta compartida. También me gustaría probarla como herramienta de especificación de requisitos de los proyectos con capacidades reales de colaboración y control de versiones automatizado. La idea sería enlazar desde la descripción de las tareas en el Jira a las páginas del wiki.
» Leer más, comentarios, etc...
HardBit
Programadores y Usuarios de Mac (PUMac)
Marzo 31st, 2009 - [Enlace local]

En esta ocasión les traemos Josué (Blacknash) y yo el sitio www.pumac.net el cual básicamente tendra foros tanto para usuarios como para programadores y habrá una sección de noticias y articulos para todos aquellos afortunados que poseemos una Mac
.
Mientras terminamos de diseñar el esquema que se manejara, les adelantamos que el sitio se encuentra en linea y pronto esta la información básica para que puedan registrarse todos los maqueros.
» Leer más, comentarios, etc...
knocte :: MonoTema
I14Y happens
Marzo 30th, 2009 - [Enlace local]
Some years ago, I started to get familiarized with abbreviations like 'l10n', 'i18n' when I started contributing to the translation efforts of Mozilla & Firefox under the NAVE Project.Some months later I came to know the new term 'a11y', and I started to see it in a lot of places. By that time, I only associated it with the web development world. Terms like "Unobstrusive JavaScript" were very
» Leer más, comentarios, etc...
PROGRAMANDO EN .NET
3 formas de obtener la versión de SQL Server desde T-SQL
Marzo 27th, 2009 - [Enlace local]
En un mundo perfecto todas nuestras instalaciones tendrían las mismas versiones de las aplicaciones, motores de bases de datos y librerías auxiliares, pero como este mundo es una utopía, a veces tenemos que averiguar con qué versión del motor de base de datos está trabajando la aplicación.En el caso de SQL Server he descubierto 3 formas de averiguar la versión desde T-SQL, con cualquiera
» Leer más, comentarios, etc...
HardBit
El trabajo de un arquitecto de software
Marzo 26th, 2009 - [Enlace local]
En varias ocasiones se ha discutido sobre lo que debe hacer o no un arquitecto de software, algunos piensan que es aquel que se dedica a hacer el analisis de la aplicacion y se deslida totalmente de la parte tecnica del desarrollo, este articulo puede cambiar la perspectiva de esa idea, y darnos un paradigma de lo que problamente mas se le acerque a lo que debe realizar un arquitecto de softwarte, para no reescribir el articulo pongo aquí la dirección de este. Les recomiendo su lectura.
El rol de los Arquitectos de Software
» Leer más, comentarios, etc...
Ideas + Ingeniería del Software
Los ordenadores son, esencialmente, deterministas
Marzo 22nd, 2009 - [Enlace local]
Los ordenadores, fallos hardware aparte, son autómatas deterministas: dado un estado inicial, una serie de operaciones llevan siempre al mismo resultado.
Una conclusión de esto es que no hacen "cosas raras". Puede haber cosas mal hechas, claro está, pero sus efectos son predecibles.
Un caso paradigmático de esto son las librerías. En todas hay bugs, claro, pero pocos. Si algo "no funciona" revisa antes tu código. Las librerías de código abierto son usadas por millones de desarrolladores, y revisadas por gran parte de ellos (¿aún no has asociado las fuentes a los binarios en Eclipse? ¿A qué esperas?). Sin embargo, tu código es nuevo y sólo tuyo, probablemente el problema esté ahí.
Cuando llamamos a un SAT lo primero que nos preguntan es ¿está enchufado? Sí, es irritante, pero, ¿compruebas que tu código lo está? El determinismo hace que para solucionar la mayor parte de los errores en el código no sea necesario ni pensar. Símplemente un análisis metódico desde el error nos conduce al error: vete a la línea que falla y vete "tirando del hilo". El problema aparecerá solo.
PS: ¿Ah, que estás utilizando librerías propietarias, sin el código? Mmm... ¡Buena suerte!
» Leer más, comentarios, etc...
Ideas + Ingeniería del Software
IPhone 3.0 y ubiquidad
Marzo 19th, 2009 - [Enlace local]
No es mi costumbre usar este blog para hacer reseñas de productos, pero sí me gustaría hablar un poco del IPhone, a cuento del reciente anuncio de la versión 3.0 de su sistema operativo.
Se habla mucho de cloud computing, Web 3.0 y demás milongas últimamente, que, en mi opinión, sólo sirven para alimentar los blogs, las columnas en las revistas, y con ello, las nóminas, de supuestos visionarios. Nuevas etiquetas para productos que ya existen.
Sin embargo, la auténtica evolución (no creo que haya revoluciones a la vista) de Internet es la presencia ubíqua de la misma. Hace aproximadamente cinco años trabajé en proyectos de I+D sobre este tema, y se veía claro que el futuro pasaba por ahí. Sin embargo, el precio de los dispositivos y la cara y escasa cobertura de Internet de calidad lo hacían imposible.
A día de hoy los dispositivos están al alcance de cualquiera, y la conexión es más que aceptable, así que esto está a punto de estallar. Google lo sabe y se ha posicionado con Android. Apple, con su iPhone, ya lo está experimentando.
La versión 3.0 contiene dos bombas potenciales en este aspecto: las compras in-app y la conexión de dispositivos.
Sí, todos gritábamos por tener, por favor, cortapega ("ortodoxo", ya que con jailbreaking ya se podía), tethering y A2DP (Bluetooth Estéreo). Pero lo que puede ser una revolución ubíqua es lo otro.
Las compras in-app permiten un modelo de negocio basado en micropagos, para ofrecer contenido de calidad (de pago). Off-topic: ¿tendrá el siguiente iPhone una pantalla de lector de ebooks a color y reventará el mercado?
La conexión a dispositivos permitirá conectar cualquier aparato a Internet, sin requerir una dedicada. Ya estoy empezando a pensar aplicaciones online a aparatos que ahora son offline...
Quien quiera innovar y forrarse, que piense en ubiquidad y se deje de modas pasajeras.
» Leer más, comentarios, etc...
Ideas + Ingeniería del Software
Artesanía
Marzo 19th, 2009 - [Enlace local]
El desarrollo de software tiene más de artesanía que de ingeniería. Sí, hay métricas, calidad, automatizaciones... Pero lo que requiere de la persona que lo realiza es que sea un buen artesano, que haga las cosas con esmero, meticulosidad...
» Leer más, comentarios, etc...
PHPBSD.net » webmaster
Disponible la versión 5.2.9 del PHP. Actualizando que es gerundio!
Marzo 16th, 2009 - [Enlace local]
Hace poco más de dos semanas se liberó la versión 5.2.9 del PHP. La que probablemente será la última release de la rama 5.2.x... o al menos eso esperamos muchos como yo que andamos impacientes por la llegada de la 5.3 estable con todas sus novedades.
Como siempre se corrigen un buen número de bugs de seguridad (algunos relacionados con las extensiones libxml y XML) y se añaden algunas mejoras menores... por ejemplo, como curiosidad, ahora a la función array_unique le podemos pasar el tipo de comparación a realizar para descartar ítems. En el changelog están detallados todos los cambios.
En mi opinión siempre es muy recomendable actualizar los servidores a la última versión, si queremos podemos esperar unas semanas para ver como reacciona internet a una nueva release pero se ha de tener en cuenta que lleva meses de test por parte de la comunidad (algo en lo que, por cierto, cualquiera puede participar). Me parece sorprendente todavía encontrar sistemas/proyectos corriendo PHP 4.x o incluso 5.0.x / 5.1.x. (aunque PHP 5 sigue sonando a nuevo se ha de pensar que la versión 5.0 salió el Julio del 2004 y la 5.1 el Noviembre del 2005).
A pesar de que muchas distribuciones Linux (no tanto los *BSD) incluyen como estables versiones desfasadas del PHP si uno tiene un servidor web (LAMP) creo que es recomendable conseguir tener la combinación Apache+MySQL+PHP lo más actualizada posible. Es la forma de aprovechar las nuevas funcionalidades existentes (sobretodo en el caso del PHP dado que es un lenguaje de programación :) y también es la forma de encontrar bugs y hacer que estos proyectos open source evolucionen correctamente.
PS: Por suerte HostGator hace tiempo que se pusieron las pilas y nos mantienen bastante actualizados (este blog corre sobre PHP 5.2.8).
Entradas relacionadas:
- Disponible la versión 5.2.3 del PHP
- Disponible la versión 4.4.5 del PHP
- Disponible la versión 5.2.2 del PHP
» Leer más, comentarios, etc...
Mal Código
Coloreado de cambios con Emacs
Marzo 12th, 2009 - [Enlace local]
Hace mucho que no escribo, hoy voy a hablar un poco del Maravilloso Emacs. Editor que uso para editar cualquier fichero de texto desde hace poco más de un año. Y que me encanta. Y como lo hecho de menos cuando tengo que usar el Horroroso Vim.En concreto, quiero comentar una pequeña funcionalidad de Emacs. Como colorear las partes nuevas en el fichero que estés escribiendo en un momento dado.
» Leer más, comentarios, etc...
PROGRAMANDO EN .NET
Truco rápido: todos los mensajes de error de SQL Server a mano
Marzo 10th, 2009 - [Enlace local]
Cuando trabajas con SQL Server estás acostumbrado a que los mensajes de error que aparecen en el fichero ERRORLOG o en el visor de sucesos sean bastante crípticos y lo normal es acabar tirando de [ponga aquí su buscador favorito] para saber de qué se trata. Pues bien, hace tiempo que descubrí ,dentro de la enormidad que son los libros en pantalla de SQL Server, una página con los códigos de error
» Leer más, comentarios, etc...
Ideas + Ingeniería del Software
Cuándo hacer el modelo de datos
Marzo 8th, 2009 - [Enlace local]
Si me preguntasen por el mínimo común denominador de la aplicación de las metodologías tradicionales que he visto en los últimos años, respondería sin dudar el modelo de datos. La gestión de los requisitos es muy variable, el diseño y la construcción varían enormemente... Sin embargo, el momento y la forma en que se hace el modelo de datos siempre era la misma. Una vez recogidos los requisitos, durante el análisis, el paso clave que marcaba, en cierto modo, el fin del trabajo del analista y el comienzo del resto, era la validación del modelo de datos.
En las metodologías tradicionales se hace en dos partes: en la fase de análisis se hace el modelo lógico, y en diseño se hace el físico. En la práctica siempre he visto que esto se fusionaba. Quizá por las herramientas, quizá por lo innecesario de la división, siempre se hace directamente el segundo.
Desde que uso Hibernate había querido aprovechar al máximo la potencia de su mapeo relacional, relegando el modelo de datos a un segundo plano en favor del modelo de clases. Esto, que parece un detalle menor, en mi opinión tiene una gran importancia práctica. Hacerlo implicaría que el analista/diseñador haría, en vez del modelo, directamente las clases, las cuales generarían el primero automáticamente. Expuse esta idea esgrimiendo una serie de ventajas:
- El trabajo de modelado aportaría más información, ya que los modelos Java más las anotaciones de persistencia aportan más información y valor que las tablas (se introducen validaciones de datos, propiedades calculadas, documentación...).
- Eliminaríamos el problemático trabajo de mapear tablas existentes.
- Adelantaríamos el trabajo de la programación de las entidades.
- Podríamos anticipar cosas como pruebas automáticas para verificar la corrección del modelo.
- Personalmente trabajo mejor con una herramienta de desarrollo que con una de modelado. Andar con el ratón, dobles clicks y diálogos me parece engorroso y lento, aunque esto ya son preferencias de cada uno.
- No renunciamos a la información gráfica, ya que podemos generar diagramas tanto de clases como de objetos mediante ingeniería inversa (NetBeans es realmente útil para esto).
Al pasar a metodologías ágiles, al desaparecer estas fases, toca decidir cuándo realizar este trabajo. Scrum obviamente no entra en esta decisión, así que, ya con la capacidad de decisión, me adherí al principio de diseño contínuo y además adopté las ideas anteriores. De esta forma, no se haría el trabajo explícito de modelado de los datos, sino que, a medida que se avanzase en la aplicación, se iría mejorando a través del propio diseño de las clases.
Ya con el proyecto en desarrollo, saco las siguientes conclusiones:
- No realizar análisis del modelo de datos, sino trabajar directamente en el diseño de las clases, es muy práctico: es mucho más tolerante a los cambios (hemos pasado de claves deferred a compuestas de forma trivial, por ejemplo), facilita el trabajo en equipo (no más "lanza de nuevo el script de base de datos, que he cambiado el esquema")... Me reafirmo, por tanto, en los puntos expuestos antes.
- Desaparece la mentalidad de "tenemos que ceñirnos al modelo de datos a cualquier coste". He visto auténticos malabarismos por parte de desarrolladores por querer respetar el modelo del analista por todos los medios. El hecho de no tenerlo tira esa barrera.
- Pese a esto, sigue siendo necesario hacer un trabajo previo de análisis. Comprender las clases y las relaciones entre ellas es fundamental para el desarrollo del proyecto. No es necesario especificar desde un principio cada propiedad de cada clase, sus longitudes máximas y sus validaciones, pero sí es importante tener claro lo antes posible el esquema general. Los desarrolladores tendemos a centrarnos en "pantallas", y en una no está la auténtica lógica de las relaciones entre los datos.
» Leer más, comentarios, etc...
.: El Blog de Inwe :. » Programación
Nuevo estilo en Netbeans 6.7
Marzo 3rd, 2009 - [Enlace local]
Con Netbeans, en su versión 6.7, nos encontraremos entre otras mejoras, con un lavado de cara bastante importante, sobre todo en la versión para Mac OSX (por fin). Un ejemplo del antes y el después:
A parte de la mejora del interfaz, nos encontramos con las siguientes novedades:
- Maven:
- Mejorado el completado de código para los parámetros de los plugins de Maven
- Perfiles para Maven basado en aplicaciones J2EE
- Soporte para la creación y el consumo de servicios web
- Mejora en el rendimiento (“IDE ergonómico”)
- Descarga el IDE y activa sólo la funcionalidad que necesites, sin la necesidad de cargar todas las partes por defecto
- Aumento de Auto Diagnósticos (“Profile Me Now!”)
- La herramienta mejorada de auto diagnosticos, permite al perfil de Netbeans su propio desempeño para que puedas o examinar la captura del perfil o enviarlo al equipo de NetBeans equipo para su posterior análisis.
- Mejoras SVG en mobilidad
- Soporte completo para SVG Rich Components en el Visual Mobile Designer, incluyendo modo apaisado.
- Perfilador
- HeapWalker soporta consultas OQL para analizar los contenidos del volcado de pila.
- Mejoras en C++
- Mejoras en la asistencia de código para los proyectos de C/C++
- Soporte para las populares librerías y herramientas de Qt
Enlace: Netbeans
Entradas relacionadas
» Leer más, comentarios, etc...
PROGRAMANDO EN .NET
Libro gratuito: Introducing Microsoft SQL Server 2008
Marzo 3rd, 2009 - [Enlace local]
Dicen que nadie da duros a 4 pesetas, pero a veces l@s chic@s de Redmond tienen iniciativas como esta y ponen a disposición de tod@s libros de Microsoft Press en formato digital de manera gratuita.Esta vez le toca a: Introducing Microsoft SQL Server 2008, un libro con más de 200 páginas sobre la nueva versión de SQL Server.Es necesario registrarse, pero todos tenemos una cuenta para estos

