VLDB 2026 Research / reviewers in the wild / expert
Daniel Jackson 0001
dblp:80/1906-1
· DBLP profile ↗
72ranked-venue papers
26as first author
5since 2021 · last 2024
0000-0003-4864-078XORCID · conflict
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 63 · 24 first-author · 2 since 2021Theory of computation · 7 · 2 first-authorHuman-computer interaction and ubiquitous computing · 3 · 3 since 2021Artificial intelligence and machine learning · 1Computer networks · 1Security and privacy · 1Databases, data management, data science and information retrieval · 1 · 1 first-author
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Beyond Dark Patterns: A Concept-Based Framework for Ethical Software DesignabstractCurrent dark pattern research tells designers what not to do, but how do they know what to do? In contrast to prior approaches that focus on patterns to avoid and their underlying principles, we present a framework grounded in positive expected behavior against which deviations can be judged. To articulate this expected behavior, we use concepts—abstract units of functionality that compose applications. We define a design as dark when its concepts violate users’ expectations, and benefit the application provider at the user’s expense. Though user expectations can differ, users tend to develop common expectations as they encounter the same concepts across multiple applications, which we can record in a concept catalog as standard concepts. We evaluate our framework and concept catalog through three studies, illustrating their ability to describe existing dark patterns, evaluate nuanced designs, and document common application functionality. Evan Caragay, Katherine Xiong, Jonathan Zong, Daniel Jackson 0001 |
CHI | 4 |
| 2024 | Keynote Lecture
Daniel Jackson 0001 |
ENASE | 1 |
| 2024 | Bluefish: Composing Diagrams with Declarative RelationsabstractDiagrams are essential tools for problem-solving and communication as they externalize conceptual structures using spatial relationships. But when picking a diagramming framework, users are faced with a dilemma. They can either use a highly expressive but low-level toolkit, whose API does not match their domain-specific concepts, or select a high-level typology, which offers a recognizable vocabulary but supports a limited range of diagrams. To address this gap, we introduce Bluefish: a diagramming framework inspired by component-based user interface (UI) libraries. Bluefish lets users create diagrams using relations: declarative, composable, and extensible diagram fragments that relax the concept of a UI component. Unlike a component, a relation does not have sole ownership over its children nor does it need to fully specify their layout. To render diagrams, Bluefish extends a traditional tree-based scenegraph to a compound graph that captures both hierarchical and adjacent relationships between nodes. To evaluate our system, we construct a diverse example gallery covering many domains including mathematics, physics, computer science, and even cooking. We show that Bluefish’s relations are effective declarative primitives for diagrams. Bluefish is open source, and we aim to shape it into both a usable tool and a research platform. Josh Pollock, Catherine Mei, Grace Huang, Elliot Evans, Daniel Jackson 0001, Arvind Satyanarayan |
UIST | 5 |
| 2023 | Concept-Centric Software Development: An Experience ReportabstractDevelopers have long recognized the importance of the concepts underlying the systems they build, and the primary role that concepts play in shaping user experience. To date, however, concepts have tended to be only implicit in software design with development being organized instead around more concrete artifacts (such as wireframes and code modules). Peter A. Wilczynski, Taylor Gregoire-Wright, Daniel Jackson 0001 |
Onward! | 3 |
| 2023 | Riffle: Reactive Relational State for Local-First ApplicationsabstractThe reactive paradigm for developing user interfaces promises both simplicity and scalability, but existing frameworks usually compromise one for the other. We present Riffle, a reactive state management system that achieves both simplicity and scalability by managing the entire state of a web application in a client-side persistent relational database. Data transformations over the application state are defined in a graph of reactive relational queries, providing developers with a simple spreadsheet-like reactivity model. Domain state and UI state are unified within the same system, and efficient incremental query maintenance ensures the UI remains responsive. We present a formative case study of using Riffle to build a music management application with complex data and stringent performance requirements. Geoffrey Litt, Nicholas Schiefer, Johannes Schickling, Daniel Jackson 0001 |
UIST | 4 |
| 2019 | Alloy*: a general-purpose higher-order relational constraint solver
Aleksandar Milicevic, Joseph P. Near, Eunsuk Kang, Daniel Jackson 0001 |
Formal Methods Syst. Des. | 4 |
| 2018 | A formal approach for detection of security flaws in the android permission systemabstractAbstract The ever increasing expansion of mobile applications into nearly every aspect of modern life, from banking to healthcare systems, is making their security more important than ever. Modern smartphone operating systems (OS) rely substantially on the permission-based security model to enforce restrictions on the operations that each application can perform. In this paper, we perform an analysis of the permission protocol implemented in Android, a popular OS for smartphones. We propose a formal model of the Android permission protocol in Alloy, and describe a fully automatic analysis that identifies potential flaws in the protocol. A study of real-world Android applications corroborates our finding that the flaws in the Android permission protocol can have severe security implications, in some cases allowing the attacker to bypass the permission checks entirely. Hamid Bagheri, Eunsuk Kang, Sam Malek, Daniel Jackson 0001 |
Formal Aspects Comput. | 4 |
| 2016 | Finding security bugs in web applications using a catalog of access control patternsabstractWe propose a specification-free technique for finding missing security checks in web applications using a catalog of access control patterns in which each pattern models a common access control use case. Our implementation, Space, checks that every data exposure allowed by an application's code matches an allowed exposure from a security pattern in our catalog. The only user-provided input is a mapping from application types to the types of the catalog; the rest of the process is entirely automatic. In an evaluation on the 50 most watched Ruby on Rails applications on Github, Space reported 33 possible bugs---23 previously unknown security bugs, and 10 false positives. Joseph P. Near, Daniel Jackson 0001 |
ICSE | 2 |
| 2016 | Purposes, concepts, misfits, and a redesign of gitabstractGit is a widely used version control system that is powerful but complicated. Its complexity may not be an inevitable consequence of its power but rather evidence of flaws in its design. To explore this hypothesis, we analyzed the design of Git using a theory that identifies concepts, purposes, and misfits. Some well-known difficulties with Git are described, and explained as misfits in which underlying concepts fail to meet their intended purpose. Based on this analysis, we designed a reworking of Git (called Gitless) that attempts to remedy these flaws. Santiago Perez De Rosso, Daniel Jackson 0001 |
OOPSLA | 2 |
| 2016 | Designing minimal effective normative systems with the help of lightweight formal methodsabstractNormative systems (i.e., a set of rules) are an important approach to achieving effective coordination among (often an arbitrary number of) agents in multiagent systems. A normative system should be effective in ensuring the satisfaction of a desirable system property, and minimal (i.e., not containing norms that unnecessarily over-constrain the behaviors of agents). Designing or even automatically synthesizing minimal effective normative systems is highly non-trivial. Previous attempts on synthesizing such systems through simulations often fail to generate normative systems which are both minimal and effective. In this work, we propose a framework that facilitates designing of minimal effective normative systems using lightweight formal methods. Given a minimal effective normative system which coordinates many agents must be minimal and effective for a small number of agents, we start with automatically synthesizing one such system with a few agents. We then increase the number of agents so as to check whether the same design remains minimal and effective. If it is, we manually establish an induction proof so as to lift the design to an arbitrary number of agents. Jianye Hao, Eunsuk Kang, Jun Sun 0001, Daniel Jackson 0001 |
SIGSOFT FSE | 4 |
| 2016 | Correct or usable? the limits of traditional verification (impact paper award)abstractSince our work on verification sixteen years ago, our views of the role of verification, and the centrality of correctness, have evolved. In our presentation, we’ll talk about some of our concerns about the limitations of this kind of technology, including: usability as a key factor; the unknowable properties of the environment; and the inadequacy of specifications as a means of capturing users’ desires. We’ll describe two approaches we’re currently working on to mitigate these concerns — (1) moving to higher level abstractions with correctness by construction and (2) focusing on the conceptual structure of applications — and will argue that, combined with traditional verification tools, these offer the possibility of applications that are both usable and correct. Daniel Jackson 0001, Mandana Vaziri |
SIGSOFT FSE | 1 |
| 2016 | Multi-representational security analysisabstractSecurity attacks often exploit flaws that are not anticipated in an abstract design, but are introduced inadvertently when high-level interactions in the design are mapped to low-level behaviors in the supporting platform. This paper proposes a multi-representational approach to security analysis, where models capturing distinct (but possibly overlapping) views of a system are automatically composed in order to enable an end-to-end analysis. This approach allows the designer to incrementally explore the impact of design decisions on security, and discover attacks that span multiple layers of the system. This paper describes Poirot, a prototype implementation of the approach, and reports on our experience on applying Poirot to detect previously unknown security flaws in publicly deployed systems. Eunsuk Kang, Aleksandar Milicevic, Daniel Jackson 0001 |
SIGSOFT FSE | 3 |
| 2015 | Detection of Design Flaws in the Android Permission Protocol Through Bounded Verification
Hamid Bagheri, Eunsuk Kang, Sam Malek, Daniel Jackson 0001 |
FM | 4 |
| 2015 | Alloy*: A General-Purpose Higher-Order Relational Constraint SolverabstractThe last decade has seen a dramatic growth in the use of constraint solvers as a computational mechanism, not only for analysis of software, but also at runtime. Solvers are available for a variety of logics but are generally restricted to first-order formulas. Some tasks, however, most notably those involving synthesis, are inherently higher order; these are typically handled by embedding a first-order solver (such as a SAT or SMT solver) in a domain-specific algorithm. Using strategies similar to those used in such algorithms, we show how to extend a first-order solver (in this case Kodkod, a model finder for relational logic used as the engine of the Alloy Analyzer) so that it can handle quantifications over higher-order structures. The resulting solver is sufficiently general that it can be applied to a range of problems; it is higher order, so that it can be applied directly, without embedding in another algorithm; and it performs well enough to be competitive with specialized tools. Just as the identification of first-order solvers as reusable backends advanced the performance of specialized tools and simplified their architecture, factoring out higher-order solvers may bring similar benefits to a new class of tools. Aleksandar Milicevic, Joseph P. Near, Eunsuk Kang, Daniel Jackson 0001 |
ICSE (1) | 4 |
| 2015 | Programming with enumerable sets of structuresabstractWe present an efficient, modular, and feature-rich framework for automated generation and validation of complex structures, suitable for tasks that explore a large space of structured values. Our framework is capable of exhaustive, incremental, parallel, and memoized enumeration from not only finite but also infinite domains, while providing fine-grained control over the process. Furthermore, the framework efficiently supports the inverse of enumeration (checking whether a structure can be generated and fast-forwarding to this structure to continue the enumeration) and lazy enumeration (achieving exhaustive testing without generating all structures). The foundation of efficient enumeration lies in both direct access to encoded structures, achieved with well-known and new pairing functions, and dependent enumeration, which embeds constraints into the enumeration to avoid backtracking. Our framework defines an algebra of enumerators, with combinators for their composition that preserve exhaustiveness and efficiency. We have implemented our framework as a domain-specific language in Scala. Our experiments demonstrate better performance and shorter specifications by up to a few orders of magnitude compared to existing approaches. Ivan Kuraj, Viktor Kuncak, Daniel Jackson 0001 |
OOPSLA | 3 |
| 2014 | Derailer: interactive security analysis for web applicationsabstractDerailer is an interactive tool for finding security bugs in web applications. Using symbolic execution, it enumerates the ways in which application data might be exposed. The user is asked to examine these exposures and classify the conditions under which they occur as security-related or not; in so doing, the user effectively constructs a specification of the application's security policy. The tool then highlights exposures missing security checks, which tend to be security bugs. Joseph P. Near, Daniel Jackson 0001 |
ASE | 2 |
| 2014 | Preventing arithmetic overflows in Alloy
Aleksandar Milicevic, Daniel Jackson 0001 |
Sci. Comput. Program. | 2 |
| 2012 | Synthesizing iterators from abstraction functionsabstractA technique for synthesizing iterators from declarative abstraction functions written in a relational logic specification language is described. The logic includes a transitive closure operator that makes it convenient for expressing reachability queries on linked data structures. Some optimizations, including tuple elimination, iterator flattening, and traversal state reduction, are used to improve performance of the generated iterators. Derek Rayside, Vajih Montaghami, Francesca Leung, Albert Yuen, Kevin Xu, Daniel Jackson 0001 |
GPCE | 6 |
| 2012 | Rubicon: bounded verification of web applicationsabstractRubicon is a verifier for web applications. Specifications are written in an embedded domain-specific language and are checked fully automatically. Rubicon is designed to fit with current practices: its language is based on RSpec, a popular testing framework, and its analysis leverages the standard Ruby interpreter to perform symbolic execution (generating verification conditions that are checked by the Alloy Analyzer). Rubicon has been evaluated on five open-source applications; in one, a widely used customer relationship management system, a previously unknown security flaw was revealed. Joseph P. Near, Daniel Jackson 0001 |
SIGSOFT FSE | 2 |
| 2011 | Unifying execution of imperative and declarative codeabstractWe present a unified environment for running declarative specifications in the context of an imperative object-Oriented programming language. Specifications are Alloy-like, written in first-order relational logic with transitive closure, and the imperative language is Java. By being able to mix imperative code with executable declarative specifications, the user can easily express constraint problems in place, i.e., in terms of the existing data structures and objects on the heap. After a solution is found, the heap is updated to reflect the solution, so the user can continue to manipulate the program heap in the usual imperative way. We show that this approach is not only convenient, but, for certain problems can also outperform a standard imperative implementation. We also present an optimization technique that allowed us to run our tool on heaps with almost 2000 objects. Aleksandar Milicevic, Derek Rayside, Kuat Yessenov, Daniel Jackson 0001 |
ICSE | 4 |
| 2011 | A lightweight code analysis and its role in evaluation of a dependability caseabstractA dependability case is an explicit, end-to-end argument, based on concrete evidence, that a system satisfies a critical property. We report on a case study constructing a dependability case for the control software of a medical device. The key novelty of our approach is a lightweight code analysis that generates a list of side conditions that correspond to assumptions to be discharged about the code and the environment in which it executes. This represents an unconventional trade-off between, at one extreme, more ambitious analyses that attempt to discharge all conditions automatically (but which cannot even in principle handle environmental assumptions), and at the other, flow- or context-insensitive analyses that require more user involvement. The results of the analysis suggested a variety of ways in which the dependability of the system might be improved. Joseph P. Near, Aleksandar Milicevic, Eunsuk Kang, Daniel Jackson 0001 |
ICSE | 4 |
| 2010 | Patterns for building dependable systems with trusted basesabstractWe propose a set of patterns for structuring a system to be dependable by design. The key idea is to localize the system's most critical requirements into small, reliable parts called trusted bases. We describe two instances of trusted bases: (1) the end-to-end check, which localizes the correctness checking of a computation to end points of a system, and (2) the trusted kernel, which ensures the safety of a set of resources with a small core of a system. Eunsuk Kang, Daniel Jackson 0001 |
PLoP | 2 |
| 2010 | Dependability Arguments with Trusted BasesabstractAn approach is suggested for arguing that a system is dependable. The key idea is to structure the system so that critical requirements are localized in small, reliable subsets of the system's components called trusted bases. This paper describes an idiom for modeling systems with trusted bases, and a technique for analyzing a dependability argument-the argument that a trusted base is sufficient to establish a requirement. Eunsuk Kang, Daniel Jackson 0001 |
RE | 2 |
| 2009 | Equality and hashing for (almost) free: Generating implementations from abstraction functionsabstractIn an object-oriented language such as Java, every class requires implementations of two special methods, one for determining equality and one for computing hash codes. Although the specification of these methods is usually straightforward, they can be hard to code (due to subclassing, delegation, cyclic references, and other factors) and often harbor subtle faults. A technique is presented that simplifies this task. Instead of writing code for the methods, the programmer gives, as a brief annotation, an abstraction function that defines an abstract view of an object's representation, and sometimes an additional observer in the form of an iterator method. Equality and hash codes are then computed in library code that uses reflection to read the annotations. Experiments on a variety of programs suggest that, in comparison to writing the methods by hand, our technique requires less text from the programmer and results in methods that are more often correct. Derek Rayside, Zev Benjamin, Rishabh Singh, Joseph P. Near, Aleksandar Milicevic, Daniel Jackson 0001 |
ICSE | 6 |
| 2008 | Finding Minimal Unsatisfiable Cores of Declarative Specifications
Emina Torlak, Felix Sheng-Ho Chang, Daniel Jackson 0001 |
FM | 3 |
| 2007 | Kodkod: A Relational Model Finder
Emina Torlak, Daniel Jackson 0001 |
TACAS | 2 |
| 2007 | Inferring specifications to detect errors in code
Mana Taghdiri, Daniel Jackson 0001 |
Autom. Softw. Eng. | 2 |
| 2007 | Requirement progression in problem frames: deriving specifications from requirements
Robert Seater, Daniel Jackson 0001, Rohit Gheyi |
Requir. Eng. | 2 |
| 2006 | Idioms of Logical Modelling
Daniel Jackson 0001 |
ICGT | 1 |
| 2006 | Symbolic model checking of declarative relational modelsabstractThis paper explores the idea of augmenting traditional model checkers with the expressiveness of a declarative, relational language. The goal is to enable programmers to write very intuitive and compact specifications, in order to allow the automatic verification of more complicated software systems. The key idea is that many structural operations (common in object-oriented programs) can be easily described using relations and relational operators, while other operations are best described using the primitive data types and their operations (such as simple arithmetic operations on numbers). By allowing a mixture of both, and by allowing parts of the model to be described declaratively rather than imperatively, the programmer has the freedom to model each part of the system differently, using the most intuitive and simple constructs. We built a BDD-based model checker for the language, and successfully verified a straightforward model of the dependency algorithm in Apache Ant for up to 5 nodes. Felix Sheng-Ho Chang, Daniel Jackson 0001 |
ICSE | 2 |
| 2006 | Modular verification of code with SATabstractAn approach is described for checking the methods of a class against a full specification. It shares with traditional model checking the idea of exhausting the entire space of executions within some finite bounds, and with traditional verification the idea of modular analysis, in which a method is analyzed, in isolation, for all possible calling contexts.The analysis involves an automatic two-phase reduction: first, to an intermediate form in relational logic (using a new encoding described here), and second, to a boolean formula (using existing techniques), which is then handed to an off the shelf SAT solver.A variety of implementations of the Java Collections Framework's List interface were checked against existing JML specifications. The analysis revealed bugs in the implementations, as well as errors in the specifications themselves. Greg Dennis, Felix Sheng-Ho Chang, Daniel Jackson 0001 |
ISSTA | 3 |
| 2006 | Requirement Progression in Problem Frames Applied to a Proton Therapy SystemabstractA technique is presented for obtaining a specification from a requirement through a series of incremental steps. The starting point is a problem frame description involving a requirement on the phenomena of the problem domain, and a decomposition of the environment into domains, connected to one another and to the machine being implemented by shared phenomena. In each step, the requirement is moved towards the machine, leaving behind a trail of `breadcrumbs' in the form of domain assumptions. Eventually, the transformed requirement references only phenomena at the interface of the machine and can therefore serve as a specification. Each step is justified by an implication that can be mechanically checked, ensuring that, if the machine obeys the derived specification and the domain assumptions are valid, the requirement will hold. The technique is applied to the logging subproblem of a radiotherapy system Robert Seater, Daniel Jackson 0001 |
RE | 2 |
| 2006 | Lightweight extraction of syntactic specificationsabstractA method for extracting syntactic specifications from heapmanipulating code is described. The state of the heap is represented as an environment mapping each variable or field to a relational expression. A procedure is executed symbolically, obtaining an environment for the post-state that gives the value of each variable and field in terms of the values of variables and fields of the pre-state. Approximation is introduced by forming relational unions at merge points in the control flow graph, and by widening union-of-join expressions to transitive closures. The resulting analysis is linear in the length of the code and the number of fields, but capable of producing non-trivial specifications of surprising accuracy. Mana Taghdiri, Robert Seater, Daniel Jackson 0001 |
SIGSOFT FSE | 3 |
| 2005 | Using dependency models to manage complex software architectureabstractAn approach to managing the architecture of large software systems is presented. Dependencies are extracted from the code by a conventional static analysis, and shown in a tabular form known as the 'Dependency Structure Matrix' (DSM). A variety of algorithms are available to help organize the matrix in a form that reflects the architecture and highlights patterns and problematic dependencies. A hierarchical structure obtained in part by such algorithms, and in part by input from the user, then becomes the basis for 'design rules' that capture the architect's intent about which dependencies are acceptable. The design rules are applied repeatedly as the system evolves, to identify violations, and keep the code and its architecture in conformance with one another. The analysis has been implemented in a tool called LDM which has been applied in several commercial projects; in this paper, a case study application to Haystack, an information retrieval system, is described. Neeraj Sangal, Ev Jordan, Vineet Sinha, Daniel Jackson 0001 |
OOPSLA | 4 |
| 2005 | Dependable Software: An Oxymoron&abstractSummary form only given. Can software really be made dependable? And if it was, would we be able to recognize it? For the last two years, the author had been chairing a study of the National Academy of Sciences on dependable software, and have had the opportunity to hear - in a workshop held last year, and in open sessions of the committee - anecdotes and viewpoints that have often surprised him. The conclusions of the committee are not made public until the final report is out. In this talk, therefore, some of the things heard are shared, and draw some connections to requirements engineering. Daniel Jackson 0001 |
RE | 1 |
| 2005 | Relational analysis of algebraic datatypesabstractWe present a technique that enables the use of finite model finding to check the satisfiability of certain formulas whose intended models are infinite. Such formulas arise when using the language of sets and relations to reason about structured values such as algebraic datatypes. The key idea of our technique is to identify a natural syntactic class of formulas in relational logic for which reasoning about infinite structures can be reduced to reasoning about finite structures. As a result, when a formula belongs to this class, we can use existing finite model finding tools to check whether the formula holds in the desired infinite model. Viktor Kuncak, Daniel Jackson 0001 |
ESEC/SIGSOFT FSE | 2 |
| 2004 | Automating commutativity analysis at the design levelabstractTwo operations commute if executing them serially in either order results in the same change of state. In a system in which commands may be issued simultaneously by different users, lack of commutativity can result in unpredictable behaviour, even if the commands are serialized, because one user's command may be preempted by another's, and thus executed in an unanticipated state. This paper describes an automated approach to analyzing commutativity. The operations are expressed as constraints in a declarative modelling language such as Alloy, and a constraint solver is used to find violating scenarios. A case study application to the beam scheduling component of a proton therapy machine (originally specified in OCL) revealed several violations of commutativity in which requests from medical technicians in treatment rooms could conflict with the actions of a beam operator in a master control room. Some of the issues involved in automating the analysis for OCL itself are also discussed. Greg Dennis, Robert Seater, Derek Rayside, Daniel Jackson 0001 |
ISSTA | 4 |
| 2004 | Faster constraint solving with subtypesabstractConstraints in predicate or relational logic can be translated into boolean logic and solved with a SAT solver. For faster solving, it is common to exploit the typing of predicates or relations, in order to reduce the number of boolean variables needed to encode the constraint. Here we show how to extend this idea to constraints expressed in a language with subtyping. Our technique, called atomization, refactors the type hierarchy into a flat collection of disjoint atomic types. The constraints are then decomposed into equivalent constraints involving smaller relations or predicates over these new types, which can then be solved in the normal fashion. Experiments with an implementation of this technique within the Alloy Analyzer show improved performance on practical software checking problems. Jonathan Edwards, Daniel Jackson 0001, Emina Torlak, Vincent Yeung |
ISSTA | 2 |
| 2004 | Software assurance by bounded exhaustive testingabstractThe contribution of this paper is an experiment that shows the potential value of a combination of selective reverse engineering to formal specifications and bounded exhaustive testing to improve the assurance levels of complex software. A key problem is to scale up test input generation so that meaningful results can be obtained. We present an approach, using Alloy and TestEra for test input generation, which we evaluate by experimental application to the Galileo dynamic fault tree analysis tool. Kevin J. Sullivan, Jinlin Yang, David Coppit, Sarfraz Khurshid, Daniel Jackson 0001 |
ISSTA | 5 |
| 2004 | A type system for object modelsabstractA type system for object models is described that supports subtyping, unions, and overloading of relation names. No special features need be added to the modelling language; in particular, there are no casts, and the meaning of an object model can be understood without mentioning types. A type error is associated with an expression that can be proved to be _irrelevant_, in the sense that it can be replaced by an empty set or relation without affecting the value of its enclosing constraint. Relevance is computed by a simple abstract interpretation. Jonathan Edwards, Daniel Jackson 0001, Emina Torlak |
SIGSOFT FSE | 2 |
| 2003 | A Lightweight Formal Analysis of a Multicast Key Management Scheme
Mana Taghdiri, Daniel Jackson 0001 |
FORTE | 2 |
| 2003 | Debugging Overconstrained Declarative Models Using Unsatisfiable CoresabstractDeclarative models, in which conjunction and negation are freely used, are susceptible to unintentional overconstraint. Core extraction is a new analysis that mitigates this problem in the context of a checker based on reduction to SAT (systems analysis tools). It exploits a recently developed facility of SAT solvers that provides an "unsatisfiable core" of an unsatisfiable set of clauses, often much smaller than the clause set as a whole. The unsatisfiable core is mapped back into the syntax of the original model, showing the user fragments of the model found to be irrelevant. This information can be a great help in discovering and localizing overconstraint, and in some cases pinpoints it immediately. The construction of the mapping is given for a generalized modeling language, along with a justification of the soundness of the claim that the marked portions of the model are irrelevant. Experiences in applying core extraction to a variety of existing models are discussed. Ilya Shlyakhter, Robert Seater, Daniel Jackson 0001, Manu Sridharan, Mana Taghdiri |
ASE | 3 |
| 2003 | Critical Feature Analysis of a Radiotherapy Machine
Andrew Rae, Daniel Jackson 0001, Prasad Ramanan, Jay Flanz, Didier Leyman |
SAFECOMP | 2 |
| 2003 | A Case for Efficient Solution Enumeration
Sarfraz Khurshid, Darko Marinov, Ilya Shlyakhter, Daniel Jackson 0001 |
SAT | 4 |
| 2003 | Checking Properties of Heap-Manipulating Procedures with a Constraint Solver
Mandana Vaziri, Daniel Jackson 0001 |
TACAS | 2 |
| 2002 | An analyzable annotation languageabstractThe Alloy Annotation Language (AAL) is a language (under development) for annotating Java code based on the Alloy modeling language. It offers a syntax similar to the Java Modeling Language (JML), and the same opportunities for generation of run-time assertions. In addition, however, AAL offers the possibility of fully automatic compile-time analysis. Several kinds of analysis are supported, including: checking the code of a method against its specification; checking that the specification of a method in a subclass is compatible with the specification in the superclass; and checking properties relating method calls on different objects, such as that the equals methods of a class (and its overridings) induce an equivalence. Using partial models in place of code, it is also possible to analyze object-oriented designs in the abstract: investigating, for example, a view relationship amongst objects.The paper gives examples of annotations and such analyses. It presents (informally) a systematic translation of annotations into Alloy, a simple first-order logic with relational operators. By doing so, it makes Alloy's automatic analysis, which is based on state-of-the-art SAT solvers, applicable to the analysis of object-oriented programs, and demonstrates the power of a simple logic as the basis for an annotation language. Sarfraz Khurshid, Darko Marinov, Daniel Jackson 0001 |
OOPSLA | 3 |
| 2002 | Alloy: A New Technology for Software Modelling
Daniel Jackson 0001 |
TACAS | 1 |
| 2002 | Alloy: a lightweight object modelling notationabstractAlloy is a little language for describing structural properties. It offers a declaration syntax compatible with graphical object models, and a set-based formula syntax powerful enough to express complex constraints and yet amenable to a fully automatic semantic analysis. Its meaning is given by translation to an even smaller (formally defined) kernel. This paper presents the language in its entirety, and explains its motivation, contributions and deficiencies. Daniel Jackson 0001 |
ACM Trans. Softw. Eng. Methodol. | 1 |
| 2001 | A micromodularity mechanismabstractA simple mechanism for structuring specifications is described. By modelling structures as atoms, it remains entirely first-order and thus amenable to automatic analysis. And by interpreting fields of structures as relations, it allows the same relational operators used in the formula language to be used for dereferencing. An extension feature allows structures to be developed incrementally, but requires no textual inclusion nor any notion of subtyping. The paper demonstrates the flexibility of the mechanism by application in a variety of common idioms. Daniel Jackson 0001, Ilya Shlyakhter, Manu Sridharan |
ESEC / SIGSOFT FSE | 1 |
| 2001 | Lightweight Extraction of Object Models from BytecodeabstractA program's object model captures the essence of its design. For some programs, no object model was developed during design; for others, an object model exists but may be out-of-sync with the code. This paper describes a tool that automatically extracts an object model from the class-files of a Java program. Unlike existing tools, it handles container classes by inferring the types of elements stored in a container and eliding the container itself. This feature is crucial for obtaining models that show the structure of the abstract state and bear some relation to conceptual models. Although the tool performs only a simple, heuristic analysis that is almost entirely local, the resulting object model is surprisingly accurate. The paper explains what object models are and why they are useful; describes the analysis, its assumptions, and limitations; evaluates the tool for accuracy, and illustrates its use on a suite of sample programs. Daniel Jackson 0001, Allison Waingold |
IEEE Trans. Software Eng. | 1 |
| 2000 | Alcoa: the alloy constraint analyzerabstractAlcoa is a tool for analyzing object models. It has a range of uses. At one end, it can act as a support tool for object model diagrams, checking for consistency of multiplicities and generating sample snapshots. At the other end, it embodies a lightweight formal method in which subtle properties of behaviour can be investigated. Daniel Jackson 0001, Ian Schechter, Ilya Shlyakhter |
ICSE | 1 |
| 2000 | Finding bugs with a constraint solverabstractArticle Free Access Share on Finding bugs with a constraint solver Authors: Daniel Jackson MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, Massachusetts MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, MassachusettsView Profile , Mandana Vaziri MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, Massachusetts MIT Laboratory for Computer Science, 545 Technology Square, Cambridge, MassachusettsView Profile Authors Info & Claims ISSTA '00: Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysisAugust 2000 Pages 14–25https://doi.org/10.1145/347324.383378Online:01 August 2000Publication History 141citation1,074DownloadsMetricsTotal Citations141Total Downloads1,074Last 12 Months48Last 6 weeks6 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 Alerts New Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF Daniel Jackson 0001, Mandana Vaziri |
ISSTA | 1 |
| 2000 | Exploring the Design of an Intentional Naming Scheme with an Automatic Constraint AnalyzerabstractLightweight formal modeling and automatic analysis were used to explore the design of the intentional naming system (INS), a new scheme for resource discovery in a dynamic networked environment. We constructed a model of INS in Alloy a lightweight relational notation, and analyzed it with the Alloy Constraint Analyzer, a fully automatic simulation and checking tool. In doing so, we exposed several serious flaws in both the algorithm of INS and the underlying naming semantics. We were able to characterize the conditions under which the existing INS scheme works correctly, and evaluate proposed fixes. Sarfraz Khurshid, Daniel Jackson 0001 |
ASE | 2 |
| 2000 | Enforcing Design Constraints with Object Logic
Daniel Jackson 0001 |
SAS | 1 |
| 2000 | Automating first-order relational logicabstractAn automatic analysis method for first-order logic with sets and relations is described. A first-order formula is translated to a quantifier-free boolean formula, which has a model when the original formula has a model within a given scope (that is, involving no more than some finite number of atoms). Because the satisfiable formulas that occur in practice tend to have small models, a small scope usually suffices and the analysis is efficient. Daniel Jackson 0001 |
SIGSOFT FSE | 1 |
| 2000 | COM revisited: tool-assisted modelling of an architectural frameworkabstractDesigning architectural frameworks without the aid of formal modeling is error prone. But, unless supported by analysis, formal modeling is prone to its own class of errors, in which formal statements fail to match the designer's intent. A fully automatic analysis tool can rapidly expose such errors, and can make the process of constructing and refining a formal model more effective. Daniel Jackson 0001, Kevin J. Sullivan |
SIGSOFT FSE | 1 |
| 1999 | Lightweight Extraction of Object Models from BytecodeabstractA program's object model captures the essence of its design.For some programs, no object model was developed during design; for others, an object model exists but may be outof-sync with the code.This paper describes a tool that automatically extracts an object model from the classfiles of a Java program.Although the tool performs only a simple, heuristic analysis that is almost entirely local, the resulting object model is surprisingly accurate.The paper explains the form of the object model, the assumptions upon which the analysis is based, and its limitations, and evaluates the tool on a suite of sample programs.1 Daniel Jackson 0001, Allison Waingold |
ICSE | 1 |
| 1999 | Guest Editorial
Rance Cleaveland, Daniel Jackson 0001 |
Autom. Softw. Eng. | 2 |
| 1999 | A Nitpick Analysis of Mobile IPv6abstractAbstract. A lightweight formal method enables partial specification and automatic analysis by sacrificing breadth of coverage and expressive power. NP is a specification language that is a subset of Z, and Nitpick is a tool that quickly and automatically checks properties of finite models of systems specified in NP. We used NP to state two critical acyclicity properties of Mobile IPv6, a new internetworking protocol that allows mobile hosts to communicate with each other. In our Nitpick analysis of Mobile IPv6 we discovered a design flaw: one of the acyclicity properties does not hold. It takes only two hosts to exhibit this flaw. This paper gives self-contained overviews of Mobile IPv6 and of NP and Nitpick sufficient to understand the details of our specification and analysis. Daniel Jackson 0001, Yu-Chung Ng, Jeannette M. Wing |
Formal Aspects Comput. | 1 |
| 1998 | An Intermedicate Design Language and Its AnalysisabstractA simple relational language is presented that has two desirable properties. First, it is sufficiently expressive to encode, fairly naturally, a variety of software design problems. Second, it is amenable to fully automatic analysis. This paper explains the language and its semantics, and describes a new analysis scheme (based on a stochastic boolean solver) that dramatically outperforms existing schemes. Daniel Jackson 0001 |
SIGSOFT FSE | 1 |
| 1998 | Isomorph-Free Model Enumeration: A New Method for Checking Relational SpecificationsabstractSoftware specifications often involve data structures with huge numbers of value, and consequently they cannot be checked using standard state exploration or model-checking techniques. Data structures can be expressed with binary relations, and operations over such structures can be expressed as formulae involving relational variables. Checking properties such as preservation of an invariant thus reduces to determining the validity of a formula or, equivalently, finding a model (of the formula's negation). A new method for finding relational models is presented. It exploits the permutation invariance of models—if two interpretations are isomorphic, then neither is a model, or both are—by partitioning the space into equivalence classes of symmetrical interpretations. Representatives of these classes are constructed incrementally by using the symmetry of the partial interpretation to limit the enumeration of new relation values. The notion of symmetry depends on the type structure of the formula; by picking the weakest typing, larger equivalence classes (and thus fewer representatives) are obtained. A more refined notion of symmetry that exploits the meaning of the relational operators is also described. The method typically leads to exponential reductions; in combination with other, simpler, reductions it makes automatic analysis of relational specifications possible for the first time. Daniel Jackson 0001, Somesh Jha, Craig Damon |
ACM Trans. Program. Lang. Syst. | 1 |
| 1997 | Lackwit: A Program Understanding Tool Based on Type InferenceabstractNo abstract available. Robert O'Callahan, Daniel Jackson 0001 |
ICSE | 2 |
| 1996 | Elements of Style: Analyzing a Software Design Feature with a Counterexample DetectorabstractWe illustrate the application of Nitpick, a specification checker, to the design of a style mechanism for a word processor. The design is cast, along with some expected properties, in a subset of Z. Nitpick checks a property by enumerating all possible cases within some finite bounds, displaying as a counterexample the first case for which the property fails to hold. Unlike animation or execution tools, Nitpick does not require state transitions to be expressed constructively, and unlike theorem provers, operates completely automatically without user intervention. Using a variety of reduction mechanisms, it can cover an enormous number of cases in a reasonable time, so that subtle flaws can be rapidly detected. Daniel Jackson 0001, Craig Damon |
ISSTA | 1 |
| 1996 | Faster Checking of Software Specifications by Eliminating IsomorphsabstractBoth software specifications and their intended properties can be expressed in a simple relational language. The claim that a specification satisfies a property becomes a relational formula that can be checked automatically by enumerating the formula's interpretations. Because the number of interpretations is usually huge, this approach has not been thought to be practical. But by eliminating isomorphic interpretations, the enumeration can be reduced substantially, with a factor of roughly k! contributed by each type of k elements. Daniel Jackson 0001, Somesh Jha, Craig Damon |
POPL | 1 |
| 1996 | Checking Relational Specifications With Binary Decision DiagramsabstractChecking a specification in a language based on sets and relations (such as Z) can be reduced to the problem of finding satisfying assignments, or models, of a relational formula. A new method for finding models using ordered binary decision diagrams (BDDs) is presented that appears to scale better than existing methods.Relational terms are replaced by matrices of boolean formulae. These formulae are then composed to give a boolean translation of the entire relational formula. Throughout, boolean formulae are represented with BDDs; from the resulting BDD, models are easily extracted.The performance of the BDD method is compared to our previous method based instead on explicit enumeration. The new method performs as well or better on most of our examples, but can also handle specifications that, until now, we have been unable to analyze. Craig Damon, Daniel Jackson 0001, Somesh Jha |
SIGSOFT FSE | 2 |
| 1996 | Elements of Style: Analyzing a Software Design Feature with a Counterexample DetectorabstractDemonstrates how Nitpick, a specification checker, can be applied to the design of a style mechanism for a word processor. The design is cast, along with some expected properties, in a subset of Z. Nitpick checks a property by enumerating all possible cases within some finite bounds, displaying as a counterexample the first case for which the property fails to hold. Unlike animation or execution tools, Nitpick does not require state transitions to be expressed constructively, and unlike theorem provers, Nitpick operates completely automatically without user intervention. Using a variety of reduction mechanisms, it can cover an enormous number of cases in a reasonable time, so that subtle flaws can be rapidly detected. Daniel Jackson 0001, Craig Damon |
IEEE Trans. Software Eng. | 1 |
| 1995 | Aspect: Detecting Bugs with Abstract DependencesabstractAspect is a static analysis technique for detecting bugs in imperative programs, consisting of an annotation language and a checking tool. Like a type declaration, an Aspect annotation of a procedure is a kind of declarative, partial specification that can be checked efficiently in a modular fashion. But instead of constraining the types of arguments and results, Aspect specifications assert dependences that should hold between inputs and outputs. The checker uses a simple dependence analysis to check code against annotations and can find bugs automatically that are not detectable by other static means, especially errors of omission, which are common, but resistant to type checking. This article explains the basic scheme and shows how it is elaborated to handle data abstraction and aliasing. Daniel Jackson 0001 |
ACM Trans. Softw. Eng. Methodol. | 1 |
| 1995 | Structuring Z Specifications with ViewsabstractA view is a partial specification of a program, consisting of a state space and a set of operations. A full specification is obtained by composing several views, linking them through their states (by asserting invariants across views) and through their operations (by defining external operations as combinations of operations from different views). By encouraging multiple representations of the program's state, view structuring lends clarity and terseness to the specification of operations. And by separating different aspects of functionality, it brings modularity at the grossest level of organization, so that specifications can accommodate change more gracefully. View structuring in Z is demonstrated with a few small examples. Both the features of Z that lend themselves to view structuring and those that are a hindrance are discussed. Daniel Jackson 0001 |
ACM Trans. Softw. Eng. Methodol. | 1 |
| 1994 | Semantic Diff: A Tool for Summarizing the Effects of ModificationsabstractDescribes a tool that takes two versions of a procedure and generates a report summarizing the semantic differences between them. Unlike existing tools based on comparison of program dependence graphs, our tool expresses its results in terms of the observable input-output behaviour of the procedure, rather than its syntactic structure. And because the analysis is truly semantic, it requires no prior matching of syntactic components, and generates fewer spurious differences, so that meaning-preserving transformations (such as renaming local variables) are correctly determined to have no visible effect. A preliminary experiment on modifications applied to the code of a large real-time system suggests that the approach is practical.> Daniel Jackson 0001, David A. Ladd |
ICSM | 1 |
| 1994 | A New Model of Program Dependences for Reverse EngineeringabstractA dependence model for reverse engineering should treat procedures in a modular fashion and should be fine-grained, distinguishing dependences that are due to different variables. The program dependence graph (PDG) satisfies neither of these criteria. We present a new form of dependence graph that satisfies both, while retaining the advantages of the PDG: it is easy to construct and allows program slicing to be implemented as a simple graph traversal. We define 'chopping', a generalization of slicing that can express most of its variants, and show that, using our dependence graph, it produces more accurate results than algorithms based directly on the PDG. Daniel Jackson 0001, Eugene J. Rollins |
SIGSOFT FSE | 1 |
| 1993 | Abstract Analysis with AspectabstractAspect is a static analysis technique for detecting bugs in code based on three forms of abstraction: declarative specification, data abstraction and partiality (ignoring some behavioural details). Together, they bring efficiency (the checker runs almost as fast as a type checker), modularity (a procedure can be analysed independently of the procedures it calls) and incrementality (allowing the checking of incomplete programs). Aspect can detect errors that are not detectable by other static means, especially errors of omission, which are pervasive but usually hard to detect. Daniel Jackson 0001 |
ISSTA | 1 |
| 1991 | Aspect: An Economical Bug-Detector
Daniel Jackson 0001 |
ICSE | 1 |