Joseph Robert Horgan

Learn More
Program slices are useful in debugging, testing, maintenance, and understanding of programs. The conventional notion of a program slice, the <italic>static slice</italic>, is the set of all statements that <italic>might</italic> affect the value of a given variable occurrence. In this paper, we investigate the concept of the <italic>dynamic slice</italic>(More)
Size and code coverage are important attributes of a set of tests. When a program P is executed on elements of the test set T, we can observe the fault detecting capability of T for P. We can also observe the degree to which T induces code coverage on P according to some coverage criterion. We would like to know whether it is the size of T or the coverage(More)
Finding a fault in a program is a complex process which involves understanding the program's purpose, structure, semantics, and the relevant characteristics of failure producing tests. We describe a tool which supports execution slicing and dicing based on test cases. We report the results of an experiment that uses heuristic techniques in fault(More)
The purpose of regression testing is to ensure that changes made to software, such as adding new features or modifying existing features, have not adversely affected features of the software that should not change. Regression testing is usually performed by running some, or all, of the test cases created to test modifications in previous versions of the(More)
An important question in software testing is whether it is reasonable to apply coverage based criteria as a lter to reduce the size of a test set. An empirical study was conducted using a test set minimization technique to explore the eeect of reducing the size of a test set, while keeping block coverage constant, on the fault detection strength of the(More)
An important step toward eecient software maintenance is to locate the code relevant to a particular feature. In this paper we report a study applying an execution slice-based technique to a reliability and performance evaluator to identify the code which is unique to a feature, or is common to a group of features. Supported by tools called ATAC and Vue,(More)
One of the most important steps towards e ective software maintenance of a large complicated system is to understand how program features are spread over the entire system and their interactions with the program components. However, we must rst be able to represent an abstract feature in terms of some concrete program components. In this paper, we use an(More)
Coverage testing helps the tester create a thorough set of tests and gives a measure of test completeness. The concepts of coverage testing are well-described in the literature. However, there are few tools that actually implement these concepts for standard programming languages, and their realistic use on large-scale projects is rare. In this article, we(More)
Prevalent approaches to software reliability modeling are black-box based, i.e., the the software system is treated as a monolithic entity and only its interactions with the outside world are modeled. However, with the advancement and widespread use of object oriented systems design and web-based development, the use of component-based software development(More)