Validation des Acquis de l’Expérience

LIVRET 2 Livret de présentation
des acquis de l’expérience

Loi de modernisation sociale du 17 janvier 2002.

Modifiée par l’article 78 de la Loi n°2016-1088 du 8 août 2016.

Nom et prénom du candidat KOCH David

(nom de naissance suivi du nom d’épouse)

Diplôme envisagé Ingénieur Polytech Tours - Informatique Industrielle

Année universitaire 2017 / 2018

Sommaire

1. INFORMATIONS VOUS CONCERNANT	4

2. DEMANDE DE VALIDATION	5

3. DÉCLARATION SUR L’HONNEUR	6

4. AVIS DE RECEVABILITÉ / FAISABILITÉ PÉDAGOGIQUE	7

5. PARCOURS	8

6. PROJET PROFESSIONNEL ET PERSONNEL	9

7. FORMATION INITIALE et CONTINUE	10

7.1. Détail de la formation initiale	10

7.2. Détail de la formation continue	11

8. EXPÉRIENCE PROFESSIONNELLE et EXTRA-PROFESSIONNELLE	12

8.1. Détail des expériences professionnelles (salariées / non salariées)	12

8.2. Détail des expériences extra-professionnelles	21

8.3. Autres expériences	22

9. DESCRIPTIONS D’EXPÉRIENCES PROFESSIONNELLES SIGNIFICATIVES	25

9.1. 2016-actuellement / Ercogener / IoT et géolocalisation / eg1114 et EGOS	26

9.2. 2011 / Safran-PSA / Gestion d’un plateau de prestation / Citroën DS5 Hybride	51

9.3. 2002-2007 / Bayo / Géolocalisation / CartoExploreur	58

9.4. 2002 / Johnson Controls / Automobile / Tableau de bord Renault Modus J77	72

9.5. Conclusion	95

10. GLOSSAIRE	96

11. BIBLIOGRAPHIE	99

12. SYNTHÈSE DES COMPÉTENCES ACQUISES	100

13. ANNEXES	101

13.1. Référentiel du diplôme envisagé	102

13.2. Détail des compétences acquises	113

13.3. Évaluations YOU-TRUST	124

13.4. Recommandations YOU-TRUST	128

13.5. Refus poste ingénieur FENWICK	130

13.6. Devis Société Saônoise de Tiroirs	131

13.7. Attestation création auto-entreprise	132

13.8. Équipe TdB Digitaux Johnson Controls en 2002	133

RAPPORT DU JURY	134

Le nombre de page peut sembler important, néanmoins j’ai beaucoup illustré mes propos afin d’aider à la compréhension de mon travail et de ma méthodologie. La rédaction aura été faite dans l’ordre chronologique, c’est à dire de l’expérience la plus ancienne (Johnson Controls) vers la plus récente (Ercogener), mais est néanmoins présentée de façon anti-chronologique comme réclamé, ce qui explique que certaines explications arriveront probablement « tardivement » à la lecture du document.

De plus, j’ai dupliqué l’ensemble du référentiel de la spécialité Informatique Industrielle en annexe en deux parties afin de pouvoir mieux illustrer les compétences acquises dans la synthèse de celles-ci.

Merci pour votre attention à ces détails structurels.

Vous trouverez des termes en ITALIQUE qui font référence au glossaire situé au chapitre 10 page 96.

INFORMATIONS VOUS CONCERNANT

Mme M.

Nom de naissance : KOCH

Nom d'épouse :

Premier prénom : David	Autres prénoms :

Adresse : 12 rue de l’ancienne école – LD La petite Chaussée

Code postal : 86330	Commune : LA CHAUSSEE

Pays de résidence : FRANCE

Tél. domicile :	Tél. travail:	Tél. mobile : 06.45.81.02.18

Mel: david.koch@9online.fr

Date de naissance : 11.03.1978	Nationalité: française ressortissant européen Autre

Commune de naissance : Strasbourg	Départ. de naissance 067	ou pays de naissance :

Dernier emploi occupé ou dernière fonction Développement Logiciel

Numéro de Sécurité Sociale : 1 78 03 67 482 205 72

Votre situation actuelle

Exercez-vous une activité de bénévole dans une association, un syndicat ? oui non

Vous êtes actuellement :

En situation d'emploi :

CDI	CDD ou Intérim	Travailleur indépendant, artisan, profession libérale

Contrat aidé ou contrat en alternance	Fonctionnaire	Militaire

En situation d'inactivité

En recherche d'emploi : Inscrit(e) à Pole Emploi	non oui, depuis : 2007

< 1an 1an à < 2 ans	2 ans à < 3ans 3 ans ou plus

Êtes-vous indemnisé au titre de l'assurance chômage (ARE) ?	oui	non

Êtes-vous allocataire du RSA? :	oui	non

Êtes-vous allocataire d'autres minima sociaux que le RSA ? (ASS, API, AI, veuvage, AAH...)	oui	non

Êtes-vous reconnu travailleur handicapé ? :	oui	non

Votre niveau de formation

Dernière classe suivie :	Diplôme le plus élevé obtenu
Primaire ou 6ème, 5ème, 4ème du collège	Aucun diplôme
3ème ou 1ère année de CAP ou BEP	Certificat d'étude primaire (CEP)
2nde, 1ère année de l'enseignement général	Brevet des collèges (BEPC), DNB ou équivalent
ou dernière année de CAP ou de BEP	CAP, BEP ou autre certification de même niveau
Terminale	Baccalauréat général, technologique, professionnel,
1ère ou 2ème année de DEUG, DUT, BTS, ou équivalent	ESEU, DAEU, ou autre certification de niveau IV
2ème ou 3ème cycle de l'enseignement supérieur ou équiv.	DEUG, DUT, BTS ou autre diplôme de niveau III
Diplôme de niveau II : licence (ou maîtrise)
Diplôme de niveau I : master, titre d'ingénieur diplômé
(ou DESS , DEA)

Avez-vous obtenu un diplôme ou un titre à l'issue d'une formation professionnelle. Si oui, lequel:

2008 BPREA Élevage Équin – 2009 TP Transport Marchandise sur Porteur – 2010 BEPA Maréchal Ferrant

DEMANDE DE VALIDATION

diplôme envisagé Ingénieur Polytech Tours

domaine

mention

spécialité Informatique Industrielle

Finalité (pour les Masters)	recherche	professionnelle

Vous demandez une validation	totale	partielle

 Le cas échéant, précisez les UE envisagées

Autre demande de validation

Article R613-34	"Un candidat ne peut déposer, au cours de la même année civile et pour un même diplôme, qu’une seule demande et ne peut en saisir qu’un seul établissement. La demande précise le diplôme postulé. S’il postule des diplômes différents, le candidat ne peut au total déposer plus de trois demandes de validation au cours de la même année civile."
Autre établissement sollicité :	Diplôme postulé :

DÉCLARATION SUR L’HONNEUR

Je soussigné(e), Mr KOCH David

déclare sur l'honneur que toutes les informations fournies sont exactes et que la présente candidature à la validation des acquis de l'expérience en vue de l'obtention du diplôme suivant (intitulé exact du diplôme et option) : Ingénieur Polytech Tours - Informatique Industrielle

constitue l'unique demande pour ce diplôme pour la même année civile.

Je m'engage également à ne pas présenter plus de trois candidatures à la validation des acquis de l'expérience pour des diplômes, certificats ou titres différents durant la présente année civile.

Fait à LA CHAUSSEE	Signature du candidat

Le 05/05/2018

La loi punit quiconque se rend coupable de fausses déclarations : « Constitue un faux toute altération frauduleuse de la vérité, de nature à causer un préjudice et accomplie par quelque moyen que ce soit, dans un écrit ou tout autre support d’expression de la pensée qui a pour objet ou qui peut avoir pour effet d’établir la preuve d’un droit ou d’un fait ayant des conséquences juridiques.

Le faux et l’usage de faux sont punis de trois ans d’emprisonnement et de 45000 euros d’amende (code pénal, art.441-1)

Le fait de se faire délivrer indûment par une administration publique ou par un organisme chargé d’une mission de service public, par quelque moyen frauduleux que ce soit, un document destiné à constater un droit, une identité ou une qualité ou à accorder une autorisation, est puni de deux ans d’emprisonnement et de 30000 euros d’amende » (code pénal art.441-6)

Demande de Validation des Acquis de l'Expérience Décret du code de l’éducation n° 2013-756 du 19 août 2013 relatif à la validation de l'expérience par les établissements d'enseignement supérieur Décision de recevabilité / Avis de faisabilité N OM et Prénom du candidat KOCH David______________________________________________________ (nom de naissance suivi du nom d’épouse) D IPLÔME ENVISAGÉ I NGÉNIEUR P OLYTECH T OURS ____________________________________ Domaine INFORMATIQUE INDUSTRIELLE Mention ___________________________________________________________________________________ Spécialité (le cas échéant) Informatique Industrielle_________________________________________________ Finalité (cocher, le cas échéant) recherche professionnelle Réservé à l'administration DÉCISION DE RECEVABILITÉ Durée de l’expérience - la durée de l’expérience présentée est d’au moins 1 année oui non - cette durée est attestée par les pièces jointes au Livret oui non Nature de l’expérience - l’expérience présentée se situe dans le champ du diplôme envisagé oui non AVIS DE FAISABILITÉ PÉDAGOGIQUE - Encouragez-vous le candidat à poursuivre sa démarche ? oui non L’expérience professionnelle et les acquis de compétences techniques et organisationnelle à travers les différentes missions réalisées et formations suivies depuis l’obtention du candidat de son diplôme DUT GEII Tours en 2000 font de lui un candidat sérieux pour l’obtention du diplôme d’ingénieur Polytech Tours de la spécialité Informatique Industrielle. A souligner, certaines entreprises où le candidat a effectué des missions ont déjà recruté des apprentis Polytech Tours et qui sont aujourd’hui des ingénieurs. Je donne donc un avis totalement favorable et j’en courage le candidat à poursuivre sa démarche. Nom, prénom du signataire : Fonction : Fait à Tours M Ameur SOUKHAL Professeur des Universités le 20/06/2017 Responsable du département Formations par alternance (dont la spécialité Informatique industrielle dépend) (signature) Année Universitaire 2016 / 2017 La décision de recevabilité et l’avis de faisabilité ne préjugent en rien de la décision qui sera prise ensuite par le jury de validation. AVIS DE RECEVABILITÉ / FAISABILITÉ PÉDAGOGIQUE

Huhtamaki / Keyes VAE Polytech PARCOURS

Ercogener PSA Electrique BEPA Lycée BAC S IUT GEII Année	Embarqué	Automobile	Test	Gestion	Production	Personnel
2018
2017
MyScript Altran 2016	Magneti Marelli
Sojadis
2015
Itron	Canberra
2014
DKAE
Sagem 2013
Saônoise de tiroir
2012	Safran
Hybride	Management
2011	Lisa
Supinfo
2010	TP
TP 2009
BPREA
2008
Bayo
2007	CCI
CCI
2006
2005
2004
2003
Johnson Controls
2002
Magneti Marelli
2001	Motorola
AFPA
2000
1999
1998

PROJET PROFESSIONNEL ET PERSONNEL

Initialement j’ai toujours voulu poursuivre un cycle ingénieur en informatique industrielle du fait de ma passion pour la programmation initiée fin des années 80 avec l’acquisition d’un Commodore Vic-20 puis d’un Atari ST. J’étais alors fasciné par l’adaptabilité de ces outils informatiques à résoudre les problèmes qui leurs étaient soumis, pour peu que le problème ait été analysé au préalable, découpé en phases élémentaires et présenté dans un format compréhensible par l’ordinateur.

J’avais donc orienté mon cursus scolaire dans cette voie, par l’obtention d’un Baccalauréat Scientifique, puis d’un Diplôme Universitaire de Technologie en Génie Électrique et Informatique Industrielle. J’avais préféré cette orientation à une classe préparatoire car étant plutôt dans la logique pratique et manuelle, je suis rebuté par les longs enseignements magistraux purement théoriques sans parallèle avec leurs applications pratiques dans le quotidien.

De plus, passer par le cycle court technologique me permettait, le cas échéant, de pouvoir entrer le monde du travail si je ne pouvais pas poursuivre le cycle ingénieur. Mais au regard des circonstances d’alors, je n’ai pas pu suivre cette orientation, j’ai donc passé mon permis de conduire avant mon stage de 2ème année et c’est avec regret que j’ai cherché du travail dès l’obtention de mon diplôme. Tout en me disant qu’il resterait toujours la possibilité de reprendre mes études ultérieurement.

Il s’est avéré ensuite qu’une fois en poste, surtout en prestation de service avec de multiples affectations géographiques en fonction des besoins de l’entreprise, il est difficile de pouvoir se consacrer à reprendre sereinement un cursus scolaire de front avec les impératifs personnels inhérents à l’émancipation du foyer familial et des nouveaux devoirs que cela entraîne. A tel point qu’à un moment j’ai tenté une reconversion professionnelle dans un autre domaine qui m’est aussi très cher.

En effet il est rapidement apparu que je disposais bien des compétences pragmatiques requises par mes employeurs qui m’affectaient à des tâches toujours plus complexes et importantes, devenant de facto référent technique sur les domaines confiés, mais sans cependant en bénéficier de la rétribution correspondante du fait de mon diplôme de cycle court qui ne me permettait pas d’en bénéficier officiellement, la hiérarchie et la grille salariale devant être respectée.

De nombreux postes m’ont été refusés sur ce motif (cf. annexe 13.5 page 130) mon évolution de carrière stagne, il m’est impossible de prétendre à des responsabilités plus élevées et donc des salaires idoines, qui participent notamment à la motivation de résoudre des problèmes toujours plus compliqués, d’organiser le travail de façon rationnelle, de synthétiser les données techniques et les risques économiques, d’orienter le développement de l’entreprise.

C’est pour cela, au terme d’une longue introspection et fort de mes expériences, je compte désormais obtenir officiellement mon statut d’Ingénieur en Informatique Industrielle afin de pouvoir donner un nouvel essor à ma carrière et apporter de nouvelles solutions innovantes, tout en faisant bénéficier mes collaborateurs de mes acquis variés, aussi bien dans le domaine technique, que de la gestion économique et des relations humaines.

Mon projet à court ou moyen terme est de me remettre à mon compte en tant que consultant en informatique industrielle afin de pouvoir partager mes connaissances et faire profiter de me compétences un large panel d’entreprises. Mon projet à long terme est de fonder ma propre entreprise en conception logicielle et matérielle dans le domaine industriel, avec l’embauche et l’épanouissement de salarié(e)s aussi passionné(e)s que moi. Je dispose déjà d’un ensemble de projets en latence à réaliser.

Ainsi je présente aujourd’hui mon Livret 2 afin de concrétiser une Validation des Acquis d’Expériences sur 18 années d’expériences professionnelles et personnelles en vue de formaliser l’obtention du diplôme correspondant. Cela me permettra de prendre un nouvel essor dans ma carrière professionnelle, ce qui aura irrémédiablement un impact positif dans ma vie personnelle, qui les deux peinent à décoller à 40 ans.

FORMATION INITIALE et CONTINUE

Détail de la formation initiale

(BEP/CAP, baccalauréat, diplômes professionnels ou universitaires)

Année	Établissement fréquenté (nom et adresse)	Diplôme ou examen préparé	Résultats obtenus Succès Échec Abandon
2000	Université ‘François Rabelais’ - Tours (37 : Indre-et-Loire)	DUT Génie Électrique et Informatique Industrielle, option électronique	X
Principales matières étudiées Mathématique, électricité, électronique, automatisme, informatique industrielle, …
1998	Lycée ‘Notre-Dame’ - Fontenay-Le-Comte (85 : Vendée)	BAC Scientifique, option physique-chimie	X
Principales matières étudiées Mathématique, physique, chimie, biologie, français, histoire, géographie, ...

Détail de la formation continue

(formation, stages, séjours à l’étranger, séminaires, etc.)

Année & durée	Organisme ou contexte	Intitulé ou contenu
2013 (14 h)	AFPA Paris	Habilitation électrique
Notions principales du programme suivi Exécutant électricien B1V Chargé de travaux B2V Chargé de consignation BC Chargé d’intervention BR Chargé d’opération BE – Essais
2011 (28 h)	SAFRAN Montigny-le-Bretonneux	Management d’équipe
Notions principales du programme suivi
2011 (14 h)	APAVE Belfort	Habilitation électrique sur véhicule hybride
Notions principales du programme suivi
2007 (350 h)	CCI Auxerre	350h pour entreprendre, création ou reprise d’entreprise
Notions principales du programme suivi Économie et gestion de l’entreprise Comptabilité de l’entreprise La fiscalité de l’entreprise Gestion des ressources humaines Commercial : de l’idée au projet L’action commerciale – Marketing Juridique Informatique et bureautique Environnement institutionnel, modalités d’inscription, aides à la création d’entreprise Apports extérieurs – Conférences Jury final

EXPÉRIENCE PROFESSIONNELLE et EXTRA-PROFESSIONNELLE

Détail des expériences professionnelles (salariées / non salariées)

Emploi	Nom et adresse de l’employeur	Secteur d’activité	Période d’emploi	Nombre d’heures par mois	Durée en mois
Développeur informatique embarqué industriel	Ercogener - Saumur (49 : Maine-et-Loire)	Informatique industrielle	01/03/2016 - en cours	162 H	13
Principales missions et activités Traceur communiquant IoT 1114 Définition de l'architecture d'un système d'exploitation temps-réel sécurisé Environnement Windows 10, messagerie Outlook Développement croisé ARM sur cible STM32L4 basse consommation Utilisation d'une carte de développement Nucleo L476 Découpage des couches logicielles en respectant un modèle proche de l'OSI Création d'un séquenceur préemptif hybride de type EDF et HEFT Création des modèles de données et des bibliothèques systèmes Développement d'un allocateur mémoire temps-réel basé sur TLSF Écriture de conteneurs de données proches de la STL mais implémentés nativement Écriture de routines de chaînes de caractères ascii, utf et ucs (unicode) Utilisation d'un système de messagerie distribuée Possibilité de synchroniser des tâches par événement atomique plutôt que par sémaphore Arborescence de dialogue entre le processus parent et les tâches enfants (worker threads) Mise en place d'un modèle de développement basée sur les flux de données Découpage des actions par événements et caractéristiques à traiter Système de machine à états automatique qui extrait et aiguille les informations Expérience développée plus en détails dans le chapitre 9.1 page 26
Ingénieur développeur informatique embarqué industriel	Magneti Marelli - Châtellerault (86 : Vienne)	Informatique industrielle	04/01/2016 - 29/02/2016	167 H	2
Principales missions et activités Hub multimédia et navigation satellite "giorgio" Optimisation latence boot et système, correction de bugs, intégration Environnement Windows 7, messagerie Outlook Développement croisé Linux ARM sur cible nVidia Tegra 2 Intégration de modules de navigation propriétaires Tom-Tom Analyse de logs système au format strace, lttng, dlt, bdltv Filtrage et identification automatique de marqueurs de signal par scripts Python Comparaison de résultats dans un tableau Excel avec analyse par macro VBA Rapport d'analyses et proposition de solutions une fois celles-ci validées

Ingénieur développeur informatique embarqué industriel	Altran Research – Rennes (35 : Ille-et-Vilaine)	Informatique industrielle	07/12/2015 - 23/12/2015	167 H	1
Principales missions et activités Définition de l'architecture d'un codec (codeur-décodeur) vidéo FPGA hybride Travail de synthèse sur l'interface de duplication intelligente des services Architecture de dé/codage H264 et MPEG2 avec gestion QoS et QoE automatique Modularisation des chaînes de dé/codage en plusieurs étages indépendants Factorisation des besoins logiques pour une reproductibilité matérielle Création de schémas d'architecture des chaînes de transfert Questionnements sur le dimensionnement des modules en cas de mise-à-jour du micro-logiciel Questionnements sur les temps de latence et le nombre de reprogrammations possibles Questionnements sur la faisabilité réelle d'une reprogrammation temps-réel du circuit logique
Ingénieur développeur informatique embarqué industriel	MyScript – Nantes (44 : Pays de Loire)	Informatique industrielle	17/09/2015 - 04/12/2015	167 H	2.5
Principales missions et activités Développement logiciel couches basses et interface utilisateur d’un écran eInk tactile Portage d’une application Windows Metro sur écran eInk sans framework IHM Mise en place d’un double buffer pour préparation du rendu Écriture de routines d’affichage (ligne, rectangle, cercle, arc, chaînes, images) Transfert sélectif de zones du buffer temporaire vers l’écran E-INK Gestion des événements utilisateurs en provenance de l’écran E-INK
Ingénieur développeur informatique embarqué industriel	Sojadis – Jallais (49 : Maine et Loire)	Informatique industrielle	09/07/2014 - 28/08/2015	169 H	13.5
Principales missions et activités Outils de tests de conformité pour appareils d'aide à la conduite automobile Amélioration d’une application de capture de données Environnement Windows 7, messagerie Thunderbird Modification d’une application Labview 2013 Ajout du support de capture sur plusieurs canaux en parallèle (interface Phidgets) Réorganisation de l’interface graphique par onglets Chargement et sauvegarde de profils de réglage Ré architecture d’un programme de test de faisceaux Simplification de l’interface graphique (édition et exécution du plan de tests) Meilleure lisibilité et organisation des diagrammes Labview Ajout de vues et filtrages sur la base de données des plans de tests Modification de la structure de la base de données pour transition sur serveur SQL Transformation d’algorithmes Labview en requêtes SQL complexes Re programmation d’un séquenceur pour banc de test Analyse et documentation de l’architecture du programme original Programmation d’une maquette basée sur la structure du test des faisceaux Modularisation des pilotes avec une structure homogène par message Évaluation de Teststand, réalisation d’un protocole de dialogue avec Labview Remplacement du séquenceur réalisé en Labview par le séquenceur Teststand Modélisation et création d’une base de données relationnelle complexe Ajout d’un système d’auto-diagnostique des instruments de tests

Ingénieur développeur informatique embarqué industriel	Canberra – Loches (37 : Indre et Loire)	Informatique industrielle	01/07/2014 - 08/07/2014	167 H	0.5
Principales missions et activités Portage d'un pilote de sonde de radioactivité Portage sous Visual Studio d'une application .Net et Win32 Recherche des structures et pointeurs ayant un équivalent 64 bits Adaptation et renommage des interfaces pour utiliser les versions 64 bits Tentative de compilation et corrections ponctuelles aux endroits indiqués Résolution de fuites mémoires par ajout de libérateurs manquants Création des répertoires de sortie des versions 64 bits Correction de l'installateur intégré au projet Visual Studio et ajout de la version 64 bits Tests de cohésion de l'ensemble Rédaction d'un document de synthèse des tâches effectuées
Ingénieur développeur informatique embarqué industriel	Itron – Chasseneuil-du-Poitou (86 : Vienne)	Informatique industrielle	09/09/2013 - 30/06/2014	167 H	9.5
Principales missions et activités Logiciel embarqué pour compteur électrique communiquant Création d’outils de génération de code et de compilation Environnement Windows 7, messagerie Outlook Réalisation d’un script VBA pour transformer une feuille Excel en fichiers C++ Création d’un moteur de compilation en batch configurable par fichier TXT Définition de normes de codage Analyse des normes en vigueurs Compilation des requêtes normatives auprès des responsables qualité Réalisation et diffusion d’un document synthétique Création de scripts de modification automatique de code (Tcl) Refactoring manuel des fichiers résiduels pour une conformité maximale Mise en place d’un serveur de tests unitaires Création d’un outil de test unitaire en C et C++ (basé sur Unity) et sa documentation Configuration de différents outils de vérification de code (Vera++, CppCheck, Lint, SonarQube, …) Configuration d’un serveur automatique de tests unitaires (Jenkins) Réalisation de rapports automatiques avec métriques (occupation mémoire, charge CPU, …)

Développeur informatique en gestion de production industrielle	Société Saônoise de Tiroirs - Villers-Les-Luxeuil (70 : Haute-Saône)	Informatique industrielle et de gestion	28/03/2012 - 03/08/2012	173 H	4.5
Principales missions et activités Transition sur un nouvel ERP Gestion de la base des articles Environnement Windows XP et 2003 Server, messagerie Outlook Express Gestion de base de données Firebird SQL (projet open source) Compilation Windows avec WinDev 12 Gestion de configuration par dossiers partagés Analyse et maintenance de la nomenclature des articles Création d’outils de conversion de format de fichier CSV et injection dans la nouvelle base Création de nouveaux articles dans la base en suivant le protocole en place (outil Excel VBA) Création d’outils de nettoyage de la nouvelle base de production Outils de vue et d’accès à la base de données Prise en compte des droits d’accès aux données en fonction des postes et utilisateurs Programmation d’un moteur de présentation des données à partir d’Excel (accès SQL par VBA) Création de deux outils différents basés sur cette feuille Excel pour trier et modifier des tarifs Programmation des requêtes SQL complexes (UNION, JOIN et UPDATE) États WinDev Analyse et maintenance des états existants Création de nouveaux états en fonction des besoins de divers postes (Pefc, comptabilité, …) Utilisation d’algorithmes de type MapReduce pour simuler une sous requête SQL dans l’état
Ingénieur validation électronique et informatique embarqué automobile	Safran Engineering Services - Montigny-Le-Bretonneux (78 : Yvelines)	Informatique industrielle	16/01/2012 - 23/03/2012	169 H	2.5
Principales missions et activités Automatisation de script de test Tests automatiques sur banc dSpace Environnement Windows XP, messagerie Outlook Express Gestion de configuration par dossiers partagés Analyse des scénarios de test client, déroulement manuel et compilation des résultats Modification et création de tests automatisés d’après les scénarios de test Développement de librairies de traitement du signal en Python pour automatisation des tests Rédaction de rapports de test, mise à jour des outils statistiques de suivi des objectifs

Ingénieur validation électronique et informatique embarqué automobile	PSA Peugeot Citroën - Belchamp : Montbéliard (25 : Doubs)	Informatique industrielle	21/03/2011 - 23/12/2011	169 H	9.5
Principales missions et activités Gestion d’un plateau de prestation et validation sur véhicules prototypes Gestion de plateau Environnement Windows Vista, messagerie Lotus puis Outlook Express Gestion de configuration par accès sécurisés sur différents serveurs Intranet, accès Internet limité Interface avec le client, organisation de réunions hebdomadaires avec l’équipe des collaborateurs Création d’un outil Excel de gestion des campagnes de tests et des résultats obtenus en VBA Statistiques de productivité de l’équipe et de réalisation des objectifs Programmation de banc de test automatique Environnement Windows 2000 Programmation en LabView 8 et 2010 Utilisation d’outils et d’API internes pour réaliser les tests Équipement et instrumentation des véhicules prototypes, déroulement des tests Compilation des données et transmission aux personnes concernées Validation fonctionnelle sur véhicule Environnement habitacle (fonctionnel), électrique (réseau multiplexé) et sous capot (puissance) Équipement et instrumentation des véhicules prototypes, déroulement des tests Analyse des défauts électriques et électroniques (flux CAN et LIN) Création et diffusion d’un rapport de fin de campagne, saisie des informations sur l’Intranet dédié Formations 4 jours de formation en management d’équipe 2 jours de formation en secourisme du travail Expérience développée plus en détails dans le chapitre 9.2 page 51

Architecte logiciel en gestion de production	Lisa Sarl - Limoges (87 : Haute-Vienne)	Informatique industrielle et de gestion	01/12/2010 - 10/02/2011	152 H	2.5
Principales missions et activités Logitrack WMS et personnalisation par client Logitrack WMS - Thalès Environnement Windows 2000 et XP, messagerie Outlook Express Gestion de base de données SQL Server 2000 et 2005 (avec résolution des conflits entre les deux) Compilation Windows avec WinDev 7 et 12 (réalisation d’une maquette avec la version 15) Gestion de configuration par dossiers partagés Analyse du code existant et écriture d’une documentation inexistante (méthode « post-it ») Correction et amélioration du logiciel en fonction du cahier des charges Ajout d’une identification automatique du poste en fonction de l’adresse IP sur la plage DHCP Logitrack WMS - Eyrein Industrie Analyse du code existant et écriture d’une documentation inexistante Récupération de la documentation des balances industrielles et du protocole RS-232 9600 bauds Analyse du transfert du poids lu par la balance jusqu’au terminal embarqué par transit Wi-Fi Réalisation d’un bouchon passif DB-9 et d’un outil de scan automatique des balances par IP Accès et contrôle des balances par session distance (LogMeIn) Déplacement sur place pour contrôle des balances et des transmissions Correction de la version embarquée sur terminal Motorola sous Windows CE Amélioration et fiabilisation du système d’installation distant sur terminal Motorola Divers Utilisation d’imprimantes à code barre de marque Zebra et du logiciel associé Déplacement chez des clients pour maintenance et/ou vente de matériel et consommables Prise en charge du SAV des terminaux embarqués Motorola pour le compte des clients Gestion des retours auprès de Motorola et remplacement des terminaux défectueux
Autoentrepreneur	DKAE - Limoges (87 : Haute-Vienne)	Informatique industrielle et de gestion	12/11/2010 - 12/11/2013	20 H	1
Principales missions et activités 2012 - Sagem Défense – Fougères (35 : Ille-et-Vilaine) Création de plans de tests automatiques sur banc dSpace Mission de sous-traitance non réalisée suite obtention du marché par Ausy 2012 - Société Saônoise de Tiroirs - Villers-Les-Luxeuil (70 : Haute-Saône) Création d’un serveur distribué de gestion de production relié à l’ERP Cegid Prestation de développement non réalisé suite à non reconduction de mission d’interim Crit Cf. annexe 13.6 page 131 2010 – Supinfo Limoges - Limoges (87 : Haute-Vienne) Cours d’informatique et de programmation à des classes de cycle ingénieur Réalisation de la prestation non réalisée suite à problème d’organisation de Supinfo et embauche chez Lisa

Développeur informatique en cartographie et géolocalisation	NSE Industries / ECT Industries / Bayo - Appoigny (89 : Yonne)	Informatique applicative	01/07/2002 - 24/07/2007	152 H	61
Principales missions et activités Géolocalisation GPS sous Windows et Pocket PC Époque CartoExploreur, CartoNav, CartoNav Plus, CartoCom Environnement Windows 2000 et XP, messagerie Outlook Express Compilation Windows avec Visual C++ 6 (Win32, MFC, GDI) Gestion de configuration CVS (Linux) Réalisation de routines de conversion de données vectorielles (DXF) en coordonnées WGS84 Maintenance et amélioration des outils tiers de compilation des données Navteq Compilation des données géographique Navteq dans un format propriétaire Proposition d’amélioration des logiciels (fonctionnalité et ergonomie) Développement d’outils pour le service SAV afin de faciliter la maintenance par téléphone Époque CartoExploreur 3, CartoCom 3, PhotoExploreur Gestion des versions logicielles (tagging CVS) et compilation des différents produits Refonte complète du système d’installation (abandon d’InstallShield, choix d’InnoSetup) Compilation croisée PocketPC avec eMbedded Visual C++ 4 Gestion complète de la chaîne de confiance pour la signature numérique des CAB (GeoTrust) Création d’un protocole de transfert des cartes raster du PC vers de PocketPC Création du système d’installation ’one-click’ sur PocketPC et verrouillage par poste Ajout de la gestion de la transparence sur PocketPC Ajout de la gestion de nouveaux formats vectoriels en import / export Époque CartoExploreur 3 3D, PhotoExploreur 3D Conception et réalisation de l’interface de recherche et d’affichage des points d’intérêt Ajout d’un système de navigation intuitif dans la vue 3D en OpenGL (façon Google Earth) Expérience développée plus en détails dans le chapitre 9.3 page 58

