Liquid Software Architecture (LiSA)
Just as liquids fill up the space provided by their container, liquid software architectures can be automatically deployed to optimally run on different heterogeneous distributed execution environments, such as the ones used to build smart world applications. The LiSA project revolves around the notion of software architecture seen as a fundamental abstraction for driving the execution of software applications as they are deployed across many different pervasive execution environments. These can mix small, resource-limited, mobile or fixed devices together with large clusters of modern multi-core multi-chip processors commonly found in virtualized Cloud computing environments. The idea is to provide developers with a programming model that will enable them to design the architecture of smart world applications while delaying all design decisions concerning the actual deployment of the architecture until the application is ready to be executed. Once the liquid architecture is about to be ´´poured´´ on the target execution environment, a compiler will automatically work out all the implications and the constraints that, for example, control the choice of the most appropriate software connector and communication protocols for the given runtime platform. Likewise, placement decisions on where (i.e., on the client mobile device, on the sensor node, or up in the cloud) software components should be instantiated/replicated will be taken automatically by the compiler/runtime to deliver the scalability, elasticity, adaptability and transparent deployment that define liquid software architectures.