You are on page 1of 6

A Domain Specific Language Oriented to

Fault Detection, Isolation and Recovery


Maria Carmela Vitelli Massimo Tipaldi Luigi Troiano
R&D Department SW Department Dept. of Engineering
Intelligentia srl OHB System AG University of Sannio
I-82100 Benevento, Italy D-28359 Bremen, Germany I-82100 Benevento, Italy
Email: mcarmela.vitelli@intelligentia.it Email: massimo.tipaldi@ohb-system.de Email: troiano@unisannio.it

Abstract—Reliability of complex systems requires to take into II. R ELATED WORKS


account possible failures and strategies to detect and recover
from system faults. This leads designers to consider models and Different languages and solutions related to FDIR and
algorithms capable of simulating and verifying fault detection, Health Management Systems have been proposed over the past
isolation and recovery (FDIR) strategies in different scenarios,
characterized by uncertainty and partial information. Different
decades. In this section we report some examples from the
solutions have been proposed. In this paper we present Trouble, literature.
a domain specific language aimed at describing and simulating Hoara and Tixeuil [9] presented FAIL (Fault Injection
troubleshooting algorithm. Different examples highlight advan- Language) and FCI (Fail Cluster Implementation) for software
tages of such an approach. fault injection in distributed applications. FAIL is a language
Index Terms—FDIR; reliable systems; domain-specific lan-
guages; Bayesian troubleshooting. that permits to elaborate complex fault scenarios without
writing low level code. FCI consists of a compiler, a runtime
I. I NTRODUCTION library and a middleware platform for software fault injection
Reliable systems count on mechanisms to detect faults and in distributed applications. It is able to interface with numerous
solve failures. This issue is particularly relevant in various programming languages without requiring the modification
industrial contexts and applications such as (aero)space, indus- of their source code. The authors studied crash faults in
trial plants and machinery, automotive, robotics, etc. A large asynchronous distributed applications and provided a scheme
research effort has been paid over the past decade to both the for distributed software fault injection. Software approaches
theoretical and the application side in order to propose and test have different advantages since they are easier to set up, can
different solutions. In particular, the space industry is focusing be reproduced and do not risk damaging the hardware.
on how to design e.g. satellites and planetary spacecrafts Misera et al. [10] developed a hierarchical fault simulation
equipped with Fault Detection, Isolation and Recovery (FDIR) enviroment called FIT based on VHDL and C++. Its main
capabilities and high autonomy level [1], [2]. feature is the propagation of fault effects over functional
The approach hereafter proposed is domain-specific, there- blocks that are not available in form of gate level models. C++
fore focused on the definition of languages used to describe cannot handle typical properties of hardware like concurrency,
the system structure, its behavior in the presence of faults and therefore SystemC is used. In this paper the authors presented
procedures to recover from failures. This approach is different a new approach where the SystemC simulation task is incor-
from others which rely on white or black-box models (e.g., porates as ”thread” process into the FIT simulation process. In
see [3], [4], [5], [6], [7], [8]), are generally application-specific this way they managed to combine an effective modeling of
and require to be linked as libraries within a program written fault conditions with reasonable performance of the simulator.
to control the system instead of troubleshooting it. Contrary VHDL is also treated in [11], where Friedrich et al. de-
to this, Domain Specific Languages (DSL) offer the chance scribed an approach to use model-based diagnosis for fault
of focusing on the FDIR issues from a system standpoint detection and localization in VHDL programs. The initial
by dealing with concepts and aspects familiar to whom is in specification represents the functional requirements for the
charge of designing the system fault-tolerance capabilities. hardware to be designed. Then there is a detailed design on the
In this paper we present Troubles, a domain specific lan- RT level, that is converted into a gate-level after some tests.
guage, conceived to model and design algorithms for system The simulations produce waveform traces that are compared
troubleshooting. The remainder of this paper is organized as to other traces previously generated. If there is a discrepancy
follows: section 2 provides an overview of other languages then there is a fault in the design. Model-based system is rep-
and solutions for system health management and simulation; resented through system description and observations. System
section 3 is aimed at describing Troubles features and syn- description is derived from VHDL program and observations
tax; section 4 provides an example of application; section 5 are based on traces produced by simulation or user indication
outlines conclusions and future directions. of incorrect signal values entered.

978-1-4799-3400-3/13/$31.00 ©2013 IEEE 343


