Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
Statecharts: A visual formalism for complex systems
Science of Computer Programming
Theoretical Computer Science
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
First-order linear logic without modalities is NEXPTIME-hard
MFPS '92 Selected papers of the conference on Meeting on the mathematical foundations of programming semantics, part I : linear logic: linear logic
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Data groups: specifying the modification of extended state
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Featherweight Java: a minimal core calculus for Java and GJ
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Flow-sensitive type qualifiers
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Adoption and focus: practical linear types for imperative programming
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
A system and language for building system-specific, static analyses
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Deriving specialized program analyses for certifying component-client conformance
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Modular verification of software components in C
Proceedings of the 25th International Conference on Software Engineering
An effective theory of type refinements
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Assume-Guarantee Verification of Source Code with Design-Level Assumptions
Proceedings of the 26th International Conference on Software Engineering
Connecting effects and uniqueness with adoption
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verifying safety policies with size properties and alias controls
Proceedings of the 27th international conference on Software engineering
Lightweight object specification with typestates
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Deriving object typestates in the presence of inter-object references
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Effective typestate verification in the presence of aliasing
Proceedings of the 2006 international symposium on Software testing and analysis
Iterator specification with typestates
Proceedings of the 2006 conference on Specification and verification of component-based systems
Modular Pluggable Analyses for Data Structure Consistency
IEEE Transactions on Software Engineering
Interface grammars for modular software model checking
Proceedings of the 2007 international symposium on Software testing and analysis
Checking interference with fractional permissions
SAS'03 Proceedings of the 10th international conference on Static analysis
Tracking linear and affine resources with JAVA(X)
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
PLURAL: checking protocol compliance under aliasing
Companion of the 30th international conference on Software engineering
Separation Logic Contracts for a Java-Like Language with Fork/Join
AMAST 2008 Proceedings of the 12th international conference on Algebraic Methodology and Software Technology
Bristlecone: A Language for Robust Software Systems
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Verifying correct usage of atomic blocks and typestate
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Typestate-like analysis of multiple interacting objects
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Verifying correct usage of atomic blocks using access permissions
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Checking API protocol compliance in java
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Finding programming errors earlier by evaluating runtime monitors ahead-of-time
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Masked types for sound object initialization
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Checking semantic usage of frameworks
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
Improving API documentation usability with knowledge pushing
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Aliasing, Confinement, and Ownership in Object-Oriented Programming
Object-Oriented Technology. ECOOP 2008 Workshop Reader
Reducing STM overhead with access permissions
International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming
Checking Framework Interactions with Relationships
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Practical API Protocol Checking with Access Permissions
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Type-Based Object Immutability with Flexible Initialization
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Polymorphic Fractional Capabilities
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
Dynamically inferring, refining, and checking API usage protocols
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Concurrency by default: using permissions to express dataflow in stateful programs
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Typestate-oriented programming
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Modular session types for distributed object-oriented programming
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Tool support for crosscutting concerns of API documentation
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Semantics of fractional permissions with nesting
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient hybrid typestate analysis by determining continuation-equivalent states
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
DynXML: safely programming the dynamic web
APLWACA '10 Proceedings of the 2010 Workshop on Analysis and Programming Languages for Web Applications and Cloud Applications
Generating test cases for specification mining
Proceedings of the 19th international symposium on Software testing and analysis
Capabilities for uniqueness and borrowing
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Concurrent abstract predicates
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Aliasing control with view-based typestate
Proceedings of the 12th Workshop on Formal Techniques for Java-Like Programs
A theory of typestate-oriented programming
Proceedings of the 12th Workshop on Formal Techniques for Java-Like Programs
Verifying stateful programs with substructural state and hoare types
Proceedings of the 5th ACM workshop on Programming languages meets program verification
Modular composition and state update in Plaid
Proceedings of the 4th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
Clara: partially evaluating runtime monitors at compile time tutorial supplement
RV'10 Proceedings of the First international conference on Runtime verification
Clara: a framework for partially evaluating finite-state runtime monitors ahead of time
RV'10 Proceedings of the First international conference on Runtime verification
Permission-based programming languages (NIER track)
Proceedings of the 33rd International Conference on Software Engineering
Probabilistic, modular and scalable inference of typestate specifications
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
An empirical study of object protocols in the wild
Proceedings of the 25th European conference on Object-oriented programming
Proceedings of the 25th European conference on Object-oriented programming
Lightweight verification of a multi-task threaded server: a case study with the plural tool
FMICS'11 Proceedings of the 16th international conference on Formal methods for industrial critical systems
Proceedings of the 10th SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software
Are object protocols burdensome?: an empirical study of developer forums
Proceedings of the 3rd ACM SIGPLAN workshop on Evaluation and usability of programming languages and tools
Access permission contracts for scripting languages
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system for borrowing permissions
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Static lock capabilities for deadlock freedom
TLDI '12 Proceedings of the 8th ACM SIGPLAN workshop on Types in language design and implementation
Partially Evaluating Finite-State Runtime Monitors Ahead of Time
ACM Transactions on Programming Languages and Systems (TOPLAS)
Impact analysis for distributed event-based systems
Proceedings of the 6th ACM International Conference on Distributed Event-Based Systems
Statically checking API protocol conformance with mined multi-object specifications
Proceedings of the 34th International Conference on Software Engineering
Practical permissions for race-free parallelism
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
A linear concurrent constraint approach for the automatic verification of access permissions
Proceedings of the 14th symposium on Principles and practice of declarative programming
Uniqueness and reference immutability for safe parallelism
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
The type discipline of behavioral separation
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Runtime verification based on register automata
TACAS'13 Proceedings of the 19th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Logical foundations of secure resource management in protocol implementations
POST'13 Proceedings of the Second international conference on Principles of Security and Trust
Rely-guarantee references for refinement types over aliased mutable data
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Local Reasoning for Global Invariants, Part II: Dynamic Boundaries
Journal of the ACM (JACM)
Programming with permissions in Mezzo
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Alias control for deterministic parallelism
Aliasing in Object-Oriented Programming
Aliasing in Object-Oriented Programming
A case study on the lightweight verification of a multi-threaded task server
Science of Computer Programming
Hi-index | 0.00 |
Objects often define usage protocols that clients must follow inorder for these objects to work properly. Aliasing makes itnotoriously difficult to check whether clients and implementations are compliant with such protocols. Accordingly, existing approaches either operate globally or severely restrict aliasing. We have developed a sound modular protocol checking approach, based on typestates, that allows a great deal of flexibility in aliasing while guaranteeing the absence of protocol violations at runtime. The main technical contribution is a novel abstraction, access permissions, that combines typestate and object aliasing information. In our methodology, developers express their protocol design intent through annotations based on access permissions. Our checking approach then tracks permissions through method implementations. For each object reference the checker keeps track of the degree of possible aliasing and is appropriately conservativein reasoning about that reference. This helps developers account for object manipulations that may occur through aliases. The checking approach handles inheritance in a novel way, giving subclasses more flexibility in method overriding. Case studies on Java iterators and streams provide evidence that access permissions can model realistic protocols, and protocol checking based on access permissions can be used to reason precisely about the protocols that arise in practice.