La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

08/03/2016 Le logiciel pour les non-geek Introduction générale au logiciel Sébastien CAMPION.

Présentations similaires


Présentation au sujet: "08/03/2016 Le logiciel pour les non-geek Introduction générale au logiciel Sébastien CAMPION."— Transcription de la présentation:

1 08/03/2016 Le logiciel pour les non-geek Introduction générale au logiciel Sébastien CAMPION

2 08/03/2016 2 Sommaire théorique 1. Le logiciel 2. Son environnement Logiciel pour les non-geeks

3 Sommaire pratiques  « Le juste prix » –Ecrire un pseudo algorithme –Réaliser son implémentation en Python  Postériser une image –Cas simple, l’image au format texte Manipuler des données –Cas réel, l’image est compressée Identifier une dépendance (à un décodeur) Connaître plusieurs modes de résolution d’une dépendance  Diffusion du code –Passage à une implémentation compilée en C –Reconnaître une édition de lien statique ou dynamique –Identifier les fichiers sources et des fichiers de packaging  Samusa : Logiciel de segmentation musique parole –Cas pratique 08/03/2016 3 TPTP

4 4 Le logiciel (US) software, (ES) programa 1

5 5 Notions générales – Définition « logiciel » Académie française : INFORM. Ensemble structuré de programmes remplissant une fonction déterminée, permettant l'accomplissement d'une tâche donnée. Etymologie : Dérivé de logique (1972, avec le suffice -iel, par opposition au matériel). Journal Officiel (du 17/01/1982, page 50625) : Logiciel (n. m.) : Ensemble des programmes, procédés et règles, et éventuellement de la documentation, relatifs au fonctionnement d'un ensemble de traitement de données (en anglais : software). Matériel (n. m.) : Ensemble des éléments physiques employés pour le traitement de données (en anglais : hardware). Logiciel pour les non-geeks

6 6 Notion générale – Programme informatique Un programme informatique est une séquence d'instructions qui spécifie étape par étape les opérations à effectuer par une machine. Exemple : LOGO TURTLE (v.o.) Logiciel pour les non-geeks POUR CARRE AV 100 TD 90 FIN POUR CARRE REPETE 4 [AV 100 TD 90] FIN

7 7 Notion générale – La machine Cette machine possède 3 types de fonctions élémentaires : - des fonctions mémoires => pour ses résultats intermédiaires ou son état interne (registres, variables) - des fonctions logiques => logique de contrôle/séquencement et traitement/opérateurs logiques (CU, ALU) - des fonctions d'interaction => prend des programmes (ou données), en entrée, sous une certaine forme => produit des résultats, en sortie, sous une certaine forme Logiciel pour les non-geeks

8 8 Notion générale – La machine Logiciel pour les non-geeks

9 9 Notions générales – Type de logiciels 3 niveaux logiciels (mais non-exhaustivité partout) : Logiciel embarqué (à l'interface avec le matériel) : BIOS, bootloader, microcode CISC, firmware Stocké dans ou autour de la plupart des composants matériels (ROM/Flash) Logiciel système, middleware, CODEC… (à l'interface avec les autres logiciels) : Système d'exploitation (Windows, Unix, Linux, iOS), RTOS, JVM, Android Stocké dans la mémoire de masse du système (disque dur, NANDflash, internet) Logiciel applicatif (à l'interface avec l'utilisateur) : Suite bureautique incluant traitement de texte, tableur, présentation (MS-Office – Word, Excel, Powerpoint, LibreOffice), progiciels (comptabilité, gestion), outils internet (navigateur – Firefox, IE ; Mail), outils de développements, jeux Logiciel pour les non-geeks

10 10 Où sont : les logiciels ? l'ordinateur ? 1834, C. Babbage – La machine analytique Logiciel pour les non-geeks

11 11 Où sont : les logiciels ? l'ordinateur ? 1936, A. Turing – La machine de Turing Logiciel pour les non-geeks

12 12 Où sont : les logiciels ? L'ordinateur ? 1946, ENIAC Logiciel pour les non-geeks

13 13 Où sont : les logiciels ? L'ordinateur ? 1984, l'informatique domestique US : IBM PC (1981) Apple II (1977) Commodore 64 (1982) + consoles de jeux -Logiciel pour les non-geeks

14 14 Où sont : les logiciels ? l'ordinateur ? 2016, l'informatique nomade Logiciel pour les non-geeks

