+ All Categories
Home > Documents > Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of...

Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of...

Date post: 24-Aug-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
36
Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu * , Ivan Cibrario Bertolotti ** , Nicolas Navet * * National Research Council of Italy – IEIIT, Torino, Italy ** University of Luxembourg – FSTC, Esch-sur-Alzette, Luxembourg Sept. 12 – 15, 2017, Limassol, Cyprus
Transcript
Page 1: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Towards Seamless Integration of N-VersionProgramming in Model-Based Design

Tingting Hu *, Ivan Cibrario Bertolotti **, Nicolas Navet *

* National Research Council of Italy – IEIIT, Torino, Italy** University of Luxembourg – FSTC, Esch-sur-Alzette, Luxembourg

Sept. 12 – 15, 2017, Limassol, Cyprus

Page 2: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Table of Content

1 Motivation

2 The NVP modeling framework

3 Models and implementation

4 Conclusion

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 2 / 21

Page 3: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Cyber Physical Systems"... A cyber-physical system (CPS) integrates computing andcommunication capabilities with monitoring and/or control ofentities in the physical world dependably, safely, securely,efficiently and in real-time ..."

– S. Shankar Sastry

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 3 / 21

Page 4: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Cyber Physical Systems"... A cyber-physical system (CPS) integrates computing andcommunication capabilities with monitoring and/or control ofentities in the physical world dependably, safely, securely,efficiently and in real-time ..."

– S. Shankar Sastry

• System dependability is impaired by faults, including hwfaults, sw faults

• As CPS becomes more and more software centric,software faults become the dominant factor

• Suitable fault prevention, fault removal, or fault tolerancetechniques should be employed.

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 3 / 21

Page 5: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Software Fault ToleranceTechniques that enable a system to tolerant software faultsremaining in the system after its development.

Software Fault

TolerantTechniques

Single Version

Software Techniques

Multi-Version

SoftwareTechniques

N-version Programming

RecoveryBlock

N self-checking

Programming

Error Detection

Exception Handling

Process Pairs

Data Diversity

Checkpoint& Restart

t/(n-1)Variant

Programming

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 4 / 21

Page 6: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

State of the art

• Theoretical foundation of software fault tolerance is wellestablished in the 80s

• Generally, fault tolerance is introduced at a later phase ofsystem development, e.g. implementation phase

• The selection of fault tolerance techniques is mainly drivenby experience

• Few work is done on including fault tolerant analysis at thesystem design phase

Model based design is an enabling technique to this direction

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 5 / 21

Page 7: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Model Based Design

Models play an important role in various engineeringdisciplines. They are used to guide the development process.

• Advantages• Support rapid prototyping• Early verification of system correctness• Explore different design and implementation choice• Early detection of design errors

• Widely adopted in automotive, aerospace, etc• Popular tools include UML, Matlab/Simulink, SCADE,

AADL

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 6 / 21

Page 8: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Automated FT/FI frameworkEnhance the dependability of CPS by introducing faulttolerance features, without changing its functional behavior andstill honoring the non-funtional requirements, e.g. timings.

Drive theprocess of

BySimul.

Guide the selection

of

AnalysisFault

ToleranceMechanisms

Fault ModelsFault Injection

Techniques

DependabilityQuantifier

&Analyzer

Code Generation

OriginalSystem Models

Applied to

Derive

Codetransf.

Inject faults by code transformation

Satisfied

Failed

Re-

sele

ctio

nOriginalSystem Models

Model Patchedwith Suitable

FTMechanism

FT-enhancedSystem Models

Targeting safety-critical real-time systems

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 7 / 21

Page 9: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

N Version ProgrammingNVPN-fold replication of the same computation, carried out bymeans of N software modules, called member versions.

• Member versions run in parallel, operating on the sameinputs;

• Result reached by consensus, e.g majority voting• Requires member versions to generate comparison

vectors at predefined cross-check points• Feedback to the member versions depending on the result:

termination/continuation, recovery actions

• Error protected: software design faults• Basic principle: increase software diversity

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 8 / 21

Page 10: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

N Version ProgrammingNVPN-fold replication of the same computation, carried out bymeans of N software modules, called member versions.

• Member versions run in parallel, operating on the sameinputs;

• Result reached by consensus, e.g majority voting• Requires member versions to generate comparison

