  When faced with the task of designing and implementing a new self-aware and
self-expressive computing system, researchers and practitioners need a set of
guidelines on how to use the concepts and foundations developed in the
Engineering Proprioception in Computing Systems (EPiCS) project. This report
provides such guidelines on how to design self-aware and self-expressive
computing systems in a principled way. We have documented different categories
of self-awareness and self-expression level using architectural patterns. We
have also documented common architectural primitives, their possible candidate
techniques and attributes for architecting self-aware and self-expressive
systems. Drawing on the knowledge obtained from the previous investigations, we
proposed a pattern driven methodology for engineering self-aware and
self-expressive systems to assist in utilising the patterns and primitives
during design. The methodology contains detailed guidance to make decisions
with respect to the possible design alternatives, providing a systematic way to
build self-aware and self-expressive systems. Then, we qualitatively and
quantitatively evaluated the methodology using two case studies. The results
reveal that our pattern driven methodology covers the main aspects of
engineering self-aware and self-expressive systems, and that the resulted
systems perform significantly better than the non-self-aware systems.
