Está en la página 1de 18

Lic.

González Crivelli Maximiliano - Maestría en Sistemas de Información 2018

Módulo IX: Calidad en el desarrollo de software

Profesor: Mg. Martín M. Pérez

Alumno: Lic. González Crivelli Maximiliano Patricio Alberto

Trabajo Práctico Final - CMMI

1 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018

Índice
¿Qué es Calidad? ........................................................................................................................................3

CMMI

Historia y evolución ....................................................................................................................................4

El modelo - Componentes ..........................................................................................................................5

Representaciones .......................................................................................................................................6

Representación Continua ...........................................................................................................................6

Representación Escalonada........................................................................................................................7

Áreas de Procesos ......................................................................................................................................10

Áreas de Procesos Agrupadas ....................................................................................................................12

Comparación de los modelos de representación.......................................................................................13

Ejemplo Práctico.........................................................................................................................................14

Referencias .................................................................................................................................................18

2 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018

 ¿Qué es calidad?
Existen muchas definiciones propuestas por diversos especialistas profesionales en el
tema de calidad.

 J.M. Juran, figura renombrada en el control de calidad, define calidad como la


“adecuación del producto al uso”. Por su parte, E. Deming, reconocido por su aporte en
el desarrollo y crecimiento de Japón, define calidad como la “conformidad con
requisitos y confiabilidad en el funcionamiento”. Para P. Crosby, la calidad es cero
defectos. P Drucker sostiene que un buen producto no es el que cumple con una
determinada especificación, sino el que es bien recibido por el cliente.

 El Organismo Internacional de Normalización (ISO) define calidad en la norma ISO


8402:1994 como “la totalidad de características o propiedades de un producto o servicio
que le confieren la aptitud para satisfacer las necesidades explícitas e implícitas de sus
clientes”.

 Por otro lado, acercándonos a definiciones con mayor relación a la ingeniería, la IEEE
(Institute of Electrical and Electronics Engineers) define calidad como “El grado en que
un sistema, componente o proceso cumple con los requerimientos especificados, y
necesidades o expectativas del cliente o usuario”.

 En el marco de la calidad del software, Pressman autoridad reconocida en la mejora de


procesos de software y en tecnologías de Ingeniería de software define calidad como la
“Concordancia del software producido con los requisitos funcionales y de rendimiento
explícitamente establecidos, con los estándares de desarrollo explícitamente
documentados y con las características implícitas que se espera de todo software
desarrollado profesionalmente”.

 Según el SEI (Software Engineering Institute), “La calidad de un producto o de un sistema es


en su mayor parte consecuencia de la calidad de los procesos empleados en su desarrollo y
mantenimiento”.

3 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018

 CMMI

Historia y evolución
Capability Maturity Model Integration (CMMI) (Integración de modelos de madurez de capacidades) del
Software Engineering Institute (SEI).
Este modelo CMMI es la evolución natural que el SEI ha hecho de su modelo inicial CMM (que dejó de ser
mantenido por el SEI el 31 de diciembre de 2005).
El CMMI es quizás el producto más importante del SEI. Su antecesor, CMM, surgió como respuesta a la solicitud
que hizo el DoD (Department of Defense) de los EEUU, quizás el mayor consumidor de software del mundo (el
tamaño total de sistemas se mide en billones de líneas de código), a la Carnegie Mellon University para poder
evaluar a sus proveedores de software, y que dio origen al SEI.

CMMI se ha convertido en el estándar de facto dentro de la industria mundial de las TI para definir el proceso
software y mejorarlo. (1.830.000 entradas en google) [1].

Su propósito es proveer una guía de las mejores prácticas para mejorar los procesos de una organización, en
cuanto al desarrollo, adquisición y mantenimiento de productos software y servicios.

Constelaciones
Las constelaciones en el modelo CMMI aparecen a partir de la versión 1.2 publicada en Agosto del 2006, como
CMMI-DEV (CMMI for Development). Una constelación es una colección de componentes utilizados para
construir modelos, materiales de capacitación y evaluación en un área de interés. Hasta la fecha existen tres
constelaciones publicadas:

 CMMI-DEV publicada en agosto del 2006 y sirve como guía para medir, monitorear y administrar el
