Journée Développeurs LabVIEW



Documents pareils
Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

Lutter contre les virus et les attaques... 15

Comment utiliser FileMaker Pro avec Microsoft Office

Démarrer et quitter... 13

Initiation à LabView : Les exemples d applications :

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Optimiser pour les appareils mobiles

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Tutoriel LabVIEW Des fonctions simples à l acquisition de données

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

PROCÉDURE D AIDE AU PARAMÉTRAGE

SOMMAIRE ÉTAPES OBLIGATOIRES. Récupérer le connecteur... 3

sommaire ÉTAPES OBLIGATOIRES Récupérer le connecteur... 3

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

Your Detecting Connection. Manuel de l utilisateur. support@xchange2.net

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

Utilisation de l éditeur.

Afin d accéder à votre messagerie personnelle, vous devez vous identifier par votre adresse mail et votre mot de passe :

Installation et utilisation du client FirstClass 11

SQL Server Installation Center et SQL Server Management Studio

Contenu Microsoft Windows 8.1

Parcours FOAD Formation EXCEL 2010

GUIDE DE DÉMARRAGE. SitagriPro Infinite FINANCEAGRI. Un service. c o r p o r a t e

Windows Internet Name Service (WINS)

Découvrez Windows NetMeeting

InstallShield 2014 FICHE TECHNIQUE. Création de programmes d installation pour Microsoft Windows

L ORDINATEUR FACILE D ACCÈS!

Support de TD ArcGIS Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT e année ingénieur

Table des matières ENVIRONNEMENT

Présentation de Firefox

Guide de l utilisateur Mikogo Version Windows

Contenu Windows 8 MODULE 1 AVANT-PROPOS MODULE 2 INTRODUCTION À WINDOWS 8 MODULE 4 APPLICATIONS WINDOWS 8 PARTIE 1 MODULE 3 PARAMÈTRES DE WINDOWS 8

SOMMAIRE. 1. Connexion à la messagerie Zimbra Pré-requis Ecran de connexion à la messagerie 4

ESPACE COLLABORATIF SHAREPOINT

Fiche Mémo : Options d accessibilité sous Windows et Internet Explorer 5

Catalogue des formations pour vos collaborateurs, pour vos clients,

Paramètres d accessibilité des systèmes d exploitation Windows et Mac

La Gestion Électronique de Documents spécialement conçue pour les Experts Comptables

Manuel d utilisation du web mail Zimbra 7.1

WINDOWS 8. Windows 8 se distingue par la présence de 2 interfaces complémentaires :

On trouvera sur le site du CCDMD un exemple d album construit avec Cantare. (

Nouveautés dans Excel 2013

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

TP redondance DHCP. Gillard Frédéric Page 1/17. Vue d ensemble du basculement DHCP

À propos de cette page Recommandations pour le mot de passe... 26

PRESENTATION DU LOGICIEL

Une ergonomie intuitive

Mon aide mémoire traitement de texte (Microsoft Word)

Manuel Utilisateur Version 1.6 Décembre 2001

CAPTURE DES PROFESSIONNELS

SolidWorks edrawings et publications

Access. Apprenez exactement ce dont vous avez besoin Progressez à votre rythme Téléchargez les exercices. Joyce Cox et Joan Lambert

Access 2007 FF Access FR FR Base

Guide de l'utilisateur

Comment accéder à d Internet Explorer

Gestion des sauvegardes

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Mindjet pour Windows - Guide d utilisation

Le cas «BOURSE» annexe

Manuel utilisateur Centre de Messagerie

SAUVEGARDER SES DONNEES PERSONNELLES

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

Numérisation. Copieur-imprimante WorkCentre C2424

Surveiller et contrôler vos applications à travers le Web

Créer et partager des fichiers

Tsoft et Groupe Eyrolles, 2005, ISBN :

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

Manuel d utilisation de l outil collaboratif

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

ACQUISITION ANALYSE PRÉSENTATION

Les nouveautés de Ciel Comptes personnels

SAP BusinessObjects Web Intelligence (WebI) BI 4

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Google Drive, le cloud de Google

Séminaire d information MIGRATION WINDOWS 7 ET OFFICE 2010

Le cas «BOURSE» annexe

ZOTERO Un outil gratuit de gestion de bibliographies

Connecteur Zimbra pour Outlook 2007 et 2010 (ZCO) w

BUREAUTIQUE. 1 Journée. Maîtriser les fonctions de base du logiciel

Guide d utilisation. Version 1.1

Introduction : présentation de la Business Intelligence

Alcatel OmniPCX Office

Guide de l administrateur DOC-OEMCS8-GA-FR-29/09/05

< Atelier 1 /> Démarrer une application web

Technologies en rafale Un atelier de type GGT à la RN

GUIDE Excel (version débutante) Version 2013

sommaire Archives... Archiver votre messagerie... Les notes... Les règles de messagerie... Les calendriers partagés Les listes de diffusions...

Support de formation Notebook

Table des matières...2 Introduction...4 Terminologie...4

Prise en main rapide

26 Centre de Sécurité et de

GUIDE MEMBRE ESPACE COLLABORATIF. Février 2012

Tutoriaux : Faites vos premiers pas avec Microsoft Visio 2010

Tenrox. Guide d intégration Tenrox-Salesforce. Janvier Tenrox. Tous droits réservés.

F O R M A T I O N S LOTUS NOTES. 8.5 Utilisateurs rue de la Bôle. E U R L. a u c a p i t a l d e

Sélection du contrôleur

Manuel d utilisation de la messagerie.

13) Calibrage du tableau Interwrite Dualboard

