sábado, 22 de noviembre de 2008

Patrones de Diseño UML (I)

Inmersos como estamos en la fase de Diseño, vamos a hablar un poco sobre algunas técnicas que se pueden emplear para optimizar esta actividad, dando así al desarrollador un esquema mucho mejor de cara a la implementación del sistema.

En este post vamos a comenzar a hablar sobre los Patrones de Diseño UML, algo que todos ya conoceréis y que, a pesar de que su uso conlleva un leve trabajo extra conceptual, facilitan notablemente esta tarea.

Según el libro de Erich Gamma, Design Patterns: Elements of Reusable Object-Oriented Software, un Patrón de Diseño es "una solución simple y elegante a un problema específico y común del Diseño Orientado a Objetos (DOO)". Así mismo, se apostilla que "son soluciones basadas en la experiencia y cuya fiabilidad está demostrada".

Este paradigma viene dado por detección de la repetición constante de problemas en los distintos diseños de Sistemas de Información, lo que conlleva que se defina una colección de patrones que reflejen las soluciones óptimas para cada uno de esos problemas. No es un concepto trivial de entender, requiere un proceso de estudio previo y asimilación, pero una vez que se supera dicho ciclo, los diseños creados en base a patrones presentan un mayor grado de flexibilidad, modularidad y reutilización.

Los patrones se dividen en tres grupos generales:
  • Patrones de estructura: describen como las objetos pueden ser combinados formando estructuras complejas y nuevas funcionalidades. A su vez se dividen, en un segundo nivel en:
  1. Estructural de la clase: Proporcionan interfaces más útiles mediante herencia.
  2. Estructural del objeto: Creación de objetos complejos mediante objetos individuales para formar grandes estructuras.

  • Patrones de creación: tratan de la forma de instanciar los objetos.
  1. Creacional de la clase: Instanciación de la clase mediante herencia.
  2. Creacional del objeto: Patrones más escalables y dinámicos.

  • Patrones de comportamiento: definen la comunicación entre los objetos.
  1. Comportamiento de la clase: distribuyen el comportamiento entre clases mediante herencia.
  2. Comportamiento del objeto: analizan la comunicación entre objetos interconectados.

A continuación, se ve el diagrama con los distintos patrones y cómo interactúan entre ellos.



En otro post comentaremos brevemente la funcionalidad de cada uno de los patrones así como un pequeño ejemplo de uso de uno de ellos.

viernes, 21 de noviembre de 2008

Palmadita en la espalda

Ya ha concluido la primera fase del concurso de blogs... La verdad es que la competencia está siendo muy dura y todos los blogs que participan en el concurso tienen un gran nivel, con lo cual esto no está siendo nada fácil. Ello, además, supone un trabajo extra bastante considerable a la ya de por si fuerte carga de trabajo de la asignatura, por lo que hay momentos en los que cuesta continuar, pero hay que admitir que que te reconozcan un trabajo motiva, y motiva muchísimo, para no detenerse.

No queríamos dejar pasar la oportunidad de felicitar a todos nuestros compañeros que también estén llevando a cabo esta ardua tarea de mantener un blog, y animarles a que sigan trabajando, que esto no ha hecho más que empezar y que lo importante es ser constante y trabajar duro.

¡Mucho ánimo a todos!

jueves, 20 de noviembre de 2008

19-N

Esta mañana ha tenido lugar un acontecimiento que, esperemos, haga reflexionar a más de uno. Nos hemos concentrado más de tres mil personas frente al Ministerio de Ciencia e Innovación y hemos dejado claro que no nos vamos a quedar callados mientras continue esta tropelía.

Como muestra de que este acto ha tenido calado y repercusión, echad un ojo a estos enlaces, donde los medios se hacen eco de nuestra protesta:

El Mundo (1)
El Mundo (2)
20 Minutos

A continuación, os dejamos una muestra gráfica de lo que ha sido la concentración, adornada con algunas de las frases que se han coreado...

"Es teleco el que no bote, eh"

"Telecos, cabr...es, robais atribuciones"


"Uno cero uno, o todos o ninguno"

"Cero uno cero, fuera zapatero"

"Os vamos a tirar el servidooooooooor"

"Zapatero, somos ingenieros"

"Ingenieria informatica: no compila"



"Regulación, de la profesión"



En fin... esperamos haber contribuido un poquito a la causa y a que, de una vez por todas, tengamos reguladas nuestras competencias.

Desde aquí os animamos a que nos ayudéis a recordar todas aquellas cosas que nos hayamos dejado en el tintero... ¡Ánimo!

martes, 18 de noviembre de 2008

La importancia de... la gestión del cambio

Tras dos Informes Quincenales de Seguimiento nos vamos dando cuenta de la importancia de la Gestión de Proyectos y de la Gestión de Cambios, así como las desviaciones que, en base a múltiples factores, se producen en los proyectos informáticos.

Planificar bien es relativamente complejo, pero planificar y gestionar un proyecto sin desviaciones es, cuanto menos, una quimera. De ahí la importancia de saber gestionar y tratar los cambios que se van produciendo, llevando a cabo constantes replanificaciones, basadas siempre en la experiencia del desarrollo de proyectos. La desviación siempre va a estar ahí, pero de esta manera, atajándola fase a fase, se puede minimizar, consiguiendo un deterioro menor tanto en lo referente a términos de tiempo como de costes.

Según el reporte elaborado por Standish Group, todo un referente en el estado de los proyectos de software, "Extreme Chaos", los proyectos se clasifican en tres tipos:
  • finalizado con éxito: si se completa a tiempo, dentro de presupuesto y cumpliendo con todas las características y funciones especificadas.
  • no satisfactorio: el proyecto se completa y es operacional, pero con desviación en presupuesto y tiempo y con menos características y funciones de las que fueron especificadas inicialmente.
  • finalizado con fracaso: proyecto cancelado antes de completarse.