proceso de desarrollo y mantenimiento de productos y servicios.
 CMMI-ACQ (Acquisition) publicada en noviembre del 2007 y sirve como guía para mejorar el proceso
de adquisición de productos y servicios.
 CMMI-SVC (Services) publicada en febrero del 2009 y sirve como guía para guía para proporcionar
servicios internos en una organización y a clientes externos.

Para facilitar el uso de múltiples modelos en la arquitectura del modelo CMMI se establecen componentes
comunes y específicos. Los componentes comunes se conocen como el modelo base (Model Foundation) y lo
integran las cinco metas genéricas y sus respectivas prácticas genéricas, así como 16 áreas de proceso que son
comunes a todas las constelaciones (ver cuadro más adelante) [2].

4 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018

Figura 01: CMMI - Constelaciones

El modelo - Componentes
El modelo CMMI declara un conjunto de prácticas que se deben llevar a cabo sin detallar la forma de
implantarlas en cada empresa, y se estructura en un conjunto de áreas de proceso, entendidas como el
conjunto de prácticas relacionadas que son ejecutadas de forma conjunta para conseguir un conjunto de
objetivos. [2] Cada área de proceso se descompone en objetivos:

 Objetivos genéricos: asociados a un nivel de capacidad establecen lo que una


organización debe alcanzar en ese nivel. El logro de cada uno de esos objetivos
en un área de proceso significa mejorar el control en la ejecución del área de
proceso.
 Objetivos específicos: se aplican a una única área de proceso y localizan las
particularidades que describen que se debe implementar para satisfacer el
propósito del área de proceso.

Cada uno de estos objetivos se descomponen a su vez en prácticas:

5 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018
 Prácticas genéricas: se aplican a cualquier área de proceso porque puede mejorar
el funcionamiento y el control de cualquier proceso.
 Prácticas específicas: actividades que se consideran importantes en la realización
del objetivo específico al cual está asociado. Las prácticas específicas describen
las actividades esperadas para lograr la meta específica de un área de proceso

Figura 02: CMMI - Componentes

Representaciones [3]
Existen 2 formas de representación en CMMI

Representación Continua:

La representación continua se focaliza en la mejora de un proceso o un conjunto de ellos relacionado(s)


estrechamente a un área de proceso en que una organización desea mejorar, por lo tanto una organización
puede ser certificada para un área de proceso en cierto nivel de capacidad. Existen seis niveles de capacidad
por donde transitan los procesos asociados a un área de proceso y cada nivel es construido sobre el nivel
anterior, es decir para que un proceso alcance un nivel de capacidad necesariamente debe haber alcanzado el
nivel anterior.

La representación continua permite a una organización seleccionar una determinada área o grupo de áreas de
procesos y mejorarlos para alcanzar la capacidad deseada. Esta representación proporciona una mayor
flexibilidad al momento de utilizar el modelo CMMI para la mejora de procesos ya que la organización puede
elegir mejorar el o las áreas de procesos que están más alineadas a los objetivos del negocio o presentan una
deficiencia con respecto a las demás áreas de proceso.

6 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018

Figura 03: CMMI - Representación Continua

Para la representación continua, se definen 6 niveles de capacidad de los procesos (del 0 al 6).

Figura 04: CMMI - Representación Continua - Niveles de capacidad

7 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018
Representación Escalonada: niveles de madurez, es la más común

Madurez Concepto: Atributo de las organizaciones que desarrollan o mantienen los sistemas de software.
En la medida que éstas llevan a cabo su trabajo siguiendo procesos, y en la que éstos se encuentran
homogéneamente implantados, definidos con mayor o menor rigor; conocidos y ejecutados por todos los
equipos de la empresa; y medidos y mejorados de forma constante, las organizaciones serán más o menos
“maduras”.

Niveles de Madurez: los niveles de madurez en CMMI son 5, y hacen referencia a un conjunto de áreas de
proceso, una vez institucionalizadas todas la áreas de proceso de un nivel, se puede decir, que la empresa tiene
Nivel de Madurez N, donde N es el nivel que se compone de todas las áreas de proceso que la empresa
cumplió.
Área de proceso: Es un conjunto de prácticas relacionadas con un área específica, que en el momento de estar
implantadas colectivamente, satisfacen un conjunto de metas consideradas importantes para hacer un
mejoramiento significativo en el área.

