7 research outputs found
Applications of Causality and Causal Inference in Software Engineering
Causal inference is a study of causal relationships between events and the
statistical study of inferring these relationships through interventions and
other statistical techniques. Causal reasoning is any line of work toward
determining causal relationships, including causal inference. This paper
explores the relationship between causal reasoning and various fields of
software engineering. This paper aims to uncover which software engineering
fields are currently benefiting from the study of causal inference and causal
reasoning, as well as which aspects of various problems are best addressed
using this methodology. With this information, this paper also aims to find
future subjects and fields that would benefit from this form of reasoning and
to provide that information to future researchers. This paper follows a
systematic literature review, including; the formulation of a search query,
inclusion and exclusion criteria of the search results, clarifying questions
answered by the found literature, and synthesizing the results from the
literature review. Through close examination of the 45 found papers relevant to
the research questions, it was revealed that the majority of causal reasoning
as related to software engineering is related to testing through root cause
localization. Furthermore, most causal reasoning is done informally through an
exploratory process of forming a Causality Graph as opposed to strict
statistical analysis or introduction of interventions. Finally, causal
reasoning is also used as a justification for many tools intended to make the
software more human-readable by providing additional causal information to
logging processes or modeling languages
Deterministic Concurrency: A Clock-Synchronised Shared Memory Approach
International audienceSynchronous Programming (SP) is a universal computational principle that provides deterministic concurrency. The same input sequence with the same timing always results in the same externally observable output sequence, even if the internal behaviour generates uncertainty in the scheduling of concurrent memory accesses. Consequently, SP languages have always been strongly founded on mathematical semantics that support formal program analysis. So far, however, communication has been constrained to a set of primitive clock-synchronised shared memory (csm) data types, such as data-flow registers, streams and signals with restricted read and write accesses that limit modularity and behavioural abstractions. This paper proposes an extension to the SP theory which retains the advantages of deterministic concurrency, but allows communication to occur at higher levels of abstraction than currently supported by SP data types. Our approach is as follows. To avoid data races, each csm type publishes a policy interface for specifying the admissibility and precedence of its access methods. Each instance of the csm type has to be policy-coherent, meaning it must behave deterministically under its own policy-a natural requirement if the goal is to build deterministic systems that use these types. In a policy-constructive system, all access methods can be scheduled in a policy-conformant way for all the types without deadlocking. In this paper, we show that a policy-constructive program exhibits deterministic concurrency in the sense that all policy-conformant interleavings produce the same input-output behaviour. Policies are conservative and support the csm types existing in current SP languages. Technically, we introduce a kernel SP language that uses arbitrary policy-driven csm types. A big-step fixed-point semantics for this language is developed for which we prove determinism and termination of constructive programs
BDL, a language of distributed reactive objects
Theme 1 - Reseaux et systemes - Projets EPATR & PAMPASIGLEAvailable from INIST (FR), Document Supply Service, under shelf-number : 22588, issue : a.1998 n.1145 / INIST-CNRS - Institut de l'Information Scientifique et TechniqueFRFranc
BDL, a language of distributed reactive objects
Theme 1 - Reseaux et systemes. Projet EPATR et PAMPASIGLEAvailable from INIST (FR), Document Supply Service, under shelf-number : 14802 E, issue : a.1998 n.3353 / INIST-CNRS - Institut de l'Information Scientifique et TechniqueFRFranc
BDL, a language of distributed reactive objects
We introduce the definition of a language of distributed reactive objects, a Behaviour Description Language (BDL), as a unified medium for specifying, verifying, compiling and validating object-oriented, distributed reactive systems. One of the novelties in BDL is its seamless integration into the Unified Modeling Language approach (UML). BDL supports a description of objects interaction which respects both the functional architecture of system designs and the declarative style of diagram descriptions. This support is implemented by means of a partial-order theoretical framework. This framework allows to specify both the causality and the control models of object interactions independently of any hypothesis on the actual configuration of the system. Given the description of such a configuration, the use of BDL offers new perspectives for a flexible verification of systems by modeling them as an asynchronous network of synchronous components. It allows an optimized code generation by ..
BDL, a language of distributed reactive objects
We introduce the definition of a language of distributed reactive objects, a Behaviour Description Language (BDL), as a unified medium for specifying, verifying, compiling and validating object-oriented, distributed reactive systems. One of the novelties in BDL is its seamless integration into the Unified Modeling Language approach (UML). BDL supports a description of objects interaction which respects both the functional architecture of system designs and the declarative style of diagram descriptions. This support is implemented by means of a partial-order theoretical framework. This framework allows to specify both the causality and the control models of object interactions independently of any hypothesis on the actual conguration of the system. Given the description of such a configuration, the use of BDL offers new perspectives for a flexible verification of systems by modeling them as an asynchronous network of synchronous components. It allows an optimized code generation by using compil..