Keith Brian Gallagher

Keith Brian Gallagher
  • PhD
  • Managing Director at Florida Institute of Technology

About

55
Publications
11,532
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
1,681
Citations
Introduction
Skills and Expertise
Current institution
Florida Institute of Technology
Current position
  • Managing Director
Additional affiliations
September 1985 - January 2004
Loyola University Maryland
Position
  • Professor (Associate)
January 2010 - present
Florida Institute of Technology
January 2000 - December 2009
Durham University
Education
September 1986 - December 1989
University of Maryland, Baltimore County
Field of study
  • Computer Science
September 1980 - January 1982
University of Michigan
Field of study
  • Computer and Communication Sciences
September 1978 - September 1980
University of Michigan
Field of study
  • Mathematics

Publications

Publications (55)
Article
Comprehension of computer programs is daunting, due in part to clutter in the software developer's visual environment and the need for frequent visual context changes. Previous research has shown that nonspeech sound can be useful in understanding the runtime behavior of a program. We explore the viability and advantages of using nonspeech sound in...
Article
Full-text available
Detection of communities within social networks is a nontrivial problem. Allowing communities to overlap—i.e. nodes can belong to more than one community simultaneously—further complicates the problem. Nevertheless, people do belong to multiple social groups simultaneously and being able to detect overlapping communities is an important step into b...
Chapter
Full-text available
There has been considerable interest in identifying communities within large collections of social networking data. Existing algorithms will classify an actor (node) into a single group, ignoring the fact that in real-world situations people tend to belong concurrently to multiple (overlapping) groups. Our work focuses on the ability to find overla...
Chapter
Full-text available
We propose a unique approach to finding overlapping communities within complex networks that leverages swarm intelligence, for decentralized multi-threading processing, with label propagation, for its fast identification of communities. The combination of the two technologies offers a high performance approach to overlapped community detection that...
Conference Paper
Almost all software contracts that are not open-source contain broad bans on reverse engineering, but as far as we can tell, almost all professional software development does reverse engineering to some degree. This is a fundamental, unresolved conflict. Every student and practitioner of software of engineering will face reverse engineering issues...
Article
Full-text available
Software systems change and evolve over time. Each time a system is changed regression tests have to be run to validate these changes. The aim of this research is to significantly reduce the number of test cases that need to be run after system changes have been made. Decomposition slicing provides a technique that is capable of identifying the unc...
Article
Full-text available
Program robustness is the ability of software to behave correctly under stress. Measuring program robustness allows programmers to find the program's vulnerable points, repair them, and avoid similar mistakes in the future. In this paper, a Robustness Grid will be introduced as a program robustness measuring technique. A Robustness Grid is a table...
Conference Paper
Full-text available
Robustness of a program is the degree of system correctness of all parts. Measuring robustness is a goal for many researchers. In this paper, program slicing is used to build a robustness hierarchy, where this hierarchy will be used to test, and build a robust program.
Conference Paper
Full-text available
There has been considerable interest in improving the capability to identify communities within large collections of social networking data. However, many of the existing algorithms will compartment an actor (node) into a single group, ignoring the fact that in real-world situations people tend to belong concurrently to multiple groups. Our work fo...
Conference Paper
Full-text available
Comprehension is the quintessence of human activity: we cannot do anything useful until we understand. From physicians to plumbers, we demand understanding of the problem at hand. So it is with software engineering. Comprehension is the foundation of all professional action: construction, reuse, and re-engineering; evolution, reverse engineering, a...
Conference Paper
Use of non-speech sound can facilitate the understanding of a software program. Non-speech sound has been shown to be useful in dynamic program comprehension, that is, understanding the dynamic behavior of a program. We have developed a sonification scheme to describe static software entities in Java programs, and we show that it is useful in stati...
Article
Full-text available
A dependence cluster is a set of program statements, all of which are mutually inter-dependent. This paper reports a large scale empirical study of dependence clusters in C program source code. The study reveals that large dependence clusters are surprisingly commonplace. Most of the 45 programs studied have clusters of dependence that consume more...
Article
Full-text available
This research uses an exclusive technique to reduce the regression tests size. Exclusive technique means that a large number of tests will be excluded and leave a relatively small but safe test set. Decomposition slicing is used to empirically investigate whether it can reduce regression tests by an exclusive technique. Decomposition slicing provid...
Conference Paper
Program slicing is a decomposition technique that slides program components not relevant to a chosen computation, referred to as a slicing criterion. The remaining components form an executable program called a slice that computes a projection of the original programpsilas semantics. Using examples coupled with fundamental principles, a tutorial in...
Article
Full-text available
In order to characterize and improve software architecture visualization practice, the paper derives and constructs a qualitative framework, with seven key areas and 31 features, for the assessment of software architecture visualization tools. The framework is derived by the application of the Goal Question Metric paradigm to information obtained f...
Conference Paper
Full-text available
Operational software is constantly evolving. Regression testing is used to identify the unintended consequences of evolutionary changes. As most changes affect only a small proportion of the system, the challenge is to ensure that the regression test set is both safe (all relevant tests are used) and inclusive (only relevant tests are used). Previo...
Article
Popular software testing tools, such as JUnit, allow frequent retesting of modified code; yet the manually created test scripts are often seriously incomplete. A unit-testing tool called JWalk ...
Conference Paper
Full-text available
Traditional program slicing requires two parameters: a program location and a variable, or perhaps a set of variables, of interest. Stop-list slicing adds a third parameter to the slicing criterion: those variables that are not of interest. This third parameter is called the stoplist. When a variable in the stop-list is encountered, the data-flow d...
Article
Full-text available
Comprehending a computer program can be a daunting task. There is much to understand, including the interaction among different parts of the code. Program slicing is a vehicle that can help one understand this interaction. Because present-day visual development environments tend to become cluttered, and because a program slice may involve the inter...
Conference Paper
Program comprehension of unfamiliar software is a daunting task and existing comprehension environments, although helping significantly, do not fully alleviate the information overload involved. The visual medium has been well-explored in aiding software engineers understanding of source code and other artifacts concerned with maintaining existing...
Conference Paper
Full-text available
In order to assess software architecture visualisation strategies, we qualitatively characterize then construct an assessment framework with 7 key areas and 31 features. The framework is used for evaluation and comparison of various strategies from multiple stakeholder perspectives. Six existing software architecture visualisation tools and a seven...
Article
Full-text available
Monkeysort is a pedagogical program that turns the usual concern of efficiency upside down by attempting to be as "dumb" as possible, yet still correct. In this program, whose inner workings are accessible to all students, monkeysort exhibits significant ideas that are central to computer science: partial correctness, generate-and-test solutions to...
Conference Paper
Full-text available
Weiser's algorithm for computing interprocedural slices has a serious drawback: it generates spurious criteria which are not feasible in the control flow of the program. When these extraneous criteria are used the slice becomes imprecise in that it has statements that are not relevant to the computation. Horwitz, Reps and Binkley solved this proble...
Conference Paper
Full-text available
In order to further understand and assess decomposition slicing we characterize and evaluate the size of reductions obtained by computing equivalent decomposition slices from the perspective of the comprehender, maintainer, tester and researcher. The analysis was performed on 68 C language systems of sizes 100 to 50,000 lines. All decomposition sli...
Article
The attempt to design and integrate consistent changes to an existing system is the essence of software maintenance. Software developers also confront similar problems: there are changes during testing and the release of new system builds. Whether in development or maintenance, changes to evolving systems must be made consistently; that is, without...
Conference Paper
Full-text available
When computing program slices on all variables in a system, we observed that many of these slices are the same. This leads to the question: Are we looking at software clones? We discuss the genesis of this phenomena and present some of the data observations that led to the question. The answer to our query is not immediately clear. We end by presen...
Article
Introduction Many software technology problems can be characterised as problems of scale, one of the most important of which is the shear size of the source code which describes the system itself. Program slicing addresses this problem head on, reducing program size by focusing attention on a sub computation denoted by a `slicing criterion'. Mark W...
Conference Paper
Comprehension, the primordial task, has not changed much in 40 years. Whether the comprehension task is global (architectural) or atomic (single statement effect), the approach is the same. We run it. We read it. We grep (search) it. An electronic search on the criteria ¿comprehension and tools¿ yielded no results. Therefore, while there is program...
Article
Full-text available
Current practice for examination of a high integrity software artifact is often a manual process that is slow, tedious, and prone to human errors. This report describes a Computer Aided Software Engineering (CASE) tool, unravel, that can assist evaluation of high integrity software by using program slices to extract computations for examination. Th...
Article
Full-text available
Program comprehension is the process in which software engineers gain an understanding of a system. A program comprehension environment provides tools to capture and manipulate information to carry out understanding tasks. We describe an information model and framework for program understanding and show how decomposition slicing (a maintenance meth...
Article
Full-text available
Software maintenance is the process of designing and integrating consistent changes to an existing software system. It is difficult for the maintainer to ascertain the complete effect of a code change; the maintainer may make a change to a program that is syntactically and semantically legal, but has ripples into the parts of the program that were...
Article
Full-text available
for software maintainers and developers of ansi C programs. It is based on the premises that maintainers need to be able to limit the scope of changes and that (most) development starts from some existing, similar systems. The Decomposition Slice Display System (dsds xvcg), a component of the Surgeon's Assistant, automates and visualizes impact ana...
Conference Paper
Full-text available
Visual impact analysis is a software visualisation technique that lets software maintainers judge the impact of proposed changes and plan maintenance accordingly. An existing CASE tool uses a directed acyclic graph display derived from decomposition slicing of a program for visual impact analysis. In this paper, we analyse the graph display and sho...
Conference Paper
Program understanding tools are currently not interoperable, leading researchers to waste significant resources reinventing already existing tools. Even commercial environments that have been designed to support the construction of program understanding tools have serious flaws in this regard. This paper discusses CORUM (Common Object-based Re-engi...
Article
Program slicing is a technique for reducing the amount of information that needs to be absorbed by a programmer. Given a point of “interest” in a program, described by a variable and a statement, a program slice gives all the statements that contributed to the value of the variable at the point, and elides unnecessary statements. This chapter surve...
Article
Current practice for examination of a high integrity software artifact is often a manual process that is slow, tedious, and prone to human errors. This report describes a Computer Aided Software Engineering (CASE) tool, unravel, that can assist evaluation of high integrity software by using program slices to extract computations for examination. Th...
Conference Paper
Describes a novel application of program slicing to two issues of software safety: functional diversity and the validation and verification of safety-critical components. Software quality assurance auditors are faced with a myriad of difficulties, ranging from inadequate time to inadequate CASE tools. One particular problem is the localization of s...
Conference Paper
The author reports on an empirical evaluation of decomposition slicing as a maintenance method as implemented in the Surgeon's Assistant. The improvement-oriented software maintenance model presented by H. D. Rombach and B.T. Ulery (1988) is used as the foundation. A reprise of software process modeling, a short introduction to software maintenance...
Article
Full-text available
Program slicing is applied to the software maintenance problem by extending the notion of a program slice (that originally required both a variable and line number) to a decomposition slice, one that captures all computation on a given variable, i.e., is independent of line numbers. Using the lattice of single variable decomposition slices ordered...
Article
After a brief overview, eight tools to help the maintenance programmer analyze and understand code are described in separate presentations. All of them are code-visualization tools. However, while all these tools show how a program is structured, they use different means to achieve different ends. The tools covered are: Objective-C Browser; Vifor;...
Conference Paper
The authors use M. Weisers (1984) technique, to approximate the notion of direct-sum decomposition for the flowgraph representation of a program. Given a program slice, they define its complement and demonstrate how to obtain it; the slices and complements are used to define the components of the decomposition. These components are independent in t...
Conference Paper
The authors use data-flow techniques to form a notion of direct sum decomposition for programs. The decomposition yields a method and guidelines for software maintainers to use so that changes can be assured to be completely contained in the modules under consideration and that there are no undetected linkages between the modified and unmodified co...

Network

Cited By