In [12] we can find another example of description language Observations. An observation is used to identify the current
for circuit failures and faults. This language is able to support status of the system. It is characterized by a series of states
the structural configuration design of circuits with the view that define the possible options to select exclusively. An
to verifying statically when unexpected failures arise within observation has no cost associated and should be able to select
circuits. The ”circuits as predicate” paradigm is adopted, or discard a number of issues of the system.
where the circuit behavior is interpreted via predicates. Repairing Actions. If executed, an action set may restore
Funabashi et al. [13] introduced a time domain model of a the system into nominal operation. An action has an associated
fault locator using MODELS, a language in the APT version of cost and can be linked to a subset of all the issues. It is
EMTP. The fault locator model has an input analog filter, sam- necessary to define a repair probability.
pling hold and digital filters, magnitude and phase calculation, Solvers. Solver’s role is the fault identification and recovery.
fault locating algorithm and statistical output procedure. It can It is based on bayesian models and represents the resolution
model various fault types using different simulation cases. algorithm. Solver should support the operator in detecting
LISA [14] is a machine description language. LISA and faults in the real system. It is characterized by an actions set
its generic machine model are able to produce processor to be performed on the affected system in order to restore its
models covering HW/SW co-design needs and co-simulation normal operating status and optimizes the restore procedure
enviroment. This language was developed to cover the gap taking into account the efficiency of the operations being
between coarse ISA models (used in compilers and instruction- performed.
set simulators) and detailed models (used for hardware design). Model Reuse. Thanks to Troubles, it’s possible to reuse
The purpose of this language was to define a single generic models previously defined. It’s possible to reuse both the
machine model and a single description language to cover a whole model and/or some of its constituents.
whole class of processor architectures. Abstraction. Another important characteristic of Troubles
In fault diagnosis for discrete event system, because of an is the abstraction given by the inclusion rule: one or more
insufficient number of sensors in the system, it is common runn systems can be included in the current system and can be
that a diagnosis result may contain several fault candidates. Su overwritten.
and Wonham [15] explain how to construct a probability space Language. Troubles is a highly declarative language since
over a regular language and how to perform a probabilistic the descriptive logic is made up of a set of definitions (decla-
reasoning to reduce diagnostic ambiguity. There are a lot of rations). We have different types of construct featured by its
probabilistic approaches to handle fault diagnosis, some of own keyword and properties but the same construct structure.
them are based on bayesian network and on hidden markov This makes Troubles orthogonal. The base declaration is
models. The authors used a standard method from the theory interchangeable, therefore it can be used for various constructs.
of markov process to define a probability space over a regular Troubles language is not strongly typed and has an implicit
language. They defined a simplified connection between a typesation, therefore the type is given by the right expression
local language model and the associated probability model to at execution time. Troubles is also a structured language. As
perform a faster on-line probabilistic reasoning. consequence, there is a particular form to be complied with:
Troiano and De Pasquale [16] proposed a methodology to firstly, there is a descriptive logic with a definition of different
decompose a complex problem in more treatable parts and elements, and secondly a solver logic with a procedure for the
an application of Bayesian approach to industrial case. They solver algorithm definition.
described a Bayesian network methodology to support and Troubles is an inherently domain-specific language, there-
drive decision in troubleshooting. fore it has certain some advantages over linked libraries, i.e.
expressiveness, compactness in terms of declarations, code line
III. L ANGUAGE SPECIFICATION number and domain-level sematic control at translation time
A. General charascteristics rather than at execution time.

Troubles is a domain-specific language (DSL) aimed at B. Syntax


modeling and solving troubleshooting problems under uncer-
Troubles is based on a free-context grammar for the lan-
tainty. Troubles is able to describe a troubleshooting problem
guage L, defined as the quadruple G = (N T, T, R, S), where
in terms of faults, observations and repairing actions. Trou-
bleshooting procedural logic can be specified to define the • NT is the finite set of non-terminal symbols, which

solver algorithm. In order to promote model reuse, system/sub- specify either a class or a syntactic category
system relationships are prescribed as well. • T is the tree of the terminal symbols for the language L

Faults. Also named issues, they represent a deviation from • S is a non-terminal symbol (S ∈ N T ) called start symbol

the normal operation of the system. To define a system fault it • R is the production rules set, used to describe all non-

is necessary to observe an anomaly or a failure effect. Faults terminal symbols


