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