• Aucun résultat trouvé

Launcher Sequential Analysis

N/A
N/A
Protected

Academic year: 2021

Partager "Launcher Sequential Analysis"

Copied!
11
0
0

Texte intégral

(1)

HAL Id: hal-02156114

https://hal.archives-ouvertes.fr/hal-02156114

Submitted on 14 Jun 2019

HAL

is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire

HAL, est

destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Launcher Sequential Analysis

Mathilde Ducamp, Julien Grand, David Lesens, Daniel Mercier

To cite this version:

Mathilde Ducamp, Julien Grand, David Lesens, Daniel Mercier. Launcher Sequential Analysis. ERTS

2018, Jan 2018, Toulouse, France. �hal-02156114�

(2)

Launcher Sequential Analysis

Mathilde DUCAMP, Julien GRAND, David LESENS, Daniel MERCIER first_name.surname@ariane.group

Ariane Group

Keywords: Launcher sequential, constraint’s solving, model checking, model simulation

Abstract: This paper addresses the use of a set of techniques (domain specific language, constraint’s solving, model checking and simulation) to capture, implement and verify a launcher sequential in an industrial context. Instead of developing new techniques (which is more relevant to a research institute than to an industrial), this paper shows an example of activities and tools which allow engineers non-expert in these techniques taking benefits from them.

1. Introduction

This paper addresses the development of a launcher sequential and its verification.

The aim of a sequential of a launcher (such as the [1] Ariane 6 launcher currently under development by Ariane Group) is to schedule all the acyclic actions the launcher shall perform automatically or as a response to external acyclic stimuli. These actions and stimuli are gathered into “key events” (the stimuli being “in” key events provided by the launcher environment and the actions being “out” key events decided by the launcher).

This paper is organised as follow. Section 2 introduces the activities to be traditionally conducted to develop and verify a launcher sequential. Section 3 explains the new modelling language used to capture the system requirements for the Ariane 6 launcher sequential in addition to the existing ones dedicated to the development (Capella and SysML).

Section 4 describes the techniques deployed to verify a launcher sequential. Finally, before the conclusion in section 6, section 5 discusses the limitations of this approach.

2. Launcher sequential development

2.1. Launcher sequential specification

The first step of a launcher sequential development is to capture the key events which shall be scheduled during the launcher mission. For instance such events can be defined for:

- Ignition and stop of engines - Stage / fairing / payload release

- Valves opening and closing, pyrotechnics commands

- …

Basically constraints are defined on these key events: e.g. the booster shall be ignited x seconds after the ignition of the main engine, or the payload release shall occur (obviously) only after the fairing release is completed.

Engine ignition

Stage release

Figure 1: Launcher key events

In practice, a launcher sequential has to be compatible with failures producing non-nominal key events. For instance, a launcher stage shall be nominally released Tmin milliseconds to Tmax milliseconds after the detection of a tail-off.

But in the non-nominal case of a propellant tank becoming empty too early, the tail-off event may be detected too

(3)

early versus the scheduled trajectory timeline. In this case, the immediate resulting release of the stage may be risky if happening above inhabited area. The previous constraints may be replaced by new constraints relative to the lift-off.

The verification of the satisfiability of constraints shall be done for all the nominal cases (i.e. for all the missions which can be performed by the launcher) and for all non-nominal cases (i.e. for all the failures which may occur).

Nominal tail-off detection

Immediate stage release

Too early tail-off detection

Delayed stage release

Release = Tail-off + [min .. Max] Release = Kick-off + [min’ .. max’]

Tmin Tmax Tmin Tmax

Figure 2: Stage released delayed

The set of key events with their constraints establishes the specification of the launcher sequential.

2.2. Launcher sequential functional design

The implementation of the launcher sequential is based on a modular architecture (see [3] ERTS2016). The launcher is composed of a set of logical components. Each logical component deals with a specific kind of equipment (accelerometers, valves, etc…) and contains a dedicated software component controlling all the related equipment. A finite state machine is defined to represent its behaviour.

The consistency between all the components is ensured by a centralised mission management component executing a mission plan (implementing the launcher sequential). The mission plan sends commands to the various other components which can in return send back mission events to the mission plan component.

Mission Plan

