Programme des formations SOLTI 2017





1        Introduction. 3

1.1          Formations SOLTI. 3

1.2          Prérequis. 3

1.3          Agenda. 3

2        Module 1 : Bases. 4

2.1          Technologies. 4

2.2          Méthodes. 4

3        Module 2 : Langage C.. 5

3.1          Déclarations. 5

3.2          Expressions. 5

3.3          Chaînes de caractère. 5

3.4          Pièges et astuces. 5

3.5          Règles de programmation. 6

3.6          Architecture. 6

3.7          MISRA.. 6

3.8          Optimisation de code. 6

3.9          Gestion mémoire. 6

4        Module 3 : Approche Objet et UML.. 7

4.1          Approche Objet 7

4.2          Le langage UML.. 7

4.3          Exercices. 7

4.4          Star UML.. 7

5        Module 4 : Langage C++. 9

5.1          Spécificités C++. 9

5.2          Les entrées sorties. 9

5.3          Les classes. 9

5.4          Héritages simples et multiples. 9

5.5          Fonctions virtuelles. 9

5.6          Gestion des exceptions. 9

5.7          Templates. 9

6        Module 5 : Langage C#. 10

6.1          Introduction. 10

6.2          Visual 10

6.3          Préprocesseur 10

6.4          Déclarations. 10

6.5          Flux. 10

6.6          Objet 11

7        Module 6 : Applications C#. 12

7.1          Forms. 12

7.2          Architecture Vue-Données. 12

7.3          Communication TCP/IP. 12

7.4          Accès aux données. 12

8        Module 7 : Gestion de projets. 13

8.1          Introduction. 13

8.2          Paradoxes. 13

8.3          Problématique. 13

8.4          Triangle. 13

8.5          Management 13

8.6          Rôles. 14

8.7          Outils. 14

8.8          Cycle de vie. 14

8.9          Logiciel 14

9        Module 8 : Méthodes agiles. 15

9.1          Introduction. 15

9.2          Agilité. 15

9.3          Le développeur 15

9.4          Scrum... 15

9.5          Extreme Programming. 16

9.6          Recettes. 16

9.7          Gestion du changement 16

9.8          Règles. 16

9.9          Mise en pratique. 16

10      Module 9 : Logiciel embarqué. 18

10.1       Architecture de RTOS. 18

10.2       Ethernet 18

10.3       TCP/IP. 18

10.4       USB.. 18

10.5       Le microcontrôleur 18

10.6       Introduction au DSP. 18


 

1      Introduction

 

 

1.1    Formations SOLTI

 

Dans un esprit d’efficacité, les formations SOLTI ne sont pas des produits standards et normalisés.  Les objectifs d’une formation sont variés, les motivations et les compétences des stagiaires également.

 

La formation doit aider le stagiaire, qui est dans une situation particulière (capacités, expérience, compétence, disponibilité, motivation)  à évoluer vers une nouvelle situation qui doit être définie aussi précisément que possible avant la formation.

 

Aussi, le programme sera adapté, dans le contenu et dans la forme,  aux conditions réelles de formation et à l’attente des stagiaires. Le contenu de la formation est donné ci- dessous à titre indicatif et ne constitue pas au chapitre près à un engagement de SOLTI. Le totalité du programme représente environ 15 jours de formation. Nous avons réalisé depuis 2009  plus de 300 jours stagiaire.

 

1.2    Prérequis

 

Le client fournit

·         Un PC par élève avec Visual Studio ou Eclipse installé

·         Une salle aux dimensions adaptée au nombre de participants

·         Un vidéo projecteur

·         Un tableau blanc avec ses stylos

·         Une connexion Internet pour le formateur

 

 

1.3    Agenda

 

 

La durée effective des cours est de 6 heures quotidiennes minimum.

Pour le confort et la flexibilité, il est bon de ne pas faire plus de 2 journées à la suite suite.

Le contenu précis des formations dépend des objectifs fixés, du temps disponible et du temps passé sur les exercices.  On essaie toutefois de tenir les horaires suivants, en alternant théorie et exercices :

 

 