are organized hierarchically: elementary faults represents the Terminal symbols are keywords or symbols which are
leaves and their aggregation define more generic issues. For featured by a particular meaning. In our grammar, terminal
each and every issue, the failure rate has to be defined. symbols define particular constructs (e.g. system, failures,

344 2013 International Conference of Soft Computing and Pattern Recognition (SoCPaR)
Fig. 1. Production rule: script

actions, observations), structural constructs (e.g. for, repeat-


until), identifiers, numeric constants and operators.
Our start symbol is script (Fig. 1). It is a production rule
that represents the input scheme to follow. This production
rule is characterized by other non-terminal symbols: include, (a) systemDef
systemDef, labelsDef, issueDef, observationDef, actionDef
and procedure. This is a result of its highly declarative and
structural property. As depicted in Fig. 1, the input file is a
sequence of definitions that have a precise order and structure.
include (Fig. 2) verifies the modularity property: it allows
to link other systems/sub-systems (or part of them) previously (b) issueDef
defined in our current model.

(c) actionDef
Fig. 2. Non-terminal symbol: include

qualifiedName is a sequence of identifiers interspaced by


points. It is used to specify if the whole system or only a part
of it has to be included.
By means of labelsDef (Fig. 3) we define not strongly
(d) observationDef
typed variables that can be used in the input file. They can
are be strings and numerics such as float literal, integer literal Fig. 4. Non-terminal symbol: FDIR-domain definitions
and percentage literal. For each type, different operators are
available: qualification operator, concatenation operator and
algebraic, logical and relational operators. production rule called definition (Fig. 6). This rule allows the
orthogonal property. It is a complex rule which requires the
presence of optional elements as well as elements that can be
repeated several times. It is made up of the following elements:
• identifier is optional, therefore it is not mandatory to give
a name to a definition construct
• the number and value of parameters depends on the
Fig. 3. Non-terminal symbol: label constructs we are about to define (e.g. it can be a string
in systemDef or a numeric value representing the cost of
systemDef is used to describe the system and allows the the action in actionDef)
reuse of other systems/sub-systems previously defined, which • block, an optional element, that can enclose inside the
can be totally or in part reused and overwritten. braces one or more definition that can be preceded or
In the context of FDIR-domain definitions, the following not by a marker or a particular symbol that allows a tree
non-terminal symbols have been introduced (Fig. 4): definition
• issueDef defines faults with their probability occurrence • colon is used in subtrees definition
• observationDef production rule defines observations that • atClause (Fig. 5) is optional and allows the creation of
the logic resolver has to process decorated tree structure and the atClause rule creates links
• actionDef is the production rule that defines the repairing between its nodes.
action that may solve the issue The production rule procedure (Fig. 7) is used to define the
It is worth mentioning that systemDef, issueDef, obser- solver algorithm. body is a set of statements that allows the
vationDef and actionDef are all constructs based on the troubleshooting execution. Statements are Java/C++-like and

2013 International Conference of Soft Computing and Pattern Recognition (SoCPaR) 345
Fig. 6. Production rule: definition

attention to the control density, that is, relationship between


