Rapidly locating and understanding errors using runtime monitoring of architecture-carrying code

Finding and understanding errors in software that is deployed in the field and tested by beta testers or used in production is a difficult and often time consuming task. If the feedback to the developers is naïvely composed of log messages, stack traces, and informal user feedback, it might not contain enough information to locate the erroneous fragments efficiently. It is thus slowing the dynamics in rapid continuous software engineering scenarios. These errors can more easily be found when the code is explicitly designed to carry architectural specifications by intertwining structure and behavior models with the rest of the code. With architecture-carrying code, (1) the steps leading to single errors can be replayed for understanding and debugging; (2) statistical information about errors can be related to structure elements and behavior branches. In this paper we present our idea of architecture-carrying code and its application for error understanding to support rapid continuous software engineering.