The PASS project claims that a design approach combining both product models and development process models will dramatically (1) ease the design and development of adaptive software systems and (2) improve their quality. The project aims at studying development processes and product models for an original component model in order to improve its adaptative features and to have a better control on its non-functional properties.
PhD Students (February 2016)
Adaptive software aims at adjusting various artifacts or attributes in response to changes in the system operating environment. By operating environment we mean everything that may affect the software system behavior and its properties, for example changing requirements, execution platform, and resources.
Adjustment can be performed at design time and lead to the disruption of software operation. However, the higher demand for ubiquitous, pervasive, embedded, and mobile environments, has led to the need of runtime adaptation, i.e., without software disruption. Runtime adaptation increases software complexity as the software itself has to cope with variability. Complexity is even increased if the application or system is distributed. Indeed, adjusting operations may involve artifacts running on different execution platforms and adaptation mechanisms available on them may vary.
On the other hand, software complexity is tackled by focussing on the software product itself or its related design process. The first one mainly proposes artifacts such as languages, software architectures, frameworks, and middleware that help on mastering complexity at a manageable degree for designers and maintainers. The second one is interested in providing a methodology (process) to design a software system that satisfies user requirements. It guides developers in taking into account important functional and non functional concerns and may be reused for each development. Both areas offer different but interesting approaches that help in managing software complexity.
Our research field is at the intersection of model driven engineering, software architecture, process modeling, verification and validation, and distributed systems. We intend to scientifically contribute to the three first domains (model driven engineering, software architecture, process modeling).
In this scientific context, we are interested in three kinds of systems: large scale, highly dynamic (mobile, P2P) and strongly constrained (real-time, embedded) where non functional properties such as safety, performance and reliability are important. For instance, ambient assisted living, satellites, cloud, mobile games, pervasive learning, etc.