Mejoramiento de procesos SW CMM

Download Report

Transcript Mejoramiento de procesos SW CMM

Mejoramiento de los procesos de
desarrollo de software
Mejoramiento de Procesos de Software
Objetivos de la charla

Discutir los factores críticos de éxito para el desarrollo del
software

Destacar la importancia de asegurar la calidad del software

Discutir los procesos para el mejoramiento del desarrollo de
software

Presentar la metodología WATCH para el desarrollo de software
OO basado en la reutilización de componentes
2
Contenidos de la charla
Factores críticos de éxito para el desarrollo de software
La calidad del software
Procesos de evaluación y certificación de la calidad del
software

El Modelo de Madurez de la Capacidad (CMM)
El método WATCH para el desarrollo de software OO
3
Factores críticos de éxito
del desarrollo de software
El proceso
de desarrollo
El
aseguramiento
de la
calidad
El
recurso
humano
Desarrollo de Software
La gerencia
del proyecto
Las herramientas
de desarrollo
4
Factores críticos de éxito del desarrollo de
software
EL RECURSO
HUMANO
5
El Recurso Humano
Perfil del ingeniero requerido por la industria del software:

Debe ser capaz de:






Gerenciar proyectos de software
 Planificar y controlar proyectos de alta tecnología
 Organizar, coordinar y dirigir grupos o equipos de desarrollo
 Gerenciar el riesgo
Desarrollar y mantener software bajo restricciones de costos y tiempo
 Modelado de negocios
 Definición y especificación de requerimientos
 Diseño de software
 Programación
 Pruebas de software
 Mantenimiento de software
Asegurar la calidad del software en desarrollo
Evaluar la calidad del software producido
Mejorar los procesos de desarrollo de software
Familiarizarse rapidamente con las tecnologías de software más recientes
6
El Recurso Humano
El desarrollo de software requiere un RH altamente especializado
y muy actualizado
Estado del arte en Ingeniería de Software:

Ingeniería de Software Orientada a Objetos

Reutilización de activos y componentes de software

Ingeniería de Dominios

Interfases Humano-Computador


Interfases web y multimedia
Integración de software heterogéneo


Objetos y componentes distribuidos
Arquitecturas de integración: CORBA, EJB, COM

Modelado de negocios

Arquitecturas de software, patrones de diseño, marcos
7
El Recurso Humano
Estrategias para mejorar la formación del RH
Programa de formación continua del RH

Debe ser institucional

Debe ser parte del plan estratégico de información de la empresa

Debe estar a cargo de empresas consultoras privadas o universidades


Cursos de extensión profesional en Ingeniería de Software
Talleres de adiestramiento en el uso de nuevas tecnologías de software
Programa de Postgrado en Ingeniería de Software

A cargo del Postgrado de Computación de la Fac. de Ingeniería

Otorgaría el título de “Especialista en Ingeniería del Software”

Niveles de formación del especialista en IS:
I) Tecnologías y sistemas de software
II) Procesos de desarrollo y mantenimiento de software de alta calidad
III)Gerencia de proyectos de software
8
Factores críticos de éxito del desarrollo de
software
La calidad
del producto
9
La Calidad del Software
¿ Qué significa el término calidad ?

" Conjunto de características de una entidad [producto o
servicio] que le confieren su aptitud para satisfacer necesidades
expresadas e ímplicitas" (ISO 8402)
¿Cómo medir la calidad de un producto de software?

Se emplean modelos que especifican la calidad mediante la
definición de un conjunto de atributos o características.

Se basan en descomponer la calidad del producto en
características y estas en criterios que pueden ser medidos
mediante métricas.
10
La Calidad del Software
¿ Qué características debe tener el software de alta calidad ?

Utilidad:



Confiabilidad:


¿ Es flexible, es modificable y es internamente comprensible ?
Eficiencia:


Baja probabilidad de falla => bajo número de errores
Mantenibilidad:


Determina si el sistema hace lo que sus usuarios esperan que haga
El sistema es útil si:
 Su funcionalidad ayuda al usuario en la realización de sus actividades
Medida en relación al uso de los recursos del computador
 Ej., bajo tiempo de ejecución y mínimo uso del espacio de almacenamiento
Facilidad de prueba:

¿ Se puede probar con facilidad ?
 en que medida el diseño y codificación facilitan las pruebas
11
La Calidad del Software
Otras características de la calidad del software

Economía

Integridad y consistencia

Documentación

Interoperabilidad

Modularidad

Correctitud

Generalidad

Reutilización

Claridad