Init Off On

Monitoring Software Hardware

Component 3

Init Off On

Monitoring Software Hardware

Component 1

Init Off On

Monitoring Software Hardware

Component 2

Init Off On

Monitoring Software Hardware

Component 4

Figure 3: The modular architecture of a launcher

The “in” key events (i.e. stimuli) are detected by the monitorings of the components and sent to the mission plan. The

“out” key events (i.e. actions) are decided by the mission plan and sent to the component’s finite state machines for execution.

As described in [3] ERTS2016, the finite state machines of each component are modelled in SysML, the language used to describe the launcher system functional architecture ([2] Capella being used for the operational analysis and

(4)

the system analysis). Even if the implementation of the Ariane 6 launcher sequential is synchronous, other more software oriented modelling languages such as [8] SCADE or [10] StateFlow are not adapted. Indeed, the system is event driven (transitions are triggered on reception of an acyclic event with parameters) when these tools are data- flow driven (transitions are triggered when a Boolean formula of the inputs is true). Moreover, the tools available off- the-shelf do not allow generating easily multithreaded software from a launcher system model. SysML is thus used instead but with an adapted “synchronous” semantics (see section 2.3).

The mission plan (with has also a “synchronous” semantics) is described in a textual Domain Specific Language (DSL) because its content is very specific to a launcher.

plan Lift-off is

monitor Tail_Off;

wait 15 ms;

Arm_Battery;

wait 15 ms;

Cmd_Pyro;

end;

Figure 4: DSL describing a mission plan

The mission plan and the component’s finite state machines establish together the design of the launcher sequential and shall fulfil the constraints on the key events described section 2.1 (the specification of the launcher sequential).

2.3. Launcher sequential implementation

The implementation of the Ariane 6 software is based on an extension of the synchronous approach of [8] SCADE (and of its underlying language, Lustre). Algorithm blocks are cyclically activated and acquire their inputs at the beginning of their execution cycle while delivering their outputs at the end of their execution cycle. The software is implemented on several threads, but the communications between these threads are performed during time-triggered rendezvous. As well, the communications between the software and the avionics bus (a Time-Triggered Ethernet bus) is also performed in a timed-triggered manner. This approach ensures a full determinism of the software (which is for instance independent from the WCET (Worst Case Execution Time) of each thread) and allows constructing a single thread model equivalent to the multithreading model. This single thread model allows on one hand performing pre- validation tests on a host machine and on the other hand using a synchronous language as basis of a proof engine (see section 4.2).

The code of the launcher sequential (written in Ada 2012) is then partly automatically generated by an in-house tool from the SysML model and the DSL (as a simple recall the code generator of [8] SCADE could not be used due to the multithreading design).

2.4. Launcher sequential verification

A set of verifications are performed during the overall launcher sequential development described in the previous sections.

A first verification activity aims at verifying the satisfiability of the constraints on key events. For instance if “T1”, “T2”

and “T3” are respectively the date of occurrence of the events “Event1”, “Event2” and “Event3”, the set of constraints

“T1>T2”, “T2>T3”, “T3>T1” is not satisfiable.

A second verification consists in checking that all the commands sent by the mission plan to the component’s finite state machines are never rejected, i.e. that there is always a transition accepting the received command in the current state. This verification is generally straight forward for a nominal mission. It may be much more complex in case of abnormal events (such as failure) disturbing the nominal mission.

Finally, the final verification consists in ensuring that the implementation in terms of finite state machines and mission plan fulfils the constraints previously defined (the specification).

The following figure summarizes this process:

(5)

Launcher sequential specification

Launcher sequential design

Launcher sequential implementation

Capture of key events

Capture of constraints between key events

Identification of logical components (using Capella)

Mission Plan modelling

(from previously specified constraints using DSL)

Component’s finite state machine’s modelling (using SysML state machines)

Multithreading Ada Code Satisfiability check

Consistency check Verification of the

implementation

Figure 5 : Process of development of a launcher sequential

3. Modelling choices for the capture of needs

As described in section 2, the first step to design a launcher sequential is to capture the key events of a mission.

