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
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
An effective theory of type refinements
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
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
DynaMine: finding common error patterns by mining software revision histories
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
Reasoning about iterators with separation logic
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
Adaptive Online Program Analysis
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Modular typestate checking of aliased objects
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Separation logic, abstraction and inheritance
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLURAL: checking protocol compliance under aliasing
Companion of the 30th international conference on Software engineering
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
Finding programming errors earlier by evaluating runtime monitors ahead-of-time
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Api protocol compliance in object-oriented software
Api protocol compliance in object-oriented software
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
A theory of typestate-oriented programming
Proceedings of the 12th Workshop on Formal Techniques for Java-Like Programs
API conformance verification for Java programs
ICFEM'10 Proceedings of the 12th international conference on Formal engineering methods and 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
A type system for borrowing permissions
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Impact analysis for distributed event-based systems
Proceedings of the 6th ACM International Conference on Distributed Event-Based Systems
TreeDroid: a tree automaton based approach to enforcing data processing policies
Proceedings of the 2012 ACM conference on Computer and communications security
What should developers be aware of? An empirical study on the directives of API documentation
Empirical Software Engineering
Programming with permissions in Mezzo
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
A retrospective on aliasing type systems: 2012-2022
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
Reusable APIs often define usage protocols. We previously developed a sound modular type system that checks compliance with typestate-based protocols while affording a great deal of aliasing flexibility. We also developed Plural, a prototype tool that embodies our approach as an automated static analysis and includes several extensions we found useful in practice. This paper evaluates our approach along the following dimensions: (1) We report on experience in specifying relevant usage rules for a large Java standard API with our approach. We also specify several other Java APIs and identify recurring patterns. (2) We summarize two case studies in verifying third-party open-source code bases with few false positives using our tool. We discuss how tool shortcomings can be addressed either with code refactorings or extensions to the tool itself. These results indicate that our approach can be used to specify and enforce real API protocols in practice.