Ingénieur développeur informatique embarqué automobile	Johnson Controls - Pontoise (95 : Val-d'Oise)	Informatique industrielle	01/10/2001 - 28/06/2002	162 H	9
Principales missions et activités Tableau de bord Renault Espace 3 (code Renault J81 - code interne AZ1011) Environnement Windows 2000, messagerie Lotus Fonctionnalités en charge : gestion de la température moteur, des erreurs CAN, du rapport de boite Compilation croisée avec Visual C++ 6 et compilateur GreenHills Microcontrôleur cible Hitachi H8S, afficheur VFD à segments et dot-matrix Gestion de configuration PVCS Analyse du code source existant, des spécifications techniques et du cahier des charges client Modification et écriture de fonctionnalités, insertion dans la gestion de configuration Compilation et test sur cible prototype Tableau de bord Renault Modus (code Renault J77 - code interne AZ1021) Fonctionnalités en charge : IHM complet, niveau d’huile Compilation croisée avec Visual C++ 6 et compilateur GreenHills Microcontrôleur cible Micronas ARM9, afficheur LCD uEM6124 à segments et dot-matrix Analyse des besoins du client et élaboration de groupes d’affichage Création d’une hiérarchie d’affichage, écriture d’une documentation complète Réalisation d’une API exhaustive avec analyse du taux d’occupation mémoire et charge CPU Écriture des 3 couches logicielles (low, middle et high level) pour l’affichage complet de l’IHM Proposition et modification du cahier des charges suite à la réalisation des premières maquettes Écriture et documentation des 2 couches logicielles basses (low et middle) pour le niveau d’huile Tableau de bord Peugeot 307 (code PSA T5 et N7 - code interne CY1001) Fonctionnalité en charge : gestion des volets de ventilation de la climatisation automatique Compilation croisée avec Visual C++ 6 et compilateur Nec 78K Microcontrôleur cible Nec 78K Analyse des besoins du client, écriture d’une documentation complète Écriture du pilote basé sur une table de Karnaugh pour faciliter le débogage et la maintenance Expérience développée plus en détails dans le chapitre 9.4 page 72
Ingénieur développeur informatique embarqué automobile	Magneti Marelli - Châtellerault (86 : Vienne)	Informatique industrielle	01/05/2001 - 28/09/2001	152 H	5
Principales missions et activités Logiciel embarqué pour tableau de bord automobile Programmation de fonctionnalités bas niveau Environnement PC Windows 2000, messagerie Outlook Fonctionnalités en charge : gestion de l’alimentation (idle et sleep) et du watchdog (dead-loop) Compilation croisée avec DevCpp et compilateur GreenHills Gestion de configuration Continuus par interface Unix Hummingbird Analyse des spécifications techniques des microcontrôleurs Nec 78K (8 bits) et Hitachi H8S (16 bits) Configuration matérielle de la plate-forme prototype en fonction de la version cible Injection logicielle des images ROM dans le microcontrôleur cible Création d’un scénario de test aléatoire par chaîne de ’Markov’ Réalisation du scénario sur la plate-forme prototype et écriture d’un rapport Modification du code source en fonction des résultats observés Documentation de la plate-forme prototype Relevé des modifications matérielles apportées au prototype Listage complet des pinouts suivant la cible choisie et donc le microcontrôleur affecté Proposition de réalisation d’un PCB de configuration sur support tulipe

Technicien validation électronique et informatique embarqué automobile	Motorola Aieg - Angers (49 : Maine-et-Loire)	Informatique industrielle	18/12/2000 - 19/01/2001	152 H	1
Principales missions et activités Station de test de fin de chaîne EOL Analyse des scripts de test Étude de la documentation d’une station HP Agilent et du langage de programmation Analyse des scripts de test existant, proposition d’améliorations Recherches de documentations techniques sur les composants du calculateur (microprocesseur) Montage d’une nouvelle chaîne de test Installation d’un carrousel de distribution après le poste d’inspection visuelle Installation de tapis roulant et de postes d’assemblage Installation et démarrage d’une station de fin de chaîne HP Agilent
Étudiant en informatique et automatisme industriel	Huhtamaki / Van Leer / Keyes – L’Ile d’Elle (85 : Vendée)	Informatique industrielle	09/04/2000 - 29/06/2000	152 H	2.5
Principales missions et activités Automatisation du circuit humide de pulpage de fibre papier Analyse du circuit existant Pour l’élaboration du cahier des charges, il a fallu démarrer par un relevé terrain des vannes Travail en binôme pendant deux semaines avec un opérateur pour la cartographie Listage des vannes et circuits ayant été supprimés et ajoutés (caractéristiques et position) Création d’un schéma d’ensemble de 7 x 1.5m sous Visio Technical (mosaïque de pages A0) Préparation de l’automatisation Renumérotation des nouvelles vannes qui n’étaient pas encore identifiées Analyse de l’armoire électrique et de la liaison avec la salle de contrôle Établissement de la chaîne de transfert depuis le tableau de commande jusqu’à la vanne Correction et normalisation des niveaux électriques Sélection du système de supervision Recherche des différents systèmes de contrôle - commande disponibles Étude et comparaison des fonctionnalités, tarification, installation et maintenance Convocation de 5 représentants sélectionnés pour une démonstration produit

Détail des expériences extra-professionnelles

Fonction bénévole	Nom et adresse de la structure	Secteur d’activité	Période de bénévolat	Nombre d’heures par mois	Durée en mois
Participation à l’amélioration du clavier AZERTY	AFNOR	Norme	2017-2018	2h	12
Principales missions et activités https://norminfo.afnor.org/norme/pr-nf-z71-300/interfaces-utilisateurs-dispositions-de-clavier-bureautique-francais/113295 Amélioration du clavier AZERTY Proposition d’améliorations de la disposition actuelle Création de dispositions « internationales » avec accents en touches mortes (CFILORUX et AEIMQUY) https://deskthority.net/keyboards-f2/kochise-cfilorux-custom-keyboard-layout-creator-t17889.html https://www.reddit.com/r/keycapdesigners/comments/7yif7f/meet_cfilorux_the_god_of_keyboards/
Principales missions et activités
Principales missions et activités

Autres expériences

Emploi ou fonction bénévole	Nom et adresse de la structure	Secteur d’activité	Période d’emploi ou de bénévolat	Nombre d’heures par mois	Durée en mois
Programmation et électronique	Informatique	1995 - ...	20h	336
Principales missions et activités Atari ST et Falcon030 (68000, 68030, DSP, TOS et Minix 1.5) Programmation assembleur, gfa basic, modula 2 Routines systèmes (mini OS) et graphiques (morphing, fractale, 3d) Applications diverses à usage personnel PC (x86, Windows, Linux et Android) Montage de PC (Athlon XP en ATX, Atom 330 - VIA C7 - AMD E350 en mini ITX) Programmation d’applications systèmes et graphiques (traitement photo, OpenGL) Environnement de programmation Visual Studio, NetBeans, Eclipse, Intellija Débogage in-situ, Bochs, Qemu, VirtualBox Simulation électronique LTSpice, Proteus, Eagle, ExpressPCB, Quartus, ISE Labo électronique sonde Hantek 32 voies, oscilloscope 200 MHz, station soudage à air Administration et maintenance système Windows (NAT, VPN, REG, …) Amélioration matérielle et logicielle des unités (carte graphique, watercooling, …) Création d’un « Wall PC », ordinateur mural ouvert pour manipulation électronique Dreamcast (SH-4, Katana, Windows CE) Création d’un SDK à base de briques logicielles officielles (Windows CE et Katana) Utilisation d’une chaîne de compilation GCC-GDB sous Cygwin Interface de programmation DevCpp (KallistiOS) ou Visual Studio 6 (Windows CE) Programmation de petits jeux en OpenGL sous KallistiOS ARM (MC2410 et S3C6410, Windows CE, Linux, Android) Création d’environnements de développement croisés (Windows Image Builder, GCC, Linux 2.6) Montage sur support bois pour remplacement ordinateur de bord Hyundai Galloper Environnement de programmation CodeBlocks, Eclipse Debug in-situ Qemu, croisé JTAG avec sonde Jlink v8
Participation à des forums de programmation	ProgrammersHeaven CodeGuru OsNews	Informatique	1998 - ...	20h	240
Principales missions et activités http://devel.archefire.org/downfile.php?path=/mirrors/www.programmersheaven.com/files/hardware/text/&filename=parai2c.zip http://stackoverflow.com/users/3069988/kochise http://www.osnews.com/user/Kochise/ Veille technologique sur l’informatique Participation active sur différents sujets et domaines de l’informatique
Rédacteur d’article de programmation	CodeProject	Informatique	2003 - ...	5h	180
Principales missions et activités http://www.codeproject.com/Members/Kochise Rédaction d’articles de programmation Documentation des projets en anglais Explication pédagogique sur la méthodologie employée Diffusion des codes sources, exemples didactiques compilés Suivi des retours d’expérience et maintenance des projets Participation aux échanges Suivi de sujets et discutions dans différentes sections et articles
Diffusion de code source	GitHub	Informatique	2016 - ...	5h	18
Principales missions et activités http://github.com/Kochise Diffusion de projets personnels Documentation des projets en anglais Création et gestion des repository sous Git Participation à d’autres repository Remontée de problèmes (« issues »), proposition d’amélioration (« fork – pull request ») Contributions à CMSIS (ARM), GCC, SonarQube, CodeMaid Dialogue avec d’autres programmeurs internationaux

DESCRIPTIONS D’EXPÉRIENCES PROFESSIONNELLES SIGNIFICATIVES

Voici 4 expériences professionnelles significatives détaillées. Je les ai choisies en fonction de leurs complémentarités entre leur domaine technique qui illustre l’informatique industrielle, et le niveau d’autonomie que j’ai eu pour mener à bien les missions qui m’ont été confiées. Pour les expériences "anciennes", c'est justement pour montrer que très "jeune" déjà, j'ai eu l'opportunité de prendre des décisions techniques importantes avec une autonomie conséquente, en étant intégré systématiquement dans des équipes d'ingénieurs sans aucune distinction de rôle (cf. annexe 13.8 page 133).

Année	Entreprise	Domaine	Page
2016-...	Ercogener	IoT - géolocalisation	26
2011	PSA - Safran	Automobile - Management	51
2002-2007	Bayo	Géolocalisation	58
2001-2002	Johnson Controls	Automobile - Développement	72

2016-actuellement / Ercogener / IoT et géolocalisation / eg1114 et EGOS

La société Ercogener a été créé au début des années 1980 et est spécialisée dans la conception de modem à usage industriel. Au départ connectés au « Réseau Téléphonique Commuté » (RTC) les produits ont suivis l'évolution de la technologie et du marché en suivant les besoins des clients, aussi bien en adoptant les connectivités filaires (Ethernet) ou sans fil (wifi, Bluetooth, GSM) ainsi que les normes récentes. Afin de répondre aux besoins d'automatisation de l'industrie « 4.0 », l'entreprise anticipe sur l'avenir et embrasse le mouvement de « l'internet des objets » (IoT).

Initialement recruté dans le cadre du développement de l'applicatif d'un traceur connecté, j'ai été amené à définir l'architecture logicielle complète d’un système d’exploitation embarqué et sécurisé, évolutive pour d'autres produits, ainsi que le modèle de données et les outils de compilation et de tests...

Contexte du recrutement et explications générales

J’ai rejoint l’entreprise Ercogener, basée autour de Saumur, en mars 2016 dans le cadre de la création d’un nouveau produit innovant. Celui-ci a pour projet de s’inscrire dans l’expérience de l’entreprise en matière de communication « machine-to-machine » (M2M), c’est à dire des modems industriels, mais s’ouvre vers « l’internet des Objets » avec la capacité de s’interfacer avec des capteurs internes (accéléromètre, magnétomètre, GPS) ou externe (température, pression atmosphérique, niveau d’eau) transmettant leurs données par réseau radio (GSM, LoRa, Sigfox).

Si le projet avait été initié depuis une année déjà, le cahier des charges initial portait son attention sur les aspects mécaniques et électroniques, la description attendue du logiciel se bornant à quelques requis fonctionnels (profil de mission, quoi capturer, quoi émettre, quand, durée de la mise en sommeil) avec des attendus en terme de durée de vie du produit (suivant fréquence de réveil et d’émission pour limiter la consommation) mais sans aucun détail d’implémentation, de système d’exploitation choisi, de protocoles de communication implémentés, de modèle de données construit.

État de l’art et objectif du système d’exploitation

Avec une évolution très forte de l’IoT dans le monde, l’émergence de nouveaux marchés et nouvelles technologies radio longue portée et basse consommation, les produits Ercogener doivent suivre ces évolutions en proposant des solutions tant hardware que software, en proposant à ses clients des solutions et plateformes en avance sur les solutions existantes. Ce projet de système d’exploitation s’inscrit dans la continuité des recherches menées les années précédentes, concernant les environnements ouverts multi-systèmes orientés IoT professionnels multi-protocoles.

Cette orientation stratégique se confirme par le retour d’expériences sur toutes les demandes spécifiques collectées par Ercogener depuis la mise en place d’une première version de système d’exploitation (eCos) + librairies (EGM) permettant aux clients de se concentrer sur la partie applicative d’un produit connecté en faisant abstraction des couches physiques. Pour réussir ce nouveau développement technique, une recherche poussée s’impose sur un choix d’architecture qui doit être en rupture avec les systèmes d’exploitation disponibles aujourd’hui.

L’objectif est d’avoir des produits IoT avec un système d’exploitation différenciant pour répondre aux besoins suivants :

les nouveaux cas d’usages IoT industriels et professionnels sont en nombre croissant

le « Time to Market » entre l’idée du cas d’usage et sa mise en service doit être réduit

la sûreté de fonctionnement et la cybersécurité doivent être pris en compte dès l’architecture

permettre aux clients la possibilité de programmer en restant focalisé sur leurs métiers

Ce projet de système d'exploitation s'inscrit dans une première expérimentation applicable à un géo-traceur autonome communiquant dont l'autonomie doit pouvoir assurer le fonctionnement sur une période couvrant la durée de vie de la batterie, c'est à dire de l'ordre de 5 ans. Cette première expérimentation pourra être une première vitrine innovante dans l’utilisation d’un système d’exploitation « Safe and Secure » léger pour les produits développés par Ercogener.

Illustration 1: Vue du géo-traceur (eg1114)

Le géo-traceur est un appareil de géolocalisation déporté, autonome, interrogeable à distance, capable d’émettre des alertes en fonction d’évènements, voire d’effectuer aussi des télé-relèves. L’ensemble des fonctionnalités peut être listé par les termes suivants :

Localisation	: relevé de la position du produit

Communication	: échanges avec un serveur distant

Acquisition	: relevé de données internes ou externes

Automatisation	: pilotage d’un automate externe

Programmation	: personnalisation du fonctionnement

Configuration	: modification des paramètres

Alimentation	: gestion des sources d’alimentation

Localisation Programmation Communication Configuration Alimentation Acquisition Automatisation RS-485 TOR C LUA JS PY 3G LoRa / BLE ACC / MAG TOR 1W GNSS SBAS WAKE UP INT / EVENT … Dessin 1: Organisation fonctionnelle du géo-traceur (eg1114) En matière de système d’exploitation pour "l'embarqué, il n'existe pas de solution couvrant tous les besoins requis sans y apporter de modifications majeures. Ce sont essentiellement des séquenceurs de tâches, mais qui n'offrent pas ou très peu de services annexes. Le modèle technologique est assez courant, voire obsolète. En effet, le langage de programmation le plus usité dans l'embarqué est le langage C développé au début des années 70, en conjonction avec la librairie ANSI C qui date de la même période et met à disposition du programmeur quelques services d'accès au matériel et quelques routines de traitement.

Il existe la norme POSIX de standardisation de système d'exploitation qui date de 1988, et dont la dernière mise à jour date de 2008. Son analyse nous a permis de nous rendre compte qu’elle n’est plus en rapport avec les technologies récentes. Si cette norme est adoptée malgré ses nombreux défauts, c'est qu'elle permet en général un portage rapide d'anciens logiciels. L’adoption d’une norme et d’un standard de développement permet de s’affranchir de spécificités propres à un domaine ou une entreprise, permet un meilleur brassage des connaissances et un recrutement facilité de développeurs ayant une base commune, de réutiliser des composants logiciels existants.

Il reste donc à déterminer la pertinence de poursuivre sur une voie, qui certes, offre la possibilité de poursuivre l’existant, mais avec une capacité d’évolution limitée du fait d’une auto-censure communément admise au sein de l’industrie, ou bien de s’aventurer vers une alternative innovante et pérenne. Si cette dernière voie est choisie, il faudra alors accepter de briser la compatibilité ascendante, soit complètement, soit partiellement. Dans ce dernier cas, il serait possible d’apporter un support des interfaces tierces par le biais d’une forme d’émulation, en s’assurant que les fonctionnalités soient couvertes exhaustivement.

Les objectifs du projet de système d’exploitation sont de plusieurs ordres. Tout d’abord de fournir un système d’exploitation propriétaire complet, permettant l’exploitation de toutes les fonctionnalités des produits présents (comme le géo-traceur) et futurs, ceci de façon la plus simple possible.

Architecture modulaire

Quel que soit l’appareil, que ce soit un capteur, une passerelle, un routeur, un concentrateur, un calculateur, un superviseur, un simple modem, etc, l’architecture matérielle et logicielle peut être modélisée suivant sept différentes couches :

la couche physique électronique

la couche logicielle d’abstraction de l’électronique

les drivers de périphérique

les librairies de fonctions de traitement

un ordonnanceur de taches (kernel)

des taches et des librairies d’usages

l’application métier principale

Les couches de 1 à 6 sont les plus délicates à développer et font appel à de l’expertise électronique et logicielle. C’est le contenu de ces couches qui forment le système d’exploitation que j’ai conçu. La couche 6 et surtout les librairies d’usages sont actuellement très pauvres sur le marché et sont souvent reportées dans la couche 7 qui correspond à l’application métier du fournisseur d’IoT adapté à son cas d’usage.

Points de différentiation

Les points forts de notre système d’exploitation pour nos produits seront de permettre au développeur d’applications :

de ne se préoccuper que de son application métier (couche 7)

de s’appuyer sur un langage de programmation courant et maîtrisé (C)

de pouvoir se connecter à une/plusieurs plateformes sécurisées distantes (cloud) du marché

d’être interopérable et portable sur nos produits pour faire rapidement des POC

d’avoir son dimensionnement ajustable et adapté aux ressources matérielles disponibles

d’être robuste en termes de sûreté de fonctionnement et de cybersécurité

d’être facile à mettre en œuvre

d’être configurable par une IHM simple d’utilisation

d’avoir une version « Safe and Secure » pour les applications industrielles « 4.0 » exigeantes en termes de sécurité et sûreté de fonctionnement certifié

Le logiciel doit assurer le fonctionnement du géo-traceur de façon fiable, pérenne, économe en énergie, et sécurisé. En effet, l'accès au géo-traceur doit pouvoir être détecté, éventuellement communiqué à distance et permettre de passer le fonctionnement en mode dégradé afin de prévenir d'une intrusion.

Sécurité logicielle

Le système d’exploitation doit aussi être conçu de façon sécuritaire SID afin d’être mis en œuvre à terme sur des produits pouvant être certifiés d’un point de vue sûreté de fonctionnement de niveau SIL2 et SIL3, par exemple pour des applications robotiques. Les méthodologies utilisées sur ce projet sont basées sur :

cycle en V (respecté à 100%)

documentation exhaustive (Doxygen)

programmation défensive (test unitaire, intégration, régression)

normes de codage (MISRA)

règles de nommage

contrôle prédictif des ressources matérielles

tolérance de pannes

pas de code open-source

Les communications doivent aussi bénéficier d'une attention particulière car le géo-traceur peut donc révéler la position et/ou l'état d'un bien auquel il est attaché. Autant les données transmises doivent être chiffrées, autant l'accès aux paramètres du logiciel doit être sécurisé par des droits d'accès.

Architecture spécifique du système d’exploitation

Le développement du système d’exploitation s’inscrit dans une démarche de programmation différente que celle traditionnellement employée depuis plus d’un demi-siècle, ceci afin d’anticiper et de répondre aux nouveaux besoins et usages de l’informatique contemporaine. Pour cela, de nouvelles règles de programmation doivent être synthétisées et imposées lors de la programmation, permettant de résoudre les problématiques afférentes à l’évolution des besoins et usages, et ainsi lever les limitations traditionnelles.

Architecture de base du système d’exploitation

Le choix de l’architecture est un point essentiel et incontournable, car il détermine la philosophie et le fonctionnement de notre solution. Il est donc impératif de faire un choix judicieux parmi les architectures existantes. Voici schématiquement les différentes architectures de système d’exploitation :

Exo Kernel (XOmB) Kernel Application Librairie Librairie Librairie Hybrid Kernel (Egos) Kernel Application Serveur Monolithic Kernel (Linux) Monolithic Kernel Application Micro Kernel (Minix) IPC (Inter-Process Communication) Micro Kernel Application Serveur Dessin 2: Comparaison de différentes architecture de système d'exploitation Le domaine de l’embarqué s’accommode en général mal du modèle « monolithique », à moins que l’on dispose du code source du système d’exploitation pour y intégrer l’application. En effet, l’intrication de l’application et du système d’exploitation sous-jacent est très forte et amène un niveau d’interdépendance très élevé.

Le modèle « micro-kernel » est bien plus prometteur car permet l’isolation des processus afin d’en assurer une certaine indépendance en cas de conflits logiciels. Néanmoins afin d’être effectif, cela requière des ressources matérielles spécifiques pour permettre la protection des accès aux blocs mémoire indépendants. Une protection mémoire est fournie par le système d’exploitation suivant la disponibilité de la fonction MPU ou MMU dans le microcontrôleur utilisé, dans le but d’assurer la séparation des processus.

Un troisième modèle marginal est « l’exo-kernel » qui permet aux applications un accès non restreint aux ressources matérielles et logicielles, le noyau étant relégué au rang de simple ordonnanceur, sans grande capacité d’arbitration. C’est efficace, mais très permissif et requière une grande maîtrise de l’ensemble du système.

Le choix retenu est un modèle « hybride » micro/exo-kernel afin d’assurer une séparation des services, la gestion des ressources, des routines utilitaires et de fournir les services aux applications par le biais de processus interface isolés du noyau pour pouvoir garantir une tolérance aux pannes accrue.

Création d’une application sans librairie

Dans un développement traditionnel, une librairie binaire est fournie avec des points d’entrées listés dans des fichiers d’entête. Cependant, dans la méthodologie employée, c’est-à-dire lorsque le produit est déjà équipé d’un système d’exploitation, les adresses de ces points d’entrées sont inconnues de l’application pendant l’édition des liens. Il faut donc trouver une solution permettant au développeur de lier son application avec les librairies de l’OS tout en répondant aux contraintes propres à notre système d’exploitation et du format des points d’entrées que l’on fournit.

Pour exemple, dans un cas traditionnel, une librairie est fournie, ses fonctions extraites et additionnées des fonctions utilisateur lors de l’édition des liens (« linkage ») pour composer le fichier binaire final. Cette méthode pose néanmoins le problème de la gestion de version de la librairie et des fichiers d’entête idoines.

Librairie Fct1() Fct2() Fct3() Binaire Usr1() Fct3() main() Mémoire Usr1() Fct3() main() Programme Usr1() main() { Usr1() ; Fct3() ; } Dessin 3: Étapes de création traditionnelle d'une application embarquée Or une contrainte de l’architecture voulue pour le système d’exploitation est de fournir des cartes cibles hétéroclites, d’architecture et de capacités différentes, le système d’exploitation déjà installé et donc non fournit ni sous forme de code source, ni sous forme binaire par le biais d’une librairie accompagnée de fichiers d’entête.

En effet, en général le moyen de relier l’exécutable compilé aux bibliothèques binaires fournies s’effectue par le biais d’une relocation sélective grâce à la fourniture d’une table de symboles dans la bibliothèque, permettant d’identifier chaque fonction et d’y faire un lien / appel direct. Ce n’est cependant pas l’approche retenue. Cela permet donc de garantir la sécurité du système d’exploitation par un niveau d’indirection supplémentaire qui n’est pas accessible et donc pas modifiable directement. Un autre avantage est de simplifier le processus de développement logiciel, tout en le sécurisant par la non fourniture du binaire pouvant être rétro-analysé.

Particularité du système d’exploitation, les librairies considérées comme standard, comme la LIBC, ne sont pas présentes. Il faut utiliser leurs équivalents mis à disposition à travers l’interface de programmation proposée. Néanmoins des macros de substitutions compatibles LIBC et POSIX sont fournies afin de faciliter le portage d’anciens logiciels. Vu que le système d’exploitation doit être « tout intégré », la liaison avec l’application doit s’effectuer dynamiquement. Dans le cas du présent projet, celui-ci dispose de l’ensemble des fonctions compilées en « statique » et disponibles à n’importe quel moment, que le programme utilisateur y fasse appel ou non.

Mémoire OS Fct1() Fct2() Fct3() Programme Usr1() main() { Usr1() ; Fct3() ; } Binaire Usr1() main() Mémoire OS Fct1() Fct2() Fct3() USER Usr1() main() Dessin 4: Étapes de création d'une application avec système d'exploitation embarqué Le système d’exploitation ne permet cependant pas le chargement dynamique d’une application. L’application est programmée en mémoire « flash » soit à l’aide d’un outil de développement, soit par mise à jour à distance. Il n’y a qu’une seule application exécutée à un instant donné, néanmoins celle-ci peut créer d’autres processus en fonction du besoin.

Ainsi cette approche permet aussi bien de fournir le système d’exploitation dans une partition dédiée, séparée de l’application utilisateur, que de fournir dynamiquement une interface vers les fonctions disponibles. Cela permet notamment de maîtriser l’empreinte mémoire globale du système par la factorisation du code redondant.

Paramètres des fonctions par structure

Comme nous l’avons vu, l’aboutissement de la réflexion sur la fourniture de la liste des fonctions par point d’entrée unique résout une partie des problèmes liés à leur appel par une application. Mais il faut maintenant déterminer le format des paramètres fournis à ces fonctions afin de garantir une sûreté de fonctionnement.

Une fonction dispose ou non d’un format de retour ainsi que d’une liste typée d’un ou plusieurs paramètres, ou aucun. En général les paramètres sont placés dans les registres de données du microcontrôleur et lorsque la fonction est appelée, elle retrouve les paramètres nécessaires prêts à être exploités.

Si cette approche est performante d’un point de vue temps d’exécution et occupation mémoire, elle ne permet cependant pas une encapsulation des données dans une trame isolée qui puisse être éventuellement sauvegardée, voire émise à travers un réseau pour une exécution distante dans le cas d’un système distribué.

Le modèle de programmation utilisé est le standard « C11 » qui permet notamment d’accéder individuellement à chaque élément d’une structure de donnée par son nom. Il est donc possible de pré-initialiser une structure et de sur-définir de façon complémentaire les éléments réellement nécessaires à une fonction.

Ainsi, par cette méthode, il est possible de simuler un fonctionnement du C++ qui permet d’avoir des paramètres par défaut sans multiplier les prototypes de fonction en déclinant le nom par l’arité (le nombre de paramètres) de celles-ci. Il faut cependant s‘assurer de l’initialisation par défaut de tous les paramètres disponibles pour éviter des valeurs incohérentes.

Avant : Après : void Fct(u8 flag, u32 data, time_t time); typedef struct{ u8 flag; u32 data; time_t time;} api; void (Fct)(api sApi); #define Fct(…) (Fct)((api) { .flag = 0, ##__VA_ARGS__ }) Fct(0, 0xFF, 17456) ; Fct( .data = 0xFF, .time = 17456 ); Dessin 5: Restructuration des paramètres d'une fonction Par ce biais, il est aussi possible de stocker une structure et de l’envoyer directement à une fonction. Cela simplifie aussi la transmission de paramètres sous forme de message, puisque déjà stockés dans une structure. Dans le cas de la mise au point, on peut ainsi récupérer facilement les paramètres par « streaming » de ces données.

Tableau de pointeurs de fonction

Le problème principal dans la communication des fonctions disponibles au sein du système d’exploitation est la méthodologie employée à présenter l’ensemble des points d’entrée de la façon la plus concise mais néanmoins exhaustive, tout en permettant une certaine flexibilité pour assurer la sécurité du système.

La méthodologie retenue est de fournir à chaque processus démarré une liste de tableaux de pointeurs de fonction qui pourra ensuite être exploitée. Les avantages sont nombreux, comme par exemple de pouvoir disposer directement des noms de fonction ainsi que leur arborescence depuis l’éditeur de code.

Mémoire OS API Fct1() Fct2() Fct3() Fct1() Fct2() Fct3() Fct1’() Fct3’() Programme Usr1() main() { Usr1() ; Fct3() ; } Mémoire OS API Fct1() Fct2() Fct3() Fct1() Fct2() Fct3() Fct1’() Fct3’() USER Usr1() main() Binaire Usr1() main() Dessin 6: Fonctionnement d'une interface dynamique par tableaux de pointeurs

Un autre avantage est de pouvoir effectuer une substitution à la volée de certaines fonctions par leur équivalent matériel, suivant leur disponibilité sur la cible, ou d’interdire l’accès à certaines fonctionnalités suivant le niveau d’autorisation en redirigeant les appels vers des fonctions vides sans effet de bord.

Un inconvénient est cependant une latence légèrement plus importante dans l’exécution d’une fonction, puisqu’il faut parcourir une arborescence avant d’en trouver l’adresse du fait des niveaux d’indirection. Il est néanmoins possible pour l’application d’appeler les fonctions directement une fois leurs adresses connues.

Processus et threads

Une application est un processus indépendant qui peut cohabiter avec d’autres processus. Un processus peut démarrer un autre processus indépendant, mais aussi démarrer des threads qui sont des micro-processus dépendant du processus parent et aux fonctionnalités limitées. Une certaine hiérarchie s’établit donc.

Mémoire Processus 1 Thread 1 Thread x void main() Processus 2 Thread 1 Thread y void main() Mémoire Processus 1 Thread 1 void main() Dessin 7: Hiérarchie de création et d'inter-dépendance entre les processus et les threads A la fin d’un processus, sa mémoire et les threads associés sont libérés puis rendus au système d’exploitation pour recyclage afin de pouvoir servir à nouveau au sein d’un autre processus. La fin d’un processus ou d’un thread peut survenir de façon inopinée en cas d’erreur d’exécution, il faut donc anticiper et maîtriser les occurrences, et ceci afin de garantir une certaine résilience à la panne.

Pas de variables globales

L’utilisation de variables globales pose un problème d’organisation et de partage de ressources, notamment dans le cas d’accès concurrentiels par des processus distincts. Dans le cadre d’un système d’exploitation mettant en œuvre différents processus fonctionnant en parallèle. La solution est d’échanger des messages, aussi bien pour partager des informations que pour les synchroniser.

En effet, chaque message est en soit un bloc mémoire partagé entre différents processus et peut disposer d’une durée de vie aussi longue que le processus parent. Dans le cas d’un échange de message, si celui-ci reste dans le même contexte mémoire, le bloc change juste de propriétaire et donc d’autorisation d’accès.

Mémoire void main() Variable l1 Fct1() Variable l1 Variable g1 Mémoire allouée Mémoire allouée Variable g2 Variable gx Mémoire Processus 1 void main() Chest Mémoire allouée Thread x Variable Msg Dessin 8: Organisation de la mémoire d’un processus et de ses threads

Communication entre processus

Chaque processus ou thread dispose d’un moyen de communication qui lui permet d’échanger avec d’autres processus ou avec ses propres threads. En revanche un thread ne peut communiquer qu’avec son processus parent car il lui effectue des tâches dédiées spécifiques. Cela permet d’isoler les contextes d’exécution.

Mémoire Processus 1 Thread 1 Thread x void main() Processus 2 Thread 1 Thread y void main() Dessin 9: Communication "familiale" entre les processus et les threads La communication s’effectue suivant le schéma serveur / client avec une boucle de lecture des messages en attente et un traitement sélectif en fonction de leur contenu. Une période d’échéance peut être mise en place pour signaler au système d’exploitation, voire au processus, d’une durée de traitement du message anormale.

Allocation mémoire obligatoire

Bien qu’il soit considéré comme n’étant pas sécuritaire d’utiliser un allocateur mémoire (fuites possibles, délais d’allocation en dehors des contraintes temps réel), il est cependant impératif de proposer une gestion de partage des ressources matérielles d’un microcontrôleur, celles-ci étant limitées. Pour cela, il sera nécessaire de réclamer la mémoire à un allocateur dédié afin de simplifier le partage des ressources matérielles et d’en garantir leur unicité d’utilisation.

Mémoire Processus 1 void main() Allocateur Processus 1 Chest Processus 2 Allocation Processus 2 void main() Dessin 10: Organisation de la mémoire du système d'exploitation embarqué Cette approche dynamique permet notamment de suivre plus facilement l’évolution des besoins et de détecter quel processus réclame trop de mémoire. Quand un processus s’arrête, sa mémoire est rendue au système. De plus cela autorise aussi des scénarios d’usage plus variés et moins restrictifs en matière d’usage mémoire.

Un système de collecte et de défragmentation automatique permet de s’assurer une certaine cohérence dans la gestion de la mémoire, cela essentiellement afin de limiter la portée des blocs orphelins ou appartenant à un même processus. L’impact en performance est négligeable et est à comparer en contrepartie à la robustesse apportée.

Travaux annexes effectués et organisation de l’équipe de développement

Une bonne partie de la charge de travail repose dans un premier temps sur l’analyse du marché des systèmes d’exploitation existants, de leurs architectures et de leurs contenus réels par rapport à ce qui est souvent déclaré sur les sites Internet. Ensuite j’ai donc réfléchi à une architecture en rupture avec l’existant pour assurer mes objectifs. En matière de système d’exploitation embarqué, il en existe déjà quelques-uns, aussi bien des propriétaires que des libres, avec ou sans code source disponible. Néanmoins leurs fonctionnalités sont en général limitées au facteur « moins disant » des architectures et microcontrôleurs qu’ils supportent, avec quelques exceptions.

Pour démarrer, j’ai effectué une phase de recherche afin d’établir une liste de fonctionnalités attendues pour le système d’exploitation envisagé, dans un premier temps en se basant sur un système embarqué concret répondant aux besoins que nous souhaitons couvrir, en premier lieu le projet de géo-traceur, pour valider la pertinence du système d’exploitation.

Illustration 2: Mindmap des besoins fonctionnels du géo-traceur et du système d'exploitation

En parallèle, j’ai pris en main les outils du fabricant du microcontrôleur STM32L476 du géo-traceur eg1114 pour analyser les codes sources très bas niveau fournis. En effet, le fabriquant fournit un outil nommé STMCubeMX qui permet de générer un code source de base en fonction de la définition des broches du microcontrôleur suivant leurs emplois au sein du projet eg1114. Ce code source sert de fondation pour un démarrage rapide de prototype, couplé à l’usage de la bibliothèque HAL (à ne pas confondre avec la couche HAL à laquelle la bibliothèque correspond), elle aussi fournie par le fabriquant.

Illustration 3: Outil d'affectation des fonctions aux broches du microcontrôleur

Or, après recherche et développement, il s’avère que si les outils et bibliothèques fournies permettent une mise en œuvre rapide d’un prototype élémentaire, il n’est en revanche pas possible d’utiliser les éléments fournis par le fabriquant du fait de leur inadéquation vis-à-vis de l’ambition visée et la complexité idoine du système d’exploitation nécessaire.

C’est aussi sans compter les nombreux problèmes liés à ces outils, pourtant fournis comme support professionnel, d’apparence raffinée, mais au fonctionnement incertain. Nous avons, par exemple, perdu des codes sources suite à l’écrasement de ceux-ci par l’outil MX, et à des comportements erratiques suite à l’usage de la bibliothèque HAL. Je décide donc de programmer le système d’exploitation sans apport extérieur, entièrement constitué de code source vérifié, testé et certifiable.

La conception et le développement du système d’exploitation requièrent l’organisation et la mise en place d’un environnement de développement ainsi que de structures de données spécialisées et dédiées au métier de la société Ercogener. La première étape est requise pour permettre le développement du système d’exploitation, la seconde pour son fonctionnement.

Création d’une platine de développements

Un choix aura été opéré avant mon arrivée au sein de la société Ercogener de faire confiance dans les nouveaux produits et outils mis en œuvre. Un routage « définitif » de la carte a été fait en révision « A » mais ne permettant pas de capturer certains signaux s’avérant défaillant. Aussi je pris l’initiative de monter une carte en révision « B » sur un support et de faire ressortir le maximum de signaux utiles en vue de pouvoir utiliser des oscilloscopes et autres sondes logiques afin d’effectuer une qualification fonctionnelle de chaque élément de façon unitaire.

Illustration 4: Platine personnelle de développement du géo-traceur (eg1114)

Architecture du système d’exploitation

Au regard des éléments précédents et recherches en cours, il apparaît donc assez clairement que le chemin à suivre est celui d’un système d’exploitation métier « tout intégré » qui propose toutes les bibliothèques logicielles nécessaires au fonctionnement d’un futur produit faisant appel au projet de système d’exploitation, identifié par le nom EGOS.

Pour commencer il faut donc analyser les champs d'action du système d’exploitation qui ont une emprise sur l'interface entre le domaine logiciel et le domaine matériel, aussi bien interne qu’externe. Cette classification se caractérise par un schéma transitionnel entre les acquisitions et les communications afin d’en comprendre les flux de données nécessaires.

Je cherche donc en premier lieu à classer les domaines purement fonctionnels, des domaines logistiques et des domaines utilitaires. En fonction du bilan des fonctionnalités attendues devant être couvertes, réalisé précédemment, je cherche avant tout à obtenir une organisation claire et cohérente, voire évidente, sans redondance.

Illustration 5: Premières réflexions sur l'organisation idéale du système d'exploitation Le schéma précédent couvre les besoins du géo-traceur et sert donc de référence architecturale globale pour la définition des couches logicielles mises en œuvre au sein du système d’exploitation. Celles-ci se doivent d'être généralistes mais d'assurer néanmoins une séparation du niveau d'abstraction à l'image des couches OSI.

En effet, le but premier d’un système d’exploitation est de mettre à disposition les ressources matérielles au service du logiciel en effectuant une certaine forme d’abstraction, de préférence standardisée et transversale, afin de permettre un portage plus simple d’un système d’exploitation à un autre. Il existe à cet effet différents standards d’abstraction.

Il existe de plus différents modèles d’interconnexion entre les couches applicatives et les couches matérielles, mais certains modèles sont plus spécifiquement adaptés, d’autres plus génériques et donc portables. Le système d’exploitation est donc basé sur le modèle OSI standard du fait de son orientation dans le domaine de la communication.

Illustration 6: Modèle OSI des couches de communication dans le domaine des réseaux C'est à ce regard que l'architecture des couches logicielles est définie afin de séparer les données applicatives de haut niveau de leur format de stockage et/ou transport, l'encapsulation s'effectuant de façon générique à particulière, à fur et à mesure que la donnée transite entre les couches. On peut donc désormais affiner le découpage global de façon plus spécifique.

J’ai donc cherché à affiner la classification précédente des fonctionnalités attendues en groupes transitionnels et fonctionnels, séparés des groupes purement logistiques et utilitaires qui représentent en réalité les éléments structurels et les services mis à disposition par le système d’exploitation, cela afin de caractériser chaque groupe.

Illustration 7: Réflexions additionnelles sur l'organisation du système d'exploitation Le modèle choisi pour l’architecture du système d’exploitation repose sur une expérience métier forte au sein de la société Ercogener concernant les applications communicantes et de type supervision / contrôle-commande. Afin de capitaliser cet acquis de la façon la plus cohérente possible, voici le découpage final opéré.

EGOS + BSP USER OSS MCU HAL DRV FUN HUB APP CFG INC OBJ UTL LNG TSK TST 1 2 3 6 7 4 5 7 6 5 4 3 2 1 Dessin 11: Organisation finale du système d'exploitation Ainsi la partie utilisateur « USER » applicative « APP » se retrouve en bleu en haut au centre du schéma, tandis que le bas niveau « MCU » gris représente la couche physique du matériel qui doit être progressivement abstrait par les différentes couches intermédiaires. Des services transversaux (à droite) aux couches permettent un partage des ressources logicielles.

Définition d’une interface de programmation hiérarchique

Suivant les recherches opérées précédemment, les différentes fonctions sont organisées par un appel hiérarchique permettant de les classer sous forme de bibliothèques thématiques dédiées. Le rôle de chaque couche et des fonctions associées permet de trouver facilement l’utilité de chacune d’elle.

Couche	Explication
INC	Fichiers d’entête de définition des interfaces de programmation publique (diffusable).
APP	Couche applicative contient l’ensemble des applications constructeur et utilisateur pouvant être exécutées nativement par la cible, par exemple le projet 1114.
HUB	Mise à disposition des informations thématiques. Ces données sont classées sous forme de tableaux temporels de durée limitée. Il est possible de lire immédiatement la dernière valeur courante de chaque tableau, si celle-ci n’est pas jugée obsolète. Dans le cas contraire, une lecture asynchrone est mise en place afin de récupérer l’information qui sera ensuite retournée avec stockage dans le tableau.
DRV	Les pilotes des périphériques externes au microcontrôleur, utilisable à travers des interfaces génériques en fonction du domaine technologique dédié. Par exemple un pilote « Wifi » avec interface générique des fonctions « Wifi », quel que soit le composant choisit.
HAL	Couche d’abstraction de moyen niveau permettant d’accéder directement aux interfaces de communication et de gestion de l’alimentation du microcontrôleur. Les périphériques internes de celui-ci ne sont pas disponibles publiquement à la programmation. Une arbitration des accès aux ports de communication à lieu.
MCU	Ensemble des pilotes du cœur du microcontrôleur et de ses périphériques. Disponible uniquement pour l’écriture du noyau du système d’exploitation.
CFG	Ensemble de fichiers de configuration utilisés par la compilation du système d’exploitation en fonction d’une cible choisie.
OSS	Compose les services de base du système d’exploitation. Les différentes fonctions présentent ne sont utilisées que dans la gestion des ressources élémentaires des processus, c’est-à-dire séquencement, communication, gestion de la mémoire et gestion de l’état.
LNG	La couche de langage interprété contient un ou plusieurs langages de script qui ont accès à un ensemble restreint de données et de fonctionnalités du système d’exploitation, mais permet de se consacrer à l’écriture de cas d’usages simplifiés ayant une « business logic » limitée. Ces langages permettent en outre une programmation à distance par l’envoie de scripts par divers moyens.
TSK	La couche des tâches met à disposition des briques applicatives élémentaires pouvant être exécutées de façon programmée et/ou périodique. Ces tâches servent en général à réaliser des lectures d’informations, leurs émissions voire l’exécution de scripts.
TST	Système applicatif d’écriture de grappes de tests pouvant être exécutés automatiquement.
UTL	Librairie de fonctions utilitaires qui regroupe les principaux domaines d’algorithmes de gestion de données, qu’ils soient numériques, textuels ou encore temporels. Les fonctions présentes dans cette couche logicielle sont considérées comme étant « thread safe » et ne font pas, en général, appel à des ressources (fichier, mémoire, …).
OBJ	Structures de données d’usage généraliste comme des listes, chaînes, tableaux, arbres. Permet d’éviter d’avoir régulièrement recours à des bibliothèques externes offrant ce type de services, économisant de fait la mémoire.
FSM	Gestionnaire de machines à états combinatoires et séquentiels
FUN	Ensemble de fonctions préprocesseurs permettant de générer du code algorithmique au moment de la compilation. Permet de simplifier et factoriser le code source.

Tableau 1: Explications des couches du système d'exploitation

Création d’une librairie de fonctions utilitaires

La création de la librairie se fait en analysant la couverture exhaustive des besoins algorithmiques nécessaires pour les applications métier aussi bien de la société Ercogener que des projets clients passés, présents et futurs ; besoins n’étant pas couverts par les systèmes d’exploitation et/ou les librairies analysés précédemment.

Après recherche croisée entre les différents services, les besoins identifiés sont les suivants :

gestion de l’état du microcontrôleur

gestion de l’endormissement et du réveil

gestion du temps

allocation mémoire

gestion des processus

communication des processus

chaînes de caractères

communication avec les composants

J’ai donc réparti ces différents besoins dans les différentes couches en prenant soins de s’assurer de la pertinence, tout en gardant à l’esprit la fonctionnalité générale attendue de chaque couche. Chacune sera ensuite structurée indépendamment pour mettre à disposition des fonctionnalités plus détaillées.

Organisation des répertoires et fichiers

Pour des raisons de compréhension et de logique, les différentes couches logicielles vues précédemment sont reproduites sous forme de répertoires, qui contiennent eux-mêmes les différentes fonctionnalités de chaque couche dans des fichiers au nom approprié. Il faut donc chercher une méthodologie cohérente et pérenne.

La règle de l’art veut que les fonctions d’une couche s’adressent uniquement à celles de la couche courante voire celles des couches immédiatement inférieures. A chaque étage, des fonctions de présentation de données proposent, en suivant le modèle OSI, des interfaces abstractions de haut niveau. L’arborescence est la suivante :

Arborescence	Explication
1114_Traceur	Répertoire racine du projet, à renommer si besoin
BUILD	Répertoire généré par ‘Makeit’
1114_Traceur_USER	Répertoire généré par ‘Makeit’, contient les binaires
COMMON
makefiles
makeit.bat	Le programme ‘Makeit’
DOC
EG_Traceur_1114_ARL_000_FR.doc	Documentation architecturale préliminaire
SOURCE	Répertoire de l’arborescence des sources
Inc	Répertoire d’inclusion des fichiers d’entête (librairie ou l’os)
egos_app
app_main.c	Application principale
app_main.h
egos_app.h
egos_hal	Répertoire de l’interface matérielle abstraite
egos_hal.h
egos_oss	Répertoire du système d’exploitation
egos_oss.h
egos.h	Inclusion récursive des fichiers d’entête
egos_error.h	Définition des codes d’erreur
egos_types.h	Définition des types de données
SW4STM32	Répertoire du projet lié au compilateur SW4STM32
1114_Traceur_User
Debug	Répertoire généré par Eclipse
makefiles	Répertoire des projets de compilation par ‘Makeit’
user_rebuild.bat	Programme de recompilation générale
Release	Répertoire généré par Eclipse
STM32L476RCTx.ld	Fichier de définition du mapping mémoire (mode USER)
.project	Fichier de projet Eclipse
.cproject	Fichier de projet Eclipse
delete_all_backup_files.bat	Programme pour supprimer tous les fichiers *.bak
delete_all_builds.bat	Programme pour supprimer le répertoire BUILD
delete_all_makeit_logs.bat	Programme pour supprimer les logs de ‘Makeit’

Tableau 2: Arborescence des répertoires et fichiers composants le système d'exploitation

Un autre problème concerne néanmoins la séparation des fichiers livrables publiquement des fichiers propriétaires. En général les fichiers d’entête « .h » décrivent les structures de données et les fonctions disponibles dans une bibliothèque. Or l’architecture sélectionnée ne permet pas une transparence complète de tous les fichiers d’entête.

Ainsi, le répertoire « Inc » contient uniquement les fichiers d’entête publique tandis que le répertoire « Src » contient aussi bien des fichiers source « .c » que des fichiers d’entête privés. Ce dernier répertoire peut aussi contenir des fichiers d’entête qui seront rendus public dans une version ultérieure, et ceci sans perturber la compilation du système d’exploitation.

Inc (public)	Src (privé)
egos.h	egos_priv.h
egos_utl	egos_utl
egos_utl.h	egos_utl_num_type_fix.h (privé pour l’instant)
egos_utl_num.h	utl.h
egos_utl_num_type.h	utl_num.h
egos_utl_num_type_bit.h	utl_num_type.h
utl_num_type_bit.c
utl_num_type_bit.h
utl_num_type_fix.c
utl_num_type_fix.h

Tableau 3: Système d'inclusion croisé entre les définitions publiques et privées

Chaque niveau de « Inc » énumère ses enfants, du plus générique au plus particulier, tandis que chaque sous-niveau de « Src » remonte vers le parent commun en pointant à chaque étape le fichier d’entête public de « Inc ». Cela permet d’avoir un parcours exhaustif des définitions et déclarations de chaque couche logicielle.

Environnement de développement

La mise en place d’un environnement de développement cohérent et adapté à la création d’un système d’exploitation nécessite de réunir un éditeur, un débogueur et tout un ensemble de logiciels orientés vers la gestion de l’historique du code source rédigé, ainsi que sa revue par des pairs pour en assurer la traçabilité. Avoir un environnement de développement commun à l’ensemble des projets, autre que ceux à base d’EGM ou de LINUX, apporte de nombreux avantages :

un seul outil pour l’ensemble du bureau d’étude Ercogener

meilleure maitrise au fil du temps

un seul environnement d’installé sur le PC plutôt qu’un par fournisseur

partage des expériences au sein du BE

rapidité de mise en œuvre et de démarrage d’un projet

Pour cela il faut réunir un ensemble de logiciels afin de constituer un écosystème propice au développement du système d’exploitation. Certains de ces logiciels sont à choisir en fonction du microcontrôleur sélectionné, d’autres sont spécifique au langage de programmation utilisé, d’autres enfin sont plus génériques et permettent l’organisation du travail.

Une partie conséquente de la recherche concernant cette partie a consisté à trouver un éditeur de code source disposant du support le plus exhaustif en matière de microcontrôleur, ainsi que d’un système de mise au point intégré. Le fabriquant ST Microélectronique participe à la maintenance communautaire d’un tel ensemble, appelé OpenSTM32 / AC6.

Or il s’avère que l’éditeur se base sur un projet de plus grande envergure, le projet Eclipse et le module de support C/C++ nommé CDT. Si la version officielle d’Eclipse CDT fonctionne en général correctement, la version communautaire est instable et difficile à configurer, notamment en matière de gestion des fichiers avec des liens virtuels.

En effet, soit nous disposons d’une vue sur le répertoire de travail, un peu à l’image de l’explorateur de fichier, et chaque ajout, modification ou effacement de fichier dans le répertoire de travail est reflété dans le projet, avec les risques que cela sous entendant si nous voulons écarter temporairement un fichier ou un répertoire spécifique.

L’utilisation de liens virtuels permet de composer un projet avec des fichiers se situant à des endroits différents sur le disque dur ou le réseau, mais apparaissent néanmoins dans le projet comme s’ils étaient locaux et faisant intégralement parti du projet. Cela permet donc de partager des librairies communes à plusieurs projets.

Cependant il s’avère que cela pose des problèmes de perception pour certains programmeurs du fait de la décorrélation entre l’unité fichier sur disque et celui disponible dans le projet. Mais il s’est aussi avéré que malgré le fait que l’éditeur Eclipse propose cette fonctionnalité, l’éditeur lui-même, ai du mal à gérer correctement ces liens virtuels.

Par exemple, bien que le projet semble correctement paramétré, les fichiers disponibles aux endroits physiques spécifiés, sur disque dur ou réseau, qu’ils apparaissent dans l’arborescence virtuelle du projet, probablement différente de celle physique, l’éditeur fournie une liste de fichiers erronée qui fait échouer la compilation.

Illustration 8: Éditeur de code source et débogueur croisé intégré

Après recherche d’éditeurs de code source concurrents, il existe bien quelques alternatives payantes comme TrueSTUDIO ou l’usage de Visual Studio avec le plugiciel VisualGDB, mais ils n’ont pas encore été considérés du fait du budget alloué actuellement au projet. C’est pourquoi une autre solution est envisagée par l’usage de scripts externes.

Après analyse du fonctionnement du processus de compilation, un préprocesseur de commande a été conçu à cet usage. Il se pilote à l’aide de fichiers texte décrivant les étapes à accomplir, les fichiers à lister, ceux à exclure, les programmes à exécuter, le format de la ligne de commande et les arguments à utiliser.

Proprement dit, le préprocesseur de commande lit un fichier de configuration désigné, résout les inclusions de fichier et remplace les variables statiques jusqu’à trois niveaux de profondeur, puis exécute les différentes étapes de la séquence sélectionnée en listant les fichiers requis et en composant la chaîne d’arguments.

L’avantage du préprocesseur de commande sur d’autres systèmes de compilation est, qu’il est autonome, très simple à mettre en œuvre et surtout que son fonctionnement est intégralement reproductible, avec génération systématique de répertoires horodatés et de fichiers de logs. Cela permet de garantir la recompilation d’une version précédente à l’identique.

User_rebuild.bat makeit rebuild user user.txt makeit_path.txt makeit_map.txt makeit.bat rebuild user.sort.1 user.sort.3 GCC / LD SRC Dessin 12: Architecture du système personnel de compilation

Il est possible d’inclure, par le biais de la commande ‘INCLUDE=fichier’ un ‘fichier’ de configuration générique dans un autre plus spécifique qui apportera juste à la suite des paramètres d’étape plus spécifiques. Par ce biais il est possible de créer des fichiers de configuration arborescent en incluant des fichiers de chemin et de nom de projet communs, puis en spécifiant le type de compilation ‘debug’ ou ‘release’.

makeit_path.txt makeit_project_name.txt makeit_compile.txt makeit_link.txt debug.txt CPP_DEF=_DEBUG release.txt CPP_DEF=_RELEASE debug_rebuild.bat makeit rebuild debug release_rebuild.bat makeit rebuild release Dessin 13: Utilisation de fichiers inclus pour réaliser différentes versions de compilation

La modification des fichiers de configuration étant séparée, rien n’empêche d’avoir plusieurs branches en parallèle (par ex. ‘debug’ vs. ‘release’ vs. ‘test’) et de progresser par étape. L’avantage de ce système est de pouvoir garantir la reproductibilité et la stabilité de la compilation, les fichiers de configuration pouvant être sauvegardés dans un système de gestion de version, les journaux d’exécution générés pouvant eux aussi être sauvegardés et/ou comparés.

Le programme du préprocesseur de commande réclame seulement deux paramètres : la séquence à exécuter et le fichier d’étapes. C’est le contenu du fichier d’étapes, et éventuellement des fichiers supplémentaires inclus, qui formeront l’ensemble des commandes à exécuter, à l’image du projet de l’éditeur Eclipse.

L’utilisation d’un fichier batch préconfiguré, pour l’exécution d’une séquence appropriée, est conseillée, voire encouragée. Cela permet d’avoir de petits programmes à exécuter et qui vont effectuer les tâches courantes comme la compilation ou la programmation du fichier binaire généré.

Progrès accomplis et participants au projet

La création d’un système d’exploitation répondant aux nombreux requis s’avère très complexe du fait des objectifs ambitieux visés. Ainsi la progression est plus lente que prévue du fait des nombreux problèmes rencontrés et qu’il faut résoudre un-à-un, parfois avec l’abandon des recherches en cours et redirection vers une voie plus prometteuse.

En effet, si l’objectif du système d’exploitation est de s’affranchir d’une architecture traditionnelle vers une architecture plus modulaire, il faut néanmoins avoir à l’esprit de la maintenance et de la capacité d’évolution qui ne doit pas être limité à une technologie définie et existante au moment de sa conception, mais ouverte et flexible.

Le développement d’un système d’exploitation requière la participation de différentes compétences adaptées, d’un point de vue logiciel d’abord, mais aussi d’un point de vue matériel puisque le système d’exploitation repose sur l’exploitation d’un projet matériel qu’il doit animer et permettre le fonctionnement.

Mon rôle est essentiellement de coordonner toute la réalisation de l’OS et des tâches associées. Je pilote donc plusieurs ingénieurs logiciels mais aussi des stagiaires de l’IUT GEII de Tours pour des développements sur des points précis, en leur garantissant une certaine autonomie de réflexion et de réalisation.

Par ce biais on garantit que tout le monde puisse progresser, s’intéresser au projet et apporter sa pierre à l’édifice, tout en restant dans un cadre contrôlé par les spécifications et les cahiers des charges pour une maîtrise de l’avancée du projet. Pour l’aspect de la certification, on fait appel à un prestataire externe, Mr Thierry DELION.

Dessin 14: Organigramme de la société Ercogener La répartition des taches est la suivante :

Personne	Activité
Eric FONTES	veille, état de l’art sur les OS du marché, définition du besoin, coordination projet
Eric GUENEUGUES	recherche et mise à disposition de matériels SDK et BLE
Pascal BRUN	expertises interfaces bas niveau et communications
Mark REEVES	analyse solutions architectures à partir du retex EGM
Félix DE GRASSET	participation à l’analyse des OS existants
Pierre GALLIOT	analyse et codage d’une couche HAL expérimentale
Florian HALARY	expérimentation, codage HAL, développement cible
Benoit BOURGEOIS	participation à l’analyse du besoin fonctionnel afin de déterminer les couches
David KOCH	analyse solutions architecture et conception préliminaire de l’OS
Julien PEROCHON	chef de projet sur un autre projet utilisant l’OS
Jérôme GOMBARD	développeur et appui sur le support matériel de l’OS sur d’autres cibles
Jarno BOSCH	apprenti en alternance, appui sur l’outillage du développement de l’OS
Steven MARTIN	stagiaire IUT GEII Tours pour analyse filtrage Kalman sur position GPS
Anthonin JOSSET	stagiaire IUT GEII Tours pour analyse communication réseau LoRa
Thierry DELION	consultant indépendant en sécurité logicielle

Tableau 4: Personnes impliquées dans le développement du système d'exploitation

Ma participation s’inscrit donc un environnement complexe et multi-disciplinaire, impliquant de nombreuses réunions de coordination, que ce soit officielles réunissant plusieurs acteurs à un moment et lieu donné, ou plus officieuses au poste de chacun pour résoudre des problèmes ponctuels.

2011 / Safran-PSA / Gestion d’un plateau de prestation / Citroën DS5 Hybride

Safran Engineering Services, société du groupe Safran et filiale de Labinal, offre des services en ingénierie en haute technologie dans les domaines de l’aéronautique et du transport terrestre. Safran Engineering Services utilise les standards de qualité les plus élevés dans chacune de ses activités. Dans le cadre de la diversification de ses compétences, le secteur « Test et validation » inaugure son entrée dans le domaine automobile lors d’une coopération avec le groupe PSA avec l’ouverture d’un plateau de prestation en validation sur le site d’essai de Belchamp à Montbéliard, après une première expérience concluante au siège de Vélizy.

Contexte du recrutement et explications générales

J’ai été recruté par le biais d’une entreprise de « chasseurs de talents », la société ARealTI, afin de pourvoir à un besoin de pilotage de plateau de prestation de service pour le compte de la société PSA, diligenté par la société Safran Engineering Services. Cette dernière, basée à Montigny-le-Bretonneux et traditionnellement implémentée dans l’aéronautique, avait initié une ouverture vers le monde le l’automobile par un premier plateau de prestation au sein des locaux de PSA Vélizy. Or un nouveau plateau devait ouvrir au centre d’essai historique de Belchamp, à Montbéliard dans le Doubs.

Le site de Vélizy (le « Paquebot ») est le siège créatif et conceptuel de la marque. Le site de Montbéliard est le site de fabrication (« Sochaux »). Ce dernier assemble les différents éléments fournis par les équipementiers automobiles. Le site de Vélizy et le site de Montbéliard travaillent en symbiose. Malgré la différence de procédé de validation entre les deux sites, les méthodes générales sont identiques. Il est donc possible pour Safran de pouvoir partager la première expérience acquise d'un an en matière de validation afin de la transposer au nouveau site de Montbéliard.

Il s’est avéré que le délais de formation sur le site de Vélizy avait été réduit au minimum, c’est à dire deux semaines, soit l’intervalle entre mon embauche le 21 mars et l’ouverture du plateau proprement dit à Montbéliard le 4 avril suivant. Résidant encore sur la région de Limoges, la transition fut compliquée, aussi bien en terme de prise en main de la mission, de découverte du nouveau cadre et de mes collaborateurs déjà recrutés en amont depuis quelques mois. L’adaptation fut douloureuse du fait d’un ensemble de livrables à fournir suite à un manque de préparation initial.

Mon recrutement comme « chef de plateau » (cf. annexe page ) a eu plusieurs buts :

organiser et gérer l’équipes Safran sur le site de PSA Belchamp

faire interface avec le client PSA Belchamp

reporter les activités à Safran Montigny-le-Bretonneux

effectuer le développement et la maintenance d’un banc de test en Labview

effectuer des tests de validation fonctionnelle statiques et dynamiques sur véhicule

Aspect management

D’un point de vue organisationnel, je disposais d’une supervision à distance depuis Safran Montigny-le-Bretonneux par le biais de mon responsable Mr Stéphane BAUDIN. Sur site deux des collaborateurs référents m’apportaient leur soutien technique.

L'équipe des collaborateurs

Une équipe de 3 ingénieurs, 7 techniciens et un responsable sont dépêchés sur le site de Montbéliard afin de réaliser les tests, capitaliser l'expérience et les connaissances acquises, servir d'interface avec le client.

Site	Vélizy	Montbéliard
Directeur des essais	Mr BONHOURE Eric (PSA)
Chef de projet	Mr BAUDIN Stéphane
Responsable technique	Mr BARBIN Gaetan	Mr KOCH David
Ingénieurs	Mr BRUIN Michael Mr LECHEVIN Frederic	Mr CAROUX Loic Mr DJOUDI Samir Mr LE COURT Médéric
Techniciens	Mr DESJARDIN Fabien Mr DUHIL Germain Mr GROMY Kevin Mr JENDOUBI Samy Mr PILETTE Jerome Mr TELLAI Yohan	Mr ABDOU Mikidache Mr ARIELLI Jérémy Mr CADIOU Thomas Mr ETIENNE Alexandre Mr HENRY Gwenael Mr LETORT Jason Mr PERRUCHE Lucien

Tableau 5: Liste des collaborateurs Safran par site

Illustration 9: Équipe de prestation Safran à PSA Belchamp (Montbéliard)

Les ingénieurs avaient pour missions de rédiger des plans de tests que les techniciens avaient ensuite pour tâche de réaliser sur véhicule. Soit par le biais d’essais statiques dans un atelier, à l’arrêt ou sur cales, ou d’essais dynamiques, à l’extérieur de l’atelier ou sur la piste d’essai.

Le découpage d'une semaine typique était le suivant :

Lundi	Rappel de la semaine précédente, expliquer la mission. Répartir les tâches, répondre aux besoins divers.
Mardi	Validation et gestion. Rédaction des plans de test. Surveiller les états d'avancement des tests. Veille technologique, écoute du client.
Mercredi
Jeudi
Vendredi	En fin de matinée, récupérer les résultats des tests. Dans l'après-midi, clôture, relecture et validation des tests.

Certains essais peuvent se dérouler sur une demi semaine, d’autres sur deux, voire plus rarement trois semaines. La taille du rapport dépendant surtout du nombre de tests réalisés et des justificatifs apportés. Certains essais pouvaient de plus être réalisés en simultané sur les deux sites de Velizy et Belchamp afin de corroborer les méthodologies et pondérer les résultats.

Gestion humaine

Le facteur humain demande une part de diplomatie et de l'écoute. Si un matériel répond à la pyramide des couches OSI, un humain répond quand à lui à la pyramide de Maslow :

Illustration 10: La pyramide des besoins selon Maslow

D'abord, les attentes personnelles « AVOIR » des collaborateurs sont en général réalisées par le biais du salaire versé. Si le besoin de réalisation personnelle peut être comblée par un avancement ou une mutation, il faut pouvoir considérer cela en premier lieu afin de préserver les compétences en interne. Au cas échéant, l'aider au mieux dans sa démarche.

Ensuite, il s’agit de répondre aux attentes professionnelles « ETRE » de chacun, c’est à dire l’évolution et l’orientation de carrière, voire un intérêt plus focalisé sur un point précis. Si la polyvalence est une bonne chose, il reste essentiel qu'au moins une personne puisse répondre précisément à un problème spécifique.

Illustration 11: Recommandation managériale PSA

Enfin l'amélioration permanente des compétences de chacun, déjà pour lui même mais aussi pour qu'il puisse être plus efficace dans son travail. Soit pour combler les lacunes d'un autre collègue, voire pouvoir le remplacer le temps de son absence (maladie, formation, disponibilité, démission). Pour cela j’ai utilisé un système de feuille Excel répertoriant toutes les compétences requises dans chaque domaine, évaluant chaque collaborateur, permettant ensuite de répartir les tâches et planifier les formations.

0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 Domaine Bureautique Domaine Bureautique Excel Domaine Bureautique MS project Domaine Bureautique Access Domaine Gestion Utilisation Outil… Domaine Gestion Commandes B2B et… Domaine Sécurité / SMST Domaine Sécurité / SMST mise en… Domaine Sécurité / SMST… Domaine… Domaine… Domaine… Domaine… Domaine… Domaine Automobile Maitrise des… Domaine Automobile connaissance… Domaine Automobile Connaissance… Domaine Automobile Architecture… Domaine Méthodologies PSA SPP -… Domaine Méthodologies PSA SDF Domaine Méthodologies PSA DOCInfo Domaine Méthodologies PSA DEVIN+ Domaine Méthodologies IA2E matrice… Domaine Méthodologies IA2E DC Domaine Méthodologies IA2E PIV Connaissance , utilisation outils… Connaissance , utilisation outils… Connaissance , utilisation outils… Connaissance , utilisation outils… Connaissance , utilisation outils… Connaissance , utilisation outils… Divers Divers reglementations site de BP Domaine Métier Moyens de tests (… Domaine Métier Moyens de tests (… Domaine Métier Moyens de tests (… Domaine Métier Moyens de tests (… Outils Métier Moyens de tests Outils Métier Moyens de tests… Outils Métier Moyens de tests… Méthodologies Métier validation I/O (… Méthodologies Métier validation I/O (… Méthodologies Métier validation I/O (… Méthodologies Métier validation I/O (… Méthodologies Métier validation I/O (… Méthodologies Métier validation I/O (… Méthodologies Métier validation I/O (… Méthodologies Métier validation I/O (… Méthodologies Métier validation I/O (… Méthodologies Métier validation I/O (… Méthodologies Métier validation I/O (… Domaine Interventions et expertises… Domaine Interventions et expertises… Domaine Interventions et expertises… Domaine Interventions et expertises… Domaine Interventions et expertises… Méthodologies spécifiques métier… Outils spécifiques métier valid I/O… Méthodologies spécifiques métier… Méthodologies spécifiques métier… Compétences cibles responsable équipe validation I/O Compétences moyennes acquises responsables équipes validation I/O Dessin 15: Radar des compétences des collaborateurs Safran

Ces points sont essentiels à la gestion du personnel et le maintien d'une équipe toujours au « top ». Une fois par mois, j’ai réalisé un suivi individualisé de chaque collaborateur afin de d’ajuster au mieux les attentes de chacun par rapport aux objectifs de la mission.

Relation client

Comme la société Safran réalise des missions au forfait pour le compte de ses clients, il est dans son intérêt de disposer d'un portefeuille de missions sans cesses renouvelées afin d'assurer la subsistance financière de l'entreprise (et notoirement donc le règlement des salaires des consultants). Il est aussi dans l’intérêt du client de pouvoir disposer des compétences et ressources déjà à sa disposition sans avoir à réaliser un appel d'offre et/ou monter une nouvelle équipe.

Comme vu dans les points précédents, il est nécessaire de pouvoir disposer d'une offre en adéquation avec les nouveaux besoins de clients, ceux-ci n'étant en général pas trop éloignés des besoins courants auquel sait déjà répondre la société Safran (puisque déjà en place sur des projets). Cela ne demande théoriquement qu'une légère adaptation.

D'un point de vue humain, il est nécessaire de garder une équipe réactive, à la pointe de la technologie (veille) et des procédures (formation). D'un point de vue technique disposer du matériel adéquat n'est pas forcément un problème puisque utilisant les outils mis à dispositions sur le site du client.

Il s'agit donc de se préparer à pouvoir répondre à un besoin par :

la connaissance des offres Safran et sa capacité à se positionner sur une offre

la connaissance et la préparation de l'équipe Safran

les besoins du client (veille « machine à café »)

En cas de présentation d'un nouveau besoin PSA :

contacter le responsable Safran Montigny-le-Bretonneux, lui présenter le besoin (jour J)

estimation des capacités humaines et matérielles sur site (J)

préparation d'un dossier besoins client ↔ adéquation Safran (J+1)

proposition officielle (ou officieuse « machine à café ») du positionnement (J+2 ou J+3)

En résumé, rester constamment à l'écoute de la satisfaction du client, de ses besoins, disposer d'une équipe active et performante, placer dès que possible les services de Safran.

Aspect technique

Le client est PSA (Peugeot - Citroën), constructeur automobile Français de renommée et d'envergure mondiale. L'objectif de de la société Safran était de réaliser pour le compte de PSA les tests de validation sur les véhicules prototypes avec les nouveaux équipements et s'assurer de leur compatibilité électrique et électronique. Cette partie présente les éléments constitutifs du poste de Leader Technique Plateau proposé par Safran.

L'environnement technique

Pour mener à bien mon rôle du responsable technique j’ai réparti mes tâches en fonction de la charge de travail. En général une journée était organisée de la façon suivante :

Validation (5-7h)	Programmation (2-3h)	Gestion (1-2h)
Fonctionnement	Adaptation de fonctionnalités	Affectation des tâches
Remontée défauts	Création de séquences de test	Suivi de l'avancement
Essais sur piste (permis A130)	Programmation Labview	Référence technique
Rédaction, màj plans de test	Maintenance des macros VBA	Organisation formation
Préparation et dépannage, ...	Amélioration des processus	Motivation, avancement, etc...

Tableau 6: Organisation typique d'une journée de travail

Suivants les journées, il m’arrivait d’embaucher le matin vers 6h30, effectuer les relecture des rapports de la veille, préparer la réunion du jour, effectuer un peu de programmation, accueillir les collaborateurs et échanger avec eux, aller à l’atelier, effectuer des essais, faire la pause de midi, continuer les essais, rédiger mes propres rapports, effectuer la gestion de l’équipe, faire interface avec le client PSA, remonter des informations à Safran Montigny-le-Bretonneux, continuer un peu de programmation, pour terminer ma journée vers 19h30 voire 20h.

Illustration 12: Outil personnel de suivi des essais Le fonctionnement propre au client PSA étant très sécurisé, aussi bien physiquement que d’un point de vue informatif, les intermédiaires étant nombreux et répartis géographiquement sur le site de Belchamp, les documentations cryptiques (dictionnaire des acronymes obligatoire), la transversalité entre les différentes architectures électrique quasi inexistante, limitant les analogies sur des fonctionnalités pourtant identiques, la pluralité des informations techniques, du manque de matériel, de la séparation des bureaux, de la distance des ateliers, de la bureaucratie interne, rendaient de fait difficile de travailler sereinement.

Gestion technique

Les aspects techniques étaient considérés en fonction des besoins du client :

disponibilité du matériel (achat)

compétence d'utilisation (formation)

maintenance et réparation (dépannage)

Dans le cadre de la réalisation des tests de validation, il fallait donc disposer du matériel adéquat et en parfait état de marche afin de pouvoir opérer les tâches à n'importe quel moment. De plus une bonne connaissance du matériel permettait de répondre aux questions des collègues, ainsi que la façon d'y circonvenir en cas de panne afin d'être toujours capable de réaliser les missions.

Programmation Labview

J’ai été amené à maintenir et améliorer un banc de test, le FEVES, réalisé en Labview par un prestataire externe à PSA. Il s’agissait d’un rack mobile PXI architecturé autour d’un PC pilotant des cartes d’acquisition et de contrôle commande. Des scripts de tests étaient réalisés directement en programmation graphique, nécessitant de maîtriser aussi bien le fonctionnement du banc de test, la méthodologie de test propre au client PSA, ainsi que le logiciel Labview. Il n’était pas toujours facile de faire correspondre les exigences des besoins des essais à réaliser et cela a nécessité des développements supplémentaires.

Illustration 13: Face avant (interface graphique) du banc de test

2002-2007 / Bayo / Géolocalisation / CartoExploreur

La société Bayo est spécialisée dans l’aviation dont l’atelier agréé PAR 145 vend et installe des systèmes de radio-navigation sur des aéronefs privés, publics ou servant au transport de personnes. En plus, Bayo distribue des GPS et des matériels de navigation des plus grandes marques d’équipement destinés au grand public et dont le marché se développe très rapidement (randonnée, marine). Très présent sur ce marché, la société Bayo a suivi l’avènement du GPS automobile et participe à l’explosion de ce marché.

En 2000, en partenariat avec l’IGN, la société Bayo a été la première à numériser et commercialiser sous forme de CD la cartographie IGN au 1:25 000 de toute la France: CartoExploreur. Puis sont venus compléter ce logiciel la visualisation en 3D par CartoExploreur 3 ainsi que l’édition sur DVD de l’ensemble de la France à partir des « ortho-photographies » aériennes de l’IGN par PhotoExploreur, également suivi d’une version en 3D.

Fort de ses compétences en cartographie et en GPS, la société Bayo innove en lançant l’Exploreur, un GPS de navigation mixte sur cartographie routière Télé Atlas et sur cartographie IGN de CartoExploreur 3 ou photographie de PhotoExploreur 3D. De même, la société Bayo développe des applications destinées aux professionnels en proposant des solutions complètes d’optimisation, de suivi ou géolocalisation.

Contexte du recrutement et explications générales

J’ai rejoint la société Bayo dans le secteur d’Auxerre en juillet 2002 alors qu’elle venait d’éditer un logiciel de consultation de cartes de randonnées de la Série Bleu (« TOP25 ») en partenariat avec l’IGN, CartoExploreur. Ce logiciel, le premier dans son genre, et précurseurs avant l’heure de Google Earth et du Géo-portail, permettait par le biais d’un CD par demi département (ou quelques uns sur trois CD du fait de leur taille, les DOM et TOM sur un seul) de consulter et de zoomer sur les cartes IGN scannées et géo-référencées par leurs soins. Le travail de la société Bayo était à ce moment-là de compiler les cartes dans un format propriétaire pour en limiter le piratage, de concevoir le logiciel de lecture et d’éditer les CD.

L’objectif du recrutement était d’interfacer des GPS Garmin, nouvellement arrivés sur le marché français (pour rappel, on est mi 2002, ce type de GPS est encore confidentiel et coûte environ entre 400 et 1500 euros), avec le logiciel CartoExploreur et ses évolutions, CartoNav (navigation vectorielle) et le prochain CartoCom (gestion de flotte de véhicules et optimisation de tournées). L’environnement de développement était donc sous Windows 2000 et XP qui était encore récent à ce moment-là. Le but était d’écrire des pilotes « virtuels » sur port série afin de dialoguer par trames sur port série, puis USB ensuite, avec les différents types de GPS en normalisant les communications.

En effet, les GPS sont comme des imprimantes (matricielles, jets d’encre ou laser). Chacune dispose d’un langage d’interprétation graphique propre, aucun standard n’étant établit dans ce domaine. La société Adobe y apportera une forme d’uniformisation avec le format PDF qui succédera au EPS et le PCL, pas nécessairement supportés pour des problèmes de licences. En attendant, chaque pilote propriétaire effectue la traduction des commandes graphiques du système (par exemple sous Windows le WMF, format vectoriel, ou le BMP, format raster) en un équivalent compréhensible par l’imprimante.

Il s’agissait donc de définir un protocole commun aux GPS alors disponibles sur le marché, de synthétiser leurs protocoles de communication et d’en définir une interface exhaustive couvrant l’ensemble des capacités attendues. Si un GPS reçoit et transmet les données de positionnement au format NMEA (établit par la marine américaine), chaque constructeur y ajoute des commandes propriétaires malgré les recommandations de l’office normalisateur. De plus pour accéder aux données internes des GPS, chaque constructeur dispose d’un jeu de commandes propres. C’est donc au pilote logiciel d’intégrer le support exhaustif de toutes ces commandes propriétaires pour les unifier.

Le logiciel CartoExploreur avait été développé conjointement par Mr Eric DUBRUSLE (société unipersonnelle Navlogic, basée à l’immeuble CIT à Montparnasse) et Mr Eric DAVID (spéléologue amateur, débauché pour son logiciel VisuTopo de modélisation 3D de cavernes). Ces deux personnes travaillaient en télé-travail, la première à son siège parisien, la seconde depuis son domicile de Chambéry. Sur site se trouvait Mr Stanislas CIEZKI qui opérait à l’intégration des codes sources livrées sur un serveur CVS, la compilation des exécutables, la génération des données, la création et la gravure des CD « masters » à faire dupliquer par Sony en Autriche, après adjonction d’une protection Securom.

Or il s’avéra rapidement que les rôles furent redistribués à mon arrivée, essentiellement en m’affectant des tâches de Mr CIEZKI dans le but de le soulager d’une surcharge de travail liée à l’ensemble de ses fonctions. Le développement des pilotes GPS à proprement parlé fut quant à lui sous-traité à Mr DUBRUSLE de Navlogic. Néanmoins je n’avais pas à me sentir lésé compte tenu des ambitions affichées de la société Bayo et des évolutions de CartoExploreur à venir. Cela concernait certes les versions de CartoNav, affichage vectoriel de réseau routier Navteq, et CartoCom, pilotage à distance de flotte de véhicule, qui nécessitait la communication de positions distantes au départ par SMS.

Époque CartoExploreur, CartoNav, CartoNav Plus, CartoCom

Au début de l’aventure CartoExploreur, l’équipe de développement de la société Bayo se limitait alors à un programmeur sur le site de Branches, Mr Stanislas CIEZKI. Il s’occupait en outre de la gestion de configuration et de deux programmeurs en télé-travail (dont un à son compte). Étant donné la charge de travail et les projets d’évolution du logiciel, j’ai rejoint l’équipe afin de maintenir et ajouter des fonctionnalités, reprendre des taches, optimiser les processus en place, documenter les fonctionnalités existantes et réaliser un grand nombre d’outils internes de conversion.

En effet, des outils de conversion entre les images au format TIF, fournies par l’IGN, et le format interne BYO, pyramidal et crypté, étaient déjà créés. Néanmoins pour l’amélioration de toute la partie vectorielle des logiciels CartoNav et CartoCom, de nouveaux outils de conversion étaient nécessaires, notamment en matière du suivi de l’évolution du format des données routières fournies par la société Navteq, données permettant en outre le calcul d’itinéraire. Mais un partenariat avec la société Garmin s’établit rapidement pour le portage de mon travail pour leurs GPS.

Conversion vectorielle pour Garmin

L’IGN disposait des premières données vectorisées de sa cartographie TOP25, initialement peinte à la main. Un travail d’informatisation était en cours pour la production de prochaines cartes entièrement informatisées. La société Bayo réussi à avoir accès à ces premiers échantillons en vue d’une évaluation et de l’étude d’un débouché. En effet, le marché étant encore jeune et balbutiant, les outils informatisés n’étant pas encore aussi généralisés qu’aujourd’hui, c’était une phase de découverte continuelle, une opportunité formidable de participer à l’émergence d’une technologie.

Les données fournies par l’IGN étaient bien plus complètes que prévues et livrées dans un format vectoriel proche du DXF, le MIF. Le logiciel de manipulation de données cartographiques MapInfo permettait de lire ce format de fichier, et par l’usage de requêtes proches du SQL, avec l’adjonction de fonctions spécifiques aux calculs géodésiques, j’ai donc mis au point un système de simplification et d’optimisation des données. En effet, si de nos jours les appareils disposent d’une mémoire comptée en GiB, à cette époque, les mémoires externes étaient encore comptées en MiB.

Illustration 14: Premier essai de conversion vectorielle

J’ai donc commencé par sectoriser les zones vectorielles sous forme de pavés, à l’image des données présentent dans les fichiers de carte pyramidales BYO. Par l’utilisation d’un algorithme de quadtree, il est possible de discriminer certains pavés et ne garder que ceux réellement à afficher. L’indexation est facilitée, mais aussi la manipulation des données, la taille des pavés étant inversement proportionnels à leur nombre. Par la création de nombreuses requêtes différentes, ainsi que l’usage d’un langage de programmation intégré proche du basic qui permettait d’automatiser certaines tâches récurrentes.

Illustration 15: Dallage des pavés de la couche vectorielle forestière

Si le résultat attendu était efficace aussi bien visuellement que d’un point de vue de la taille des pavés produits, un autre problème technique relatif au mode de fonctionnement des GPS de la société Garmin nécessitait un second travail d’optimisation. En effet, si l’affichage d’un seul pavé était faisable considérant les limitations mémoire d’alors, en afficher plusieurs, comme dans le cas de la capture d’écran précédente, n’était même pas envisageable. Que ce soit pour des raisons d’occupation mémoire vive du GPS, ou de la vitesse d’affichage. J’ai donc opéré un filtrage de type « passe bande » en fonction du niveau de zoom. Un zoom faible n’avait pas besoin de beaucoup de détails visuels, un zoom fort en avait besoin.

Illustration 16: Comparaison graphique des différentes optimisations

Le contour original (rose) était donc simplifié en plusieurs alternatives (bleu et orange) en fonction de certains niveaux de zoom. Des problèmes de cohérence graphique entre les pavés apparaissaient entre les différents pavés du fait du filtrage unitaire de chacun d’eux et qui n’avait pas « conscience » des voisins. Ainsi les parties communes aux deux pavés nécessitaient une correction au mieux automatique, au pire manuelle. Des essais réalisés sur une simplification effectuée avant le découpage en pavé ne générait pas de résultat plus acceptable pour des raisons inconnues, alors qu’à priori cela aurait pourtant été la bonne méthode à suivre, et que j’avais par ailleurs essayé en premier lieu.

La société Garmin avait fourni un logiciel de conversion du format DXF à un format propriétaire IMG à télécharger dans leurs GPS. Après réalisation d’une nouvelle « moulinette », c’est à dire un outil de conversion dédié d’un format à un autre, la standardisation dans ce domaine n’étant généralement pas possible considérant l’éventail de cas particuliers auxquels on peut être confronté dans le domaine informatique, j’ai enfin obtenu les fichiers DXF équivalent, puis les fichiers finaux attendus au format IMG. Le plus difficile étant d’envisager chaque étape du processus « à l’aveugle », dans le sens où cela n’avait encore jamais été réalisé avant, vu le stade prototype du projet.

Illustration 17: Sans données vectorielles IGN Illustration 18: Avec données vectorielles IGN

Le résultat final s’est avéré plus que satisfaisant, permettant de couvrir l’ensemble de l’Isère, et la ville de Grenoble en particulier, que constituait l’échantillon de données fournies par l’IGN. Hélas ce travail n’aura pas abouti à un produit commercial bénéfique pour la société Bayo, ma méthodologie ayant été captée par la société Garmin afin d’effectuer le travail directement sans passer par d’intermédiaire et les rétribuer pour leurs recherches et leurs développements. La société Bayo, distributrice des produits Garmin, n’était pas en position de force économique pour répondre légalement.

Conversion vectorielle pour CartoCom

J’ai néanmoins poursuivi le travail de conversion afin de faire bénéficier les logiciels de la société Bayo de ces nouvelles capacités. La nouvelle difficulté était à présent de développer un moteur d’affichage vectoriel plus complet que celui disponible par la navigation routière. Je me suis donc inspiré des fonctionnalités présentent dans le logiciel MapInfo utilisé pour le pré-traitement, et combiné aux fonctionnalités géodésiques déjà présentent dans le logiciel CartoCom, j’ai créé un modèle de données graphiques adaptées à afficher les objets vectoriels originaux. Le résultat fut une réussite et permis à la société Bayo de créer des partenariats comme avec la station de sport d’hivers des Arcs pour afficher les pistes de ski en couleur en fonction de leur difficulté, ainsi que des skieurs pistés avec une balise GPS, tout comme les équipes de secours, permettant une navigation plus efficace entre le poste des urgences et le lieu de l’accident.

Illustration 19: CartoCom spécialisé avec données vectorielles de la station de ski Les Arcs

L’évolution du logiciel avec d’autres données vectorielles fournies par des sociétés privées auront permis le suivi des grumiers dans les forêts alsaciennes, de barges de dragage de gravier sur des gravières, ou encore le suivi de la couverture de l’épandage aérien par des avions. Ces derniers étaient équipés par la société Bayo d’un boîtier électronique, conçu sur place et interfacé au logiciel CartoCom, couplé au système d’épandage et qui permettait, une fois enclenché, de tracer en temps réel sur la carte le parcours de l’aéronef sur les zones à couvrir et de pouvoir couper le dispositif en dehors. Une évolution fut d’automatiser cette coupure, cette fois pilotée par le logiciel.

Installation sous InstallShield

L’installation des logiciels sur PC sous système d’exploitation Windows requière la copie de fichiers à certains endroits précis (répertoire propriétaire, répertoire système) ainsi que l’écriture de données en base de registre afin de permettre un fonctionnement optimal des logiciels de la société Bayo. Pour se faire, il existe différents outils permettant de réaliser la compilation des fichiers et données dans un installeur auto-extractible, celui ayant été sélectionné avant mon arrivée étant InstallShield 7 de la société Macrovision. Celui-ci dispose d’un langage de programmation dérivé du VBA, l’InstallScript, permettant une certaine automatisation des tâches d’installation ou de désinstallation.

Or il s’est rapidement avéré que le logiciel InstallShield était perclus de problème intrinsèque qu’il fallait invariablement compenser, voire contourner complètement, par l’écriture de routines correspondantes dans le langage de programmation fourni. Seulement si le fonctionnel attendu était enfin atteint, une mise à jour de InstallShield en version 8 révéla bien d’autres soucis, non seulement sensé être corrigés depuis la version précédente, mais une incompatibilité faisait invariablement s’installer tous les fichiers à la racine du disque principale. J’ai donc échangé longuement avec le siège de la société Macrovision, située aux USA, jusqu’à qu’ils reconnaissent à demi-mot le problème, mais sans apporter de solution.

Néanmoins, le programme alternatif d’installation s’étoffa rapidement pour permettre des scénarios d’installation non seulement parfaitement fonctionnels mais aussi ambitieux dans le sens qu’il était possible de chaîner l’installation de sous-ensembles de données par l’identification des installeurs situés dans une arborescence de répertoires. En utilisant des noms des répertoires définis de façon claire, j’appliquais alors une composition de nom d’installeur qui devait se trouver à un certain sous niveau, et reprenant les noms des répertoires parents. Si l’installeur se trouvait au bon endroit avec le bon nom, il était exécuté. Il fallait cependant bien faire attention à la corrélation entre le nom de l’installeur et de ses répertoires.

Époque CartoExploreur 3, CartoCom 3, PhotoExploreur

L’époque suivante fut marquée par l’arrivée sur le marché des tout premiers PocketPC,

Gestionnaire d’affichage pour PocketPC

Les premiers PocketPC sous Windows CE arrivèrent courant 2002 et 2003, d’abord produits par la société Compaq, disparue depuis. Au départ une extension sous forme de carte PCMCIA insérée dans le dos de l’appareil permettait d’ajouter un GPS que l’on accédait via un port série pour y lire les trames NMEA normalisée. Il fallut prendre en main des outils de développement encore préliminaires et instable, communiquer aussi bien avec la société Microsoft sur les problèmes rencontrés avec le logiciel eMbedded Visual C++ 3 ainsi que les sociétés Compaq et Toshiba qui nous fourniront les premiers prototypes de PocketPC avec écran haute résolution de 600x800 pixels, résolution improbable du fait que le standard unique était de 240x320 pixels, ce qui causait bien évidement de nombreux problèmes.

Fort de mon expérience en matière d’affichage vectoriel pour le logiciel CartoCom, je portai donc mon moteur sur PocketPC en le modifiant de façon importante afin d’y ajouter un système de couches graphiques, à l’image de ceux qu’on peut trouver dans un logiciel d’édition photographique comme Photoshop.

Illustration 20: Affichage vectoriel sur PocketPC

Une particularité supplémentaire fut l’ajout du support de la transparence, travail qu’il aura fallu intégralement réaliser à la main, puisque les premières versions de Windows CE n’embarquaient aucune routine graphique avancée du genre disponibles par la bibliothèque GDI+ sur PC. Et il n’était bien évidement pas question d’OpenGL ou d’affichage 3D s’il n’était pas lui-même réalisé « à la main » par un « rasterizer » maison.

Illustration 21: Affichage transparent sur PocketPC

Considérant les faibles performances des PocketPC d’alors, j’aurais donc apporté un soin tout particulier à l’optimisation de mes routines, simulant un calcul parallèle de type SIMD par l’usage d’algorithmes que j’avais préalablement développé sur mes Atari dans le cadre de projets personnels (démo, conversion, affichage) notamment dans le cadre de l’IUT GEII, la différence étant que je réalisais mon travail personnel en assembleur et mon travail professionnel en langage C++.

Gestion des POI

Une fonctionnalité attendue des logiciels de la société Bayo était de disposer d’un ensemble de POI afin de pouvoir effectuer un itinéraire vers ceux-ci. La société Navteq, fournisseur des données vectorielles, incorporait déjà de telles informations mais qu’il a fallu extraire, filtrer et présenter à l’utilisateur. Pour des raisons de taille et de rapidité, j’ai créé un petit moteur de base de données au format propriétaire qui permet de requérir des points dans une zone géographique donnée grâce à une structure de donnée sous forme d’arbre binaire de type AVL. Il a donc fallu créer une nouvelle « moulinette » ainsi que l’interface utilisateur permettant d’effectuer des requêtes avec filtrage en temps réel.

Illustration 22: Affichage des points d’intérêts sur la cartographie en 3D

CartoCom 3

Une évolution du logiciel CartoCom, qui permettait déjà la navigation routière et le suivi de véhicules à distance, permis d’offrir une interface « opérateur » de contrôle d’une flotte de véhicule. Cette modification permis notamment de préparer une transition vers le « web » qui prenait un essor de plus en plus important dans les années 2005-2007, malgré des limitations technologiques (RTC 56k, ADSL 512k notamment). Néanmoins cette nouvelle interface personnalisable permettait à la société Bayo de répondre encore plus précisément aux demandes des clients, non plus seulement avec l’ajout de leurs données vectorielles, mais aussi en fonction du type d’usage qu’ils en avaient.

Illustration 23: Interface "web" de CartoCom 3

Installation sous InnoSetup

Suite à de trop nombreuses limitations du logiciel InstallShield, ainsi que d’une inefficacité devenu intolérable avec l’arrivée des nouveaux logiciels de la société Bayo, essentiellement compte tenu de la taille toujours grandissante des ensembles de données à installer, j’ai donc cherché un logiciel alternatif pour remplacer l’installeur original. Le cahier des charges étant d’être moins cher (une licence InstallShield coûte environ 1500 € en incluant un « pack » de langues), moins bogué et donc nécessitant moins de maintenance du script personnalisé, plus flexible (si possible « open source »), plus efficace dans la compression (pour gagner en nombre de CD à imprimer) et surtout plus rapide.

En effet, la compression des données vectorielles de la France, environ 4 GiB, réclamait presque 30h de calcul et produisait un installeur de plus de 1.3 GiB, soit presque deux CD. A ce moment les DVD étaient encore trop récents et bien trop coûteux. Cependant, dès le test du logiciel gratuit InnoSetup, le temps de compression descendit à un peu plus de 2h, et pour un installeur en-dessous de 700 MiB, soit un seul CD. Sans compter que l’installation ou la désinstallation était incomparablement plus rapide que l’équivalent réalisé sous InstallShield. J’ai donc effectué une maquette comparative avec deux PC installant exactement le même logiciel, l’un par l’usage d’InstallShield, l’autre par InnoSetup.

Face à la supériorité technologique évidente et aux économies substantielles réalisées par ce choix, j’eu l’aval de la direction pour effectuer la transition complète de l’installation des logiciels de la société Bayo par le logiciel InnoSetup. Vu la relative absence de bogue, le script initial utilisé avec InstallShield fut réduit de plus de 300 KiB à environ 60 KiB, écrit en Object Pascal, un langage proche du Delphi. Je participa1 http://members.home.nl/albartus/inno/General_Information/what_is_new.htm aussi à l’amélioration du logiciel InnoSetup, du fait de l’aspect « open-source » de celui-ci, par l’amélioration du support multi-lingue, alors encore à l’état d’ébauche. Cela permis en outre une couverture fonctionnelle intégrale de nos attendus et de nos ambitions internationales.

Époque CartoExploreur 3 3D, PhotoExploreur 3D

Sur la fin de l’entreprise Bayo, nous avions tous les éléments nécessaires pour réaliser un concurrent à Google Earth ou le Géoportail, en mieux puisque nous disposions alors non seulement du support des PC de bureau, des PC embarqués, des PocketPC et même de certains GPS compatibles. Il nous manquait « juste » une présence web, une version « en ligne » qui nous rattacherai à l’évolution contemporaine du marché déjà vers le tout gratuit en version limité, mais payant en version professionnelle. Nous avions pourtant le support et les applications professionnelles développées depuis plus de 5 ans, mais des choix stratégiques ont été fait, et ne se sont pas avérés concrètement pertinents.

Tableau de bord avionique

Néanmoins de mon côté, j’ai donc participé à l’intégration de PhotoExploreur 3D dans un petit avion afin de servir d’instrumentation de vol, relié à un gyromètre laser pour la détection de l’inclinaison en temps réel, ainsi qu’une carte électronique les nombreux capteurs, notamment de vitesse et d’altitude, afin de fournir l’ensemble des informations au moteur d’affichage afin qu’il puisse représenter graphiquement l’environnement immédiat de l’aéronef. L’atelier mécanique de la société Bayo procéda à une intégration exemplaire des différents écrans au tableau de navigation.

Illustration 24: Vue du cockpit de l'aéronef équipé des outils de cartographie

Calcul de route 3D pour survol de carte

Une des dernières fonctionnalités que j’ai eu à concevoir est le survol de la cartographie en 3D. Fort de l’expérience avec le tableau de bord avionique vu précédemment, j’ai donc intégré les paramètres de lacet, roulis et tangage originellement renseignés par le gyromètre laser mais en les alimentant avec l’échantillonnage d’une courbe paramétrique de type « b-spline ». Après avoir sélectionné un point d’arrivé, que ce soit directement sur la carte 3D, ou via le menu de sélection d’une destination (adresse ou POI) je calcule une phase de décollage, de survol puis d’atterrissage en approche, toujours en pointant la caméra virtuelle sur la destination finale afin de ne pas la perdre de vue.

Illustration 25: Vue d'un survol automatique entre un point de départ et un point d'arrivée

2002 / Johnson Controls / Automobile / Tableau de bord Renault Modus J77

Johnson Controls, invention du premier thermostat d’intérieur électrique.en 1885, est un leader technologique et industriel mondial diversifié, qui offre des services et propose des solutions ayant pour objectif d’optimiser le rendement énergétique et opérationnel des bâtiments. Johnson Controls produit également, des batteries au plomb et des batteries de nouvelle génération pour les véhicules électriques et hybrides, ainsi que des systèmes intérieurs pour l’automobile.

Contexte du recrutement et explications générales

J’ai été envoyé début octobre 2001 à Osny par ma société de prestation de service, Ayrton Technology, au sein de la société Sagem Automobiles (tout juste rachetée par Johnson Controls) pour intégrer l’équipe de sauvetage du tableau de bord J81 (AZ1011) destiné à la prochaine Renault Espace v3. Contextuellement, on est moins d’un mois après les attentats du 11 septembre et l’éclatement de la bulle Internet est en cours. Si je mentionne ce fait, c’est que cela explique le terme employé de « sauvetage » du projet J81 par le jeu des sociétés de prestation de service qui ont malmenées ce projet en l’utilisant comme « chaise musicale » pour placer des consultants en fonction des « cours du marché ».

Fraîchement diplômé depuis moins de deux ans, je comprenais alors la réalité de l’industrie que j’avais idéalisée durant mon cursus scolaire, prenant en compte la réalité de contraintes économiques auxquelles je n’avais pas été confronté au préalable. Et de leurs incidences sur la qualité, voire la réussite d’un projet mené à son terme. Et donc des délais y afférents. Car en effet, le « sauvetage » du projet J81 impliquait certes une remise à plat du code produit, mais surtout et avant tout des délais de livraison pour fin novembre 2001, soit moins de deux mois pour s’assurer du fonctionnement effectif et qualitatif du tableau de bord pour la société Renault.

Cf. annexe 13.8 page 133 afin de me situer dans la hiérarchie de l’équipe « Tableaux de bord Digitaux »

Bon gré mal gré, l’évolution et le débogage du tableau de bord s’effectua dans les délais impartis grâce à l’investissement de toutes les personnes impliquées, sous la houlette de Mr Marc LOTH. Pendant cette période, il m’aura confié la réalisation du superviseur de communication CAN, la programmation de la boite de vitesse automatique et la gestion du niveau de carburant. Par le biais d’un environnement de développement et de test de régression dirigé par Mme Lise GILLET (recommandation en annexe 13.4 page 128), il a été aisé d’identifier et de résoudre les problèmes pendant la finalisation du projet. Mon implication et mes performances furent récompensées par le choix de développement sur le projet J77.

J77 (AZ1021) Renault Modus (2004) affichage du tableau de bord

Suite donc à ma performance sur le projet J81, j’ai donc pu choisir la partie qui me tenait à cœur sur le nouveau projet J77 qui deviendra la Renault Modus. A ce moment nous ne connaissions pas le visage de la nouvelle voiture, car le design était encore en cours d’étude au secret dans les locaux de Renault. Nous finirions par avoir un aperçu suite à une fuite dans le magazine Auto Plus, design préliminaire qui s’avérera à mon goût bien plus audacieux et pertinent que la version finale trouvée dans le commerce. Mais digression à part, mon choix se porta assez naturellement sur un domaine que j’avais pu expérimenter grâce à mes Atari, le graphisme. Plus exactement, l’afficheur LCD que voici.

Illustration 26: Vue générale du tableau de bord du projet J77 (la future Renault Modus) On m’a donc confié la charge intégrale de la réalisation « verticale » de la couche d’affichage, c’est à dire de la définition haut niveau des éléments d’affichage, des services de niveau intermédiaires concernant les conversions numérique de format d’affichage, ainsi que la partie bas niveau, c’est à dire les pilotes de communication avec le composant COF de contrôle du verre LCD. Le design des éléments graphiques était fourni par la société Renault, design que j’ai ensuite adapté au simulateur maison e-car (« emulated-car") fonctionnant sous Windows et permettant de simuler un environnement embarqué complet, procurant un atout non négligeable en matière de développement et de mise au point.

Interface haut niveau, hiérarchie des pictogrammes

Le projet J77 est programmé en utilisant une structure 3 couches standard, LAP (Applicative), DAT (Data) et LDB (Low level). L’interface de haut niveau mise à disposition du programmeur LAP lui permet de s’interfacer de façon logique et normalisée à la couche intermédiaire DAT, c’est à dire aux éléments d’affichage, sans avoir à se préoccuper des détails de moyen (DAT) ou bas niveau (LDB). J’ai donc commencé par rédiger une documentation détaillée des éléments en entrée et des attendus fonctionnels spécifiés par la société Renault. Cette interface de haut niveau décrit une API spécifiquement conçue pour tout ce qui concerne l’affichage sur l’écran instrumentation.

La conception de cette API s’est effectuée afin de répondre aux objectifs de la couche DAT INS qui sont de plusieurs ordres :

Définition et regroupement des ensembles (‘familles’) de façon cohérente

Structure de l’API en ‘cascade’ de macros (multi concaténation)

Utilisation d’un ‘vocabulaire’ proche du projet J84 (AZ1026) pour une réutilisation de modules

Appel aux services décrits dans un autre document sur l’affichage (DCD_DAT_LCD.doc)

Le document rédigé, DAT INS, fera 167 pages et décrira de façon exhaustive toute l’arborescence des éléments graphiques, leur interprétation logique et leur équivalent physique, interprétation donnée sous forme de schéma électrique afin d’en comprendre la hiérarchie. Pour exemple, voici la méthodologie employée pour décrire les éléments de l’afficheur du niveau de carburant.

Carburant

La ‘Jauge Carburant’ est un barre-graphe de 8 segments plus un segment d’alerte réserve. Deux modes de carburation sont disponibles, l’un pour une carburation liquide (essence/diesel), l’autre pour une carburation gazeuse (GPL, associée à la carburation essence).

Pictogramme GAS

S’allume lorsque la jauge carburant affiche le niveau du carburant GPL, si le véhicule en est pourvu.

Pictogramme POMPE

S’allume lorsque la jauge carburant est activée.

Pictogramme RESERVE

S’allume lorsque le niveau de carburant du mode en cours (liquide ou gazeux, déterminé par l’affichage du pictogramme GAS) est critique, signalant au conducteur l’urgence et/ou la nécessité d’un appoint en carburant.

Barre-graphe CARBURANT

Les segments s’allument du bas vers le haut en fonction du niveau de carburant (voir l’échelle dans le CDC/DSL, étant d’origine de 5L à 45L).

Une fois les éléments graphiques analysés et classés hiérarchiquement, un vocabulaire de haut niveau est mis en place sous forme de macros qui une fois concaténées, forment le nom d’une fonction qui sera appelée directement, procurant aussi bien une méthodologie de programmation orientée objet, compréhensible et organisée. Un effet de bord pratique de cette méthode est que si un appel de macro génère un nom de fonction non encore implémenté, cela est détecté par le compilateur et remonté sous forme d’erreur, ce qui permet rapidement de suivre l’évolution de la couverture des besoins entre la partie applicative LAP et l’interface de haut niveau DAT INS.

Les services proposés par la DAT INS utilisent les services DAT standard. Ce sont des macros dont le nom principal et l’ordre des paramètres sont définis, mais où les noms des paramètres sont libres, qui par concaténation produisent le nom de fonction final.

Fichier programme.c Dat.h Datins.h mDATControler DATJaugeTemperatureEau , cDATEteindre mDATControler Objet , Controle mDATControlerObjet Controle mDATControlerDATJaugeTemperatureEau Controle mDATControlerDATJaugeTemperatureEau cDATEteindre mDATControlerDATJaugeTemperatureEaucDATAllumer Service standart dont le nom et le format n’est pas libre Structure du service à concatener Paramètres et services libres obtenus par concaténation Dessin 16: Organisation de la concaténation successive des macros

Au regard de cette méthodologie, j’ai donc commencé par définis un ensemble de vocabulaire, pour poursuivre l’exemple de l’affichage du niveau de carburant.

DATJaugeCarburant Service Taille Paramètre Traitement Consommation Production Contrôle cDATConfigurerCarburantLiquide cDATConfigurerCarburantGazeux cDATEteindre cDATAllumer

DATJaugeCarburanLiquide Service Taille Paramètre Traitement Consommation Production TU16Bit VolumeEnPourMile Defaut Contrôle cDATAlerte cDATPasDAlerte DATJaugeCarburantGazeux Service Taille Paramètre Traitement Consommation Production TU16Bit VolumeEnPourMile Defaut Contrôle cDATAlerte cDATPasDAlerte Dessin 17: Paramètres des macros

L’API DAT propose donc ses services sous forme de macros « concaténables », c’est à dire où les paramètres seront concaténés au nom du service pour au final offrir une palette déterminée de macros de service. Le nombre de macros sera déterminé en fonction du nombre de paramètres possibles pour chaque service. Les macros résultantes n’ayant pas de fonction ou n’étant jamais appelées pourront faire appel soit à une fonction vide (déconseillé car impossible dans déterminer la provenance lors du débogue), soit afficher un message d’alerte lors de la compilation.

Par exemple :

#define mDATLireValeurImpossible() \

#error Appel à mDATLireValeurImpossible() n’est justement pas possible

En cas d’utilisation dans le code source, le message « Appel à mDATLireValeurImpossible() n’est justement pas possible » sera affiché ainsi que le nom de fichier et le numéro de ligne associé. La macro fonctionnelle finale pourra soit faire appel à une autre macro (sur-définition de macro), effectuer une opération unaire (faire un masque de bit, écrire une valeur définie, …), faire plusieurs instructions de suite (en multipliant les \ à la place des ;) ou enfin faire appel à des fonctions avec des paramètres définis. Dès lors, par ce biais il est donc possible ensuite de réaliser les macros finales.

Pour cela on décrit la stratégie d’affichage désirées et les routines appelées. Elle est basée sur le document DAT LCD qui permet de bien comprendre la structure hiérarchique utilisée. Cette stratégie permet d’autoriser ou d’éteindre plusieurs autres éléments en n’en commandant cependant qu’un seul. Une comparaison électrique de chaque famille est aussi fournie afin d’aider à la compréhension de la hiérarchie et de son incidence sur l’affichage des éléments.

La version hiérarchique est indiquée pour comprendre les dépendances :

0 Carburant 1 CarbPictoGas 2 CarbPictoPompe 4 CarbBarregraphe 5 CarbLiseretBarg 3 CarbPictoReserve Dessin 18: Organisation hiérarchique des pictogrammes L’équivalent électrique est communiqué pour offrir une autre perspective :

0 1 2 3 4 5 Carburant Dessin 19: Organisation électrique des pictogrammes Bien que les deux soient équivalents d’un point de vue logique, l’explication électrique permet aux personnes ayant une sensibilité plus matérielle d’en saisir les implications. Ce parti pris aura été ensuite adopté dans toutes les autres documentations de la société. Enfin il ne reste plus qu’à décrire chaque macro (il y en a 12 pour le carburant) :

Code de couleur utilisé pour les changements d’état :

VERT	: Allumé

JAUNE	: Clignotant

ORANGE	: Éteint

mDATControler(DATJaugeCarburant, cDATConfigurerCarburantLiquide) /*** mDATControlerDATJaugeCarburantcDATConfigurerCarburantLiquide *************/ /* Purpose : c */ /* Unit : MACRO */ /* Range : None */ /* List : None */ /* Example : None */ /******************************************************************************/ #define mDATControlerDATJaugeCarburantcDATConfigurerCarburantLiquide() \ DATLCD_EcrireFAM(cGRAFAM_Carburant, \ cGRAFID_CarbPictoGas, \ cGRATYP_Affichage, \ cGRASTA_Eteint); \ DATLCD_EcrireFAM(cGRAFAM_Carburant, \ cGRAFID_CarbPictoPompe, \ cGRATYP_Affichage, \ cGRASTA_Allume) ATTENTION : En carburation liquide, affiche la POMPE pour indiquer l’état du réservoir de carburant LIQUIDE. 1 CarbPictoGas 2 CarbPictoPompe Dessin 20: Création des macros finales qui appellent les fonctions de niveau inférieur

Ainsi grâce à une méthodologie simple, j’aurais pu décrire l’ensemble de l’interface de haut niveau DAT INS qui met une API standardisée à disposition des programmeurs applicatif LAP.

Interface moyen niveau, conversion numérique

La couche de moyen niveau DAT LCD s’interface entre la DAT INS, c’est à dire l’API de haut niveau, et la couche de bas niveau LDB LCD. En fonction des besoins fonctionnels requis pour la couche de haut niveau, j’ai donc rationalisé les services de la façon la plus générique possible, mais néanmoins exhaustive afin de pouvoir non seulement répondre aux besoins du projet J77, mais aussi d’autres projets à venir, comme le J84 (AZ1026) pour le nouveau Renault Scenic. Néanmoins malgré un soin tout particulier apporté à mon architecture, un autre système de définition à base de tableau Excel et de code généré sera préféré à la méthodologie de définition hiérarchique mise en place dans le projet J77.

Les objectifs de la couche DAT LCD furent de plusieurs ordres :

Création d’une définition miroir hiérarchique et structurée du périphérique d’affichage

Influence de la hiérarchie des ensembles sur l’affichage

J’architecturerai alors les besoins suivant plusieurs thèmes :

Affichage

Allumage / Extinction

Clignotement

Priorité d’affichage

Mise à jour

Synchronisation

Type de donnée

Taille

Type

Conversion de donnée suivant un type

Groupement

Famille

Priorité d’affichage

Conversion multiple par famille

Je définirai par exemple la « Priorité d’affichage » de la façon suivante :

Priorité d’affichage : 1- L’extinction est prioritaire sur l’allumage (fixe ou clignotant). 2- L’allumage fixe est prioritaire sur le clignotement. Eteint Allumé Fixe Clignotant Niveau Affichage Clignotement Dessin 21: Priorité des états d'affichage

Ou encore la méthodologie de « Mise à jour » de la façon suivante :

En cas de modification des attributs d’affichage d’un élément, une demande de mise à jour doit être émise. Cela évite de prendre en compte constamment la valeur d’affichage sans que celle-ci n’ait changée.

VRAI DEMANDE DE MAJ ASSOCIEE t ETAT DEMANDE PAR L’APPLICATIF RESULTAT SUR LCD Dessin 22: Méthodologie de la synchronisation d'affichage

La prise en compte de l’état d’affichage demandé n’est effectuée que si la mise à jour est elle même demandée, et seulement lors du traitement périodique de l’affichage. Une fois la demande de mise à jour prise en compte, celle-ci est infirmée pour ne plus être prise en compte de façon parasite par la suite.

Une fois avoir couvert toutes les exigences dans un document DAT LCD de 66 pages, en détaillant chaque choix technique ainsi que sa pertinence par rapport à des alternatives, il fut aisé de définir des structures de données et l’ensemble des différents algorithmes capables de répondre aux différents besoins en matière d’affichage. Par exemple la « Synchronisation d’affichage » :

if( // Prise en compte nouvelle valeur SANS SYNC (immediat) *OU* SYNC (sur front 'Allume' suivant (StatutNiveau[Niveau].ATF.Synchronisation == cGRASYN_Sans) || ( // Sur front 'Allume', evite de prendre en compte une eventuelle nouvelle valeur arrivee ( // *SI* 'Allume' *ACTUEL* ('Frequence' en cours) ( Frequence & (1 << StatutNiveau[Niveau].ATF.Synchronisation) ) != cGRASTA_Eteint ) && ( // *ET* 'Eteint' *AVANT* ('Frequence' precedente) ( vDATLCD_PrecedenteFrequence & (1 << StatutNiveau[Niveau].ATF.Synchronisation) ) == cGRASTA_Eteint ) ) ) { // 'Valeur' a AFFicher est la derniere 'Valeur' calculee, et on demande une 'MAJ' switch(Genealogie->Type) { case cGRATYP_T1 : break; case cGRATYP_T8 : AttributsT8->ValeurAFF = AttributsT8->Valeur; AttributsT8->ATF.MiseAJour = cVrai; break; case cGRATYP_T16 : AttributsT16->ValeurAFF = AttributsT16->Valeur; AttributsT16->ATF.MiseAJour = cVrai; break; case cGRATYP_T32 : AttributsT32->ValeurAFF = AttributsT32->Valeur; AttributsT32->ATF.MiseAJour = cVrai; break; default : break; } } Dessin 23: Structure hiérarchique de la rédaction du code source J’adopterai rapidement ce mode d’écriture « vertical » qui me caractérise (stigmatise?) désormais auprès de mes collègues, étant certes marginal par rapport aux « canons de beauté » instaurés par les développeurs C issus de l’école « Kernighan et Richie », mais qui à mon avis permet une compréhension visuellement plus aisée de la structure du code, et permet en outre de commenter chaque élément de l’algorithme de façon individuel. Cette méthodologie évoluera jusqu’à aboutir à une version mature (extrémiste ?) utilisée dans mon système d’exploitation EGOS programmé pour la société Ercogener, 14 ans plus tard. Méthodologie rationnelle qui rencontre hélas une certaine opposition au changement.

Enfin un soin tout particulier sera apporté sur la documentation de l’architecture globale et la maintenance à apporter en cas de modification des besoins, soit sur le projet J77 en cas d’évolution des besoins de la société Renault, soit pour une adaptation à un autre projet.

Le composant DATLCD est composé d’un fichier contenant le code et de plusieurs fichiers contenants le paramétrage. Celui-ci consiste à décrire le verre LCD d’une façon logicielle, afin qu’il soit automatiquement traité par les routines de DATLCD. Cependant les différents fichiers sont architecturés judicieusement et contiennent chacun des données précises.

Voici la liste des fichiers et leur contenu :

GRAARB	: Indicateurs d’arborescence

GRACLI	: Liste de fréquences de clignotement

GRACON	: Liste des éléments de taille supérieure à 1 bit et tables de conversion pour segment

GRAEMP	: Tables d’emplacements des bits dans la trame LCD pour les éléments GRACON

GRAFAM	: Descriptions des familles et liens vers les différents fichiers (TYP, CON, …)

GRAHYS	: Tables d’hystérésis pour les barre-graphes

GRALCD	: Description de la trame LCD

GRASTA	: Indicateurs d’état d’allumage

GRASYN	: Liste des fréquences de synchronisation de valeur

GRATEM	: Bases de temps utilisables pour la désynchronisation des clignotements.

GRATYP	: Liste des éléments de type T1, T8, T16 et T32

Fichiers à modifier pour adapter un autre verre LCD ou VFD DATLCD GRAFAM GRASYN GRASTA GRACLI GRAARB GRACON GRAEMP GRALCD GRAHYS GRATYP CODE PA.ROM PA.RAM T1 T8(C3 C4 C7) - T16(C8 C9 C13) - T32(C27) GRATEM Barregraphe Segment Pictogramme Dessin 24: Organisation des fichiers et répartition des données dans les mémoires

Il faut faire attention à renseigner les fichiers GRACON avec la liste des éléments en fonction de leur taille réelle, et non pas la taille de leur type (c’est à dire un barre-graphe de 7 pavés tiendra sur un T8 dans GRATYP, mais sera listé en C7 dans GRACON, et lié à une table de 7 emplacements dans GRAEMP).

J’accorde une importante capitale à la documentation de mes projets afin d’en clarifier la compréhension.

Interface bas niveau, communication avec l’afficheur

L’objectif de la couche de bas niveau LDBLCD est de convertir les informations hiérarchiques transmises depuis la couche de moyen niveau DATLCD dans un format de donnée compréhensible par le composant qui contrôle l’affichage sur le verre LCD. La transmission des données s’effectue par port SPI. Afin de faire correspondre les deux aspects logiciel (format de la trame, commandes du composant) et matériel (communication par port SPI), il faut donc analyser minutieusement les données techniques relatives à chaque composant impliqué, le COF et le MCU. Ainsi une phase préliminaire de documentation permet d’établir les besoins auxquels répondre de façon logicielle et matérielle.

SPI TrameLCD en RAM DATA CLOCK Dessin 25: Branchement de l'afficheur au microprocesseur Le driver du verre LCD est relié au microcontrôleur par une ligne série synchrone SPI. La trame LCD est déjà au format du driver LCD et ne nécessite pas de formatage supplémentaire. La trame est envoyée octet par octet. Le microcontrôleur ne disposant pas d’un contrôleur DMA, les octets seront transmis en utilisant une interruption (interruption à la fin de l’émission d’un octet utilisée pour l’émission de l’octet suivant).

J’accorde aussi dans ce cas un soin tout particulier dans la représentation graphique de mes explications afin de garantir une certaine pertinence, cohésion et confiance au lecteur, capable alors d’identifier rapidement de quoi il s’agit. En effet, on retrouve dans beaucoup de documentation de vagues explications approximatives qui réclament une analyse poussée, voire un contact avec le fabriquant, afin de lever toute ambiguïté. Il est important, une fois ces informations acquises, qu’elles soient toutes synthétisées et illustrées afin de permettre à tout lecteur, quel que soit sa sensibilité, de pouvoir saisir les tenants et les aboutissants du programme. Tout comme la schématisation d’un algorithme.

Initialisation au démarrage Si émission d’une trame, envoi du premier octet Après émission du premier octet, émission des octets suivant par l’interruption Après émission du premier octet, on retourne à la routine appelante, la suite sera émise par interruption A la fin de l’émission on n’envoie plus rien donc l’interruption ne ‘tombe’ plus Préparation de la veille Initialisation LDBLCD_ReveillerMOD Extinction LDBLCD_EndormirMOD Réveil LDBLCD_EmettreMSG Emission LDBLCD_EmettreMSG NORMAL Transition DATLCD_RafraichirLCD16Hz Dessin 26: Diagramme de phase de vie C’est par ce biais qu’on se garanti une programmation fiable et une détection anticipée et rapide des problèmes. Concernant cette couche de bas niveau, le fonctionnel est assez élémentaire et n’appelle pas à explication technique supplémentaire. L’idée initiale étant avant tout de décrire la méthodologie employée pour structurer, architecturer, documenter et programmer les composants logiciels à ma charge. Méthodologie inspirée de ma pratique personnelle et des échanges que j’aurais eu avec les acteurs expérimentés de ce projet qui me tient somme toute très à cœur, et dont je me souviens fort bien à chaque fois que je croise une Renault Modus sur la route.

J77 (AZ1021) Renault Modus (2004) gestion du niveau d’huile

Suite à l’architecture de l’affichage du tableau de bord, je me suis occupé de la partie de l’affichage du niveau d’huile. Je n’expliquerai pas nécessairement l’implication de l’affichage vu précédemment, mais me concentrerai sur l’aspect électronique mis en œuvre permettant une estimation relativement fiable du niveau d’huile dans le carter moteur. Cet aspect électronique permet de démontrer que je suis aussi capable d’interagir avec des concepts matériels analogiques, bien que cela ne soit pas nécessairement mon point de prédilection, préférant notamment l’architecture logicielle et la documentation. Cependant mon choix d’option « électronique » au DUT GEII trouve là tout son intérêt.

On peut donc schématiser le fonctionnement de la sonde niveau d’huile par une résistance chauffante plongée dans l’huile du moteur.

Dessin 27: Résistance dans un bain d'huile moteur

Et faisant passer du courant dans la résistance celle-ci s’échauffe. Or plus la température augmente, plus la résistance augmente vu que le matériel utilise n’est pas supraconducteur.

°C R Dessin 28: Résistance en fonction de la température

En utilisant une source de courant constant et en calculant la DDP aux bornes de la résistance, on peut déterminer la résistance de la sonde.

I R U U=R*I Dessin 29: Courant et différence de potentiel dans une résistance

Suivant le niveau d’huile, la chaleur est plus ou moins diffusée dans l’huile qui sert de ‘radiateur’. La cinétique d’échauffement de la résistance change. En effectuant deux mesures à des instants déterminés, on peut calculer la cinétique de l’évolution de la température de la sonde, et ainsi connaître assez précisément le niveau d’huile.

ECHAUFFEMENT DIFFUSION Dessin 30: Incidence du niveau d'huile sur l'échauffement de la résistance Moins le niveau d’huile est élevé, plus la sonde chauffe, plus sa résistance augmente et donc plus la différence de tension entre les deux mesures est importante.

°C t U R 2 mesures à 875 ms t 2 mesures à 875 ms °C U R Dessin 31: Mesures différentes en fonction de la température d'huile Voici un schéma simplifié du circuit électrique utilisé pour calculer le niveau d’huile :

Vbat Vsonde Isonde SWbat SWsonde Dessin 32: Pilotage de la source de courant Nous pouvons contrôler les éléments suivants :

Intensité de la source de courant ‘Isonde’

Connexion de ‘Swbat’

Connexion de ‘Swsonde’

Nous pouvons lire les valeurs suivantes :

Tension batterie ‘Vbat’

Tension aux bornes de la sonde ‘Vsonde’

Certaines tension batterie ne permettent pas une mesure représentative du niveau d’huile et sont donc considérées comme erreur.

SUR TENSION SOUS TENSION ACQUISITION AUTORISEE Tension batterie Tension équivalente sur le convertisseur AD Valeur équivalente à la sortie de convertisseur 29,8V 16V 8V 0V 5V 2,68V 1,34V 0V 1023 549 274 0 Dessin 33: Plage de tension autorisée pour la mesure La résistance de la sonde peut subir des dommages. La résistance est nominale de 3 ohms à 20 ohms. En dehors de ces plages, la résistance est à considérer en court-circuit ou en circuit ouvert.

CIRCUIT OUVERT COURT CIRCUIT ACQUISITION AUTORISEE Résistance sonde Tension équivalente sur le convertisseur AD Valeur équivalente à la sortie de convertisseur 24 Ω 20 Ω 6 Ω 0 Ω 5V 4,21V 1,263V 0V 1023 862 258 0 3 Ω 0,6315V 129 Dessin 34: Plage de tension pour l'autorisation de la mesure La mesure est découpée en 4 étapes :

Mise en route de la source de courant (démarrage de la PWM) attente 5/10 ms

Injection du courant (ouverture de la TOR) attente epsilon ms

Première mesure attente 875 ms environ

Seconde mesure (fermeture TOR et arrêt PWM)

Une tache de vérification d’un éventuel problème de tension batterie et/ou sonde (court-circuit / circuit ouvert) tournera en tache de fond pendant toute la phase d’injection de courant. Dès qu’un problème sera détecté, la mesure sera immédiatement arrêtée, l’injection de courant stoppée.

PWM TOR 1 2 3 4 t Le temps d’injection de courant doit être de 875 ms +/- 5 ms, soit un temps compris entre 870 ms et 880 ms. I Dessin 35: Chronogramme des phases de mesure de la résistance La source de courant est obtenue à l’aide d’une PWM (U0.2). La tension issue de la PWM est introduite dans un montage différentiel. Suivant le rapport cyclique, l’on obtient plus ou moins d’intensité à la sortie.

Rapport cyclique I 100% 0% 50% 274,8 mA 23,39% 210,5 mA Dessin 36: génération du courant en fonction du rapport cyclique Voici donc en substance la méthodologie que j’aurais appliquée à la lecture du niveau d’huile sur le projet J77. Le détail de l’implémentation technique est propre aux composants et n’appelle pas à description complémentaire. J’aurais donc mis en œuvre un important travail bibliographique et documentaire avant de développer le système de capture du niveau d’huile qui s’appuiera ensuite sur l’affichage du tableau de bord pour signaler une erreur potentielle en cas de niveau insuffisant.

B5 (CY1001) Citroën C4 (2005) gestionnaire de moteurs pas-à-pas

Illustration 27: Vue générale de la console de climatisation J’ai eu aussi à travailler sur un autre projet, le B5 pour la société Citroën. Mon travail a consisté à concevoir, documenter et programmer le pilote des moteurs pas-à-pas des volets de ventilation de la climatisation. En effet, sur les véhicules moyen et haut de gamme, une climatisation automatique permet de réguler la température de l’habitacle en modifiant la quantité et la température de l’air pulsée, soit par un mélange d’air extérieur, d’air chauffé par le circuit de refroidissement moteur ou électriquement, et d’air refroidit par un système de climatisation. Cependant il n’est pas possible de réguler la température, juste le mélange d’air de ces trois sources. Nous avons donc trois volets à contrôler.

1 2 3 4 Dessin 37: Schéma du moteur Une conception correcte réclame une analyse précise de la problématique. Pour cela il faut commencer par la compréhension de l’organe à contrôler, en l’occurrence un moteur pas-à-pas. Le moteur pas-à-pas est un moteur quadripolaire à quatre positions. Celui-ci dispose de quatre commandes de phase commandées indépendamment les unes des autres. Suivant les commandes, le rotor du moteur peut prendre quatre positions distinctes. En enchaînant les commandes de façon temporelle, on peut faire tourner le rotor dans un sens on dans l’autre. En maintenant les commandes, on bloque le moteur dans sa position, mais cela entraîne un échauffement de la bobine du rotor.

La commande des phases se fait suivant les potentiels appliqués aux phases du moteur, on peut le positionner dans quatre directions différentes.

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Bit 3 2 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 Dessin 38: Rotation du moteur en fonction de l'état des phases Une fois que les commandes des phases du moteur sont relâchées, une dérive de la position du rotor peut apparaître. Au début de chaque commande des phases, il est conseillé de forcer la commande des phases de la position courante avant d’engager le moteur dans une rotation. Cette dérive apparaît aussi lors d’une rotation et de l’arrêt subit de la commande des phases du moteur. L’inertie du rotor en rotation entraîne une dérive avant l’arrêt effectif du moteur. Il est conseillé de forcer la commande des phases de la position finale une fois celle-ci atteinte, afin de stopper le moteur dans une position cohérente par rapport à la position souhaitée.

1 2 3 4 Dessin 39: État instable Dans le cas d’un changement de sens brusque durant une rotation, l’effet de l’inertie du rotor est le même et entraîne une perte de cohérence de la commande des phases par rapport à la position souhaitée. Il est conseillé de bloquer le moteur un court instant dans la position en court, puis de relancer la rotation du moteur dans le sens inverse.

Le moteur ne dispose pas d’un champ d’action illimité. Bien que relié à un système à crémaillère, la course totale est calculée en nombre de commande de pas. Ainsi, pour effectuer une course de 0% à 100%, on peut avoir besoin de 2350 commandes de pas, en fonction de la course mécanique à effectuer. Dans l’exemple suivant, la course mécanique totale est d’environ 120° :

t % 0% 100% 0 100% Dessin 40: Course du volet en fonction du temps

Une course peut comporter un changement de sens.

t % 0% 100% 0 100% Dessin 41: Course du volet en fonction du temps et du sens de rotation

Dans la réalité, on prend en compte les contraintes techniques imposées par le moteur, tels les périodes de blocage en début et en fin de course. En début de course, une période dite de ‘Pré Enable’ à lieu afin de recaler le moteur sur la commande de phase de la position en cours, avant d’entamer la rotation proprement dîtes. En fin de course, une période dite de ‘Post Enable’ à lieu afin de bloquer le moteur dans la position de la consigne désirée, évitant ainsi une dérive parasite entraîné par l’inertie de la rotation du rotor.

t % 0% 100% 0 100% Pré Post S2 Dessin 42: Phases d'attentes en début et fin de course

Dans le cas d’un changement de sens brusque, une période de ‘Pré Enable’ est insérée dans la course afin de permettre au moteur de changer de sens sans perdre des commandes de pas.

t % 0% 100% 0 100% Pré Post S 2 S 2 Pré Dessin 43: Phases d'attente en fonction du changement de sens de rotation

Le forçage est une course spéciale dont le but est d’assurer la position du volet ainsi que l’étanchéité du joint. Dans le cas d’une course ayant pour destination 0% ou 100%, une course de forçage est à faire. Les positions 0% ou 100% sont des positions hors contraintes techniques. Lorsque ces positions sont atteintes après une course S2 normale, une course forcée S3 de ‘Butée’ est effectuée, mettant le volet en contrainte technique.

Après la fin de la course S3, une période ‘Post Enable’ de blocage du moteur est effectuée. Un changement de sens entraînant une course forcée S1 de ‘Décollement’ à lieu ensuite, libérant le volet de la contrainte imposée par la course forcée S3, repositionnant le volet à l’une des extrémités 0% ou 100%. Cette course forcée S1 de ‘Décollement’ nécessite elle-même une période de ‘Pré Enable’ ainsi qu’une période de ‘Post Enable’ de blocage sur consigne.

Pré Post S 2 Post 0% 100% 100% S 3 S 1 Dessin 44: Phases de forçage en fin de course

Dans le cas d’une première mise sous tension ou d’une perte de la position, un recalage est nécessaire. Un moyen simple consiste à faire croire au moteur qu’il se trouve à une extrémité de la course, et de lui demander d’effectuer une course complète. Ainsi, qu’il se trouve entre 0% et 100%, il atteindra forcément l’extrémité désirée de la course.

0% 100% 0% 100% 6 5 % Dessin 45: Recalage du volet en fin de course Dans l’exemple suivant, le moteur se trouve à 65% de la course totale. Or nous ne pouvons pas connaître cette position. Il s’agit donc de demander au moteur d’aller à un extremum qui entraînera une course sous contrainte pendant que le volet sera en ‘butée’. Puis, comme dans le cas d’un ‘forçage’ normal, une ‘Butée’/’Décollement’ aura lieu et repositionnera le volet à l’extrémité désirée. Il de prendre comme nouvelle référence, ici 100%.

Il existe 2 méthodes de gestion de la position, lors d’une course normale ou lors d’une course forcée. Dans le cas de la course normale, la gestion de la position, jugée alors valide, s’effectue à partir de deux marqueurs qui indiquent la position actuelle et la position à atteindre. Si la position actuelle est la même que la position de destination, c’est que la consigne requise est atteinte, que le moteur est au repos. Dans le cas d’une course forcée, il n’y a pas de référence à la position actuelle, car par définition cette course est sous contrainte et n’est donc pas valide. Un compteur est utilisé afin de calculer le nombre de pas à commander pour effectuer pour la ‘Butée’ ainsi que pour le ‘Décollement’. Une fois la course forcée effectuée, on repart sur une course normale ayant pour référence la position valide en cours.

S1 Décollement S3 Butée S2 Course normale S1 Décollement S3 Butée S2 Course normale Compteur de forçage Position actuelle Position destination Normal Forçage Forçage Compteur de phase Dessin 46: Organisation des cycles de vie du moteur Suivant la méthode employée pour la gestion de la position, on utilise soit le marqueur de la position actuelle, ou on lui ajoute un compteur de phase utilisé dans le cadre d’une course forcée. Le moteur dispose de 4 commandes de pas différentes. Il suffit de garder les deux bits de poids faible de la position actuelle pour déterminer quelle commande appliquer au moteur.

Position actuelle Normal Forçage Compteur de phase + Bit Pos 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 3 2 1 0 1 2 3 4 1 2 3 4 Dessin 47: Compteurs de position moteur

Dans le cas d’une course forcée, on ajoute un compteur de phase, initialisé à 0 au début du forçage, afin de ne pas affecter le compteur de position courante positionnée alors à un extremum de la course normale.

4 3 2 1 1 2 3 4 4 3 2 1 Phases Diagnostique Dessin 48: Diagnostique des phases du moteur Le diagnostic des phases est un retour pour lecture de l’état des potentiels des phases du moteur. En cas d’anomalie, le retour n’est pas égal à la commande désirée.

Par exemple, si un court-circuit empêche les phases d’arriver au potentiel de commande, on peut comparer le potentiel réel (diagnostique) avec le potentiel désiré (phases).

En cas de différence, un problème à lieu, et pour éviter une injection de courant inutile voire dangereuse, on coupe la commande des phases après un certain temps.

Le contrôle des moteurs n’est possible que si la tension batterie est suffisante pour permettre la commande des phases. Si la tension batterie est trop faible, la magnétisation du rotor sera insuffisante pour garantir un couple idéal garantissant la rotation du moteur. Si la tension batterie est trop élevée, les bobines du moteur risquent de chauffer et d’entraîner une dégradation du matériel. Pour éviter un effet de ‘jitter’ aux bornes de la plage de fonctionnement, une hystérésis est mise en œuvre. La plage de fonctionnement pour une tension croissante est comprise entre 10,5 volts et 16 volts, et pour une tension décroissante de 15,5 volts à 10 volts.

0 volt 10 volts 20 volts Dessin 49: Hystérésis de la plage de fonctionnement autorisé du moteur Afin de facilité la gestion des moteurs, les différentes phases et méthodes seront découpées judicieusement pour permettre un enchaînement logique des étapes.

Ce que l’on nomme ‘Enable’ est la gestion du blocage de la position du moteur au démarrage et à l’arrêt de celui-ci.

Pour la gestion de l’Enable’, nous avons quatre états distincts :

Le ‘Pré Enable’ qui précède la course

La ‘Course’ proprement dîtes

Le ‘Post Enable’ en clôture de course

Le ‘Sans Enable’ qui est l’état de repos

Le ‘Pré Enable’ et le ‘Post Enable’ sont associés à des courses statiques avec maintien de la position du moteur. La ‘Course’ est liée à un mouvement du moteur, qui peut être aussi bien une ‘Course normale’ qu’une ‘Course forcée’. Le ‘Sans Enable’ est l’état d’immobilisation du moteur et de non commande de ses phases.

Pré Post Course Sans Dessin 50: Synthèse de la course du volet Ce que l’on nomme ‘Forçage’ est la gestion du repositionnement de la position du moteur en début ou en fin de course mécanique afin de ne pas laisser le joint d’étanchéité du volet en contrainte.

Pour la gestion du ‘Forçage’, nous avons là aussi quatre états distincts :

La ‘Course’ associée à la position courante

La demande de ‘Forçage’ lorsque la ‘Course’ arrive à l’une des extrémités

La ‘Butée’ en course continue

Le ‘Décollement’ en course continue, avec changement de sens de rotation du moteur

Course Forçage Butée Décollement Dessin 51: Course de forçage en butée pour recalage La ‘Course’ est liée à l’évolution de la position actuelle. Le ‘Forçage’ est une étape de transition liée à la demande d’effectuer un forçage, si une fois la destination atteinte on se trouve à l’extremum de la course totale. La ‘Butée’ et le ‘Décollement’ sont liés à une rotation libre du moteur, qui n’affecte pas la valeur de la position courante.

Course Normale Course Forcée Forçage Butée Forçage Décolle Enable Course Enable Sans Enable Pre Enable Post Forçage Enable SLEEP Course statique Course statique Course statique Course statique Course Course forcée Course forcée Forcage à faire Si Position=0 ou Position=S2 atteinte Changement de sens Arret des moteurs Si nouvelle course ou changement de sens de la course Dessin 52: Table de Karnaugh des états de la course

Enfin il est possible de combiner toutes ces informations au sein d’un tableau de Karnaugh, ce qui permet de faciliter la séquence des états. En fonction d’un état actuel en entrée de la table on obtient l’état suivant en sortie. Il s’agit de faire référence à cette table à la fin de chaque étape afin de chaîner les différentes actions à effectuer.

Le pilote se réfère donc à cette table qui indique les fonctions transitoires à effectuer d’un état à l’autre. Par cette méthode il est donc aisé de décrire un système de machine à état.

Conclusion

C’est donc au regard notamment de ces quatre expériences significatives que je demande une validation totale de mes acquis d’expériences en matière d’Informatique Industrielle, le domaine dans lequel je me suis spécialisé. J’ai notamment approfondi cette spécialisation dans le domaine de la programmation embarquée, limitant de fait mon expertise dans le domaine de l’électronique, préférant me référer à des personnes dont c’est le domaine de prédilection. En effet, mes nombreuses expériences m’ont apportées la certitude que l’on ne peut pas nécessairement être bon partout, et qu’être référent dans un domaine demande déjà un investissement complet dans celui-ci, notamment du fait son évolution.

J’ai vu beaucoup de choses en 18 ans d’expérience, touché à beaucoup de domaines, même en dehors de l’informatique industrielle pure, utilisant et partageant mes connaissances, faisant preuve de grande adaptabilité, cherchant continuellement à apporter la meilleure solution au problème posé, et aussi à m’améliorer et progresser par la même occasion. Néanmoins je rencontre une résistance à mon évolution de carrière que je souhaite lever par l’obtention du diplôme d’Ingénieur Polytech Tours en Informatique Industrielle, me permettant enfin d’accéder officiellement à des postes de responsabilité et d’encadrement qui me sont refusés, malgré mes compétences acquises et démontrées dans ces domaines.

Comme présenté dans mon projet personnel et professionnel, mon objectif est de me mettre à mon compte afin de tirer profit de mes compétences en en faisant bénéficier le plus grand nombre, que ce soit par la dispense de cours d’informatique industrielle, de missions de consultants, de développements personnalisés ou de vente de licences. Mon projet à long terme étant de fonder une entreprise fiable et pérenne dans l’industrie afin de fluidifier les méthodologies de conception et de développement, de documentation et de validation. Des domaines qui restent encore aujourd’hui demandeurs du fait de la multiplication des normes et procédures qu’il faut sans cesse harmoniser.

GLOSSAIRE

Vous trouverez dans le tableau ci-dessous l’explication des termes récurrents rédigés en italique dans les détails de mes expériences. Les termes apparaissant de façon ponctuelle sont expliqués directement dans le texte afin de ne pas alourdir inutilement le glossaire.

Terme	Explication, traduction
3D	3rd Dimension (3ème Dimension) communément projection graphique informatique
ADSL	Asymmetric Digital Subscriber Line (Liaison Numérique Asymétrique)
AMDEC	Analyse des Modes de Défaillance, de leurs Effets et de leurs Criticités
ANSI	American National Standards Institute (Institut National de Normalisation Américain)
API	Application Protocol Interface (Interface Protocolaire Applicative)
AVL	Adelson-Velsky and Landis, structure de données, arbre binaire
BASIC	Beginner's All-purpose Symbolic Instruction Code, langage de programmation simple
BE	Bureau d’Etude, voir aussi R&D
BLE	Bluetooth Low Energy (Bluetooth Basse Consommation)
BMP	BitMaP, format de fichier graphique raster (à base de pixel)
BYO	Format de fichier pyramidale de carte IGN pour CartoExploreur
C	Langage de programmation issue du monde UNIX
CAN	Car Area Network (Réseau d’Environnement Voiture)
CD	Compact Disc (Disque Compact, voir aussi ROM)
CIT	Centre International du Textile, Ensemble Maine-Montparnasse - Bât. C
COF	Chip On Flex (Composant Sur Flexible, voir aussi COG)
COG	Chip On Glass (Composant Sur Verre, voir aussi COF)
CPU	Central Processor Unit (Unité du Processeur Central)
CVS	Concurrent Versions System (Système de Gestion de Versions)
DDP	Différence De Potentiel
DHCP	Dynamic Host Configuration Protocol (Protocole de Configuration Dynamique des Hôtes)
DMA	Direct Memory Access (Accès Direct à la Mémoire)
DOM	Département d’Outre Mer
DUT	Diplôme Universitaire de Technologie
DXF	Format de fichier vectoriel
DVD	Digital Versatile Disc (Disque Numérique Polyvalent)
E-INK	Electronic Ink (Encre Electronique)
EDF	Earliest Deadline First (Echéance Proche en Premier)
EOL	End Of Line (Fin De Ligne)
EPS	Encapsulated PostScript
ERP	Enterprise Ressource Planning (Progiciel de Gestion Intégré - PGI)
FPGA	Field-Programmable Gate Array (Réseau Logique Programmable), voir aussi SOPC
GDI(+)	Graphics Device Interface (Interface de Périphérique Graphique)
GEII	Génie Electrique et Informatique Industriel
GiB	Gibibyte, unité de capacité informatique basé sur la puissance de 2 (2^30), autrefois Go
GPS	Global Positionning System (Système de Positionnement Global)
GSM	Global System for Mobile Communications (historiquement Groupe Spécial Mobile)
H264	MPEG-4 AVC (Advanced Video Coding)
HAL	Hardware Abstration Layer (Couche d’Abstraction du Matériel)
HEFT	Heterogeneous Earliest Finish Time ()
IGN	Institut Géographique National
IHM	Interface Homme-Machine
IoT	Internet Of Things (Internet Des Objets)
IP	Internet Protocol (Protocole Internet) / Intellectual Property (Propriété Intellectuelle)
ITIL	Information Technology Infrastructure Library
IUT	Institut Universitaire de Technologie
KiB	Kibibyte, unité de capacité informatique basé sur la puissance de 2 (2^10), autrefois Ko
LCD	Liquid Crystal Display (Afficheur à Cristaux Liquide)
LIBC	C Library (Librairie du langage C)
LIN	Local Interconnect Network (Réseau Interconnecté Local)
LoRa	Protocole de télécommunication à bas débit d'objets à faible consommation électrique
M2M	Machine to Machine (Machine à Machine)
MCU	Micro Controller Unit (Unité Microcontrôleur)
MFC	Microsoft Fundation Classes (Classes Fondamentales de Microsoft)
MiB	Mebibyte, unité de capacité informatique basé sur la puissance de 2 (2^20), autrefois Mo
MID	Données complémentaires au fichiers MIF (voir aussi MIF)
MIF	Format de fichier vectoriel (voir aussi MID)
MISRA	Motor Industry Software Reliability Association
MMU	Memory Management Unit (Unité de Gestion Mémoire)
MPEG	Motion Picture Experts Group (Groupe d’Experts d’Images en Mouvement)
MPU	Memory Protection Unit (Unité de Protection Mémoire)
NMEA	National Marine Electronics Association (Association Nationale d’Électronique Maritime)
OPC	Ordonnancement, le Pilotage et la Coordination
OS	Operating System (Système d'Exploitation)
OSI	Open Systems Interconnection ()
PC	Personnal Computer (Ordinateur Personnel)
PCL	Printer Command Language (Langage de Commande Imprimante)
PCMCIA	Personal Computer Memory Card International Association
POC	Proof Of Concept (Démonstrateurs d’Usage)
POI	Point Of Interest (Point d’Intérêt)
POSIX	Portable Operating System Interface Unix
PRINCE	PRojects IN Controlled Environments (Projet EN Enironnement Controllé)
PWM	Pulse Width Modulation (Modulation de Rapport Cyclique)
PXI	PCI eXtensions for instrumentation
QoE	Quality of user Experience (Qualité d'Expérience)
QoS	Quality of Service (Qualité du Service)
quadtree	Organisation bi-dimensionnelle qui permet de classer par absice et ordonnée
R&D	Research and Development (Recheche et Développement), voir aussi BE
rasterizer	Routine d’affichage, souvent la transformation et projection de coordonnées 3D sur écran 2D
ROM	Read Only Memory (Mémoire à Lecture Seule)
RTC	Réseau Téléphonique Commuté
SAV	Service Après-Vente
SDK	Software Development Kit (Kit de Développement Logiciel)
SID	Safety In Design (Sécurité par Conception)
Sigfox	Un concurrent au protocole LoRa
SIL	Safety Integrity Level (Niveau d'Intégrité de Sécurité)
SIMD	Single Instruction Multiple Data (Instruction Unique Données Multiples)
SMS	Short Message System (Système à Message Court)
SOC	System On Chip (Système Sur Puce)
SOPC	System On Programmable Chip (Système sur Puce Reprogrammable), voir aussi FPGA
SPI	Serial Peripheral Interface (Interface de Périphérique Série)
SQL	Structured Query Language (Langage de Requête Structurée)
STL	Standard Template Library (Librairie de Template Standart)
TLSF	Two-Level Segregate Fit (Mémoire de Deux Niveaux Distincts)
TOM	Territoire d’Outre-Mer
TOR	Tout Ou Rien
UE	Unités d’Enseignement
UNIX	Système d'exploitation des années 60 pour ordinateurs et serveurs
USA	United States of America (Etats Unis d’Amérique)
USB	Universal Serial Bus (Bus Série Universel)
VBA	Visual Basic for Application (Visual Basic pour Application)
VFD	Vacuum Fluorescent Display (Afficheur Fluorescent sous Vide)
WMF	Windows Meta File, format de fichier graphique vectoriel

BIBLIOGRAPHIE

Vous trouverez dans le tableau ci-dessous l’index bibliographique de la plupart des documents m’ayant guidés dans ma carrière professionnelle et mes développements personnels. Ils ne sont pas identifiés individuellement car pas directement reliés à une expérience particulière.

Identifiant	Titre, auteur, ISBN
WEBER, Jacques. MOUTAULT, Sébastien. MEAUDRE, Maurice. Le langage VHDL, 5ème édition. Dunod, 2016. 000 p. ISBN 978-2-10-072688-2
RIMELÉ, Rodolphe. HTML 5, une référence pour le développeur web. Eyrolles, 2012. 000 p. ISBN 978-2-212-12982-3
JAULENT, Patrick. BATICLE, Luc. Microprocesseurs 68020 68030 et leurs coprocesseurs. Eyrolles, 1987. 000 p.
RÉMOND, Mickaël. Erlang programming. Eyrolles, 2003. 000 p. ISBN 2-212-11079-0
ARMSTRONG, Joe. Programming Erlang. Pragmatic Bookshelf, 2007. 000 p. ISBN 978-1-934356-00-5
ALLEN, Grant. L'art du développement Android, 4ème édition. Pearson, 2012. 000 p. ISBM 978-2-7440-2557-0
LANGBRIDGE, James A. Professional Embedded ARM Development. Wrox, 2014. 000 p. ISBN 978-1-118-78894-3

SYNTHÈSE DES COMPÉTENCES ACQUISES

Voici le radar du référentiel de compétences du diplôme Ingénieur Polytech Tours de la spécialité Informatique Industrielle visée. En violet le niveau final attendu (requis), en vert l’auto-évaluation (estimé).

Niveau	Définition
Expertise	Contribution personnelle à l'évolution de l'activité, voire transmission du savoir-faire associé
Maîtrise	Réalisation de l'activité en autonomie
Application	Réalisation de l'activité avec de l'aide
Notion	Connaissance de l'activité, mais sans réalisation personnelle

Le détail de chaque niveau ainsi par UE est disponible en annexe 13.2 page 113.

Niveau 0	Explication	Niveau attendu	Niveau acquis
C1	La capacité d’analyse et de synthèse mobilisant explicitement la connaissance et la compréhension d’un large champ de sciences fondamentales	M	E
C2	La maîtrise des méthodes et des outils transversaux de l’ingénieur	M	E
C3	L’aptitude à mobiliser les ressources d’un champ scientifique et technique spécifique	E	E
C4	La capacité à concevoir, concrétiser, tester et valider des solutions, des méthodes, produits, systèmes et services innovants	M	M
C5	La capacité à effectuer des activités de recherche fondamentale ou appliquée	A	M
C6	L’aptitude à prendre en compte les enjeux économiques de l’entreprise	A	M
C7	L’aptitude à prendre en compte les enjeux d’une « démarche RSE » au sein des organisations	A	M
C8	La capacité à s’intégrer dans une organisation, à animer et à faire évoluer une équipe pour stimuler de l'innovation	M	M
C9	L’aptitude à travailler en contexte international (la compétence sera également évaluée lors de l’expérience internationale obligatoire pour l’ensemble des élèves ingénieur)	A	M
C10	La capacité à se connaître, à s’auto-évaluer, à gérer ses compétences (notamment dans une perspective de formation tout au long de la vie), à opérer ses choix professionnels	A	E

ANNEXES

Voici la liste des pièces apposées en annexe.

Titre de l’annexe	N° et page
Référentiel du diplôme envisagé	13.1 / 102
Détail des compétences acquises	13.2 / 113
Évaluations YOU-TRUST	13.3 / 124
Recommandations YOU-TRUST	13.4 / 128
Refus poste ingénieur FENWICK	13.5 / 130
Devis Société Saônoise de Tiroirs	13.6 / 131
Attestation création auto-entreprise	13.7 / 132
Équipe TdB Digitaux Johnson Controls en 2002	13.8 / 133

Référentiel du diplôme envisagé

Le référentiel du diplôme visé, Ingénieur Polytech Tours, spécialité Informatique Industrielle, est disponible sur le site2 https://polytech.univ-tours.fr/formations/formations-d-ingenieurs/le-livret-de-l-etudiant-425361.kjsp?RH=1395832640487 de l’Université de Tours, sous la forme d’un document titré « Livret_Specialite_DII_2017_2018.pdf3 https://polytech.univ-tours.fr/medias/fichier/livret-specialite-dii-2017-2018_1511274235059-pdf?ID_FICHE=163044&INLINE=FALSE » de 184 pages. Les tableaux de référence des UE correspondantes situés en annexe 2 page 30 du document référencé sont dupliqués ci-dessous.

Année 3

Année 4

Année 5

Les UE n’étant pas identifiés clairement, le détail de chaque UE est présenté dans le tableau suivant en utilisant les codes disponibles dans le document titré « Livret_Specialite_DII_2017_2018.pdf » à partir de la page 40. Une synthèse du contenu pédagogique de chaque UE est aussi rappelé.

Code	U.E.	Année 3	Année 4	Année 5
Parcours de consolidation des prérequis et soutien	80h	50h	20h
E5ASOUT4	Soutien en anglais (selon test d’entrée)	20h	20h
???	Anglais en immersion	50h
???	Suivi en CRL (selon test d’entrée)	?	?
E5AMNMA8	Mathématiques Fonctions classiques, études de fonctions et calcul intégral Nombres complexes Suites numériques et suites de nombres complexes Systèmes linéaires Calculs matriciels et déterminants	20h
E5AMNIF8	Informatique Présentation de l’OS GNU / Linux Développement d’application 1 Chaîne de production d’un exécutable Codage de l’information Prise en main d’un système GNU/Linux Prise en main de l’IDE Code::Blocks – Premiers éléments de langage C Variables, opérateurs, structures de contrôle en langage C Déverminage – Tests unitaires – Plan de test	20h
45AMNEL4	Introduction à l'électronique Circuits et grandeurs électriques. Caractéristiques des principaux signaux. Analyse de circuits – Lois et théorèmes élémentaires Composants électroniques passifs : Résistor, condensateur, bobine et diode Caractéristiques fonctionnelles, techniques et applications ALI et structures élémentaires autour des ALI. Introduction à l’électronique numérique – Fonctions logiques et algèbre de Boole Prise en main de Multisim – Mise en œuvre d’analyses et simulations autour de dipôles résistifs Poursuite prise en main Multisim – Caractérisation de dipôles passifs, linéaires (R, L, C) ou non (Diode) Structures classiques à dipôles passifs (Pont diviseur, cellule RC…) Transistors en commutation (Bipolaire, MOS, étude de l’impact de la fréquence sur la consommation) ALI – Analyses et simulations autour des structures élémentaires. Fonctions numériques et portes logiques	20h
Mathématiques et modélisation E5AMATH4 E7AMATH4	118h	118h
E5AALGE4	Algèbre Systèmes d'équations linéaires L’algèbre matriciel et déterminant Les espaces vectoriels La diagonalisation de matrices L’orthogonalité et moindres carrés Les matrices symétriques Evaluation des compétences	50h
E5AANAL4	Analyse Les équations différentielles linéaires du premier ordre Les équations de Bernoulli et de Riccati Les équations linéaires du second ordre à coefficients constants Les systèmes différentiels à coefficients constants Les fonctions holomorphes Le théorème des résidus Evaluation des compétences	30h
E5APROB4	Probabilités et statistiques Connaitre des outils statistiques permettant d’analyser des volumes de données (tests) Statistiques descriptives, Probabilités élémentaires, Probabilités conditionnelles Lois de probabilités usuelles discrètes, lois de probabilités usuelles continues Théorèmes de convergences. Théorème Limite Centrale Exercices d'applications, Problèmes d'applications des statistiques	38h
E7AANNU4	Analyse numérique Introduction au logiciel Maple Régression et interpolation Différentiation, calcul de primitives et intégration approchée Résolution d’équations et de systèmes d’équations Calculs matriciels et diagonalisation Résolution d’équations différentielles Transformées de Fourier et Laplace	18h
E7AMOSI4	Modélisation et simulation Principes de la simulation ; avantages, inconvénients, limites Démarche de modélisation/simulation. Principes de la simulation à événements discrets Entités, ressources, files d’attente, processus, échéancier L’analyse des entrées (démarche pour trouver une VA à partir de données / absence de données) Sorties d'une simulation ARENA et leur interprétation Présentation rapide de l’environnement ARENA et des modules de base Mise en œuvre de la démarche de modélisation de type événements discrets sur des systèmes simples : écriture du modèle conceptuel, entrées nécessaires (et leur format), sorties pertinentes Traduction avec les modules Arena Modélisation et simulation de systèmes simples de production de biens ou de services avec Arena Réalisation d’animations graphiques simples, étude et interprétation des résultats, impacts de la variation des entrées aléatoires TP noté portant sur la réalisation et l’analyse de différents scénarios déterministes dans l’optimisation d’un système de production TP noté portant sur la modélisation et simulation d’un système stochastique	24h
E7AREOP4	Recherche opérationnelle Introduction à la recherche opérationnelle Graphes et applications Programmation mathématique linéaire Contrôle Terminal	30h
E7AROBT4	Robotique Outils mathématiques pour la robotique Le modèle géométrique direct Le mode géométrique inverse Les modèles différentiels La génération de trajectoires Contrôle terminal	26h
E7ASYED4	Système à évènement discret Les Systèmes stochastiques Les Systèmes déterministes Contrôle terminal	20h
Développement informatique embarquée E5ADEVE4 E7ADEVE4 E9ADEIE4	109h	127h	118h
E5ALAGC4	Langage C Les notions syntaxiques (types de données, variables, opérateurs, instructions, tableaux, pointeurs) du langage C Les structures de données complexes, allocation dynamique, tableaux, pointeurs, E/S,... du langage C Les outils de compilation, debug, IDE, préprocesseur, documentation du code Evaluation des compétences	36h
E5AALGO4	Algorithmique et structures de données L’écrire des algorithmes, choix et comparaison Les principales structures de données et leur mise en œuvre (liste chainée simple, double, tableau dynamique, arbres et parcours d'arbres, table de hachage, ...) La complexité d’un algorithme (temporelle, spatiale, ...)	32h
E5AMCBD4	Méthodologie de conception et base de données Le langage SQL : LDD/LMD Transactions et contrôle de concurrence Index : fonctionnement & utilisation Oracle : architecture Analyse et conception des systèmes d'Information (SI) : le SI de l'entreprise - les trois cycles du SI Le modèle entité-association : définitions (clés, contraintes d’intégrité), méthodologie Le modèle relationnel Dépendances fonctionnelles Processus de normalisation, formes normales Evaluation des compétences	38h
E5APROD4	Projet de mise en œuvre : développement Sujets divers réalisés en Binômes	3h+40h
E7AGELE4	Génie logiciel embarqué Présentation du paradigme objet et du positionnement de cette vision dans une démarche de Génie Logiciel et de Conduite de Projets Descriptif des différents diagrammes UML utilisables et illustrations sur des exemples (comme des systèmes d'information) Initiation à une méthodologie de modélisation Atelier de Génie Logiciel pour la génération automatique de code Contrôle terminal	30h
E7AJAVA4	Java Présentation de la technologie de base et des éléments de base du langage Les interfaces graphiques AWT et SWING Listeners, exceptions Présentation avancée du langage Prise en main de la plateforme : mise en œuvre des API standards de Java SE (collections, threads, réseau, ...)	32h
E7ALOOC4	Langage orienté objet (C++) Rappels sur la compilation, l’organisation mémoire des programmes et langage C Les structures et classes, l’encapsulation, le cycle de vie des objets et la structuration du code et du projet Quelques classes et objets standards du C++ L’héritage, le mécanisme de gestion des erreurs, la surcharge d’opérateurs et de méthodes Polymorphisme et méthodes virtuelles, intérêt spécifique à l’informatique embarquée et à la gestion du matériel D’autres classes et objets utiles, introduction à la STL Exemples de cibles embarquées supportant le développement en C++ Mise en œuvre	32h
E7AAUTO4	Automatisme Etude des automatismes programmés & câblés Etude des modes de marches et d’arrêts des systèmes automatisés Structure matérielle et logicielle d’un automate (norme IEC 61131-3) Conception de grafcets opérationnels : analyse fonctionnelle Transcription d’analyse grafcet Prise en main d’automates et API (codesys, automgen, unity et PL7) Contrôle terminal	30h
E7APRDE4	Projet de mise en œuvre : développement embarqué Sujets divers de développement embarqué réalisés en binômes.	3h+40h
E9AMOPR4	Mise en œuvre parallèle ou répartie Introduction, définition et problématiques Programmation multithread Communication entre thread, Contrôle d’exécution Méthodes de synchronisation (verrous, verrous récursifs, barrières de synchronisation ...) Programmation multiprocessus Communication entre processus Communication synchrone et asynchrone Algorithmes répartis Architecture pair à pair Contrôle terminal	32h
E9AMTOM4	Machine to machine Définition du M2M et exemples Les besoins fonctionnels L’architecture M2M Mise en œuvre et usage Problématiques et solutions Les internes d’une solution M2M Industrialisation : exploitation, reporting, supervision, ... Simulation de projet M2M : réponse à un appel d’offre Identification des problématiques et expression d’un cahier des charges Définition des acteurs, des cinématiques d’échanges Définition d’une architecture logicielle et d’ensemble du système Estimation de la volumétrie, chiffrage de la solution (build/run) Formalisation par une présentation de 20 minutes au cours de la dernière séance de TP Contrôle terminal	32h
E9AAPMU4	Application multimédia L’encodage, la transmission et le stockage des données multimédia Les codeurs de parole et l’algorithme MP3 L’algorithme JPEG et la synthèse d’image Les formats MPEG2 et MPEG4 pour la vidéo Les protocoles pour la transmission de flux multimédia (VoIP, VoD, IPTV, ...) L’encodage de flux audio et vidéo L’encodage d’image L’émission et réception de flux audio/vidéo (VoD, IPTV) La téléphonie sur IP (VoIP H323) Contrôle terminal	22h
E9ADVMO4	Développement mobile Définition et architecture d’un système mobile Les niveaux de développement sur système mobile La communication inter processus sur système mobile Exploitation des informations matériels (Camera, GPS, Gyroscope, ...) et projet de mise en application Développement d’application Cross Platform et d’application Web Contrôle terminal	32h
Conception des systèmes électroniques E5ACELE4 E7AELEC4 E9ACDSE4	119h	113h	102h
E5AMICR4	Microcontrôleur et langage Présentation de la structure interne du composant Les ressources internes disponibles Le fonctionnement en interruption Etude des ports parallèles Etude de la fonctionne convertisseur Etude de la liaison série SPI Etude des modes timers Evaluation des compétences	46h
E5AAFEN4	Approche fonctionnelle de l'électronique numérique Rôle des différentes fonctions élémentaires de l’électronique numérique Points d’entrée, de sortie, caractéristiques principales Caractéristiques spécifiques aux systèmes séquentiels, problématiques associées (systèmes synchrones, asynchrones…) Analyse et éventuellement synthèse de fonctions présentant un intérêt particulier (pédagogique et/ou technique) Les technologies actuelles des composants numériques, à architecture fixe (*TL / *MOS) ou programmable (PLD, CPLD, FPGA, ASIC) La réduction de la consommation d’un système numérique La synthèse de fonctions logiques. Introduction des HDL (Verilog, VHDL…) Evaluation des compétences	50h
E5AMDGP4	Mesure des grandeurs physiques Capteurs et chaîne de mesure Erreurs et incertitudes Conditionneurs Amplification d’instrumentation	20h
E5APROE4	Projet de mise en œuvre : électronique Mise en œuvre de systèmes électroniques réalisés en binôme	3h+40h
E7APHDL4	Programmation HDL Introduction aux langages HDL et au Verilog Les modèles de description en Verilog Analyse, décomposition, association de modules et généricité Modèle de conception par machine d’états Mise en pratique sur un exemple concret	26h
E7ACOML4	Co-conception matériel-logiciel Notion de Co Conception Matériel / Logiciel – Avantages et inconvénients Structure interne FPGA. Différences par rapport à un ASIC Flot de conception CoDesign. Intérêts de l’utilisation « d’IP Core », modèles économiques La plateforme Altera : Processeur NIOS II, Bus Avalon Mise en œuvre : system builder QSYS, Quartus et Altera Monitor Program Mise en œuvre : Utilisation d’un SDRAM externe. Développement logiciel avec NBT Mise en pratique sur un exemple concret	18h
E7ATDSF4	Traitement du signal et filtrage Analyse de Fourier La numérisation du signal Le filtrage linéaire et invariant dans le temps Les aspects aléatoires en traitement du signal (moments statistiques, corrélation, stationnarité, ergodisme, biais, ...) Les opérations de filtrage : optimal, Wiener Décomposition dans une base de représentation	28h
E7ACDPG4	Commande des systèmes dynamiques et prog. Graphique Etude des systèmes dynamiques analogiques La correction analogique: la synthèse en fréquence, le correcteur à avance/retard de phase et le correcteur PID Étude des systèmes numériques et discrétisation des lois de commande analogique La correction numérique: la synthèse par placement de pôle, le PID numérique et ses variantes et le régulateur RST Initiation à la programmation graphique	38h
E7APREL4	Projet de mise en œuvre : électronique Mise en œuvre en binôme de projets d’Electronique numérique embarquée	3h+40h
E9AINDC4	Instrumentation de la commande Les spécifications des lois de commande déterministe et cible temps réel La conception de code graphique déterministe (découpage, affectation et cadencement) La structure de programmation graphique avancée Illustrations et mises en œuvre diverses : Pendule et pendule inverse, Bras élastique, Débit d’air dans une tuyère, niveau de fluide dans une cuve	18h
E9APSTN4	Processeur spécialisé traitement numérique La structure d'un DSP de la famille C6000, le CPU, sa mémoire, l’organisation des bus et ses périphériques L’arithmétique des DSP (virgules fixe et flottante). Présentation des périphériques du DSP C6713 La gestion des interruptions sur les DSP. L’assembleur du DSP C6713 Travaux pratiques : Prise en main de Code Composer Studio (éditeur, debugger, profilage), programmation de routines simples en C (accumulation) et assembleur (MAC et boucles), implantation de filtres RIF, RII et adaptatif écrits en C avec routine assembleur écrit en C Comparaison des performances et optimisation	28h
E9AFISF4	Fiabilité des systèmes et sûreté de fonctionnement Principe de la Sûreté de Fonctionnement (FMDST) dans les systèmes Analyse des Modes de Défaillance, de leurs Effets et de leur Criticité (AMDEC) Arbres de défaillance Évaluation des activités de FMDS Sécurité fonctionnelle des systèmes et du logiciel Présentation de la fiabilité et de ses notions (principes généraux) Représentation des systèmes (diagramme de fiabilité), évaluation de leur durée de vie et de leur disponibilité Ouverture à la fiabilité en informatique et à la gestion des systèmes informatiques : Applications de l’arbre des défaillances, plan de reprise d'activité, traçabilité, ... Contrôle Terminal	26h
E9AECDP4	Écriture des pilotes Base des pilotes de périphériques Les interfaces Ethernet et USB Les pilotes de périphérique sous Linux Les pilotes de périphérique sous Windows	30h
Réseau et système E5ARESY4 E7ARESY4 E9ARESY4	146h	142h	98h
E5ATRSI4	Transmission du signal et de l'information Présentation des techniques de codage/modulation et des supports de transmission actuels : supports filaire, fibres optiques et radio (réseaux cellulaires ou locaux sans fil) Description des concepts de base de la théorie de l'information, plus particulièrement appliqués à la transmission de l’information sur un canal bruité: source d’information, entropie, canal, information mutuelle, théorème du traitement de l’information Mise en œuvre de la théorie de l'information au domaine de la compression Présentation des propriétés générales des compacteurs et illustration sur les différents algorithmes utilisables : statistiques, de type dictionnaire, mixtes et jusqu'au techniques de compression avec perte d'informations Introduction aux codages correcteurs d'erreurs placés dans le contexte des communications numériques : centrés autour de la définition des codes linéaires, cycliques et convolutifs ainsi que du calcul des performances d'un canal de communication Description des méthodes de cryptage des informations : présentation des algorithmes classiques (DES, Système RSA, ...), architectures des systèmes symétriques et asymétriques, infrastructure PKI et protocoles sécurisés pour le commerce électronique (SSL, ...) Contrôle Terminal	18h
E5ABMTS4	Bases mathématiques pour le traitement du signal La Transformée de Fourier, le contexte et les propriétés La série de Fourier : un cas particulier de la TF (approche mathématique et graphique) Illustrations La Transformée de Laplace, définition intégrale et Transformée des signaux élémentaires Propriétés fondamentales et importantes de la TL Les outils mathématiques pour l’échantillonnage idéal et la représentation en fréquence des signaux échantillonnés Discussion sur la réversibilité de l’échantillonnage : Th Shannon et la reconstruction du signal à temps continu Les propriétés fondamentales et les méthodes de retour à l’original Applications Evaluation des compétences	40h
E5APFSE4	Principes fondamentaux des systèmes d'exploitation Architecture des ordinateurs Présentation Générale et historique (évolutions parallèles de l'architecture des ordinateurs et des SE) Les fonctions centrales ou Noyau Système multiprogrammé - Gestion de la mémoire Virtuelle Gestion des Entrées/ Sorties Système de Gestion de Fichiers Mise en œuvre des outils de synchronisation, de la gestion mémoire et de la gestion des systèmes de stockage Programmation multitâche avec la bibliothèque pthread Evaluation des compétences	46h
???	Principes et normes des réseaux Les concepts de base des réseaux L’organisation et les concepts généraux d’un réseau (Modèle OSI, ...) Choix d’une architecture et fonctionnement des LAN (Switch, hub, Vlan, ...) Interconnexion de réseaux : Adressage IP, routage, TCP/UDP, ATM Mise en place les services applicatifs minimum pour la gestion en réseau d’ordinateurs (DNS, DCHP, ...) Evaluation des compétences	42h
E7ASYTE4	Système embarqué Introduction, terminologie et présentation du contexte Les outils de développement logiciel en embarqué Le bootloader Les systèmes d’exploitation Présentation des fondamentaux sur les OS Spécificités des systèmes embarqués à travers Linux Hyperviseurs Architecture Firmwares Etudes de cas réels : Set Top Box, module GSM, IoT Contrôle terminal	36h
E7ASYTR4	Système temps réel Introduction au temps réel Les principes fondamentaux des systèmes temps réel, cas sans partage de ressources Les principes fondamentaux des systèmes temps réel, cas avec partage de ressources Les standards temps réel, cas d’usage et étude de système Contrôle terminal	36h
???	Principes et normes des réseaux	(42h)
E7ARDTS4	Réseaux de terrain, supervision Les principaux réseaux de terrains, le protocole OPC Les objectifs et fonctions d'un logiciel de supervision Le réseau CAN en détails Découverte d’un logiciel de simulation pour réseau CAN (CANoe) Etude de protocoles applicatifs sur réseau CAN Projet mêlant supervision et réseaux de terrain Mise en œuvre réseau CAN	28h
E9AADSW4	Administration d'un site web Administration et architecture d’un site web Langages de programmation web (HTML5, JavaScript, ...) Le développement de service web JavaScript, PHP, MySQL	18h
E9AOUFO4	Outils formels Introduction à la gestion des exigences logicielles Introduction aux méthodes et langages formels Une introduction à la gestion de configuration Une introduction à la gestion des évolutions et anomalie Etudes de cas (spécification système, spécification logicielle (exigence), plan GC, "gestion projet", ...) Ecriture des exigences logicielles "formellement", génération matrice traçabilité avec spécification système Ecriture de la conception préliminaire sous forme d'exigence de base : niveau (modèle) + codage d'un module Etude/analyse des solutions possibles de GC (problématique liée au sujet de base) Etude de l'impact d'une détection d'anomalie et de la demande d'évolution Ecriture des exigences logicielles de haut niveau sous DOORS + éditions des liens de traçabilité Saisie des planches du modèle sous SCADE implémentant les exigences logicielles de haut niveau définies au TP1 + génération de code avec KCG + étude de la traçabilité entre conception SCADE et spécification DOORS Mise en place de l'environnement de GC + mise en configuration sous CLEARCASE Editer une fiche de demande d'évolution et une fiche de détection d'anomalie sous CLEARQUEST + modifications des éléments impactés + remise en configurations des éléments modifiés + suivi des fiches prises en compte	28h
E9ATCSF4	Technologies sans fil Les transmissions numériques modulées nécessaires à l’établissement d’une communication sans fil pour les réseaux cellulaires GSM et UMTS Les codages avancés en WIFI et Bluetooth Etude des différents éléments de la chaîne de transmission (codage et compression) pour la Télévision Numérique Terrestre Réseaux sans fil et sécurité (TCP/IP : IP , UDP et TCP, DHCP et DNS, FIREWALLING, NAT et PROXY, RIP et OSPF Réseaux sans fil et sécurité : La cryptographie pour les réseaux Réseaux sans fil et mobilité : VPN, IPV6, LAN Ethernet « moderne » WIFI Couche 2 et sécurisation (802.1x et RADIUS) Exemples d’application sur VPN, Tunnel SSH et HTTPS Exemples d’application Contrôle terminal	32h
E9AADDS4	Administration des systèmes Introduction à l’administration des systèmes L’administration d’un système Windows et d’un système Unix Les grands thèmes de l'administration système Philosophie de l'administration système Le rôle de l'administrateur Installation et mise en place d'un système Le dépannage, un cas concret : Polytech Tours Mise en œuvre de Windows Server et AD + Mise en œuvre sur Unix/Linux	20h
Gestion de projets E7AGPRO4 E9AGPRO4	52h	45h
E7ACPRO4	Conduite de projet Présentation, les différents acteurs MOA, MOE et leurs relations La structuration du projet L’estimation des charges La planification des délais Le suivi et le pilotage Les managements des risques La qualité et la documentation Les méthodes Agiles Initialisation au référentiel ITIL Initiation à la méthode de pilotage de projet PRINCE Initiation à la maîtrise des risques et mise en pratique	30h
E7APRCO4	Projet collectif réseau et système Mise en œuvre de systèmes embarqués communicants en groupes de 5 à 8.	12h+40h
???	Management de projets - conduite participative	10h
E9APPFE4	Projet Fin d’Etude (PFE)	5h+120h
E9ACPFE4	Conduite de Projet Fin d’Etude (PFE)	30h
???	Management de projets - conduite participative	10h
Shejs (Sciences Humaines, Économiques, Juridiques et Sociales) et Anglais E5ASHEJ4 E7ASHEJ4 E9ASHEJ4	144h	136h	90h
E5ANGL4	Anglais scientifique et anglais de spécialité Développement de l’expression écrite et orale Compréhension écrite et orale Etude de textes d’actualité, scientifiques et techniques Etude de documentaires et films Exposé et débats	80h
EA5JDCE4	Jeux de création d’entreprise Avoir des notions de comptabilité et d’économie Savoir lire et analyser un bilan Savoir concevoir un budget Savoir réaliser un plan marketing et Ressources Humaines Mettre en place un plan stratégique	14h
E5AINTC4	Interculturalité Ouvertures aux cultures Préparation aux séjours internationaux	8h
E5AEPIS4	Épistémologie	10h
E5ADEVD4	Développement durable L’état écologique de notre planète Les différentes conceptions sur la « durabilité/sustainability » dans les contextes écologiques, économique, et dans les sciences de la société La planète comme un hypersystème cybernétique Reconnecter les circuits interrompus Champs d’action en cas d’étude Le Plan vert de Polytech	10h
E5AQVTD4	Droit du travail Introduction au droit du travail : les sources du droit du travail (lois, conventions collectives, accords d’entreprise), les acteurs du droit du travail (l’employeur le salarié, les représentants du personnel, l’inspection du travail, ...) L’entrée dans l’entreprise : les règles applicables au recrutement, le contrat de travail (CDD, CDI, clauses facultatives du contrat de travail, ...) La vie dans l’entreprise : le temps de travail (application et aménagements des 35 heures, temps partiel, ...), la formation professionnelle, les congés (congés payés, congés liés à la famille, ...), la rémunération La fin du contrat de travail : la démission, le licenciement, la retraite, la rupture conventionnelle Contrôle terminal	12h
???	Management de projet et conduite participative	10h
E7AANGL4	Anglais professionnel et préparation TOEIC Anglais professionnel Préparation au TOEIC	80h
E7ACPIP4	Communication personnelle et insertion professionnelle Les bases du management des ressources humaines / management des talents, gestion de carrière Les modalités de recrutement (procédure, cabinets, attendus des DRH, ...) La démarche stratégique de recherche d'emploi Les principes de la communication positive (communication en milieu professionnel, prise de parole, structuration de la pensée, échanges, ...) Les leviers de la motivation (motiver les autres, se motiver, ...) Savoir faire le point de ses compétences, savoir parler de sa personnalité (se préparer à la passation de tests de personnalité) et de son projet professionnel Rédaction de curriculum vitae Rédaction de lettre motivation Eléments de communication interpersonnelle (savoir se présenter, savoir s'adresser aux autres) Préparation et mise en situation d’entretien de recrutement Présence sur les réseaux sociaux professionnels Contrôle terminal	24h
E7AQDVT4 E9AQDVT4	Qualité de vie au travail Management des Ressources Humaines Evaluation des risques professionnels / Mesures de prévention	22h	4h
E7ADRDI4	Droit de l'informatique Les grands principes de la propriété intellectuelle La protection juridique des bases de données La protection juridique des logiciels Les principaux contrats d’informatique (contrats de licence de logiciels, contrats de maintenance informatique, contrats d’hébergement de site Internet, contrats d’externalisation) Informatique et sécurité des biens et des personnes (loi Informatique et Liberté relative à la protection des données personnelles, et cybercriminalité) Contrôle terminal	10h
E9AANGL4	Anglais Actualités et média Ingénieur et éthique La mondialisation Le développement durable La communication La prise de parole en public / réunions Soutien6 (Concernant uniquement le groupe n’ayant pas obtenu le TOEIC en année 4 )	40h
E9ASTDE4	Stratégie d'entreprise Quelques définitions et présentation des objectifs de la stratégie Le diagnostic stratégique : de l'analyse externe à l'analyse interne La prise de décision stratégique Illustration sur des exercices d'application, études de cas, mises en situation, cas d'illustration. Contrôle terminal	20h
E9AMARK4	Marketing Introduction Le comportement du consommateur Les études de marché Le marketing stratégique Le marketing opérationnel Exercices d'application, études de cas, mises en situation Contrôle terminal	16h
E9ABISP4	Business plan Quelques rappels de notions de Gestion d’entreprise L’intérêt de faire un business plan, quand le faire ? pour qui ? Le contenu du business plan Le budget et le plan de financement Illustration sur deux cas concrets de projets d’entreprise Contrôle terminal	10h
Habitat intelligent (option) E9AOPHI4	64h
E9ADOMO4	Domotique L’évolution de l’habitat et ses fonctionnalités attendues Définition des principales notions liées à l’habitat intelligent Technologies Courants Porteurs en Ligne Problématique des réseaux de capteurs sans fil Technologies des nœuds de capteurs et protocoles de routage La technologie sans fil Zigbee Mise en œuvre : protocoles sans fil Enocean et Bluetooth low energy Contrôle terminal	28h
E9AGEDE4	Gestion de l'énergie La production de l’énergie électrique Le fonctionnement d’un alternateur industriel La nécessité de la haute tension Les techniques de production de l’électricité (centrales hydroélectriques à accumulation et au fil de l’eau, centrales nucléaires, éoliennes, centrales photovoltaïques, hydroliennes, piles à combustible) Le transport de l’électricité La problématique du transport et de la variation de la demande d’énergie électrique Le réseau public français de transport de l’électricité (de 400 kV à 63 kV) La distribution de l’énergie électrique Le réseau et postes de distribution HTA / BT L’alimentation des installations électriques La conversion de l’énergie électrique Les principaux convertisseurs statiques L’exemple de dimensionnement de structures tenant en compte du rendement de conversion La notion de qualité de la puissance convertie	20h
E9AAUPH4	Automatisme pour l'habitat Le principe d'une installation communicante Les solutions filaires, radio et mixtes La mise en œuvre et règles d'installation La configuration d'une installation avec l'outil TX100 Les intérêts d’une interface graphique pour l'utilisateur final Le principe de fonctionnement de logiciel propriétaire « domovea » L’installation et la configuration du logiciel présenté Contrôle terminal	16h
Systèmes de transport intelligents (option) E9AOSTI4	64h
E9ANSAU4	Norme et standards pour l'automobile Introduction to Automobile standards Standards and challenge for Automotive Industry Communication standards for IV Autosar and normative ISO – 26262- Some project in EU Standards for Electric Vehicles Standards for ITS Future Works Contrôle terminal	24h
E9AVIDE4	Véhicule intelligent dans son environnement Evolution des systèmes de transport intelligents (STI) Présentation, histoire, principaux projets, les objectifs, la portée et les travaux futurs de la STI Conduite de véhicules autonomes. Architecture, commandes latérales et longitudinales, des actionneurs et des applications Systèmes avancés d'aide à la conduite (ADAS) ADAS systèmes embarqués et de fonctionnement Sécurité : Systèmes perceptifs Les cybercars : Le concept porte à porte : exigences et caractéristiques, démonstrations, projets. Systèmes de perception pour l´environnement Motion Planning pour Véhicules Intelligent Applications commercialisées dans les STI Infrastructure Intelligents Les travaux futurs et de la recherche Les techniques de contrôle intelligent pour les véhicules autonomes Les normes et règlements en matière de STI. Norme actuelle La simulation d’un peloton ou d’un régulateur de vitesse adaptatif avec Matlab (Simulink), en utilisant les modules de réalité virtuelle L’utilisation de Modelés : pour le gestion temps réel de données asynchrones issues de capteurs Contrôle terminal	22h
E9ARMDT4	Routage et modélisation du trafic Introduction aux problèmes de tournées de véhicules (VRPs) Motivation : Pourquoi étudions-nous les VRPs ? Formulations : modélisations des flux de véhicules, modèles set-partitioning Variantes du VRP : Fenêtres de temps, contraintes de couplage véhicule-site, multi-compartiment, camion et remorque, tournées reguliers, VRPs stochastiques, VRPs dynamiques, VRPs électriques, problème de routage, pollution, ... Heuristiques Classiques et modernes pour VRPs L'algorithme de Clarke et Wright « savings algorithm » ; heuristique « clusterfirst, route-second » ; Heuristique «order-first, split-second » ; heuristiques d'amélioration ; heuristique « look-ahead » ; heuristique « multi-space sampling heuristic » Metaheuristiques pour les VRPs Métaheuristiques ; algorithmes évolutionnaires ; Large Neigborhood Search ; recherche locale Modélisation de trajets et les temps de service en VRPs Time-dependent VRPs ; VRPs avec temps de parcours et de service stochastiques (simulation stochastique, distributions) ; VRPs avec temps de parcours stochastiques et corrélés	18h
Parcours industriel (en entreprise)	380h	520h	800h
???	Communication et insertion professionnelle	40h	40h	40h
???	Environnement économique de l'entreprise	10h	10h	10h
???	Qualité de vie au travail	10h	10h	10h
???	Cartographie des compétences, tutorat et suivi de l'alternance	40h	40h	40h
???	Projet industriel année 3	280
???	Projet industriel année 4	420h
???	Projet industriel année 5	700h

Tableau 7: Référentiel détaillé de la spécialité Informatique Industrielle

Détail des compétences acquises

Voici le détail et le contexte de l’acquisition de chaque compétence en rapport avec le référentiel détaillé donné ci-dessus en annexe 13.1 page 102. La synthèse de ce tableau est disponible au chapitre 12 intitulé SYNTHÈSE DES COMPÉTENCES ACQUISES page 100.

Niveau 0 Code	Explication	Niveau attendu	Niveau acquis
C1 E5ADEVE4 E7ADEVE4 E5ACELE4 E7AELEC4	La capacité́ d’analyse et de synthèse mobilisant explicitement la connaissance et la compréhension d’un large champ de sciences fondamentales Développement informatique embarquée Développement informatique embarquée Conception des systèmes électroniques Conception des systèmes électroniques	M N M A M	E E E A M
1.1 E5AMATH4 E7AMATH4	Maîtriser des outils mathématiques et les méthodes statistiques Mathématiques et modélisation Mathématiques et modélisation	A M	A M
Utilisation de modèles mathématiques pour le choix des algorithmes et structures de données
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	A M M	M M M
Utilisation des concepts mathématiques sous-jacents aux systèmes électronique complexes
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	N A A	M M M
Dimension d’un système à l’échele globale
1.2 E5AMATH4 E7AMATH4	Manipuler et analyser des données complexes, structurées ou non, en vue d'extraire des informations pertinentes, de valider des hypothèses ou d’extrapoler Mathématiques et modélisation Mathématiques et modélisation	A M	A M
Traitement du signal avec des modèles mathématiques adaptés au domaine physique
E5ADEVE4 E7ADEVE4 E9ADEIE4	Développement informatique embarquée Développement informatique embarquée Développement informatique embarquée	A N M	E E M
Filtrage de données avec utilisation d’algorithmes de type Map-Reduce
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	N A M	E A M
Analyse d’une architecture système électronique et proposition de résolutions de problèmes
E5ARESY4 E7ARESY4	Réseau et système Réseau et système	A M	E E
Utilisation de structures de données adaptées,
E9AGPRO4	Gestion de projets	M	M
Alayse des cahiers des charges et spécifications en vue de l’organisation des projets
1.3 E5AMATH4 E7AMATH4	Analyser et résoudre des problèmes d’optimisation ou de décision, et analyser l'efficacité d'un algorithme Mathématiques et modélisation Mathématiques et modélisation	N A	N A
Création d’une librarire mathématique et d’algorithmes de traitement de signal
E5ADEVE4 E7ADEVE4	Développement informatique embarquée Développement informatique embarquée	N M	E E
Utilisation de structures de données pour l’optimisation fonctionnelle (place mémoire, temps)
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	A E M	E E M
Optimisation des latences du système
E9AGPRO4	Gestion de projets	M	M
Amélioration continue d’un projet (phases incrémentales, méthode agile)
E9AOSTI4	Systèmes de transport intelligents (option)	M	?
n-a
1.4 E5AMATH4	Analyser des signaux analogiques ou numériques en vue de leurs traitements Mathématiques et modélisation	N	N
Application d’algorithmes et de modèles mathématiques
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	A M M	A M M
Mise en place d’algorithmes de traitement du signal
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	A M M	A M M
Traitement de données en temps-réel ou en post-traitement (signal sonore, capteurs, image)
1.5 E5ACELE4 E7AELEC4 E9ACDSE4	Maîtriser les principaux concepts fondamentaux de l'électronique Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	M M M	E M E
Programmation embarquée temps-réel pour traitement de signal
E9AOSTI4	Systèmes de transport intelligents (option)	A	?
n-a
C2 E7ADEVE4 E9AGPRO4	La maitrise des méthodes et des outils transversaux de l’ingénieur Développement informatique embarquée Gestion de projets	M A M	E E M
2.1 E5AMATH4 E7AMATH4	Identifier, modéliser et résoudre des problèmes même non familiers et/ou incomplètement définis Mathématiques et modélisation Mathématiques et modélisation	N M	N M
Découpage et application de modèles mathématiques adaptés au traitement du signal
E5ADEVE4 E7ADEVE4	Développement informatique embarquée Développement informatique embarquée	A A	E E
Résolution de problème par architecture innovante et pérenne, optimisation du système
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	A A A	M M A
Résolution de problèmes électroniques par découpage en problèmes élémentaires
E7ARESY4 E9ARESY4	Réseau et système Réseau et système	M M	M M
Recherche et développement de solutions adaptées ou alternatives aux problèmes
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	A M	M M
Utilisation de sources d’informations complémentaires, échanges avec des spécialistes
2.2 E5AMATH4 E7AMATH4	Utiliser les outils informatiques adéquats Mathématiques et modélisation Mathématiques et modélisation	A M	A M
Modélisation mathématique de traitement numérique
E5ADEVE4 E7ADEVE4 E9ADEIE4	Développement informatique embarquée Développement informatique embarquée Développement informatique embarquée	M M M	E E M
Utilisation des langages et modèles de données adaptés aux problèmes
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	M M M	M M M
Utilisation de logiciels de simulation et de CAO
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	M M M	M M M
Recherche, analyse te utilisation d’outils métier adaptés à chaque domaine
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	M M	M M
Organisation d’un projet à l’aide de différents outils collaboratifs et de reporting
E9AOPHI4	Habitat intelligent (option)	M	?
n-a
E9AOSTI4	Systèmes de transport intelligents (option)	M	?
n-a
2.3 E7AMATH4	Analyser et concevoir des systèmes complexes Mathématiques et modélisation	A	A
Création d’algorithmes de modélisation mathématiques
E5ADEVE4 E7ADEVE4 E9ADEIE4	Développement informatique embarquée Développement informatique embarquée Développement informatique embarquée	N A A	E E E
Architecture et conception d’un système d’exploitation temps-réel orienté IoT
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	N A A	E A E
Conception de circuits électroniques numérique secondaires (extension)
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	N M E	E E E
Conception, architecture et réalisation d’un système d’exploitation (bas à haut niveau)
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	A M	M M
Organisation structurelle hiérarchique des tâches à réaliser (macro, micro, unitaire)
2.4 E5ADEVE4 E7ADEVE4 E9ADEIE4	Trouver l’information pertinente, l’évaluer et l’exploiter Développement informatique embarquée Développement informatique embarquée Développement informatique embarquée	A A M	E E M
Analyse des informations à architecturer, évaluation de la pertinence et organisation
E5ACELE4 E7AELEC4	Conception des systèmes électroniques Conception des systèmes électroniques	A A	E M
Recherche et analyse de documentations techniques constructeurs, veille technologique
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	M M	E E
Organisation des différents éléments dans des documents de spécification et d’architecture
2.5 E5ADEVE4 E7ADEVE4	Piloter et gérer des projets dans sa spécialité Développement informatique embarquée Développement informatique embarquée	N A	E E
Conception et réalisation d’un système d’exploitation temps-réel orient IoT
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	N A M	E M M
Conception de parties numériques en prenant en compte des contraintes temps-réel
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	M M	E M
Organisation et animation de réunion d’avancement, relation client-fournisseur
2.6 E5ADEVE4 E7ADEVE4	Maîtriser la communication scientifique et technique Développement informatique embarquée Développement informatique embarquée	A A	E E
Rédaction de documentation d’architecture logicielle, formation de collaborateurs
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	A A A	A A A
Rédaction de documentation et échange en utilisant les termes appropriés
E7ASHEJ4	Réseau et système	A	M
Appropriation des systèmes et outils nécessaires à la réalisation d’un projet
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	A A	M M
Utilisation de sources d’information métier et communication vers les collaborateurs
E5ASHEJ4 E9ASHEJ4	Shejs et Anglais Shejs et Anglais	A M	M M
Communication anglophone sur divers supports (rédaction d’articles)
C3 E5ADEVE4 E7AELEC4 E9AGPRO4	L’aptitude à mobiliser les ressources d’un champ scientifique et technique spécifique Développement informatique embarquée Conception des systèmes électroniques Gestion de projets	E A M E	E E M E
3.1 E5ADEVE4 E7ADEVE4 E9ADEIE4	Maîtriser les différents aspects du développement d'un système informatique, électronique, ou mixte, qu'ils soient techniques, fonctionnels, organisationnels ou humains, en intégrant le cas échéant les contraintes liées à l’embarqué Développement informatique embarquée Développement informatique embarquée Développement informatique embarquée	A M E	E M E
Réalisation de programmes dans des domaines industriels variés spécifiques (auto, mobile)
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	A M E	M M E
Écriture de pilotes bas niveau pour DSP avec prise en compte de contraintes sécuritaires
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	A M E	M E E
Réalisation d’une interface web avec base de données
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	A E	M E
Organisation des différents éléments constitutifs des projets
E5ASHEJ4 E7ASHEJ4 E9ASHEJ4	Shejs et Anglais Shejs et Anglais Shejs et Anglais	N N A	M M M
Prise en compte de contraintes économique, énergétiques et écologiques
3.2 E5ADEVE4 E7ADEVE4 E9ADEIE4	Maîtriser la conception, le déploiement et l'administration d'un système embarqué, ainsi que la co-conception d'un SOPC Développement informatique embarquée Développement informatique embarquée Développement informatique embarquée	A M M	E M M
Partage de sous-ensembles logiciels en fonction des capacités des langages utilisés
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	A M M	M M M
Programmation logique et visuelle sur plateforme numérique (Spartan, Cyclone)
E5ARESY4 E7ARESY4	Réseau et système Réseau et système	A M	E E
Conception d’un système d’exploitation temps-réel
E9AGPRO4	Gestion de projets	M	M
Contrôle de l’avancement des tâches dédiées
E9AOSTI4	Systèmes de transport intelligents (option)	N	?
n-a
3.3 E7ADEVE4	Maîtriser les différents aspects des sytèmes d'exploitation, de leur mise en œuvre à leur intégration dans les systèmes inter-opérants Développement informatique embarquée	M	E
Conception d’un système d’exploitation embarqué temps-réel communicant
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	A E E	E E E
Architecture d’un système d’exploitation modulaire communicant
E9AGPRO4	Gestion de projets	E	E
Partage des tâches et suivi de l’avancement de celles-ci
3.4 E5ADEVE4 E7ADEVE4 E9ADEIE4	Maîtriser les communications réseaux entre systèmes hétérogènes, notamment dans un environnement industriel ou dans un contexte d’objets communicants Développement informatique embarquée Développement informatique embarquée Développement informatique embarquée	A M M	M M M
Utilisation des capacités communicantes de divers périphériques en mode co-opératif et/ou maître-esclave
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	A M E	M M E
Mise en œuvre de modules de traitement dédiés et mode co-processeur
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	A M M	M M M
Gestion des communications par un système de messagerie multi-protocolaire (modèle OSI)
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	A M	M M
Suivi de l’évolution fonctionnelle des projets (phase préliminaire à production)
E9AOPHI4	Habitat intelligent (option)	M	?
n-a
E9AOSTI4	Systèmes de transport intelligents (option)	A	?
n-a
3.5 E7AELEC4 E9ACDSE4	Mettre en œuvre des solutions pour la commande de systèmes dynamiques ou la conduite de tests automatisés Conception des systèmes électroniques Conception des systèmes électroniques	A A	M M
Conception et réalisation d’un banc de test pneumatique programmé en Labview
E9AGPRO4	Gestion de projets	M	M
Rapports de tests manuels ou automatiques pour suivre l’avancée des développements
C4 E7ADEVE4 E7AELEC4 E9AGPRO4	La capacité à concevoir, concrétiser, tester et valider des solutions, des méthodes, produits, systèmes et services innovants Développement informatique embarquée Conception des systèmes électroniques Gestion de projets	M M M M	M M M M
4.1 E5ADEVE4 E7ADEVE4 E9ADEIE4	Savoir spécifier et analyser un système informatique, électronique ou mixte, réaliser et justifier les choix technologiques Développement informatique embarquée Développement informatique embarquée Développement informatique embarquée	A M M	E M M
Rédaction de spécification fonctionnelle d’un logiciel d’après un cahier des charges
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	N M M	M M M
Conception et réalisation de circuits imprimés, vérification et validation par tests unitaires
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	A M E	M M M
Création d’une topologie réseau sans fil modulaire et adaptative
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	M M	M M
Présentation des différents documents produits et validation par la hiérarchie
4.2 E5ADEVE4 E7ADEVE4 E9ADEIE4	Maîtriser et savoir mettre en œuvre les diverses étapes de modélisation et de conception d’un système informatique, électronique ou mixte Développement informatique embarquée Développement informatique embarquée Développement informatique embarquée	A M M	M M M
Architecture de parties élémentaires avec des interfaces logicielles standardisées
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	N M M	M M M
Partage des besoins numériques sur des solutions adaptées (DSP, FPGA, SOC, ...)
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	A M M	M M M
Mise en place d’un système de validation unitaire et fonctionnelle d’un système d’exploitation
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	M M	M M
Organisation des différents collaborateurs spécialistes
4.3 E5ADEVE4 E7ADEVE4 E9ADEIE4	Maîtriser l'implémentation des différentes fonctions d’un système informatique, électronique ou mixte Développement informatique embarquée Développement informatique embarquée Développement informatique embarquée	M M M	E M M
Programmation en divers langage (assembleur, C/C++, Java, …) et usage de bibliothèques
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	A M M	M M M
Conception de briques matérielles spécialisées (électronique numérique)
E5ARESY4 E7ARESY4 E9ARESY4	Réseau et système Réseau et système Réseau et système	A M M	M M M
Conception d’un système d’exploitation orienté IoT
E7AGPRO4	Gestion de projets	M	M
Respect des méthodologies de développement et formalisation de documentation de suivi
4.4 E5ADEVE4 E7ADEVE4	Savoir tester, valider et mettre en production un système informatique, électronique ou mixte. Développement informatique embarquée Développement informatique embarquée	A A	E M
Utilisation de sondes de développement (JTAG, SWD, ETM) et de débogueur haut niveau
E5ACELE4 E7AELEC4	Conception des systèmes électroniques Conception des systèmes électroniques	N A	A A
Gestion des niveaux d’alimentation et vérification électronique (oscilloscope) de l’ensemble
E9ARESY4	Réseau et système	M	M
Configuration et utilisation d’une interface web de contrôle de périphériques IoT
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	M M	M M
Organisation de l’assemblage des différents composants d’un projet une fois validés
E9AOSTI4	Systèmes de transport intelligents (option)	A	?
n-a
4.5 E5ADEVE4 E7ADEVE4	Savoir faire une analyse critique et un retour d’expérience (Feedback) Développement informatique embarquée Développement informatique embarquée	A A	E M
Analyse d’erreur logicielle, identification de la source et de la cause de l’exception
E5ACELE4 E7AELEC4 E9ACDSE4	Conception des systèmes électroniques Conception des systèmes électroniques Conception des systèmes électroniques	N A A	A A A
Réalisation de plans de test, amélioration par l’utilisation de composants plus adaptés
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	M M	M M
Compilation des retours d’expérience, organisation d’un développement amélioratif
C5 E7AELEC4 E9AGPRO4	La capacité à effectuer des activités de recherche fondamentale ou appliquée Conception des systèmes électroniques Gestion de projets	A A M	M
5.1 E7AMATH4	Intégrer ou prescrire une démarche R&D, en particulier dans une perspective d'innovation Mathématiques et modélisation	N	A
Identification et utilisation des outils mathématiques les plus adaptés
E5ADEVE4 E7ADEVE4	Développement informatique embarquée Développement informatique embarquée	N A	E M
Architecture logicielle, choix des outils de développement
E5ACELE4 E7AELEC4	Conception des systèmes électroniques Conception des systèmes électroniques	N A	A A
Choix structurel et des composants d’un système électronique
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	A M	M M
Modification du processus en vue de l’adapter à des besoins spécifiques
E9AOPHI4	Habitat intelligent (option)	A	?
n-a
E9AOSTI4	Systèmes de transport intelligents (option)	A	?
n-a
5.2 E7AMATH4	Savoir se positionner par rapport à l’existant, réaliser une veille technologique et un état de l’art Mathématiques et modélisation	A	A
Veille technologique, analyse des besoins, dialogue avec des collaborateurs spécialisés
E5ADEVE4 E7ADEVE4	Développement informatique embarquée Développement informatique embarquée	A A	E M
Analyse des projets existants, évaluation de la réutilisation possible de composants logiciels
E5ACELE4 E7AELEC4	Conception des systèmes électroniques Conception des systèmes électroniques	A A	A A
Analyse des projets existants, évaluation de la réutilisation possible de composants matériels
E7ARESY4	Réseau et système	A	A
Création et modification topologique de réseau informatiques
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	M E	M M
Formation en management, adaptation en fonction des circonstances
E9AOPHI4	Habitat intelligent (option)	M	?
n-a
E9AOSTI4	Systèmes de transport intelligents (option)	M	?
n-a
5.3 E7AMATH4	Mettre en place une démarche scientifique large, faisant notamment intervenir des outils de simulation et/ou dispositifs physiques Mathématiques et modélisation	A	A
Utilisation de modélisation mathématique de type Mathlab pour la vérification d’algorithmes
E5ACELE4 E7AELEC4	Conception des systèmes électroniques Conception des systèmes électroniques	A A	A A
Utilisation d’outils de simulation électronique de type Spice
E7AGPRO4 E9AGPRO4	Gestion de projets Gestion de projets	A M	M M
Organisation de projets suivant une méthodologie adaptée (cycle en V, agile, ...°
E9AOPHI4	Habitat intelligent (option)	A	?
n-a
E9AOSTI4	Systèmes de transport intelligents (option)	A	?
n-a
C6	L’aptitude à prendre en compte les enjeux économiques de l’entreprise	A	M
6.1 E5ASHEJ4 E7ASHEJ4 E9ASHEJ4	Identifier les acteurs et les services nécessaires au fonctionnement de l'entreprise et leurs interactions Shejs et Anglais Shejs et Anglais Shejs et Anglais	N A A	M M M
Création d’auto-entreprise, chef de plateau, interface entre salariés et hiérarchie
6.2 E5ASHEJ4 E7ASHEJ4 E9ASHEJ4	Comprendre les principaux enjeux de la stratégie d’une entreprise au sein de son environnement et s'inscrire dans ces enjeux Shejs et Anglais Shejs et Anglais Shejs et Anglais	N N A	M M M
Analyse du secteur d’activité d’une entreprise et de son marché, pertinence des développements et produits, capacité à utiliser mes compétences dans le domaine visé
6.3 E9ASHEJ4	Prendre en compte un diagnostic marketing et contribuer à la mise en œuvre des préconisations associées Shejs et Anglais	A	A
Définir des orientations de développement et les actions à réaliser
6.4 E5ASHEJ4 E9ASHEJ4	Identifier les documents et les acteurs impliqués dans un processus de création d'entreprise Shejs et Anglais Shejs et Anglais	A A	M M
Création d’auto-entreprise, INPI, CCI, ...
C7	L’aptitude à prendre en compte les enjeux d’une « démarche RSE » au sein des organisations	A	M
7.1 E7ASHEJ4 E9ASHEJ4	Prendre en compte les enjeux des relations au travail en terme de responsabilité, de sécurité et de santé au travail Shejs et Anglais Shejs et Anglais	A A	M M
Formation secourisme du travail
7.2 E5ACELE4 E7AELEC4	Etre sensible et sensibiliser aux enjeux environnementaux de son activité, parmi les composantes du développement durable Conception des systèmes électroniques Conception des systèmes électroniques	N A	A A
Respect des normes environnementales, RoHS, électronique de faible consommation
E5ASHEJ4	Shejs et Anglais	N	A
Essayer de faire travailler des acteurs locaux et/ou qui partagent une vision commune
E9AOPHI4	Habitat intelligent (option)	A	?
n-a
E9AOSTI4	Systèmes de transport intelligents (option)	M	?
n-a
7.3 E5ASHEJ4	Identifier la dimension éthique de son activité Shejs et Anglais	N	A
Refus de travailler dans le domaine de l’armement
7.4 E9ASHEJ4	Prendre en compte les enjeux et les besoins de la société Shejs et Anglais	A	M
Suivi des coûts de production, des marges, du chiffre d’affaire, des bénéfices
C8	La capacité à s’intégrer dans une organisation, à animer et à faire évoluer une équipe pour stimuler de l'innovation	M	M
8.1 E5ADEVE4 E7ADEVE4	Affirmer son rôle au sein d'une équipe de collaborateurs, impulser une dynamique commune Développement informatique embarquée Développement informatique embarquée	N A	E M
Force de proposition dans des développement informatique, écoute des propositions alternatives, définition d’objectifs, apport de solutions faisant le consensus
E5ACELE4 E7AELEC4	Conception des systèmes électroniques Conception des systèmes électroniques	N A	M M
Choix de l’orientation technologique et des outils les plus adaptés, échange avec les collaborateurs
E7AGPRO4	Gestion de projets	M	M
Chef de plateau de prestation, référent technique, mentor de stagiaire d’IUT
E5ASHEJ4 E7ASHEJ4	Shejs et Anglais Shejs et Anglais	N A	M M
Conduite de dialogues, médiations entre collègues, rapport à la hiérarchie
8.2 E7ADEVE4	Intégrer le management d'un projet et assurer la relation à la maîtrise d'ouvrage Développement informatique embarquée	A	E
Organisation d’un développement logiciel en respectant des normes et des échelons
E7AELEC4	Conception des systèmes électroniques	A	A
Réalisation de planification de développement de type AMDEC
E7AGPRO4	Gestion de projets	M	M
Suivi des échéances et formalisation des métriques associés
E7ASHEJ4	Shejs et Anglais	N	M
Gestion des délais et coûts inhérents
8.3 E7AGPRO4 E9AGPRO4	Dialoguer avec des spécialistes comme avec des non-spécialistes Gestion de projets Gestion de projets	A M	M M
Identification des compétences et interaction des acteurs directs et indirects
E7ASHEJ4	Shejs et Anglais	A	M
Respect de la hiérarchie lors des communications, formalisation professionnelle
8.4 E5ADEVE4 E7ADEVE4	Identifier des innovations potentielles dans le champs des pratiques, des processus, ou des marchés de l’entreprise et être force de proposition Développement informatique embarquée Développement informatique embarquée	N A	E M
Veille technologique constante, diffusion des découvertes par mail interne ou lors des réunions, envisager l’application des produits ou développements dans d’autres domaines
E5ACELE4 E7AELEC4	Conception des systèmes électroniques Conception des systèmes électroniques	N A	M M
Apport de connaissances personnelles sur certaines technologies et pratiques afin d’élargir des perspectives, porter l’attention sur des problèmes potentiels
E7AGPRO4	Gestion de projets	M	M
Gestion complète de projets depuis leur conception jusqu’à la mise en vente
E5ASHEJ4 E7ASHEJ4 E9ASHEJ4	Shejs et Anglais Shejs et Anglais Shejs et Anglais	N N A	M M M
Création d’auto-entreprise, recherche de partenaires et de clients
C9 E5ASHEJ4 E7ASHEJ4 E9ASHEJ4	L’aptitude à travailler en contexte international (la compétence sera également évaluée lors de l’expérience internationale obligatoire pour l’ensemble des élèves ingénieur) Shejs et Anglais Shejs et Anglais Shejs et Anglais	A A M M	M M M M
9.1 E5ASHEJ4 E7ASHEJ4 E9ASHEJ4	Maitriser une ou plusieurs langues étrangères dont l'anglais, notamment comprendre une grande gamme de textes et d'interventions orales longs et exigeants et s'exprimer spontanément et couramment sur des sujets complexes de façon claire et structurée Shejs et Anglais Shejs et Anglais Shejs et Anglais	A M M	M M M
Communications avec des interlocuteurs étrangers, clients ou fournisseurs, que ce soit par lors de réunions, par visio-conférences ou par téléphone.
9.2 E5ASHEJ4	S'adapter aux contextes locaux, notamment sociétaux et légaux Shejs et Anglais	N	A
Adaptation en fonction du lieu et des lois locales
9.3 E5ASHEJ4 E7ASHEJ4	Percevoir les différentes "postures culturelles" qui peuvent apparaître au sein d'une équipe internationale Shejs et Anglais Shejs et Anglais	A N	A A
Respect des us et coutumes en usage lors de déplacements internationaux
9.4 E7ASHEJ4	Communiquer, faire valoir ses propres approches et comprendre et respecter celles de ses collaborateurs et partenaires étrangers Shejs et Anglais	A	A
Suivre la sensibilité de chacun tout en partageant son propre point de vue de façon pragmatique
9.5 E5ASHEJ4	S'adapter à différentes méthodes de travail dans un contexte international Shejs et Anglais	N	M
Prise en compte des interlocuteurs internationaux, de leurs méthodologie de travail et des contraites idoines
C10	La capacité à se connaître, à s’auto-évaluer, à gérer ses compétences (notamment dans une perspective de formation tout au long de la vie), à opérer ses choix professionnels	A	E
10.1 E7ASHEJ4	Identifier ses points forts et ses points faibles Shejs et Anglais	A	M
Auto-évaluation constante, recherche d’amélioration continue aussi bien professionnelle que personnelle
10.2 ???	Déterminer les moyens de formation ou d'autoformation adaptés ???	???	E
Démarches personnelles et professionnelles pour acquérir et approfondir de nouvelles compétences, que ce soit en informatique, en anglais au dans d’autres domaines
10.3 E7ASHEJ4	Intégrer ses activités professionnelles et leurs évolutions dans une perspective de valorisation personnelle Shejs et Anglais	N	E
Création d’une auto-entreprise, amélioration des relations professionnelles

Tableau 8: Détail des compétences acquises

Évaluations YOU-TRUST

You-Trust est un outil de certification du « Savoir-être » dans un contexte professionnel et socioprofessionnel, proposé par une start-up basée à Tours. You-Trust dispose d'une équipe d'experts en gestion des ressources humaines. Cette équipe vérifie la véracité des références avancées par les candidats désireux de valoriser et faire certifier leur réputation professionnelle.

Forts de plusieurs recommandations - sollicitées via la plate-forme auprès de leurs derniers responsables directs, les candidats font valoir leur réputation. A compétences techniques égales, un candidat certifié You-Trust disposera d'un avantage concurrentiel avéré et ce quel que soit le niveau de recrutement.

Fonctionnement :

Un candidat s'inscrit sur You-Trust afin de faire certifier son parcours le plus récent. Il saisit ses expériences et effectue une auto-certification basée sur le modèle psychologique des « Big Five ».

C'est à sa demande que, à travers You-Trust, ses anciens responsables et collègues le recommanderont par une appréciation rédigée et évalueront ses « soft skills » en suivant le même questionnaire.

Il est ensuite possible de comparer les résultats obtenus quant au « savoir-être » par l’utilisation de radars.

Auto-évaluation

A l’image des jeux de rôle, un certain nombre de points de compétences sont distribués suivant différents critères. Ceux-ci sont attribués suivant les réponses données au questionnaire psychologique.

Comparaison avec résultats « responsables » (violet) et « collègues » (rouge)

Explication des différents critères et notation

Capacités professionnelles
Apprentissage	Auto-évaluation : 7/7	Responsables : 7/7	Collègues : 5.8/7
Il s’agit de l’orientation d’esprit qui permet de comprendre puis de mettre en œuvre et enfin de maîtriser de nouvelles techniques, méthodes ou outils que ceux-ci relèvent d’activités manuelles, intellectuelles ou les deux à la fois. La capacité d’apprentissage est une des clés de l’employabilité d’un individu. Elle a à voir avec le désir et la volonté d’acquérir de nouvelles compétences, quels que soient les moteurs de cette volonté (rester employable par exemple ou encore par curiosité d’esprit).
Respect des délais	Auto-évaluation : 5/7	Responsables : 5.8/7	Collègues : 5.4/7
Une fois les enjeux de la tache ou de la mission bien compris, il s’agit pour l’individu de la capacité à mettre en œuvre tous ses efforts et les moyens à sa disposition afin de respecter son engagement et celui de son équipe. Cette capacité est en relation avec la capacité à gérer les priorités, à ne pas procrastiner et à tenir ses engagements.
Capacité de travail	Auto-évaluation : 7/7	Responsables : 6.9/7	Collègues : 6.3/7
La capacité de travail n’est pas forcément la capacité à travailler beaucoup ou longtemps. Il s’agit aussi ici de mesurer l’efficacité, la productivité. La capacité de travail c’est finalement la « multiplication » de l’efficacité par la quantité de travail.
Compétence technique	Auto-évaluation : 7/7	Responsables : 7/7	Collègues : 6/7
Il s’agit de la compétence professionnelle en tant que savoir-faire mis en œuvre et contribuant à un livrable, un résultat, une performance. Plusieurs degrés sont envisageables : Degré 1 : avec l’aide ou la supervision d’une autre personne Degré 2 : de manière autonome, fiable et efficiente Degré 3 : capacité à transmettre ce savoir-faire à d’autres personnes Degré 4 : être considéré comme un expert

Ouverture d'esprit
Écoute active	Auto-évaluation : 6/7	Responsables : 6.5/7	Collègues : 5/7
Il s'agit de savoir discerner ce qu'exprime, voire éprouve la personne face à soi. Une personne dotée d'une bonne écoute active : - se reconnaît notamment par sa faculté à reformuler avec justesse ce qui vient d'être dit - percevra et comprendra le langage non verbal : un regard perdu, des épaules rentrées, des bras croisés - donne à son interlocuteur l'assurance de ce qu’elle a entendu son message, ses idées et qu'elle en tiendra compte.
Assumer ses faiblesses	Auto-évaluation : 6/7	Responsables : 5.4/7	Collègues : 5.6/7
Certaines personnes, quel que soit le niveau occupé dans l'entreprise vont garder leurs incertitudes, leurs questions pour eux sans oser les partager de crainte d'être mal jugés. Rester seul face à un problème insoluble peut mettre un projet en danger ou le ralentir, altérer la prise de décision. Être en mesure de demander de l'aide en interne signifie également être capable de partager les feedbacks avec son manager, mais aussi avec ses collègues. Il s'agit, en d'autres termes, d'accepter de s'exposer en faisant part de ses difficultés mais qui seront résolues plus rapidement lorsqu'elles seront partagées.
Responsabilités	Auto-évaluation : 6.5/7	Responsables : 6.8/7	Collègues : 5.6/7
Il s'agit ici d'être en mesure d'assumer le résultat issu d'une prise de décision ou bien encore le résultat de l'équipe que l'on manage. Avoir le sens des responsabilités c'est : - savoir partager le succès d'une réalisation avec son équipe - prendre la mesure de ce que doit être sa contribution dans un contexte ou un projet et se donner les moyens d'y parvenir - assumer sa part de responsabilité dans un échec - comprendre les raisons d'une difficulté ou d'un échec et en tirer les enseignements.
Acceptation du management	Auto-évaluation : 6/7	Responsables : 5.5/7	Collègues : 5.2/7
Il s'agit ici de se mettre en situation de comprendre qu'un manager doit piloter un projet ou un service et qu'il est donc normal qu'il ait pour son équipe et pour soi-même des exigences associées à cet objectif. Même si cela est contraignant pour les collaborateurs, un manager donnera donc l'axe à suivre et il est légitime de son point de vue que chacun s'y conforme dans le meilleur état d'esprit possible.

Intelligence émotionnelle
Émotions propre	Auto-évaluation : 6/7	Responsables : 4.4/7	Collègues : 7/7
Il s'agit de la capacité à identifier et comprendre ses propres émotions ainsi que leur origine ou raison et à avoir en tête que celles-ci impactent le comportement d'autrui. Cela suppose donc de contrôler et de gérer ses propres émotions sans pour autant les annihiler et à être attentif à ce que peuvent être les émotions des autres et à les considérer dans une relation commune.
Émotions d'autrui	Auto-évaluation : 5/7	Responsables : 5.8/7	Collègues : 5.9/7
Il s'agit de la capacité à tenir compte des émotions d'autrui et à y être attentif et à les considérer dans une relation commune. Il s'agit également d'être en mesure de faire le lien entre l'état d’esprit d'une personne et une situation qui l'a affectée.
Gestion du stress	Auto-évaluation : 5/7	Responsables : 4.8/7	Collègues : 5.2/7
Il existe différents types de stress, certains sont facteurs de productivité et de performance et d’autres au contraire sont très perturbants, pour soi-même comme pour son entourage. Il s'agit ici de la capacité à connaître et reconnaître les situations en question et de garder en toute circonstance la maîtrise de soi de façon à avoir le comportement adapté.
Négociation	Auto-évaluation : 6/7	Responsables : 4.8/7	Collègues : 5.4/7
La capacité à négocier est également un paramètre de l'intelligence émotionnelle. Elle se caractérise par : - une qualité d'écoute et de compréhension des objectifs et contraintes d'autrui - la maîtrise parfaite de ses propres objectifs - une intelligence de la situation qui permette de proposer et trouver une solution « gagnant-gagnant ». Une bonne capacité à négocier permet d'obtenir un gain tout en respectant les contraintes d'autrui.

Motivation
Appropriation du job	Auto-évaluation : 7/7	Responsables : 6.8/7	Collègues : 6/7
S'approprier la fonction, c’est d'abord vouloir se donner les moyens d'y parvenir. Cette volonté peut se traduire par un effort de formation, de recherche d'informations, un questionnement auprès des managers compétents ou plus expérimentés, etc. S'approprier la fonction, c’est ensuite sans doute se surinvestir dans la phase de démarrage. C'est enfin se donner et tenter d'obtenir tous les moyens pour réussir.
Dépassement de soi	Auto-évaluation : 6.5/7	Responsables : 6.1/7	Collègues : 5.5/7
La volonté de se dépasser oblige souvent à devoir sortir de sa zone de confort. Elle est souvent mue par le désir de se prouver à soi d'abord et aux autres ensuite qu'on est capable de relever un défi. Elle peut se traduire par un surinvestissement en temps ou en effort. Pour les personnes concernées, il est très important travailler beaucoup et d'obtenir des résultats élevés. Pour les personnes concernées, c’est une forme de réalisation de soi.
Persévérance	Auto-évaluation : 7/7	Responsables : 5.2/7	Collègues : 4.8/7
La persévérance permet de demeurer ferme et constant dans ses efforts que ceux-ci soient couronnés de succès ou pas. C'est la qualité de ceux qui n'abandonnent pas aux premières difficultés rencontrées.
Esprit d'initiative	Auto-évaluation : 7/7	Responsables : 5.9/7	Collègues : 6/7
Faire preuve d'esprit d'initiative, c’est souvent : - s'impliquer au-delà de ce qu'attend un manager - être force de proposition - avancer de nouvelles idées, proposer des méthodes qui n'ont pas encore été envisagées.

Tempérament
Adaptation	Auto-évaluation : 6/7	Responsables : 5.7/7	Collègues : 6.6/7
Il s'agit de la propension à s'adapter à un environnement nouveau, une culture d'entreprise différente de ce que l'on a connu, à une nouvelle équipe. Il s'agit également de la capacité à adapter son comportement quel que soit l'inconfort de la situation à laquelle on fait face. (Ex : sortir de sa zone de confort en allant chez son client parce qu'un souci demeure dans la gestion de projet et que l'on sent le mécontentement du client sans avoir de solution à apporter a priori). Ce trait de caractère s'exprime également à travers la capacité d'agir de manière appropriée.
Leadership	Auto-évaluation : 6.3/7	Responsables : 5.3/7	Collègues : 6/7
Les qualités de leadership s'expriment par la capacité à : - définir une vision enthousiasmante du futur - communiquer de manière à capter l'attention et à faire partager son projet - susciter la confiance par la constance et la fiabilité - avoir une image positive de lui contagieuse pour les autres.
Esprit d'équipe	Auto-évaluation : 4.5/7	Responsables : 4.4/7	Collègues : 7/7
Par définition l'esprit d'équipe consiste pour les membres d'un groupe à faire corps pour le bien commun quitte à mettre leur intérêt personnel de côté. Une personne dotée de cet état d'esprit réussira mieux et trouvera plus volontiers une réalisation de soi dans une réussite collective que dans un exploit personnel. Elle en a souvent conscience et exprime son goût pour le travail en équipe. A l'inverse, déclarer que l'on travaille mieux seul peut être symptomatique des difficultés à s'insérer et à collaborer.
Loyauté	Auto-évaluation : 6/7	Responsables : 6.1/7	Collègues : 7/7
Un adage dit que "la loyauté ne peut être exigée, elle est offerte". Pour autant dans le monde du travail, les situations où la loyauté d'un individu peut être mise à l'épreuve sont courantes. Éviter les situations de conflits d'intérêts, respecter une déontologie propre à son métier ou les règles de la profession, avoir pour boussole l'intérêt de l’entreprise, telles sont les différents éléments permettant d'apprécier la loyauté d'un individu.

Recommandations YOU-TRUST

Une recommandation You-Trust se fait par invitation du candidat d’un responsable ou d’un collègue à réaliser l’évaluation d’une expérience particulière. La rédaction est nominative, mais pas le résultat du questionnaire qui amène aux notes de l’évaluation vu précédemment.

Voici le verbatim de quelques personnes ayant acceptées de me laisser une recommandation :

Personne	Recommandation
Eric FONTES responsable Ercogener 11/04/2018	David Koch développe du logiciel embarqué avec une forte sensibilité et une mise en application des règles de codage dans un processus de qualité logicielle en place. Il est notre architecte logiciel pour le développement d'un système d'exploitation embarqué propriétaire orienté sécurité. Il a de très bonnes connaissances dans les langages de programmation et les différents outils associés. Il est à l'aise dans la mise en place de ces outils. Il est rigoureux, autonome et intégré dans une équipe de développement logiciel et électronique pilotée par un chef de projet.
Julien PEROCHON responsable Ercogener 12/04/2018	Cela fait désormais plus de 6 mois que je travaille avec David. Je suis chef de projet et responsable fonctionnel de David, qui a le rôle d'architecte et de développeur logiciel. David a une très grande culture du développement logiciel, que ça soit dans le domaine de l’embarqué (en ce qui me concerne) que dans les autres, et quel que soit le langage en question. Il sait tirer parti de ces connaissances afin d’intégrer des concepts spécifiques à certains langages afin de gagner en fonctionnalité, lisibilité, rapidité, etc. en fonction du besoin. Il a aussi la faculté de visualiser rapidement un concept qui lui est proposé et sait déterminer s’il est envisageable ou si des problématiques viendront se poser lors du développement, ce qui fait de lui un bon architecte logiciel. Son expérience lui permet d’envisager plusieurs approches à chaque problématique posée, et d’en présenter les avantages et inconvénients, ce qui facilite la prise de décision pour ses collègues. David sait aussi se montrer pédagogue en posant le contexte de ce qu’il explique avant d’en venir aux raisons qui l’ont poussé à faire tel ou tel choix technique, ce qui facilite la compréhension par ses collègues. Il est aussi très cultivé, et reste en veille technologique permanente sur des sujets très diverses, et il n’hésite pas à partager ses découvertes lorsque celles-ci sont pertinentes. Par contre, je dirais que l’impact de l’humeur du jour de David peut affecter sa communication et donc sa collaboration avec ses collègues. Il y a donc une marge de progression de ce côté, mais on y travaille ensemble. En conclusion, je suis heureux de travailler avec David, c’est quelqu’un de très compétent, qui a beaucoup à enseigner à ses collègues. C’est un atout majeur de l’équipe.
Félix DE GRASSET collègue Ercogener 09/04/2018	David et moi travaillons au sein de la société ERCOGENER dans le même openspace depuis maintenant deux ans. De par son expérience, il nous a apporté ses connaissances poussées en qualité logiciel, cycle en V, rédaction d'une norme de codage, et outils d'analyses, codesonar, mapping mémoire, et bien d'autres. David est très pointu sur l'utilisation et les spécificités du langage C, afin de facilité le développement et alerté en cas d'erreurs, ainsi que dans les chaines de cross compilation (makefile), permettant bien des erreurs et imprecisions dus aux outils proposés par les fournisseurs de solutions. Il est précis et carré dans ses réalisations. Sérieux et impliqué dans son travail, il sait remonter ses manches quand il faut et va au bout de ses réalisations. Très bon documentariste, ce qui est rare de nos jours dans notre métier, documents de conception, doxygen. Il a su s'intégrer dans l'équipe sans soucis et est très ouvert aux discussions, sur ses expériences professionnelles et personnelles. J’ai plaisir à travailler et discuter avec lui. Il sait se montrer disponnible lorsqu'on se retrouve face à des difficultés et n'hésites pas à partager ses propres difficultés et résolutions afin de tirer profits de nos expériences.
Marc GUILLON responsable Magneti Marelli 23/04/2018	J'ai encadré David KOCH chez Magneti Marelli en 2016. Je l'ai intégré dans l'équipe pour ses compétences techniques en développement embarqué, mais je l'ai particulièrement apprécié pour son sérieux, sa rigueur et la pertinence de ses analyzes, qui lui ont permis d'améliorer rapidement et durablement nos outils d'analyse de performances. Il a dû finir sa mission plus tôt que prévu pour raisons personnelles, mais je sais qu'il a trouvé par la suite des missions à la hauteur de ses compétences. J'en garderai toujours un excellent souvenir.
Thomas PENIN responsable MyScript 07/04/2018	David a travaillé comme prestataire chez MyScript sous ma responsabilité dans le cadre d'un projet de plusieurs mois. Il est arrivé sur ce projet au pied levé, suite à la terminaison de la mission d'un autre prestataire dont le profil s'est avéré ne pas convenir à nos besoins. David a su être immédiatement opérationnel, saisir les enjeux du projet et ce qui était attendu de lui, s'adapter à un nouvel environnement (use case particulier, mix de langages de programmation, etc.) et a permis au projet de reprendre et d'atteindre finalement ses objectifs. J'ai particulièrement apprécié le fait que non content de s'être rapidement intégré, David a su faire preuve d'initiative, proposer des améliorations basée sur son expérience et n'a jamais hésité à donner son point de vue pour faire avancer les choses de manière constructive. Je ne peux que recommander David pour des projets à haute technicité. Il s'agit de quelqu'un de curieux et d'entousiaste, et lui donner la marge de manoeuvre pour qu'il mette ces qualités à profit est bénéfique pour la réussite des projets auxquels il participe.
Florian MARTEIL collègue Itron 07/04/2018	Durant l'année où nous avons travaillé ensemble au sein de la l'équipe de développement Firmware chez Itron, composée d'une vingtaine de personnes, David Koch s'est montré investi et compétant. Il a participé à la définition de certains aspects du process (règles de codage, toolchain), a des activités d'intégration (outils de tests) et de développement (investigations et corrections logicielles). Il a fait preuve de capacités d'adaptations à l'environnement utilisé, se l'appropriant en proposant des axes d'améliorations. Il s'est bien intégré a l'équipe en place, sachant se montrer disponible pour assister ses collègues quand il était sollicité.
Lise GILLET responsable Johnson Controls 11/04/2018	J’ai eu le plaisir de travailler avec David pendant deux ans chez Société Johnson Control, en collaborant sur des projets de tableau de bord pour J81, J84 et J77 : lui en tant que développeur et moi en tant que responsable validation. J’ai beaucoup apprécié son implication, sa motivation, son sens de l’équipe et sa gentillesse. Cette expérience reste un de mes meilleurs souvenirs de ma carrière.

Refus poste ingénieur FENWICK

Devis Société Saônoise de Tiroirs

Prestataire Client Nom David KOCH auto-entrepreneur (DKAE) Société Saônoise de Tiroirs (SST) SIRET APE 528.269.129.00029 / 6209Z 423.919.711.00014 / 3109B Adresse 1 écurie des Ballastières 4 quartier de la Gare du Tram Adresse 2 RD 6 (sud ouest St Marie en Chaux) BP CP Ville 70290 CHAMPAGNEY 70300 VILLERS-LES-LUXEUIL Pays France France GPS WGS84 N 47.698868 E 6.657766 WGS84 N 47.786916 E 6.307083 Tél +33/0.645.810.218 +33/0.384.945.000 Fax +33/0.384.945.794 Devis DEV20120817N001FR70300CL001 Prestation informatique - interface ERP Date 2012/08/17/05 Validité un (1) mois à partir de la date du devis Délai début des travaux une (1) semaine après acceptation signée en double exemplaire Durée la durée est indicative et n'appelle aucun supplément en cas de dépassement Règlement 20% d'acompte à la signature du devis, acquis, solde à la réception des travaux Annulation Désignation Unité PU HT € Quantité Total HT € Intervention sur site – étude des éléments J 405,00 4 1620,00 Rédaction - cahier des charges exhaustif J 360,00 3 1080,00 Développement - interface intranet création article J 540,00 10 5400,00 Intervention sur site - installation du serveur intranet J 405,00 1 405,00 Intervention sur site - tests IRL et adaptations J 405,00 2 810,00 U 12,00 7 84,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Durée indicative 20 jours TVA non applicable, art. 293 B du C.G.I. Montant HT € 9399,00 Conditions Date Signatures Mentions 2012/ / à recopier ou entourer Paiement chèque ou virement, acompte acquis Escompte 5% si règlement jusqu'à la date de livraison Délais 30 jours maximum après la date de livraison Pénalités taux des pénalités de retard de 12% par an Livraison réalisation fonctionnelle de l'interface intranet Modalités suivant cahier des charges et délai indicatif Pénalités pas de supplément jusqu'à livraison finale chemin rural des Grandes Epoisses Mèl david.koch@9online.fr patrick.couval@saonoise.com montant du contrat restant dû au prorata temporis réalisé jusqu'à la date d'annulation Déplacement (base 80 kms AR) « Devis reçu avant exécution des travaux » Mr COUVAL Patrick (SST) « Bon pour accord » Mr KOCH David (DKAE)

Attestation création auto-entreprise

Équipe TdB Digitaux Johnson Controls en 2002

Equipe TdB Digitaux S. Sabatier Architecte A2/A3 J.M. Verove Architecte A. Ochs A2/A3 C. Kerveillant Intégrateur E. Grosse Herrenthey A2/A3 D. Robin S. Naty A2/A3 H. Debu Intégrateur J.P. Lahousse Resp Soft N. Léger Projeteur E. Toulet Projeteur E. Chalumeau Projeteur L. Forgeot J.P. Cirjean S. Denise Resp HW P. Bascoul Chef de projet AZ1026 TdB J84 C. Jouhanneau Ingénieur SW D. Koch Ingénieur SW R. Rey Ingénieur SW Architecte P. Maniez Ingénieur SW L. Hilleret Ingénieur SW Intégrateur A.Heurtebise Resp Soft L. Leclercq S. Ducasse Projeteur E.Pierne Ingénieur HW O. Rollin Ingénieur HW F. Virzi Chef de projet AZ1021 TdB J77 W. Bouach L. Luximon L. Pichon D. Bourdieau F. Monnot Resp Soft N. Léger Projeteur P. Modock S. Denise Resp HW JM. Légé Chef de projet AZ1011 TdB J81 F. Allibert T. Charpentier L. Bouclier Resp Soft P. Raoult L. Sarrazin B. Devincenzi T. Do Resp. HW L. Bouteiller Chef de projet BZ1020 TdB B5 R. Cheng IPDE TdB Digitaux

D. Koch Ingénieur SW

NOM et PRENOM du candidat : KOCH David

Diplôme sollicité : Diplôme envisagé Ingénieur Polytech Tours – spécialité Informatique Industrielle

RAPPORT DU JURY

Loi de modernisation sociale du 17 janvier 2002. Modifiée par l’article 78 de la Loi n°2016-1088 du 8 août 2016.

VALIDATION TOTALE

VALIDATION PARTIELLE

 Connaissances et aptitudes acquises (UE, EC, …) :

 Nature des connaissances et aptitudes devant faire l’objet d’un contrôle complémentaire en vue de l’obtention du diplôme (UE, EC à suivre, préconisations autres …)

 Le jury souhaite entendre de nouveau le candidat oui non

Coordonnées de la personne assurant le suivi si besoin ……………………………………………..

DEMANDE NON VALIDÉE

MOTIVATION DE LA DÉCISION DU JURY (et éventuellement suggestions d’orientation) :

Date d’audition le …………………………… Fait à Tours, le ……………………………

Nom du Président du Jury : …………………………………………………. Signature du Président de Jury
Nom du Rapporteur : ……………………………………. Signature du Rapporteur	Nom du Rapporteur : …………………………………………. Signature du Rapporteur

Version n°2 du 13-12-16

Si vous estimez devoir contester cette décision, vous pouvez :

- soit former un recours administratif devant le Président de l'Université ;

- soit former un recours contentieux devant le Tribunal administratif.

Le délai de recours est de 2 mois à compter de la notification de la présente décision.

Le recours administratif formé dans le délai de 2 mois proroge le délai de recours contentieux jusqu'à l'intervention de la décision de rejet (explicite ou implicite) du recours administratif.