Two kinds of events are defined: the stimuli coming from the environment (called “in” events) and the actions decided by the system in development (called “out” events). The initial event shall be an “in” event (the environment triggers the start of the system). The final event shall be an “out” event (triggered by the system). Then, each event (except the initial one) is defined relatively to one or several other events. More formally, an event 𝐸𝐸 is nominally defined in the following way:

𝐸𝐸=� 𝐸𝐸𝑖𝑖+ [𝑋𝑋𝑖𝑖. .𝑌𝑌𝑖𝑖]

𝑖𝑖

Where

- 𝐸𝐸 is the event to be defined - 𝐸𝐸𝑖𝑖 is an event on which 𝐸𝐸 depends

- 𝑋𝑋𝑖𝑖 and 𝑌𝑌𝑖𝑖 are two dates such that 0≤ 𝑋𝑋𝑖𝑖≤ 𝑌𝑌𝑖𝑖

This definition is equivalent to: 𝐸𝐸𝑖𝑖+𝑋𝑋𝑖𝑖≤ 𝐸𝐸 ≤ 𝐸𝐸𝑖𝑖+𝑌𝑌𝑖𝑖, i.e. 𝐸𝐸 shall occur at least 𝑋𝑋𝑖𝑖 units of time after 𝐸𝐸𝑖𝑖 and before 𝑌𝑌𝑖𝑖

units of time after 𝐸𝐸𝑖𝑖.

Note than in any case, 𝐸𝐸 ≥ 𝐸𝐸𝑖𝑖 because 𝐸𝐸 is defined by 𝐸𝐸𝑖𝑖(i.e. depends on 𝐸𝐸𝑖𝑖).

The following simplified notations can be used:

- “𝐸𝐸 = 𝐸𝐸i + 𝑋𝑋𝑖𝑖” when “𝑋𝑋𝑖𝑖 = 𝑌𝑌𝑖𝑖” - “𝐸𝐸 ≤ 𝐸𝐸1+𝑌𝑌𝑖𝑖” when “𝑋𝑋𝑖𝑖= 0” - “𝐸𝐸 ≥ 𝐸𝐸1+𝑋𝑋𝑖𝑖” when “𝑌𝑌𝑖𝑖=∞”

Several sets of constraints are defined for nominal cases and non-nominal cases. These sets of constraints are organised in phases. A phase is defined by some hypotheses on “in” events and some constraints which shall be satisfied when these hypotheses are realized. A launcher mission is thus described as sequences and alternatives of phases.

Several options have been envisaged to capture the key events, the constraints between these key events and the definition of phases:

- Using the native formalism of a constraint’s solver to take benefits from its syntax and its semantics.

- Using the parametric diagrams of [11] SysML (which is indeed already used to describe the launcher system functional architecture) potentially completed by [7] MARTE.

- Using a DSL (Domain Specific Language) adapted to the users.

It has been decided to use a DSL with a syntax adapted for a non-expert in modelling and with an obvious mapping with the semantics of the [13] Z3 constraint’s solver. The DSL is indeed able to model features specific to a launcher sequential such as the definition of “in” and “out” events or “alternative” phases which are natively not proposed by off- the-shelf formalisms.

(6)

Here is an example of the defined DSL:

-- Declaration of events generated by the environment in events go, tailoff;

-- Declaration of events generated by the system in development out events liftoff, release;

-- Nominal lift-off of the launcher phase liftoff is (

liftoff = go + 7s);

-- Nominal stage release phase nominal_release is (

tailoff = liftoff + [120s .. 160s];

release = tailoff + [20s .. 40s]);

