Programmation modulaire

Documents pareils
Environnements et Outils de Développement Cours 1 Introduction

Quelques éléments de compilation en C et makefiles

Polytech Montpellier IG PROJET C Réseaux sociaux : recherche de composantes fortement connexes

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Mesurer les performances (CPU) sous Linux

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

UE 8 Systèmes d information de gestion Le programme

Optimisation de logiciels de modélisation sur centre de calcul

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

Cours 1 : La compilation

Conception des systèmes répartis

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Bases de programmation. Cours 5. Structurer les données

Entraînement au concours ACM-ICPC

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Cours d initiation à la programmation en C++ Johann Cuenin

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

Cours Informatique Master STEP

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

En date du 11 décembre 2008

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Chap III : Les tableaux

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Conventions d écriture et outils de mise au point

Environnements de développement (intégrés)

Remise à niveau d un programme JAVA du domaine public

Outils pour les réseaux de neurones et contenu du CD-Rom

D'UN SITE INTERNET LES S D'UN SITE INTERNET PRATIQUE ET PERFORMANT PRATIQUE ET PERFORMANT

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

Serveur d Applications Web : WebObjects

Cours de Programmation 2

Systèmes d information et bases de données (niveau 1)

Cours Langage C/C++ Programmation modulaire

Introduction à MATLAB R

I. Introduction aux fonctions : les fonctions standards

td3a correction session7az

Qu est ce que Visual Guard. Authentification Vérifier l identité d un utilisateur

Notice d Utilisation du logiciel Finite Element Method Magnetics version 3.4 auteur: David Meeker

Présentation du logiciel

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Introduction au langage C

RTDS G3. Emmanuel Gaudin

WEA Un Gérant d'objets Persistants pour des environnements distribués

Les BRMS Business Rules Management System. Groupe GENITECH

1 Description générale de VISFIELD

TP1 : Initiation à Java et Eclipse

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

< Atelier 1 /> Démarrer une application web

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Évaluation et implémentation des langages

MATHÉMATIQUES ET SCIENCES HUMAINES

La Certification de la Sécurité des Automatismes de METEOR

Mise en œuvre des serveurs d application

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Techniques d interaction dans la visualisation de l information Séminaire DIVA

Présentation du PL/SQL

Gestion d identités PSL Exploitation IdP Authentic

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Vérifier la qualité de vos applications logicielle de manière continue

Compte Rendu d intégration d application

JOURNEES SYSTEMES & LOGICIELS CRITIQUES le 14/11/2000. Mise en Œuvre des techniques synchrones pour des applications industrielles

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Le langage C. Séance n 4

Licence Sciences et Technologies Examen janvier 2010

Guide de la documentation des produits BusinessObjects XI

données en connaissance et en actions?

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

BES WEBDEVELOPER ACTIVITÉ RÔLE

Cabri et le programme de géométrie au secondaire au Québec

Gestion de projets logiciels. Xavier Dubuc

Outils pour la pratique

Spécifications, Développement et Promotion. Ricco RAKOTOMALALA Université Lumière Lyon 2 Laboratoire ERIC

Projet de développement

Utilisez Toucan portable pour vos sauvegardes

Sécurité des applications Retour d'expérience

Chapitre I Notions de base et outils de travail

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Sécurité des Systèmes d Information

Initiation. àl algorithmique et à la programmation. en C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Comment créer et utiliser une fonction

PROJET ALGORITHMIQUE ET PROGRAMMATION II

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Introduction à PHP. Au sommaire de ce chapitre

Projet De Stijl Plate-forme pour robots mobiles

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

Compression de Données - Algorithme de Huffman Document de Conception

Architectures web/bases de données


M Études et développement informatique

Tâche complexe produite par l académie de Clermont-Ferrand. Mai 2012 LE TIR A L ARC. (d après une idée du collège des Portes du Midi de Maurs)

MRTG & RRD Tool. Multi Router Traffic Grapher

PG208, Projet n 3 : Serveur HTTP évolué

Transcription:

1 Programmation modulaire Algorithmique et Programmation C++ 2 Introduction Lors de la réalisation du premier projet technologique de Data-Mining, la plupart des groupes ont utilisé un seul fichier source, considérant que pour un programme donné, un fichier source suffisait. Mais cette technique a de nombreux inconvénients : Impossible de travailler à plusieurs sur un seul fichier source ; Réutilisabilité quasiment nulle et reste faible si on dispose des sources ; Inefficacité pour la compilation : il faut recompiler systématiquement tout le projet à chaque modification ; Correction et maintenances difficiles. Modules et librairies Les modules L objectif des modules est de structurer les sources : faire des composants logiciels autonomes indépendance des composants (dépendances explicites) séparation claire de l interface et de l implémentation. L implémentation sera compilée, et l interface servira aux développeurs pour utiliser l implémentation dont les détails sont inutiles. Un module est un fichier d implémentation, d extension.cc, accompagné d un ou plusieurs fichiers d en-tête (interface). C est une unité de compilation, c est-à-dire qu il ne peut être compilé par morceaux. En C++, on confond interface et déclaration, mais ce n est pas la même chose dans d autres langages. Ainsi, en C++, la déclaration d une classe inclut les membres privés, alors que, comme leur nom l indique, ils ne font pas partie de l interface, puisqu ils ne sont pas accessibles de l extérieur. On distingue : l interface (fichiers.h ou.hh) : ce sont uniquement les déclarations, sans code, sans définitions de variables globales, sans création d objet. Un fichier d en-tête est seulement composé des déclarations de types, de classes, de macros, de déclarations de variables et de fonctions externes. l implémentation (fichiers.cc) : le code, sans oublier l inclusion des fichiers d en tête. Imaginons que nous travaillons avec un composant pour la manipulation des fichiers sons pour Unix, composé de 4 modules : - son_io : entrée-sortie - son_dsp : traitements acoustiques - son_gui : interface graphique - son_main : programme principal http://www.chez.com/jeyland/iup 1/5

