LUCID, the dataflow programming language
LUCID, the dataflow programming language
Mechanical verification and automatic implementation of communication protocols
IEEE Transactions on Software Engineering
Actors: a model of concurrent computation in distributed systems
Actors: a model of concurrent computation in distributed systems
HPSm, a high performance restricted data flow architecture having minimal functionality
ISCA '86 Proceedings of the 13th annual international symposium on Computer architecture
Semiautomatic Implementation of Communication Protocols
IEEE Transactions on Software Engineering
Isomorphisms Between Petr Nets and Dataflow Graphs
IEEE Transactions on Software Engineering
Network computing architecture
Network computing architecture
Modeling concurrency in parallel debugging
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
MPEG: a video compression standard for multimedia applications
Communications of the ACM - Special issue on digital multimedia systems
Rapid prototyping of protocols from LOTOS specifications
Software—Practice & Experience
Protocol service decomposition for high-performance networking
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
A language-based approach to protocol implementation
IEEE/ACM Transactions on Networking (TON)
Constructive specification and synthesis of agents for custom and cross RPC
Constructive specification and synthesis of agents for custom and cross RPC
Guardians and Actions: Linguistic Support for Robust, Distributed Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Implementing remote procedure calls
ACM Transactions on Computer Systems (TOCS)
A Service Acquisition Mechanism for Server-Based Heterogeneous Distributed Systems
IEEE Transactions on Parallel and Distributed Systems
Semiautomatic Implementation of Protocols Using an Estelle-C Compiler
IEEE Transactions on Software Engineering
Designing an Agent Synthesis System for Cross-RPC Communication
IEEE Transactions on Software Engineering
Proceedings of the IFIP WG6.1 Fifth International Conference on Protocol Specification, Testing and Verification V
The specification of process synchronization by path expressions
Operating Systems, Proceedings of an International Symposium
Post: a language for dataflow programming
Post: a language for dataflow programming
Hi-index | 0.01 |
New protocols are often useful, but are hard to implement well. Protocol synthesis is a solution, but synthesized protocols can be slow. Implementing protocols will be even more challenging in the future, since we expect that more advanced communication functionality will be moved from applications into protocol implementations to reduce application development effort. This trend can be seen from the recent enhancements of RPC to include semantics for supporting group communication, transactions, fault-tolerance, etc. [1],[2], [3], [4]. Protocol developers will also be challenged to provide correct and efficient protocol implementations that manage numerous concurrent I/O channels, and to increase protocol throughput to meet real-time requirements. These requirements demand better language support to facilitate precise control of multiple-thread interactions, and aggressive exploitation of parallelism in protocol execution. Protocol synthesis is also required for dynamic creation of protocol adapters in heterogeneous environments [5], [6]. This paper describes Cicero, a set of language constructs to allow constructive protocol specifications. Unlike other protocol specification languages, Cicero gives programmers explicit control over protocol execution, and facilitates both sequential and parallel implementations, especially for protocols above the transport-layer. It is intended to be used in conjunction with domain-specific libraries, and is quite different in philosophy and mode of use from existing protocol specification languages. A feature of Cicero is the use of event patterns [7] to control synchrony, asynchrony, and concurrency in protocol execution, which helps programmers build robust protocol implementations. Event-pattern driven execution also enables implementors to exploit parallelism of varying grains in protocol execution. Event patterns can also be translated into other formal models, so that existing verification techniques may be used.