-- First case of non-nominal stage release, alternative to the previous case phase early_tailoff is (

tailoff < liftoff + 120s;

release = liftoff + [140s .. 160s];

-- Second case of non-nominal stage release, alternative to the two previous cases phase late_tailoff is (

tailoff > liftoff + 160s;

release = liftoff + [180s .. 200s]);

-- The following safety constraint shall always be ensured phase safety is (

release = liftoff + [140s .. 200s]);

-- Declaration of the launcher mission mission is (

safety;

liftoff;

nominal_release or early_tailoff or late_tailoff);

Figure 6: DSL capturing the key events and the constraints among them

- The launcher sequential shall first ensure the constraints relative to the “lift-off” (the “out” event “lift-off” shall occur 7 seconds after the “in” event “go” order sent by the ground control centre).

- Then, depending on the “in” event “tail-off” detection (nominal, early or late), the launcher sequential shall ensure the “out” event stage “release” in a specific time-window.

- In any case, the launcher sequential shall ensure the “safety” constraints.

The organisation of these constraints can be graphically represented in a non-formal way by the Figure 7.

Safety Lift-off

Early tail-off

or

Nominal release

or

Late tail-off

Figure 7: Informal organisation of constraints

The formal semantics of this DSL is defined by its translation into mathematical equations as described in section 4.1.

(7)

4. Verification

4.1. Verification of constraints on key events

The first verification step consists in checking that there is no loop dependency, i.e. that an event does not depend (indirectly) on itself. To achieve this goal, we built a directed graph where:

- Each node is an event

- Each edge denotes a dependency between two events, with 𝐸𝐸1→ 𝐸𝐸2 meaning that 𝐸𝐸1 depends on 𝐸𝐸2.

B depends on A C depends on B D depends on B E depends on C and D

A

C D

B

E

B depends on A C depends on B D depends on C A depends on D

A

C B

D

A depends on itself, which is forbidden Figure 8: A correct dependency graph Figure 9: An incorrect dependency graph

For example for the case described in section 3:

go

liftoff tailoff

release

Figure 10: Dependency graph of the example of Figure 6

The second verification consists in checking the existence of a solution for this set of constraints for each possible mission. Let us first consider a single mission, e.g. “liftoff; nominal_release; safety”.

By definition, for all “in” events fulfilling these constraints, we search some “out” events fulfilling these constraints. This verification is thus performed by proving the satisfiability of a global formula synthetizing all the constraints and constructed on the dependency graph. So, the logical equation 𝐹𝐹𝐸𝐸 defining the event 𝐸𝐸, shall take into account the fact that 𝐸𝐸 is an “in” or an “out” event and includes the constraints 𝐹𝐹′𝐸𝐸 depending on 𝐸𝐸:

- If 𝐸𝐸 is an “in” event: 𝐹𝐹𝐸𝐸= (∃𝐸𝐸 ∈[𝑚𝑚𝑚𝑚𝑚𝑚(𝑚𝑚𝑚𝑚𝑚𝑚𝑖𝑖),𝑚𝑚𝑚𝑚𝑚𝑚(𝑚𝑚𝑚𝑚𝑚𝑚𝑖𝑖)])∧(∀𝐸𝐸 ∈[𝑚𝑚𝑚𝑚𝑚𝑚(𝑚𝑚𝑚𝑚𝑚𝑚𝑖𝑖),𝑚𝑚𝑚𝑚𝑚𝑚(𝑚𝑚𝑚𝑚𝑚𝑚𝑖𝑖)],𝐹𝐹′𝐸𝐸)

The “for some” quantification allows ensuring the existence of an environment of the launcher respecting the constraints.

- If 𝐸𝐸 is an “out” event: 𝐹𝐹𝐸𝐸= (∃𝐸𝐸 ∈[𝑚𝑚𝑚𝑚𝑚𝑚(𝑚𝑚𝑚𝑚𝑚𝑚𝑖𝑖),𝑚𝑚𝑚𝑚𝑚𝑚(𝑚𝑚𝑚𝑚𝑚𝑚𝑖𝑖)],𝐹𝐹′𝐸𝐸)

Each edge of the dependency graph is then decorated by the formula 𝐹𝐹𝐸𝐸, where 𝐸𝐸 is the key event decorating the state target of the edge. The global formula is then trivially generated in [9] SPARK and in [13] Z3 (more precisely in Python using the Z3 API).

liftoff = go + 7;

tailoff = liftoff + [120 .. 160];

release = tailoff + [20 .. 40]);

release = liftoff + [140s .. 200s];

∃ liftoff ∈ max (7) .. min (7) 

(∃ tailoff ∈ max (liftoff+120) .. min (liftoff+160)) ᴧ (∀ tailoff ∈ max (liftoff+120) .. min (liftoff+160) 

∃ release ∈ max (liftoff+140, tailoff+20) .. min (liftoff+200, tailoff+40));

Figure 11: Example of constraints Figure 12: Translation of the constraints in a logical formula