COURS WINDEV NUMERO 3

Transcription:

Journée Développeurs LabVIEW Eric MAUSSION Romain DUVAL

Processus de développement logiciel Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Multicœur Exemples Real-Time Execution Trace FPGA Architecture Modulaire Documentation Desktop Execution Trace Embedded Types de données Unit Test Framework

Programme de la journée Matin Après-midi Infrastructures de développement Prototypage de l interface utilisateur Design Patterns Types de données Implémentations & Exemples Documentation du projet Évaluation des performances du VI

Objectif de la journée Emmener vos applications LabVIEW au niveau supérieur

Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Infrastructures de développement Multicœur Architecture Modulaire Types de données Exemples Documentation Real-Time Execution Trace Desktop Execution Trace Unit Test Framework FPGA Embedded

Gestion d un cahier des charges Cahier des charges LabVIEW Unités sous test

Spécifications Les spécifications écrites influencent positivement le style LabVIEW Un document listant les spécifications est requis avant de commencer le développement

Rédaction du cahier des charges Comment doit être ce document? Votre modèle s accorde-t-il avec les exigences de votre société?

NI Requirements Gateway

Logiciel de gestion d exigences Relation entre Documents d exigences et applications Relation de traçabilité entre documents (graphique) Satisfait aux besoins de systèmes complexes Traçabilité du cycle de vie d un projet Conformité aux normes Automobile, aérospatiale, défense Génération de rapport

Qu est-ce qu une exigence? Éléments désirés ou nécessaires Définition des fonctions du système Nécessité de tester les exigences Traçabilité dans les futurs développements Possibilité de modification (cycle de vie du projet)

NI Requirements Gateway - interfaçage DOORS Requirements Dedicated Interfaces Traceability NI Requirements Gateway Capture Dedicated Interfaces Navigation

Saisie des exigences

Couverture des exigences LabVIEW TestStand LabWindows/CVI Texte

Exemple de gestion sous LabVIEW

Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Infrastructures de développement Multicœur Architecture Modulaire Types de données Exemples Documentation Real-Time Execution Trace Desktop Execution Trace Unit Test Framework FPGA Embedded

Développement multiprogrammeurs Risques et enjeux Contrôle de code source Solutions LabVIEW

Suivre les changements du code source Changement dans le code : source de problèmes lorsque non détecté Suivi des modifications de code importantes Quel changement? bug détecté bug introduit Correction Version de code

Collision de code Répertoire de dépôt Calculator.vi

Développement en groupe Deux développeurs, Joe et Jack, travaillent ensemble Jack copie le code de Joe Joe et Jack modifient la même application Suivi des changements (dépendances) et fusion complexe Code de Joe Fusion Version de code Code de Jack

Collision de code Développeur 1 Répertoire de Développeur 2 dépôt Changement sur la face avant Changement dans le diagramme

Collision de code Développeur 1 Répertoire de Développeur 2 dépôt Enregistrement des modifications

Collision de code Développeur 1 Répertoire de dépôt Développeur 2 Enregistrement des modification

Collision de code Répertoire de dépôt Travail du développeur 1 perdu, modifications écrasées

Solution sans contrôle de code source Fusion Version de code Verrouillage pour modification Développeur 1 Checked Out Checked In Get Latest Version Répertoire de dépôt Checked Out Checked In Checked Out Checked In Développeur 2 Check Out : extraire Check In : soumettre

Complexité du développement en groupe Gérer les collisions de code Maintenir la dernière version du code Tenir compte des différences de styles entre les développeurs Comprendre et incorporer les modifications Suivre les modifications et les versions