Portabilidad
12
La Calidad del Software
¿ Cómo asegurar la calidad del software ?

Establecimiento de un sistema de calidad




Gestión de la calidad
Planificación de la calidad
Definición de políticas de calidad
Uso de técnicas de verificación y validación del software


Revisiones e inspección de los productos de software
Pruebas de programas

Gestión de la Configuración del Software

Uso de normas y estándares de calidad

Evaluación y mejoramiento de los procesos de software
13
La Calidad del Software
Normas y estándares de calidad:

Conjunto de guías, normas o convenios establecidos por la empresa
(o por un ente externo) con la finalidad de definir, simplificar y
estandarizar las actividades necesarias para lograr una alta calidad
de los productos de software
Dos enfoques de normalización:

Normalización de las características medibles del software

ISO 9126
 IEEE Std. 1061
Normalización del proceso de desarrollo del software

ISO 9000 (serie de estándares para la gestión de calidad)
 ISO 15004 (estándar para la evaluación de procesos de software)

14
Factores críticos de éxito del desarrollo de
software
El proceso
de desarrollo
15
Los procesos de software
Un proceso de software se define como un:

"conjunto de actividades, métodos, prácticas y transformaciones
que las personas usan para desarrollar y mantener software y sus
productos asociados [p.ej., planes, especificaciones, diseños y
pruebas]"
(Piattini y Daryanani, 1995)
Una premisa fundamental:

"La calidad de un producto de software está determinada, en
muy buena medida, por la calidad del proceso usado para
desarrollarlo y mantenerlo"
16
Evaluación y Mejoramiento de los Procesos de
Software
Modelos para evaluar y mejorar los procesos de software

El Modelo de Madurez de la Capacidad (CMM)




CMM: Capability Maturity Model
Desarrollado por el Instituto de Ingeniería de Software (SEI) de la
Universidad Carnegie-Mellon en USA
Incorpora aspectos definidos por el ISO 9001
El conjunto de estándares SPICE



SPICE: Software Process Improvement and Capability dEtermination
Desarrollado por el WG10 de la ISO (International Organization for
Standardization)
Inspirado en el ISO 9000
17
CMM: El Modelo de Madurez de la
Capacidad
El CMM (Capacity Maturity Model) fue desarrollado por
el Software Engineering Institute (SEI) de la Univ.
Carnegie-Mellon en USA con la finalidad de:

evaluar la madurez de los procesos de desarrollo de software
dentro de una organización.

proponer un plan de mejoramiento de los procesos de desarrollo
de software en base a una serie de niveles que van desde un
proceso caótico (inmaduro) hasta un proceso disciplinado y de
mejoramiento continuo (maduro).
18
CMM: El Modelo de Madurez de la
Capacidad
Capacidad de un proceso de software:

Rango de resultados esperados que pueden ser logrados
siguiendo un proceso de software dado
Madurez de un proceso de software:

Determina en que grado un proceso de software es
explícitamente definido, administrado, medido, controlado y
hecho efectivo

La madurez es un indicador de la capacidad del proceso de
software para lograr sus objetivos y resultados esperados.

Una organización logra mayor madurez mediante la
institucionalización del proceso de desarrollo de software,
estableciendo las políticas, estándares y estructuras organizativas
19
CMM: El Modelo de Madurez de la Capacidad
Organización inmadura
Organización madura
Improvisa o no sigue rigurosamente los
procesos de software
Tiene definido e implantado el método de
desarrollo y mantenimiento de software
Improvisa o no emplea la gerencia de
proyectos
Los procesos técnicos y gerenciales están
establecidos, son comunicados a toda la
organización y se exige su aplicación
Actúa en respuesta a las crisis que surjan
Los roles y responsabilidades de los grupos y
sus miembros están claramente definidos.
No se hacen estimaciones de costos y tiempo
reales
Las estimaciones de costos y tiempos se basan
en experiencias anteriores, reales y
cuantificadas
La calidad del producto no es definida sobre
una base objetiva
Existen objetivos cuantificables para medir la
calidad del producto
No se puede predecir la calidad del producto
Se controla la calidad del producto y se
garantiza la satisfacción del cliente
20
CMM: El Modelo de Madurez de la
Capacidad
El CMM emplea 5 niveles de madurez para evaluar y mejorar los
procesos de software de una organización
Proceso
mejorado
contínuamente
Proceso
predecible
Proceso
estandarizado
Proceso
disciplinado
N. Optimizado
N. Gerenciado
N. Definido
N. Repetible
N. Inicial
21
CMM: El Modelo de Madurez de la
Capacidad
Nivel Inicial