Equivalent formulas are generated for all the missions: “liftoff; early_release; safety” and “liftoff; late_release; safety”

(8)

The Z3 solver is then applied to verify the consistency of the set of constraints. The generated SPARK code may also be used to verify the consistency of the set of constraints (but the counterexamples generated by Z3 are generally more adapted than the ones generated by SPARK) and also to simulate the constraints in order to help the user understanding why a set of constraints is not satisfiable.

In case a set of constraints “C1; C2; C3; C4” is not satisfiable, the tool will assess the satisfiability of “C1; C2; C3”. If this new set is still not satisfiable, the tool will assess the satisfiability of “C1; C2”. If it is satisfiable, it means that the

“C3” constraint makes the formula not satisfiable. The SPARK code generated for the set “C1; C2; C3” can thus be executed to try generating counter-examples.

In practice, even if the number of events and of associated constraints can be quite high the formulas provided to the constraint’s solvers are always linear and are easily managed by Z3. For a high number of possible failures, and thus of possible alternatives, the number of cases may of course grow but still in a manageable manner.

4.2. Verification of the design consistency by “model checking”

If the mission management sends a command to the finite state machine of a component which has no transition triggered by this command in its current state, the system is said inconsistent. This unexpected behaviour can have catastrophic consequences during the flight of the launcher. “Model checking” is thus used to exhaustively verify that a command can never be rejected. The model of the launcher sequential (composed of component’s finite state machines modelled in SysML and of the mission plan modelled in a DSL) is automatically translated into a modelling language for which a model checker is available.

As described section 2.3 and in [3] ERTS2016, the communications between the mission plan and the component’s finite state machines are synchronous. The mission plan can for instance send at the same instant two commands toward the finite state machines of two components which will execute them in parallel (see Figure 13). By comparison, the execution of the two commands will have been executed successively in an asynchronous semantics.

Component 1

S11 S12 S13

cmd12 cmd13

Component 2

S21 S22 S23

cmd22 cmd23

Mission Plan

forkcmd12;

forkcmd23;

Before commands execution

Component 1

S11 S12 S13

cmd12 cmd13

Component 2

S21 S22 S23

cmd22 cmd23

Mission Plan One cycle after commands execution

cmd12 cmd23

Figure 13: Synchronous dispatch of commands

Considering this synchronous semantics, the [6] Lustre formal language has been selected. The use of an asynchronous language (such as [12] Uppaal or based on the SysML semantics such as in [4] Drag2013) would have made indeed the translation less straightforward due to the difference of semantics.

In the following example (Figure 14), a mission plan can emit an “Activate” command to the finite state machine of a component. In parallel, the monitoring of a component can send a “Fail” command to the same finite state machine.

The corresponding [6] Lustre model is generated (see Figure 15):

- The “Activate” Lustre variable is computed by the mission plan and corresponds to an “out” event.

- The “Fail” Lustre input models an “in” event.

- The “Off”, “Active” and “Failed” Lustre variables are respectively true when the component finite state machine is in the state “Off”, “Active” and “Failed”.

- The “Error” Lustre variable is true when the component finite state machine rejects a command:

(9)

Mission Plan Component

Off

Active

Cailed

Activate

Cail monitoring

Cail Activate

Off = true -> ( (pre Off) and not Activate); -- No transition Active = false -> ( (pre Active) and not Fail or -- No transition

(pre Off) and Activate); -- Off -[ Activate ]-> Active Failed =false -> ( (pre Failed) or -- No transition

(pre Active) and Fail); -- Active -[ Fail ]-> Failed Error = false -> ( (pre Off) and Fail or -- Fail invalid in Off

(pre Active) and Activate or -- Activate invalid in Active (pre Failed) and Fail or -- Fail invalid in Failed (pre Failed) and Activate); -- Activate invalid in Failed

Figure 14 : Example of an inconsistent system

Figure 15 : Translation in Lustre (extract)

The [5] Lesar tool from the Lustre distribution is then able to detect a possible error in the system design by failing proving that the “Error” Lustre variable is always false. In case the monitoring raises the “Fail” command before the mission plan sends the “Activate” command, the “Fail” command is ignored (the “Error” Lustre variable takes the value false). This implies that the component may be activated without the knowledge of the failure. A trace is generated by the Lesar tool allowing analysing the issue.

