CMM es un método para evaluar las capacidades de contratación de software y ayudar a mejorar la calidad del software. Se centra en la gestión del proceso de desarrollo de software y la mejora y evaluación de las capacidades de ingeniería. CMM se divide en cinco niveles: el primer nivel es el nivel inicial, el segundo nivel es el nivel repetible, el tercer nivel es el nivel de definición, el cuarto nivel es el nivel de gestión y el quinto nivel es el nivel de optimización.
CMM fue desarrollado con éxito en 1987 por el Instituto de Ingeniería de Software de la Universidad Carnegie Mellon en Estados Unidos. Es el estándar de proceso de producción de software y el estándar de certificación de nivel de madurez empresarial de software más popular y práctico del mundo. En la actualidad, todas las empresas de software existentes en mi país han pasado la certificación estándar CMM.
SW-CMM (Capability Maturity Model for Software Productivity Maturity Model, en adelante denominado "CMM") es un método desarrollado en 1987 por el Software Engineering Institute (CMU SEI) de la Universidad Carnegie Mellon en Estados Unidos. Estados. Se utiliza para evaluar las capacidades de los contratistas de software y ayudar a mejorar la calidad del software. Su propósito es ayudar a las empresas de software a gestionar y mejorar sus procesos de ingeniería de software, mejorar sus capacidades de desarrollo y mejora y desarrollar software de alta calidad a tiempo y dentro del presupuesto.
Se basa en la idea de que mientras nos centremos en establecer una infraestructura de procesos de ingeniería de software eficaz y sigamos implementando prácticas de gestión y mejoras de procesos, podremos superar las dificultades en la producción de software. CMM es el estándar de proceso de producción de software más popular y práctico del mundo. Ha sido reconocido por muchos países y por la industria del software internacional y se ha convertido en un contenido indispensable para las empresas dedicadas a la producción de software a gran escala.
La versión CMM actualmente popular es la 1.1 (versión 1.1). Según el plan original del Instituto de Ingeniería de Software (SEI), la versión mejorada 2.0 (V2.0) de CMM se completará en junio de 1997 01. Sin embargo, la Oficina del Departamento de Defensa de EE.UU. pidió al Instituto de Ingeniería de Software (SEI) que retrasara el lanzamiento de CMM 2.0 hasta que completaran otro proyecto más urgente: CMMI.
CMMI (Capability Maturity Model Integration) es una idea del Departamento de Defensa de Estados Unidos. Querían integrar todos los modelos de madurez de capacidades existentes y futuros en un solo marco. Este marco se utiliza para resolver dos problemas: primero, la reforma de los métodos de adquisición de software; segundo, desde la perspectiva del desarrollo integrado de productos y procesos, establecer una mejora de procesos que incluya principios sólidos de desarrollo de sistemas.
CMM proporciona un marco para la mejora gradual de las capacidades de proceso de las empresas de software. CMM se basa en todos los resultados de la mejora de procesos de ingeniería de software anteriores y se basa en la experiencia de la ingeniería de software anterior para proporcionar un marco basado en la mejora de procesos. Señala qué tareas principales debe gestionar una organización de software en el desarrollo de software, la relación entre estas tareas y en qué orden, paso a paso, para que la organización de software pueda madurar.
1. El nacimiento de CMM
En la era de la información, la gente reconoce cada vez más la importancia de la calidad del software. El software es un producto, equipo y herramienta. Su calidad satisface a los clientes y es la clave para el desarrollo del mercado de productos y el desarrollo profesional. El campo de la ingeniería de software logró avances sin precedentes entre 1992 y 1997, con más logros que en los últimos 15 años combinados.
Desde mediados de la década de 1970, la ingeniería de gestión de software ha atraído una atención generalizada.
En ese momento, el Departamento de Defensa de EE. UU. estudió específicamente las razones de los proyectos de software deficientes y descubrió que el 70% de los proyectos fueron causados por una mala gestión en lugar de una capacidad técnica insuficiente. Luego concluyó que la gestión es el factor que afecta la investigación y desarrollo del software en general. proyecto, mientras que la tecnología sólo afecta a una parte del mismo. A mediados de la década de 1990, el problema de la mala ingeniería de gestión del software todavía existía, con sólo aproximadamente 65.438.000 proyectos entregados a tiempo y a tiempo. Las principales razones del fracaso de los proyectos de software son: definición poco clara de los requisitos; falta de un buen proceso de desarrollo de software; falta de gestión de subcontratación unificada; no siempre se presta atención a la mejora del proceso de software; definición poco clara y carente de controles adecuados; las actualizaciones de software exponen deficiencias de hardware; se preocupan por la innovación pero no por los costos y los riesgos; muy pocos estándares militares y son incompletos; Entre los muchos factores relacionados con el éxito de los proyectos de software, las métricas de software, la estimación del esfuerzo, la planificación de proyectos, el control del cronograma, los cambios de requisitos y la gestión de riesgos están todos directamente relacionados con la gestión de proyectos. Por tanto, la importancia de la ingeniería de gestión de software es muy importante.
En comparación con otras ingenierías de gestión, la ingeniería de gestión de software tiene sus propias particularidades. En primer lugar, el software es un producto de conocimiento. El progreso y la calidad son difíciles de medir, y la eficiencia de la producción es difícil de garantizar. En segundo lugar, la complejidad de los sistemas de software está más allá de la imaginación. Debido a que el software es complejo y difícil de medir, el desarrollo de la ingeniería de gestión de software es inmaduro.
El desarrollo de la ingeniería de gestión de software ha experimentado la era de la producción estructurada caracterizada por el análisis y el diseño estructurados, la revisión estructurada, la programación estructurada y las pruebas estructuradas desde la década de 1970, a mediados de la década de 1990, marcada por. Debido a la madurez y creciente aceptación del modelo CMM por parte del mercado, se ha entrado en una era centrada en los procesos marcada por el modelo de madurez de procesos CMM, el proceso de software individual PSP y el proceso de software grupal TSP. Sobre la base de la madurez de la tecnología de procesos de software y el desarrollo de la tecnología orientada a objetos y la tecnología de componentes a mediados de la década de 1990, ha surgido gradualmente la tercera era del desarrollo de software, es decir, la era de la producción industrial de software. Se espera que para 2005 se pueda lograr una verdadera producción industrial de software. Esta tendencia debería atraer gran atención por parte de la industria del software y los departamentos relevantes, y se deberían tomar medidas lo antes posible para mantenerse al día con el ritmo del desarrollo mundial del software. El cambio de la producción de software a centrarse en la mejora de los procesos de software es un camino que la industria mundial del software debe tomar tarde o temprano.
La mejora de los procesos de software es el tema central de la ingeniería de gestión de software actual. El desarrollo de la informática en los últimos 50 años ha hecho que la gente se dé cuenta de que para desarrollar software con alta eficiencia, alta calidad y bajo costo, se debe mejorar el proceso de producción de software. Desde la década de 1970 hasta mediados de la década de 1990, la ingeniería de gestión de software ha experimentado un proceso centrado en procesos, basado en análisis y diseño estructurados, revisión estructurada, programación estructurada y pruebas estructuradas, y basado en el modelo de madurez de proceso CMM, proceso de software individual PSP y El grupo de procesos de software TSP son los símbolos que conducen a la madurez de la tecnología de procesos de software y al desarrollo de la tecnología orientada a objetos y la tecnología de componentes. El cambio de la producción de software a centrarse en la mejora de los procesos de software es un camino que la industria mundial del software debe tomar tarde o temprano. La industria del software ha experimentado o está experimentando actualmente la "madurez del proceso de software" y está pasando gradualmente a la "industrialización del software". El proceso de software estandarizado es una condición necesaria para la industrialización del software.
El proceso de software estudia cómo organizar personas, tecnología y herramientas, mejorar la eficiencia de la producción de software a través de métodos de gestión eficaces y garantizar la calidad de los productos de software. De ahí nacieron tres grandes escuelas de procesos de software: CMM/PSP/TSP de CMU-SEI; el sistema de estándares de calidad ISO/IEC 15504 (SPICE).
CMM/PSP/TSP, es decir. , Modelo de madurez de capacidad de software/Proceso de software individual/Proceso de software grupal es el resultado de la investigación "Método de evaluación de capacidad de ingeniería de software del contratista" publicado en 1987 por un equipo de investigación encabezado por W.S Humphrey del Instituto de Ingeniería de Software de la Universidad Carnegie Mellon (CMU/SEI). 》. El sistema de estándares de calidad SO 9000 se adoptó por primera vez en Europa en la década de 1970 y posteriormente se desarrolló rápidamente en los Estados Unidos y otras partes del mundo.
En la actualidad, la Unión Europea promueve activamente la institucionalización de la calidad del software y ha propuesto las siguientes series de estándares de software ISO9000: ISO9001, ISO9000-3, ISO9004-2, ISO9004-4 e ISO9002 (SPICE) es un estándar internacional; La organización de estandarización siguió en 1991. La idea básica de CMU-SEI resultó en el informe técnico ISO/IEC 15504 - Evaluación de procesos de software de tecnología de la información.
En la actualidad, el modelo de madurez de capacidad de software CMM liderado por W.S Humphrey es reconocido por la academia y la industria como el mejor proceso de software en la actualidad y se ha convertido en el estándar de facto de la industria de procesos de software en la industria.
2. Desarrollo de CMM
De 65438 a 0987, el grupo de investigación encabezado por W.S. Humphrey publicó la tecnología CMM/PSP/TSP, abriendo un nuevo camino para la ingeniería de gestión de software.
El marco CMM utiliza cinco niveles evolutivos para evaluar la historia y la situación actual de la producción de software: la capa inicial es un proceso caótico, la capa repetible es un proceso de software entrenado y la capa de definición es un estándar y proceso de software consistente. La capa de gestión es un proceso de software predecible y la capa de optimización es un proceso de software que se puede mejorar continuamente. El proceso de software implementado por cualquier unidad puede ser maduro por un lado, o inmaduro por el otro, pero en general debe pertenecer a uno de estos cinco niveles. Y hasta cierto punto, hay diferencias en madurez. En marcos CMM de diferentes niveles, es necesario resolver problemas de procesos de software con diferentes niveles de características. Por lo tanto, una unidad de desarrollo de software primero necesita saber en qué nivel se encuentra y luego puede resolver los problemas relacionados de acuerdo con los requisitos especiales de este nivel, para obtener el doble de resultado con la mitad de esfuerzo. Cualquier unidad de desarrollo de software puede evolucionar de este nivel al siguiente sólo si está comprometida con la mejora del proceso de software. Además, en el proceso de evolución de un nivel maduro a uno más maduro, se deben mantener y llevar adelante aquellas habilidades que ya existen en el nivel original.
La calidad de un producto de software depende en gran medida de la calidad de los procesos de desarrollo y mantenimiento de software utilizados para construir el software. El proceso de software es una operación que requiere mucha gente y diseño: sin personal capacitado, será difícil establecer y respaldar el éxito del proceso de software, y será difícil que los esfuerzos de mejora sean efectivos. El marco descrito por CMM es un método para describir la evolución de un proceso caótico aleatorio a un proceso maduro bien entrenado.
CMM incluye dos partes: "Modelo de madurez de capacidad de software" y "Prácticas clave del modelo de madurez de capacidad". El "Modelo de madurez de la capacidad del software" describe principalmente la estructura del modelo y proporciona definiciones de sus componentes básicos. "Prácticas Clave para el Modelo de Madurez de Capacidades" detalla las "Prácticas Clave" involucradas en cada "Aspecto Clave del Proceso". Los "aspectos clave del proceso" aquí se refieren a un conjunto de actividades relacionadas; cada nivel de madurez de capacidad del software contiene varios aspectos del proceso que son críticos para el nivel de madurez, y su implementación juega un papel en el logro de los objetivos del nivel de madurez. Estas áreas de proceso se denominan áreas de proceso críticas para un nivel de madurez, mientras que la existencia de áreas de proceso no críticas significa que no desempeñan un papel crítico en el logro de los objetivos del correspondiente modelo de madurez de capacidad a nivel de software. Resumido como: una colección de prácticas de software interrelacionadas e infraestructura relacionada. Las "prácticas clave" se refieren a la infraestructura y actividades más importantes que pueden realizar e institucionalizar eficazmente procesos clave, así como al establecimiento de principios, procedimientos, medidas, actividades e infraestructura relacionada que desempeñan un papel clave en la práctica de procesos clave. Las prácticas clave generalmente sólo describen "qué hacer" y no especifican "cómo hacerlo". Cada proceso clave se evalúa en función de sus cinco "características * * * comunes" (compromiso de implementar el proceso, capacidad de implementar el proceso, actividades a implementar en el proceso, medición y análisis de la implementación del proceso, y confirmación de que las actividades implementadas son consistentes con el proceso). Las prácticas clave están categorizadas y descritas en detalle una por una. Se considera que un proceso clave se ha logrado cuando se han logrado todas sus prácticas clave, y se considera que se ha alcanzado un nivel de madurez cuando se han logrado todos los procesos clave que contiene en niveles inferiores.
Como se mencionó anteriormente, CMM divide la madurez de la capacidad de las organizaciones de desarrollo de software en cinco niveles. Excepto el Nivel 1, cada nivel consta de varios aspectos clave del proceso. Cada aspecto clave del proceso comparte las cinco características comunes descritas anteriormente. CMM ofrece algunos objetivos específicos para cada proceso clave. Las prácticas clave clasificadas según cada característica común se seleccionan e identifican en función de los objetivos específicos del proceso clave. Si todas las prácticas clave involucradas en un proceso clave se manejan adecuadamente, entonces se lograrán los objetivos del proceso clave, lo que significa que se ha logrado el proceso clave. La ventaja de esta clasificación de madurez es que los niveles reflejan claramente la prioridad y secuencia de las actividades de mejora de procesos.