Bohnner y Arnold [1] definen el análisis de impacto del cambio ( IA ) como "identificar las posibles consecuencias de un cambio o estimar lo que se necesita modificar para lograr un cambio", y se centran en la IA en términos de cambios de alcance dentro de la detalles de un diseño. Por el contrario, Pfleeger y Atlee [2] se centran en los riesgos asociados con los cambios y afirman que IA es: "la evaluación de los muchos riesgos asociados con el cambio, incluidas las estimaciones de los efectos sobre los recursos, el esfuerzo y el cronograma". Tanto los detalles de diseño como los riesgos asociados con las modificaciones son fundamentales para realizar la IA dentro de los procesos de gestión de cambios . Un término coloquial técnico también se menciona a veces en este contexto,el infierno de la dependencia .
Tipos de técnicas de análisis de impacto
Las técnicas de IA se pueden clasificar en tres tipos: [3]
- Rastro
- Dependencia
- Experimental
Bohner y Arnold [4] identifican dos clases de IA, trazabilidad y dependencia IA. En la trazabilidad IA, se capturan los vínculos entre los requisitos, las especificaciones, los elementos de diseño y las pruebas, y estas relaciones se pueden analizar para determinar el alcance de un cambio inicial. [5] En la dependencia IA, se evalúan los vínculos entre partes, variables, lógica, módulos, etc. para determinar las consecuencias de un cambio inicial. La IA de dependencia se produce a un nivel más detallado que la IA de trazabilidad. Dentro del diseño de software, los algoritmos estáticos y dinámicos se pueden ejecutar en código para realizar IA de dependencia. [6] [7] Los métodos estáticos se centran en la estructura del programa, mientras que los algoritmos dinámicos recopilan información sobre el comportamiento del programa en tiempo de ejecución.
La literatura y la práctica de la ingeniería también sugieren un tercer tipo de IA, IA experiencial, en el sentido de que el impacto de los cambios a menudo se determina utilizando conocimientos de diseño expertos. Revisar los protocolos de las reuniones, [8] las discusiones informales del equipo y el juicio de los ingenieros individuales [9] pueden utilizarse para determinar las consecuencias de una modificación.
Gestión de paquetes y dependencia IA
El software a menudo se entrega en paquetes, que contienen dependencias de otros paquetes de software necesarios para que se ejecute el implementado. Seguir estas dependencias en orden inverso es una forma conveniente de identificar el impacto de cambiar el contenido de un paquete de software. Ejemplos de software útil para hacer esto:
Código fuente y dependencia IA
Las dependencias también se declaran en el código fuente. Los metadatos se pueden utilizar para comprender las dependencias a través del análisis estático. Entre las herramientas de apoyo para mostrar tales dependencias se encuentran:
También existen herramientas que aplican la búsqueda de texto completo sobre el código fuente almacenado en varios repositorios. Si el código fuente se puede navegar por la web, se pueden utilizar los motores de búsqueda clásicos. Si la fuente solo está disponible en el entorno de ejecución, se vuelve más complicada y las herramientas especializadas pueden ser de ayuda. [11]
Se pueden utilizar técnicas de aprendizaje para identificar automáticamente las dependencias de impacto. [12]
Requisitos y trazabilidad al código fuente
Las herramientas recientes utilizan enlaces a menudo estables para rastrear dependencias. Esto se puede hacer en todos los niveles, entre ellos, especificaciones, planos, errores, confirmaciones. A pesar de esto, el uso de verificadores de backlinks conocidos por la optimización de motores de búsqueda no es común. También se realizan investigaciones en esta área, solo para nombrar mapas de casos de uso [13]
Las herramientas comerciales en esta área incluyen Telelogic DOORS e IBM Rational .
Ver también
Referencias
- ^ Bohner y Arnold, 1996, pág.3
- ^ Pfleeger y Atlee, 2006, p. 526
- ^ Kilpinen, 2008
- ^ Bohner y Arnold, 1996
- ↑ Eisner, 2002, págs. 236-237.
- ^ Rajlich, 2000
- ^ Ren y col., 2005
- ^ Endres y Rombach, 2003, pág.17
- ^ Ambler, 2002, pág. 244
- ^ http://www.pixelbeat.org/scripts/whatrequires
- ^ ohloh, descubre, rastrea y compara el código abierto.
- ^ Musco, Vincenzo; Carette, Antonin; Monperrus, Martin; Preux, Philippe (2016). "Un algoritmo de aprendizaje para la predicción del impacto del cambio". Actas del 5º Taller Internacional sobre la Realización de Sinergias de Inteligencia Artificial en Ingeniería de Software - RAISE '16 . págs. 8-14. arXiv : 1512.07435 . doi : 10.1145 / 2896995.2896996 . ISBN 9781450341653.
- ^ Análisis de impacto de cambios para la evolución de requisitos utilizando mapas de casos de uso Archivado el 5 demarzo de 2016en Wayback Machine , Jameleddine Hassine, Juergen Rilling, Jacqueline Hewitt, Departamento de Ciencias de la Computación, Universidad de Concordia, 2005.
Otras lecturas
- Ambler, S. (2002). Modelado ágil: prácticas efectivas para la programación extrema y el proceso unificado. Nueva York, Nueva York, EE. UU., John Wiley & Sons.
- Bohner, SA y RS Arnold, Eds. (1996). Análisis del impacto del cambio de software. Los Alamitos, California, EE.UU., IEEE Computer Society Press.
- Eisner, H. (2002). Fundamentos de la Gestión de Ingeniería de Proyectos y Sistemas. Nueva York, Nueva York, EE. UU., John Wiley & Sons.
- Endres, A. y D. Rombach (2003). Un manual de ingeniería de software y sistemas: observaciones empíricas, leyes y teorías. Nueva York, Nueva York, EE. UU., Addison-Wesley.
- Kilpinen, MS (2008). La aparición del cambio en la interfaz de diseño de software e ingeniería de sistemas: una investigación del análisis de impacto. Tesis de Doctorado . Universidad de Cambridge. Cambridge, Reino Unido.
- Pfleeger, SL y JM Atlee (2006). Ingeniería de software: teoría y práctica. Upper Saddle River, Nueva Jersey, Estados Unidos, Prentice Hall.
- Rajlich, V. (2000). "Un modelo y una herramienta para la propagación del cambio en el software". Notas de ingeniería de software de ACM SIGSOFT 25 (1): 72.
- Ren, X., F. Shah y col. (2005). Chianti: una herramienta para el análisis del impacto del cambio de los programas Java. Conferencia internacional sobre ingeniería de software (ICSE 2005), St Louis, Missouri, EE. UU.