Impact Analysis
Impact Analysis
Impact analysis for computer software is much the same: “If I redefine this variable, what will be
the effect?” If software developers cannot answer these simple ‘What if…?” questions, then they
should not be making the change.
“Software change impact analysis, or impact analysis for short, estimates what will be
affected in software and related documentation if a proposed software change is made.”
[Arnold 1996]
As simple as this definition sounds, some software tools that claim impact analysis functionality
miss the mark and are incomplete. Their impact analysis functionality is limited to file
dependency checking (e.g., foo.c depends on foo.h) which has been around a while in the form
of makefiles.
Many more meaningful questions can be answered, however, if you reduce the granularity from
files to programming constructs or “tokens” that are parsed1 [Parr 1997] from source code:
“Where is this variable referenced?”, “Why is this function so complex?” and “If I add a
parameter to this function, what else is affected?” These are all excellent questions, which
illustrate the various aspects of impact analysis. Referenced variables indicate code navigation
functionality. Complexity measurement leads to source code comprehension functions.
Therefore, cause and effect analysis of proposed changes is at the core of impact analysis.
1
Excerpt from reference found at: http://www.antlr.org/Articles/langparse.html
What is SCM?
The day the first software program was created there was a need to change it [csc-m 2002].
There is a vast body of knowledge available that addresses this very issue as well as the
approaches, hurdles, and successes involved in implementing SCM systems. Of all of the
definitions that can be found, no definition has captured its essence better than the following:
The main principle that stands out is “controlling”. You certainly don’t want to prevent the
evolution of software but you do need a mechanism for managing and approving proposed
changes. You can imagine the chaos that would follow if QA engineers were expected to test
software systems where developers had changed the software without adjusting the
requirements.
Software development is a complex task. Applying tools and processes (SCM) helps to streamline
the effort, ensure repeatability and will lead to productivity and quality improvements.
Managing Change
SCM helps with how changes are made to the system; Impact Analysis helps answer these other
important questions:
The reasons for changing software can usually be narrowed to one of a few key reasons:
1. Software Defect – As much as we’d like to believe our software is defect-free, bugs do
exist.
2. Enhancement– A new feature or a change to an existing feature is requested (hopefully
leading to a product improvement).
3. Developer Innovation – This is an often-overlooked aspect of software development
projects. Software is changed in subtle ways, often for the better, without an approved
change request.
To be sure, fixing known bugs is desirable, but you do not want to fix one bug only to introduce
another undetected bug(s). It is critical that you are aware of the impact or consequence of
“fixing” the defect.
For similar reasons, you want to be careful about adding new features that may conflict in
unknown ways with existing features or other proposed new features. An example of this can be
found in Microsoft’s Active Desktop feature — it’s nice to have, yet it seems to conflict with your
2
Paraphrased from "Tools for Software Configuration Management", Proceedings of the 2nd
International Workshop on Software Version and Configuration Control, Walter F. Tichy, 1988.
Of course not every change made to software is approved or desirable. The “feature creep” that
inevitably happens to applications can offer wonderful surprises for users, but at the same time
cause Product Managers endless grief. The extras added by developers may not allow for
adequate testing; delay release cycles; misalign with the strategic direction; cause conflicts with
other features; or, at worst, violate contractual obligations. The product must be improved, but
always in a controlled manner.
The following is a basic process for managing software changes with SCM and Impact Analysis
tools.
MKS Solution
Since 1984, MKS has produced high quality software development tools known for their technical
innovation and powerful functionality. While other vendors provide complicated framework
solutions that address all facets of the application development lifecycle, MKS is focused on
excellence in one area: software development. This enables MKS to deliver products that meet
or exceed the needs of the most demanding enterprise software development organization.
With solutions for software configuration management (SCM), process and workflow
management, source code comprehension and analysis, and UNIX/NT interoperability, MKS helps
organizations achieve their quality goals while increasing productivity and reducing costs.
MKS Integrity Manager is the most scalable and flexible process and workflow management
solution available today for connecting distributed development teams across the enterprise.
Integrity Manager allows development teams to implement processes that are as complex or
simple as their individual needs or project requirements dictate.
MKS Source Integrity Enterprise Edition is the enterprise choice for comprehensive, cross-
platform software configuration management. Its platform transparent, advanced multi-tier
architecture provides scalability and security in local and distributed environments while
maintaining ease of use and low cost of ownership.
MKS Code Integrity helps software development organizations comprehend complex software
systems constructed by the enterprise over time, assess the impact of changes to code before
they are implemented, and ultimately improve the quality of software through coding standards
automation.
3
“A change package allows you to specify groups of members that are affected by an issue. For
example, a solution’s change package might contain files that need to be changed in order to
satisfy a problem.” – MKS Integrity Manager User Guide.
References
[Fowler 1999] ‘Refactoring: Improving the Design of Existing Code’, Martin
Fowler et al, Addison-Wesley, 1999, ISBN: 0201485672
[Parr 1997] ‘Language Translation Using PCCTS & C++’, Terence J. Parr,
Automata Publishing Company, 1997, ISBN: 0962748854
MKS and design, MKS Code Integrity, MKS Engineer Integrity, MKS Impact Integrity, MKS Integrity Manager, MKS Source Integrity, MKS Toolkit, CodeRover,
Discover, Implementer, NuTCRACKER, SDM and Software Manager are trademarks or registered trademarks of MKS Inc. All other trademarks acknowledged. ©
2003. All rights reserved.
CIE0203WP