Matin:               9h30 - 11h        pause   11h15 - 12h45

Après-midi :      13h30 -15h15    pause   15h30 -  17h

 


 

 

2      Module 1 : Bases

 

 

2.1    Technologies

Architecture d’un ordinateur

Architecture d’un processeur

Code machine

Langage assembleur

Macros

Procédures

Langage C

Compilateur

Editeur de lien

Runtime

Debugger

Entrées sorties

Fichiers

Liaison série

Ethernet

 

2.2    Méthodes

Ingénierie: Du besoin à la validation

Les modèles

Les méthodes

Cycle de vie d’une application

Méthodes traditionnelles: en cascade

Méthodes traditionnelles: en V

Le cycle de vie théorique

Les cycles de vie réels

La méthode itérative

Les outils UML

L’intérêt d’UML


 

 

 

3      Module 2 : Langage C

 

3.1    Déclarations

Structure d’un programme

Les fonctions

Les variables

Les types simples

Caractères

Entiers

Flottants

Void

Tableaux

Structures

Enumérations

 

 

3.2    Expressions

Expressions

Les pointeurs

Opérateurs simples

Opérateurs complexes

Les boucles if

Les switches

Les boucles for

Les boucles while

Les autres boucles

Break, return continue

 

 

3.3    Chaînes de caractère

Principe

Utilisation

Librairies

Usages et abus

Les solutions

Exercice : codage d’une bibliothèque string

 

 

3.4    Pièges et astuces

Les fautes de frappe

Récursivité

Conversions de type

Promotion des entiers

Manipulation de pointeurs

Réentrance

Opérateur &

Complexité du code

Allocation dynamique

Tableaux et pointeurs

Les unions

Les champs de bits

Tests unitaires

Exercice : comparaison des codes générés

 

 

3.5    Règles de programmation

Gestion des sources

Versions

Sauvegardes

Codage

Structuration

Nommage

Commentaires

Divers

 

3.6    Architecture

Systèmes asynchrones

Systèmes synchrones

Bonnes pratiques

Architecture 3 tiers

Modèle Vue Contrôleur

Threads

Tâches

Traçabilité

Portage

HAL

Norme Posix

Définition de la cible

Définition du processeur

Librairie portable

Mini Kernel

 

3.7    MISRA

Inventaire

Les règles simples

Les règles utiles

Les règles pénibles

Les règles peu critiques

 

3.8    Optimisation de code

Introduction

Métriques de performance

Spécifications

Criticité

3.9    Gestion mémoire

Vitesse

Génération de code

Design patterns

Bonnes pratiques

Exercice : optimisation de performance

 


 

 

 

4      Module 3 : Approche Objet et UML

4.1    Approche Objet

Problématique: Taille et complexité des logiciels

Solutions: Descartes

Solutions: Le découpage

Concepts

Terminologie

Manipulations d’objets

Les messages

L’encapsulation

L’abstraction

L’héritage : Spécialisation

L’héritage : Généralisation

Classes abstraites

Conclusion

 

 

4.2    Le langage UML

Les use cases

Fonctionnalités du système

A quoi ca sert

Les acteurs

Description

Relation extend

Relation include

Les scénarios

Séquences d’interactions

Diagramme de séquence

Diagramme de collaboration

Schémas 

Objets

Classes

Association

Rôle

Agrégation

Cardinalité

Qualificateur

Généralisation et spécialisation

Diagrammes d’états

Définitions

 

4.3    Exercices

Parcours d’une motrice

Trajets

Géométrie

Gestion de stock

Distributeur de billets

 

4.4    Star UML

Une IDE style Visual

Créer un projet

Choisir un modèle

Ajouter un diagramme de classes

Editer un diagramme de classes

Ajouter une classe

Spécialiser la classe

Ajouter des attributs

Modifier un attribut

Afficher les propriétés

Diagramme d’état

Générer le code

D’autres outils


 

5      Module 4 : Langage C++

 

 