vectors at predefined cross-check points• Feedback to the member versions depending on the result:

termination/continuation, recovery actions

• Error protected: software design faults• Basic principle: increase software diversity

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 8 / 21

Page 11: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

N Version ProgrammingNVPN-fold replication of the same computation, carried out bymeans of N software modules, called member versions.

• Member versions run in parallel, operating on the sameinputs;

• Result reached by consensus, e.g majority voting• Requires member versions to generate comparison

vectors at predefined cross-check points• Feedback to the member versions depending on the result:

termination/continuation, recovery actions

• Error protected: software design faults• Basic principle: increase software diversity

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 8 / 21

Page 12: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

N Version Programming

Version 1

Version 2

Version n

Input OutputDecision Algorithm

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 9 / 21

Page 13: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

CPALThe Cyber Physical Action Language (CPAL)A language offers high-level abstractions that are suitable forthe modeling, simulation, verification and progamming of CPSs.

• Finite State Machine (FSM) based• Expressiveness: functional and non-functional behavior,

e.g. timings• Modeling language & development language• Timing equivalence between simulation time and run-time• Supported platforms:

• Windows 32/64bit, Linux 64bit, Mac OS X• Raspberry Pi, Freescale FRDM-K64F, Embedded

Linux 64bit, Embedded Windows 32/64bit

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 10 / 21

Page 14: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

CPALCPAL sample

processdef P(params) {common {

code}

state Warning {code

}on (cond) {code} to Alarm_Mode;after (time) if (cond) to Normal_Mode;

finally {code

}}

process P: inst[period,offset][cond](args);

@cpal:time:inst{annotation code

}

Elementary execution step

Activation Condition Annotation code

Transition condition?

Transition code

Move to new state

common code

State code

finally code

Continuation?

True

True

False

False

True

Sche

dule

r

Proc

ess

False

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 11 / 21

Page 15: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

The NVP modeling framework

Proc X

ext5 ext6ext4

ext2 ext3ext1

Initiator

M1 M2 Mx…

Voter

C-Vector1 C-Vector2 C-Vectorn

status1 status2 statusn

ext5 ext6ext4

ext2 ext3ext1

Member versions

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 12 / 21

Page 16: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

The NVP modeling framework

Proc X

ext5 ext6ext4

ext2 ext3ext1

Initiator

M1 M2 Mx…

Voter

C-Vector1 C-Vector2 C-Vectorn

status1 status2 statusn

ext5 ext6ext4

ext2 ext3ext1

Member versions

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 12 / 21

Page 17: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

The NVP modeling framework

Proc X

ext5 ext6ext4

ext2 ext3ext1

Initiator

M1 M2 Mx…

Voter

C-Vector1 C-Vector2 C-Vectorn

status1 status2 statusn

ext5 ext6ext4

ext2 ext3ext1

Member versions

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 12 / 21

Page 18: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Design goalSoftware patterns“... Each pattern describes a problem which occurs over andover again in our environment, and then describes the core ofthe solution to that problem in such a way that you can use thissolution a million times over, without ever doing it the same waytwice ...”

– Christopher Alexander

• Re-usability• Seamless integration with existing system model

• Maintain the same interface with surroundings• Preserve the functional behavior and non-functional

properties

• Code-generation friendly

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 13 / 21

Page 19: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Design goal

Software patternsPatterns capture important practice in a form that makes thepractice accessible

• Re-usability• Seamless integration with existing system model

• Maintain the same interface with surroundings• Preserve the functional behavior and non-functional

properties

• Code-generation friendly

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 13 / 21

Page 20: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Design goal

Software patternsPatterns capture important practice in a form that makes thepractice accessible

• Re-usability• Seamless integration with existing system model

• Maintain the same interface with surroundings• Preserve the functional behavior and non-functional

properties

• Code-generation friendly

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 13 / 21

Page 21: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

CPAL model: the initiatorDriving force of the NVP process

• Collect and populate data to member versions forprocessing by means of the communication channel

• Preserve the interface with other modules and the timingsof the original process

processdef Initiator(in uint32: a, in uint32: b,out queue<Replica_In >: inputsin queue<uint32 >: active_members)

{var Replica_In: tmp;

state Main{encapsulate_inputs(a, b, tmp);

loop over active_members with it {inputs.push(tmp);

}}

}

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 14 / 21

