The era of distributed systems is upon us. The Internet revolution, combined with the recent explosion of smart devices, indicate a clear trend toward ubiquitous and pervasive computing that will continue to change the way people live and interact, the way corporations conduct and extend their enterprise business, pushing distributed systems toward inevitably becoming an increasingly important and integral part of everyday life. To realize distributed systems, middleware is needed to integrate diverse heterogeneous software components and to allow them to interoperate effectively, while at the same time providing support for several middleware-specific services/concerns that tend to crosscut the boundaries of software components, such as distribution, concurrency, transactions, or security. In times when software systems in general, and distributed systems in particular, are facing ever more complex environments characterized by openness and variety, with new requirements to satisfy and new (emerging) technologies to adapt to, developers are forced to rely on fundamental techniques of software engineering, such as separation of concerns, modularization, and abstraction, in order to cope with increasing complexity and constant change. Moreover, software development methods are most welcome by developers to assist them in the development of applications so that the complexity of the development process becomes manageable. Unfortunately, currently existing software engineering methods continue to have a strong focus on functional requirements, ignoring more or less non-functional concerns, such as middleware-specific concerns, which have nevertheless to be addressed sooner or later when designing and implementing distributed systems. Typically, such middleware-specific concerns are then postponed down to implementation and deployment time, which may be error prone since not necessarily all developers are aware of all the design decisions that have been made at different stages throughout the development life cycle of the application. Adopting a Model-Driven Engineering (MDE) approach, and adhering to the Object Management Group's Model-Driven Architecture (MDA) standardization initiative for MDE, we advocate in this thesis that such middleware-specific concerns should already be addressed at higher levels of abstraction before moving to their concrete implementation on a specific middleware platform. Moreover, despite their crosscutting nature, appropriate modularization units have to be devised to encapsulate such middleware-specific concerns at each level of abstraction so that they do not hinder the analysis and design of the business logic. Different stakeholders may then reason about the core functionality and the different non-functional concerns separately. Furthermore, a clear methodology is needed to describe the sequence of (concern-aware) models to be developed, and how exactly to derive a (concern- aware) model from another one at the ab
Dimitrios Kyritsis, Jinzhi Lu, Xiaochen Zheng
Dimitrios Kyritsis, Jinzhi Lu, Yan Yan
Federico Alberto Alfredo Felici, Richard Pitts, Federico Pesamosca, Anna Ngoc Minh Trang Vu