Mostrando entradas con la etiqueta Procedimiento de Calidad. Mostrar todas las entradas
Mostrando entradas con la etiqueta Procedimiento de Calidad. Mostrar todas las entradas

2009-11-30

PHPUnit y como documentar para autogenerar codigo de test.

PHPUnit nos permite poner comentarios delante de la funciones enre los /***/ el cual se lee cuando generamos el proyecto de testing. Dandonos la posibilidad de crear de esta manera muy simple los testing de la funciones o class.
Acá les dejo un ejemplo para dejar todo mas claro:


class Calculator
{
/**
* @assert (0, 0) == 0
* @assert (0, 1) == 1
* @assert (1, 0) == 1
* @assert (1, 1) == 2
*/
public function add($a, $b)
{
return $a + $b;
}
}


Anotaciones @assert para PHPUnit

Anotación
Lo transforma automáticamente en
@assert (...) == XassertEquals(X, method(...))
@assert (...) != XassertNotEquals(X, method(...))
@assert (...) === XassertSame(X, method(...))
@assert (...) !== XassertNotSame(X, method(...))
@assert (...) > XassertGreaterThan(X, method(...))
@assert (...) >= XassertGreaterThanOrEqual(X, method(...))
@assert (...) <>assertLessThan(X, method(...))
@assert (...) <= Xclass="literal">assertLessThanOrEqual(X, method(...))
@assert (...) throws X@expectedException X

Para mas informacion aca esta el link oficial de PHPUnit sobre el tema: Link Oficial en Ingles

2009-11-18

Modelo CMM - Modelo CMMI

Por Joaquin Gracia
14 de Agosto de 2005

Cuando el responsable del departamento de desarrollo me dijo que íbamos a implantar un modelo de calidad llamado CMM - CMMI, pensé "Oh! Dios mío esto va a ser muyyyy, muyyyy aburrido".

Me pasó el documento con el modelo y mis peores pensamientos se confirmaron. Por si alguno de vosotros no ha visto el modelo de calidad CMM - CMMI el lomo tiene más de cuatro dedos de grosor, tu pones la mano encima de la mesa y el modelo CMMI sobresale.

Sin embargo, al final de este camino, la implantación de procesos de gestión y desarrollo de proyectos ha sido una de las cosas más enriquecedoras que he podido hacer. Si, porque al instalar procesos te permite trabajar con personas, que aunque siempre es difícil, también es muy satisfactorio.

Por aquel entonces lo poco que había oído de modelos de calidad era sobre la ISO 9000, también había oído la mayoría de las empresas realmente les importa muy poco la calidad de lo que producen si no más bien tener la certificación y poner dicho sello en su publicidad. Muchas de ellas siguen todavía esta filosofía.

Pero como soy muy curioso y confío más en la Web que en los estándares oficiales para entender las cosas, me puse a investigar (cotillear) por la web.

De mis experiencias en estos 2 años con el modelo CMM - CMMI voy a intentar explicaros de una forma clara y sencilla en que consiste este modelo de calidad del software.

El nacimiento de CMM - CMMI

El departamento de defensa de los estados unidos tenía muchos problemas con el software que encargaba desarrollar a otras empresas, los presupuestos se disparaban, las fechas alargaban más y más. ¿Quién no se ha encontrado con este tipo de problemas si ha trabajado con una empresa de software?

Como esta situación les parecía intolerable convocó un comité de expertos para que solucionase estos problemas, en el año 1983 dicho comité concluyó "Tienen que crear un instituto de la ingeniería del software, dedicado exclusivamente a los problemas del software, y a ayudar al Departamento de Defensa".

Convocaron un concurso público en el que dijeron: "Cualquiera que quiera enviar una solicitud tiene que explicar como van a resolver estos 4 problemas", se presentaron diversos estamentos y la Universidad Carnegie Mellon ganó el concurso en 1985, creando el SEI.

El SEI (Software Engineering Institute) es el instituto que creó y mantiene el modelo de calidad CMM - CMMI

¿Qué es el CMM - CMMI?

El CMM - CMMI es un modelo de calidad del software que clasifica las empresas en niveles de madurez. Estos niveles sirven para conocer la madurez de los procesos que se realizan para producir software.

Niveles CMM - CMMI

