Logiciel Libre Cours 3 Fondements: Génie Logiciel



Documents pareils
Logiciel Libre Cours 9 Modèles Économiques

Environnements et Outils de Développement Cours 1 Introduction

Logiciel Libre Cours 2 Fondements: Programmation

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Évaluation et implémentation des langages

Machines virtuelles Cours 1 : Introduction

Cours 1 : La compilation

Entraînement au concours ACM-ICPC

Gé nié Logiciél Livré Blanc

Annexe : La Programmation Informatique

En face du commanditaire, on met un chef de projet qui connait le domaine (banque, administration, etc.)

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Algorithmes récursifs

L informatique en BCPST

Programmation C. Apprendre à développer des programmes simples dans le langage C

Processus d Informatisation

Analyse,, Conception des Systèmes Informatiques

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Cours 1 : Qu est-ce que la programmation?

Chapitre 1 Qu est-ce qu une expression régulière?

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

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

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

Programmes des classes préparatoires aux Grandes Ecoles

Gestion Projet. Cours 3. Le cycle de vie

Les Licences Libres Ouverture et Protection des Logiciels. Plan

Tutoriel : Ecrire un article sur le site de la TEAM GSAS

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Dafoe Présentation de la plate-forme UIMA

Cours de Programmation 2

Debian en milieu professionnel. This document is under the GNU Free Documentation License.

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

Logiciel Libre Cours 10 Debian

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Génie Logiciel Avancé Cours 1 Introduction

GL Processus de développement Cycles de vie

Chapitre VI- La validation de la composition.

Le génie logiciel. maintenance de logiciels.

Chapitre 2 : Abstraction et Virtualisation

Algorithme. Table des matières

ACTIVITÉ DE PROGRAMMATION

11 Février 2014 Paris nidays.fr. ni.com

Présentation du PL/SQL

Brique BDL Gestion de Projet Logiciel

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

EXPERTS EN DÉVELOPPEMENT ET MODERNISATION DE LOGICIELS WEB ET MOBILES

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Certificat Big Data - Master MAthématiques

Développement itératif, évolutif et agile

Quelques algorithmes simples dont l analyse n est pas si simple

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

UE C avancé cours 1: introduction et révisions

Licence Sciences et Technologies Examen janvier 2010

Programmation C++ (débutant)/instructions for, while et do...while

Plan d action SMB d une Approche Agile de la BITM Pour les PME

Chapitre 1 : Introduction aux bases de données

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Représentation des Nombres

Qualité du logiciel: Méthodes de test

Installation Client (licence réseau) de IBM SPSS Modeler 14.2

Introduction à la Programmation Parallèle: MPI

Propriété intellectuelle en informatique

Présentation des CMS au CIFOM-EAA

Python - introduction à la programmation et calcul scientifique

Accès instantané aux mots et aux locutions Le dictionnaire électronique offre une traduction rapide d'un mot ou d'une locution

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

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

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

Génie Logiciel Avancé Cours 3 Le modèle à objets

Topologie du web - Valentin Bourgoin - Méthodes agiles & SCRUM

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

Nouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM

CESI Bases de données

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

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

UE Programmation Impérative Licence 2ème Année

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

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

La solution pour gérer vos connaissances techniques et scientifiques

PG208, Projet n 3 : Serveur HTTP évolué

Twitter et Netvibes pour la veille

LOGICIEL DE GESTION DE DOCUMENTS PDF : PROJET INFO 1

Master CCI. Compétences Complémentaires en Informatique. Livret de l étudiant

Quelques éléments de compilation en C et makefiles

Petit guide des sous-réseaux IP

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Éléments de programmation et introduction à Java

Cours Composant 2. Qualité logicielle et spécications algébriques

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Libérez votre intuition

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)

Introduction au génie logiciel

Manuel de System Monitor