Solution avec contrôle de code source Répertoire de dépôt Développeur 1 Check out de Calculator.vi Peut modifier le VI Développeur 2 Voit : Calculator.vi en Check out Choix : ne pas faire Check out jusqu au Check in du développeur 1 Copie en lecture seule

Solution avec contrôle de code source Répertoire de dépôt Développeur 1 Check out de Calculator.vi Peut modifier le VI Développeur 2 Voit : Calculator.vi en Check out Choix : Check out de Calculator.vi Peut modifier le VI

Solution avec contrôle de code source Répertoire de dépôt Développeur 1 Check out de Calculator.vi Peut modifier le VI Soumet les modifications : Check in Développeur 2 Voit : Calculator.vi en Check out Choix : Check out de Calculator.vi Peut modifier le VI Tente un Check in Notification : nouvelle version Deux versions sauvegardées

Solution avec contrôle de code source Répertoire de dépôt La version finale tient compte des deux modifications

Avantages du contrôle de code source Répertoire de dépôt centralisé Gestion de plusieurs développeurs Détection et résolution des collisions de code Suivi des changements de comportement Identification de qui a fait les modifications et quand Garantie que chacun dispose de la toute dernière version Sauvegarde des anciennes versions

Interaction LabVIEW SCC Client SCC Serveur de Contrôle de Code Source Client SCC MKS Client SCC

Interaction LabVIEW SCC Serveur SCC Verrouiller Retrait Dépôt Client SCC Modifier

Logiciels compatibles Intégration avec : Microsoft Visual SourceSafe Microsoft Team System Perforce Rational ClearCase PCVS (Serena) Version Manager MKS Source Integrity Seapine Surround SCM Borland StarTeam Telelogic Synergy ionforge Evolution subversion** Accès aux outils SCC depuis le projet LabVIEW Configuration spécifique par projet* *Depuis LabVIEW 8.5 **subversion est Open Source et requiert un plug-in

Utiliser le SCC avec LabVIEW

Outils intégrés à LabVIEW Montrer les différences (LV Compare) Intégré dans le fenêtre de projet avec le SCC Comparer les modifications entre versions point à point Montrer l historique Retour à une version antérieure Avoir la dernière version Obtenir une instance de la nouvelle version

Résoudre les collisions de code Fusion manuelle LV Merge* Disponible dans l environnement de développement Peut être appelé de manière externe *Depuis LabVIEW 8.5

Recommandations Développement en groupe sous LabVIEW : Contrôle de Code Source Historique des versions / Suivi des modifications Prévention des collisions de code Revues de code et documentation de chaque dépôt LV Compare et LV Merge pour résoudre les collisions Distribution de sections de code avec les Project Libraries

Regroupement des exigences Prototypage de Prototypage IHM l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Multicœur Exemples Real-Time Execution Trace FPGA Prototypage IHM Architecture Modulaire Documentation Desktop Execution Trace Embedded Types de données Unit Test Framework

Interface utilisateur (UI) et utilisabilité IHM Éléments purement esthétiques Aide l utilisateur à effectuer une tâche de manière efficace Tâche ou processus de fond Fonctionnalité

Quelques règles Respecter l agencement Penser à l utilisateur La simplicité est de mise

Respect de l agencement Éléments familiers : Boutons Icônes Terminologie Boîtes de dialogue Menus

Respect de l agencement Créativité : Ne changez pas la manière dont des attributs similaires agissent Ne réinventez pas la roue

Le simplicité est de mise Avoir trop d éléments sur l écran d un seul coup est perturbant Permettre à l utilisateur de se concentrer sur ce qui est important

Pensez à l utilisateur Il n en connaît probablement pas autant que vous Expliquez ce que font les boutons Tenez-le informé Pensez à l environnement d utilisation de l application Souris, clavier? Écran tactile de gros boutons À l extérieur contraste élevé

Utilisation des styles de commandes Modernes / Argent* Classique Système Volume 3D * Depuis LabVIEW 2011 Personnalisation Dépendant du système d exploitation

Disposition de l IHM Élaborer une face-avant simple pour une meilleure compréhension de l utilisateur Utiliser des menus personnalisés pour alléger la face-avant Démo

Bibliothèques OpenG Disponibles dans VI Package Manager (VIPM)

Agencement de l IHM Décoration Onglets Face-avant secondaire Espace de travail IHM réduite - PDA Embarqué - Web

Navigation au clavier

Utiliser le bon type de données Chemins ou Chaîne de caractères Le format dépend de la plate-forme Navigation sur répertoires/fichiers

Utilisabilité des chaînes et chemins Les chaînes et chemins supportent nativement le glisser/déposer! Génère un événement Valeur changée Uniquement disponible sur des commandes