En la tabla siguiente puede verse el porcentaje de proyectos exitosos, y su evolución en el tiempo:


Como se puede apreciar, el porcentaje de exitosos va aumentando, pero aquellos proyectos que conluyen con desviaciones no merman, lo cual muestra a las claras que las metodologías empleadas no son tan efectivas ni eficientes como debieran ser.

De manera análoga, se pueden establecer una serie de factores que influyen, en mayor o menor medida, en el éxito de un proyecto, tales como la experiencia, la gestión de recursos humanos, el Jefe de Proyecto, etc. En el siguiente gráfico se puede apreciar el impacto que tiene cada uno en este aspecto.



Se aprecia como, tanto los Recursos Humanos (usuarios y Jefe de Proyecto) y su cualificación, como la confianza en el equipo de trabajo son los dos indicadores de éxito más importantes y que más van a marcar el devenir del proyecto. Este dato aporta una visión clara de lo importante que es la implicación de cada uno de los miembros del equipo, así como de un Jefe compentente. Esto nos puede servir para nuestro proyecto, porque, tal y como se puede ver, somos uno de los activos más importantes y que más podemos influir para terminarlo con éxito y con la menor desviación posible.

sábado, 15 de noviembre de 2008

Twitter, ahora en tu DS

Trasteando un poquito por Internet nos hemos encontrado con DSTwitter, un nuevo cliente de la aplicación que nos ocupa diseñada para ser utilizada en la consola Nintendo DS. Además de las funcionalidades típicas de Twitter tiene un valor añadido: fue creado por Acdrtux, una empresa de diseño y desarrollo web española.

Presenta las siguientes características:
  • Es multilingüe: acepta inglés, francés, italiano, alemán y castellano, configurándose automáticamene en función del firmware de la propia consola.
  • Carga de avatares en formato GIF.
  • Muestra el tiempo relativo de envío de cada twiteo, tal como hace el cliente web (hace X minutos, etc.).
  • Uso de la conexión WiFi para enviar y recibir mensajes, con medidor de calidad de señal.
  • Teclado táctil.
  • Aceptado por twitter.com como cliente oficial de twitter.
No deja de ser una curiosidad más acerca de la aceptación y expansión de esta herramienta, y de la cantidad de ampliaciones, plug-ins y adaptaciones que se han realizado en base a ella.

Por último, si os lo queréis descargar, aquí tenéis el enlace:

Descargar DSTwitter

viernes, 14 de noviembre de 2008

Ingeniería en Informática

Bueno, como todos habréis visto/leído/escuchado, se está llevando a cabo un proceso para desvirtuar nuestra profesión, no pudiéndose equiparar nuestro título (ni el de Ingeniería Química, con los que desde aquí nos solidarizamos) con los de las demás Ingenierías. Estaréis ya cansados de oir cosas, así que sólo queríamos dejaros un par de enlaces para que véais que la cosa se está moviendo y que hay un halo de esperanza.

Decano de Informática de la UPM

El Senado nos apoya

Y otro que hace un llamamiento a las movilizaciones y donde podéis encontrar mucha más información:

Más información

Luchemos y defendamos ésto que tanto y tanto esfuerzo nos está costando conseguir...

PD: Momento cumbre de la entrevista con el Decano de la UPM:

P. ¿Por qué no puede alguien que ha estudiado Matemáticas o Bellas Artes, por ejemplo, y tiene talento, trabajar de informático en una empresa que lo quiera contratar?

R. Le hago yo otra pregunta: ¿Por qué no puede hacer un puente ese señor?

P. Parece distinto.

En fin...

La importancia de... la motivación

Llevábamos ya tiempo queriendo hablar de algo que consideramos vital para cualquier trabajador, y por extensión, para cualquier ingeniero de software: LA MOTIVACIÓN.

El hombre, por el simple hecho de ser hombre (y eso se ve reforzado en nuestro amado país), trabaja mejor si está agusto, si está rodeado de un ambiente de trabajo agradable, si su trabajo se ve, no ya recompensado, sino valorado. Es algo inherente al propio ser humano, rendimos más si estamos mejor.

Leyendo un poquito sobre motivación de equipos de trabajo, creemos que se pueden establecer dos corrientes de pensamiento bien diferenciadas:
  • El ingeniero, por el hecho de ser un profesional y recibir un sueldo por ello, ha de hacer su trabajo de la mejor manera posible.
  • El ingeniero rinde más y genera más beneficios si se le valora el trabajo y si está motivado.
Nosotros, a título particular, nos identificamos más con esta última. Una persona motivada, contenta, y con ganas de hacer las cosas bien va a hacer siempre mejor su trabajo que otra que no tiene otra motivación que la de su rutina diaria y su sueldo a final de mes.

Es lícito comentar que por motivación no sólo se entiende una compensación de índole económica o material, sino que entendemos que va más allá. Porque muchas veces el reconocimiento del trabajo bien hecho, una felicitación por parte del cliente, una palabra de ánimo de tu Jefe cuando estás hundido,... motiva de una manera infinitamente mayor que cualquier regalo o retribución monetaria.

Y, sino, cuando llega el lunes o jueves y vas a tu revisión de IS3 hartito de tanto trabajo, medio asqueado, y ves que, de repente se hace la luz y te aprueban un par de documentos, ¿¿¿¿¡¡¡¡¿no te sientes otra vez a tope y con las pilas cargadas para seguir dándolo todo?!?!?