Transcription:

Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/ Copyright 2014 Stefano Zacchiroli 2007-2013 Ralf Treinen License Creative Commons Attribution-ShareAlike 4.0 International License http://creativecommons.org/licenses/by-sa/4.0/deed.en_us Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 1 / 34

Outline 1 Algorithmique 2 Génie logiciel 3 Réutilisation, combinaison, coopération Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 2 / 34

Rappel du cours 1 Code source : programme écrit par un programmeur dans un langage de programmation (C, Pascal, OCaml,...). Nécessaire pour comprendre ou modifier le programme. Binaire, Exécutable : programme dans le langage de la machine (dépend de l architecture : Pentium, AMD64,...). (Presque) incompréhensible pour des lecteurs humains. Nécessaire pour exécuter le programme. Compilateur : logiciel qui traduit code source en binaire. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 3 / 34

Contenu Cours 2 Qu est-ce que c est l algorithmique Principes du génie logiciel Réutilisation, combinaison, et coopération de logiciels Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 4 / 34

Outline 1 Algorithmique 2 Génie logiciel 3 Réutilisation, combinaison, coopération Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 5 / 34

L idée algorithmique Problème : Trier une liste d entiers différents, par exemple 1, 17, 5, 12 On veut la mettre en ordre ascendant : 1, 5, 12, 17 Comment résoudre ce problème avec un programme? Le programme doit prendre en entrée (par exemple lire d un fichier) une liste quelconque d entiers ; sortir (par exemple, écrire sur un autre fichier) la liste triée. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 6 / 34

Algorithme Décrire comment organiser le travail pour résoudre une tache Utilise les éléments communs de la programmation instructions primitives, boucles, etc. Indépendant d un langage de programmation concret Peut laisser ouvert certains détails du programme p.ex. : les structures de données ou l ordre d exécution des instructions quand il ne sont pas importants Intuition : la recette derrière le programme D un algorithme au programme : codage / implémentation Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 7 / 34

Exemple d un algorithme Première solution du problème de tri : tri à bulles (bubble sort). Tant qu il y a deux éléments successives dans la liste qui ne sont pas dans le bon ordre les inverser. Example (tri à bulles) Étapes : 0 1, 17, 12, 5 Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 8 / 34

Exemple d un algorithme Première solution du problème de tri : tri à bulles (bubble sort). Tant qu il y a deux éléments successives dans la liste qui ne sont pas dans le bon ordre les inverser. Example (tri à bulles) Étapes : 0 1, 17, 12, 5 Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 8 / 34

Exemple d un algorithme Première solution du problème de tri : tri à bulles (bubble sort). Tant qu il y a deux éléments successives dans la liste qui ne sont pas dans le bon ordre les inverser. Example (tri à bulles) Étapes : 0 1, 17, 12, 5 1 1, 12, 17, 5 Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 8 / 34

Exemple d un algorithme Première solution du problème de tri : tri à bulles (bubble sort). Tant qu il y a deux éléments successives dans la liste qui ne sont pas dans le bon ordre les inverser. Example (tri à bulles) Étapes : 0 1, 17, 12, 5 1 1, 12, 17, 5 2 1, 12, 5, 17 Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 8 / 34

Exemple d un algorithme Première solution du problème de tri : tri à bulles (bubble sort). Tant qu il y a deux éléments successives dans la liste qui ne sont pas dans le bon ordre les inverser. Example (tri à bulles) Étapes : 0 1, 17, 12, 5 1 1, 12, 17, 5 2 1, 12, 5, 17 3 1, 5, 12, 17 Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 8 / 34

Les questions que se posent les informaticiens...... quand ils voient cet algorithme : Terminaison Est-ce que l exécution s arrête pour n importe quelle liste d entrée? Correction Est-ce que le résultat est bien trié quand l exécution s arrête? Non-déterminisme Il y a des choix à faire (quand il y a plusieurs paires en désordre), est-ce que le choix pris a une conséquence pour le résultat? Complexité Est-ce efficace? Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 9 / 34