The system design can be corrected by defining a parallel finite state machine as shown in the following figure.

Off

Active

Activate

Nominal

Cailed

Cail

Mission Plan Component

monitoring Cail

Activate

Activate Cail

Figure 16: A consistent system

The Lesar tool formally proves this time that the “Error” Lustre variable is always false, meaning that a command can never be refused by a finite state machine.

4.3. Functional verification by simulation

The final verification aims at checking that the actual implementation in finite state machines and mission plan fulfils the constraints on key events specified section 3.

Some attempts to use model checking in a similar way to the one described section 4.2 have shown that the Lesar tool is not able to deal with such complex models (see section 5 for more details). Simulation is thus used instead.

As described in [3] ERTS2016, the code of the flight software (in Ada 2012) is partially automatically generated from the models in SysML and DSL. What is missing to perform an efficient simulation is the description of the expected behaviour of the environment.

Another DSL has been defined to describe stubs of component’s monitorings which generate the “in” events. For instance, in the example of Figure 16, the behaviour of the monitoring can be stubbed in order to simulate the system and to verify very early in the system development that the recovery commanded by the “Monitoring” component does not disturb the nominal behaviour of the system.

scenario Failure_Scenario is

at H0 + 20ms: Fail by Monitoring;

end;

Figure 17 : Description of the stub of the “Monitoring” component in a DSL

The automatically generated Ada 2012 code from the models of the finite state machines (in SysML), of the mission plan (in a first DSL) and of the stubs (in a second DSL) can then be executed to verify that:

(10)

- The models (of the finite state machines and of the mission plan) are consistent (in a redundant manner to the model checking described section 4.2).

- The constraints of the launcher sequential (see section 3) are satisfied by the implementation.

- The code generator has no unexpected behaviour. As other tool (e.g. [8] SCADE), the simulation relies indeed on the execution of the generated code.

5. Deployment and limitations of the approach

The following diagram recalls the one of Figure 5 completed by the tools used to reach our verification goals:

Launcher sequential specification

Launcher sequential design

Launcher sequential implementation

Capture of key events

Capture of constraints between key events

Identification of logical components (using Capella)

Analysis Phase 1 (constraints verification)

Analysis of dependencies (with directed graph construction)

Analysis of constraint’s satisfiability (using Z3 solver)

Mission Plan modelling

(from previously specified constraints using DSL)

Component’s finite state machine’s modelling (using SysML state machines)

Analysis Phase 2 (constraints verification)

System consistency analysis (using LESAR to identify inconsistent situations due to parallel event’s handling)

Cunctional verification that constraints are satisfied through system simulation (using mono-threading Ada code functionally equivalent to the multithreading one)

Multithreading Ada Code (using DSL)

Figure 18 : Process of development supported by modelling and proof tools

The use of a DSL to capture the key events of a launcher system and the constraints among them has been proved efficient. Its deployment is in progress. The use of a constraint’s solver has also been proved feasible. However, even if this approach verifies formally the absence of inconsistency in the set of needs, it obviously does not allow verifying the completeness of the key events and of the constraints (no tool can for instance detects that one has forgotten to capture the requirements dealing with the launcher fairing jettisoning). Finally, the constraint’s solver just checks the absence of inconsistency (which is already a nice achievement) but does not show the actual feasibility of the system (considering for instance the potential lack of CPU resources). The use of a constraint’s solver is today considered has an opportunity and is planned to be deployed.

The use of SysML to capture (among others features) the finite state machines and the use of a DSL for the mission plan is deployed and operational since several years.

The use of a model transformation engine to generate a Lustre model from the models of the finite state machines in SysML and of the mission plan in a DSL has been validated on some representative test cases. However, it raises some issues:

- A trade-off has been made on the level of abstraction needed during the model transformation, especially considering the timing aspects. As the system is based on a cyclic execution (with a synchronisation between the avionics bus and the software), a period of time is translated into a number of cycles: e.g. 100ms at 1kHz correspond to 100 cycles. Two solutions have been envisaged:

o Modelling of these 100 cycles. The model allows then capturing fine properties, but the proof engine is not able to deal with the high level of combinatory.