Los niveles CMM - CMMI son 5:
  • Inicial o Nivel 1 CMM - CMMI. Este es el nivel en donde están todas las empresas que no tienen procesos. Los presupuestos se disparan, no es posible entregar el proyecto en fechas, te tienes que quedar durante noches y fines de semana para terminar un proyecto. No hay control sobre el estado del proyecto, el desarrollo del proyecto es completamente opaco, no sabes lo que pasa en él.

    Es el típico proyecto en el que se da la siguiente situación:
    - ¿Cómo va el proyecto?
    - Bien, bien.

    Dos semanas después…
    - ¿Cómo va el proyecto?
    - Bien, bien.

    Tres semanas después…
    - El lunes hay que entregar el proyecto.- No se por qué pero los proyectos se entregan los lunes.
    - El lunes !!?. Todavía falta mucho!!
    - ¿Cómo? Me dijiste que el proyecto iba bien!! Arréglatelas como quieras, pero el proyecto tiene que estar terminado para el lunes.


    Si no sabes el tamaño del proyecto y no sabes cuanto llevas hecho, nunca sabrás cuando vas a terminar.


  • Repetible o Nivel 2 CMM - CMMI. Quiere decir que el éxito de los resultados obtenidos se pueden repetir. La principal diferencia entre este nivel y el anterior es que el proyecto es gestionado y controlado durante el desarrollo del mismo. El desarrollo no es opaco y se puede saber el estado del proyecto en todo momento.

    Los procesos que hay que implantar para alcanzar este nivel son:
    • Gestión de requisitos
    • Planificación de proyectos
    • Seguimiento y control de proyectos
    • Gestión de proveedores
    • Aseguramiento de la calidad
    • Gestión de la configuración


  • Definido o Nivel 3 CMM - CMMI. Resumiéndolo mucho, este alcanzar este nivel significa que la forma de desarrollar proyectos (gestión e ingeniería) esta definida, por definida quiere decir que esta establecida, documentada y que existen métricas (obtención de datos objetivos) para la consecución de objetivos concretos.

    Los procesos que hay que implantar para alcanzar este nivel son:
    • Desarrollo de requisitos
    • Solución Técnica
    • Integración del producto
    • Verificación
    • Validación
    • Desarrollo y mejora de los procesos de la organización
    • Definición de los procesos de la organización
    • Planificación de la formación
    • Gestión de riesgos
    • Análisis y resolución de toma de decisiones

    La mayoría de las empresas que llegan al nivel 3 paran aquí, ya que es un nivel que proporciona muchos beneficios y no ven la necesidad de ir más allá porque tienen cubiertas la mayoría de sus necesidades.


  • Cuantitativamente Gestionado o Nivel 4 CMM - CMMI. Los proyectos usan objetivos medibles para alcanzar las necesidades de los clientes y la organización. Se usan métricas para gestionar la organización.

    Los procesos que hay que implantar para alcanzar este nivel son:
    • Gestión cuantitativa de proyectos
    • Mejora de los procesos de la organización


  • Optimizado o Nivel 5 CMM - CMMI. Los procesos de los proyectos y de la organización están orientados a la mejora de las actividades. Mejoras incrementales e innovadoras de los procesos que mediante métricas son identificadas, evaluadas y puestas en práctica.

    Los procesos que hay que implantar para alcanzar este nivel son:
    • Innovación organizacional
    • Análisis y resolución de las causas

    Normalmente las empresas que intentan alcanzar los niveles 4 y 5 lo realizan simultáneamente ya que están muy relacionados.

A grandes rasgos os he intentado introducir el modelo de calidad del software CMM - CMMI para aquella gente que se encuentra por primera vez con él. La implantación de un modelo de estas características es un proceso largo y costoso que puede costar varios años de esfuerzo. Aun así el beneficio obtenido para la empresa es mucho mayor que lo invertido.



"Y a este respecto se debe tener en cuenta hasta qué punto no hay cosa más difícil de tratar, ni más dudosa de conseguir, ni más peligrosa de conducir, que hacerse promotor de la implantación de nuevas instituciones.

La causa de tamaña dificultad reside en que el promotor tiene por enemigos a todos aquellos que sacaban provecho del viejo orden y encuentra unos defensores tímidos en todos los que se verían beneficiados por el nuevo.

Esta timidez nace en parte al temor de los adversarios, que tienen la ley de su lado, y en parte también la incredulidad de los hombres, quienes -en realidad- nunca creen en lo nuevo hasta que adquieren una firme experiencia en ello.

De ahí nace que, siempre que los enemigos encuentran la ocasión de atacar, lo hacen con ánimo faccioso, mientras los demás sólo proceden a la defensa con tibieza, de lo cual resulta un serio peligro para el príncipe y para ellos."

El Principe, Nicolás Maquiavelo, 1513

Si os interesa profundizar más en el conocimiento de los procesos de calidad CMM-CMMI, podéis empezar con introduciros en el Nivel 2 de CMM-CMMI.

INTRODUCCION AL CMMI - CMM

El modelo CMM define que deben existir algunas áreas o procesos clave en la organización que deberán realizar alguna función específica. A estas áreas se les denomina como Áreas Clave de Proceso (KPA - Key Process Area).

El modelo define para cada una de estas áreas un conjunto de buenas prácticas, dependiendo de que tanto se ajusten estas áreas con el modelo CMM se puede conocer el nivel de madurez de esta organización.

El modelo CMM y el modelo CMMI - Capability Maturity Model Integration se diferencian básicamente en que el primero se enfoca principalmente a las organizaciones o áreas de Tecnologías de información en cambio el modelo CMMI como su nombre lo indica es un modelo integrado y mejorado que se puede aplicar a un numero mayor de organizaciones de diferentes sectores.