Prototypage de la face-avant Concevoir le VI avec les commandes et indicateurs souhaités Laisser le diagramme du VI vide Grouper les objets de la face-avant à la fin

Exemple d IHM Professionnel 1/3

Exemple d IHM Professionnel 2/3 Commande Onglet glissante Commande Onglet principale

Exemple d IHM Professionnel 3/3

Problématiques liées à l IHM Police & Texte Couleurs Graphiques Polices application, système, boîte de dialogue Dimensionnement - Extension Polices dépendantes de la plate-forme Minimum de couleurs Couleur neutres Blanc, gris, pastel Nuances Nuances de gris Diminution de performances Import d images Superposition d objets : Non

Localisation de l IHM Traduction et adaptation culturelle Création d application pour un autre langage Laisser de la place Éléments du diagramme Icônes/symboles internationaux Icônes sans texte Sous-titres / étiquettes

Recommandations Les interfaces les plus efficaces sont : Simples Lisibles Agencées logiquement Penser aux commandes et menus personnalisés

Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Multicœur Exemples Real-Time Execution Trace FPGA Pré-requis Architecture Modulaire Documentation Desktop Execution Trace Embedded Types de données Unit Test Framework

Fonctions de synchronisation Pré-requis Notificateurs Files d attente

Notificateurs Pré-requis Avantages Synchronisation de deux boucles sur une boucle maître Code efficient, aucune attente active Inconvénients Ne stocke pas les données Risque de perte de données 71

Notificateurs Fonctionnement Obtenir un notificateur Envoyer une notification Libérer le notificateur Attendre une notification

Notificateurs Exemple

Files d attente Pré-requis Similaires aux notificateurs et stockage de plusieurs éléments Modèle FIFO (First In, First Out) Besoin de traiter toutes les données Les boucles productrice et consomatrice peuvent avoir des vitesses d exécution différentes 74

File d attente Fonctionnement Obtenir une file d attente Ajouter un élément Supprimer la file Retirer un élément

File d attente Exemple

Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Multicœur Exemples Real-Time Execution Trace FPGA Architecture Architectures standard Modulaire Documentation Desktop Execution Trace Embedded Types de données Unit Test Framework

Architecture standard : à partir d un modèle À partir de modèle de conception LabVIEW (.vit) Compléter le modèle pour réponde à vos besoins

Modèles de conception VIs simples VI général Machine d états Boucles parallèles Maître/Esclave Producteur/Consommateur (Données) Producteur/Consommateur (Événements)

Architecture à VIs simples

Architecture à VIs générale

Utilisation des boucles Privilégier les registres à décalage Nommer les fils qui sortent du terminal de gauche Utiliser plusieurs critères pour la structure Condition Cadencer les boucles While Éviter d interroger en continu les objets graphiques

Programmation à états Programmation séquentielle Complexe lorsque : Changement de l ordre de la séquence Répétition d un élément de la séquence Exécution conditionnelle Arrêt du programme immédiat, sans attendre la fin de la séquence

Machine d états Très utile dans LabVIEW Mise en œuvre dans un diagramme d'états ou un organigramme Quand utiliser des machines d états? Pour la gestion d une interface utilisateur Pour les tests de processus

Machine d états Fonctionnement Boucle While Exécute de manière continue les différents états Régistre à décalage Contient l information de transition d état Structure Condition Contient code et condition pour chaque état Structure Condition Boucle While Registre à décalage

Machine à états Modèle standard

Projets Modèles Depuis LabVIEW 2012 Commencez par la Machine à états

Machine à états Règles Définition de type d énumérateur pour le sélecteur de condition Minimisez le code à l extérieur de la structure Condition Insérez des états pour l initialisation, l attente, l arrêt et un état vide/défaut

Concepts avancés JKI State Machine Accessible via VIPM!!

Modèle de conception boucles multiples

Modèle de conception Maître/esclaves Avantages Synchronisation Données disponibles globalement Considérations Deux boucles à la même vitesse Perte de données

Producteur/Consommateur Données Similaire au modèle de conception Maître/Esclave Partage de données entre des boucles s exécutant à des fréquences différentes Deux catégories de procédés Production de données Consommation de données Modèle efficace pour acquérir plusieurs séries de données et les traiter dans l ordre

Producteur/Consommateur Données Avantages Modèle FIFO Bufferisation Considérations Cadencer la boucle productrice Envoyer des données entre les boucles

Programmation événementielle Gère des événements dans un VI Synchronise l exécution du code avec les actions de l utilisateur sur la face-avant Stocke les événements de façon à n en perdre aucun La structure Événement attend un événement sur la face-avant sans attente active (scrutation)

Interface de gestions d événements

Ajout d événements

