1 / 69

Fabrication de logiciel Hier, aujourd’hui, et ……

Fabrication de logiciel Hier, aujourd’hui, et ……. Jean Claude Derniame ALS 12 mars 2009 Jeanclaude@derniame.fr. Barry Boehm. Présentation partiellement inspirée d’un papier invité de Barry Boehm à la 28ème Intl Conf on Software Engineering Shangai Mai 2006 B Boehm

jody
Download Presentation

Fabrication de logiciel Hier, aujourd’hui, et ……

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fabrication de logicielHier, aujourd’hui, et …… Jean Claude Derniame ALS 12 mars 2009Jeanclaude@derniame.fr

  2. Barry Boehm • Présentation partiellement inspirée d’un papier invité de Barry Boehm à la 28ème Intl Conf on Software Engineering Shangai Mai 2006 • B Boehm • TRW Professor of Software Engineering at USC, débuta en 55 chez General Dynamic , puis à Rand Corporation, a été directeur de DARPA au DOD, puis professeur … • Auteur de modèles majeurs (cascade , spirale, Cocomo, • Leader dans la Communauté Software Process

  3. Motivation et Contexte • Vue “20éme siècle” • Vue “21éme siècle” • Conclusions Génie logiciel • Définition, basée sur celle de Webster de l'ingénierie • L’application des sciences et des mathématiques par laquelle les propriétés du logiciel sont utiles. • Inclut “computer science” et les sciences permettant de rendre les choses utiles aux gens • Sciences du comportement, économie, sciences de gestion, etc. • Immense • Focalisera sur la fabrication des grands?? programmes industriels, militaires etc , hier, aujourd’hui et …..

  4. Motivation et Contexte • Vue “20éme siècle” • Vue “21éme siècle” • Conclusions • Importance d’une perspective historique Pour quelque chose qui est apparu comme un moyen d’accélérer les calculs Puis comme une technologie prometteuse et utile partout Puis une science et … une technologie envahissante!

  5. Pour faire des logiciels, il faut • Des machines • Des concepts et des langages • Des outils variés • Des ateliers • Des méthodes et …… Des humains! • pour atteindre des programmes de qualités différentes: • corrects, fiables, performants, maintenables, • réutilisables, agréables, faciles à apprendre, etc.…

  6. Machines Langages Outils Ateliers Procédés Des machines • Le métier à tisser de Jacquart, 1801 • 1936 “On Computable Numbers with an Application to the Entscheidungsproblem” par Alan Turing, premier calculateur universel programmable • Premier calculateur réalisé en 1941 • Premier calculateur à l’université de Nancy 1957 • IBM 650 (2000 mots de 10 chiffres décimaux) • Ordinateurs d’institutions • Premiers ordinateurs personnels début 1980 • Apple2, PC,… Sur papier!!!

  7. Machines Langages Outils Ateliers Procédés Machines aujourd’hui • Nombre d’ordinateurs personnels dans le monde • Ont été vendus en 2008: 300 Millions • Présents fin 2008: 1 Milliard • Présents fin 2 015 : 2 Milliards • Produits depuis l’origine: 2,3 Milliards fin 2008 • > 35 000 dans Nancy Université, 4500 INPL • Stockage dans les services centraux de NancyU > 60 téra octets (1012)

  8. Explosions • Explosion du nombre d’utilisateurs • Explosion des usages • Explosion des méthodes, des langages • Explosion de la demande de logiciel!!!! • Explosion de la taille de programmes demandés • Babel…….?

  9. 1950’s Thèse: “Faire le logiciel comme le matériel” B Boehm • Hardware-oriented: • Applications:CALCULS avions, ponts, , circuits • Economie: Boehm project supervisor, 1955 • “We’re paying $600/hour for that computer, and $2/hour for you, and I want you to act accordingly.” • Software Processes: SAGE (Semi-Automated Ground Environment) • 1 Million de lignes de code pour un système de défense aérienne, temps réel, avec beaucoup d’interactions avec les utilisateurs…… • Succès du développement pour un système sans précédent • Hardware-oriented waterfall-type process

  10. Machines Langages Outils Ateliers • Procédés

  11. 1960’s Antithèse: . Software Is Not Like Hardware • Illisibilité • Complexité: Royce, “for a $5M procurement, need a 30-page spec for hardware, and a 1500-page spec for software” • Conformité: distance entre souhaits et réalisation • Evolutivité: au-delà d’un certain point, impossible à maintenir • fiabilité.? Sécurité? • Langages non contraints: un nombre peut aussi bien représenter un temps de voyage, une vitesse, la gravité, etc

  12. Erreurs • Sources d’érreurs • Apparition d’un « principe »: “Un programme est un paquet d’erreurs” “Un petit programme est un petit paquet d’erreurs” “Un gros programme est un gros paquet d’erreurs”

  13. 1960’s Antithesis • Matériels non fixés, changements fréquents • La demande excède possibilités des ingénieurs • Médecine, physique, musique, histoire, arts majeurs • Code-and-fix process • Contre-culture: remise en cause de l’autorité? • “Cowboy programmers” considérés héroiques • Hacker culture (Levy, 1984) • Propriété collective du code • Libérer logiciel, données, l’accés aux ordinateurs • Programmeurs jugés par “l’élégance” de leur code

  14. 1960’s Progrès • Meilleure infrastructure: OS, compilateurs, utilitaires… • Départements informatiques • Familles de Produits : OS-360, CAD/CAM, bibliothèques math/statistiques • Quelques grands succés: Apollo /ex • Bases de la programmation rigoureuse et professionnalisation

  15. Machines • Langages Outils Ateliers Procédés 1960’S Eclosion des langages Selon C.A.R. Hoare “Algol a été une grande amélioration de ses successeurs“ Backus,Naur,Hoare, Dijsktra…

  16. Machines • Langages Outils Ateliers Procédés Programmation impérative • Concepts de base des langages • Instruction : quoi faire • Affectation : attribuer une valeur à un nom ( variable) • Itération: recommencer une suite d’instructions • N fois, • Jusqu’à une certaine condition • Tant qu’une condition est vraie • Appeler une fonction avec paramètres • TYPE d’une variable: ensemble des valeurs qu’il est permis de lui affecter • Programmation structurée • Tout cela contrôlé par le compilateur

  17. 1960’s à Nancy • C Pair arrive en 1960, prof en 61 • compilation, théorie de la compilation, langages ( Algol 68), programmation déductive….. Avec les bons principes qui apparaissent • J Legras • Analyse numérique, Algol linguistique, puis informatique de gestion • en 66 une vingtaine de personnes • On travaille sur une CAE 510: 8 K, 1 lecteur de ruban,1 dérouleur de bande magnétique ou à Grenoble ou dans des banques • Mon premier “grand programme” Programme PERT sur un graphe de 3000 points (N2logN) ~10 000 000 d’opérations de graphe, “mémoire virtuelle”, 12 heures de calcul

  18. Machines Langages Outils Ateliers • Procédés 1960’s Problèmes • Problèmes: cf 1968, 1969 NATO Reports • Echecs de nombreux grands systems • Pénétration de la programmation structurée très lente dans les milieux industriels • Encore beaucoup de “code spaghetti” non maintenable • Systèmes non fiables, non diagnostiquables • Compétences techniques des “programmeurs”

  19. 1970’s Thèse • Methodes Structurées • Structured programming (Boehm-Jacopini: GO TO unnecessary) • Formal programming calculus: Dijkstra, Hoare, Floyd • Analyse descendante Mills, Baker • Waterfall Methods • “Code and fix“ trop onéreux (100:1 for large systems)….il faut • “Concevoir avant de programmer” (De Marco SD, Jackson JSD/JSP) • “Spécifier avant de concevoir” (PSL/PSA, SA, SREM) • dire le “quoi” d’abord et le vérifier avant d’aller plus loin • Algorithmique et structures de données

  20. Machines Langages Outils Ateliers • Procédés 1970’s: Problèmes avec le modèle “Cascade” Cots: Commercial of the shelf: Achat sur les rayons du magasin • Interpretation trop littérale des jalons séquentiels • Ne convient pas aux applications interactives • Jalons passés mais pas validès • Documentation énorme, difficile à lire, à maintenir • Ne convient pas avec COTS, ni la réutilisation • Analyse ascendante vs. descendante • Passage à l’échelle, durée, obsolescence • 3 000 000 Lignes de code source :72 mois en développement séquentiel = 4 générations d’ordinateurs……et 318 changements majeurs dans les spécifications

  21. Problèmes avec les méthodes formelles • Excellentes pour petits programmes , critiques • Plus grands programmes prouvés ~ 10 KSLOC • Preuves montrent la présence de défaults, pas l’absence • Plus efficaces dans les spécifications • Généralisation à la communauté des développeurs • Techniques demandent expertise en math , $50/SLOC • Profil programmeur moyen aux US en 1975 : • 2 ans de college, experience en logiciel • Familier avec 2 langages, applications • Désordonné, rigide, “tout dans la tête”, et difficile à gérer • En France: mieux ( un peu) moins nombreux ( beaucoup)

  22. 1970’s GL à Nancy • Depuis 67: Plan calcul ordinateurs français: Iris 10, 15, 125, 50, 80 • Contribue à nous laisser à l’écart de la communauté internationale • Oblige à développer nos propres logiciels: • Programmation récursive (C Pair) • Spécifications algébriques ( JP Finance) • Début des preuves de programmes (P Lescanne) • Civa 1er langage modulaire français et avec atelier en 73 450 000 L • Typ 1er langage français à types abstraits 79 (JCD) • Peu d’impact international en termes d’utilisation

  23. 1980’s Synthèse: Productivité, Réutilisation, Objets • Problème mondial de productivité, compétitivité • Japon /ex: Toshiba SW-reuse: autos, électronique • Meilleurs accélérateurs de productivité de SW • Travailler plus vite : outils et environnements • Travailler mieux: procédés et méthodes • Travailler moins : réutilisation, simplicité; programmation par standards, objets, • “Silver bullets” technologiques: AI, transformations, DWIM, PBE (Do What I Mean; Programming by Example)

  24. Langages Objets Outils Ateliers Procédés 1980’s Des langages….Babel • En 1979 4000 langages avec un compilateur ! • Le DOD a des programmes écrits dans plus de 1000….. • Standardisation! • Appel international langage généraliste (algorithmique, calcul scientifique, temps réel, gestion) • comités d’évaluation dans 12 pays, 2 ans évaluation, sélection, amélioration • Bull Ichbiah, Cousot, Abrial, … • Obligatoire(US admin ) pendant 10 ans, • ailleurs très utilisé pour les grands programmes militaires et/ou industriels et enseigné

  25. Dans le même temps d’autres paradigmes • Programmation et conception par objets • Programmation concurrente • Programmation par agents • Programmation par contraintes • Programmation logique • Langages multiparadigmes • 2 mots clés: Intégration Interopérabilité

  26. Langages • Objets Outils Ateliers Procédés Données Sous-programmes Programmation Objet • Objet du monde physique ( ou pas) est représenté par: /ex moteur d’une voiture • Ses attributs ( valeurs caractéristiques/ex) • Etat, puissance, Nbre de tours /mn, etc… • Les “messages” auxquels il peut “réagir” • Démarrer, accélérer, ralentir, éteindre, etc.. Encapsulés

  27. Héritage…..Meubles Attributs communs Taille, prix, volume, matériaux, couleur, etc….. Attributs spécifiques: assise, accoudoirs, …. Méthodes communes Acheter, vendre, déplacer, casser, renverser …… Méthodes spécifiques: balancer, s’asseoir ….

  28. Langages • Objets Outils Ateliers Procédés Héritage, surcharge • Si chaisehérite de meuble, tout ce qui a été écrit pour meuble est (ré)utilisable pour une chaise • Déplacer une chaise s’écrit comme déplacer un meuble: machaise.déplacermême si le traitement est différent “surcharge des méthodes ” • Les objets sont “typés” : si un nom a été déclaré du type chaise il ne pourra désigner que des chaises, sinon erreur

  29. Langages • Objets Outils Ateliers Procédés Réutilisation des objets • Analyse et conception par objets plus “naturelle” • Développement de bibliothèques d’objets • Bonne approche de réutilisation dans un contexte donné, un langage donné • Portabilité, réutilisation dans contextes différents devra encore progresser (OK maintenant)

  30. Langages Objets • Outils Ateliers Procédés 1980’s Des outils • Editeurs de textes sources connaissant la grammaire du langage • Incrémental • Graphique • Outils de mesure • Outils de tests • Générateurs d’éditeurs, d’outils de mesure, de jeu de tests, de compilateurs, etc…

  31. Langages Objets Outils • Ateliers Procédés Compilateurs O de mesure Ed de liens Debugger Editeurs Gen de Tests Environnement de programmation Système

  32. Langages Objets Outils • Ateliers Procédés • Notion apparue ~1970 beaucoup enrichie depuis • Plus d’outils , couvre tout le cycle de vie du logiciel • Ex demo env Java Netbeans

  33. Langages Objets Outils • Ateliers Procédés Réapprovisionner stock Annuler Commande Autoriser paiement Réapprovisionner stock Affecter à commande Honorer Commande Recevoir Commande Vérifier ligne de commande /ex Editeurs de conception * Pour chaque ligne de cde [Échec] [Pas en stock] [En stock] [Succès] [Besoin de Recommander] [Stock affecté à toutes les lignes de cde et payement OK]

  34. Langages Objets Outils • Ateliers Procédés Distribution Programmation Conceptions Vérification Besoins MAintenace versions assistance sécurité apprentissage Documentation Configurations Etc…. Atelier de logiciel Système

  35. 1980’s à Nancy • 81 Crin 90 personnes Pair part • 81 VAX 750 • 84 Dossier INRIA • Preuves de programmes se développent (P Lescanne) • Programmation par contraintes (JJ Chabrier) • Environnements de spécification (JP Finance) • Objets Eiffel ( B Meyer, D Colnet 86) • Outils éditeurs de texte (incrémental, graphique, générateur..), (JCD) • 85 LTR3Langage temps réel pour la défense nationale (Sita) • 86 Ateliers: participation à PCTE (Portable Common Tool Environment) Projet européen de plate forme supportant des ateliers ( coût moyen d’un atelier qqs 100 Homme-année) • 88 Alf Prototype européen d’atelier centré sur des modèles de procédés

  36. Beaucoup de progrés techniques, recherche et industrie, mais…. beaucoup d’échecs, de retards, d’insatisfactions

  37. Insuffisance, variation, irréalisme des specifications : 35,9% Pbs de maîtrise des Technologie:10,7% Pb de support, “d’organisation” donc de “procédé”:23,5% • Motivation et Contexte • Vue “20éme siècle” • Vue “21éme siècle” • Conclusions

  38. Langages Concepts Architectures Plateformes Procédés Antithèse 1990’s Langages 2000: • Java, C≠ , Prolog, Python, VHDL, ML, Ruby, TCL, Php, W-langages ( win dev) ….. et tous les langages du web

  39. Langages • Concepts Architectures Plateformes Procédés Antithèse 1990’s concepts • Progrès majeurs dans les procédés et les plates formes • Inginiérie des domaines,` /ex Businesss Objects • Lignes de produits • UML, • architecture • Planning vs assistance • Plateformes objets distribués CORBA

  40. Langages Objets Outils • Ateliers Procédés Distribution Programmation Conceptions Vérification Besoins MAintenace versions assistance sécurité apprentissage Documentation Configurations Etc…. Atelier de logiciel Cette plate forme devient de plus en plus importante Système

  41. Langages Concepts Architectures Plateformes • Procédés Antithèse Evaluation des risques Nouvelles spec Evaluation des risques Enoncé Essais Réalisation Expérimentation prototype Le modèle en spirale • Interviews • Prototypes • Comité de pilotage • évaluation validation • modèle en spirale

  42. Langages Objets Outils Ateliers • Procédés Procédés: Premières idéesFin des 80’s . • Ateliers centrés sur des modèles de procédés • “utiliser la connaissance des procédés comme outil d’intégration • Intègre les ressources et les rôles des intervenants • Support d’exécution des modèles de procédés : “SW processes are SW too” ( L Osterweil) • Ce qui est bon pour les programmes est bon pour les procédés • Reutilisation, modularité, , architecture, programmation • Créativité? Incertitude? • Support à la conformité des procédés: • Standards and CMM: Standard national (US) pour évaluer la “maturité“ d’une organisation reposant sur des principes de “bon” développement

  43. ALF • Langage modulaire, multiparadigme (impératif, pre-post, raisonnement, rôles, contrats) • offrant assistance aux usagers • Quoi faire? • Comment? • Pourquoi en suis-je arrivé là? • Comment réparer?, et si…? • Travailles pour moi

  44. Langages Concepts Architectures Plateformes • Procédés Antithèse 1991 Exemple de référence • En 91, la communauté US “Software process” organise un challenge entre concepteurs de langages de description de procédés à Tokyo chacun devant décrire le même exemple de développment d’un grand programmeexemple • ALF 2ème : Réaction des européens présents: Proposition d’un groupe de recherche Promoter “ouvrir  les procédés à la créativité et l’incertitude des développments” Financé 7 ans toujours actif

  45. 1990’s Antithèse • “Time to market” • Individus Emphase sur programmation individuelle et les interactions plutôt que planning et outils • Logiciel ouvert, (libre, gratuit?) • Personal Software Process • Apparition des méthodes “Agiles” • petites itérations, pair-programming, etc • Applications réparties

  46. Langages Concepts Architectures • Plateformes Procédés Antithèse PCTE+, PCIS 1 Projet OTAN • Groupe de convergence PCTE avec le projet US • PCIS Portable s-Common Tool Integration Set • Première version d’une spécification de plateforme multilangage ( Java, C, C++) multisystème, (Windows, Unix) Sécurisée • 30 personnes, 7 pays, ….. abandonné

  47. Langages Concepts Architectures • Platefrmes Procédés Antithèse PCIS2 • 95 Tim Lindquist( Phoenix) et moi faisons une proposition spontanée US-DOD, France DGA d’une plateforme basée sur ces idées mais centrée sur un modèle de procédé simplifié et souple et une organisation différente • 97 cahier des charges : 1500 outils ≠ , en réseau intervenant sur toute les infos disponibles • Traçabilité, évolutivité, ouvert, Corba, Java, C++ • 2ans pour les spécifications…..réussi EN 1999 car • définition par un groupe de 10 personnes (Cf Boehm 1955) • 2 U, Sema ( 5 ), Ocean Surveillance Center San Diego (3) • Réalisé par une vingtaine de très bons 22M $ • F abandonne en 2000 • US: Surveillance radar de la côte ouest des US et du pacifique

  48. Langages Concepts • Architectures Plateformes Procédés Antithèse Corba, .net,dCom, J2E

  49. Langages Concepts • Architectures Plateformes Procédés Antithèse Corba : Objets distribués • Réutilisation ===O==> Partage d’objets implantés ailleurs • Changement d’échelle: mise à disposition d’objets informatiques au niveau de la planète • Infrastructure “mondiale” + qqs bémols • Migration importante de concepts Intégration ==o==>interopérabilité =o=> location de logiciel • Supporte les 3 •  Utilisable / informaticiens • Architecture complétée par la notion de “composant” pour faciliter la réutilisation

  50. Langages • Concepts Architectures Plateformes Procédés Antithèse Composants Un composant logiciel est un élément conforme à un modèle de composant qui peut être déployé et composé indépendemment, sans modification, selon un standard de composition ●Council et Heinmann Szyperski ajoute Il est décrit uniquement par des interfaces définies contractuellement et par ses dépendances du contexte

More Related