Statemate: a working environment for the development of complex reactive systems
ICSE '88 Proceedings of the 10th international conference on Software engineering
Using I/O automata for developing distributed systems
Foundations of component-based systems
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
State machine specification directly in Java and C++ (poster session)
OOPSLA '00 Addendum to the 2000 proceedings of the conference on Object-oriented programming, systems, languages, and applications (Addendum)
SEDA: an architecture for well-conditioned, scalable internet services
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Automatic generation of program specifications
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Pipeline: a new architecture of high performance servers
ACM SIGOPS Operating Systems Review
Behaviour Analysis of Software Architectures
WICSA1 Proceedings of the TC2 First Working IFIP Conference on Software Architecture (WICSA1)
Cooperative Task Management Without Manual Stack Management
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Capriccio: scalable threads for internet services
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
A scalable formal method for design and automatic checking of user interfaces
ACM Transactions on Software Engineering and Methodology (TOSEM)
Analyzing architectural styles with alloy
Proceedings of the ISSTA 2006 workshop on Role of software architecture for testing and analysis
Tatoo: an innovative parser generator
PPPJ '06 Proceedings of the 4th international symposium on Principles and practice of programming in Java
Mace: language support for building distributed systems
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Flash: an efficient and portable web server
ATEC '99 Proceedings of the annual conference on USENIX Annual Technical Conference
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
Saburo, a tool for I/O and concurrency management in servers
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
Hi-index | 0.00 |
This paper presents Saburo, a Java toolkit that generates, from a single Java specification, Java Internet server implementations, together with their formal model that can be automatically checked using the model checker SPIN. This approach ensures the coherence between the Internet server behavior and the static verifications applied on its formal model. Moreover, the use of the Java language as a unique input specification should help the dissemination of formal verification techniques. To simplify the automatic abstraction of the formal model, the Saburo approach is based on the separation of concerns principle. The Java specification is decomposed into three parts: a concurrency model chosen among several predefined ones, a graph describing all the communication and synchronization, and the business code. This approach has two main advantages: the change of the concurrency model is straightforward, and the classical problem of state explosion induced by the automatic extraction of the formal model from the source code is minimized. This work blends together a set of features coming from server design, compilers, software engineering and formal verification. Even though we do not claim novelty in each of the techniques adopted for Saburo, they have been unified into our Java toolkit, which supports all server design phases.