Notificateurs et filtres d événements Notificateurs d événements (flèche verte) Notifie LabVIEW qu un événement utilisateur a été détecté Filtres d événements (flèche rouge) Valide ou change les données de l événement avant traitement

Événements utilisateur Créer et enregistrer un événement utilisateur Générer un événement utilisateur Désenregistrer un événement utilisateur Supprimer l événement utilisateur

Création et enregistrement d événements

Structure Événement Producteur/Consommateur Avantages Réponse asynchrone à l interface utilisateur Les files d attente peuvent transférer n importe quel type de données

Structure Événement Producteur/Consommateur Fonctionnement Attente d une entrée sur une touche du clavier

Cas particulier Cluster d erreurs

Choix de l architecture de conception

Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Multicœur Exemples Real-Time Execution Trace FPGA Architecture Architecture modulaire Modulaire Documentation Desktop Execution Trace Embedded Types de données Unit Test Framework

Application modulaire Concept Modularité : organisation d un programme en plusieurs modules indépendants, la modification de chacun ayant un impact minimal sur les autres Utilisation de sous-vis pour limiter les changements dans l application Connecteur Icône 108

Application modulaire Sous-VIs Gras : terminaux requis Normal : terminaux recommandés Grisé : terminaux optionnels 109

Application modulaire Règles Assigner les clusters d erreur aux terminaux en bas à gauche et à droite Sauter la plupart des diagrammes des sous-vis lors d une erreur en utilisant des structures Condition Utiliser le modèle Sous-VI avec gestionnaire d erreurs Vérifier les interactions entre les modules et les VI externes

Application modulaire Recommandations Entrées et sorties du module doivent être compréhensibles immédiatement Gestion des erreurs propres à un module par le module luimême ou gérées par un autre module Capacité à modifier un module facilement sans affecter les autres modules Interface simple pour accéder aux données dans chacun des modules Stockage de l état propre d un module localement

Modules avec sous-vis organisés Créer un set de sous-vis liés pour chaque fonction Utiliser un style correct pour implémenter chaque VI Créer un répertoire sur le disque pour chaque module Utiliser des bibliothèques de projet de LabVIEW pour organiser les VIs

Modules à VI principal multifonctions Utiliser une structure Condition contrôlée par un énum. Commander le module et ses fonctionnalités par l énum. Enregistrer les données dans le module en utilisant les registres à décalage d une boucle à itération unique

Variable Globale Fonctionnelle (FGV/ Action Engine) Boucle While Registre à décalage non initialisé - Mémoire Structure Condition Commande de type énum

Actions de base Définir la valeur du registre à décalage INITIALIZE INITIALIZE

Actions de base Acquérir la valeur stockée dans le registre GET GET

Moteur d actions Effectuer une action sur les données et enregistrer le résultat Afficher la nouvelle valeur en sortie ACTION ACTION

Comment cela fonctionne-t-il? FGV : VI non réentrant Exécution d actions sur des données Énum. pour sélectionner des actions Stockage des données dans un registre à décalage Execution unique de la boucle

Comparaison Variable globale fonctionnelle Pas de situation de compétition Pas de copie de données Gère les fils d erreur Temps de réalisation Réalisation d actions dans la FGV Variable locale et globale Situation de compétition Copie des données en mémoire Aucune action Ne gère pas les fils d erreur Glisser/déposer

FGV Implémentation Exemple d application classique : mesure de temps Objectif : Mesurer le temps écoulé entre chaque appel du sous-vi.

Application modulaire Exemple

Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Types de données et structures Multicœur Architecture Modulaire Types de données Exemples Documentation Real-Time Execution Trace Desktop Execution Trace Unit Test Framework FPGA Embedded

Cluster Regroupe des données de types différents Équivalent Structures/Records Ordonnés 127

Cluster Assemblage Assembler un nouveau cluster Modifier un cluster existant 128

Cluster Désassemblage Utiliser certains éléments d'un cluster 129

Définitions de type Commandes perso. Augmente la variété des objets sur la face-avant Clic droit sur une commande ou un indicateur et sélectionnez Avancé»Personnaliser. 130

Définitions de type Styles Choix de style Commande Déf. de type Déf. de type stricte Type fixe pour les instances Esthétique fixe pour les instances 131

Définitions de type Cluster Structure très flexible Reflets du *.ctl dans les instances Évolution de l application (ajout de types) Sous-VIs non brisés lors de changement 132

Type pour transfert de données Variant Type de données générique Polymorphisme d application Conversion de données en variant Stocke les données et le type originaux Manipule les données indépendamment de leur type