La stratégie diviser pour régner latin : divide et impera Diviser un problème en plusieurs problèmes : de la même nature, qui sont chacun plus petit que le problème de départ. Résoudre chacun des petits problèmes. Combiner des solutions des petits problèmes pour obtenir la solution du problème du départ. Dire comment résoudre un problème trivial. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 10 / 34

La stratégie diviser pour régner latin : divide et impera Diviser un problème en plusieurs problèmes : de la même nature, qui sont chacun plus petit que le problème de départ. Résoudre chacun des petits problèmes. Combiner des solutions des petits problèmes pour obtenir la solution du problème du départ. Dire comment résoudre un problème trivial. Il s agit d un algorithme récursif. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 10 / 34

Un peu plus concrètement : trier Recette pour trier : 1 Diviser : on choisit une valeur de pivot p et divise une liste donnée l dans deux parties : la liste l 1 des valeurs < p la liste l 2 des valeurs > p 2 Trier l 1 donne r 1, trier l 2 donne r 2. 3 Combiner les résultats : La liste consiste en r 1 d abord, puis p, puis r 2 (pourquoi?) 4 Une liste triviale (longueur 0 ou 1) est déjà triée! Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 11 / 34

Comment est-ce que ça marche? Ici : noir : reste à trier, red : déjà trié. Lors de la division en sous-problèmes on écrit l élément pivot directement entre les deux parties, ça facilite la combinaison des résultats! 10 3 1 5 17 12 55 Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 12 / 34

Comment est-ce que ça marche? Ici : noir : reste à trier, red : déjà trié. Lors de la division en sous-problèmes on écrit l élément pivot directement entre les deux parties, ça facilite la combinaison des résultats! 10 3 1 5 17 12 55 3 1 5 10 17 12 55 Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 12 / 34

Comment est-ce que ça marche? Ici : noir : reste à trier, red : déjà trié. Lors de la division en sous-problèmes on écrit l élément pivot directement entre les deux parties, ça facilite la combinaison des résultats! 10 3 1 5 17 12 55 3 1 5 10 17 12 55 1 3 5 10 12 17 55 Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 12 / 34

Comment est-ce que ça marche? Ici : noir : reste à trier, red : déjà trié. Lors de la division en sous-problèmes on écrit l élément pivot directement entre les deux parties, ça facilite la combinaison des résultats! 10 3 1 5 17 12 55 3 1 5 10 17 12 55 1 3 5 10 12 17 55 1 3 5 10 12 17 55 Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 12 / 34

Discussion de cet algorithme Terminaison? est-ce qu on peut diviser infiniment? Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 13 / 34

Discussion de cet algorithme Terminaison? est-ce qu on peut diviser infiniment? Correction? Est-ce que le résultat est forcement trié? Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 13 / 34

Discussion de cet algorithme Terminaison? est-ce qu on peut diviser infiniment? Correction? Est-ce que le résultat est forcement trié? Conséquence du choix de l élément pivot? Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 13 / 34

Discussion de cet algorithme Terminaison? est-ce qu on peut diviser infiniment? Correction? Est-ce que le résultat est forcement trié? Conséquence du choix de l élément pivot? Efficacité? Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 13 / 34

Discussion de cet algorithme Terminaison? est-ce qu on peut diviser infiniment? Correction? Est-ce que le résultat est forcement trié? Conséquence du choix de l élément pivot? Efficacité? Il s agit ici de quicksort, un des algorithmes de trie les plus rapide (en moyenne), dû à Tony Hoare. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 13 / 34

Bubble sort vs quicksort Video : visualization of quicksort http://www.youtube.com/watch?v=axxwxz5rf64 Credits : YouTube user udiprod Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 14 / 34

Outline 1 Algorithmique 2 Génie logiciel 3 Réutilisation, combinaison, coopération Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 15 / 34