El modelo CMM define 5 niveles de madurez:

1 - Inicial. Es el primer nivel es decir que no es necesario hacer ningún esfuerzo para llegar aquí, las organizaciones en este nivel no disponen de un ambiente adecuado para el desarrollo de software. Aunque se utilicen técnicas correctas de ingeniería, los esfuerzos se ven minados por falta de planificación. Los procesos varían según los individuos, el éxito de los proyectos se basa la mayoría de las veces en el esfuerzo personal, aunque a menudo se producen fracasos y casi siempre retrasos y sobre costos. El resultado de los proyectos es impredecible y esta pobremente controlado.

2 - Repetible. En este segundo nivel se encuentran las empresas en las que existe planificación y seguimiento de proyectos y está implementada la gestión de los mismos. No obstante, aún existe un riesgo significativo de no cumplir las metas.

3 - Definido. Existe un conjunto establecido de procesos estándar globales bien definidos (estableciendo sus objetivos) dentro de la organización. Existe un sistema de gestión de los proyectos. Una diferencia crítica entre los niveles 2 y 3 de madurez es el alcance de los estándares, descripciones de los procesos y procedimientos. En el nivel 2 pueden variar entre las distintas instancias de los procesos (entre diferentes proyectos); a nivel 3 son globales dentro de la organización e igual en todas las instancias de cada proceso.

4 - Gestionado. Se caracteriza porque las organizaciones disponen de un conjunto de métricas significativas de calidad y productividad, que se usan de modo sistemático para la toma de decisiones y la gestión de riesgos. El software resultante es de alta calidad.

5 - Optimizado. La organización completa está volcada en la mejora continua de los procesos. Se hace uso intensivo de las métricas y se gestiona el proceso de innovación.

MODELOS DE MADUREZ DEL CMM

Este grafico me permitió entender mejor como el modelo CMM define estos 5 niveles y clasifica a las organizaciones en alguno de estos.

Nivel 1: En el nivel inicial el resultado de los procesos suele ser impredecible tal como lo muestra el grafico, No existen áreas o funciones formalmente definidas así como tampoco puntos de control en el proceso, solo se puede tener una visión clara de las cosas cuando se empieza el proyecto y cuando se logra acabar, pero no es posible conocer de manera adecuada el estado del proyecto en sus procesos intermedios. Es por eso que en esas circunstancias surgen personas que se suben al hombro el proyecto y lo logran sacar adelante, aunque generalmente este tipo de proyectos sufrirá demoras y probablemente no se culminará.

Nivel 2: Según nuestro grafico ya es posible ver una gran diferencia entre el nivel inicial y el repetible, en este segundo nivel se puede observar que se definen claramente puntos de control en cada etapa principal del proyecto, esto obviamente permite tener un mayor control del proyecto. Lo importante a resaltar del grafico es que cada etapa es aún una caja negra es decir no podemos saber con precisión como se desenvuelve el proyecto dentro de cada etapa.

Nivel 3: Los procesos comunes para desarrollo y mantenimiento del software están documentados de manera suficiente en una biblioteca accesible a los equipos de desarrollo. Las personas han recibido la formación necesaria para comprender los procesos. En conclusión cada proceso se hace transparente para todos

Nivel 4: Tal como lo muestra el grafico, la principal diferencia con el nivel anterior es la medición y control de los procesos (métricas). Estas métricas no son subjetivas si no que se establecen con criterios cuantitativos formalmente definidos. Con el tiempo estos controles nos brindaran mejor información sobre la calidad y estado del proyecto permitiéndonos compararlo con otros proyectos similares y notar cualquier desviación tempranamente para poder corregirlo.

Nivel 5: En este nivel cada proceso es analizado y controlado permanentemente con la intención de que sea mejorado en todo momento, los controles permiten la mejora continua y se tienen implementadas todas las áreas clave de proceso recomendadas por el modelo.



Fig.1 Niveles del modelo CMM.

A partir del 2do nivel del modelo CMM se debe contar con áreas específicas que permitirán tener un mayor control del proyecto de Software:

Para el Nivel 2 al menos se deberá contar con las siguientes áreas clave de proceso:

  • Gestión de Requisitos
  • Planificación del proyecto de software
  • Seguimiento y Supervisión del proyecto
  • Gestión de subcontratos de software
  • Garantía de calidad de software
  • Gestión de la configuración del software

Cada Nivel va agregando nuevas áreas clave de proceso.
De Manera similar el CMMI también maneja niveles aunque para este modelo son 6:

0.- Incompleto
1.- Ejecutado
2.- Gestionado
3.- Definido
4.- Cuantitativamente gestionado
5.- Optimizado

Actualmente en donde me encuentro laborando hemos conseguido el nivel 3 CMMI. En un próximo artículo les seguiré comentando más detalles sobre este tema que se vuelve cada día más importante para las organizaciones.