5.1    Spécificités C++

Commentaire fin de ligne

Déclarations et initialisations

Notion de référence

Arguments par défauts

Surcharge de fonctions

Opérateurs New et Delete

Incompatibilité entre C et C++

Exemples

5.2    Les entrées sorties

Les entrées sorties standards

Affichage à l’écran

Lecture au clavier

Les flots

Exemples

5.3    Les classes

Propriétés des fonctions membres

Construction, destruction et initialisations d’objets

Fonctions amies

Surcharge d'opérateurs

Conversions de types

Exemples

5.4    Héritages simples et multiples

Notion d’héritage

Utilisation, surcharge des membres

Appel des constructeurs et destructeurs

Mise en œuvre

5.5    Fonctions virtuelles

Mécanisme

Propriétés

Fonctions virtuelles pures

Exemples

5.6    Gestion des exceptions

Mécanisme de gestion des exceptions

Choix du gestionnaire

Les exceptions standards

Exemples d’exceptions

5.7    Templates

Création et utilisation

Les paramètres de type

Les paramètres expressions

Spécialisation

Exemples

 

 

 

6      Module 5 : Langage C#

 

6.1    Introduction

Historique

Avant

.Net

.Net 3.0

.Net 3.5

.Net 4.0

En bref

Proche de java

Proche de C++

Les nouveautés

Les plus

Les moins

Références Web

Références papier

6.2    Visual

Application console

Désassembleur

Librairie : Création

Librairie : Utilisation

Application forms : Dessiner

Application forms : Coder

Application forms : Debugger

Conclusion

6.3    Préprocesseur

Définitions

Régions

Pragma

Commentaires

Doc XML

Balises

6.4    Déclarations

Les espaces de noms

Les variables

Les constantes

Les types valeurs

Les types nullables

Les types référence

Les types de base

Les énumérations

Les conversions

Les tableaux unidimensionnels

Tableaux à 2 dimensions

Structures

Sécurité du code

6.5     Flux

Les opérateurs

Tous les opérateurs

Branchements if

Branchements switch

Boucles simples

Boucles moins simples

Les exceptions : émettre

Les exceptions : capturer

 

6.6    Objet

Les classes

Exemple de classe

Les méthodes

Appel de méthode

Passage de paramètres

Surcharge

Liste de paramètres

Propriétés

Indexeurs

Héritage

Classe abstraite : méthode abstraite

Classe abstraite : propriété abstraite

Surcharge des opérateurs

Interfaces : définir

Interfaces : utiliser


 

 

7      Module 6 : Applications C#

 

 

7.1    Forms

Architecture forms

Buttons

EditBox

ListBox

ComboBox

TabPanels

Control forms

Class libraries

Intégration de DLLs

Intégration d’objets COM

 

7.2    Architecture Vue-Données

Bonnes pratiques Windows

Paramètres

Timers

Delegates

Threads

Traçabilité

Gestion de fichiers

Fichiers de log

 

7.3    Communication TCP/IP

Client server

Principe

Mise en œuvre

Exemple

7.4    Accès aux données

Classe DataTable

Classe DataGridView

Bibliothèque Office et fichier Excel

ODBC et fichier Excel

ODBC et accès SQL

 


 

8      Module 7 : Gestion de projets

 

8.1    Introduction

 

Projet

Création

Travail

Art

Communication

Simplement

Précisément

Exemples

 

8.2    Paradoxes

 

Liberté et compétence

Monter en compétence

Gérer le changement

Produit et projet

Etudiant et professionnel

 

8.3    Problématique

Objectifs…

Statistiques
William Deming
 Produit/Projet
Produit/Affaire
4 phases distinctes
Analyse du besoin
Analyse fonctionnelle
Cahier des charges
Mise en œuvre
Synthèse

 

8.4    Triangle

 

Piloter un projet

En terrain inconnu

Situer son objectif

Quels paramètres ?

Les indicateurs

Qualifier les dérives

Le triangle d’or

Le triangle des Bermudes

Il faut faire des choix

 

 