15 15 Découvrir le code source Logiciel pour les non-geeks Notre coding dojo : https://gitlab.irisa.fr/sebastien.campion/cvstene/ D’autres projets libre et scientifique : https://github.com/scikit-learn/scikit-learn/ https://gforge.inria.fr/projects/visp/TPTP

16 16 La genèse, le langage du client : l'expression du besoin Tout logiciel tente de répondre à un besoin. Bien formuler un besoin, une question de façon précise et dans un langage adapté... c'est souvent déjà répondre en partie voire complètement au besoin. La formalisation du besoin, c'est le langage du « client », en général en langage naturel : - l'expression du besoin, la commande - le cahier des charges, l'ingénierie des exigences Rôle de l'Assistant à la Maîtrise d'Ouvrage (AMOA)  conseil de l'homme de l'art au client, au maître d'ouvrage (MOA, MOAS, MOAD)  Rôle du Maître d'Oeuvre (MOE) => pilote du projet de développement logiciel Logiciel pour les non-geeks

17 17 Logiciel pour les non-geeks

18 03/02/2015 18 Le langage du client : un exemple Le client souhaiterais : 1.un exemple geek de programme informatique pour une formation logiciel nongeek 2.afficher 'Hello, World !' ici... 3.un logiciel qui affiche 'Hello, World !' sur cet écran... 4.un logiciel qui écrit 'Hello, World !' sur la sortie standard... Logiciel pour les non-geeks

19 19 TPTP Votre besoin : posteriser une image

20 20 La réalisation, le langage du programmeur Ingénierie sur : - les spécifications - la conception - le test, la validation Au moins deux niveaux : - l'architecture du logiciel (le plan global) - les programmes (les briques ou blocs logiques) R&D partout, plus ou moins appliquée ou basique. De minuscules difficultés peuvent être des problèmes de recherche « durs » Logiciel pour les non-geeks

21 21 La réalisation : choix du langage… Logiciel pour les non-geeks

22 22 La réalisation : choix du style... Paradigme de programmation Style de programmation, manière dont les solutions aux problèmes sont formulées dans un langage de programmation (souvent multi paradigme) Paradigmes principaux : - Programmation impérative : d'abord fait ceci, puis fait cela... Von Neumann ; Fortran, Algol, Pascal, Basic, C... - Programmation fonctionnelle : suite d'évaluation de fonction Lisp, Scheme, Caml (OCaml) - Programmation logique (ou déclarative) : répond à un problème par la recherche d'une solution Prolog, programmation par contraintes - Programmation orientée objet : collection d'objets en interaction Java, C++, Eiffel, Python Logiciel pour les non-geeks

23 23 La réalisation : choix d'architecture... Description d'une manière symbolique, schématique ou structuré : - des différents composant d'un système (de systèmes) informatique - de leurs interrelations - de leurs interactions Comme pour un livre : on peut l'appréhender par un résumé ou un plan détaillé ou une classification ou une série de références ou une analyse, sans forcément le lire. L'architecture du logiciel donne accès à diverses informations sur son fonctionnement, sa structure, son organisation interne, etc. sans nécessairement lire tout le logiciel. Vocabulaire lié à l'architecture des logiciels : - client / serveur - structuré / non-structuré : composant, brique, agrégat, bloc,... - monolithique / modulaire Logiciel pour les non-geeks

24 24 Le langage du programmeur : exemple (1/2) Comment s'écrit un tel programme ? Autres langages, voir : http://fr.wikipedia.org/wiki/Liste_de_programme_Hello_worldhttp://fr.wikipedia.org/wiki/Liste_de_programme_Hello_world En langage JavaScript (1995) : alert("Hello world!"); Ce code peut être inclus dans du HTML (pour une page Web) de cette manière : alert("Hello world!"); En langage Java (1991) : public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); // javax.swing.JOptionPane.showMessageDialog(null, "Hello world!"); } Logiciel pour les non-geeks

25 25 Le langage du programmeur (2/2) En langage C (1970) : #include main() { printf("hello, world\n"); } En langage Assembleur x86 (FASM) : org 100h ; directive: à la compil, offsets seg code doivent être décalés de 256 octets mov dx, message ; offset de la constante message définie à la fin mov ah, 09h int 21h ; appel de la fonction 09h de l'interruption 21h: affichage de la chaîne xor ah, ah int 16h ; fonction 00h de l'interruption 16h: attend touche mov ax, 4c00h int 21h ; fonction 4ch de l'interruption 21h: fin de l'exécution. al=00h (=pas d'erreur) message db "Hello world!$" ; le dollar est le caractère de fin de chaîne Logiciel pour les non-geeks