La organización no posee un ambiente estable de desarrollo de
software

Ausencia de gerencia de proyectos

El proceso de software es cambiante e irregular:

Durante las crisis, los grupos abandonan el método y se concentran en la
codificación y pruebas

Los planes, estimaciones y calidad son impredecibles

El rendimiento y el éxito dependen de la capacidad individual de
los miembros del grupo

La capacidad es una característica de los individuos y no de la
organización
22
N. Inicial
CMM: El Modelo de Madurez de la
Capacidad
Nivel Repetible

La organización establece políticas para gerenciar los proyectos
de software y procedimientos para implantar estas políticas

Los procesos están bajo un control efectivo de un sistema de
gerencia de proyectos basado en experiencias anteriores

Los procesos son definidos, documentados, practicados,
medidos, obligados y mejorables

Los procesos de software son estables y repetibles

Existen estándares de desarrollo definidos y exigidos

La calidad es controlada
N. Repetible
23
CMM: El Modelo de Madurez de la
Capacidad
Nivel Definido

Los procesos de software son definidos:


estandarizados, documentados e institucionalizados
Se institucionaliza un proceso estándar de desarrollo de software
que integra en uno solo:


los procesos de ingeniería de software y
gerencia de proyectos de software

Existe un entendimiento común de los procesos, funciones y
responsabilidades

La organización mantiene un grupo dedicado a la definición,
mejoramiento y difusión del proceso estándar

El proceso estándar es adaptado a cada proyecto
24
N. Definido
CMM: El Modelo de Madurez de la
Capacidad
Nivel Gerenciado:

La organización define metas de calidad cuantitativas para:



los productos de software y
los procesos de software
El proceso estándar es medible o cuantificable:

La productividad y la calidad se miden y se registran para cada proyecto

La calidad del software es predecible

Mediante el uso de métricas de software, se crea una base de
datos cuantitativa para la evaluación y estimación en proyectos
futuros

La capacidad del proceso de software es cuantificable y
predecible
25
N. Gerenciado
CMM: El Modelo de Madurez de la
Capacidad
Nivel Optimizado:

La organización se orienta hacia el mejoramiento contínuo de
sus procesos de software

La organización identifica las debilidades y fortalezas de su proceso y
determina maneras de mejorar su capacidad

La organización busca aumentar la capacidad y el rendimiento
de sus procesos

Se incorporan nuevas tecnologías y métodos para mejorar los
procesos

El mejoramiento ocurre a través de:


El avance incremental del proceso
Uso de nuevas tecnologías y métodos
N. Optimizado
26
CMM: El Modelo de Madurez de la
Capacidad
Nivel
Area clave del proceso
1) Inicial
2) Repetible
Ingeniería de requerimientos
Planificación de proyectos
Control y seguimiento de proyectos
Gerencia de subcontratación
Aseguramiento de la calidad del software (S/W)
Gerencia de la configuración del S/W
3) Definido
Coordinación de la definición y mejora del proceso
Programa de adiestramiento
Integración Gerencia e Ingeniería de S/W
Ingeniería de productos de S/W
Coordinación inter-grupos
Revisiones
4) Gerenciado
Gerencia cuantitativa de procesos
Gerencia de la calidad del software
5) Optimizado
Prevención de defectos
Gerencia del cambio tecnológico y del proceso
27
CMM: El Modelo de Madurez de la
Capacidad
Aspectos de uso del modelo:

El escalamiento de los niveles es progresivo


Saltarse un nivel es contraproducente
Normalmente se requiere 1 – 3 años para escalar al siguiente
nivel

Alcanzar, desde el nivel 1, la categoría de “Organización Madura” puede
tomar más de 10 años

Es posible retroceder desde un nivel superior

El CMM no es una “bala de plata” (silver bullet)


no resuelve todos los problemas decalidad en el complejo proceso de
desarrollo y mantenimiento de software
La evaluación es hecha por especialistas adiestrados y
acreditados por el SEI
28
Conclusiones
El desarrollo de software es un proceso complejo que requiere:

Un recurso humano altamente especializado y actualizado

Un mejoramiento continuo y estandarización de los procesos de
desarrollo

Aplicación de procesos gerenciales

Un aseguramiento de la alta calidad del software producido

Tecnología y herramientas apropiadas y actualizadas
El CMM proporciona una estructura conceptual y metodológica
para mejorar la gerencia y el desarrollo de S/W y, por ende, la
calidad de los productos
29
Fin de la charla
[email protected]
30