Académique Documents
Professionnel Documents
Culture Documents
1cours #1 (Part 1) - Six Décennies de Génie Logiciel
1cours #1 (Part 1) - Six Décennies de Génie Logiciel
com
Objectif général du sujet Développer des capacités d'utilisation efficace
de divers langages de programmation et
architectures afin de concevoir et de
développer des applications logicielles
Objectifs spécifiques Comprendre les principes des différents types
de langages de programmation et ce qu'il faut
savoir pour programmer efficacement dans un
langage spécifique. À cet égard, il existe trois
composants cruciaux : le paradigme du
langage, la syntaxe et la sémantique.
L'établissement et l'utilisation de principes
solides d'ingénierie afin d'obtenir
économiquement un logiciel fiable et
fonctionnant efficacement sur de vraies
machines
Activité Critère d'évaluation Méthodes d'évaluation Poids dans la
note finale
Connaissance du Questionnaire de 30 questions
contenu du didacticiel choisies au hasard dans une
Cours (2h/semaine) base de connaissances.
50%
L'architecture compte
• Nouvelle architecture <=> innovation révolutionnaire
Donc, si vous jetez un œil aux années 60, voici les principaux thèmes:
• L'architecture est importante, car les nouvelles architectures semblent être à l'origine
d'une innovation de rupture.
• En 1968, la loi de Conway stipule que l’architecture du système informatique et
l’architecture organisationnelle sont les mêmes, et vous cherchez donc à faire en sorte
que cela fonctionne (les organisations conçoivent des systèmes qui reflètent leur propre
structure de communication).
• L'autre chose, si vous regardez Internet qui est la définition de la fiabilité à grande échelle,
il y a trois principes fondamentaux:
1. Redondance
2. Les isolations garantissent que vous ne rencontrez pas de pannes en cascade
3. La responsabilité locale signifie que l'hôte est responsable, et non un élément du
réseau proche du responsable.
1970: ARPANET Repense l’Architecture Réseau
CYCLADES
1974 : TCP/IP
Dans les années 1970, Xerox PARC a été lancé dans le but de concevoir le bureau du futur.
Bien que Xerox ait son siège sur la côte Est des États-Unis, ils ont décidé de placer les
chercheurs en Californie, sur la côte ouest où ils ne seraient pas influencés par la direction de
l'Est (il en a été de même pour IBM lorsqu'ils ont lancé le projet IBM PC). Et ils étaient
vraiment productifs. Ils ont conçu l'interface graphique, les affichages bitmap, l'édition de
WYSIWYG (what-you-see-is-what-you-get), ils ont inventé les fenêtres qui se chevauchent, la
souris, les menus, les icônes. Ils ont inventé l'informatique interactive: le premier ordinateur
personnel, la publication assistée par ordinateur, l'impression laser, Smalltalk (lorsque Agile a
été lancé dans les années 2000, presque tous les premiers utilisateurs étaient des
Smalltalkers - car Smalltalk était un langage qui encourageait une manière agile de penser les
logiciels). Enfin, ils ont inventé Ethernet. Donc, ils ont inventé toutes ces choses merveilleuses
mais n'ont pu commercialiser aucune mais une de celles-ci: l'imprimante laser, car c'était un
objet plus proche de ce qu'ils vendaient déjà: des copieurs.
Thèmes des années 1970 :
L'ingénieur responsable
• Les ingénieurs sont responsables de la conception et du
développement d'un composant et de s'assurer que leur
composant fonctionne correctement et fait son travail dans le
cadre du système global.
Conception résiliente
• Tout ce qui peut mal tourner finira par mal tourner.
Programmation structurée
• «Si vous voulez des programmeurs plus efficaces, vous auriez
découvrir qu'ils ne devraient pas perdre leur temps à déboguer - ils ne
devraient pas introduire de bogues pour commencer» *
* Edsger Djikstra
Les années 1980 ont été l'époque où les ordinateurs personnels ont été inventés et les
applications d’adoption massive (killer apps) étaient les traitements de texte et des feuilles de
calcul.
En même temps, il y avait les langages 4GL qui généraient des rapports et ils étaient vraiment
bons au début, de sorte que les gens ont commencé à se demander: pourquoi avons-nous
plus besoin de programmeurs?
Eh bien, nous sommes toujours là, et la raison est que chaque fois que vous passez à un
langage de niveau supérieur, vous passez simplement au niveau de complexité suivant, les
problèmes que vous résolvez sont plus complexes, donc, c'est juste un autre niveau
d'abstraction, mais vous devez toujours faire face à la complexité quelle que soit la couche sur
laquelle vous travaillez.
Thèmes des années 1980 :
L'exécution compte
• L'expertise, la concentration et l'attention portée aux
détails sont essentielles pour la fiabilité, l'évolutivité,
convivialité, la sûreté, la sécurité...
Dans les années 90, vous aviez des appareils de présentation (périphériques frontaux), puis
des serveurs d’applications et une base de données attachée à un gros serveur en arrière-
plan.
Pourquoi a-t-on besoin d'un serveur de base de données? Parce que si vous faisiez un
traitement de transaction comme la plupart des applications le faisaient dans un centre de
données à ce moment-là, vous avez besoin d'un ensemble de propriétés ACID (Atommicity,
Consistency, Isolation, Durability) et si vous n'aviez pas de base de données, vous ne pouviez
pas avoir de transactions ACID, par conséquent, vous ne pouviez pas maintenir un système
d'enregistrement valide. Et cela était situé sur un seul serveur, et la raison était due au
théorème CAP (Consistency, Availability, Partitioning), ce qui signifie que vous ne pouvez pas
avoir cohérence, disponibilité et partitionnement en même temps. Donc, évidemment, vous
voulez de la cohérence et évidemment vous voulez de la disponibilité. Vous ne pouvez donc
pas procéder au partitionnement dans cette architecture.
Cependant, après 2001, lorsque certains des événements les plus dramatiques ont eu lieu, le
concept de cohérence éventuelle a permis aux gens de réfléchir de manière agressive au
partitionnement (en termes de théorème PACELC ca veut dire: Partitioning, Availability,
Consistency, else Latency and Consistency).
Années 1990 : un processus de livraison typique
\ \
I
Blocage typique du code
pour les tests : 30 %
Blocage typique des fonctionnalités
7 à 24 mois avant la sortie du
Parfois: 50 %
nouveau logiciel
Vous avez donc eu un temps extrêmement long entre la définition des exigences et la
publication de quelque chose.
Et donc nous allons au cœur de la raison pour laquelle nous utilisons Agile aujourd'hui.
Les années 1990 : une transformation du génie logiciel
Donc, dans le bazar, il y a toutes ces petites équipes qui travaillent de manière indépendante,
en compétition les unes contre les autres. Il y a beaucoup de redondance ici, il y a beaucoup
de gens qui exécutent des activités non coordonnées et la question ici est: comment un bazar
(qui est Open Source) pourrait-il fonctionner pour le génie logiciel? Mais cela a fonctionné et
nous savons que cela a fonctionné car cela vous a apporté un nombre illimité de ressources
pour résoudre des problèmes qu'une équipe dédiée, travaillant sur une cathédrale, ne pourrait
peut-être pas faire.
Les Années 1990 : l’Essor Improbable de l’Open Source
Et donc nous avons eu dans les années 1990 la montée improbable de l'Open Source:
• En 1991, nous avons Linux.
• En 1993, un groupe de développeurs de l'Université de l'Illinois à Urbana-Champaign a
examiné les hyperliens et a créé un serveur Web capable de le faire. En tant que tel,
NCSA HTTPd est un serveur Web précoce, maintenant abandonné, développé à l'origine
par Robert McCool et d'autres. Sorti pour la première fois en 1993, il figurait parmi les
premiers serveurs Web développés, après le CERN httpd de Tim Berners-Lee, le serveur
Plexus de Tony Sanders et quelques autres. En fait, Tim Berners-Lee à développé le
World Wide Web sur la machine NeXT de Steve Jobs dans quelques mois.)
• En 1999, IBM investit un milliard $ dans Linux et en parallèle, la fondation Apache a été
créée. Apache est actuellement utilisé par plus de 40% des sites Web dans le monde.
• Finalement, il y a quelques années, IBM a acheté RedHat pour 30 milliards de dollars !!!
Thèmes des Années 1990
La Cathédrale : processus standard
• "Planifiez le travail et travaillez le plan".
• Et puis les années 1990 ont été totalement consommées par l'an 2000 parce que tout le
monde pensait que le monde allait s'écrouler quand l'an 2000 viendra! Eh bien, ce n'est
pas le cas, mais vous avez beaucoup de gens qui ont consommé le plus d'énergie de la
communauté informatique pour trouver comment y remédier.
• Et en même temps, vous avez les nouveaux enfants sur le bloc comme Google et
Amazon que les gens ignoraient l’apparition, parce qu’ils étaient consommés par la
problème de l'an 2000.
Années 2000 : la décennie des équipes et des
« logiciels fonctionnels »
An 2000 - Explication de la
programmation extrême est
fournie par Kent Beck
Ok, alors l’an 2000 s’est passé sans aucun désastre et puis nous avons la première décennie
des années 2000, qui s’appelle la décennie des équipes.
Il a été lancé par le livre « Extreme Programming » de Kent Beck (la programmation extrême
(XP) est une méthodologie de développement logiciel qui vise à améliorer la qualité du logiciel
et sa réactivité face à l'évolution des exigences des clients).
Puis vous avez le Manifeste Agile, qui disait: "parlons des logiciels fonctionnels".
Pour Agile, nous consacrerons environ une demi heure plus tard aujourd’hui. Mais avant de
passer au Agile je vais finir avec les deux décades qui nous restent a revoire.
Thèmes des années 2000:
Livraison incrémentielle
• Les grands projets et les longs cycles de publication - synonymes
de professionnalisme - sont tombés en disgrâce.
Proxies
• "Représentant client" - "Propriétaire de produit" - "L'entreprise"
Et puis nous avons la décennie des Flux à partir de 2010, avec le concept de livraison
continue et d'intégration continue et la philosophie DevOps.
Cela nous ramène au concept de programmation structuré, mais de manière beaucoup plus
rapide et en utilisant de meilleurs outils. Et c'est en fait le développement des outils pour le
« pipeline » de livraison continue qui a rendu possible la façon dont nous élaborons les
logiciels aujourd'hui. Et cela a vraiment changé la manière de faire du logiciel en termes de
«Comment puis-je livrer cette chose immédiatement» ou «Comment puis-je automatiser cette
chose»…
Le plus gros goulot d'étranglement : les dépendances
Alors, quel est le plus gros goulot d'étranglement pour que cela fonctionne? Le plus gros
goulot d'étranglement pour tout type de livraison continue sont les dépendances, que je vais
expliquer dans la diapositive suivante.
Attaquer le problème de dépendance
Data
Appl ication
Tech nology
Comment résoudre le problème: nous avons donc tous ces microservices, et la question est
de savoir comment faire travailler ensemble un groupe de petites équipes pour accomplir leur
mission globale?
Et ici l'analogie qui a été proposée est de la regarder de la façon dont Space X est construit.
Dans la diapositive, vous avez une fusée Falcon 9, avec différents modules couplés entre eux
et l'idée générale ici est celui de l'ingénieur responsable, ce qui signifie que l'équipe qui est
responsable, disons de la charge utile, a tout le nécessaire pour faire son travail. Donc, si vous
regardez Space X, ils n'ont pas de département logiciel, mais ils ont toutes les ressources
nécessaires pour faire fonctionner tous les moteurs. Ainsi, chaque composant a une équipe
avec un ingénieur en chef responsable et c’est la responsabilité de l'équipe de comprendre la
tâche suivante, l'objectif, l'ensemble du système et toutes les choses nécessaires pour faire sa
part dans la mission globale.
Thèmes des Annees 2010:
L'équipe responsable
Les équipes sont responsables de la conception, du développement et du
bon fonctionnement d'un composant, ainsi que de la compréhension et de
l'accomplissement du travail de ce composant dans le système global.
Comment se prépare-t-on pour les événements « Black Swan » ?
Conception pour la résilience
• Redondance
• Isolement
• Contrôle local
Donc, dans 2020 tout a changé a cause du COVID au bout d'une seule semaine: le 15 mars
2020 et d’ici vous connaissez toute l’histoire...
Et la question est: comment se préparer pour les événements de type « Black Swan » (aka
désastres)? Et c'est sur ce sur quoi nous nous concentrons maintenant parce-que cela ne va
pas disparaître de sitôt.
Et nous pouvons utiliser cet exemple d'Islande où les volcans, lorsqu'ils explosent, font fondre
les glaciers et génèrent des lacs remplis d'eau qui détruiront les ponts. Et cela tourne encore
et encore. Donc, en Islande, la décision a été qu'au lieu de construire grand et plus grand, ils
n'allaient pas reconstruire à nouveau, mais plutôt concevoir pour la résilience. Et vous devez
construire avec la redondance à l'esprit, et la prochaine chose est que vous devez isoler les
choses, donc si un pont s'éteint, vous n'avez pas à reconstruire toute la route mais juste le
pont. Et vous devez avoir un contrôle local car lorsque le système central meurt, vous ne
voulez pas que tout meure.
Organisés pour la résilience
Petites équipes multidisciplinaires Maintenir une conversation
Tous impliqués dans le plaisir des clients bidirectionnelle continue
Clair : Objectif - Résultats – Contraintes avec le marché
Liberté d'action
De manière asynchrone, sans autorisation
L'autre chose que vous devez faire est de vous organiser pour la résilience. Et ceci est inspiré de ce livre que
vous voyez sur la diapositive: « Sense and Respond ». Ca veut dire: pas seulement de planifier et de construire,
mais de ressentir, d'écouter et d'être capable de réagir très rapidement. En d'autres termes: maintenir une
conversation continue dans les deux sens avec votre marché. Il faut donc se structurer en petites équipes
multidisciplinaires impliquant tout le monde pour ravir le client: les gens du produit, les gens des applications,…
tout le jeu. Si vous jetez un œil aux équipes AWS, ce sont des équipes complètes, impliquant toutes les
personnes nécessaires pour que le service soit opérationnel. Les équipes ont besoin d'objectifs clairs,
comprennent quels sont les désirs des clients, pas les tâches, et elles ont besoin de savoir quelles sont les
contraintes, par exemple si elles doivent livrer en 3 jours, 3 semaines ou 3 mois. Les équipes doivent être libres
d'agir de manière asynchrone et sans l'autorisation de la direction car elles ont un objectif clair et comprennent
les résultats du succès et elles n'ont pas besoin d'autorisation pour essayer des choses et déterminer ce qui
fonctionne, et elles n'ont pas non plus besoin de l'autorisation de leur collègues. C'est donc un problème
d'architecture car la liberté d'agir signifie que l'architecture vous permet de le faire. L'équipe trouve la solution,
elle n'est pas imposée.
Nous avons besoin d'une livraison fréquente aux clients afin que vous appreniez votre chemin à mesure que
vous ressentez et réagissez.
Le succès doit commencer à signifier des résultats pour les clients, pas des sorties (combien de tâches sont
effectuées) et certainement pas des mandataires (Proxies) en vous vous disant: Oui, c'est bien!