Systematic Software Diagnostics

Systematic Software Diagnostics attempts to unify various disorganized and fragmentary individual software diagnostic approaches for software construction and post-construction phases.

Initially, when working on software diagnostics foundations, we recognized the need for systematicity by including some of our books and training courses in the Systematic Software Fault Analysis Series. Over the following years, our many practical books became supplemented by theory and a series of seminars.

Now, after more than 15 years, coherent and complete theoretical, practical, and factual knowledge is systematically unified and ordered into pattern catalogs according to first principles after being integrated across individual observations as fully as possible at this time of the discipline development. In addition to systematicity, software diagnostics is also highly interdisciplinary and systemic, crossing boundaries of other disciplines. Its fundamental methodology is a pattern-oriented analysis of artifacts. Every artifact is considered a trace, log, text, and narrative. Diagnostic analysis patterns, common recurrent analysis techniques and methods in specific contexts, organized into catalogs, are used to identify structural and behavioral patterns, common recurrent problems (sets of indicators, symptoms, signs) together with recommendations and possible solutions to apply in specific contexts.

Consider, for example, a typical diagnostic procedure called measurement. It is an analysis pattern itself applied to artifacts or used to generate other artifacts to which analysis patterns are applied. Systematic Software Diagnostics is equally applicable to software development processes where the same analysis patterns are applied to development artifacts, repositories, documentation, management operations, monitoring, team structure, and dynamics. Even a diagnostic analysis is considered an artifact to apply analysis patterns. Where Systematic Software Diagnostic overlaps with other development and engineering activities, it offers additional pattern languages for software data analysis, troubleshooting, debugging, root cause analysis, performance analysis, writing tools, software and memory forensics, memory dump analysis, network trace analysis, static and dynamic malware analysis, reversing, vulnerability analysis, software internals, and cloud computing.