26 26 Le langage de la machine Divers termes : - le code objet : un résultat intermédiaire de la compilation - le code exécutable : un produit de la compilation, exécutable, pour une machine - le code binaire : un produit final, pour une machine - le « bytecode » : un résultat intermédiaire interprétable par une machine virtuelle - le code ROM : un produit final embarqué dans une zone mémoire à lecture seule Logiciel pour les non-geeks

27 27 Le langage d'une machine (type x86) Logiciel pour les non-geeks

28 28 La compilation : définition Compilation : processus de transformation d'un code source (en général programme écrit par un humain dans un langage de programmation) en code cible (programme en langage machine ou interprétable => partie d'un logiciel). Utilise un (autre) logiciel spécifique appelé compilateur (et souvent d'autres outils logiciels ou librairies de développement, en amont ou en aval de ce processus). Compilateurs particuliers : - compilateur croisé (cross-compilateur) : le code cible est pour un type de machine différent de celui sur lequel s'exécute le compilateur (fréquent dans l'embarqué). - compilateur de compilateur : compilateur permettant de créer un compilateur ou une partie de compilateur (la plupart des compilateurs en sont). Exemples : GCC (au moins 6 front-end et 63 back-end, voir diapo 33) Logiciel pour les non-geeks

29 29 La compilation : processus Logiciel pour les non-geeks

30 30 La compilation : interpréteur / générateur Liens avec : - l'interpréteur : implémente les premières phases du processus de compilation, mais le « générateur de code » est remplacé par de l'exécution directe. La plupart des programmes informatiques peuvent être compilés (transformés dans un autre langage) ou interprétés (exécutés à la volée). - le générateur (de code) : implémente les dernières phases du processus de compilation. Assure la fonction de production de code cible. Le code cible est produit en fonction de paramètres sources (en général résultats des premières phases du processus de compilation). Le générateur n'invente rien : il transforme (d'une façon déterminée) une partie de lui- même et/ou une partie des données sources. Logiciel pour les non-geeks

31 31 Logiciel pour les non-geeks

32 32 La fabrication du produit logiciel final D'autres logiciels dans la chaîne de production du produit logiciel final. => une chaîne de fabrication, des usines.... (faire des analogies) Logiciel pour les non-geeks

33 33 Le génie logiciel : définition Ensemble des activités de conception des produits et des procédures tendant à rationaliser la production du logiciel et son suivi. Art de produire de bons logiciels, au meilleur rapport qualité-prix. Critères externes (pour l'utilisateur) => tests : - fiable - robuste - efficace - intuitif Critères internes (pour l'éditeur) => relecture, audit, professionnalisme : - lisible, facile à maintenir - portable, extensible, réutilisable Logiciel pour les non-geeks

34 34 Le juste prix ● L'ordinateur doit générer un nombre aléatoire entre 0 et 100 et nous proposer de deviner le montant. ● A chaque essai, l'ordinateur doit dire si c'est plus ou moins. ● Une fois le montant trouvé, il doit indiquer le nombre d'essais qu'il a fallu au joueur pour trouver la bonne réponse. http://repl.it/ Logiciel pour les non-geeks TPTP

35 35 Génie logiciel : notion de qualité Logiciel pour les non-geeks

36 36 Le génie logiciel 1968 : « software crisis » & « software engineering » Méthodologie : SWEBOK (IEEE) 10 disciplines, software... - requirements : spécifications - design : architecture du système, composants et interfaces - construction : programmation et vérification - testing : les tests - maintenance - configuration management : gestion de version, intégrité et traçabilité - engineering management : gestion de projet - engineering process : amélioration du cycle logiciel - engineering tools and methods : les outils - quality : qualité Un programmeur passe entre 10 et 20% de son temps à coder, et écrit en moyenne 10 à 12 lignes de code par jour qui seront incluses dans le produit final Logiciel pour les non-geeks

37 37 Exemple d'architecture : SOFA Logiciel pour les non-geeks

38 38 Exemple d'architecture : DIET Logiciel pour les non-geeks

39 39 Exemple d'architecture : DIET - détail Logiciel pour les non-geeks

40 40 L'objet logiciel, récapitulatif Le logiciel : - prend des formes diverses - connaît une évolution rapide - est la traduction d'un besoin utilisateur pour une machine par un programmeur - réutilise massivement à divers niveaux des logiciels … enjeux divers de traçabilité !! Logiciel pour les non-geeks

41 41 Son environnement La machine, l'écosystème numérique 2

42 42 De l'infiniment petit à l'infiniment grand Logiciel pour les non-geeks

43 43 L'environnement Un univers particulier ? Une expansion exponentielle... Des couches, des piles, des niveaux, des dimensions... Dynamique, récent... Logiciel pour les non-geeks

44 44 L'écosystème : les dépendances du logiciel Un logiciel est un ensemble structuré de données qui dérive et/ou dépend de différents autres systèmes : - systèmes de production - systèmes d'exécution En lien avec des systèmes d'inter-action avec l'utilisateur et l'environnement réel. Ces systèmes sont composés : - de données (y compris des programmes, des logiciels) - de matériels (incluant, réutilisant ou produisant des données) Quelques termes relatifs aux dépendances logicielles : bibliothèque (library), interface (de programmation : API), données (data), plate-forme, site, architecture, composant, matériel, outils, logiciels (OS, middleware, CODEC, protocole, standard, norme), paramètres, version (date, langue), type, configuration, infrastructure,... Logiciel pour les non-geeks

45 45 Système de production des logiciels Le logiciel se densifie dans toutes les fonctions et outils des organisations : - les outils de gestion intégrée de l'organisation : GPAO, ERP/MES... - les outils de conception et développement métiers : CAO, PLM... - les outils de conception et développement logiciels : IDE, forge... => clef de la compétitivité (ou survie) des organisations (et de leur production) => nombreuses dépendances (cachées) du produit (logiciel) aux producteurs Logiciel pour les non-geeks

46 46 Les 3 principaux éditeurs de logiciels EU Logiciel pour les non-geeks

47 03/02/2015 47 Système de production des logiciels Deux exemples d'outils pour la fabrication de logiciel : - Environnement de Développement Intégré Eclipse, le « couteau-suisse » (code source : 4 millions de lignes Java) - GCC, GNU C Compiler, le « marteau » (code source : 1,9 millions de lignes de C, 600k Java, 600k ADA... 427MB en 2010) - Outillage minimal : - Un ordinateur - Un éditeur de texte qui permet de rédiger du code source. - Un compilateur ou interpréteur : transforme le code source en langage machine et l’exécute - Le gestionnaire de version rapidement indispensable Logiciel pour les non-geeks

48 03/02/2015 48 Le VCS est un outil pour gérer une liste de fichiers (code source) permettant : Réversibilité : possibilité de revenir dans un état précédent connu du code source Concurrence : possibilité de modifier ces fichiers par plusieurs personnes au même moment et donc de détecter les conflits dans les modifications, voir de les résoudre Annotation : possibilité de commenter chaque modification pour comprendre la signification du « patch » /!\ Toutes les contributions ne sont pas nécessairement au même endroit Pourquoi utilise t-on un gestionnaire de version ?

49 03/02/2015 49 La forge logiciel ● Centralise les outils collaboratifs d’un projet ● Membres avec différents droits ● Code source via un gestionnaire de version ● Documentation (Wiki) ● Communication (Wall, mailing list) ● Revue du code ● L’intégration continue ● Gestionnaire de tickets (Bugs, taches, demandes d’évolution, …) Logiciel pour les non-geeks

50 03/02/2015 50 TPTP https://gitlab.irisa.fr/sebastien.campion/cvstene/

51 03/02/2015 51 TPTP Coding Dojo : implémenter la posterisation d’image en python Découvrir le format d’image PGM Ecrire le pseudo algorithme Implémenté la solution en python

52 03/02/2015 52 Revue de code

53 03/02/2015 53 Intégration Continue

54 03/02/2015 54 Organisation en branche de travail

55 03/02/2015 55 Cas réél d’utilisation des branches

56 03/02/2015 56 Gource software version control visualization - Git to v1.0 https://www.youtube.com/watch?v=GTMC3g2Xy8c

57 Cas réel : l’image est compressée  Rechercher une bibliothèque de lecture d’images JPEG en python  Ajouter une dépendance de trois manières différentes  Vérifier les licences de la librairie 03/02/2015 57 TPTP

58 03/02/2015 58 Système d'exécution des logiciels : l'OS Logiciel pour les non-geeks

59 03/02/2015 59 Environnement et mode d'exécution Un programme peut être exécuté avec différents types d'outils (ou machine) : ● Interpréteur (haut-niveau), processeur (bas-niveau), débogueur (mise au point) : outils pour exécuter ou étudier le programme (sans compilation ou déjà compilé) dans le système cible. Exemples : script exécuté par l'interpréteur du langage, code machine/binaire exécuté par le processeur, programme exécuté pas à pas dans le débogueur. ● Simulateur : outil pour exécuter ou étudier le programme sans réaliser d'exécution dans le système réel cible, à partir de modèles de celui-ci. Mots-clefs : Abstraction, modélisation, simulation. ● Émulateur : outil qui reproduit fidèlement le comportement du système réel cible, utilisé pour exécuter ou étudier le programme sans le système cible. Exemple : Emulation, virtualisation, machine virtuelle. Logiciel pour les non-geeks

60 03/02/2015 60 L'environnement matériel : la machine Un logiciel est conçu pour un type particulier de machines. La machine n'est pas toujours électronique et numérique ●Machine de Turing (concept), Machine analytique (mécanique / élec.) ●Ordinateur quantique (Prix Nobel physique 2012 Serge Haroche, qubit / bin.) ou optique (photon / électron) ●Ordinateur ADN / neuronal / biologique (vivant / matériel) ●... Logiciel pour les non-geeks

61 03/02/2015 61 La loi de Moore : du transistor au n-core Logiciel pour les non-geeks

62 03/02/2015 62 Zoom sur une machine... Logiciel pour les non-geeks

63 03/02/2015 63 Zoom sur une machine... Logiciel pour les non-geeks

64 03/02/2015 64 Ne zoomons pas trop... Logiciel pour les non-geeks Emetteur Base Collecteur Transistor Tout ou rien Diapos 9 et 52, 53.

65 03/02/2015 65 TPTP Coding Dojo : implémenter la posterisation d’image en C Contrainte client : l’interpréteur Python n’est pas installé sur les postes cibles sous OS GNU/Linux Rendre notre algorithme portable Différencier du code interprété d’un code compilé Comprendre la notion de dépendance, l’édition de liens des codes objets Reconnaître le code de packaging du code source Rechercher une bibliothèque de lecture d’images JPEG en python Ajouter une dépendance de trois manières différentes Vérifier les licences de la librairie

66 03/02/2015 66 L'environnement réseaux : Web, Internet Logiciel pour les non-geeks http://internet-map.net

67 03/02/2015 67 L'environnement réseaux : Data XML : Bien formuler un besoin, une question de façon précise et dans un langage adapté... c'est souvent déjà répondre en partie voire complètement au besoin. (diapo 19, vers le web sémantique ou web 3.0) Logiciel pour les non-geeks

68 03/02/2015 68 Environnement : inter-actions et acceptation Un logiciel s'exécute (ultimement) dans des machines réelles, qui inter-agissent dans l'environnement réel : - le vivant (utilisateur – ou non ! – de la machine) - le matériel (d'autres machines ou des ressources) - l'immatériel (avec impacts réels) => inter-opérabilité (protocoles, normes et standards, échanges) => impact sociétal (design, usage, IHM) => impact écologique (cycle de vie : production, utilisation, fin) => impact économique (confiance, renommée, réputation) Toujours sans garantie ? La gestion des risques... La valeur du logiciel dans la garantie => validation, relecture, analyse statique, qualité, tests, analyse statique, AMM, certification ou label, audit / IPRA, … Logiciel pour les non-geeks

69 03/02/2015 69 L'écosystème : les limites Pas de limite théorique : - de niveaux ou couches ou abstractions (système, circuit) - d'interconnexion ou d'imbrication (système de systèmes) Mais des limites physiques (la matière est puisée dans notre écosystème) : - énergie : nécessaire à chaque élément pour inter-agir, => moins de matière à déplacer = moins d'énergie dépensée => pour animer la matière : l'électron ou autres particules élémentaires - matière : nécessaire à chaque cellule réelle de mémoire ou de traitement => plus de cellules = plus de capacités réelles de traitement => miniaturiser : microélectronique, nanotechnologie / biotechnologie => dupliquer : processeur, multi-core, many-core, … mis en réseaux ou synthétisés - vitesse : des inter-action élémentaires ou de propagation (il existe un maximum) => vitesse onde EM : GHz (+horloges multiples) ou asynchrones Logiciel pour les non-geeks

70 03/02/2015 70 Logiciel pour les non-geeks IPv4 : 2^32 adresses IPv6 : 2^128=3,4*10^38

71 Étude de cas Comment licencier le logiciel SAMUSA ? 71 03/02/2015

72 72 merci


Télécharger ppt "08/03/2016 Le logiciel pour les non-geek Introduction générale au logiciel Sébastien CAMPION."

Présentations similaires


Annonces Google