Figura 05: CMMI - Representación Escalonada - Niveles de madurez

Representación por niveles de madurez:

Cada área de proceso se asocia con uno de los 5 niveles de madurez, y cada uno de estos niveles sirve como
punto de referencia para conocer el grado de madurez en el cual se encuentra la compañía. Un nivel se alcanza
cuando la organización ha implantado todas las áreas de procesos y sus prácticas requeridas, tanto de
dicho nivel como de los niveles predecesores.

8 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018
Nivel 1: Inicial:

Procesos impredecibles, pobremente controlados y reactivos. El proceso de software se caracteriza como ad


hoc y ocasionalmente caótico. Pocas actividades están definidas y el éxito de los proyectos depende del
esfuerzo individual. Hay carencia de procedimientos formales, estimaciones de costos, planes del proyecto,
mecanismos de administración para asegurar que los procedimientos se siguen.

Nivel 2: Gestionado

Procesos caracterizados en proyectos y acciones reactivas con frecuencia. Son establecidas las actividades
básicas para la administración de proyectos de software para el seguimiento de costos, programación y
funcionalidad. El éxito está en repetir prácticas que hicieron posible el éxito de proyectos anteriores, por lo
tanto hay fortalezas cuando se desarrollan procesos similares, y gran riesgo cuando se enfrentan nuevos
desafíos.

Las áreas de proceso de nivel 2 son 7:

 Administración de Requerimientos (REQM)


 Planeamiento de Proyectos (PP)
 Seguimiento y Control de Proyectos (PMC)
 Administración de acuerdos con Proveedores (SAM)
 Aseguramiento de la Calidad de Productos y Procesos (PPQA)
 Administración de la Configuración (CM)
 Mediciones y Análisis (MA)

Nivel 3: Definido

Procesos caracterizados en la organización, y con acciones proactivas.


Las actividades del proceso de desarrollo de software para la administración e ingeniería están documentadas,
estandarizadas e integradas en un proceso de software estándar para la organización.

Las áreas de proceso de nivel 3 son 13:

 Foco en los Procesos Organizacionales (OPF)


 Definición de Procesos Organizacionales (OPD)
 Entrenamiento Organizacional (OT)
 Desarrollo de Requerimientos (RD)
 Solución Técnica (TS)
 Integración de Productos (PI)
 Verificación (VER)

9 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018
 Validación (VAL)
 Administración del Proyecto Integrado (IPM)
 Administración de Riesgos (RSKM)
 Equipo Integrado (IT)
 Ambiente Organizacional (OE)
 Análisis de Decisión y Resolución (DAR)

Nivel 4: Gestionado cuantitativamente

Los procesos son medidos y controlados. Se registran medidas detalladas de las actividades del Proceso y
calidad del Producto. El proceso de desarrollo de software y el producto son entendidos cuantitativamente y
controlados.

Las áreas de proceso de nivel 4 son 2:

 Administración Cuantitativa de Proyectos (QPM)


 Performance de los Procesos Organizacionales (OPP)

Nivel 5: Optimizado

Los procesos son medidos y controlados. Se registran medidas detalladas de las actividades del Proceso y
calidad del Producto. El proceso de desarrollo de software y el producto son entendidos cuantitativamente y
controlados.

Las áreas de proceso de nivel 5 son 2:

 Administración Cuantitativa de Proyectos (QPM)


 Performance de los Procesos Organizacionales (OPP)

10 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018
Áreas de procesos y las herramientas con las que se puede implementar:

Figura 06: CMMI - Áreas de procesos[5]

11 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018
Se agrupan en 4 categorías según su finalidad: Gestión de proyectos, Ingeniería, Gestión de procesos y
Soporte.

Figura 07: CMMI - Agrupamiento de áreas de procesos

Ingeniería: Agrupa áreas de procesos relacionadas con el ciclo de vida de desarrollo de un producto
software, desde la captura y desarrollo inicial de los requerimientos del cliente hasta el uso operacional.
Gestión de proyecto: Enfocado a la planificación, seguimiento, y control del proyecto. Cubre temas de
gestión de acuerdos con proveedores y administración de riesgos mediante un monitoreo constante a lo largo
del proyecto.
Gestión de procesos: Contiene prácticas cuyo objetivo es optimizar y mejorar los procesos de la
organización. Proporciona la capacidad de documentar las mejores prácticas y medir cuantitativamente la
calidad del proceso.
Soporte: Proporciona prácticas que apoyan a las demás áreas de procesos en el desarrollo del
producto software.

