T09 · Ingénierie pratique CAKE© · Chapitre 11 / 11

Synthèse : l'ingénierie pratique CAKE©

La chaîne complète en un programme : un poste de survie qui se surveille lui-même

Ce tome a ouvert le moteur pièce par pièce. Voici la chaîne entière, dans un seul programme : les constantes d'un poste de survie, une fonction de contrôle, une boucle de surveillance, une décision, un bloc d'essai et la transmission des mesures au visualiseur.

Le poste de survie P-3, de bout en bout

Source C% · t09c11-a.cake
?! --- constantes du poste de survie P-3 ---
=: o2Initial=21.0%
=: consommation=0.9%
=: seuilO2=17.0%

?! --- controle ---
<@: etat(o2 %double) %string {
  =$ (o2<seuilO2) {
    return "ALERTE"%
  }
  return "NOMINAL"%
} %

?! --- surveillance sur dix cycles ---
=: o2=o2Initial%
$$ (cycle=0; cycle<10; cycle++) {
  Cake.emit(cycle, o2, 0, cycle)%
  =$ (etat(o2)=="ALERTE") {
    |> "Cycle " + Cake.toString(cycle) + " : O2 " + Cake.format("{0:F1}", o2) + " %, activation de la reserve"%
    $!%
  }
  :+ o2=0-consommation%
}

?! --- journal ---
!{
  Cake.writeFile("p3.log", "sequence terminee")%
!} (e) {
  |> "Journal refuse par le bac a sable, conserve en memoire"%
}
Sortie réelle du moteur
Cycle 5 : O2 16.5 %, activation de la reserve
Journal refuse par le bac a sable, conserve en memoire
[6 point(s) transmis au visualiseur par Cake.emit]
Arbre syntaxique sérialisé en CXML par l'analyseur
<projet nom="t09c11-a" package="com.unibool.script" type="Library">
  <classe nom="Root" visibilite="Public">
    <methode nom="main" retour="void" visibilite="Public">
      <bloc>
        <declaration nom="o2Initial" type="var" valeur="21.0"/>
        <declaration nom="consommation" type="var" valeur="0.9"/>
        <declaration nom="seuilO2" type="var" valeur="17.0"/>
        <declaration nom="o2" type="var" valeur="o2Initial"/>
        <pour init="cycle=0" condition="cycle&lt;10" increment="cycle++">
          <bloc>
            <code-brut><![CDATA[Cake.emit(cycle,o2,0,cycle)%]]></code-brut>
            <si condition="etat(o2)==&quot;ALERTE&quot;">
              <alors>
                <bloc>
                  <appel methode="println" args="&quot;Cycle &quot; + Cake.toString(cycle) + &quot; : O2 &quot; + Cake.format(&quot;{0:F1}&quot;, o2) + &quot; %, activation de la reserve&quot;"/>
                  <code-brut><![CDATA[break]]></code-brut>
                </bloc>
              </alors>
            </si>
            <affectation cible="o2" valeur="o2 + 0 - consommation"/>
          </bloc>
        </pour>
        <essai>
          <corps>
            <bloc>
              <code-brut><![CDATA[Cake.writeFile("p3.log", "sequence terminee")%]]></code-brut>
            </bloc>
          </corps>
          <attraper exception="Exception" variable="e">
            <bloc>
              <appel methode="println" args="&quot;Journal refuse par le bac a sable, conserve en memoire&quot;"/>
            </bloc>
          </attraper>
        </essai>
      </bloc>
    </methode>
    <methode nom="etat" retour="string" visibilite="Public">
      <parametre nom="o2" type="double"/>
      <bloc>
        <si condition="o2&lt;seuilO2">
          <alors>
            <bloc>
              <code-brut><![CDATA[return"ALERTE"%]]></code-brut>
            </bloc>
          </alors>
        </si>
        <retour-stmt valeur="&quot;NOMINAL&quot;"/>
      </bloc>
    </methode>
  </classe>
</projet
Traçabilité — opcodes : =: déclarations · =$ flux · $$ flux · |> entrées/sorties · $! flux · :+ déclarations · !{ erreurs · !} erreurs · bibliothèque : Cake.emit, Cake.toString, Cake.format, Cake.writeFile
nœuds d'arbre : déclaration, pour, code brut, si, appel, affectation, retour · empreinte d'arbre 25855bda8ea75ff2 (reproductible : cake hash t09c11-a.cake)
vérifié le 2026-09-23 dans le moteur CakeLang, chemin de l'éditeur CakeLand, bac à sable actif.
Ce que retient le tome 9
Principe clé du chapitre

L'ingénierie pratique CAKE© tient en une exigence : ce qui est écrit doit avoir été exécuté, et ce qui a été exécuté doit pouvoir être retrouvé.

→

Le tome 10 examine la sécurité et l'intégrité des architectures, en s'appuyant sur les mécanismes réels décrits ici.

← Chapitre précédent C10 · L'avenir de l'ingénierie CAKE©
T09 · C11 / 11
Chapitre suivant → T10 · C01 · Méthodes de développement CAKE©
CAKE© Library  ·  Sébastien Roy  ·  CEO, UniBool Inc.  ·  Canada  ·  Édition 2026