Problèmes du génie logiciel Comment s organiser pour écrire un (grand) logiciel. Grand : > 1.000.000 lignes de code Organisation du travail parmi un grand nombre de programmeurs travaillant sur un projet (éventuellement à des endroits différent) Un logiciel n est pas écrit une fois pour l éternité, il évolue toujours ajout de nouvelles fonctionnalités, erreurs, adaptation à des nouveaux environnements,... Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 16 / 34

C est un problème très difficile Une citation provocante : Software Engineering is the part of computer science that is too difficult for computer scientists. concerne le processus de création d un logiciel n est lui même pas toujours complètement formel peut quand même profiter d un support par des outils informatiques Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 17 / 34

Très grands projets informatiques Exemple : Windows Vista Début du développement : mai 2001 Date de livraison initialement prévue : fin 2003 Date réelle de livraison : janvier 2007 > 50 millions lignes de code plusieurs milliers de programmeurs Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 18 / 34

Le modèle traditionnel Comprendre le problème, établir un cahier de charges, établir une spécification du logiciel La nature de la spécification peut varier de très informelle (écrite en langue naturelle) à très formelle (écrite dans un système mathématique). Conception de la structure du logiciel, découpage en unités. Codage (ne prend qu une petite partie du temps total du projet). Tester : Peut servir à détecter des problèmes, mais jamais à assurer l absence de problèmes car on ne peut jamais couvrir tous les cas d utilisation. Il peut être utile de faire tester le programme par une équipe indépendante des programmeurs. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 19 / 34

Le modèle traditionnel (cont.) Documenter : Documentation destinée à des utilisateurs Documentation destinée à des administrateurs de système (p.ex. installation, mise à jour,... ) Documentation destinée à des programmeurs qui veulent modifier le programme (éventuellement pas publiée) Il peut être utile de documenter avant de coder, ou même avant la conception du système. Déploiement Maintenance p.ex. mise à jour, porting, failles de sécurité, changement des besoins,... Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 20 / 34

Modèle Cascade Angl. : waterfall model Requirements Product requirements document Design Software architecture Implementation Software Verification Maintenance https://en.wikipedia.org/wiki/file:waterfall_model.svg Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 21 / 34

Modèle itératif Modèle plus flexible avec retour en arrière. https://en.wikipedia.org/wiki/file:iterative_development_model_v2.jpg Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 22 / 34

Organiser un programme en unités Nécessité pour les programmes de grande taille. Bonne idée en tout cas. Des personnes différentes peuvent travailler sur les parties différentes (même si elles ne sont pas indépendantes). Compilation séparée. Analyse descendante : Organiser un programme en une hiérarchie d unités, étapes de raffinement successif (separation of concerns). Les langages de programmation différents offrent des moyens différents pour organiser les unités modules, classes, namespaces,... Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 23 / 34

Outline 1 Algorithmique 2 Génie logiciel 3 Réutilisation, combinaison, coopération Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 24 / 34

Réutilisation de code (par copier-coller) Utiliser une partie d un programme existant pour la rédaction d un nouveau programme. Des nains sur des épaules de géants Bernard de Chartres, XII siècle Nécessite le code source du programme existant. Nécessite le même langage de programmation. Résultat : un nouveau programme monolithique. Problème de licence si on est pas propriétaire du programme existant (voir plus tard le chapitre sur les licences de logiciels). Seulement possible si le programme existant est bien structuré, et permet d extraire facilement un morceau avec une certaine fonctionnalité. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 25 / 34

Réutilisation de code (par copier-coller) exemple On dispose d un programme écrit (par exemple en C) pour trier une liste d entiers. On souhaite écrire un programme qui lit un fichier de données numériques et qui produit un tableau formaté contenant les données dans un ordre ascendant, et en plus leur moyenne. Le programmeur lance son éditeur de texte pour rédiger le programme, puis : Écrire le code pour lire les données d un fichier Inclure textuellement (copier-coller) le programme de trie, éventuellement supprimer les parties inutiles Mettre le code pour calculer la moyenne, et formater le résultat. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 26 / 34