Page 22: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

CPAL model: member versionsOperate on the input data, done within the user-provided FSM

processdef Member_Version(in queue<Replica_In >: x,out queue<Comp_Vector >: z,out queue<uint32 >: status ,in uint32: id)

{common{

tmp_in = x.pop();unfold_inputs(tmp_in , a, b);

/* Other common code goes here. */}

/* User -written FSM goes here without modification. */state Main{

sum = a + b;}

finally{encapsulate_outputs(sum , tmp_out );my_result.mem_res = tmp_out;my_result.mem_id = id;

z.push(my_result );status.push(id);

}}

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 15 / 21

Page 23: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

CPAL model: member versionsExport a comparison vector and indicate its execution status tothe voter, by means of communication channel

processdef Member_Version(in queue<Replica_In >: x,out queue<Comp_Vector >: z,out queue<uint32 >: status ,in uint32: id)

{common{

tmp_in = x.pop();unfold_inputs(tmp_in , a, b);

/* Other common code goes here. */}

/* User -written FSM goes here without modification. */state Main{

sum = a + b;}

finally{encapsulate_outputs(sum , tmp_out );my_result.mem_res = tmp_out;my_result.mem_id = id;

z.push(my_result );status.push(id);

}}Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 15 / 21

Page 24: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

CPAL model: member versionsCross-check point is implicitly set to the end of each executionstep

processdef Member_Version(in queue<Replica_In >: x,out queue<Comp_Vector >: z,out queue<uint32 >: status ,in uint32: id)

{common{

tmp_in = x.pop();unfold_inputs(tmp_in , a, b);

/* Other common code goes here. */}

/* User -written FSM goes here without modification. */state Main{

sum = a + b;}

finally{encapsulate_outputs(sum , tmp_out );my_result.mem_res = tmp_out;my_result.mem_id = id;

z.push(my_result );status.push(id);

}}Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 15 / 21

Page 25: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

CPAL model: the voterPerform majority voting based on the comparison vectors fromthe member versions

processdef Voter(in queue<Comp_Vector >: v,in queue<uint32 >: status_queue ,out uint32: sum ,out queue<uint32 >: alive_members)

{state Main{

Majority_Voting(v, majority , summary );

unfold_outputs(majority , sum);

alive_members.clear ();loop over v with it{

if(comp_ballot(it.current.mem_res , majority.value )){alive_members.push(it.current.mem_id );

}}

v.clear ();status_queue.clear ();

}}

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 16 / 21

Page 26: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

CPAL model: the voterExport output data to other modules of the modeled system

processdef Voter(in queue<Comp_Vector >: v,in queue<uint32 >: status_queue ,out uint32: sum ,out queue<uint32 >: alive_members)

{state Main{

Majority_Voting(v, majority , summary );

unfold_outputs(majority , sum);

alive_members.clear ();loop over v with it{

if(comp_ballot(it.current.mem_res , majority.value )){alive_members.push(it.current.mem_id );

}}

v.clear ();status_queue.clear ();

}}

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 16 / 21

Page 27: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

CPAL model: the voterDetermine whether a member version should be terminated

processdef Voter(in queue<Comp_Vector >: v,in queue<uint32 >: status_queue ,out uint32: sum ,out queue<uint32 >: alive_members)

{state Main{

Majority_Voting(v, majority , summary );

unfold_outputs(majority , sum);

alive_members.clear ();loop over v with it{

if(comp_ballot(it.current.mem_res , majority.value )){alive_members.push(it.current.mem_id );

}}

v.clear ();status_queue.clear ();

}}

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 16 / 21

Page 28: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Process coordinationThe initiator preserves the interface to the surrounding systemsand timings

/* process Original_Process: origin_proc[100ms](input1 , input2 , output1 ); */

process Initiator: initiator[100ms](input1 , input2 , input_queue , active_members );

process Member_Version: m1[][member_alive(active_members , id)and input_queue.not_empty ()and (not exec_complete(status_queue , id))]

(input_queue , id, comp_vectors , status_queue );

process Voter: voter1[][comp_vectors.not_empty () andcomp_vectors.count() == status_queue.count()]

(comp_vectors , status_queue ,output1 , active_members );

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 17 / 21

