Gestion de La Configuracion Del Software
Gestion de La Configuracion Del Software
Gestion de La Configuracion Del Software
de Software
El Proceso de Gestión de
Configuración de Software.
• Nivel 2: Básico
• Se logra el control inmediato de los aspectos más críticos de un
proyecto de desarrollo de software y se construye un
fundamento para un posterior plan de SCM.
Proceso de Madurez de SCM
• Nivel 3: Definido
• En este nivel se establece un plan y un proceso definido de
SCM. Existe un grupo responsable por las actividades de los
procesos de SCM.
• Prácticas:
• Existencia de un proceso definido para implementar las actividades
de los procesos de SCM.
• Existencia de un plan de SCM.
• Existencia de un grupo de SCM.
• Desarrollo, mantenimiento y distribución de planes de SCM,
estándares y procedimientos.
• Herramientas para soportar las actividades de SCM están
disponibles.
• Entrenamiento al grupo de Ingeniería en el uso de las herramientas.
Proceso de Madurez de SCM
• Nivel 4: Controlado
• Establece metas cuantitativas de actividades de SCM.
• Fundamento para la evaluación de los componentes de SCM.
• Número de requerimientos de cambio procesados.
• Completación de actividades SCM según plan.
• Relación esfuerzo desplegado, fondos gastados y trabajo
completado.
• Se establece una base de datos para el proceso SCM.
• Prácticas:
• Definición y análisis de mediciones sobre SCM. Calidad,
productividad, riesgo y complejidad de las actividades.
• Verificación de la implementación. Análisis de los criterios de
éxito.
• Evaluación de las actividades de SCM. Verificación de su utilidad,
según la percepción personal y de grupo.
Repositorios SCM
• Balancear:
• control apropiado
• servicio flexible a los programadores
• Flexibilidad a través de:
• copias de trabajo a los programadores
• pueden experimentar soluciones, variantes
• Control:
• no pueden incorporar esos cambios sin prueba de regresión de
lo que ya existe
• cada cambio propuesto se debe probar contra una versión de
prueba de la nueva línea base garantizar que no invalidan a
los otros
• Solución:
• bloqueo y
• test de regresión
Registros de Gest. Configuración
• Procedimientos
• cada propuesta de cambio documentada y
autorizada antes de hacerse
• al realizarse los cambios se registra lo hecho
• una Orden de Cambio puede involucrar múltiples ítems de
configuración (fuentes, objetos, documentación)
• identificar las pruebas realizadas, para que se puedan
repetir
• cada programador que trabaja en cambios para
nueva versión de línea base debe mantener:
• lista actual de todas las funciones, características, arreglos
e interfaces de sus programas a ser integrados
• necesario para informar a otros afectados, en particular
test, documentación e integración
Responsabilidades Gestión Configuración
• Responsabilidades:
• desarrolla, documenta y distribuye procedimientos de Gestión
de Configuración
• Establece la línea base del sistema, incluyendo provisiones
para respaldo
• Asegurar que
• no se realizan cambios no autorizados a la línea base
• todos los cambios a la línea base se registran con detalle
suficiente como para reproducirlos o volverlos atrás
• todos los cambios a la línea base pasaron test de regresión
• Proporcionar información para resolución de problemas
• Permite responder a preguntas:
• qué código es este, qué cambió, qué pruebas se corrieron,
cuáles fueron los resultados de las pruebas, dónde está el
código
• “esta responsabilidad debe recaer en alguien, inclusive
para proyectos de dos personas”
Propietario de módulo
• Responsabilidades:
• conocer y entender el diseño del módulo
• asistir a quien trabaja con o tiene interfaces con el
módulo
• experto de referencia para toda modificación del
módulo, incluyendo mejora y reparación
• asegurar la integridad del módulo revisando todos
los cambios y llevando a cabo pruebas de regresión
• Problemas:
• Depende de las habilidades y disponibilidad de las
personas
• se puede establecer un sistema de respaldos
• Proporciona control del diseño a nivel de detalle
Comité de Control de Cambios
Responsabilidades:
• revisar cada solicitud de cambio para
aprobarla/rechazarla/diferirla
• disponer condiciones de liberación del cambio
• pruebas y revisiones especiales
Necesidades de información:
• estimación del tamaño del cambio
• alternativas – consideradas, criterio para elección-
• complejidad – uno o múltiples componentes-
• calendario –fechas requeridas/planificadas-
• impacto –consecuencias futuras del cambio-
• costo – costos y ahorros potenciales –
• severidad – cuán crítico es el cambio
• relación con otros cambios –sustituye a otros o depende de
otros
• test – requerimientos especiales –
• Recursos – personas necesarias disponibles?
• Impacto en el sistema – recursos de Hw –
• Beneficios
• Cuestiones políticas – quien pidió, a quienes afecta
• Madurez del cambio – hace cuánto tiempo se evalúa -
•
Comité de Control de Cambios
• Visión general
• objetivos de la GCS (gestión de configuración del software)
• visión general del sistema
• Organización de la GCS
• responsabilidades
• Comité de Control de Cambios – miembros y
responsabilidades
• Relación con QA
• Métodos de GCS
• Líneas base y contenidos
• Sistema de identificación
• Sistema de control
• Auditoría
• Evaluación del estado
• Herramientas de soporte
Plan de gestión de configuración
• Procedimientos
• Manual de procedimientos
• Formularios y registros
• Implementación
• Plan de personal
• Plan de soporte
• Recursos
• Puntos clave de la implementación
Cuestiones en el ciclo de vida
• Requerimientos
• Dónde está la versión oficial de los requerimientos
• Qué cambios se hicieron
• Fueron aprobados?
• Cuántos cambios hubo y qué impacto tuvieron sobre diseño y
desarrollo
• Cuántos cambios se hicieron sin cambiar el alcance del
contrato
• Diseño
• Dónde está satisfecho en el diseño este requerimiento
particular
• Cuál es el requerimiento particular que este diseño satisface
• cuál es la versión actual aprobada para esta interfaz
• El formato de este ítem de datos fue especificado dónde, por
quién, y quién lo usa
• cuál es el impacto de diseño de este cambio en los
requerimientos
Cuestiones en el ciclo de vida
• Implementación
• cuál es la lógica de diseño para ese elemento de código
particular
• cómo se afecta el diseño por este cambio en el código
• cuál es el impacto en la implementación de este cambio en los
requerimientos
• qué versión del compilador se usó para generar este código
• Pruebas
• Dónde están las pruebas para verificar este requerimiento
• dónde están los datos de prueba para estos tests
• dónde está la documentación que explica los resultados
esperados de estas pruebas
• este conjunto de pruebas fue actualizado para contemplar los
cambios de la nueva versión
Auditorías
• Llevada a cabo:
• por alguien independiente y calificado
• de forma periódica para asegurar la integridad de
las líneas base
• cambios a la línea base se implementaron de la
forma prevista
• un plan documentado de GCS es la base para la
auditoría
Problema
• Sistemas:
• ERP: sistema hecho en casa, web, sobre sistema
operativo linux, con un motor de base de datos
Oracle.
• CRM: sistema hecho en casa, cliente/servidor, sobre
sop windows, base de datos SQL Server.
• HCM: sistema hecho en casa, web, sop linux, base
de datos MySql.
• Planeación y presupuesto, hojas de excel, en file
server, sop windows.
La integración continua es un proceso que permite comprobar
continuamente que todos los cambios que lleva cada uno de los
desarrolladores no producen problemas de integración con el
código del resto del equipo.
• Pruebas Unitarias
• Pruebas de Rendimiento
• Pruebas de Integración con sistemas externos
• Pruebas de Diseño (Accesibilidad)
• Pruebas Funcionales
Pero aún siendo la mejora de la eficiencia una excelente razón para decidir
comenzar a automatizar los procesos de nuestro desarrollo hay otra razón que
muchas veces queda oculta y que es en mi opinión mucho más importante: la
capacidad de poder repetir los procesos de una manera exacta. El desarrollo de
software es una disciplina con un alto grado de incertidumbre. Al gran número
de variables que afectan a un desarrollo (Sistemas Operativos, Base de Datos,
Integración con sistemas externos, Servidores de aplicaciones) en muchas
ocasiones añadimos nosotros todavía más incertidumbre al introducir procesos
manuales al proceso de construcción del software.
La integración continua impone un desarrollo en equipo más
disciplinado. En muchos proyectos no se es consciente de que se
trabaja en equipo hasta que llega el momento de la integración
final.