Beruflich Dokumente
Kultur Dokumente
INTRODUCCION
La gestión de la configuración del software es uno de los procesos clave para toda
organización dedicada a la Ingeniería del Software, ya que posibilita una mejor
organización del desarrollo y mantenimiento, producto, facilitando el resto de procesos de
producción.
Los cambios dentro del desarrollo del software pueden ocurrir en cualquier momento por lo
tanto debemos estar preparados, las actividades de CGS sirven para:
La primera Ley de la ingeniería de sistemas establece: “Sin importar en que momento del
ciclo de vida del sistema nos encontremos, el sistema cambiará y el deseo de cambiarlo
persistirá a lo largo de todo el ciclo de vida”.
Entonces nos hacemos diferentes preguntas: ¿Por qué cambiar el sistema? ¿Que produce los
en el sistema cambios? La respuesta a estas interrogantes se puede encontrar en cuatro
aspectos fundamentales y a menudo muy tradicionales dentro del desarrollo del software:
• Nuevos requisitos del negocio o condiciones que dictan los cambios en las
condiciones del producto o en las normas comerciales.
• Nuevas necesidades del los clientes que demandan la modificación de los datos
producidos por un sistema basado en computadora.
• Reorganización y/o reducción del volumen comercial que provoca cambios en las
prioridades del proyecto o en la estructura del equipo de ingeniería del software.
• Restricciones presupuestarias o de planificaciones que provocan una redefinición
del sistema o del producto.
La GCS es una actividad de garantía de calidad del software que se aplica en todas las fases
del proceso de ingeniería del software.
Una línea base es un concepto de gestión de configuración del software que nos ayuda a
controlar los cambios sin impedir seriamente los cambios justificados. La IEEE define una
línea base como:
Una forma de describir la línea base es mediante una analogía. Considere las puertas de la
cocina de un gran restaurante. Para evitar colisiones una puerta esta marcada como
SALIDA y la otra como ENTRADA las puertas tienen topes que hacen que solo se puedan
abrir en la dirección apropiada. Si un camarero recoge un pedido en la cocina lo coloca en
una bandeja y luego se da cuenta de que ha cogido un plato equivocado, puede cambiar el
plato correcto rápidamente informalmente antes de salir de la cocina.
Una línea base es análoga a un plato mientras pasa por las puertas de la cocina de un
restaurante antes de que un elemento de configuración del software se convierta en línea
base, el cambio se puede llevar a cabo rápida e informalmente. Sin embargo, una vez que se
establece una línea base, pasamos, de forma figurada, por una puerta de un solo sentido. Sé
pueden llevar a cabo los cambios, pero se debe aplicar un procedimiento formal para
evaluar y verificar cada cambio.
En el contexto de la ingeniería del software definimos una línea base como un punto de
referencia en el desarrollo del software y que queda marcado por el envío de uno o más
elementos de configuración del software (ECS) y la aprobación de ECS obtenido mediante
una revisión técnica formal. Por ejemplo, los elementos de una especificación de diseño se
documentan y se revisan. Se encuentran errores y se corrigen cuando todas las partes de las
especificaciones se han revisado corregido y aprobado, la especificación de diseño se
convierte en línea base. Solo se pueden realizar cambios futuros en la arquitectura del
software (contenidos en la especificación del diseño) tras haber sido evaluados y
aprobados. Aunque se puedan definir las líneas base con cualquier nivel de detalle las
líneas base más comunes son las que se muestran en la figura 1.0.
2) Plan de proyecto
3) a. Especificación de requisitos
5) Especificación de diseños
9) Programas ejecutables
b. Módulos enlazados
b. contenido inicial
b. Peticiones de mantenimiento
Los ECS se organizan como objetos de configuración que deben ser catalogados por la base
de datos del proyecto con un nombre único. Un ECS tiene un nombre y atributos, y está
conectado a otros objetos mediante relaciones.
• Identificación
• Control de versiones
• Control de cambios
• Auditorias de configuración
• Generación de informes
Se pueden identificar dos tipos de objetos los objetos básicos y los objetos compuestos.
Un objeto básico es una unidad de texto creada durante el análisis, diseño, codificación o
prueba. Un objeto compuesto es una colección de objetos básicos u objetos compuestos.
Cada objeto tiene un conjunto de características que los identifican como únicos. El nombre
del objeto es una cadena de caracteres que identifica al objeto sin ambigüedad. La
descripción del objeto es una lista de elementos de datos que identifican:
• El tipo de ECS (documento, programa, datos) que está representado por el objeto.
• Un identificador del proyecto; y la información de la versión y/o el cambio.
El esquema de identificación de los objetos de software debe tener en cuenta que los
objetos evolucionan a lo largo del proceso de ingeniería, por lo que se puede crear un grafo
de evolución.
En el grafo de evolución se describe la historia del objeto y sus cambios, las grandes
modificaciones hacen que un objeto cambie, por lo que cambia el número de versión
principal.
4. CONTROL DE VERSIONES
Los atributos pueden ser tan sencillos como un número específico de versión asociado a
cada objeto o tan complejos como una cadena de variables lógicas que especifiquen tipos
de cambios funcionales aplicados al sistema.
5. CONTROL DE CAMBIOS
Los procedimientos de “alta” y “baja” implementan dos elementos importantes del control
de cambios: control de acceso y control de sincronización. El control de acceso gobierna
los derechos de los ingenieros de software a acceder y modificar objetos de configuración
concretos. El control de sincronización asegura que los cambios en paralelo, realizados por
personas diferentes, no se sobrescriben mutuamente.
Antes de que un ECS se convierta en una línea base, sólo es necesario aplicar un control de
cambios informal. El que haya desarrollado el ECS en cuestión podrá hacer cualquier
cambio justificado por el proyecto y por los requisitos técnicos. Una vez que el objeto ha
pasado la revisión técnica formal y ha sido aprobada, se crea la línea base.
Una vez que el ECS se convierte en una línea base, aparece el control de cambios a nivel de
proyecto. Para hacer un cambio, el encargado del desarrollo debe recibir la aprobación del
gestor del proyecto (si el cambio es local), o de la ACC si el cambio impacta en otros ECS.
En algunos casos, se dispensa de generar formalmente las peticiones de cambio, los
informes de cambio y las OCI. Sin embargo, hay que hacer una evaluación de cada cambio
así como un seguimiento y revisión de los mismos.
6. AUDITORIA DE LA CONFIGURACION
¿Cómo podemos asegurar que el cambio se ha implementado correctamente? La respuesta
es doble: 1) revisiones técnicas formales y 2) auditorias de configuración del software.
7. GENERACION DE INFORMES
• 1) ¿Qué pasó?
• 2) ¿Quién lo hizo?
• 3) ¿Cuándo pasó?
• 4) ¿Que más se vio afectado?
CONCEPTO DE CALIDAD
La calidad se refiere a las características mensurables -cosas que se pueden comparar con
estándares conocidos como longitud, color, propiedades eléctricas, maleabilidad, etc.-. Sin
embargo, el software en su gran extensión, como entidad intelectual, es más difícil de
caracterizar que los objetos físicos. Cuando se examina un elemento según sus
características mensurables, se pueden encontrar dos tipos de calidad: calidad del diseño y
calidad de concordancia.
Garantía de la calidad
La garantía de calidad consiste en la auditoría y las funciones de información de la gestión.
El objetivo de la garantía de calidad es proporcionar la gestión para informar de los datos
necesarios sobre la calidad del producto, por lo que se va adquiriendo una visión más
profunda y segura de que la calidad del producto está cumpliendo sus objetivos. Por
supuesto, si los datos proporcionados mediante la garantía de calidad identifican problemas,
es responsabilidad de la gestión afrontar los problemas y aplicar los recursos necesarios
para resolver aspectos de calidad.
Entre los costes de evaluación se incluyen actividades para tener una visión más profunda
de la condición del producto «la primera vez a través de» cada proceso. A continuación se
incluyen algunos ejemplos de costes de evaluación:
Los costes de fallos son los costes que desaparecerían si no surgieran defectos antes del
envío de un producto a los clientes. Estos costes se pueden subdividir en costes de fallos
internos y costes de fallos externos.
Los costos de fallos internos se producen cuando se detecta un error en el producto antes
de su envío. Entre estos se incluyen:
• retrabajo (revisión).
• reparación.
• análisis de las modalidades de fallos.
Los costes de fallos externos son los que se asocian a los defectos encontrados una vez
enviado el producto al cliente. A continuación se incluyen algunos ejemplos de costes de
fallos externos:
• resolución de quejas.
• devolución y sustitución de productos.
• soporte de línea de ayuda.
• trabajo de garantía.
Actividades de SQA
La garantía de calidad del software comprende una gran variedad de tareas, asociadas con
dos constitutivos diferentes -los ingenieros de software que realizan trabajo técnico y un
grupo de SQA que tiene la responsabilidad de la Planificación de garantía de calidad,
supervisión, mantenimiento de registros, análisis e informes-. Los ingenieros de software
afrontan la calidad (y realizan garantía de calidad) aplicando métodos técnicos sólidos y
medidas, realizando revisiones técnicas formales y llevando a cabo pruebas de software
bien planificadas. Éstas son las actividades que realizan (o facilitan) un grupo
independiente de SQA:
• evaluaciones a realizar.
• auditorías y revisiones a realizar.
• estándares que se pueden aplicar al proyecto.
• procedimientos para información y seguimiento de errores.
• documentos producidos por el grupo SQA.
• realimentación de información proporcionada al equipo de proyecto del software.
Auditoría de los productos de software designados para verificar el ajuste con los
definidos como parte del proceso del software. El grupo de SQA revisa los productos
seleccionados; identifica, documenta y sigue la pista de las desviaciones; verifica que se
han hecho las correcciones, e informa periódicamente de los resultados de su trabajo al
gestor del proyecto.
Asegurar que las desviaciones del trabajo y los productos del software se documentan
y se manejan de acuerdo con un procedimiento establecido. Las desviaciones se pueden
encontrar en el plan del proyecto, en la descripción del proceso, en los estándares aplicables
o en los productos técnicos.
3. Mediante el principio de Pareto (el 80 por 100 de los defectos se pueden encontrar en el
20 por 100 de todas las posibles causas), se aísla el 20 por 100 (los «POCOS vitales»).
4. Una vez que se han identificado los defectos vitales, se actúa para corregir los problemas
que han producido los defectos.
La seguridad del software es una actividad de garantía de calidad del software que se
centra en la identificación y evaluación de los riesgos potenciales que pueden producir un
impacto negativo en el software y hacer que falle el sistema completo. Si se pueden
identificar pronto los riesgos en el proceso de ingeniería del software podrán especificarse
las características del diseño del software que permitan eliminar o controlar los riesgos
potenciales.
El IEEE ha recomendado un estándar para los planes de SQA. Las secciones iníciales
describen el propósito y el alcance del documento e indican aquellas actividades del
proceso del software cubiertas por la garantía de calidad. Se listan todos los documentos
señalados en el plan de SQA y se destacan todos los estándares aplicables. La sección de
Gestión del plan describe la situación de la SQA dentro de la estructura organizativa; las
tareas y las actividades de SQA y su emplazamiento a lo largo del proceso del software; así
como los papeles y responsabilidades organizativas relativas a la calidad del producto.
La sección Revisiones y Auditorías del plan identifica las revisiones y auditorías que se
van a llevar a cabo por el equipo de ingeniería del software, el grupo de SQA y el cliente.
Proporciona una visión general del enfoque de cada revisión y auditoría.
El resto del plan de SQA identifica las herramientas y métodos que soportan actividades y
tareas de SQA; hace referencia a los procedimientos de gestión de configuración del
software para controlar el cambio; define un enfoque de gestión de contratos; establece
métodos para reunir, salvaguardar y mantener todos los registros; identifica la formación
que se requiere para cumplir las necesidades del plan y define métodos para identificar,
evaluar, supervisar y controlar riesgos.
Los riesgos del proyecto amenazan al plan del proyecto; es decir, si los riesgos del
proyecto se hacen realidad, es probable que la planificación temporal del proyecto se
retrase y que los costes aumenten. Los riesgos del proyecto identifican los problemas
potenciales de presupuesto, planificación temporal, personal (asignación y organización),
recursos, cliente y requisitos y su impacto en un proyecto de software.
Los riesgos técnicos amenazan la calidad y la planificación temporal del software que hay
que producir. Si un riesgo técnico se convierte en realidad, la implementación puede llegar
a ser difícil o imposible. Los riesgos técnicos identifican problemas potenciales de diseño,
implementación, de interfaz, verificación y de mantenimiento. Además, las ambigüedades
de especificaciones, incertidumbre técnica, técnicas anticuadas y las «tecnologías punta»
son también factores de riesgo.
Los riesgos técnicos ocurren porque el problema es más difícil de resolver de lo que
pensábamos.
Los riesgos del negocio amenazan la viabilidad del software a construir.
Los riesgos del negocio a menudo ponen en peligro el proyecto o el producto. Los
candidatos para los cinco principales riesgos del negocio son:
(1) construir un producto o sistema excelente que no quiere nadie en realidad (riesgo de
mercado)
(2) construir un producto que no encaja en la estrategia comercial general de la compañía
(riesgo estratégico)
(3) construir un producto que el departamento de ventas no sabe cómo vender;
(4) perder el apoyo de una gestión experta debido a cambios de enfoque o a cambios de
personal (riesgo de dirección);
(5) perder presupuesto o personal asignado (riesgos de presupuesto). Es extremadamente
importante recalcar que no siempre funciona una categorización tan sencilla. Algunos
riesgos son simplemente imposibles de predecir.
Otra categorización general de los riesgos ha sido pre puesta por Charette.
Los riesgos conocidos son todos aquellos que se pueden descubrir después de una
cuidadosa evaluación del plan del proyecto, del entorno técnico y comercial en el que se
desarrolla el proyecto y otras fuentes de información fiables (por ejemplo: fechas de
entrega poco realistas, falta de especificación de requisitos o de ámbito del software, o un
entorno pobre de desarrollo).
Los riesgos impredecibles son el comodín de la baraja. Pueden ocurrir, pero son
extremadamente difíciles de identificar por adelantado.
Es un intento sistemático para especificar las amenazas al plan del proyecto (estimaciones,
planificación temporal, carga de recursos, etc.). Identificando los riesgos conocidos y
predecibles,
el gestor del proyecto da un paso adelante para evitarlos cuando sea posible y controlarlos
cuando sea necesario.
Existen dos tipos diferenciados de riesgos para cada categoría: riesgos genéricos y riesgos
específicos del producto.
Los riesgos genéricos son una amenaza potencial para todos los proyectos de software.
Los riesgos específicos de producto sólo los pueden identificar los que tienen una clara
visión de la tecnología, el personal y el entorno específico del proyecto en cuestión. Para
identificar los riesgos específicos del producto, se examinan el plan del proyecto y la
declaración del ámbito del software y se desarrolla una respuesta a la siguiente pregunta:
«¿Qué características especiales de este producto pueden estar amenazadas por nuestro plan
del proyecto?» Un método para identificar riesgos es crear una lista de comprobación de
elementos de riesgo.
La lista de comprobación se puede utilizar para identificar riesgos y se centra en un
subconjunto de riesgos conocidos y predecibles en las siguientes sub-categorías genéricas:
Tamaño del producto: riesgos asociados con el tamaño general del software a construir o
a modificar.
Impacto en el negocio: riesgos asociados con las limitaciones impuestas por la gestión o
por el mercado.
Características del cliente: riesgos asociados con la sofisticación del cliente y la habilidad
del desarrollador para comunicarse con el cliente en los momentos oportunos.
Definición del proceso: riesgos asociados con el grado de definición del proceso del
software y su
Seguimiento por la organización de desarrollo.
Las siguientes preguntas provienen de los datos del riesgo obtenidos mediante las encuestas
realizadas a gestores de proyectos de software expertos de diferentes partes del mundo. Las
preguntas están ordenadas por su importancia relativa para el éxito de un proyecto.
1. ¿Se han entregado los gestores del software y clientes formalmente para dar soporte al
proyecto?
4. ¿Han estado los clientes involucrados por completo en la definición de los requisitos?
10. ¿Es adecuado el número de personas del equipo del proyecto para realizar el trabajo?
11. ¿Están de acuerdo todos los clientes/usuarios en la importancia del proyecto y en los
requisitos del sistema/producto a construir?
También denominada estimación del riesgo, intenta medir cada riesgo de dos maneras -la
probabilidad de que el riesgo sea real y las consecuencias de los problemas asociados con el
riesgo, si ocurriera-. El jefe del proyecto, junto con otros gestores y personal técnico,
realiza cuatro actividades de una de riesgo de proyección del riesgo:
(1) establecer una escala que refleje la probabilidad percibida del riesgo.
(2) definir las consecuencias del riesgo.
(3) estimar el impacto del riesgo en el proyecto y en el producto.
(4) apuntar la exactitud general de la proyección del riesgo de manera que no haya
confusiones.
Durante las primeras etapas de la planificación del proyecto, un riesgo puede ser declarado
de un modo muy general. Con el paso del tiempo y con el aprendizaje sobre el proyecto y
sobre el riesgo, es posible refinar el riesgo en un conjunto de riesgos más detallados, cada
uno algo más fácil de reducir, supervisar y gestionar.
Todas las actividades de análisis de riesgo presentadas hasta ahora tienen un solo objetivo
-ayudar al equipo del proyecto a desarrollar una estrategia para tratar los riesgos-. Una
estrategia eficaz debe considerar tres aspectos:
• Evitar el riesgo
• Supervisar el riesgo, y
• Gestionar el riesgo y planes de contingencia.
Para reducir el riesgo, la gestión del proyecto debe desarrollar una estrategia para reducir la
movilidad. Entre los pasos que se pueden tomar:
• Actuar para reducir esas causas que estén al alcance de nuestro control antes de que
comience el proyecto.
• Una vez que comienza el proyecto, asumir que habrá movilidad y desarrollar
técnicas que aseguren la continuidad cuando se vaya la gente.
• Organizar los equipos del proyecto de manera que la información sobre cada
actividad de desarrollo esté ampliamente dispersa.
A medida que progresa el proyecto, comienzan las actividades de supervisión del riesgo. El
jefe del proyecto supervisa factores que pueden proporcionar una indicación sobre si el
riesgo se está haciendo más o menos probable. En el caso de gran movilidad del personal,se
pueden supervisar los siguientes factores:
• Actitud general de los miembros del equipo basándose en las presiones del
proyecto;
• Grado de compenetración del equipo;
• Relaciones interpersonales entre los miembros del equipo;
• Problemas potenciales con compensaciones y beneficios;
• Disponibilidad de empleo dentro y fuera de la compañía.
La seguridad del software y el análisis del peligro son actividades para garantizar la calidad
del software (Capítulo 8) que se centra en la identificación y evaluación de peligros
potenciales que pueden impactar al software negativamente y provocar que falle el sistema
entero. Si se pueden identificar los peligros al principio del proceso de ingeniería del
software, se pueden especificar características de diseño software que eliminen o controlen
esos peligros potenciales.
EL PLAN RSGR
Se puede incluir una estrategia de gestión de riesgo en el plan del proyecto de software o se
podrían organizar los pasos de gestión del riesgo en un Plan diferente de reducción,
supervisión y gestión del riesgo (Plan RSGR). Todos los documentos del plan RSGR se
llevan a cabo como parte del análisis de riesgo y son empleados por el jefe del proyecto
como parte del Plan del Proyecto general. Algunos equipos de software no desarrollan un
documento RSGR formal. Más bien, cada riesgo se documenta utilizando una hoja de
información de riesgo.
La reducción del riesgo es una actividad para evitar problemas. La supervisión del riesgo es
una actividad de seguimiento del proyecto con tres objetivos principales:
(1) conociendo la función específica para la que fue diseñado el producto, se pueden llevar
a cabo pruebas que demuestren que cada función es completamente operativa y, al mismo,
tiempo buscando errores en cada función;
(2) conociendo el funcionamiento del producto, se pueden desarrollar pruebas que aseguren
que «todas las piezas encajan», o sea, que la operación interna se ajusta a las
especificaciones y que todos los componentes internos se han comprobado de forma
adecuada.
El primer enfoque de prueba se denomina prueba de caja negra y el segundo, prueba de
caja blanca.
La prueba de caja negra se refiere a las pruebas que se llevan a cabo sobre la interfaz del
software. O sea, los casos de prueba pretenden demostrar que las funciones del software
son operativas, que la entrada se acepta de forma adecuada y que se produce un resultado
correcto, así como que la integridad de la información externa (por ejemplo, archivos de
datos) se mantiene. Una prueba de caja negra examina algunos aspectos del modelo
fundamental del sistema sin tener mucho en cuenta la estructura lógica interna del software.
La prueba de caja blanca del software se basa en el minucioso examen de los detalles
procedimentales. Se comprueban los caminos lógicos del software proponiendo casos de
prueba que ejerciten conjuntos específicos de condiciones y/o bucles. Se puede examinar el
«estado del programa» en varios puntos para determinar si el estado real coincide con el
esperado o mencionado.