Type pour transfert de données Variant Données Variant En variant transforme une donnée en type variant Variant en données convertit un variant en n importe quel type de données LabVIEW Recommandations Non supporté dans LabVIEW Real-Time Utilisez les chaînes de caractères si vous avez besoin d un type de données évolutif

Transfert de données Architecture Plug-In

Avantage pour une grosse application Type de données Cluster en définition de type Définition de type Énum. Variant N importe quel type de données supporté Deux boucles synchronisées Le producteur attend l événement Aucun événement ou donnée ne peut être perdu Architecture modulaire

Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Multicœur Implémentations et exemples Architecture Modulaire Types de données Exemples Documentation Real-Time Execution Trace Desktop Execution Trace Unit Test Framework FPGA Embedded

Mauvais VI

Bon VI Code évolutif, lisible, maintenable

Taille du diagramme appropriée La taille du diagramme affecte la lisibilité Utiliser une résolution n excédant pas 1024 x 768 pixels Proscrire un code LabVIEW de dimension trop importante Limiter l utilisation des barres de défilement par l utilisateur

Bonnes techniques de câblage Éviter les fils de liaison en arrière-plan des objets du diagramme Disposer les fils pour clairement identifier la connexion avec le terminal Limiter le nombre d incurvations dans les fils de liaison Utiliser des fils courts Effacer tout fil superflu Préférer un câblage aux variables locales lorsque cela est possible Proscrire le passage de fils dans des structures s ils ne sont pas utiles Espacer les fils de liaison parallèles

Implémentation d IHM Style Windows

Utilisez des panneaux Zone de titre Menu /Commandes Zone de contenu étirable Barre d état

Panneaux glissants

Tenez l utilisateur informé

Implémentation d IHM Style PDA Commande Onglet glissante Commande Onglet principale

Faire glisser une commande Move.vi Déplace un objet vers une position voulue Le déplacement de la moitié de la distance restante à chaque itération donne l apparence d un glissement naturel

Rassemblons tout!! Lorsqu une nouvelle vue est sélectionnée, on change la valeur de l onglet De nouveau, on stocke l ancienne position pour pouvoir la restaurer En maintenant le bouton menu appuyé, on glisse la commande onglet dans le champ visuel On stocke l ancienne position du menu, de cette manière, on peut le faire revenir à sa position initiale

Implémentation modulaire QSM

Fonctionnement Événement capturé par le producteur Le producteur place l élément dans la file d attente La machine d états du consommateur récupère les éléments Communication parallèle des sous- VIs par réference sur file d attente

Recommandation File d attente Utilisation d un cluster contenant un énum. et un variant comme type de données Référence de file d attente par nom => Disponible globalement

Explications

File d attente Maître

Événement

État et données sont mis en file d attente

Machine d États consommatrice

File d attente supplémentaires (Q1 et Q2)

États produits pour les autres files d attente

Gestion des files d attente

Sous-VIs consommant les données de Q1 & Q2

12 améliorations de LabVIEW 2012 Écritures de sorties conditionnelles en sortie de tunnel de boucles Indexation concaténée Menu clic-droit pour plusieurs objets Troncation des chemins fichiers longs Emplacements différents des étiquettes par défaut pour les commandes et les indicateurs Boîte de dialogue pour chaîne de caractères Étiquettes pour les sousdiagrammes Améliorations des boîtes de dialogue énumérées Suppression des fils brisés sélectionnés API Éditeur d icône Aide contextuelle sur les points de coercition des données Structure Événement dans la version de base

Fonctionnalités provenant du Idea Exchange Étiquettes de sous-diagrammes intégrées Étiquettes qui suivent et sont redimensionnées en même temps que les structures

Fonctionnalités provenant du Idea Exchange Menus déroulants pour plusieurs objets sélectionnés Gain du temps pour la modification d un ensemble d éléments

Fonctionnalités provenant du Idea Exchange Tunnel conditionnel sur les boucles Logique Approche d écriture simplifiée traditionnelle Simplifie les pratiques de codage pour la construction de tableaux conditionnels

Fonctionnalités provenant du Idea Exchange Boîte de dialogue d édition pour les constantes chaîne Edition de grandes portions de texte dans la constante chaîne code plus propre et efficace

Fonctionnalités provenant du Idea Exchange Emplacements différents pour les étiquettes par défaut pour les commandes et les indicateurs Diagramme plus propre sans réarrangement des étiquettes

Fonctionnalités provenant du Idea Exchange Aide contextuelle au niveau des points de coercition Renseigne rapidement sur les données attendues

Fonctionnalités provenant du Idea Exchange Tronquer les chemins de fichiers longs Simplifie l affichage des chemins de fichier longs en utilisant les conventions standards

Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Documentation du projet Multicœur Architecture Modulaire Types de données Exemples Documentation Real-Time Execution Trace Desktop Execution Trace Unit Test Framework FPGA Embedded