model consistency calls and overall consistency calls: the re-
sulting value represents the percentage of control that changes
from run time to compile time thanks to this new language.
Fig. 5. Production rule: atClause Three case studies have been taken into account, i.e. Internet
Connection System, Satellite System and Computer System.
Computer model is based on the identification and resolu-
can be assignment, expression, callExpression, ifStatement, tion of faults that may occur on a computer. A computer is
whileStatement, repeatStatement and forStatement. made up of several components, consequently parts of other
systems are identified, e.g. the Monitor model, hard disk model
or power supply model.
Hereafter, some excerpts from input files in Troubles are
listed. The following code shows an example of inclusion:
(a) procedure
use PowerSupply;
use Monitor;
use HD;
use Motherboard;
The system ”My pc” reuses systems from the imported
models:
system ’My pc’ : {
(b) body PowerSupply [PowerSupply];
Monitor [Monitor];
Fig. 7. Production rule: procedure Motherboard [Motherboard];
HardDisk [HD];
};
IV. A N ILLUSTRATIVE EXAMPLE In the following, we define some system issues. Each issue
Troubles is able to instantiate Bayesian models. In this has an associated probability to occur. In this case ”power
section, Dygnose [16] is considered with a view to pointing issues” has 5 sub-issues: some of them are imported from
out the benefits of the proposed approach. Dygnose is a soft- reused systems, e.g. ”cable issues” is linked to PowerSupply
ware tool with inborn problems identification and resolution system.
capabilities. In particular, it is able to lead the operator towards failures ComputerIssues : {
system failure identification and recovery under a remarkable .....
uncertainty level. Dygnose is characterized by two phases: ’power issues’ [45.45%] : {
- blackout [21.23%];
system modeling and system execution. As for the first phase, - ’cable issues’ [50.82%] :
all the necessary data to give a description to the addressed @ PowerSupply.’cable is damaged or not connected’;
system are collected. - ’monitor issues’ [12.53%] :
@ Monitor.’generic issue’;
The troubleshooting model creation follows same steps: - ’motherboard issues’ [4.23%] :
problem identification, identification of their causes, identi- @ Motherboard.’generic issue’;
- ’power supply issues’ [11.19%] :
fication of all the actions that may resolve them, identification @ PowerSupply.’generic issue’;
of all the observations that will give useful information about };
the causes of the problem. .....
};
Troubles input files can be integrated with Dygnose since
such files can be preprocessed/translated into Java and then In the following section, the observation definitions are
executed within the Dyagnose framework. We have analyze the shown. For each observation, we set the probability linked
inputs provided by the Troubles code and the corresponding to the specific state and issue.
translation in Java and Dygnose API. In particular, the source
observations Observations : {
lines of code (SLOC) for both the files (input and output) ......
have been assessed. As for .java files, we would like to pay - ’how many beeps are emitted?’ : {

346 2013 International Conference of Soft Computing and Pattern Recognition (SoCPaR)
’1’;
’2’; TSRepository repository = TSWorkspace.getInstance().
’no beep’; getRepositoryForLocation(
’continuos beep’; TSWorkspace.SINGLE_FILE_SYSTEM_BASED, repositoryPath);
};
TSWorkspace.getInstance().loadRepository(repository);
@’power issues’ [-0.25, -0.21, 0.49, -0.21],
@blackout [-1.00, -1.00, 0.70, -1.00], TSPackage packSingleSystems =
@’cable issues’ [0.00, 0.00, 0.50, 0.00], repository.getPackage("computerSingleSystem");
..... TSPackage packSistemaComputer =
@’hardware conflict’ [0.00, 0.00, 0.70, 0.00], repository.createPackage("sistemaComputer");
@’generic device is damaged’ [-0.60, 0.00, 0.70, 0.00], TSSystem sysComputer =
@’generic post issue’ [0.00, 0.50, 0.00, 0.00]; repository.createSystem(packSistemaComputer);

TSSystem sysHardDisk = packSingleSystems.getSystem("HardDisk");


..... .....
}; TSSystem sysPowerSupply =
packSingleSystems.getSystem("PowerSupply");
Likewise, for each and every action there is a probability
TSPart powerSupply = sysPowerSupply.getPart("PoweSypply");
associated with some issues, which states the likelihood of the .....
action in solving the i-issue. TSPart motherboard = sysPowerSupply.getPart("Motherboard");

