diapositives - LaCIM
Transcription
diapositives - LaCIM
Chapitre 1 : Introduction Alexandre Blondin Massé Département d’informatique Université du Québec à Montréal 6 septembre 2016 Construction et maintenance de logiciels INF3135 A. Blondin Massé (UQAM) 6 septembre 2016 1 / 37 Table des matières 1. Présentation du cours 2. La console 3. Gestionnaire de paquets 4. Environnements de développement 5. Le format Markdown 6. Le logiciel Git A. Blondin Massé (UQAM) 6 septembre 2016 2 / 37 Informations générales Trimestre Titre du cours Sigle Horaire Département Enseignant Coordonnateur Bureau Téléphone Courriel Page web A. Blondin Massé (UQAM) Automne 2016 Construction et maintenance de logiciels INF3135 Mardi, de 13h30 à 16h30 Informatique Alexandre Blondin Massé, professeur Aziz Salah, professeur PK-4525 5516 [email protected] http://lacim.uqam.ca/˜blondin 6 septembre 2016 3 / 37 Description du cours (1/3) I Initier les étudiants à la programmation à l’aide d’un langage impératif et procédural. I Familiariser les étudiants à la construction professionnelle de logiciels et à leur maintenance. I Notions de base de la programmation procédurale et impérative en langage C sous environnement Unix/Linux (définition et déclaration, portée et durée de vie, fichier d’interface, stuctures de contrôle, unités de programme et passage des paramètres, macros, compilation conditionnelle). A. Blondin Massé (UQAM) 6 septembre 2016 4 / 37 Description du cours (2/3) I Décomposition en modules et caractéristiques facilitant les modifications (cohésion et couplage, encapsulation et dissimulation de l’information, décomposition fonctionnelle). I Style de programmation (conventions, documentation interne, gabarits). I Déboggage de programmes (erreurs typiques, traces, outils, par ex., gdb). I Assertions et conception par contrats. I Tests (unitaires, intégration, d’acceptation, boı̂te noire vs. boı̂te blanche, mesures de couverture, outils d’exécution automatique des tests, par exemple, xUnit, scripts). A. Blondin Massé (UQAM) 6 septembre 2016 5 / 37 Description du cours (3/3) I Évaluation et amélioration des performances (profils d’exécution, améliorations asymptotiques vs. optimisations, outils). I Techniques et outils de base pour la gestion de la configuration (par exemple, make, cvs). I Introduction à la maintenance de logiciels (types de maintenance, techniques de base, par exemple, remodelage, automatisation des tests de régression). A. Blondin Massé (UQAM) 6 septembre 2016 6 / 37 Modalités d’évaluation I I I Deux examens : I Examen intra [30%]; I Examen final [30%]; Trois travaux pratiques : I TP1 : initiation à C [10%]; I TP2 : construction d’un logiciel [20%]; I TP3 : maintenance [10%]; Retard, absence et plagiat : voir le plan de cours http://lacim.uqam.ca/˜blondin/files/ inf3135/aut2016/plan.pdf. A. Blondin Massé (UQAM) 6 septembre 2016 7 / 37 Table des matières 1. Présentation du cours 2. La console 3. Gestionnaire de paquets 4. Environnements de développement 5. Le format Markdown 6. Le logiciel Git A. Blondin Massé (UQAM) 6 septembre 2016 8 / 37 La console I Un outil essentiel pour le développeur est le terminal ou la console; I Le terminal agit comme intermédiaire entre les programmes d’un système d’exploitation Unix. A. Blondin Massé (UQAM) 6 septembre 2016 9 / 37 Commandes agissant sur les fichiers I Résumé (cheatsheet) : https://ubuntudanmark.dk/filer/fwunixref.pdf I Commandes fréquentes : Commande ls ls -als cd mkdir rm rm -rf cp cp -r mv A. Blondin Massé (UQAM) Description Liste les fichiers dans un répertoire Liste plus détaillée Change de répertoire Crée un répertoire Supprime un fichier (irréversible) Supprime un répertoire (récursivement) Copie un fichier Copie un dossier (récursivement) Renomme/déplace un fichier/répertoire 6 septembre 2016 10 / 37 Autres commandes de fichiers Commande find cat less head tail pwd touch A. Blondin Massé (UQAM) Description Trouve toutes les occurrences d’un fichier Affiche le contenu d’un fichier ou concatène plusieurs fichiers Permet de parcourir le contenu d’un fichier Affiche les premières lignes d’un fichier Affiche les dernières lignes d’un fichier Affiche le répertoire courant Crée un fichier vide ou s’il existe, modifie sa date au moment présent 6 septembre 2016 11 / 37 Informations système Commande top kill chmod which grep date Description Affiche les processus actifs Tue un processus (fin de tâche) Change les permissions d’un fichier ou un dossier Affiche le chemin d’une application Recherche une expression régulière Affiche l’heure et la date A. Blondin Massé (UQAM) 6 septembre 2016 12 / 37 Commandes réseau Commande ping whois dig wget curl Description Vérifie si un hôte est disponible Affiche de l’information sur un nom de domaine Affiche l’information DNS d’un nom de domaine Télécharge un fichier Télécharge un fichier A. Blondin Massé (UQAM) 6 septembre 2016 13 / 37 Exemples d’utilisation I Tous les résultats de ces commandes peuvent être redirigés dans un fichier. Par exemple ls > contenu-repertoire.txt I touch est utile si on veut forcer une recompilation avec un Makefile par exemple. I Exemples classiques de changement de permissions : chmod 777 # rwx pour tous chmod 755 # rwx pour user, # rx pour groupe et tous I Utilisées en combinaison avec d’autres commandes, on peut écrire des scripts simples effectuant des tâches relativement complexes. A. Blondin Massé (UQAM) 6 septembre 2016 14 / 37 Table des matières 1. Présentation du cours 2. La console 3. Gestionnaire de paquets 4. Environnements de développement 5. Le format Markdown 6. Le logiciel Git A. Blondin Massé (UQAM) 6 septembre 2016 15 / 37 Installation de logiciels I Un développeur doit très souvent installer des logiciels sur une machine; I Cela peut rapidement devenir complexe, surtout lorsque certains logiciels dépendent d’autres logiciels, en particulier dans les systèmes Unix; I Heureusement, il existe un type de programme appelé gestionnaire de paquets (en anglais, package manager ), qui facilite le processus : I Linux : Aptitude, Pacman, etc.; I MacOS : MacPorts et Homebrew; I Windows : il n’y en a pas. A. Blondin Massé (UQAM) 6 septembre 2016 16 / 37 Système Unix I Vous ne pourrez pas compléter ce cours si vous n’installez pas un système Unix sur votre machine personnelle; I Les utilisateurs de Mac OS pourront utiliser leur machine telle quelle. I Pour les utilisateurs de Windows, il y a deux solutions possibles : I [Recommandé] Installer un système Linux en partition double ou comme unique système (Ubuntu ou Mint); I [Moins recommandé] Installer une machine virtuelle. A. Blondin Massé (UQAM) 6 septembre 2016 17 / 37 Table des matières 1. Présentation du cours 2. La console 3. Gestionnaire de paquets 4. Environnements de développement 5. Le format Markdown 6. Le logiciel Git A. Blondin Massé (UQAM) 6 septembre 2016 18 / 37 Environnements de développement I L’outil de base d’un programmeur est son environnement de développement; I En anglais, integrated development environment (IDE); I Quelques exemples : I Pourtant, de nombreux programmeurs avancés préfèrent un simple éditeur de texte. Pourquoi ? A. Blondin Massé (UQAM) 6 septembre 2016 19 / 37 Éditeurs de texte (1/2) L’offre d’éditeurs de texte est très variée : I Notepad/Notepad++ (Windows); I TextEdit (MacOS); I Gedit (Linux); I SublimeText (multiplateforme?); I Emacs et ses dérivés (multiplateforme); I Vim et ses dérivés (multiplateforme). A. Blondin Massé (UQAM) 6 septembre 2016 20 / 37 Éditeurs de texte (2/2) I Dans le cours, l’éditeur préféré sera Vim, mais vous êtes libre d’utiliser celui de votre choix. I N’utilisez pas les éditeurs installés par défaut : I Windows : Notepad; I Mac OS : TextEdit. I Dans tous les cas, assurez-vous que vos fichier sont enregistrés au format UTF8; I Tout fichier ayant un problème d’encodage sera considéré comme non valide. A. Blondin Massé (UQAM) 6 septembre 2016 21 / 37 Vim I Un des plus anciens éditeurs de texte; I En 2009, un sondage le plaçait comme l’éditeur de texte le plus utilisé; I Son ancêtre, vi, a été créé par Bill Joy en 1976; I Le nom Vim vient de Vi iMproved; I Supporté sur toutes les plateformes habituelles (Linux, MacOS, Windows). A. Blondin Massé (UQAM) 6 septembre 2016 22 / 37 Avantages/inconvénients I I Avantages : I Très mature; I Interaction directe avec le terminal; I Installé par défaut sur toutes les plateformes Unix; I Extrêmement rapide, en particulier pour la programmation à distance; I Hautement configurable, etc. Inconvénients : I Orienté seulement clavier (certains dérivés, comme GVim permettent une utilisation limitée de la souris); I Courbe d’apprentissage difficile pour les débutants. A. Blondin Massé (UQAM) 6 septembre 2016 23 / 37 Configuration I Il est essentiel de configurer Vim (fichier .vimrc) : A. Blondin Massé (UQAM) 6 septembre 2016 24 / 37 Table des matières 1. Présentation du cours 2. La console 3. Gestionnaire de paquets 4. Environnements de développement 5. Le format Markdown 6. Le logiciel Git A. Blondin Massé (UQAM) 6 septembre 2016 25 / 37 Langage de balisage léger I C’est un format texte utilisant certains caractères spéciaux pour le structurer; I Ces formats sont très pratiques pour rédiger de la documentation d’un programme ou d’un système; I Quelques formats populaires : I Markdown; I ReStructuredText; I Asciidoc, etc.; A. Blondin Massé (UQAM) 6 septembre 2016 26 / 37 Markdown I Les fichiers Markdown portent généralement l’extension .md ou .markdown; I Ils peuvent facilement être transformés en HTML, PDF, etc. I Un utilitaire très pratique pour cela est Pandoc. I Par exemple, la commande $ pandoc -s -f markdown -t html exemple.md -o exemple.html produit le fichier exemple.html. I Dans le cours, tous vos projets devront être documentés à l’aide d’un fichier README.md. A. Blondin Massé (UQAM) 6 septembre 2016 27 / 37 Fichier README.md # Travail pratique 1 ## Description Ce programme permet d’afficher en format ASCII une montagne dont les parties concaves sont remplies d’eau. Il est possible de préciser les caractères représentant la terre et l’eau lors de l’affichage. Le projet a été réalisé dans le cadre du cours INF3135 Construction et maintenance de logiciel de la session d’automne 2016 à l’Université du Québec A Montréal. ## Auteur Alexandre Blondin Massé ## Fonctionnement Pour générer un exécutable du programme, il suffit d’entrer la commande make Puis on lance le programme à l’aide de la commande ./tp1 <terre> <eau> <hauteurs> où ‘<terre>‘ est un caractère représentant de la terre, ‘<eau>‘ est un caractère représentant l’eau et ‘<hauteurs>‘ est une suite de nombres naturels décrivant les hauteurs, colonne par colonne, de la montagne, séparées par des virgules. ... A. Blondin Massé (UQAM) 6 septembre 2016 28 / 37 Résultat A. Blondin Massé (UQAM) 6 septembre 2016 29 / 37 Références I Dans le cadre du cours, vous utiliserez minimalement les éléments suivants : I Les sections et les sous-sections; I Les hyperliens; I Les listes à puce et les énumérations; I Les extraits de code; I Les images, etc. I Référence rapide (cheatsheet); I Extension pour GitLab. A. Blondin Massé (UQAM) 6 septembre 2016 30 / 37 Table des matières 1. Présentation du cours 2. La console 3. Gestionnaire de paquets 4. Environnements de développement 5. Le format Markdown 6. Le logiciel Git A. Blondin Massé (UQAM) 6 septembre 2016 31 / 37 Logiciel de contrôle de versions I Permet de stocker un ensemble de fichiers; I Conserve en mémoire la chronologie de toutes les modifications effectuées; I Offre des services de partage des fichiers entre plusieurs développeurs; I Est utilisé pour conserver les différentes versions du code source d’un projet; I Permet également de gérer différentes branches dont les évolutions sont temporairement indépendantes. I Garantit dans une certaine mesure l’intégrité des fichiers, car il est toujours possible de revenir en arrière. A. Blondin Massé (UQAM) 6 septembre 2016 32 / 37 Liste de logiciels connus Nom Bazaar BitKeeper CVS Darcs Git Mercurial Subversion Type distribué distribué centralisé distribué distribué distribué centralisé Accès libre propriétaire libre libre libre libre libre I Dans ce cours, nous utiliserons Git; I Son utilisation est obligatoire, notamment pour la remise des travaux. A. Blondin Massé (UQAM) 6 septembre 2016 33 / 37 Naissance de Git I 2002. Linus Torvalds utilises BitKeeper pour conserver l’historique de Linux; I 6 avril 2005. La version gratuite de BitKeeper est supprimée : Torvalds décide de créer son propre logiciel de contrôle de version, Git; I 18 avril 2005. Git supporte l’opération de fusion de fichiers; I 16 juin 2005. Git est officiellement utilisé pour conserver l’historique de Linux; I Fin juillet 2005. Junio Hamano devient le développeur principal de Git; A. Blondin Massé (UQAM) 6 septembre 2016 34 / 37 Commandes les plus courantes Quelques opérations courantes de Git : I Créer un nouveau projet : git init; I Cloner un projet existant : git clone; I Sauvegarder l’état courant du projet : git commit; I Versionner un nouveau fichier : git add; I Ajouter un fichier pour le prochain commit : git add; I Consulter l’historique : git log; I Récupérer des changements à distance : git pull; I Téléverser des changements à distance : git push, etc. A. Blondin Massé (UQAM) 6 septembre 2016 35 / 37 Configuration de Git I La configuration de Git est très simple; I Elle se fait à l’aide d’un fichier texte généralement stocké dans le dossier home : A. Blondin Massé (UQAM) 6 septembre 2016 36 / 37 Hébergement de dépôts Git I Lorsqu’on manipule un dépôt Git, la plupart des opérations se font localement; I Cependant, il est très pratique de pouvoir partager nos modifications; I Pour cela, il existe des sites dédiés à l’hébergement de tels projets : I I Github; I Bitbucket; I GitLab, etc. Dans ce cours, vous devrez utiliser GitLab, qui offre gratuitement un nombre illimité de dépôts privés et de contributeurs. A. Blondin Massé (UQAM) 6 septembre 2016 37 / 37