Cognitive application area networks. (2017) - Mikkilineni, Rao; Morana, Giovanni; Zito, Daniele; Keshan, Surendra
Each software application, from e-commerce to a complex machine learning algorithm, is composed of a set of distributed, interacting components that collaborate to accomplish a common goal. While this application goal or the intent is well-defined and decomposed into sub-tasks to be embedded (à la Turing machine) in each composed component, the quality of the application (in terms of performance, responsiveness, availability or robustness) is strongly influenced by how and where the components are executed. This kind of information, including the meta-knowledge of the intent of the algorithm, the association of specific component to a specific machine, the temporal evolution and exception handling when the application deviates from its intent, is outside the application design and expressed in terms of non-functional requirements. In this paper, we describe how it is possible to exploit these non-functional requirements to effectively enforce the application intent while the computation is still in progress.