Synergizing Domain Expertise with Self-Awareness in Software Systems: A Patternized Architecture Guideline

by   Tao Chen, et al.

Architectural patterns provide a reusable architectural solution for commonly recurring problems that can assist in designing software systems. In this regard, self-awareness architectural patterns are specialized patterns that leverage good engineering practices and experiences to help in designing self-awareness and self-adaptation of a software system. However, domain knowledge and engineers' expertise that is built over time are not explicitly linked to these patterns and the self-aware process. This linkage is important, as it can enrich the design patterns of these systems, which consequently leads to more effective and efficient self-aware and self-adaptive behaviours. This paper is an introductory work that highlights the importance of synergizing domain expertise into the self-awareness in software systems, relying on well-defined underlying approaches. In particular, we present a holistic framework that classifies widely known representations used to obtain and maintain the domain expertise, documenting their nature and specifics rules that permits different levels of synergies with self-awareness. Drawing on such, we describe mechanisms that can enrich existing patterns with engineers' expertise and knowledge of the domain. This, together with the framework, allow us to codify an intuitive step-by-step methodology that guides engineer in making design decisions when synergizing domain expertise into self-awareness and reveal their importances, in an attempt to keep 'engineers-in-the-loop'. Through three case studies, we demonstrate how the enriched patterns, the proposed framework and methodology can be applied in different domains, within which we quantitatively compare the actual benefits of incorporating engineers' expertise into self-awareness, at alternative levels of synergies.


page 6

page 7

page 13

page 14

page 18

page 26


Documentation of Machine Learning Software

Machine Learning software documentation is different from most of the do...

Where and What do Software Architects blog? An Exploratory Study on Architectural Knowledge in Blogs, and their Relevance to Design Steps

Software engineers share their architectural knowledge (AK) in different...

Modelling and Simulation Environment for Self-Adaptive and Self-Aware Cloud Architectures

Cloud-based software systems are increasingly becoming complex and opera...

Awareness requirement and performance management for adaptive systems: a survey

Self-adaptive software can assess and modify its behavior when the asses...

Making FPGAs Accessible to Scientists and Engineers as Domain Expert Software Programmers with LabVIEW

In this paper we present a graphical programming framework, LabVIEW, and...

Training Software Engineers for Qualitative Evaluation of Software Architecture

A software architect uses quality requirements to design the architectur...

Don't Lose Yourself! Empathetic Response Generation via Explicit Self-Other Awareness

As a critical step to achieve human-like chatbots, empathetic response g...

Please sign up or login with your details

Forgot password? Click here to reset