Change impact analysis

From Wikipedia, the free encyclopedia

Change impact analysis (IA) or impact analysis[1] is the analysis of changes within a deployed product or application and their potential consequences.[2][3][better source needed]

Change impact analysis is defined by Bohnner and Arnold[4] as "identifying the potential consequences of a change, or estimating what needs to be modified to accomplish a change", and they focus on IA in terms of scoping changes within the details of a design. In contrast, Pfleeger and Atlee[5] focus on the risks associated with changes and state that IA is: "the evaluation of the many risks associated with the change, including estimates of the effects on resources, effort, and schedule". Both the design details and risks associated with modifications are critical to performing IA within the change management processes. A technical colloquial term is also mentioned sometimes in this context, dependency hell.

Types of impact analysis techniques[edit]

IA techniques can be classified into three types:[6]

  • Trace
  • Dependency
  • Experiential

Bohner and Arnold[7] identify two classes of IA, traceability and dependency IA. In traceability IA, links between requirements, specifications, design elements, and tests are captured, and these relationships can be analysed to determine the scope of an initiating change.[8] In dependency IA, linkages between parts, variables, logic, modules etc. are assessed to determine the consequences of an initiating change. Dependency IA occurs at a more detailed level than traceability IA. Within software design, static and dynamic algorithms can be run on code to perform dependency IA.[9][10] Static methods focus on the program structure, while dynamic algorithms gather information about program behaviour at run-time.

Literature and engineering practice also suggest a third type of IA, experiential IA, in that the impact of changes is often determined using expert design knowledge. Review meeting protocols,[11] informal team discussions, and individual engineering judgement[12] can all be used to determine the consequences of a modification.[how?]

Package management and dependency IA[edit]

Software is often delivered in packages, which contain dependencies to other software packages necessary that the one deployed runs. Following these dependencies in reverse order is a convenient way to identify the impact of changing the contents of a software package. Examples for software helpful to do this:

Source code and dependency IA[edit]

Dependencies are also declared in source code. [[Metadata|Metadata[which?]]] can be used[how?] to understand the dependencies via static analysis. Amongst the tools supporting to show such dependencies are:

There are as well tools applying full-text search over source code stored in various repositories. If the source code is web-browsable, then classical search engines can be used. If the source is only available in the runtime environment, it gets more complicated and specialized tools may be of help.[14][verification needed][inappropriate external link?]

Requirements, and traceability to source code[edit]

Recent tools[which?] use often stable links to trace dependencies. This can be done on all levels, amongst them specification, blueprint, bugs, commits. Despite this, the use of backlink checkers known from search engine optimization is not common. Research in this area is done as well, just to name use case maps.[15]

Commercial tools in this area include Rational DOORS.

See also[edit]

References[edit]

  1. ^ "Impact Analysis - an overview | ScienceDirect Topics". www.sciencedirect.com. Retrieved 2022-01-27.
  2. ^ "Change Impact Analysis - Introduction". ktern.com. 2021-12-29. Archived from the original on 2022-01-27. Retrieved 27 January 2022.
  3. ^ "Change Impact Analysis | SMS Tools". www.aviationsafetyplatform.com. Retrieved 27 January 2022.
  4. ^ Bohner and Arnold, 1996, pg.3
  5. ^ Pfleeger and Atlee, 2006, pg.526
  6. ^ Kilpinen, 2008
  7. ^ Bohner and Arnold, 1996
  8. ^ Eisner, 2002, pg.236-237
  9. ^ Rajlich, 2000
  10. ^ Ren et al., 2005
  11. ^ Endres and Rombach, 2003, pg.17
  12. ^ Ambler, 2002, pg. 244
  13. ^ "whatrequires". www.pixelbeat.org. Archived from the original on 2006-04-26. Retrieved 27 January 2022.
  14. ^ "ohloh, discover, track, and compare open source". Archived from the original on 2011-01-12. Retrieved 2022-01-27.
  15. ^ Change Impact Analysis for Requirement Evolution using Use Case Maps Archived 2016-03-05 at the Wayback Machine, Jameleddine Hassine, Juergen Rilling, Jacqueline Hewitt, Department of Computer Science, Concordia University, 2005.

Further reading[edit]

  • Ambler, S. (2002). Agile Modeling: Effective Practices for Extreme Programming and the Unified Process. New York, New York, USA, John Wiley & Sons.
  • Bohner, S.A. and R.S. Arnold, Eds. (1996). Software Change Impact Analysis. Los Alamitos, California, USA, IEEE Computer Society Press.
  • Eisner, H. (2002). Essentials of Project and Systems Engineering Management. New York, New York, USA, John Wiley & Sons.
  • Endres, A. and D. Rombach (2003). A Handbook of Software and Systems Engineering: Empirical Observations, Laws and Theories. New York, New York, USA, Addison-Wesley.
  • Kilpinen, M.S. (2008). The Emergence of Change at the Systems Engineering and Software Design Interface: An Investigation of Impact Analysis. PhD Thesis. University of Cambridge. Cambridge, UK.
  • Pfleeger, S.L. and J.M. Atlee (2006). Software Engineering: Theory and Practice. Upper Saddle River, New Jersey, USA, Prentice Hall.
  • Rajlich, V. (2000). "A Model and a Tool for Change Propagation in Software." ACM SIGSOFT Software Engineering Notes 25(1):72.
  • Ren, X., F. Shah, et al. (2005). Chianti: A Tool for Change Impact Analysis of Java Programs. International Conference on Software Engineering (ICSE 2005), St Louis, Missouri, USA.