Gail E. Kaiser

dblp:k/GailEKaiser · DBLP profile ↗
← Back
91ranked-venue papers
15as first author
10since 2021 · last 2024
0000-0002-8791-1178ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 56 · 11 first-author · 7 since 2021Databases, data management, data science and information retrieval · 9 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 8 · 2 first-author · 1 since 2021Artificial intelligence and machine learning · 7 · 2 since 2021Systems, architecture and hardware · 6 · 1 first-authorHuman-computer interaction and ubiquitous computing · 6Computer networks · 5Security and privacy · 3 · 1 first-author
YearPublicationVenuePosition
2024 Beyond Accuracy: Evaluating Self-Consistency of Code Large Language Models with IdentityChain
abstract
Code Large Language Models (Code LLMs) are being increasingly employed in real-life applications, so evaluating them is critical. While the conventional accuracy evaluates the performance of Code LLMs on a set of individual tasks, their self-consistency across different tasks is overlooked. Intuitively, a trustworthy model should be self-consistent when generating natural language specifications for its own code and generating code for its own specifications. Failure to preserve self-consistency reveals a lack of understanding of the shared semantics underlying natural language and programming language, and therefore undermines the trustworthiness of a model. In this paper, we first formally define the self-consistency of Code LLMs and then design a framework, IdentityChain, which effectively and efficiently evaluates the self-consistency and conventional accuracy of a model at the same time. We study eleven Code LLMs and show that they fail to preserve self-consistency, which is indeed a distinct aspect from conventional accuracy. Furthermore, we show that IdentityChain can be used as a model debugging tool to expose weaknesses of Code LLMs by demonstrating three major weaknesses that we identify in current models using IdentityChain. Our code is available at https://github.com/marcusm117/IdentityChain.
Marcus J. Min, Yangruibo Ding, Luca Buratti, Saurabh Pujar, Gail E. Kaiser, Suman Jana, Baishakhi Ray
ICLR5
2024 TRACED: Execution-aware Pre-training for Source Code
abstract
Most existing pre-trained language models for source code focus on learning the static code text, typically augmented with static code structures (abstract syntax tree, dependency graphs, etc.). However, program semantics will not be fully exposed before the real execution. Without an understanding of the program execution, statically pre-trained models fail to comprehensively capture the dynamic code properties, such as the branch coverage and the runtime variable values, and they are consequently less effective at code understanding tasks, such as retrieving semantic clones and detecting software vulnerabilities.
Yangruibo Ding, Benjamin Steenhoek, Kexin Pei, Gail E. Kaiser, Wei Le, Baishakhi Ray
ICSE4
2024 SemCoder: Training Code Language Models with Comprehensive Semantics Reasoning
abstract
Code Large Language Models (Code LLMs) have excelled at tasks like code completion but often miss deeper semantics such as execution effects and dynamic states. This paper aims to bridge the gap between Code LLMs' reliance on static text data and the need for semantic understanding for complex tasks like debugging and program repair. We introduce a novel strategy, _monologue reasoning_, to train Code LLMs to reason comprehensive semantics, encompassing high-level functional descriptions, local execution effects of individual statements, and overall input/output behavior, thereby linking static code text with dynamic execution states. We begin by collecting PyX, a clean Python corpus of fully executable code samples with functional descriptions and test cases. We propose training Code LLMs not only to write code but also to understand code semantics by reasoning about key properties, constraints, and execution behaviors using natural language, mimicking human verbal debugging, i.e., rubber-duck debugging. This approach led to the development of SemCoder, a Code LLM with only 6.7B parameters, which shows competitive performance with GPT-3.5-turbo on code generation and execution reasoning tasks. SemCoder achieves 79.3% on HumanEval (GPT-3.5-turbo: 76.8%), 63.6% on CRUXEval-I (GPT-3.5-turbo: 50.3%), and 63.9% on CRUXEval-O (GPT-3.5-turbo: 59.0%). We also study the effectiveness of SemCoder's monologue-style execution reasoning compared to concrete scratchpad reasoning, showing that our approach integrates semantics from multiple dimensions more smoothly. Finally, we demonstrate the potential of applying learned semantics to improve Code LLMs' debugging and self-refining capabilities. Our data, code, and models are available at: https://github.com/ARiSE-Lab/SemCoder.
Yangruibo Ding, Jinjun Peng, Marcus J. Min, Gail E. Kaiser, Baishakhi Ray
NeurIPS4
2024 Reinforest: Reinforcing Semantic Code Similarity for Cross-Lingual Code Search Models
abstract
This paper introduces a novel code-to-code search technique that enhances the performance of Large Language Models (LLMs) by including both static and dynamic features as well as utilizing both similar and dissimilar examples during training. We present the first-ever code search method that encodes dynamic runtime information during training without the need to execute either the corpus under search or the search query at inference time and the first code search technique that trains on both positive and negative reference samples. To validate the efficacy of our approach, we perform a set of studies demonstrating the capability of enhanced LLMs to perform cross-language code-to-code search. Our evaluation demonstrates that the effectiveness of our approach is consistent across various model architectures and programming languages. We outperform the state-of-the-art cross-language search tool by up to 44.7%. Moreover, our ablation studies reveal that even a single positive and negative reference sample in the training process results in substantial performance improvements demonstrating both similar and dissimilar references are important parts of code search. Importantly, we show that enhanced well-crafted, fine-tuned models consistently outperform enhanced larger modern LLMs without fine tuning, even when enhancing the largest available LLMs highlighting the importance for open-sourced models. To ensure the reproducibility and extensibility of our research, we present an open-sourced implementation of our tool and training procedures called Reinforest.
Anthony Saieva, Saikat Chakraborty 0001, Gail E. Kaiser
SCAM3
2024 CYCLE: Learning to Self-Refine the Code Generation
abstract
Pre-trained code language models have achieved promising performance in code generation and improved the programming efficiency of human developers. However, their self-refinement capability is typically overlooked by the existing evaluations of code LMs, which focus only on the accuracy of the one-time prediction. For the cases when code LMs fail to implement the correct program, developers actually find it hard to debug and fix the faulty prediction since it is not written by the developers themselves. Unfortunately, our study reveals that code LMs cannot efficiently self-refine their faulty generations as well. In this paper, we propose CYCLE framework, learning to self-refine the faulty generation according to the available feedback, such as the execution results reported by the test suites. We evaluate CYCLE on three popular code generation benchmarks, HumanEval, MBPP, and APPS. The results reveal that CYCLE successfully maintains, sometimes improves, the quality of one-time code generation, while significantly improving the self-refinement capability of code LMs. We implement four variants of CYCLE with varied numbers of parameters across 350M, 1B, 2B, and 3B, and the experiments show that CYCLE consistently boosts the code generation performance, by up to 63.5
Yangruibo Ding, Marcus J. Min, Gail E. Kaiser, Baishakhi Ray
Proc. ACM Program. Lang.3
2023 CONCORD: Clone-Aware Contrastive Learning for Source Code
abstract
Deep Learning (DL) models to analyze source code have shown immense promise during the past few years. More recently, self-supervised pre-training has gained traction for learning generic code representations valuable for many downstream SE tasks, such as clone and bug detection.
Yangruibo Ding, Saikat Chakraborty 0001, Luca Buratti, Saurabh Pujar, Alessandro Morari, Gail E. Kaiser, Baishakhi Ray
ISSTA6
2023 Neural Network Guided Evolutionary Fuzzing for Finding Traffic Violations of Autonomous Vehicles
abstract
Self-driving cars and trucks, autonomous vehicles (avs), should not be accepted by regulatory bodies and the public until they have much higher confidence in their safety and reliability — which can most practically and convincingly be achieved by testing. But existing testing methods are inadequate for checking the end-to-end behaviors ofavcontrollers against complex, real-world corner cases involving interactions with multiple independent agents such as pedestrians and human-driven vehicles. While test-drivingavs on streets and highways fails to capture many rare events, existing simulation-based testing methods mainly focus on simple scenarios and do not scale well for complex driving situations that require sophisticated awareness of the surroundings. To address these limitations, we propose a new fuzz testing technique, calledAutoFuzz, which can leverage widely-usedavsimulators’ API grammars to generate semantically and temporally valid complex driving scenarios (sequences of scenes). To efficiently search for traffic violations-inducing scenarios in a large search space, we propose a constrained neural network (NN) evolutionary search method to optimizeAutoFuzz. Evaluation of our prototype on one state-of-the-art learning-based controller, two rule-based controllers, and one industrial-grade controller in five scenarios shows thatAutoFuzzefficiently finds hundreds of traffic violationsin high-fidelity simulation environments. For each scenario,AutoFuzzcan find on average 10-39% more unique traffic violationsthan the best-performing baseline method. Further, fine-tuning the learning-based controller with the traffic violationsfound byAutoFuzzsuccessfully reduced the traffic violationsfound in the new version of theavcontroller software.
Ziyuan Zhong, Gail E. Kaiser, Baishakhi Ray
IEEE Trans. Software Eng.2
2022 Learning Computational Thinking Efficiently with Block-based Parsons Puzzles
Jeff Bender, Alex Dziena, Gail E. Kaiser
ICCE3
2022 VELVET: a noVel Ensemble Learning approach to automatically locate VulnErable sTatements
abstract
Automatically locating vulnerable statements in source code is crucial to assure software security and alleviate developers' debugging efforts. This becomes even more important in today's software ecosystem, where vulnerable code can flow easily and unwittingly within and across software repositories like GitHub. Across such millions of lines of code, traditional static and dynamic approaches struggle to scale. Although existing machine-learning-based approaches look promising in such a setting, most work detects vulnerable code at a higher granularity – at the method or file level. Thus, developers still need to inspect a significant amount of code to locate the vulnerable statement(s) that need to be fixed. This paper presents Velvet, a novel ensemble learning approach to locate vulnerable statements. Our model combines graph-based and sequence-based neural networks to successfully capture the local and global context of a program graph and effectively understand code semantics and vulnerable patterns. To study Velvet's effectiveness, we use an off-the-shelf synthetic dataset and a recently published real-world dataset. In the static analysis setting, where vulnerable functions are not detected in advance, Velvet achieves 4.5× better performance than the baseline static analyzers on the real-world data. For the isolated vulnerability localization task, where we assume the vulnerability of a function is known while the specific vulnerable statement is unknown, we compare Velvet with several neural networks that also attend to local and global context of code. Velvet achieves 99.6% and 43.6% top-1 accuracy over synthetic data and real-world data, respectively, outperforming the baseline deep learning models by 5.3-29.0%.
Yangruibo Ding, Sahil Suneja, Yunhui Zheng, Jim Laredo, Alessandro Morari, Gail E. Kaiser, Baishakhi Ray
SANER6
2022 Update with care: Testing candidate bug fixes and integrating selective updates through binary rewriting
Anthony Saieva, Gail E. Kaiser
J. Syst. Softw.2
2020 Detecting Sensor-Based Repackaged Malware
abstract
Android is the most targeted mobile OS. Studies have found that repackaging is one of the most common techniques that adversaries use to distribute malware, and detecting such malware can be difficult because they share large parts of the code with benign apps. Other studies have highlighted the privacy implications of zero-permission sensors. In this work, we investigate if repackaged malicious apps utilize more sensors than the benign counterpart for malicious purposes. We analyzed 15,297 app pairs for sensor usage. We provide evidence that zero-permission sensors are indeed used by malicious apps to perform various activities. We use this information to train a robust classifier to detect repackaged malware in the wild.
Duanyue Yun, Xiao Ji, Huiyu Song, Shirish Kumar Singh, Gail E. Kaiser
IEEE BigData7
2020 Testing DNN image classifiers for confusion & bias errors
abstract
Image classifiers are an important component of today's software, from consumer and business applications to safety-critical domains. The advent of Deep Neural Networks (DNNs) is the key catalyst behind such wide-spread success. However, wide adoption comes with serious concerns about the robustness of software systems dependent on DNNs for image classification, as several severe erroneous behaviors have been reported under sensitive and critical circumstances. We argue that developers need to rigorously test their software's image classifiers and delay deployment until acceptable. We present an approach to testing image classifier robustness based on class property violations.
Yuchi Tian, Ziyuan Zhong, Vicente Ordonez, Gail E. Kaiser, Baishakhi Ray
ICSE4
2020 Ad hoc Test Generation Through Binary Rewriting
abstract
When a security vulnerability or other critical bug is not detected by the developers' test suite, and is discovered post-deployment, developers must quickly devise a new test that reproduces the buggy behavior. Then the developers need to test whether their candidate patch indeed fixes the bug, without breaking other functionality, while racing to deploy before attackers pounce on exposed user installations. This can be challenging when factors in a specific user environment triggered the bug. If enabled, however, record-replay technology faithfully replays the execution in the developer environment as if the program were executing in that user environment under the same conditions as the bug manifested. This includes intermediate program states dependent on system calls, memory layout, etc. as well as any externally-visible behavior. Many modern record-replay tools integrate interactive debuggers, to help locate the root cause, but don't help the developers test whether their patch indeed eliminates the bug under those same conditions. In particular, modern record-replay tools that reproduce intermediate program state cannot replay recordings made with one version of a program using a different version of the program where the differences affect program state. This work builds on record-replay and binary rewriting to automatically generate and run targeted tests for candidate patches significantly faster and more efficiently than traditional test suite generation techniques like symbolic execution. These tests reflect the arbitrary (ad hoc) user and system circumstances that uncovered the bug, enabling developers to check whether a patch indeed fixes that bug. The tests essentially replay recordings made with one version of a program using a different version of the program, even when the the differences impact program state, by manipulating both the binary executable and the recorded log to result in an execution consistent with what would have happened had the the patched version executed in the user environment under the same conditions where the bug manifested with the original version. Our approach also enables users to make new recordings of their own workloads with the original version of the program, and automatically generate and run the corresponding ad hoc tests on the patched version, to validate that the patch does not break functionality they rely on.
Anthony Saieva, Shirish Kumar Singh, Gail E. Kaiser
SCAM3
2019 Toward Optimal Selection of Information Retrieval Models for Software Engineering Tasks
abstract
Information Retrieval (IR) plays a pivotal role in diverse Software Engineering (SE) tasks, e.g., bug localization and triaging, bug report routing, code retrieval, requirements analysis, etc. SE tasks operate on diverse types of documents including code, text, stack-traces, and structured, semi-structured and unstructured meta-data that often contain specialized vocabularies. As the performance of any IR-based tool critically depends on the underlying document types, and given the diversity of SE corpora, it is essential to understand which models work best for which types of SE documents and tasks. We empirically investigate the interaction between IR models and document types for two representative SE tasks (bug localization and relevant project search), carefully chosen as they require a diverse set of SE artifacts (mixtures of code and text), and confirm that the models' performance varies significantly with mix of document types. Leveraging this insight, we propose a generalized framework, SRCH, to automatically select the most favorable IR model(s) for a given SE task. We evaluate SRCH w.r.t. these two tasks and confirm its effectiveness. Our preliminary user study shows that SRCH's intelligent adaption of the IR model(s) to the task at hand not only improves precision and recall for SE tasks but may also improve users' satisfaction.
Md. Masudur Rahman 0001, Saikat Chakraborty 0001, Gail E. Kaiser, Baishakhi Ray
SCAM3
2019 Side channel attack on smartphone sensors to infer gender of the user: poster abstract
abstract
Smartphones incorporate a plethora of diverse and powerful sensors that enhance user experience. Two such sensors are accelerometer and gyroscope, which measure acceleration in all three spatial dimensions and rotation along the three axes of the smartphone, respectively. These sensors are used primarily for screen rotations and advanced gaming applications. However, they can also be employed to gather information about the user's activity and phone positions. In this work, we investigate using accelerometer and gyroscope as a side-channel to learn highly sensitive information, such as the user's gender. We present an unobtrusive technique to determine the gender of a user by mining data from the smartphone sensors, which do not require explicit permissions from the user. A preliminary study conducted on 18 participants shows that we can detect the user's gender with an accuracy of 80%.
Shirish Kumar Singh, Devu Manikantan Shila, Gail E. Kaiser
SenSys3
2018 Replay without recording of production bugs for service oriented applications
abstract
Short time-to-localize and time-to-fix for production bugs is extremely important for any 24x7 service-oriented application (SOA). Debugging buggy behavior in deployed applications is hard, as it requires careful reproduction of a similar environment and workload. Prior approaches for automatically reproducing production failures do not scale to large SOA systems. Our key insight is that for many failures in SOA systems (e.g., many semantic and performance bugs), a failure can automatically be reproduced solely by relaying network packets to replicas of suspect services, an insight that we validated through a manual study of 16 real bugs across five different systems. This paper presents Parikshan, an application monitoring framework that leverages user-space virtualization and network proxy technologies to provide a sandbox “debug” environment. In this “debug” environment, developers are free to attach debuggers and analysis tools without impacting performance or correctness of the production environment. In comparison to existing monitoring solutions that can slow down production applications, Parikshan allows application monitoring at significantly lower overhead.
Nipun Arora, Jonathan Bell 0001, Franjo Ivancic, Gail E. Kaiser, Baishakhi Ray
ASE4
2016 Identifying functionally similar code in complex codebases
abstract
Identifying similar code in software systems can assist many software engineering tasks such as program understanding and software refactoring. While most approaches focus on identifying code that looks alike, some techniques aim at detecting code that functions alike. Detecting these functional clones — code that functions alike — in object oriented languages remains an open question because of the difficulty in exposing and comparing programs' functionality effectively. We propose a novel technique, In-Vivo Clone Detection, that detects functional clones in arbitrary programs by identifying and mining their inputs and outputs. The key insight is to use existing workloads to execute programs and then measure functional similarities between programs based on their inputs and outputs, which mitigates the problems in object oriented languages reported by prior work. We implement such technique in our system, HitoshiIO, which is open source and freely available. Our experimental results show that HitoshiIO detects more than 800 functional clones across a corpus of 118 projects. In a random sample of the detected clones, HitoshiIO achieves 68+% true positive rate with only 15% false positive rate.
Fang-Hsiang Su, Jonathan Bell 0001, Gail E. Kaiser, Simha Sethumadhavan
ICPC3
2016 Code relatives: detecting similarly behaving software
abstract
Detecting “similar code” is useful for many software engineering tasks. Current tools can help detect code with statically similar syntactic and–or semantic features (code clones) and with dynamically similar functional input/output (simions). Unfortunately, some code fragments that behave similarly at the finer granularity of their execution traces may be ignored. In this paper, we propose the term “code relatives” to refer to code with similar execution behavior. We define code relatives and then present DyCLINK, our approach to detecting code relatives within and across codebases. DyCLINK records instruction-level traces from sample executions, organizes the traces into instruction-level dynamic dependence graphs, and employs our specialized subgraph matching algorithm to efficiently compare the executions of candidate code relatives. In our experiments, DyCLINK analyzed 422+ million prospective subgraph matches in only 43 minutes. We compared DyCLINK to one static code clone detector from the community and to our implementation of a dynamic simion detector. The results show that DyCLINK effectively detects code relatives with a reasonable analysis time.
Fang-Hsiang Su, Jonathan Bell 0001, Kenneth Harvey, Simha Sethumadhavan, Gail E. Kaiser, Tony Jebara
SIGSOFT FSE5
2015 Dynamic taint tracking for Java with phosphor (demo)
abstract
Dynamic taint tracking is an information flow analysis that can be applied to many areas of testing. Phosphor is the first portable, accurate and performant dynamic taint tracking system for Java. While previous systems for performing general-purpose taint tracking in the JVM required specialized research JVMs, Phosphor works with standard off-the-shelf JVMs (such as Oracle's HotSpot and OpenJDK's IcedTea). Phosphor also differs from previous portable JVM taint tracking systems that were not general purpose (e.g. tracked only tags on Strings and no other type), in that it tracks tags on all variables. We have also made several enhancements to Phosphor, to track taint tags through control flow (in addition to data flow), as well as to track an arbitrary number of relationships between taint tags (rather than be limited to only 32 tags). In this demonstration, we show how developers writing testing tools can benefit from Phosphor, and explain briefly how to interact with it.
Jonathan Bell 0001, Gail E. Kaiser
ISSTA2
2015 Efficient dependency detection for safe Java test acceleration
abstract
Slow builds remain a plague for software developers. The frequency with which code can be built (compiled, tested and packaged) directly impacts the productivity of developers: longer build times mean a longer wait before determining if a change to the application being built was successful. We have discovered that in the case of some languages, such as Java, the majority of build time is spent running tests, where dependencies between individual tests are complicated to discover, making many existing test acceleration techniques unsound to deploy in practice. Without knowledge of which tests are dependent on others, we cannot safely parallelize the execution of the tests, nor can we perform incremental testing (i.e., execute only a subset of an application's tests for each build). The previous techniques for detecting these dependencies did not scale to large test suites: given a test suite that normally ran in two hours, the best-case running scenario for the previous tool would have taken over 422 CPU days to find dependencies between all test methods (and would not soundly find all dependencies) — on the same project the exhaustive technique (to find all dependencies) would have taken over 1e300 years. We present a novel approach to detecting all dependencies between test cases in large projects that can enable safe exploitation of parallelism and test selection with a modest analysis cost.
Jonathan Bell 0001, Gail E. Kaiser, Eric Melski, Mohan Dattatreya
ESEC/SIGSOFT FSE2
2014 Unit test virtualization with VMVM
abstract
Testing large software packages can become very time intensive. To address this problem, researchers have investigated techniques such as Test Suite Minimization. Test Suite Minimization reduces the number of tests in a suite by removing tests that appear redundant, at the risk of a reduction in fault-finding ability since it can be difficult to identify which tests are truly redundant. We take a completely different approach to solving the same problem of long running test suites by instead reducing the time needed to execute each test, an approach that we call Unit Test Virtualization. With Unit Test Virtualization, we reduce the overhead of isolating each unit test with a lightweight virtualization container. We describe the empirical analysis that grounds our approach and provide an implementation of Unit Test Virtualization targeting Java applications. We evaluated our implementation, VMVM, using 20 real-world Java applications and found that it reduces test suite execution time by up to 97% (on average, 62%) when compared to traditional unit test execution. We also compared VMVM to a well known Test Suite Minimization technique, finding the reduction provided by VMVM to be four times greater, while still executing every test with no loss of fault-finding ability.
Jonathan Bell 0001, Gail E. Kaiser
ICSE2
2014 Us and them: a study of privacy requirements across north america, asia, and europe
abstract
Data privacy when using online systems like Facebook and Amazon has become an increasingly popular topic in the last few years. However, only a little is known about how users and developers perceive privacy and which concrete measures would mitigate their privacy concerns. To investigate privacy requirements, we conducted an online survey with closed and open questions and collected 408 valid responses. Our results show that users often reduce privacy to security, with data sharing and data breaches being their biggest concerns. Users are more concerned about the content of their documents and their personal data such as location than about their interaction data. Unlike users, developers clearly prefer technical measures like data anonymization and think that privacy laws and policies are less effective. We also observed interesting differences between people from different geographies. For example, people from Europe are more concerned about data breaches than people from North America. People from Asia/Pacific and Europe believe that content and metadata are more critical for privacy than people from North America. Our results contribute to developing a user-driven privacy framework that is based on empirical evidence in addition to the legal, technical, and commercial perspectives.
Swapneel Sheth, Gail E. Kaiser, Walid Maalej
ICSE2
2014 Phosphor: illuminating dynamic data flow in commodity jvms
abstract
Dynamic taint analysis is a well-known information flow analysis problem with many possible applications. Taint tracking allows for analysis of application data flow by assigning labels to data, and then propagating those labels through data flow. Taint tracking systems traditionally compromise among performance, precision, soundness, and portability. Performance can be critical, as these systems are often intended to be deployed to production environments, and hence must have low overhead. To be deployed in security-conscious settings, taint tracking must also be sound and precise. Dynamic taint tracking must be portable in order to be easily deployed and adopted for real world purposes, without requiring recompilation of the operating system or language interpreter, and without requiring access to application source code.
Jonathan Bell 0001, Gail E. Kaiser
OOPSLA2
2014 Pebbles: Fine-Grained Data Management Abstractions for Modern Operating Systems
Riley Spahn, Jonathan Bell 0001, Sravan Bhamidipati, Roxana Geambasu, Gail E. Kaiser
OSDI6
2013 A competitive-collaborative approach for introducing software engineering in a CS2 class
abstract
Introductory Computer Science (CS) classes are typically competitive in nature. The cutthroat nature of these classes comes from students attempting to get as high a grade as possible, which may or may not correlate with actual learning. Further, there is very little collaboration allowed in most introductory CS classes. Most assignments are completed individually since many educators feel that students learn the most, especially in introductory classes, by working alone. In addition to completing “normal” individual assignments, which have many benefits, we wanted to expose students to collaboration early (via, for example, team projects). In this paper, we describe how we leveraged competition and collaboration in a CS2 class to help students learn aspects of computer science better - in this case, good software design and software testing - and summarize student feedback.
Swapneel Sheth, Jonathan Bell 0001, Gail E. Kaiser
CSEE&T3
2013 Chronicler: lightweight recording to reproduce field failures
abstract
When programs fail in the field, developers are often left with limited information to diagnose the failure. Automated error reporting tools can assist in bug report generation but without precise steps from the end user it is often difficult for developers to recreate the failure. Advanced remote debugging tools aim to capture sufficient information from field executions to recreate failures in the lab but often have too much overhead to practically deploy. We present Chronicler, an approach to remote debugging that captures non-deterministic inputs to applications in a lightweight manner, assuring faithful reproduction of client executions. We evaluated Chronicler by creating a Java implementation, ChroniclerJ, and then by using a set of benchmarks mimicking real world applications and workloads, showing its runtime overhead to be under 10% in most cases (worst case 86%), while an existing tool showed overhead over 100% in the same cases (worst case 2,322%).
Jonathan Bell 0001, Nikhil Sarda, Gail E. Kaiser
ICSE3
2011 Constructing Subtle Concurrency Bugs Using Synchronization-Centric Second-Order Mutation Operators
Leon Wu, Gail E. Kaiser
SEKE2
2011 BUGMINER: Software Reliability Analysis Via Data Mining of Bug Reports
Leon Wu, Boyi Xie, Gail E. Kaiser, Rebecca J. Passonneau
SEKE3
2011 Testing and validating machine learning classifiers by metamorphic testing
Xiaoyuan Xie, Joshua W. K. Ho, Christian Murphy, Gail E. Kaiser, Baowen Xu, Tsong Yueh Chen
J. Syst. Softw.4
2010 Configuration Fuzzing for Software Vulnerability Detection
abstract
Many software security vulnerabilities only reveal themselves under certain conditions, i.e., particular configurations of the software together with its particular runtime environment. One approach to detecting these vulnerabilities is fuzz testing, which feeds a range of randomly modified inputs to a software application while monitoring it for failures. However, typical fuzz testing makes no guarantees regarding the syntactic and semantic validity of the input, or of how much of the input space will be explored. To address these problems, in this paper we present a new testing methodology called configuration fuzzing. Configuration fuzzing is a technique whereby the configuration of the running application is randomly modified at certain execution points, in order to check for vulnerabilities that only arise in certain conditions. As the application runs in the deployment environment, this testing technique continuously fuzzes the configuration and checks "security invariants" that, if violated, indicate a vulnerability; however, the fuzzing is performed in a duplicated copy of the original process, so that it does not affect the state of the running application. In addition to discussing the approach and describing a prototype framework for implementation, we also present the results of a case study to demonstrate the approach's efficiency.
Huning Dai, Christian Murphy, Gail E. Kaiser
ARES3
2009 Quality Assurance of Software Applications Using the In Vivo Testing Approach
abstract
Software products released into the field typically have some number of residual defects that either were not detected or could not have been detected during testing. This may be the result of flaws in the test cases themselves, incorrect assumptions made during the creation of test cases, or the infeasibility of testing the sheer number of possible configurations for a complex system; these defects may also be due to application states that were not considered during lab testing, or corrupted states that could arise due to a security violation. One approach to this problem is to continue to test these applications even after deployment, in hopes of finding any remaining flaws. In this paper, we present a testing methodology we call in vivo testing, in which tests are continuously executed in the deployment environment. We also describe a type of test we call in vivo tests that are specifically designed for use with such an approach: these tests execute within the current state of the program (rather than by creating a clean slate) without affecting or altering that state from the perspective of the end-user. We discuss the approach and the prototype testing framework for Java applications called Invite. We also provide the results of case studies that demonstrate Invite's effectiveness and efficiency.
Christian Murphy, Gail E. Kaiser, Ian Vo, Matt Chu
ICST2
2009 Using JML Runtime Assertion Checking to Automate Metamorphic Testing in Applications without Test Oracles
abstract
It is challenging to test applications and functions for which the correct output for arbitrary input cannot be known in advance, e.g. some computational science or machine learning applications. In the absence of a test Oracle, one approach to testing these applications is to use metamorphic testing: existing test case input is modified to produce new test cases in such a manner that, when given the new input, the application should produce an output that can be easily be computed based on the original output. That is, if input x produces output f(x), then we create input x' such that we can predict f(x') based on f(x); if the application or function does not produce the expected output, then a defect must exist, and either f(x) or f(x') (or both) is wrong. By using metamorphic testing, we are able to provide built-in "pseudo-oracles" for these so-called "nontestable programs" that have no test oracles.In this paper, we describe an approach in which a function's metamorphic properties are specified using an extension to the Java modeling language (JML), a behavioral interface specification language that is used to support the "design by contract" paradigm in Java applications. Our implementation, called Corduroy, pre-processes these specifications and generates test code that can be executed using JML runtime assertion checking, for ensuring that the specifications hold during program execution. In addition topresenting our approach and implementation, we also describe our findings from case studies in which we apply our technique to applications without test oracles.
Christian Murphy, Kuang Shen, Gail E. Kaiser
ICST3
2009 Automatic system testing of programs without test oracles
abstract
Metamorphic testing has been shown to be a simple yet effective technique in addressing the quality assurance of applications that do not have test oracles, i.e., for which it is difficult or impossible to know what the correct output should be for arbitrary input. In metamorphic testing, existing test case input is modified to produce new test cases in such a manner that, when given the new input, the application should produce an output that can easily be computed based on the original output. That is, if input x produces output f(x), then we create input x' such that we can predict f(x') based on f(x); if the application does not produce the expected output, then a defect must exist, and either f(x), or f(x') (or both) is wrong.
Christian Murphy, Kuang Shen, Gail E. Kaiser
ISSTA3
2009 Retina: helping students and instructors based on observed programming activities
abstract
It is difficult for instructors of CS1 and CS2 courses to get accurate answers to such critical questions as "how long are students spending on programming assignments?", or "what sorts of errors are they making?" At the same time, students often have no idea of where they stand with respect to the rest of the class in terms of time spent on an assignment or the number or types of errors that they encounter. In this paper, we present a tool called Retina, which collects information about students' programming activities, and then provides useful and informative reports to both students and instructors based on the aggregation of that data. Retina can also make real-time recommendations to students, in order to help them quickly address some of the errors they make. In addition to describing Retina and its features, we also present some of our initial findings during two trials of the tool in a real classroom setting.
Christian Murphy, Gail E. Kaiser, Kristin Loveland, Sahar Hasan
SIGCSE2
2008 Distributed In Vivo Testing of Software Applications
abstract
The in vivo software testing methodology focuses on testing live applications by executing unit tests throughout the lifecycle, including after deployment. The motivation is that the "known state " approach of traditional unit testing is not always sufficient; deployed applications rarely operate under such conditions, and it may be more informative to perform the testing in live environments. One of the limitations of this approach is the high performance cost it incurs, as the unit tests are executed in parallel with the application. Here we present distributed in vivo testing, which focuses on easing the burden by sharing the load across multiple instances of the application of interest. That is, we elevate the scope of in vivo testing from a single instance to a community of instances, all participating in the testing process. Our approach is different from prior work in that we are actively testing during execution, as opposed to passively monitoring the application or conducting tests in the user environment prior to operation. We discuss new extensions to the existing in vivo testing framework (called Invite) and present empirical results that show the performance overhead improves linearly with the number of clients.
Matt Chu, Christian Murphy, Gail E. Kaiser
ICST3
2008 A distance learning approach to teaching eXtreme programming
abstract
As university-level distance learning programs become more and more popular, and software engineering courses incorporate eXtreme Programming (XP) into their curricula, certain challenges arise when teaching XP to students who are not physically co-located. In this paper, we present the results of a three-year study of such an online software engineering course targeted to graduate students, and describe some of the specific challenges faced, such as students' aversion to aspects of XP and difficulties in scheduling. We discuss our findings in terms of the course's educational objectives, and present suggestions to other educators who may face similar situations.
Christian Murphy, Dan B. Phung, Gail E. Kaiser
ITiCSE3
2008 Properties of Machine Learning Applications for Use in Metamorphic Testing
Christian Murphy, Gail E. Kaiser, Lifeng Hu, Leon Wu
SEKE2
2008 Backstop: a tool for debugging runtime errors
abstract
The errors that Java programmers are likely to encounter can roughly be categorized into three groups: compile-time (semantic and syntactic), logical, and runtime (exceptions). While much work has focused on the first two, there are very few tools that exist for interpreting the sometimes cryptic messages that result from runtime errors. Novice programmers in particular have difficulty dealing with uncaught exceptions in their code and the resulting stack traces, which are by no means easy to understand. We present Backstop, a tool for debugging runtime errors in Java applications. This tool provides more user-friendly error messages when an uncaught exception occurs, and also provides debugging support by allowing users to watch the execution of the program and the changes to the values of variables. We also present the results of two preliminary studies conducted on introductory-level programmers using the two different features of the tool.
Christian Murphy, Gail E. Kaiser, Adam Cannon
SIGCSE3
2007 An Approach to Software Testing of Machine Learning Applications
Chris Murphy, Gail E. Kaiser, Marta Arias
SEKE2
2006 Dynamic Adaptation of Temporal Event Correlation for QoS Management in Distributed Systems
abstract
Temporal event correlation is essential to managing quality of service in distributed systems, especially correlating events from multiple components to detect problems with availability, performance, and denial of service attacks. Two challenges in temporal event correlation are: (1) handling lost events and (2) dealing with inaccurate clocks. We show that both challenges are related to event propagation delays that result from contention for network and server resources. We develop an approach to adjusting the timer values of event correlation rules based on propagation delays in order to reduce missed alarms and false alarms. Our approach has three parts: an infrastructure for real-time measurement of propagation delay, a statistical approach to estimating propagation delays, and a controller that uses estimates of propagation delays to update timer values in temporal rules. Our approach eliminates the need for manual adjustments of timer values. Further, studies of a prototype implementation suggest that our approach produces results that are at least as good as an optimal fixed adjustment in timer values
Rean Griffith, Joseph L. Hellerstein, Gail E. Kaiser, Yixin Diao
IWQoS3
2006 Automated Information Aggregation for Scaling Scale-Resistant Services
abstract
Machine learning provides techniques to monitor system behavior and predict failures from sensor data. However, such algorithms are "scale resistant" $high computational complexity and not parallelizable. The problem then becomes identifying and delivering the relevant subset of the vast amount of sensor data to each monitoring node, despite the lack of explicit "relevance" labels. The simplest solution is to deliver only the "closest" data items under some distance metric. We demonstrate a better approach using a more sophisticated architecture: a scalable data aggregation and dissemination overlay network uses an influence metric reflecting the relative influence of one node's data on another, to efficiently deliver a mix of raw and aggregated data to the monitoring components, enabling the application of machine learning tools on real-world problems. We term our architecture level of detail after an analogous computer graphics technique
Philip Gross, Gail E. Kaiser
ASE2
2006 Verifying genre-based clustering approach to content extraction
abstract
The content of a webpage is usually contained within a small body of text and images, or perhaps several articles on the same page; however, the content may be lost in the clutter, particularly hurting users browsing on small cell phone and PDA screens and visually impaired users relying on speed rendering of web pages. Using the genre of a web page, we have created a solution, Crunch that automatically identifies clutter and removes it, thus leaving a clean content-full page. In order to evaluate the improvement in the applications for this technology, we identified a number of experiments. In this paper, we have those experiments, the associated results and their evaluation.
Suhit Gupta, Hila Becker, Gail E. Kaiser, Salvatore J. Stolfo
WWW3
2005 A control theory foundation for self-managing computing systems
abstract
The high cost of operating large computing installations has motivated a broad interest in reducing the need for human intervention by making systems self-managing. This paper explores the extent to which control theory can provide an architectural and analytic foundation for building self-managing systems. Control theory provides a rich set of methodologies for building automated self-diagnosis and self-repairing systems with properties such as stability, short settling times, and accurate regulation. However, there are challenges in applying control theory to computing systems, such as developing effective resource models, handling sensor delays, and addressing lead times in effector actions. We propose a deployable testbed for autonomic computing (DTAC) that we believe will reduce the barriers to addressing research problems in applying control theory to computing systems. The initial DTAC architecture is described along with several problems that it can be used to investigate.
Yixin Diao, Joseph L. Hellerstein, Sujay S. Parekh, Rean Griffith, Gail E. Kaiser, Dan B. Phung
IEEE J. Sel. Areas Commun.5
2005 Automating Content Extraction of HTML Documents
Suhit Gupta, Gail E. Kaiser, Peter Grimm, Michael F. Chiang, Justin Starren
World Wide Web2
2003 GESDOR - A Generic Execution Model for Sharing of Computer-Interpretable Clinical Practice Guidelines
Dongwen Wang, Mor Peleg, Davis Bu, Michael N. Cantor, Giora Landesberg, Eitan Lunenfeld, Samson W. Tu, Gail E. Kaiser, George Hripcsak, Vimla L. Patel, Edward H. Shortliffe
AMIA8
2003 Using Process Technology to Control and Coordinate Software Adaptation
abstract
We have developed an infrastructure for end-to-end run-time monitoring, behavior/performance analysis, and dynamic adaptation of distributed software. This infrastructure is primarily targeted to pre-existing systems and thus operates outside the target application, without making assumptions about the target's implementation, internal communication/computation mechanisms, source code availability, etc. This paper assumes the existence of the monitoring and analysis components, presented elsewhere, and focuses on the mechanisms used to control and coordinate possibly complex repairs/reconfigurations to the target system. These mechanisms require lower-level effectors somehow attached to the target system, so we briefly sketch one such facility (elaborated elsewhere). Our main contribution is the model, architecture, and implementation of Workflakes, the decentralized process engine we use to tailor, control, coordinate, etc. a cohort of such effectors. We have validated the Workflakes approach with case studies in several application domains. Due to space restrictions we concentrate primarily on one case study, briefly discuss a second, and only sketch others.
Giuseppe Valetto, Gail E. Kaiser
ICSE2
2003 DOM-based content extraction of HTML documents
abstract
Web pages often contain clutter (such as pop-up ads, unnecessary images and extraneous links) around the body of an article that distracts a user from actual content. Extraction of "useful and relevant" content from web pages has many applications, including cell phone and PDA browsing, speech rendering for the visually impaired, and text summarization. Most approaches to removing clutter or making content more readable involve changing font size or removing HTML and data components such as images, which takes away from a webpage's inherent look and feel. Unlike "Content Reformatting", which aims to reproduce the entire webpage in a more convenient form, our solution directly addresses "Content Extraction". We have developed a framework that employs easily extensible set of techniques that incorporate advantages of previous work on content extraction. Our key insight is to work with the DOM trees, rather than with raw HTML markup. We have implemented our approach in a publicly available Web proxy to extract content from HTML web pages.
Suhit Gupta, Gail E. Kaiser, David Neistadt, Peter Grimm
WWW2
2000 A Combined Curriculum Research and Curriculum Development Approach to Software Engineering Education
abstract
Since 1996 the authors have had great success combining software engineering research and software engineering education. This effort introduces new research and experimental areas into the curriculum along with the means to evolve and refine current practices. The curriculum itself becomes a valuable research area with direct applications to real-world practice. The approach in particular tries to deal with four fundamental issues within software engineering and software engineering education. There are Exposing students to a no-surprises full lifecycle software engineering experience. Dealing with the increasing distribution and diversity of students. Providing students a non-trivial real-world customer-based development experience within the constraints of the university. Introducing software engineering research and industry best practices into the curriculum.
Barry W. Boehm, Gail E. Kaiser, Daniel Port
CSEE&T2
1999 JPernLite: Extensible Transaction Services for the WWW
abstract
Concurrency control is one of the key problems in design and implementation of collaborative systems such as hypertext/hypermedia systems, CAD/CAM systems, and software development environments. Most existing systems store data in specialized databases with built-in concurrency control policies, usually implemented via locking. It is desirable to construct such collaborative systems on top of the World Wide Web, but most Web servers do not support even conventional transactions, let alone distributed (multi-Website) transactions or flexible concurrency control mechanisms oriented toward team work-such as event notification, shared locks, and fine granularity locks. We present a transaction server that operates independently of Web servers or the collaborative systems, to fill the concurrency control gap. By default, the transaction server enforces the conventional atomic transaction model, where sets of operations are performed in an all-or-nothing fashion and isolated from concurrent users. The server can be tailored dynamically to apply more sophisticated concurrency control policies appropriate for collaboration. The transaction server also supports applications employing information resources other than Web servers, such as legacy databases, CORBA objects, and other hypermedia systems. Our implementation permits a wide range of system architecture styles.
Jack Jingshuang Yang, Gail E. Kaiser
IEEE Trans. Knowl. Data Eng.2
1998 Federating Process-Centered Environments: The Oz Experience
Israel Ben-Shaul, Gail E. Kaiser
Autom. Softw. Eng.2
1998 WWW-Based Collaboration Environments with Distributed Tool Services
Gail E. Kaiser, Stephen E. Dossick, Jack Jingshuang Yang, Sonny Xi Ye
World Wide Web1
1997 The CORD Appraoch to Extensible Concurrency Control
abstract
Database management systems (DBMSs) have been increasingly used for advanced application domains, such as software development environments, workflow management systems, computer-aided design and manufacturing, and managed healthcare. In these domains, the standard correctness model of serializability is often too restrictive. The authors introduce the notion of a concurrency control language (CCL) that allows a database application designer to specify concurrency control policies to tailor the behavior of a transaction manager. A well-crafted set of policies defines an extended transaction model. The necessary semantic information required by the CCL run-time engine is extracted from a task manager, a (logical) module by definition included in all advanced applications. This module stores task models that encode the semantic information about the transactions submitted to the DBMS. They have designed a rule-based CCL, called CORD, and have implemented a run-time engine that can be hooked to a conventional transaction manager to implement the sophisticated concurrency control required by advanced database applications. They present an architecture for systems based on CORD and describe how they integrated the CORD engine with the Exodus Storage Manager to implement altruistic locking.
George T. Heineman, Gail E. Kaiser
ICDE2
1997 An Architecture for WWW-based Hypercode Environments
abstract
A hypercode software engineering environment represents all plausible multimedia artifacts concerned with software development and evolution that can be placed or generated on-line, from source code to formal documentation to digital library resources to informal email and chat transcripts.A hypercode environment supports both internal (hypertext) and external (link server) links among these artifacts, which can be added incrementally as useful connections are discovered; project-specific hypermedia search and browsing; automated construction of artifacts and hyperlinks according the software process; application of tools to the artifacts according to the process workflow; and collaborative work for geographically dispersed teams.We present a general architecture for what we call hypermedia subwebs, and groupspace services operating on shared subwebs, based on World Wide Web technology -which could be applied over the Internet or within an intranet.We describe our realization in OzWeb.
Gail E. Kaiser, Stephen E. Dossick, Jack Jingshuang Yang
ICSE1
1996 Enveloping Sophisticated Tools into Process-Centered Environments
Giuseppe Valetto, Gail E. Kaiser
Autom. Softw. Eng.2
1996 WWW Access to Legacy Client/Server Applications
Stephen E. Dossick, Gail E. Kaiser
Comput. Networks2
1996 An Architecture for Integrating OODBs with WWW
Jack Jingshuang Yang, Gail E. Kaiser
Comput. Networks2
1995 An Architecture for Integrating Concurrency Control into Environment Frameworks
abstract
Layered and componentized systems promise substantial benefits from dividing responsibilities, but it is still unresolved how to construct a system from pre-ezisting, independently developed pieces.Good solutions to this problem, in general or for specific classes of components, should reduce duplicate implementation efforts and promote reuse of large scale subsystems.We tackle the domain of software development environments and present an architecture for retrofitting external concurrency control components onto existing environment frameworks.We describe a sample ECC component, explain how we added concurrency control to a commercial product that had none, and briefly sketch how we replaced the concurrency control mechanism of a research system.
George T. Heineman, Gail E. Kaiser
ICSE2
1995 Divergence Control for Distributed Database Systems
Wenwey Hseush, Gail E. Kaiser, Calton Pu, Kun-Lung Wu, Philip S. Yu
Distributed Parallel Databases2
1994 A Paradigm for Decentralized Process Modeling and Its Realization in the Oz Environment
Israel Ben-Shaul, Gail E. Kaiser
ICSE2
1994 Incremental Process Support for Code Reengineering
abstract
Reengineering a large code base can be a monumental task, and the situation becomes even worse if the code is concomitantly being modified. Since January 1992, we have been using the MARVEL process centered environment (PCE) for all of our software development, and are currently using it to develop the Oz PCE (MARVEL's successor). Towards this effort, we are reengineering Oz's code base to isolate the process engine, transaction manager, and object management system as separate components that can be used in arbitrary systems. In this paper, we show how a PCE can assist teams of users in carrying out code reengineering while allowing them to continue their normal code development. The key features to this approach are its incremental nature and the ability of the PCE to automate most of the tasks necessary to maintain the consistency of the code base.>
George T. Heineman, Gail E. Kaiser
ICSM2
1994 Extending Attribute Grammars to Support Programming-in-the-Large
abstract
Attribute grammars add specification of static semantic properties to context-free grammars, which, in turn, describe the syntactic structure of program units. However, context-free grammars cannot express programming-in-the-large features common in modern programming languages, including unordered collections of units, included units, and sharing of included units. We present extensions to context-free grammars, and corresponding extensions to attribute grammars, suitable for defining such features. We explain how batch and incremental attribute-evaluation algorithms can be adapted to support these extensions, resulting in a uniform approach to intraunit and interunit static semantic analysis and translation of multiunit programs.
Josephine Micallef, Gail E. Kaiser
ACM Trans. Program. Lang. Syst.2
1993 Distributed Divergence Control for Epsilon Serializability
abstract
Epsilon serializability (ESR) allows for more concurrency by permitting nonserializable interleavings of database operations among epsilon transactions (ETs). The authors present the design of distributed divergence control (DDC) algorithms for ESR in homogeneous and heterogeneous distributed databases. They first present a strict two-phase locking DDC algorithm (S2PLDDC) and an optimistic DDC algorithm (ODDC) for homogeneous distributed databases, where the local orderings of all the sub-ETs of a distributed ET are the same, and the total inconsistency of a distributed ET is simply the sum of that of all its sub-ETs. A superdatabase DDC algorithm is described for heterogeneous distributed databases, where the local orderings of all the sub-ETs of a distributed ET may not be the same, and the total inconsistency of a distributed ET may be greater than the sum of that of all its sub-ETs. As a result, in addition to local divergence control in each site, a global mechanism is needed to guarantee ESR.>
Calton Pu, Wenwey Hseush, Gail E. Kaiser, Kun-Lung Wu, Philip S. Yu
ICDCS3
1993 A Bi-Level Language for Software Process Modeling
Gail E. Kaiser, Steven S. Popovich, Israel Ben-Shaul
ICSE1
1993 Parallel and Distributed Incremental Attribute Evaluation Algorithms for Multiuser Software Development Environments
abstract
The problem of change propagation in multiuser software development environments distributed across a local-area network is addressed. The program is modeled as an attributed parse tree segmented among multiple user processes and changes are modeled as subtree replacements requested asynchronously by individual users. Change propagation is then implemented using decentralized incremental evaluation of an attribute grammar that defines the static semantic properties of the programming language. Building up to our primary result, we first present algorithms that support parallel evaluation on a centralized tree in response to single edits using a singe editing cursor and multiple edits with multiple editing cursors. Then we present our algorithm for parallel evaluation on a decentralized tree. We also present a protocol to guarantee reliability of the evaluation algorithm as components of the decentralized tree become unavailable due to failures and return to availability.
Gail E. Kaiser, Simon M. Kaplan
ACM Trans. Softw. Eng. Methodol.1
1993 Support Algorithms for Incremental Attribute Evaluation of Asynchronous Subtree Replacements
abstract
A solution to the problem of incremental attribute evaluation for multiple asynchronous subtree replacements that is applicable to arbitrary noncircular attribute grammars is discussed. The algorithm supports multiple independent editing cursors. Concurrent evaluation processes proceed independently as long as they cover disjoint regions of the derivation tree. Evaluation processes are merged when they overlap, to prevent unnecessary attribute evaluations. The complexity of these three parts of the algorithm is discussed. The algorithm ensures that when evaluation terminates, the tree is consistently attributed. The results solve two open problems that arose in connection with the original algorithm for asynchronous subtree replacements reported by S.M. Kaplan and G.F. Kaiser (1986).>
Josephine Micallef, Gail E. Kaiser
IEEE Trans. Software Eng.2
1992 Ensuring Semantic Integrity of Reusable Objects (Panel)
abstract
article Free Access Share on Ensuring semantic integrity of reusable objects (panel) Authors: Webb Stacy View Profile , Richard Helm View Profile , Gail E. Kaiser View Profile , Bertrand Meyer View Profile Authors Info & Claims ACM SIGPLAN NoticesVolume 27Issue 10Oct. 1992 pp 298–302https://doi.org/10.1145/141937.141961Online:31 October 1992Publication History 4citation292DownloadsMetricsTotal Citations4Total Downloads292Last 12 Months2Last 6 weeks1 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF
Webb Stacy, Richard Helm, Gail E. Kaiser, Bertrand Meyer 0001
OOPSLA3
1992 An Architectural Survey of Object Management Systems
abstract
Much work has been done in the last decade in the related areas of object-oriented programming languages and object-oriented databases. Researchers from both areas now seem to be working toward a common end, that of an object management system, or OMS. An OMS is constructed similarly to an OODB but provides a general purpose concurrent object-oriented programming language as well, complementing the OODB query facilities. In this paper, we will define several different types of object systems (object servers, persistent OOPL’s, OODB’s and OMS’s) in terms of their interfaces and capabilities from the viewpoint of how these support the requirements of cooperative information systems. We will examine the distinguishing features and general architecture of systems of each type in the light of a general model of OMS architecture.
Steven S. Popovich, Gail E. Kaiser
Int. J. Cooperative Inf. Syst.2
1992 Scaling up Rule-Based Software Development Environments
abstract
Rule-based software development environments (RBDEs) model the software development process in terms of rules that encapsulate development activities, and assist in executing the process via forward and backward chaining over the rule base. We investigate the scaling up of RBDEs to support (1) multiple views of the rule base for multiple users and (2) evolution of the rule base over the lifetime of a project. Our approach is based on clarifying two distinct functions of rules and chaining: maintaining consistency and automation. By definition, consistency is mandatory whereas automation is not. Distinguishing the consistency and automation aspects of RBDE assistance mechanisms makes it possible to formalize the range of compatible views and the scope of mechanizable evolution steps. Throughout the paper, we use the MARVEL RBDE as an example application.
Naser S. Barghouti, Gail E. Kaiser
Int. J. Softw. Eng. Knowl. Eng.2
1992 An Object-Based Programming Model for Shared Data
abstract
The classical object model supports private data within objects and clean interfaces between objects, and by definition does not permit sharing of data among arbitrary objects. This is a problem for real-world applications, such as advanced financial services and integrated network management, where the same data logically belong to multiple objects and may be distributed over multiple nodes on the network. Rather than give up the advantages of encapsulated objects in modeling real-world entities, we propose a new object model that supports shared data in a distributed environment. The key is separating distribution of computation units from information-hiding concerns. Minimal units of data and control, called facets , may be shared among multiple objects and are grouped into processes . Thus, a single object, or information-hiding unit, may be distributed among multiple processes, or computation units. In other words, different facets of the same object may reside in different address spaces on different machines. We introduce our new object model, describe a motivating example from the financial domain, and then explain facets, objects, and processes, followed by timing and synchronization concerns.
Gail E. Kaiser, Brent Hailpern
ACM Trans. Program. Lang. Syst.1
1991 Dynamic reconfiguration in an object-based programming language with distributed shared data
abstract
An approach to dynamic reconfiguration in online distributed applications based on a data sharing model is presented. The data sharing model consists of facets, objects, and processes, with facets as the unit of sharing. The primary contribution of this work is the addition of important special cases of dynamic reconfiguration, without resorting to general dynamic allocation. A metaphor consistent with PROFIT's data sharing model for expressing dynamic reconfiguration facilities within the programming language is proposed.>
Brent Hailpern, Gail E. Kaiser
ICDCS2
1991 An object-based approach to implementing distributed concurrency control
abstract
Distributed concurrency control has been implemented by representing in-progress transactions as simulated objects, called transaction objects, that use normal message passing facilities. The implementation of an optimistic mechanism has been completed using transaction objects and a two-phase locking mechanism has been designed. The tradeoffs made and lessons learned, dealing with transactions both on objects and as objects, are discussed.>
Steven S. Popovich, Shyhtsun Felix Wu, Gail E. Kaiser
ICDCS3
1991 An Information Retrieval Approach For Automatically Constructing Software Libraries
abstract
A technology for automatically assembling large software libraries which promote software reuse by helping the user locate the components closest to her/his needs is described. Software libraries are automatically assembled from a set of unorganized components by using information retrieval techniques. The construction of the library is done in two steps. First, attributes are automatically extracted from natural language documentation by using an indexing scheme based on the notions of lexical affinities and quantity of information. Then a hierarchy for browsing is automatically generated using a clustering technique which draws only on the information provided by the attributes. Due to the free-text indexing scheme, tools following this approach can accept free-style natural language queries.>
Yoelle Maarek, Daniel M. Berry, Gail E. Kaiser
IEEE Trans. Software Eng.3
1991 Models of Software Development Environments
abstract
A general model of software development environments that consists of structures, mechanisms, and policies is presented. The advantage of this model is that it distinguishes intuitively those aspects of an environment that are useful in comparing and contrasting software development environments. Four classes of environments-the individual, the family, the city. and the state-are characterized by means of a sociological metaphor based on scale. The utility of the taxonomy is that it delineates the important classes of interactions among software developers and exposes the ways in which current software development environments inadequately support the development of large systems. The generality of the model is demonstrated by its application to a previously published taxonomy that categorizes environments according to how they relate to language-centered, structure-oriented, toolkit, and method-based environments.>
Dewayne E. Perry, Gail E. Kaiser
IEEE Trans. Software Eng.2
1990 A Flexible Transaction Model for Software Engineering
abstract
It is generally recognized that the classical transaction model, providing atomicity and serializability, is too strong for certain application areas since it unnecessarily restricts concurrency. The author is concerned with supporting cooperative work in multiuser design environments, particularly teams of programmers cooperating to develop and maintain software systems. An extended transaction model that meets the special requirements of software engineering projects is presented, possible implementation techniques are described, and a number of issues regarding the incorporation of such a model into multiuser software development environments are discussed.>
Gail E. Kaiser
ICDE1
1990 Interactively supporting the software process
Simon M. Kaplan, Anthony Finkelstein, Gail E. Kaiser, Kevin Ryan, Wilhelm Schäfer
INTERACT3
1990 Modeling Concurrency in Parallel Debugging
abstract
We propose a description language, Data Path Expressions (DPEs), for modeling the behavior of parallel programs. We have designed DPEs as a high-level debugging language, where the debugging paradigm is for the programmer to describe the expected program behavior and for the debugger to compare the actual program behavior during execution to detect program errors. We classify DPEs into five subclasses according to syntactic criteria, and characterize their semantics in terms of a hierarchy of extended Petri Net models. The characterization demonstrates the power of DPEs for modeling (true) concurrency. We also present predecessor automata as a mechanism for implementing the third subclass of DPEs, which expresses bounded parallelism. Predecessor automata extend finite state automata to recognize or generate partial ordering graphs as well as strings, and provide efficient event recognizers for parallel debugging. We briefly describe the application of DPEs race conditions, deadlock and starvation.
Wenwey Hseush, Gail E. Kaiser
PPoPP2
1989 Infuse: fusing integration test management with change management
abstract
Infuse is an experimental software development environment focusing on change coordination during the maintenance/evolution phase of large-scale software projects. Its core philosophy is to integrate strongly connected modules first and more weakly connected sets of modules later, moving up a hierarchy from singletons to clusters of interdependent modules and, finally, merging the change set into the baseline. The use of Infuse is extended to dynamic consistency, i.e. testing. Unit testing is done for the individual modules at the leaves of the hierarchy, integration testing for the intermediate clusters and acceptance testing at the root. Infuse supports this by partially automating the construction of test harnesses and regression test suites at each level of the hierarchy from components available from lower levels. Infuse is implemented in C and is used to support its own evolution, but the implementation does not yet provide the test management described.>
Gail E. Kaiser, Dewayne E. Perry, William M. Schell
COMPSAC1
1989 MELDing Multiple Granularities of Parallelism
Gail E. Kaiser, Steven S. Popovich, Wenwey Hseush, Shyhtsun Felix Wu
ECOOP1
1989 Testing Reliable Distributed Applications Through Simulated Events
abstract
There are many distributed applications that incorporate application-specific reliability algorithms that operate on top of general-purpose networking, operating system, and programming language facilities. The authors present a framework for application-level reliability testing suitable for a wide range of distributed applications using low-level events and the automatic generation of series of these events. They also describe how they used this testing approach for a particular application.>
Travis L. Winfrey, Gail E. Kaiser
SRDS2
1989 Incremental Dynamic Semantics for Language-Based Programming Environments
abstract
Attribute grammars are a formal notation for expressing the static semantics of programming languages—those properties that can be derived from inspection of the program text. Attribute grammars have become popular as a mechanism for generating language-based programming environments that incrementally perform symbol resolution, type checking, code generation, and derivation of other static semantic properties as the program is modified. However, attribute grammars are not suitable for expressing dynamic semantics—those properties that reflect the history of program execution and/or user interactions with the programming environment. This paper presents action equations , an extension of attribute grammars suitable for specifying the static and the dynamic semantics of programming languages. It describes how action equations can be used to generate language-based programming environments that incrementally derive static and dynamic properties as the user modifies and debugs th e program.
Gail E. Kaiser
ACM Trans. Program. Lang. Syst.1
1988 Garp: Graph Abstractions for Concurrent Programming
Simon M. Kaplan, Gail E. Kaiser
ESOP2
1988 Rapid Prototyping of Concurrent Programming Languages
abstract
A novel approach is proposed for automatic generation of concurrent interpreters for formal specifications of the programming languages. It consists of a formal notation and supporting algorithms. The formal notation is called action equations, which are attribute grammars extended by the concepts of events and unification. The supporting algorithms include preprocessing algorithms to generate the interpreters and evaluation algorithms embedded in the generated interpreters. Attribute grammars are reviewed, the extension to the action equations paradigm is explained, and the synthesis of action equations with a unification strategy as a means for specifying and implementing synchronization primitives is presented. The approach is illustrated by a specification of CSP. A brief comparison to related work is included.>
Gail E. Kaiser, Simon M. Kaplan
ICDCS1
1988 Models of Software Development Environments
Dewayne E. Perry, Gail E. Kaiser
ICSE2
1988 Split-Transactions for Open-Ended Activities
Calton Pu, Gail E. Kaiser, Norman C. Hutchinson
VLDB2
1988 A Retrospective on DOSE: An Interpretive Approach to Structure Editor Generation
abstract
Abstract DOSE is unique among structure editor generatiors in its interpretive approach. This approach leads to very fast turn‐around time for changes and provides multi‐language facilities for no aditional effort or cost. This article compares the interpretive approach to the compilation approach of other structure editor generators. It describes some of the design and implementation decisions made and remade durign this project and the lessons learned. It emphasizes the advantages and disadvantages of DOSE with respect to other structure editing systems.
Gail E. Kaiser, Peter H. Feiler, Fahimeh Jalili, Johann H. Schlichter
Softw. Pract. Exp.1
1988 Smarter Recompilation
abstract
Tichy's Smart Recompilation method can be made smarter by permitting benign type inconsistencies between separately compiled modules. This enhanced method helps the programmer to make far-reaching changes in small, manageable steps.
Robert W. Schwanke, Gail E. Kaiser
ACM Trans. Program. Lang. Syst.2
1987 An Architecture for Intelligent Assistance in Software Development
Gail E. Kaiser, Peter H. Feiler
ICSE1
1987 MELDing Data Flow and Object-Oriented Programming
abstract
MELD combines concepts from data flow and object-oriented programming languages in a unique approach to tool reusability. MELD provides three units of abstraction — equations, classes and features — that together allow sufficient options for granularity and encapsulation to support the implementation of reusable tools and the composition of existing tools in parallel (i.e., interleaved) as well as in series.
Gail E. Kaiser, David Garlan
OOPSLA1
1987 Reliability in Distributed Programming Environments
Gail E. Kaiser, Simon M. Kaplan
SRDS1
1986 Incremental Attribute Evaluation in Distributed Language-Based Environments
abstract
We present a model of distributed program editing and algorithms for the incremental checking of static semantic properties of modules that are at once semantically interdependent and physically distributed across a number of workstations connected by a high speed network.This makes possible the synthesis of modern program development hardware --workstations on high speed networks --and modern program development software --incremental, language-based program development systems --that until now have suffered from the problem of not being able to support incremental checking across distributed modules.
Simon M. Kaplan, Gail E. Kaiser
PODC2
1985 Incremental parsing without a parser
Gail E. Kaiser, Elaine Kant
J. Syst. Softw.1