Abstract

To promote engineering self-aware and self-adaptive software systems in a reusable manner, architectural patterns and the related methodology provide an unified solution to handle the recurring problems in the engineering process. However, in existing patterns and methods, domain knowledge and engineers' expertise that is built over time are not explicitly linked to the self-aware processes. This linkage is important, as the knowledge is a valuable asset for the related problems and its absence would cause unnecessary overhead, possibly misleading results and unwise waste of the tremendous benefit that could have been brought by the domain expertise. This paper highlights the importance of synergizing domain expertise and the self-awareness to enable better self-adaptation in software systems, relying on well-defined expertise representation, algorithms and techniques. In particular, we present a holistic framework of notions, enriched patterns and methodology, dubbed DBASES, that offers a principled guideline for the engineers to perform difficulty and benefit analysis on possible synergies, in an attempt to keep "engineers-in-the-loop". Through three tutorial case studies, we demonstrate how DBASES can be applied in different domains, within which a carefully selected set of candidates with different synergies can be used for quantitative investigation, providing more informed decisions of the design choices.

Highlights

  • Engineering software systems has become increasingly complex and labor-intensive due to the continuous changes in requirements, the underlying environments, and the relevant data

  • 4) We demonstrate three recent tutorial case studies [23], [24], [26], which relied on DBASES, that seek to build self-aware and self-adaptive software systems

  • In 2014, we proposed a set of self-awareness patterns and methodolgoy [8], [10]–[12] derived from the general concept of self-awareness [49] for engineering self-aware and self-adaptive software systems

Read more

Summary

Introduction

Engineering software systems has become increasingly complex and labor-intensive due to the continuous changes in requirements, the underlying environments, and the relevant data Such complexity is prevalent when engineering self-aware and self-adaptive software systems—a category of systems that is capable of obtaining and maintaining knowledge on themselves and the environment, reasoning about this knowledge, and eventually adapting their operations to better cope with the changes. In this respect, engineers need some sets of high-level guideline that provides a clear overview of the software system to be built, based on which they are able to make better-informed decisions during the engineering process.

Objectives
Methods
Results
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call