o Modelling an unspecified period of time. The constraints captured by the DSL (see section 3) can thus not be proved. However, some interesting properties of consistencies can still be evaluated.

After some tests, the second solution has been selected, which prevents de facto the formal proof of the constraints.

- Even with a non-negligible effort of verification, the validity of the generated Lustre model is not completely ensured. The trust on this approach will never be complete.

The simulation of the finite state machines and of the mission plan has been shown efficient and its deployment is thus in progress. The simulation approach is of course not limited by the timing aspects previously described for the formal proof with Lustre. However, as for any approach by simulation, it is well known that it cannot cover the

(11)

combinatory of all possible cases. A huge effort may be needed to define the representative scenarios. Automatic test generation is then foreseen as future work.

6. Conclusion

This paper has presented how advanced techniques such as the definition of DSL and the use of constraint’s solvers or “model checkers” can be used to early validate the design of complex projects. The major feedbacks are that

(1) Off-the-shelf techniques can seldom be used by non-expert users as such; using standard modelling language (such as SysML or Capella) is preferable, but they have often to be completed by DSL adapted to these non-expert users.

(2) A single formal proof technique is generally not able to cover all the needs of a project; mixing different techniques (such as constraint’s solvers at requirement level (e.g. with [13] Z3), “model checking” at model level (e.g. with [5] Lesar) or deductive proof at code level (e.g. with [9] SPARK)) is generally needed.

(3) Formal proof techniques (constraint’s solvers or model checking) are efficient techniques to improve the confidence on the system. However, their performances are still often limited for huge systems. They shall thus be used as a complementary activity of testing on a restricted perimeter (e.g. in the case described in this paper to prove the consistency of the model but ignoring the functional requirements captured by constraints on key events).

7. References

[1] Ariane 6 https://en.wikipedia.org/wiki/Ariane_6

[2] Capella Not (strictly) relying on SysML for an MBSE solution: the Arcadia/Capella rationale - Stéphane BONNET, Jean-Luc VOIRIN, Daniel EXERTIER, Véronique NORMAND – Systems Conference (SysCon), 2016 Annual IEEE

[3] ERTS2016 From system functional definition to software code – David LESENS – ERTS 20163

[4] Drag2013 Iulia Dragomir and Iulian Ober and David Lesens – “A Case Study in Formal System Engineering with SysML” (2013) In: IEEE International Conference on Engineering Complex Computer Systems - ICECCS 2012, 18 July 2012 - 20 July 2012 (Paris, France).

[5] Lesar http://www-verimag.imag.fr/The-Lustre-Toolbox.html?lang=eng [6] Lustre www-verimag.imag.fr/The-Lustre-Programming-Language.html [7] MARTE http://www.omg.org/spec/MARTE

[8] SCADE http://www.esterel-technologies.com/products/scade-suite/

[9] SPARK www.spark-2014.org

[10] StateFlow https://www.mathworks.com/products/stateflow.html [11] SysML www.omgsysml.org

[12] Uppaal http://www.uppaal.org [13] Z3 https://z3.codeplex.com

Références

Documents relatifs

Delisp captures the advantages of PrefixSpan and offers its own advantages: (i) no candidate generation (since prefix growing methods do not generate candidates); (ii) focused

In the Falck case, the far-sighted family champion of change Alberto Falck—with crucial support of the external CEO Achille Colombo—was able to de-escalate the family business

The proposed algorithm has been tested in some critical scenarios, e.g., for highly correlated sources, and/or for closely spaced sources, the results have shown that the variance

In the solution of the forward problem these small values are of no consequence but they are critical in the analytical treatment of the inverse problem since they create

Les facteurs clés de succès (la mission du projet , la planification de projet , l'acceptation du client , besoin des clients , la gestion des problèmes ,

The search for characteristic sequences can be performed by finding the most stable concepts in the lattice corresponding to a sequential pattern structure.. For the simplification

Ecole des JDMACS 2011- GT MOSAR Synth` ese de correcteurs : approche bas´ ee sur. la forme observateur/retour d’´ etat MATLAB

To determine the relaxation time we study the eddy current torque produced by a debris rotating in the Earth’s magnetic field.. Other eddy current torques have already been calculated