Innovación incremental: Soluciones Reales. Fidel Rodríguez Batalla
INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... //...
Transcript of INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... //...
![Page 1: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/1.jpg)
INGENIERÍA DE SOFTWAREADMINISTRACION DE CONFIGURACIONES
Rubby Casallas, Juan Pablo Quiroga, Andrés Yie
Departamento de Sistemas y Computación
Facultad de Ingeniería
Universidad de los Andes
![Page 2: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/2.jpg)
Agenda
La constante: “el cambio”
Problema
Solución: Administración de Configuraciones
Herramientas
2
![Page 3: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/3.jpg)
La constante: “el cambio”
El cambio se encuentra presente en todo el ciclo de
vida de una aplicación.
En el desarrollo
El desarrollo de software siempre es incremental
El desarrollo iterativo consiste de en una evolución
controlada
En el mantenimiento
Corrección, adaptación, extensión, etc.
![Page 4: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/4.jpg)
El problema: “el cambio”
![Page 5: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/5.jpg)
El problema: “el cambio”
![Page 6: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/6.jpg)
El problema: “el cambio”
![Page 7: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/7.jpg)
![Page 8: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/8.jpg)
El problema: “el cambio”
![Page 9: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/9.jpg)
El problema: “el cambio”
![Page 10: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/10.jpg)
El problema
Archivos perdidos: “se que lo escribí, pero no se dónde lo puse ...”
Referencias perdidas: “solía funcionar, pero usa librerías que ya no están ...”
Sobrescribir el código de otro: desarrolladores que hacen distintos cambios en el mismo código sobrescribiendo su trabajo mutuamente
No hay botón deshacer: los nuevos cambios son peores, pero no se puede volver atrás ...
¿Qué versión tiene el cliente? ¿A cuál corresponde el error?
![Page 11: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/11.jpg)
El problema
La versión actual del código se sobrescribe por una
anterior
Una actualización crítica se descarta de la versión
final
Se hacen cambios a una versión incorrecta del
código
Reaparecen errores ya corregidos
No se logra determinar qué versiones de archivos
van en una entrega
![Page 12: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/12.jpg)
El problema
Los builds no son reproducibles
Muchas posibilidades de error cuando se
mantienen múltiples versiones
No hay historia de los cambios
Los jefes de proyecto no pueden medir el avance
Comunicación deficiente del equipo
![Page 13: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/13.jpg)
El problema
![Page 14: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/14.jpg)
La solución
![Page 15: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/15.jpg)
Administración de Configuraciones
SCM – Software Configuration Management
“Es el conjunto total de actividades utilizadas para
administrar el contenido de un producto de
software desde el principio hasta el final del
proceso de desarrollo.”
Humphrey
“Es la disciplina de administrar y controlar los cambios
en la evolución de los sistemas de software”
Bruegge, Dutoit
![Page 16: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/16.jpg)
Propósito de SCM
Asegurar que el contenido del producto es
conocido y se encuentra disponible siempre
Apoyar el control de cambios
Ayudar a la coordinación entre el equipo
Tener un repositorio (depósito) único para los
entregables
Tener una base histórica con los cambios del
producto durante el tiempo
![Page 17: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/17.jpg)
Conceptos17
Depósito
Biblioteca de lanzamientos, promociones
Tres depósitos
Desarrollo
El avance diario
Maestro (promociones)
Están en proceso de verificación de calidad
Es liberado a otros equipos de desarrollo
Software (lanzamientos)
Cumplen con los estándares de calidad dispuestos
![Page 18: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/18.jpg)
Conceptos18
Espacio de trabajo
Es el sitio donde se encuentran los archivos
correspondientes a los artefactos
Promociones o lanzamientos
Cada desarrollador tiene su propio espacio
![Page 19: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/19.jpg)
Conceptos
Ítems de configuración:
Cualquier artefacto del proceso. Este debe ser controlado y nombrado de forma única.
La lista aprobada de los ítems de configuración
Los requerimientos
El diseño
Los fuentes
El material de pruebas
Agregados de artefactos (objetos de configuración)
Conjunto de artefactos que forman un producto completo
Código fuente
![Page 20: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/20.jpg)
Conceptos
Versiones
Identifica el estado de un artefacto de configuración en un
contexto
Debe existir una forma de nombrarlo
Revisión
Un artefacto en un instante dado
Configuración
Una 'configuración' es una combinación de versiones
particulares de los componentes que forman un sistema
consistente
![Page 21: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/21.jpg)
Conceptos
Etiquetas
Entre las partes que se tiene control hay agrupaciones
lógicas, que representan el programa completo
Se hace a través del etiquetamiento de archivos
(tagging)
Una etiqueta (tag) es un único nombre dado a una
revisión de un archivo
No existen dos tags iguales
21
![Page 22: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/22.jpg)
Conceptos
Estándar de numeración de versiones
Ej. 2.3.1
2 Versión Mayor - Lanzamiento
3 Lanzamiento menor con corrección de errores
1 Rama para el cliente X
Estándar de numeración de versiones
<version> :: <mayor>.<menor>.<revisión>
<mayor> :: <entero positivo>
<menor> :: <entero positivo>
<revisión> :: <entero positivo>
Se deben indicar políticas para saber cómo un artefacto pasa de una versión a otra
![Page 23: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/23.jpg)
Conceptos
Línea base Una configuración operativa del sistema software que ha
sido validada por la dirección o el cliente La evolución del sistema puede verse como evolución de la
línea base Solo es modificado debido a una solicitud de cambio
Rama (branch)
Se parte de un baseline para corregir errores
En un momento se puede unir con la línea principal del producto
Variantes Versiones operativas que coexisten en el tiempo. Comparten gran parte del código pero difieren en algunas
funcionalidades
![Page 24: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/24.jpg)
Conceptos
Build
Cada vez que se compila se controla la forma en que se
produjo
Promoción (release interno)
Configuración que se ha puesto a disposición de los demás
desarrolladores del proyecto
Lanzamiento (release externo)
Configuración que se ha puesto a disposición de los clientes
o usuarios
Un lanzamiento tiene que tener una promoción asociada
![Page 25: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/25.jpg)
Conceptos
Solicitud de cambio:
Reporte formal que inicia el proceso de cambio
Realizado por un usuario o desarrollador
No todos los cambios de un cliente deben ser
realizados
Cuestiones administrativas
Costos
Tiempo de desarrollo
![Page 26: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/26.jpg)
Conceptos
Solicitud de cambio:
Se especifica
El(Los) artículo(s) de configuración afectados
La petición
La versión
El problema que necesita resolverse
La solución
Evaluación de factibilidad ( costo/beneficio)
Aprobación
Se debe hacer seguimiento
![Page 27: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/27.jpg)
Ejemplo para código fuente27
// *************************************************************************
// Universidad de los Andes
// Departamento de Ingenieria de Sistemas y Computacion
//
// Proyecto : Administrador de Notas
// Archivo : AdministradorNotas.cc
// Descripcion : Implementacion Clase Administrador de Notas
// Fachada para el administrador de notas
// Version : 1.1
// Fecha : 2 Noviembre 2000
// Author : Juan Pablo Quiroga
// --------------------------------------------------------------------------
// Informacion de mantenimiento y cambios
// --------------------------------------------------------------------------
// Creacion Encabezado
// Descripcion : Version inicial
// Fecha : 14 01 2000
// Autor : Juan Pablo Quiroga
// Tiempo Desarrollo: 30 minutos
// LOC : 140
// --------------------------------------------------------------------------
![Page 28: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/28.jpg)
Ejemplo para código fuente28
// Cambio Numero 1
// Descripcion : Cambiar encabezado del archivo y estandar documentacion
// Fecha : 05 06 2000
// Autores : Juan Pablo Quiroga
// Tiempo Desarrollo: 20 minutes
// LOC : 284
// -------------------------------------------------------------------------
//
// **************************************************************************
![Page 29: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/29.jpg)
Procedimientos de control de
configuraciones29
Asegurar que no hay conflicto en cuanto dos
personas puedan cambiar el mismo producto al
tiempo
Cuando una de las personas está modificando el
producto es el único que puede hacerlo y debe
mantenerse bloqueado hasta que este termine de
hacerlo
Una persona debe ser responsable de mantener la
integridad del producto
![Page 30: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/30.jpg)
Proceso de SCM30
Producir el plan de configuraciones
Introducción
Propósito
Alcance
Glosario
Referencias
![Page 31: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/31.jpg)
Proceso de SCM31
Producir el plan de configuraciones
Actividades
Artículos de configuración
Estándares
Nombramiento de artículos
Distribución de archivos
Versionamiento
Administración
Definición del informe de Identificación de líneas de base
![Page 32: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/32.jpg)
Proceso de SCM32
Reportes del estatus de SCM.
Al final de cada ciclo
Un informe con
El nombre de la(s) línea(s) de base asociadas
Por cada artefacto colocar la versión
Si es un grupo de artefactos colocar los artefactos
asociados y la vérsión de c/u
Administrar el baseline del sistema
Administración del cambio
![Page 33: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/33.jpg)
Control de Versiones de Software33
Mecanismo de base:
Grafo de derivación: contiene la evolución de un
archivo de texto (binario)
Primeras herramientas sobre Unix:
Source Code Control System SCCS (M. Rockhind 1977)
Revision Control System RCS (W. Tichy 1982)
![Page 34: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/34.jpg)
Control de Versiones de Software34
CVS
Concurrent Version System
Como un conjunto de scripts
Dick Grune, 1986
Como una sóla herramienta
Creado en 1989 por Brian Berliner
Apoyado por Jeff Polk
Licencia GPL
![Page 35: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/35.jpg)
Control de Versiones de Software35
Otras herramientas
Perforce – Perforce
Basado en CVS
Clear Case - Rational
Source Safe – Microsoft
CS RCS – Component Software
Avanzadas
Control de cambio y seguimiento
ClearQuest - Rational
![Page 36: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/36.jpg)
Modelo básico: check-in/check-out36
Depósito
Compilador Editor
Espacio de trabajo
Check-in
Check-out
![Page 37: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/37.jpg)
Coordinación y sincronización del
trabajo en equipo37
Depósito
Espacio de
trabajo
Espacio de
trabajo
![Page 38: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/38.jpg)
El Versionamiento38
Variante
0.1 1.0 2.0 3.0
1.1
1.2Mecanismo delta
![Page 39: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/39.jpg)
El Versionamiento39
0.1 1.0 2.0 3.0
Fusión de los cambios
![Page 40: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/40.jpg)
La coordinación y sincronización del
trabajo40
Políticas de administración de espacios de trabajo:
controlar la sincronización de cambios concurrentes
(evitarlos): definir políticas de sincronización
creación de Baselines
Propagación de los cambios en distintas baselines
![Page 41: INGENIERÍA DE SOFTWAREisis... · El desarrollo de software siempre es incremental ... // Departamento de Ingenieria de Sistemas y Computacion // // Proyecto : Administrador de Notas](https://reader036.fdocuments.ec/reader036/viewer/2022062601/5e5aabc8d4cd316a6f4f6bcd/html5/thumbnails/41.jpg)
La coordinación y sincronización del
trabajo41
Depósito formal
Depósito desarrollo
Espacio de trabajoEspacio de trabajo
Extraer
Promover/
actualizar