Programs are rarely self-contained in software environments. They depend
on other programs or shared subsystems like language run time and
operating system libraries for various functionalities. A change in one
of the external subsystems may affect the program and one or more other
external subsystems.A method or system collects and propagates
information about dependency between logical abstractions within a binary
file (e.g., basic block, procedure, etc.), dependency between binary
files, and dependency between subsystems (e.g., programs, component
libraries, system services, etc,) In one example, such dependency
information is exposed to a tool (e.g., test tool, software development
tool, etc.) via an application programming interface. A tool mines this
information to manage testing, determine risks of change, or manage
software development. The tool may also be integrated into the method or
system.