Multi-tier programming

Multi-tier programming
复制标题

多层编程

DOI:
--
复制
发表时间:
2007
期刊:
影响因子:
--
通讯作者:
M. Charlton
M. Charlton
中科院分区:
--
文献类型:
--
作者:
A. Deller;D. Edwards;T. Mortensen;C. A. Isaac;D. P. Werf;H. Telle;M. Charlton

文献摘要

被引文献

相似文献

多层应用程序传统上是以客户端-服务器体系结构的风格设计的,迫使系统的不同部分被分割成针对不同平台的单独模块。尽管模块化设计的优点是显而易见的,但为应用程序的物理设计选择多层体系结构是否也应该决定其逻辑设计,这是值得怀疑的。不要忘记,由于手动开发分布式应用程序而增加的复杂性可能会大大提高bug的发生率。在这篇论文中,我们提供了一个顺序多层编程语言的基本构建块。这种语言将允许程序员以顺序的方式编写多层应用程序,而不必手动编写分布式代码。但是,将程序代码模块化为针对特定层的组件的过程可以交给(半)自动工具。为了实现上述过程,本文提出了一种基于两个支柱的方法:第一,计算最优模块化的算法,第二,转换方案,生成与原始顺序程序具有相同语义的分布式程序。第一个支柱集中在放置推理系统的理论背景。该系统自动为顺序程序分配正确的位置,表征代码的潜在分布。需要这样的放置作为后续转换步骤的输入。第一支柱的元素是一个中间语言,表达分布式程序的定时行为,基于约束的布局分析,和约束求解器确定所有有效的布局程序。通过设计一个分布式程序的成本模型,它是可能的,以估计最坏情况下的运行时行为的程序与一个给定的位置。最佳布局是通过确定具有最小最坏情况行为的布局来计算的。第二个支柱提出了一个程序转换方案,通过一系列的中间语言,转换一个顺序的程序与支持的位置到一个分布式的对应,使用显式的通信原语。中间语言由操作语义和带注释类型的静态类型系统正式定义。该方案的转换步骤是正式指定的公式规则或两个演算之间的翻译。对于转换方案中的一个主要步骤,即从基于消息的通信模式转换到基于双向流的通信模式,本文使用互模拟证明方法给出了形式化的正确性结果。
Multi-tier applications are traditionally designed in the style of a client-server architecture, forcing different parts of the system to be split up into separate modules that are targeted for different platforms. Even though the advantages of a modular design are apparent, it is questionable whether choosing a multi-tier architecture for the physical design of an application should also dictate its logical design. Not to forget that the increase in complexity as the result of manually developing a distributed application can raise the occurrence rate of bugs considerably. In this thesis, we provide the basic building blocks for a sequential multi-tier programming language. Such a language would allow programmers to write multi-tier applications in sequential style instead of having to write distributed code manually. Henceforth, the process of modularizing the program code into components targeted for the specific tiers could be handed over to a (semi-)automatic tool. To realize the process mentioned above, this dissertation proposes an approach based on two pillars: firstly, on an algorithm for computing an optimal modularization, and secondly, on a transformation scheme that generates a distributed program with the same semantics as the original sequential program. The first pillar focuses on the theoretical background of a placement inference system. This system automatically assigns a correct placement to a sequential program, characterizing a potential distribution of code. Such a placement is needed as input for the succeeding steps of transformation. Elements of the first pillar are an intermediate language expressing the timing behavior of distributed programs, a constraint-based placement analysis, and a constraint solver determining all valid placements for a program. Through devising a cost model for distributed programs, it is possible to estimate the worst-case runtime behavior of a program with a given placement. Optimal placements are computable by determining placements with minimal worst-case behavior. The second pillar presents a program transformation scheme which, by going through a series of intermediate languages, transforms a sequential program with the support of a placement into a distributed counterpart that uses explicit communication primitives. The intermediate languages are formally defined by operational semantics and static type systems with annotated types. The transformation steps of the scheme are formally specified by either equational rules or translations between two calculi. For onemajor step of the transformation scheme, namely the shift from a message-based to a bidirectional stream-based communication paradigm, the thesis provides a formal correctness result using the bisimulation proof method.