Dépendances : déclarations communes son_dec.h son_gui.hh son_io.hh son_dsp.hh son_gui.cc son_io.cc son_dsp.cc son_main.cc Les librairies Les librairies regroupent un ensemble de modules. Dans une implémentation complète de C++, on trouve un certain nombre de librairies : librairies C++ standard (libc) ; librairies mathématiques ; etc. Il y a différents types de librairies : les archives (fichiers.a) qui sont statiques les librairies dynamiques dont le code est partagé entre les différents utilisateurs, et dont le code est réentrant, c est-à-dire exécutable simultanément par plusieurs utilisateurs. Construction d une librairie Regroupement des modules : ar <commande> <nom librairie> <liste des modules> Création de la table des matières (optionnelle) : ranlib <nom librairie> Les librairies sont utilisées en incluant les en-têtes des modules utilisés, ce qui provoque le linkage de la librairie. acc son_main.cc lson Ceci provoque l inclusion de libson.a *.hh *.cc *.i *.s *.o EXECUTABLE Préprocesseur Compilation Assemblage Edition de liens Traitement des #include Macros #define (fichier assembleur) Du code source au programme exécutable http://www.chez.com/jeyland/iup 2/5

Quelques outils de développement dans un environnement Unix Make Génération de commandes à partir de fichiers de dépendances. Cet outil n est pas spécifique à la compilation Gestion des mises à jour basée sur l heure système (synchronisation des serveurs, etc.) Forme générale d un fichier de dépendance : <cible> : <liste de fichiers> <tab> <commande> Makefile Exemple de Makefile : son : son_io.o son_gui.o son_dsp.o son_main.cc acc o son son_main.cc son_gui.o son_dsp.o son_io.o On compile son après avoir vérifié les mises à jour des dépendances, et si une des dépendances possède une date de dernière modification plus récente que son, alors le fichier est recompilé, en exécutant la ligne située juste en dessous. son_io.o : son_io.h son_io.cc son_dec.h acc c son_io.cc son_gui.o : son_gui.h son_gui.cc son_dex.h acc c son_gui.cc son_dsp.o : son_dsp.h son_dsp.cc son_dec.h acc c son_dsp.cc Utilisation de la commande Make : make f <nom de fichier> Make Si on tape make tout court, cela revient a taper make f makefile. Définition des variables dans un Makefile Déclaration et initialisation : <id>=<valeur> Utilisation (évaluation) : $(<id>) Sous Unix : CC=aCC OPTS=-or Sous Linux : CC=g++ OPTS=-04 m pentiumpro Partie commune : son : son_io.o son_gui.o son_dsp.o son_main.cc $(CC) $(OPTS) son_main.cc son_gui.o son_io.o son_dsp.o Remarque : Make n est pas forcément associé au langage C et à une plate-forme de type Unix. On peut l utiliser par exemple pour compiler des programmes Java sur n importe quelle type de plate-forme, notamment sous Linux. http://www.chez.com/jeyland/iup 3/5

Le Debugger Sur un projet, la partie correction des bugs peut prendre du temps. Un debugger permet d accélérer grâce à ses fonctionnalités : aide à la correction du programme mode pas à pas trace du contenu des variables retour arrière : revenir en arrière dans l exécution n est pas toujours possible interruption de l exécution par des breakpoints, qui peuvent être en fonction de la valeur d une expression (pas à pas dans une passage donné d une itération, par exemple) analyse des fichiers core (segmentation fault) pour retrouver l état du programme au moment du plantage Le Debugger s utilise en compilant avec l option g : acc g o exemple exemple.c Le Profiler C est un outil qui permet d analyser les performances d un programme : temps consommé par les différentes fonctions, nombre d appels. Principe : inclusion de traces dans le code compilé, production automatique d un rapport. Utilisation : acc G o exemple exemple.cc g++ -p o exemple exemple.cc Exécution : analyse à posteriori ; dépendante des paramètres du programme (entrés par l utilisateur parfois) ; production du rapport gmon.out Pour la mise en forme du rapport, utiliser par exemple Gprof. gmon.out > exemple.gprof Important : Quelque soient les optimisations du code que l on fera, elles seront toujours fortement négligeables par rapport aux optimisations algorithmiques qui pourront être effectuées. Gestionnaire de versions Le gestionnaire de versions permet de : conserver et restituer les différentes versions des composants, maintenir l historique des modifications, gérer les conflits d accès distribuer les versions (avec un accès éventuellement sécurisé) Citons par exemple des outils tels que : rcs, cvs, ou SCCS. http://www.chez.com/jeyland/iup 4/5

Outils de configuration autoconf : Recherche la configuration de l ordinateur sur à peu près n importe quelle plateforme. automake : A partir du fichier de configuration, crée un makefile Principe : adaptation au contexte de compilation et d exécution, génération automatique de fichiers de configuration et de makefiles. Divers Documentation (à partir de l analyse des sources et des commentaires) : génération automatique en latex, en html, en sgml, citons doc++, doxygen++ sous C et idl sous C++ ; Mise en page du code : lclint (formatte les codes C++) ; Générateurs d interfaces (comme sous Visual Basic) ; Outils de modélisation (génère le code en fonction du schéma de dépendance). http://www.chez.com/jeyland/iup 5/5