Language-Based Data Sharing in Web Applications - Lopes, Tiago Delfim Parada Gonçalves Queijo (2017)
Cloud development and virtualization of applications is crucially becoming the common practice in the software engineering industry. Many systems and database tools are available to support applications with many instances and views, but all the orchestration of data and functionality in the so-called multi-tenant applications comes with a high development and maintenance cost. Due to the high costs of developing and maintaining such applications, there is an increasing need for languages and tools that support the gradual development of software for a highly shared environment, at the developer and user level. We extend a typed, reactive and incremental programming environment and language with parameterized modules that increase application modularity, with lenses that provide a (filtered) data sharing mechanism between modules, and the (dynamic) verification of module access conditions to implement data privacy. The combination of these mechanisms is a safe and powerful mechanism to design and evolve cloud and web applications. We present a pragmatic programming language supported by a deployed prototype where several examples of applications illustrate this new programming paradigm. We also provide a largerweb application example as a means of showing how the combination of the introduced mechanisms allows for the development of multi-tenant applications, and to compare it against implementations in modern frameworks.