Abstract
Modern applications are designed in multiple tiers to separate concerns. Since each tier may run at a separate location, middleware is required to mediate access between tiers. However, introducing this middleware is tiresome and error-prone.We propose a multi-tier calculus and a splitting transformation to address this problem. The multi-tier calculus serves as a sequential core programming language for constructing a multi-tier application. The application can be developed in the sequential setting. Splitting extracts one process per tier from the sequential program such that their concurrent execution behaves like the original program.The splitting transformation starts from an assignment of primitive operations to tiers. A program analysis determines communication requirements and inserts remote procedure calls. The next transformation step performs resource pooling: it optimizes the communication behavior by transforming sequences of remote procedure calls to a stream-based protocol. The final transformation step splits the resulting program into separate communicating processes.The multi-tier calculus is also applicable to the construction of interactive Web applications. It facilitates their development by providing a uniform programming framework for client-side and server-side programming.
References
- C. Flanagan, A. Sabry, B. F. Duba, and M. Felleisen. The essence of compiling with continuations. In Proceedings of the 1993 Conference on Programming Language Design and Implementation, pages 237--247, Albuquerque, New Mexico, June 1993.]] Google Scholar
Digital Library
- S. Gay and M. Hole. Types and subtypes for client-server interactions. In D. Swierstra, editor, Proceedings of the 1999 European Symposium on Programming, number 1576 in Lecture Notes in Computer Science, pages 74--90, Amsterdam, The Netherlands, Apr. 1999. Springer-Verlag.]] Google Scholar
Digital Library
- A. Gordon. Bisimilarity as a theory of functional programming. Theoretical Computer Science, 228(1-2):5--47, Oct. 1999.]] Google Scholar
Digital Library
- J. Greiner and G. E. Blelloch. A provably time-efficient parallel implementation of full speculation. ACM Transactions on Programming Languages and Systems, 21(2):240--285, 1999.]] Google Scholar
Digital Library
- F. Henglein. Efficient type inference for higher-order binding-time analysis. In Hughes {6}, pages 448--472.]] Google Scholar
Digital Library
- J. Hughes, editor. Functional Programming Languages and Computer Architecture, number 523 in Lecture Notes in Computer Science, Cambridge, MA, 1991. Springer-Verlag.]] Google Scholar
Digital Library
- N. Jones, C. Gomard, and P. Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall, 1993.]] Google Scholar
Digital Library
- J. Krinke. Context-sensitive slicing of concurrent programs. In Proceedings 9th European Software Engineering Conference, pages 178--187. ACM Press, 2003.]] Google Scholar
Digital Library
- X. Leroy. The Objective Caml system release 3.02, Documentation and user's manual. INRIA, France, July 2001. http://pauillac.inria.fr/caml.]]Google Scholar
- R. Milner. Communication and Concurrency. Prentice Hall, Englewood Cliffs, NJ, 1989.]] Google Scholar
Digital Library
- M. G. Nanda and S. Ramesh. Slicing concurrent programs. In Proceedings of the International Symposium on Software Testing and Analysis, pages 180--190. ACM Press, 2000.]] Google Scholar
Digital Library
- D. Park. Concurrency and automata on infinite sequences. In Proceedings of the 5th GI-Conference on Theoretical Computer Science, number 104 in Lecture Notes in Computer Science, pages 167--1183. Springer-Verlag, 1981.]] Google Scholar
Digital Library
- S. L. Peyton Jones. Parallel implementations of functional programming languages. The Computer Journal, 32(2):175--186, 1989.]] Google Scholar
Digital Library
- S. L. Peyton Jones and J. Launchbury. Unboxed values as first class citizens in a non-strict functional language. In Hughes {6}, pages 636--666.]] Google Scholar
Digital Library
- W. R. Stevens. UNIX Network Programming. Prentice Hall Software Series, 1990.]] Google Scholar
Digital Library
- Y. M. Tang and P. Jouvelot. Effect systems with subtyping. In W. Scherlis, editor, Proc. ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation PEPM '95, pages 45--53, La Jolla, CA, USA, June 1995. ACM Press.]] Google Scholar
Digital Library
- F. Tip. A survey of program slicing techniques. J. Programming Languages, 3(3):121--189, 1995.]]Google Scholar
Digital Library
- D. Walker, C. Crary, and G. Morrisett. Typed memory management via static capabilities. ACM Transactions on Programming Languages and Systems, 22(4):701--771, July 2000.]] Google Scholar
Digital Library
- S. Zdancewic, L. Zheng, N. Nystrom, and A. C. Myers. Secure program partitioning. ACM Transactions on Computer Systems, 20(3):283--328, 2002.]] Google Scholar
Digital Library
- L. Zheng, S. Chong, A. C. Myers, and S. Zdancewic. Using replication and partitioning to build secure distributed systems. In Proceedings of the 2003 IEEE Symposium on Security and Privacy, page 236. IEEE Computer Society, 2003.]] Google Scholar
Digital Library
Index Terms
From sequential programs to multi-tier applications by program transformation






Comments