Documenter les VIs, commandes Créer une description pour chaque VI Documenter les faces-avant Créer des descriptions pour les commandes et indicateurs

Documenter les VIs, commandes Entrées/Sorties nommées Commentaires Icônes distinctes Descriptions et astuces Impression en HTML Explication de la configuration

Documenter une architecture Inclure un diagramme d états dans un diagramme Commenter l architecture (étiquette libres et fils)

Fenêtre d historique et impression Fenêtre d historique Impression de documentation Enregistrer les modifications au fur et à mesure des versions Inclure dans l aide détaillée

Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Améliorer les performances en LabVIEW Conception orientée objet Multicœur Architecture Modulaire Types de données Bonnes pratiques Exemples Documentation VI Analyzer Real-Time Execution Trace Desktop Execution Trace Unit Test Framework Real-Time FPGA Embedded

Pourquoi évaluer son code? Optimiser Améliorer l efficacité Améliorer la vitesse Benchmark Évaluer les performances Identifier les zones à problème

But de l optimisation La règle du 80/20 des performances logicielles 80% du temps d exécution a lieu dans 20% du code L amélioration des performances est plus efficace dans les 20% Trouver de quels 20% il s agit est difficile!

Statistiques de VIs Permet d identifier : Utilisation inappropriée de variables locales Sur-utilisation des structures Diagramme trop chargé

Profiler son code La règle du 80/20 des performances logicielles 80% du temps d exécution a lieu dans 20% du code

Profiler son code Allocation de mémoire

Améliorations Réallocation de mémoire LabVIEW essaie de minimiser la réallocation de mémoire Fonctions susceptibles d engendrer une réallocation de mémoire : Construire un tableau Concaténer des chaînes de caractères Grand nombre de réallocation La mémoire est pré-allouée

Améliorations Pré-allocation de mémoire Cas où une pré-allocation importante est nécessaire Ajout sur condition d éléments Taille maximale du tableau déterminable

Améliorations Coercition de type Modifier le type des données pour obtenir le type de données souhaité Les points indiquent automatiquement une coercition Nécessite une copie

Vitesse d exécution E/S (fichiers, GPIB, DAQ, Ethernet) : opérations lentes Réduire le nombre d accès aux E/S Structure d application transférant de grandes quantités de données à chaque appel Multiples appels aux E/S avec de petites quantités de données

Vitesse d exécution Amélioration de l IHM Réduire le nombre de commandes Garder l IHM aussi simple que possible Désactiver : échelle automatique des graphes, marqueurs d'échelle, grilles Éviter le chevauchement des commandes Laisser affichage asynchrone comme paramètre par défaut pour les commandes

Vitesse d exécution Réentrance Appeler un sous-vi simultanément à plusieurs emplacements Nécessite de la mémoire supplémentaire pour chaque instance Utilisation de VIs réentrants dans deux cas différents Permettre à un sous-vi d'être appelé en parallèle Permettre à une instance de sous-vi de maintenir son propre état

Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Tester & Valider les applications Multicœur Architecture Modulaire Exemples Documentation Real Desktop Time Execution Trace Desktop Unit Test Execution Framework Trace FPGA Embedded Types de données Unit Test Framework

Outils de débogage et de test Outils intégrés à LabVIEW Animation de l exécution Mode pas à pas Points d arrêt Sondes Sondes personnalisées

Simple Complexité Avancée Outils de débogage et de test Unit Test Framework Validation fonctionnelle du code Real Time Execution Trace Desktop Execution Trace Analyse dynamique du code VI Analyzer Toolkit Analyse statique du code Risque faible Criticité Risque élevé

VI Analyzer : analyse statique Guidelines Style de la face-avant Polices et styles Couleurs Contrôles personnalisés et graphes Répartition Tailles et positions Étiquettes Chemins ou chaînes Enums ou menus déroulants Valeurs par défaut et gammes Nœuds de propriétés Navigation au clavier Boîtes de dialogue Checklist Style VI Checklist IHM Checklist Block Diagram Checklist Style du diagramme Techniques de câblage Optimisation de mémoire et de vitesse Tailles et positions Organisation gauche à droite Commentaires du diagramme Appels DLL et nœuds de propriétés Définitions de type Structures Séquence Style d icône et de connecteur Icônes Icônes intuitives et internationales Connecteur pertinent

Analyse de code statique VI Analyzer

VI Analyzer Statistiques de complexité Disponible en LabVIEW 2009 E/S = 5 Nœuds = 3 Chemins = 1 True Case 1 Case 2 False Case 3 Complexité cyclomatique : 5 3 + 2 (1) = 4

