The characteristics and demands of modern digital society have transformed the software development landscape, imposing challenges such as faster deliveries, frequent requirement changes, lower tolerance for failures, and adaptation to new business models. Addressing these challenges involves multiple aspects (e.g., processes, people, tools, policies, and culture), requiring a broad view of the organizational environment. In this context, System Thinking emerges as a suitable approach for application in Software Engineering.
Unlike the traditional approach, which analyzes problems by breaking them into parts and then integrating them, System Thinking prioritizes understanding the interdependencies among elements, whether dynamic or structural. From this perspective, an organization is understood as a system, that is, an organizational environment (or part of it) composed of elements (such as teams, artifacts, and policies) and their interconnections, organized coherently to produce behaviors that reflect its function or purpose.
System Thinking has been considered one of the key management competencies for the 21st century. The systemic perspective provided by this approach enables a better understanding of how a system operates and, consequently, allows for more effective and proactive action.
Although System Thinking has been successfully applied in several fields, its use in Software Engineering is still underexplored. Literature on the use of System Thinking in Software Engineering reveals a predominance of Causal Loop Diagrams (CLDs), one of the modeling tools provided by Systems Thinking. A CLD is a visual representation that shows cause-and-effect relationships among variables in a system. By connecting these variables, CLDs help understand how system behavior evolves.
In the context of Software Engineering, CLDs can help analyze complex situations such as software project delays, increasing technical debt, communication challenges in teams, or recurring quality issues. By visually representing variables and relationships, CLDs help software engineers explore possible root causes of problems, better understand the dynamics of software development environments, and take actions aimed at improving products and processes.
The following paper presents a systematic mapping study that provides an overview of the use of System Thinking in Software Engineering.
Aiming to provide structured knowledge about CLDs, the following paper introduces a conceptual model for CLD. The model supports domain understanding and serves as a foundation for the development of computational tools to support CLD construction and analysis.
The proposed conceptual model was used in the development of CaLMo (Causal Loop diagram Modeler), a tool that supports CLD development and analysis. CaLMo was introduced in the following paper. The tool is available here.
To provide foundational knowledge about CLDs and practical guidance on their application in Software Engineering, the guide Causal Loop Diagram in Software Engineering: Theoretical Foundations and Guidelines was developed. The goal of the guide is to provide a theoretical understanding of the main CLD elements and support the application of CLDs to address software engineering problems. To this end, the guide presents theoretical foundations of CLD, illustrates concepts with application examples in the Software Engineering context, describes a step-by-step process for creating a CLD, and provides general information about CaLMo. The guide is available here.