Program differencing tools such as GNU diff identify individual differences but do not determine how those differences are related to each other. For example, an extract super...
Concurrency is inherent in today’s software. Unexpected interactions between concurrently executing threads often cause subtle bugs in concurrent programs. Such bugs are hard to...
Software engineers need to understand programs in order to effectively maintain them. The call graph, which presents the calling relationships between functions, is a useful repre...
Aspect-Oriented Programming is an emerging software engineering paradigm. It offers new constructs and tools improving separation of crosscutting concerns into single units called...
Most programs are repetitive, where similar behavior can be seen at different execution times. Algorithms have been proposed that automatically group similar portions of a program...