12 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018
Comparación de los modelos de representación

Figura 08: CMMI - Comparación de Modelos de representación

13 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018

Ejemplo Práctico:
Representación Escalonada

Nivel de madurez 1: Significa que existe una etapa en el desarrollo destinada a capturar los requisitos
(se hace), pero se hace de manera Ad-Hoc, sin utilizar ningún plan, y los cambios se resuelvan como
"bomberos" con el esfuerzo del equipo de desarrollo.

ejemplo: Requerimientos nivel 1


Una charla de skype:

Figura 09: Ejemplo - Requerimiento vía Skype

14 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018

o alguna anotación en una hoja de papel.

Figura 10: Ejemplo - Requerimiento vía hoja de papel y pruebas

Luego se le solicita al programador o equipo de programadores, que "digan" cuánto tiempo van a
demorar.
Transcurrido ese tiempo se pregunta si terminaron o no, etc.
Si se necesita algún proveedor o freelancer, se le pregunta cuánto tiempo va a demorar en realizar lo
solicitado.

Nivel de madurez 2: Se requiere tener un área de proceso destinada a la captura de requisitos, que
tenga una planificación del proyecto, que utilice herramientas, y que pueda gestionar los
requerimientos.

15 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018
También requiere que se indique alguna métrica a utilizar, ya sea por ejemplo tiempo de desarrollo.
Para ello podemos por ejemplo si utilizamos scrum como framework.

 Para las historias de usuarios especificar en formularios en papel o digital.


 Se realiza un documento de validación para el cliente sobre los requerimientos, que este
debe firmar.
 Se debe estimar el esfuerzo de desarrollo con alguna técnica como Planning poker
 Para la planificación del sprint se puede utilizar la técnica kanban con el sistema trello onlie
que también tiene un plugin para diagramas de gantt.

Figura 11: Diagrama de gantt - Trello Plugin Elegantt

Figura 12: tablero Kanban

16 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018

 Si se necesitan freelancers, se firman acuerdo de nivel de servicio. y se pide cronograma de


actividades, para incorporar a nuestro diagrama de gantt.
 Una vez que se inicia el desarrollo se puede controlar el tiempo con alguna métrica de
tiempo establecida, como ser el tiempo en minutos de desarrollo, para ello se puede utilizar
Traking Time Online.

Figura 13: Trakeador de tiempo

 Para aseguramiento de la calidad se puede utilizar formularios de autoría.


 Para control de riesgos se puede usar Magerit.
 Para el versionado del código se puede utilizar SVN.

Productos de trabajo se utiliza en un nivel 2:


 Plan de proyecto.
 Plan de riesgo.
 Plan de comunicación.
 Definición de métricas y sus umbrales.
 Plan de configuración.
 Cuestionarios de auditoría.
 Minutas: sobre acuerdos, sobre reuniones, sobre finalización de proyectos.
 Registro de problemas: incidencias, acciones correctivas, controles de cambios
 Solicitud de requerimientos: Como le damos seguimiento, como la programamos para
revisarla, como la introducimos, como la desarrollamos.
 Acuerdos con proveedores.

17 Calidad en el desarrollo de software


Lic. González Crivelli Maximiliano - Maestría en Sistemas de Información 2018
Referencias

[1]: Juan Carlos Torres Álvarez - Capgemini - España - 2006


[2]: Ahern D. M., Clouse A. y Turner R. CMMI Distilled Second Edition,
Addison-Wesley SEI Series in Software Engineering, 2005
[3]Chrissis M.B., Konrad M. y Shrum S. CMMI Second Edition Guidelines for Process Integration
and Product Improvement, Addison-Wesley SEI Series in Software Engineering, 2007 (CMMI for
Development).
[4] Humphrey W.S. Managing the Software Process, Addison-Wesley
SEI Series in Software Engineering, 1990
[5] Ing. Univ. Bogotá (Colombia), 12 (2): 245-267, julio-diciembre de 2008. ISSN 0123-2126

18 Calidad en el desarrollo de software