actions Actions : { sysComputer.setName("My pc");


..... sysComputer.addPart(powerSupply);
- ’update bios’ [25.00] : sysComputer.addPart(monitor);
@’power issues’ [0.00], sysComputer.addPart(hardDisk);
sysComputer.addPart(motherboard);
@’post issues’ [0.11],
@’keyboard failure’ [0.00], TSIssue rootIssue = sysComputer.getRootIssue();
... TSIssue powerIssue = sysComputer.createIssue(rootIssue);
@’hardware conflict’ [0.50], powerIssue.setName("power issues");
@’generic device is damaged’ [0.00], powerIssue.setFrequency(0.45);
@’generic post issue’ [0.40];
TSIssue blackout = sysComputer.createIssue(powerIssue);
..... blackout.setName("blackout");
blackout.setFrequency(0.21);
};
TSIssueLink cableIssues =
After defining the system with the associated issues, ob- sysComputer.createIssueLink(powerIssue);
servations and actions, the resolving procedure has to be cableIssues.setName("cable issues");
cableIssues.setFrequency(0.50);
implemented. A procedure is a set of instructions with the
purpose of performing troubleshooting and solving/isolating TSIssueLink monitorIssues =
sysComputer.createIssueLink(powerIssue);
failures. monitorIssues.setName("monitor issues");
monitorIssues.setFrequency(0.12);
algorithm Algorithm : {
.list = addAll(Actions); TSIssueLink motherboardIssues =
.list = addAll(Observations); sysComputer.createIssueLink(powerIssue);
motherboardIssues.setName("motherboard issues");
.i = .list.size(); motherboardIssues.setFrequency(0.04);

TSIssueLink powerSupplyIssues =
while(.list.next) { sysComputer.createIssueLink(powerIssue);
.pi = .list.prob; powerSupplyIssues.setName("power supply issues");
.c = .list.cost; powerSupplyIssues.setFrequency(0.11);
.list.eff = .pi / .c; .....
}
TSObservation numBeep = sysComputer.createObservation();
.orderedList = .list.sortedby( .eff ); numBeep.setName("how many beeps are emetted?");
numBeep.createState("1","description");
.solved = false;
numBeep.createState("2","description");
.size = .orderedList.size(); numBeep.createState("no beep","description");
numBeep.createState("continuos beep","description");
while(.orderedList.next || .solved == true) {
.execution = .oderedList.execute(); numBeep.setBipolarObservingProbability(powerIssue,
if(.execution == true) { new double[]{-0.25,-0.21,0.49,-0.21});
.solved = true; numBeep.setBipolarObservingProbability(blackout,
.str > new double[]{-1.00,-1.00,0.70,-1.00});
numBeep.setBipolarObservingProbability(cableIssues,
java.lang.String("Troubleshooting finished.");
new double[]{0.00,0.00,0.50,0.00});
} .....
} numBeep.setBipolarObservingProbability(hardwareConflict,
} new double[]{0.00,0.00,0.70,0.00});
numBeep.setBipolarObservingProbability(genericDeviceDamaged,
In the following, the translated code in Java and Dygnose new double[]{-0.60,0.00,0.70,0.00});
numBeep.setBipolarObservingProbability(genericPostIssue,
API is reported. new double[]{0.00,0.50,0.00,0.00});
TSWorkspace.getInstance().loadWorkspace();
.....
String repositoryPath = "C:\\Documents and Settings\\
TSRepairingAction updateBios =
Administrator\\Documenti\\Troubleworkspace\\computer.xml";

