320 likes | 540 Views
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 de l software Destacar la importancia de asegurar la calidad del software
E N D
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
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
Desarrollo de Software Factores críticos de éxito del desarrollo de software El proceso de desarrollo El aseguramiento de la calidad El recurso humano Las herramientas de desarrollo La gerencia del proyecto
Factores críticos de éxito del desarrollo de software EL RECURSO HUMANO
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
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
El Recurso Humano • 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 Estrategias para mejorar la formación del RH
Factores críticos de éxito del desarrollo de software La calidad del producto
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 satisfacernecesidades 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 deun 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.
La Calidad del Software • ¿ Qué características debe tener el software de alta calidad ? • Utilidad: • 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 • Confiabilidad: • Baja probabilidad de falla => bajo número de errores • Mantenibilidad: • ¿ Es flexible, es modificable y es internamente comprensible ? • Eficiencia: • 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
La Calidad del Software • Otrascaracterísticasde la calidad del software • Economía • Integridad y consistencia • Documentación • Interoperabilidad • Modularidad • Correctitud • Generalidad • Reutilización • Claridad • Portabilidad
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
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 desarrollodel 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)
Factores críticos de éxito del desarrollo de software El proceso de desarrollo
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"
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
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).
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
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 N. Optimizado Proceso predecible N. Gerenciado Proceso estandarizado N. Definido Proceso disciplinado N. Repetible N. Inicial
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 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
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 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 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
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
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
Fin de la charla ¿ Preguntas ? jonas@ing.ula.ve