SAGEM-AGS Programing Patterns and Good Practices
SAGEM-AGS Programing Patterns and Good Practices
“Best coding practices are a set of informal rules that the software development
community has learned over time which can help improve the quality of software” –
Wikipedia
1/ Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Presentation outline
1. Clarity
1. Procedures decoupling
2. Comments and readability
3. Output parameter handling
2. Robustness
1. State machine
2. Voted conditions
3. Performance / debugging
1. Debugging probe
2. Integrated profiling tool
3. Parameter shifting
2/ Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Clarity
3/ Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Procedure decoupling
Examples:
“Altitude correction / Determination of selected altitude”
“Holding pattern detection”
Benefits:
Smaller code chunks
Avoid code duplication
Well identified responsibilities
Easy maintenance
4/ Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Comments and readability
Code shall be commented in a way that explains what your are trying to
achieve, and why
Explain the main steps of your algorithm
Provide hints when needed
Do not comment the obvious
Benefits:
Team collaboration
Easy maintenance
5/ Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Output parameters handling
Benefits:
Easy maintenance
Easy debugging
6/ Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Output parameters handling example
Complex logic
Output
assignment
7/ Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Robustness
8/ Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
State machine: when to use it ?
Do you feel your algorithm needs “memory” of what happens over time ?
Benefits:
Allow modelisation of complex behaviors
Robust at execution
Easy debugging
State machines are typically used for problems where there is some stream
of input and the activity that needs to be done at a given moment depends on
previous elements of the stream
9/ Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
State machine: what is it ?
C
Not to be confused
with a flow chart !
10 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
State machine: what is it ?
Memorize T
cond1
IF current state = A AND next_state = B
THEN t_mem = T
A B IF current state = B AND next_state = A
THEN counter = 0
cond3
cond2
C Reset counter
11 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
State machine: how to implement it ?
12 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
State machine: how to implement it ?
13 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
State machine: how to implement it ?
14 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
State machine: how to implement it ?
Trigger actions
15 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
State machine applications in Cobalt
Flight phases
From/to airport and runway
Top of climb / top of descent
Turn detection
Flare detection
TCAS / GPWS
Unstable approach
Non compliant approaches
Holding pattern detection
Many events and measures with simple 3-states state machines
…
16 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Flight phase state machine
17 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Voted conditions
Benefits:
Robust at execution
18 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Performance / debugging
19 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Debugging probe
You should not modify the code you want to test, just to test it
Capture each variable you want to debug at the very end of the procedure
Benefits:
Safe debugging
20 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Integrated profiling tool
Use integrated profiling tool to know which procedures consume the most
Benefits:
Improve analysis performance
21 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Integrated profiling tool example
C:\Program Files\SAGEM\AGS\AGSMono\CONFIG\db_profile\<dbversion>.txt
22 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Parameter shifting
Limit calls to value in the future and shift parameters at each iteration
Benefits:
Improve analysis performance
5 values, 2 in the past, 2 in the future
Naïve solution: Improved solution:
PARAM(2)
PARAM(-2)
PARAM(-1)
Step i p2 p1 c f1 f2
PARAM(2)
PARAM
PARAM(1) p2 p1 c f1 f2
Step i + 1
PARAM(2)
23 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Parameter shifting example
24 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.
Questions
25 / Ce document et les informations qu’il contient sont la propriété de Sagem. Ils ne doivent pas être copiés ni
communiqués à un tiers sans l’autorisation préalable et écrite de Sagem.
Sagem est le nom commercial de la société Sagem Défense Sécurité.