Page 29: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Process coordinationThe initiator preserves the interface to the surrounding systemsand timings

/* process Original_Process: origin_proc[100ms](input1 , input2 , output1 ); */

process Initiator: initiator[100ms](input1 , input2 , input_queue , active_members );

process Member_Version: m1[][member_alive(active_members , id)and input_queue.not_empty ()and (not exec_complete(status_queue , id))]

(input_queue , id, comp_vectors , status_queue );

process Voter: voter1[][comp_vectors.not_empty () andcomp_vectors.count() == status_queue.count()]

(comp_vectors , status_queue ,output1 , active_members );

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 17 / 21

Page 30: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Process coordinationThe initiator populates inputs to member versions

/* process Original_Process: origin_proc[100ms](input1 , input2 , output1 ); */

process Initiator: initiator[100ms](input1 , input2 , input_queue , active_members );

process Member_Version: m1[][member_alive(active_members , id)and input_queue.not_empty ()and (not exec_complete(status_queue , id))]

(input_queue , id, comp_vectors , status_queue );

process Voter: voter1[][comp_vectors.not_empty () andcomp_vectors.count() == status_queue.count()]

(comp_vectors , status_queue ,output1 , active_members );

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 17 / 21

Page 31: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Process coordinationThe member versions carry out its own computation and reporttheir comparison vectors

/* process Original_Process: origin_proc[100ms](input1 , input2 , output1 ); */

process Initiator: initiator[100ms](input1 , input2 , input_queue , active_members );

process Member_Version: m1[][member_alive(active_members , id)and input_queue.not_empty ()and (not exec_complete(status_queue , id))]

(input_queue , id, comp_vectors , status_queue );

process Voter: voter1[][comp_vectors.not_empty () andcomp_vectors.count() == status_queue.count()]

(comp_vectors , status_queue ,output1 , active_members );

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 17 / 21

Page 32: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Process coordinationThe voter determines the outputs of the NVP module andhealth of member versions

/* process Original_Process: origin_proc[100ms](input1 , input2 , output1 ); */

process Initiator: initiator[100ms](input1 , input2 , input_queue , active_members );

process Member_Version: m1[][member_alive(active_members , id)and input_queue.not_empty ()and (not exec_complete(status_queue , id))]

(input_queue , id, comp_vectors , status_queue );

process Voter: voter1[][comp_vectors.not_empty () andcomp_vectors.count() == status_queue.count()]

(comp_vectors , status_queue ,output1 , active_members );

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 17 / 21

Page 33: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Concurrency of member versions

P1 Pn… …

P1 I Pn… M1 M2 M3 V …

Px

Ci

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 18 / 21

Page 34: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

NVP implementation in C

CollectorC_ARRAY of ballots

Voter task

Majority Voter

Collector template<nball, btype>

ft_collector_template.c

Majority Voter template<nball, btype>

ft_voter_mv_template.c

Compile-time template instantiation (nball=3, btype=uint32_t)

ChannelFtChannel_t

Encapsulation

Version n

Version → Task encapsulation template

<name, id, f, intype, btype>

Compile-time template instantiation (intype=int32_t, btype=uint32_t)

name and id are used to uniquely name the task function, f is the function to be encapsulated

Encapsulation

Version 1

N-Version tasks

voter.cpal

Library module/template

Instantiated library template

CPAL model

User/application code

Individual ballots

InitiatorInitiator template

<nv, argtype>ft_initiator_template.c

nvp_initiator.cpal

Version arguments member_version.cpal

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 19 / 21

Page 35: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Conclusion• Propose software patterns corresponding to NVP• Can be seamlessly integrated with the existing system

model, without changing its interface and timings.• Derive a C language implementation of NVP from the

CPAL model• The same methodology can be profitably applied to the

modeling of other fault tolerant mechanisms

• Future work:• Automatic code generation by means of code

transformation• Automated fault injection for the validatation of the fault

tolerant mechanism

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 20 / 21

Page 36: Towards Seamless Integration of N-Version Programming in ... · Towards Seamless Integration of N-Version Programming in Model-Based Design Tingting Hu*, Ivan Cibrario Bertolotti**,

Thank you for your attention

Tingting Hu Towards Seamless Integration of N-Version Programming in Model-Based Design 21 / 21


Recommended