2013 International Conference of Soft Computing and Pattern Recognition (SoCPaR) 347
TABLE I represent the reasoning algorithms. Model reuse and ab-
T ROUBLES VS JAVA T RANSLATION . straction are features which make Troubles scripts to scale
SLOC Troubles SLOC Java Control density problem complexity. In addition, the language is highly
Internet Connec- declarative, implicitly typed, orthogonal and structured. The
tion System 208 351 0.93
Satellite System 231 457 0.94
current version of the language is specifically designed to
Computer work with troubleshooting problems under uncertainty. The
System 332 558 0.94 example demonstrates how the same problem can be described
more concisely than using hosted libraries. Moreover, some
(domain-specific) controls which should be kept at runtime in
sysComputer.createRepairingAction(); the case of software libraries can be moved at compile time in
updateBios.setName("update bios"); the case of Troubles scripts. This improves solver verification
updateBios.setCost(25.0);
updateBios.setRepairingProbability(powerIssue,0.00); and performances. The version of Troubles presented in this
updateBios.setRepairingProbability(postIssues,0.11); paper is only preliminary. We aim at developing more in depth
updateBios.setRepairingProbability(keyboardFailure,0.00);
..... the language constructs and providing simulation capabilities
updateBios.setRepairingProbability(hardwareConflict,0.50); that are lacking at the moment.
updateBios.setRepairingProbability(genericDeviceDamaged,
0.00); R EFERENCES
updateBios.setRepairingProbability(genericPostIssue,0.40);
[1] A. Zolghadri, “Advanced model-based FDIR techniques for aerospace
..... systems: Today challenges and opportnunities,” Progress in Aerospace
Sciences, vol. 53, pp. 18–29, 2012.
//we create a session
TSSession session = new TSSession(sysComputer,
[2] X. Olive, “FDI(R) for satellites: how to deal with high availability
"nome dell’operatore", "nome del cliente"); and robustness in the space domain?” International Journal of Applied
TSReasoner reasoner = TSReasonerBuilder.createReasoner( Mathematics and Computer Science, vol. 22, no. 1, pp. 99–107, 2012.
TSReasonerBuilder.HUGIN_REASONER); [3] S. Ierace, P. Marinaro, P. Tatavitto, and L. Troiano, “Profiling the power
usage of industrial machinery by ann,” in Soft Computing and Pattern
//we start the session Recognition (SoCPaR), 2010 International Conference of, 2010, pp.
session.startSession(reasoner); 413–418.
[4] S. Ierace, R. Pinto, L. Troiano, and S. Cavalieri, “Neural network as an
TSSecondaryList<TSStep> suggestions =
session.getSuggestions();
efficient diagnostics tool: A case study in a textile company,” vol. 1, no.
TSSecondaryList<TSEvidence<TSObservation>> PART 1, 2010, pp. 122–127.
observations = session.getObservations(); [5] L. Troiano, G. Scibelli, and C. Birtolo, “A fast algorithm for mining rare
itemsets,” in ISDA. IEEE Computer Society, 2009, pp. 1149–1155.
TSSecondaryList<TSOperation> list = new TSSecondaryList [6] L. Troiano, M. Tipaldi, A. Di Cerbo, M. Hoping, D. De Pasquale, and
<TSOperation>(null, TSDefaultSorters.EXPECTED_COST_SORTER); B. Bruenjcs, “Satellite fdir practices using timed failure propagation
list.linkTo(suggestions); graphs,” vol. 11, 2012, pp. 8524–8531.
list.linkTo(observations); [7] L. Troiano and G. Scibelli, “A time-efficient breadth-first level-wise
list.sortElements();
lattice-traversal algorithm to discover rare itemsets,” Data Mining
and Knowledge Discovery, pp. 1–35, 2013. [Online]. Available:
boolean solved = false; http://dx.doi.org/10.1007/s10618-013-0304-3
[8] S. Rampone, V. Pierro, L. Troiano, and I. Pinto, “Neural network
while (list.size() > 0 || solved) { aided glitch-burst discrimination and glitch classification,” International
TSOperation op = list.iterator().next(); Journal of Modern Physics C, vol. 24, no. 11, 2013.
session.execute(op); [9] W. Hoara and S. Tixeuil, “A language-driven tool for fault injection
if (session.isSolved()) { in distributed systems,” in Grid Computing, 2005. The 6th IEEE/ACM
solved = true;
System.out.println("Troubleshooting
International Workshop on, 2005, pp. 8 pp.–.
finished."); [10] S. Misera, H. Vierhaus, L. Breitenfeld, and A. Sieber, “A mixed language
} fault simulation of vhdl and systemc,” in Digital System Design:
Architectures, Methods and Tools, 2006. DSD 2006. 9th EUROMICRO
} Conference on, 2006, pp. 275–279.
[11] G. Friedrich, M. Stumptner, and F. Wotawa, “Model-based diagnosis of
The table I collects the results/metrics of our comparative hardware designs,” Artificial Intelligence, vol. 111, no. 1–2, pp. 3 – 39,
study between an approach based on Troubles and the one 1999.
[12] J. Rocheteau and J.-L. Boulanger, “Circuit fault & failure description
based on hosted libraries in applying a bayesian methodology language,” in System Safety, 2008 3rd IET International Conference on,
for Computer, Internet Connection and Satellite Systems. It 2008, pp. 1–5.
highlights that Troubles is able to decrease the SLOC figures [13] T. Funabashi, Y. Mizuma, H. Otoguro, and L. Dube, “Fault locator
simulation using models language,” in Energy Management and Power
and, first and foremost, the control density thanks to the fact Delivery, 1998. Proceedings of EMPD ’98. 1998 International Confer-
that model consistency controls are performed at compile-time ence on, vol. 2, 1998, pp. 601–606 vol.2.
directly on DSL files. [14] V. Zivojnovic, S. Pees, and H. Meyr, “Lisa - machine description
language and generic machine model for hw/sw co-design,” in in
V. C ONCLUSIONS Proceedings of the IEEE Workshop on VLSI Signal Processing, 1996,
pp. 127–136.
In this paper we have proposed Troubles, a domain-specific [15] R. Su and W. Wonham, “Probability measure on regular languages and
language oriented to describe and test troubleshooting and its application in fault diagnosis for discrete event systems,” in Control
Conference, 2004. 5th Asian, vol. 1, 2004, pp. 412–419 Vol.1.
failure management algorithms. The language is designed [16] L. Troiano and D. D. Pasquale, “Supporting complexity in modeling
to provide constructs for faults, observations and repairing bayesian troubleshooting,” in ICEIS (2), J. Filipe and J. Cordeiro, Eds.
actions definition. They can be addressed by solvers which SciTePress, 2010, pp. 344–349.

348 2013 International Conference of Soft Computing and Pattern Recognition (SoCPaR)

You might also like