jueves, 24 de julio de 2014

En las últimas décadas se han propuesto numerosos enfoques para la evaluación y mejora de un proceso de software

     Método de evaluación del estándar CMMI para el proceso de mejora (SCAMPI) 

Las mejores prácticas CMMI se publican en los documentos llamados modelos. En la actualidad hay tres áreas de interés cubiertas por los modelos de CMMI: Desarrollo, Adquisición y Servicios.
La versión actual de CMMI es la versión 1.3 la cual corresponde a CMMI-SVC, liberada el 1 de noviembre de 2010. Hay tres constelaciones de la versión 1.2 disponible:
·         CMMI para el Desarrollo (CMMI-DEV o CMMI for Development), Versión 1.2 fue liberado en agosto de 2006. En él se tratan procesos de desarrollo de productos y servicios.
·         CMMI para la adquisición (CMMI-ACQ o CMMI for Acquisition), Versión 1.2 fue liberado en noviembre de 2007. En él se tratan la gestión de la cadena de suministro, adquisición y contratación externa en los procesos del gobierno y la industria.
·         CMMI (CMMI-SVC o CMMI for Servicies), está diseñado para cubrir todas las actividades que requieren gestionar, establecer y entregar Servicios.
Dentro de la constelación CMMI-DEV, existen dos modelos:
·         CMMI-DEV
·         CMMI-DEV + IPPD (Integrated Product and Process Development)
Independientemente de la constelación\modelo que opta una organización, las prácticas CMMI deben adaptarse a cada organización en función de sus objetivos de negocio.
Las organizaciones no pueden ser certificadas CMMI. Por el contrario, una organización es evaluada (por ejemplo, usando un método de evaluación como SCAMPI y recibe una calificación de nivel 1-5 si sigue los niveles de Madurez (si bien se comienza con el nivel 2). En caso de que quiera la organización, puede coger áreas de proceso y en vez de por niveles de madurez puede obtener los niveles de capacidad en cada una de las Áreas de Proceso, obteniendo el "Perfil de Capacidad" de la Organización.
Muchas organizaciones valoran el medir su progreso llevando a cabo una evaluación (appraisal) y ganando una clasificación del nivel de madurez o de un nivel de capacidad de logro. Este tipo de evaluaciones son realizadas normalmente por una o más de las siguientes razones:
·         Para determinar que tan bien los procesos de la organización se comparan con las mejores prácticas CMMI y determinar qué mejoras se pueden hacer.
Las valoraciones de las organizaciones utilizando un modelo CMMI deben ajustarse a los requisitos definidos en el documento "Appraisal Requirements for CMMI" (ARC). La evaluación se enfoca en identificar oportunidades de mejora, y comparar los procesos de la organización con las mejores prácticas CMMI. Los equipos de evaluación usan el modelo CMMI y un método conforme a ARC para guiar su evaluación y reporte de conclusiones. Los resultados de la evaluación son usados para planear mejoras en la organización. Hay tres clases de evaluación: Clase A,B,C. El Standard CMMI Appraisal Method for Process Improvement (SCAMPI) es un Método de evaluación que cumple todos los requerimientos ARC. Una evaluación de clase A es más formal y es la única que puede resultar en una clasificación de nivel.
El Standard CMMI Appraisal Method for Process Improvement (SCAMPI) es el método oficial SEI para proveer puntos de referencia de sistemas de calificación en relación con los modelos CMMI. SCAMPI se usa para identificar fortalezas y debilidades de los procesos, revelar riesgos de desarrollo/adquisición, y determinar niveles de capacidad y madurez. Se utilizan ya sea como parte de un proceso o programa de mejoramiento, o para la calificación de posibles proveedores. El método define el proceso de evaluación constando de preparación; las actividades sobre el terreno; observaciones preliminares, conclusiones y valoraciones; presentación de informes y actividades de seguimiento.



 Evaluación basada en CMM para la mejora del proceso interno (CBA IPI).

La evaluación y mejora de procesos software se ha demostrado como un método fiable para mejorar la calidad del software, a través de la mejora del proceso que se sigue para desarrollarlo. Debido a ello han ido apareciendo diversos modelos y normas que nos ayudan a la mejora de la calidad de nuestros procesos software (CMMI,ISO 15504, etc.).
Gracias a la implantación de un modelo de evaluación y mejora de procesos, las empresas consiguen una importante ventaja competitiva, estableciendo además una cultura organizativa y aumentando su productividad, lo que repercute en una mayor satisfacción del cliente.
En Kybele Consulting hemos trabajado en más de 50 proyectos de evaluación y mejora de procesos software, habiendo realizado el diagnóstico, evaluación y mejora de procesos software y de servicios TI: CMMIISO 15504TMMIISO 2000, ISO 9126, ISO 25000, ISO 13485, etc.
Las tareas más comunes a la hora de implementar procesos en una empresa son las siguientes:
·         Evaluación inicial y planificación de siguientes pasos
·         Apoyo en la definición de los procesos de desarrollo
·         Implantación de los procesos (tradicionales/ágiles) en la organización
·         Evaluaciones intermedias y pilotaje para asegurar la correcta implantación.




                                SPICE (ISO/IEC 15504)
Este servicio permite instaurar una política de trabajo común en el departamento de desarrollo software de su empresa.
La norma ISO/IEC 15504 define un modelo de evaluación de procesos. Se trata de una estándar internacional que permite evaluar la capacidad y madurez de los procesos software de una organización.
Los procesos de desarrollo software evaluados con la ISO 15504 se encuentran recogidos en la norma ISO/IEC 12207. Esta norma contiene un conjunto de procesos que abarcan el ciclo completo de un proyecto software, desde la definición de un proyecto hasta la entrega y cierre del mismo.
La certificación se basa en 6 niveles de madurez. Cada nivel obliga a cumplir una serie de requisitos sobre un grupo de procesos determinado. Por ejemplo, el nivel 2 de madurez contempla 10 procesos y el nivel 3 contempla 21 procesos de ISO 12207.
Entre los principales beneficios de una implantación de SPICE, podemos destacar los siguientes:
·         Reconocimiento en el mercado, siendo un factor diferenciador ante su competencia.
·         Aumenta la satisfacción de sus clientes.
·         Mejora interna de su empresa:
o    Implantación de una metodología común a todas las áreas.
o    Control de todas las fases y áreas de gestión de un proyecto software.
o    Detectar y corregir posibles fallos en cada etapa de un proyecto.
o    Aumento de los beneficios del proyecto.
En resumen, la implantación de SPICE en su empresa le permitirá abordar cualquier tipo de proyecto software siguiendo unas directrices comunes en todos ellos.
Forma de trabajo:
El objetivo principal de Audisec para sus proyectos de implantación es aportar valor. Por ello, la filosofía de nuestros proyectos es la siguiente:
·         Enfoque práctico y didáctico de los proyectos. Los procesos deben ser asimilados y comprendidos.
·         No a la "consultoría intrusiva": primero se analizan las necesidades de la organización y después se decide cuál es la solución que mejor puede encajar.
·         Los procedimientos fáciles de usar se utilizan y aprovechan.
·         Cumplimiento con la norma.
Las fases de las que consta el proyecto de SPICE son:
·         Evaluación inicial.
·         Desarrollo de procesos
·         Aplicación de los procesos en proyectos software de su empresa.
·         Evaluación final.
·         Certificación.
Recuerde también que podemos alinear SPICE con las Normas ISO 27001, ISO 2000, ISO 22301, ISO 9001, ISO 14001, etc.




                ISO9001: 2000 para software
En primer lugar hay que tener en claro que no hay una empresa de software genérica, pues dentro del software, hay productos que tienen grandes diferencias funcionales y criticidad.  Lo que puedo opinar es sobre Concepto que es una empresa que tiene algunos desarrollos mas o menos productizados y son usados por algunas empresas de américa latina. Estamos certificados desde el 2003.

Que es ISO 9001:2000?. 
Son un conjunto de normas, que rigen la forma en que las organizaciones que las cumplan, deben crear su sistema de gestión de calidad.  En ellas se establecen que controles son obligatorios para los procesos de la empresa, que hay que hacer determinadas mediciones, chequeos con los clientes, etc. 

Originalmente se aplicaban a empresas industriales, por lo que adaptarlas a empresas de servicios o desarrollo de software era bastante traumático, cosa que mejoró muchísimo con la versión del año 2000. 

Para cumplir con las normas ISO 9001:2000 debe decir lo que hace (escribiendo un manual de calidad) y hacer lo que dice (pues se auditan los procesos, donde se chequean que se este cumpliendo con lo que está determinado en el manual de calidad). 

Teniendo una certificación ISO 9001:2000 se producen productos de buena calidad? 
El cumplimiento de la norma, no garantiza la calidad de los productos. Uno puede establecer un procedimiento y un manual de calidad, en donde se diga que lo que se va a fabricar es una porquería y si se cumple con los requisitos básicos, puede tener una porquería certificada. Por ejemplo, puedo decir en mi manual, que voy a instalar en mis clientes todos los programas que genere sin realizar absolutamente ningun testeo funcional. Si cumplo que lo que digo en mi manual de calidad, puedo certificar mi empresa, aunque el producto no tenga buena calidad. 

Entonces para qué sirve?
Por lo pronto, la norma exige fijarse objetivos a nivel de la empresa. Creo que todas las empresas deben tener en forma más o menos formal, que es lo que quieren que la empresa sea, y por lo tanto fijarse alguna meta en lo que tienen que realizar en el año. 

La norma exige también tener procesos y dichos procesos tienen puntos de control e indicadores. Por ejemplo se pueden tener: 
·                     Proceso de atención al cliente
·                     Proceso de desarrollo de software
·                     Proceso de testeo de software
·                     Proceso de deployment
·                     Capacitación de usuarios
·                     Capacitación de los integrantes de la empresa
Para cada uno de estos procesos, hay que definir un procedimiento a seguir e indicadores de cómo se están realizando estos procedimientos.

También hay algunos mecanismos para el manejo de documentación, de forma de mantenerla actualizada y la obligación de que la dirección de la empresa tenga participación activa en los objetivos y calidad de la empresa. 

Otras de las cosas que la norma obliga, es a tener auditorías internas y una vez al año externas. Es algo muy bueno pues ayuda a tener controlados los procesos. 

Que es lo que hay qué evitar? 
Al haber trabajado para varias empresas que están certificadas en calidad y al haber participado en la certificación de Concepto, he visto que algunas veces se termina "trabajando para la norma", o sea, adaptando algún procedimiento a lo que dice la norma, sin pensar si se esta agregando valor al proceso en general.  

El procedimiento debe  pensarse para brindar lo máximo a la empresa y luego hacerle los ajustes necesarios para cumplir la norma y no al revés. Siempre se encuentran formas originales de cumplir las normas aportando al proceso. 

Cosas a tener en cuenta.
En una empresa de software, casi siempre existe una tensión grande, entre la innovación que hay que tener para mantenerse al día con la tecnología y para entregar nuevas funcionalidades a los clientes y la entrega de productos sin defectos a los clientes (que se hace más facil, cuando hay pocos cambios). 

Esta tensión inevitable,  y muchas veces se tiene una seccion de la empresa dedicada a la investigacion y otra al proceso de desarrollo, documentación e instalacion. 

El cumplimiento de normas es mucho mas aprovechable, cuando hay procesos bien conocidos y repetibles, y los mismos pueden medirse y optimizarse. 

Es difícil establecer procesos repetibles para la innovación,  pues si se tuvieran, no se estaría haciendo algo realmente nuevo.  Por eso es bueno, que este proceso dentro del manual de calidad, tenga gran libertad de acción (o sea poco detalle de cómo se realiza) y recién introducir estas mejoras al proceso más controlado, cuando ya se haya comprobado su eficacia. 

Por lo tanto, la certificación bajo la norma ISO 9001:2000 es muy buena para lo que es captura de requerimientos, análisis, programación, atención al cliente, documentación e instalación, pues es algo que la empresa debe hacer en forma controlada y repetible. 

Debe usarse con cuidado para el estudio de nuevas tecnologías, betatesting o cualquier proceso que no esté maduro en la organización. 

Conclusión. 
Para nosotros, la aplicación de la norma nos ha dado buenos resultado. Nos permitió ordenar varias de nuestro proceso y además nos dio un marco consistente para la mejora en el tiempo.
Después del segundo año, las auditorías no causan ningún stress en la organización y creo que esto es muy bueno. 

PD: El post quedó muy largo. Si tengo ganas después escribo sobre algunas diferencias entre CMM (de donde usamos algunas cosas) y ISO 9001. 

PD2: Uno de los problemas más grandes que encontramos es en la nomenclatura que utiliza la norma que no es la misma que usamos en el día a día. Por ejemplo, los términos de validación, verificación a veces se chocan y mezclan con los de testeo, pruebas y chequeo con el cliente. 

Verificación
confirmación mediante la aportación de evidencia objetiva de que se han cumplido los requisitos de diseño especificados

Validación
confirmación mediante la aportación de evidencia objetiva de que se han cumplido los requisitos para una utilización o aplicación específica prevista.


No hay comentarios:

Publicar un comentario