8.5    Management

Quand ?

Pourquoi ?

Les composantes internes

Les composantes externes

La force motrice

L’organe modérateur


8.6    Rôles

 

1.     Chef de projet

2.     Maitre d’ouvrage

3.     Maitre d’œuvre

4.     Client fournisseur

 

 

8.7    Outils

 

1.     Outils : Pert

2.     Outils : Gannt

3.     Outils : Réunions

4.     Outils : Documentation

5.     Conclusion

 

 

8.8    Cycle de vie

1.     Principes

2.     Faisabilité

3.     Planification

4.     Développement

5.     Réalisation

6.     Exploitation

7.     Clôture

8.     Revues

9.     Résumé

 

8.9    Logiciel

1.     Industrie

2.     Disciplines transverses

3.     Objectifs

4.     Critères de qualité

5.     Coûts directes et indirects

6.     L’approche usage

 


 

 

9      Module 8 : Méthodes agiles

9.1    Introduction

 

Historique

Gestion de projet

Qualité

Le Lean

L’agilité

9.2    Agilité

 

Problématique: Pourquoi ? Comment ?

Effet tunnel : Méthode incrémentale

Erreurs de specs: Méthode itérative

Gestion commerciale: Méthode collaborative

Les critiques !

Historique

Structuration ou adaptation

Le manifeste agile : les 12 principes

Agilité, Lean et amélioration continue

La documentation

 

9.3    Le développeur

 

 

La réalité en chiffres

Personne n’est parfait

Triangle QCD des Bermudes

Le cycle en V Virtuel

Le cycle en R Réel

Pathologies du développeur

Qu’est ce qu’un bel algorithme ?

Complexité du langage

Les tests

Quels tests ?

Documentation

Critères de qualité

Recettes

Modularité

Conclusions

 

9.4    Scrum

 

Mêlée

Rugby

Principes

Origines

Utilisateurs

Utilisations

Caractéristiques

Manifeste agile

Cycle

Sprints

Activités

Stabilité

Rôles

Cérémonial

Artifacts

Références

Ce qu’il faut retenir

 

9.5    Extreme Programming

 

Historique

Principes

Méthode

Intégration continue

Pair programming

Test driven

Pair testing

 

9.6    Recettes

 

Planning Poker 

Non régression

Psychologie du programmeur

Google Programming

Gestion des conflits

La journée d’un XP

 

9.7    Gestion du changement

 

Problématique

Solution lourde

Solution lean

Documentation

FAE

Conclusion

 

9.8    Règles

 

Gestion des sources

Versions

Sauvegardes

Codage

Structuration

Nommage

Commentaires

Divers

 

 

9.9    Mise en pratique

 

9.9.1    Planification

Les sprints

Les réunions

La documentation

Les livrables

 

9.9.2    Gestion des sources

 

Incrémental

Repository

Méthodologie

Le build

La livraison

9.9.3    Les tests

 

Test unitaire

Framework

Test fonctionnel

Non régression

9.9.4    Coding dojo

 

Gestion d’un micro projet XP

Formation des binômes

Codage  alterné

Bilan.

Discussions.

 


 

 

10  Module 9 : Logiciel embarqué

10.1   Architecture de RTOS

Tâches

Co routines

Queues

Sémaphores

Compteurs Sémaphores

Mutexs

Conclusion

10.2   Ethernet

Principe

Les différentes normes

La topologie

Les performances

Communication UDP

Mise en œuvre avec Visual C

10.3   TCP/IP

Principe

 Client serveur

Réalisation d’un serveur avec Visual C

Réalisation d’un client avec Visual C

Gestion des déconnexions

10.4   USB

Principes

USB 1.0

USB 2.0

Implémentations

 

10.5   Le microcontrôleur

Principes

Architecture

Logiciel

Exemples de carte 16 bits et 32 bits

Mise en œuvre

 

10.6   Introduction au DSP

Principes

Architecture

Logiciel

Exemple de carte DsPIC

Mise en œuvre

Introduction au FPGA