Réutilisation de code (par copier-coller) (cont.) Souvent utilisé en pratique. Inconvénients :? Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 27 / 34

Réutilisation de code (par copier-coller) (cont.) Souvent utilisé en pratique. Inconvénients : Code doublé : les mêmes morceaux de code existent en beaucoup de copies dans plein de programmes. Les programmes qui réutilisent du code ne profitent pas des améliorations du code de trie (meilleure performance, réparation d erreurs). Ne marche que pour le même langage de programmation. Pas un bon principe de structuration de code. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 27 / 34

Combinaison au niveau binaire Bibliothèque : logiciel qui n est pas autonome, mais qui fournit des fonctionnalités qui peuvent être utilisées par des autres programmes. Un programme peut utiliser les fonctionnalités fournies par une bibliothèque à travers des appels de procédures qui sont définies dans le code de la bibliothèque. On essaie de fournir des bibliothèques pour des problèmes récurrents. La fonctionnalité fournie par une bibliothèque doit être aussi générique que possible. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 28 / 34

Bibliothèques et langages de programmation Il n est a priori plus nécessaire que le programme qui utilise la bibliothèque, et le code source de la bibliothèque, soient écrits dans le même langage de programmation. L utilisation des bibliothèques écrites dans un autre langage pose en pratique plein de problèmes (qui peuvent être résolus), par exemple la représentation des données. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 29 / 34

Bibliothèque exemple Le programmeur a dans son programme besoin de trier une liste d entiers. Il sait qu il y a une bibliothèque qui fournit des fonctions standard pour traiter des listes d entiers. Le programmeur regarde dans la documentation de la bibliothèque et y trouve une procédure sort qui prend en argument une liste d entiers et qui la trie en ordre ascendant. Dans le programme il suffit d appeler cette procédure, il n est pas nécessaire de connaître le code de la fonction sort dans la bibliothèque. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 30 / 34

Généricité (1) Le programmeur peut avoir des besoins qui sont légèrement différents : Trier dans un ordre descendant au lieu d ascendant. Trier des listes de flottants au lieu d entier. Trier des listes de données structurées, par exemple une donnée peut consister en le nom d un salarié, puis son salaire, puis son ancienneté. Trier une liste de données structurée selon de critères différentes et complexes, par exemple une fois selon le nom, une autre fois selon ancienneté d abord puis salaire quand l ancienneté est la même. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 31 / 34

Généricité (2) Solution : Écrire des bibliothèques avec des fonctions génériques : Fonction qui peut trier une liste de données de n importe quel type (polymorphisme) Fonction de trie qui prend en deuxième argument la procédure qui est utilisée pour comparer deux éléments de la liste (fonction d ordre supérieure) Le degré de généricité possible dépend du langage de programmation. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 32 / 34

Bibliothèques statiques et dynamiques Bibliothèque statique : La compilation du programme utilise le code source du programme + binaire de la bibliothèque. Le compilateur en produit un seul binaire monolithique en faisant une édition de liens statiques. Bibliothèques dynamique : La compilation du programme n utilise que le code source du programme. Le binaire produit contient des appels à des fonctions de la bibliothèque, il faut que la bibliothèque soit installée chez l utilisateur du programme. Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 33 / 34

Bibliothèques statiques et dynamiques Installation d un logiciel (en format binaire) : cas statique il y a un seul binaire à déployer qui contient tout qui est nécessaire pour exécuter le programme. Le programme est autonome. cas dynamique le binaire est plus petit, mais il faut assurer que toutes les bibliothèques sont installées chez l utilisateur dans les bonnes versions. Quoi faire quand la bibliothèque change? cas statique il faut recompiler tous les logiciels qui l utilisent, puis déployer cas dynamique il suffit d installer la nouvelle version de la bibliothèque (si l interface binaire (ABI) n a pas changé... ) Stefano Zacchiroli (Paris Diderot) Fondements: génie logiciel 2013 2014 34 / 34