Static Scheduling of Sequential Multi-Tier Applications Matthias Neubauer, Universität Freiburg Using the typical multi-layered software architecture to design a modern application usually leads to a separation of concerns between multiple tiers. While for specific tasks of an application the designated tier might be already predetermined by physical or technological constraints, for other tasks it might not be obvious at all how to assign a tier. Depending on the tier a task is operating on, the computational cost may vary, and depending on other tasks the task is cooperating with, additional middleware code has to be added to mediate between the tasks. Finding a good separation for the whole application is a complex endeavor, because assigning a task to a specific tier may influences the scheduling of depending tasks. The present work tries to addresses this problem by presenting a novel form of static program analysis that guides developers or a compiler to separate an application to tiers. Based on a formal calculus for a sequential core programming language for constructing multi-tier applications, we present the scheduling analysis as type system with additional cost constraints. By simplifying cost constraints to a simpler constraint domain, integer linear programming can be used to automatically infer optimal schedules for finite program approximations.