Principles and challenges of software architecture evolution
Software has been evolving from pre-defined, monolithic architectures to increasingly decentralized, distributed, dynamically composed federations of components. Binding mechanisms have been evolving from static to highly dynamic schemes based on discovery, negotiation, and optimization. We will survey the evolution of software composition mechanisms, from in-the-small embedded environments to in-the-large
environments, like web services.
Dynamic software architectures provide flexibility, but also raise a number of challenges.In particular, verification becomes very hard, and may extend to run-time. We will exemplify the verification problem by examining two case studies. In the first case, we discuss verification via model checking of dynamic architectures adopting a publish/subscribe paradigm. In the second case we will show how verification must be based on
continuous run-time monitoring.