37 research outputs found
Theories in Practice: Easy-to-Write Specifications that Catch Bugs
Automated testing during development helps ensure that software works according to the test suite. Traditional test suites verify a few well-picked scenarios or example inputs. However, such example-based testing does not uncover errors in legal inputs that the test writer overlooked. We propose theory-based testing as an adjunct to example-based testing. A theory generalizes a (possibly infinite) set of example-based tests. A theory is an assertion that should be true for any data, and it can be exercised by human-chosen data or by automatic data generation. A theory is expressed in an ordinary programming language, it is easy for developers to use (often even easier than example-based testing), and it serves as a lightweight form of specification. Six case studies demonstrate the utility of theories that generalize existing tests to prevent bugs, clarify intentions, and reveal design problems
Automatic continuous testing to speed software development
Thesis (S.M.)--Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 2004.Includes bibliographical references (p. 147-152).Continuous testing is a new feature for software development environments that uses excess cycles on a developer's workstation to continuously run regression tests in the background, providing rapid feedback about test failures as source code is edited. It is intended to reduce the time and energy required to keep code well-tested, and to prevent regression errors from persisting uncaught for long periods of time. The longer that regression errors are allowed to linger during development, the more time is wasted debugging and fixing them once they are discovered. By monitoring and measuring software projects, we estimate that the wasted time, consisting of this preventable extra fixing cost added to the time spent running tests and waiting for them to complete, accounts for 10-15% of total development time. We present a model of developer behavior that uses data from past projects to infer developer beliefs and predict behavior in new environments -in particular, when changing testing methodologies or tools to reduce wasted time. This model predicts that continuous testing would reduce wasted time by 92-98%, a substantial improvement over other approaches we evaluated, such as automatic test prioritization and changing manual test frequencies. A controlled human experiment indicates that student developers using continuous testing were three times more likely to complete a task before the deadline than those without, with no significant effect on time worked.(cont.) Most participants found continuous testing to be useful and believed that it helped them write better code faster. 90% would recommend the tool to others. We show the first empirical evidence of a benefit from continuous compilation, a popular related feature. Continuous testing has been integrated into Emacs and Eclipse. We detail the functional and technical design of the Eclipse plug-in, which is publicly beta-released.by David Saff.S.M
EUPHORIA: End-User Construction of Direct Manipulation User Interfaces for Distributed Applications
The Programmers\u27 Playground is a software library and run-time system for creating distributed multimedia applications from collections of reusable software moduels. This paper presents the design and implementation of EUPHORIA, Playground\u27s user interface management system. Implemented as a Playground module, EUPHORIA allows end-users to create direct manipulation graphical user interfaces (GUIs) exclusively through the use of a graphics editor. No programming is required. At run-time, attributes of the GUI state can be exposed and connected to external Playground modules, allowing the user to vosualize and directly manipulate state information in remote Playground modules. Features of EUPHORIA include real-time direct manipulation graphics, constraint-based editing and visualization, imaginary alignment objects, user-definable types, and user-definable widgets with alternative representations
Three routes to the exact asymptotics for the one-dimensional quantum walk
We demonstrate an alternative method for calculating the asymptotic behaviour
of the discrete one-coin quantum walk on the infinite line, via the Jacobi
polynomials that arise in the path integral representation. This is
significantly easier to use than the Darboux method. It also provides a single
integral representation for the wavefunction that works over the full range of
positions, including throughout the transitional range where the behaviour
changes from oscillatory to exponential. Previous analyses of this system have
run into difficulties in the transitional range, because the approximations on
which they were based break down here. The fact that there are two different
kinds of approach to this problem (Path Integral vs. Schr\"{o}dinger wave
mechanics) is ultimately a manifestation of the equivalence between the
path-integral formulation of quantum mechanics and the original formulation
developed in the 1920s. We discuss how and why our approach is related to the
two methods that have already been used to analyse these systems.Comment: 25 pages, AMS preprint format, 4 figures as encapsulated postscript.
Replaced because there were sign errors in equations (80) & (85) and Lemma 2
of the journal version (v3
Towards a Pharmacophore for Amyloid
Diagnosing and treating Alzheimer's and other diseases associated with amyloid fibers remains a great challenge despite intensive research. To aid in this effort, we present atomic structures of fiber-forming segments of proteins involved in Alzheimer's disease in complex with small molecule binders, determined by X-ray microcrystallography. The fiber-like complexes consist of pairs of β-sheets, with small molecules binding between the sheets, roughly parallel to the fiber axis. The structures suggest that apolar molecules drift along the fiber, consistent with the observation of nonspecific binding to a variety of amyloid proteins. In contrast, negatively charged orange-G binds specifically to lysine side chains of adjacent sheets. These structures provide molecular frameworks for the design of diagnostics and drugs for protein aggregation diseases