jueves, 21 de junio de 2012

10 principios fundamentales para la calidad

Los proyectos de desarrollo de software presentan fallas y problemas en relación con los planes y requisitos iniciales. La industria de software tiene pocas estadísticas o resultados cuantitativos con relación a los atributos de calidad, tales como: seguridad, portabilidad, adaptabilidad, mantenibilidad, robustez, usabilidad, confiabilidad y eficiencia. Para poder mejorar la calidad del software se requiere medir, cuantificar y ajustar el proceso, no sólo contar defectos o fallas.


Tom Gilb publicó un artículo bajo el título "The 10 Most Powerful Principles for Quality in Software and Software Organizations" donde presenta diez principios seleccionados, a partir de la experiencia práctica en la aplicación durante muchos años, que en muchas ocasiones se pasan por alto.

Principios para calidad

  1. Obtener retroalimentación. Este es uno de los principios básicos en la ingeniería de software que permite tener control sobre el proyecto y conocer lo que realmente está funcionando, mientras más temprano se tenga esa retroalimentación mejor. Técnicas para análisis de causas, revisiones entre colegas, metodologías Agile y el control estadístico permiten obtener información y actuar para tomar decisiones efectivas en tiempo.
  2. Identificar métricas críticas. Es importante medir los factores críticos de éxito para determinar en que punto puede que un sistema falle. Esos factores consideran valores desde el punto de vista de los interesados y los recursos para poderlos alcanzar. La gerencia debe identificar, definir y contabilizar esos indicadores para poder determinar en que punto se está poniendo el sistema en riesgo y tomar las acciones correspondientes.
  3. Objetivos de control múltiple. Los factores críticos para un proyecto deben manejarse en conjunto. Obviar o no considerar algunos, por enfocarse en otros, puede hacer que sean la razón para que el proyecto falle. Todos contribuyen al éxito o fracaso de un proyecto, y deben ser igualmente considerados o ponderados.
  4. Evolucionar en ciclos cortos. Una forma de reducir los riesgos que se presentan en un proyecto de desarrollo es "atacarlo" mediante etapas cortas. Cada ciclo es un aprendizaje para el siguiente y una forma segura para avanzar. SCRUM utiliza este enfoque para ir descubriendo la funcionalidad del producto y mejorar los resultados al final.
  5. Una puntada a tiempo ahorra ciento. El control de calidad debe hacerse tan pronto como sea posible y reducir los retrasos por detectarlos después. Las técnicas de inspección y revisiones entre colegas son de gran ayuda para lograr la identificación temprana de fallas y defectos, a un bajo costo y con grandes beneficios. 
  6. La motivación mueve montañas. El personal que no está motivado no avanza, ofrece resistencia y niega el cambio. Para lograr la motivación se requiere deseo, conocimiento, habilidad y retroalimentación constante sobre lo que se desea alcanzar.
  7. Competencia permanente. Un proyecto no termina, todo el tiempo un producto puede ser mejorado, un nuevo servicio puede ser ofrecido. En el momento que se detiene la competencia toma la oportunidad y gana ventaja.
  8. Las cosas llevan tiempo. Cualquier cosa que se quiere lograr va a tomar tiempo, no se logra de la noche a la mañana. En ese tiempo es importante controlar el avance para lograr los objetivos a largo plazo, por ello es importante la planificación a tiempo, el seguimiento y control de los resultados.
  9. Lo malo y lo bueno. Las decisiones que se toman deben evaluarse para determinar el impacto que tendrá y reducir, evitar o aceptar los efectos negativos que puede provocar.  Es importante considerar la mayor cantidad de alternativas para determinar la mejor solución en relación con los resultados que se quieren alcanzar. 
  10. Mantener la atención en lo que se hace. "Perfección en los medios y confusión en los fines.. A. Einstein." Es importante entender las necesidades, los motivadores, para poder crear un producto que satisfaga a los interesados. Lo que se necesita es un producto pero antes se tiene que entender desde la perspectiva de los interesados cuáles son sus necesidades, los requisitos, para eso existe la ingeniería de sistemas.
Para lograr un producto de calidad se requiere contar con personal motivado que conoce lo que está sucediendo en términos numéricos y que puede buscar las soluciones adecuadas para lograr los resultados que se esperan.