Buts de l analyse dynamique de code Qu est-ce qui consomme de la mémoire? Est-ce que je récupère toutes les erreurs de mon application? Quel a été le dernier événement à se produire avant...? Quelle a été la chaîne d appel qui nous a conduit à...? Dans quel thread cela s exécute-t-il? Est-ce que je rentre dans un cas spécifique? Qu est-il arrivé à l intérieur de la structure? Dans quel ordre se sont produits les événements? Y-a-t-il un processus qui tourne en tâche de fond? Est-ce que le code se comporte différemment en exécutable?

Toolkit Desktop Execution Trace Trace pendant le Run-Time : Structure Événement Allocation de mémoire Files d attente/notificateurs Fuite mémoire de référence Identifiant de thread Erreur non gérée Sous-VI dynamique/statique Chaîne utilisateur personnalisée

Toolkit Desktop Execution Trace Trace pendant le Run-Time : Structure Événement Allocation de mémoire Files d attente/notificateurs Fuite mémoire de référence Identifiant de thread Erreur non gérés Sous-VI dynamique/statique Chaîne utilisateur personnalisée

Analyse dynamique Toolkit LabVIEW Desktop Execution Trace VIs et applications débogables Réseau Toolkit LabVIEW Real-Time Execution Trace Réseau Applications temps réel

Toolkit Desktop Execution Trace

LabVIEW Unit Test Framework Entrées Sorties VI sous test Unit Test Framework Sorties attendues Génération automatique de rapport Vecteur de test = Entrée(s) + Sortie(s) attendue(s)

Validation logicielle Unit Test Framework

Exemple de couverture de code 6 diagrammes, 3 diagrammes exécutés, 50 % de couverture de code

Exemple de couverture de code Premier vecteur de test Diagramme : 2 structures condition exécutées (2 + 1)/6 = 50 % de code couvert Second vecteur de test (se cumule au code déjà couvert) Diagramme : 5 structures Condition exécutées (4 + 1)/6 = 83,33 % de code couvert

Évaluer la couverture de code UTF

Test unitaire par programmation Appel par programmation : Test unitaire Génération de rapport

Conclusion

Processus de développement logiciel Regroupement des exigences Prototypage de l IHM Architecture de l application Développement Debogage et Test Déploiement Outils de développement logiciel et bonnes pratiques Requirements Gateway Outils graphiques Design Patterns Flux de données Performances Application Builder Contrôle de code source Commandes personnalisées Conception orientée objet Bonnes pratiques VI Analyzer Real-Time Multicœur Exemples Real-Time Execution Trace FPGA Architecture Modulaire Documentation Desktop Execution Trace Embedded Types de données Unit Test Framework

Synthèse Développement d applications Suivre de bonnes pratiques de développement : Réfléchir avant de coder Concevoir une IHM optimisée Utiliser les bons types de donnée pour l application Utiliser la bonne structure au bon moment Modulariser le code Documenter le projet Évaluer les performances

Formations NI Experienced User Advanced User Journée LabVIEW Également : Formations matériels (RT, FPGA, DAQ, Vision ) Autres formations (LabWindows/CVI, DIAdem, TestStand )

Livre : «The LabVIEW Style Book» Prentice Hall 2007 Développer des applications LabVIEW de qualité Plus de 200 règles de style Facilité d utilisation Efficacité Clarté de rédaction Simplicité Performance Durabilité Fiabilité

Site Web associé www.bloomy.com/lvstyle/ Reviews (critiques) Data sheet (données) Downloads (téléchargements) E-mail the author (contact) Purchase the book (achat du livre)

Poursuivre votre formation ni.com/support Accès aux manuels sur les produits, à la Base de connaissances, aux exemples de code, aux tutoriaux, aux notes d'application et aux forums de discussion Demande de support technique Info-LabVIEW : www.info-labview.org Programme Alliance : ni.com/alliance Wiki : http://wiki.lavag.org Forum : http://forums.lavag.org Nos partenaires : ni.com/alliance Publications : ni.com/france/livres/ Entraînez-vous!

Comment approfondir vos connaissances Formation dispensée par un instructeur LabVIEW Core 3 : apprenez à développer un projet en utilisant les bonnes techniques de programmation LabVIEW Connectivity : apprenez à utiliser : DLL, ActiveX,.NET, TCP/IP, UDP, et variables partagées Cours sur le matériel (sur l'acquisition de données et le traitement de signaux, par exemple) Cours en ligne (sur Machine Vision et LabVIEW Real-Time, par exemple). Large éventail d'outils et de solutions de formation conçus pour vous former à votre rythme

Des questions? Merci de votre attention!