Systémique

Le fonctionnement global de notre « système » sociétal consiste trop souvent à simplifier à l’extrême toutes les analyses à un point tel qu’elles tendent à devenir absurdes. Constatez-le avec les médias et l’information qui est « débitée » en tranches continues tous les jours et vous aurez un petit aperçu des dégâts engendrés par l’éviction de l’intellect de notre quotidien.

Convoquons à nouveau notre intellect et posons nous la question suivante : la systémique a-t-elle été oubliée ou n’a-t-elle jamais eu prise dans notre société ? Je ne suis pas suffisamment qualifié pour répondre à cette question, je ne fais que constater l’absence de la systémique dans notre vie de tous les jours. Mais qu’est-ce que la systémique ? Inutile de réinventer la roue, fions nous au Larousse qui nous indique ceci :
« Se dit d’une approche scientifique des systèmes politiques, économiques, sociaux, industriels qui s’oppose à la démarche rationaliste en abordant tout problème comme un ensemble d’éléments en relations mutuelles. Cette démarche s’appuie sur des découvertes en cybernétique, théorie de l’information, biologie, linguistique et anthropologie ». Je vous conseille la consultation du site de la « systémique attitude » dont la lecture m’a paru très enrichissante (http://www.systemique.com/).

Hors donc, la démarche cartésienne que les français pratiquent excellemment s’oppose presque à la systémique car la relation de cause à effet y est bien moins visible et demande des degrés d’abstractions que nous ne voulons plus (que nous ne savons plus ?) invoquer car trop couteux en temps, en énergie et en dépenses « neurales » (ce bulbe que tout ce qui nous entoure nous engage à solliciter le moins possible !).

Prenez l’exemple de la route. Je roule tous les jours au milieu d’une cohue de voitures et au fils des années qui s’écoulent, j’ai de plus en plus la sensation que la bêtise domine de plus en plus le paysage. Tout se déroule comme si nos cerveaux étaient débranchés lorsque nous conduisons. Tel véhicule qui roule à 60 km/h sur une autoroute, tel autre qui slalome entres les voitures, tel autre qui freine de manière incompréhensible et inconsidérée, etc … Pour lutter contre les dangers évidents de la route, les infractions permanentes au code de la route et les incivilités nous avons mis en place tout un arsenal dissuasif de lois, de contrôles, de répressions. Force est de constater que la route n’est jamais assez sécurisée et continue à tuer des milliers de personnes tous les ans ! Pire que cela, nous savons tous que si nous supprimions les radars ou que la présence policière se faisait moins sentir, la quantité de morts et de blessés remonterait en flèche. Nous traitons la conséquence, pas la cause en attaquant la problématique par sa partie apparente. D’aucun me répondrons qu’il manque le volet éducatif à « un système outrageusement répressif … » (ya tcha !!!). Je répondrais … et le civisme, comment l’acquérir ? Et la compréhension des mécanismes de base de la physique comment la faire rentrer dans les cranes ? Et la responsabilisation qui vous fait assumer vos actes, comment l’inculquer ? Et oui, dans un monde qui considère la culture Nabila comme une référence, qui nous apprends via les Chti que nous avons deux soleils, qui nous fait croire que la culture générale se résume à réciter par cœur des dates dans des jeux télévisés ou enfin qui a vu Corneille devenir au mieux un chanteur au pire un chien de dessin animé, ne nous étonnons pas que le système devienne incompréhensible en apparence. La systémique a été oubliée mais elle peu nous aider ! La résultante cumulative de tous nos actes, apprentissages, réflexions, inflexions qui ressurgie dans notre quotidien peut trouver quelques explications grâce à l’analyse systémique. Ce monde produit les conditions qui nous ramènent à la non maitrise de ce qui se déroule sous nos yeux sur la route. Comme nous avons décorrélé tous ces phénomènes les uns des autres (la chaine est longue entre les Chti et la route !!), alors il ne nous apparait pas de manière limpide les relations qui existent entre ce chauffard idiot, qui plus est incompétent et quelquefois ivre, et le monde d’inculture et de passivité que nous avons tous contribuer à créer.

Pourquoi est-ce que je vous « bassine » avec la systémique ? Parce que nous vivons dans le monde des TIC avec des problématiques qui relèvent de la systémique. Celle qui m’anime ici est le maillon « très » pauvre de nos processus de développements, la phase de test/validation/intégration qui est, pour moi, l’un des exemples paroxystique d’un manque d’analyse systémique. Qui n’a pas vécu au quotidien des arbitrages dans les développements logiciels qu’il anime ou auxquels il participe quasi systématiquement en défaveur des tests ? Combien parmi vous ne connaissent pas la réponse rituel de son manager : « mais tu ne te rends pas compte, cela coute beaucoup trop cher » ! Quand le développement logiciel va t’il murir suffisamment pour admettre une bonne fois pour toute les éléments suivants :

  • Le test devrait représenter 50% de l’effort en matière de développement
  • Le test devrait être tellement important que chaque développeur devrait avoir son testeur ou un mi-temps dédié à la réalisation de tests
  • Les impacts liés à une absence de tests sont présent dans toutes la chaine de valeur d’un produit et se manifestent partout y compris dans des notions intangibles comme l’image ou la réputation d’une entreprise
  • Un éditeur de logiciel qui n’intègre pas ces notions en 2014 s’assimile au constructeur automobile des années 1950 !
  • Tout ce qui permet d’améliorer la traçabilité, le suivi, la remontée d’informations dans un développement logiciel doit être mis en œuvre au plus vite dans le cadre d’une politique de tests

Bien que mes propos soient délibérément exagérés, tous les managers ont lu, entendu, rencontré des dizaines de fois des experts expliquant tous les mérites d’une véritable politique en matière de tests. Une majorité pourtant continue à ne pas agir et à ne pas investir dans ce domaine. Les raisons sont à la fois simples et presque ridicules :

  • Lorsque des ressources sont allouées aux tests, c’est rarement de manière pérenne (dans une organisation dédiée par exemple), avec des moyens matériels appropriés, avec un outillage adapté. Les effets de ces investissements sont alors long à venir et le couperet tombe : trop cher, trop long, nous avons mieux à faire
  • Une politique de test ne porte ses premiers fruits qu’au bout de longs mois d’efforts (12 à 18 minimum). Lorsque le processus à le temps de s’installer il se produit plusieurs phénomènes comme l’accumulation pour les tests unitaires, la consolidation des « maigres » outils installés et/ou développés in vivo et donc stabilisés par les équipes, la structuration d’un environnement de tests en fonction des moyens alloués, le changement des habitudes de productions au travers de PIC par exemple (impact fort sur le processus de développement), l’intégration en amont des chaines de delivery qui s’industrialisent, la transparence dans des newsletters ou des dashboards publics donnant de la visibilité à tous les acteurs de la vie de l’entreprise. Notez que le test relève d’une démarche complexe et globale qui inclus de nombreux aspects du développement logiciel (et je ne suis pas exhaustif). C’est cet effort qui est souvent arrêté en plein vol car jugé trop couteux !
  • La mesure du retour sur investissement se fait non seulement attendre mais restera toujours difficile à réaliser et incomplète … jusqu’à la bascule ! Au support (SAV, hotline, …) les outils qui permettent de relier les problématiques clients directement avec la politique de tests sont inexistants sauf à constater la baisse en volume des demandes clients. Il est toujours plus facile de ne pas faire l’effort de traçabilité car cela est moins « couteux ». Dans les services en charge du déploiement, les mêmes causes entrainent les mêmes effets et ainsi de suite ! La chaine de suivi et de remontée de l’information est rompue dès que le logiciel quitte les « chaines » de fabrication. Imaginons cinq minutes la même situation dans le monde automobile ! (ah, on m’informe que c’est pareil sic !)

En résumé j’affirme, du haut de l’incompétence et de la conviction qui caractérisent mes 25 années passées dans le monde du numérique, les points suivants à destination des managers et dirigeants de toutes catégories :

  • Investissez dans le test au-delà de tout ce que vous auriez imaginé. Pour moi désormais le ratio idéal en matière de constitution des équipes de développement est de 40-50% pour le test
  • Investissez dans des outils d’industrialisation des tests. Que ces outils soient légers, ouverts, lisibles et rapides à mettre en œuvre me parait la seule contrainte à respecter. Évitez les usines à gaz des marchands de rêves qui transformeront votre investissement en chausse trappe. Le but d’un outil consiste à se mettre au service de votre objectif, non pas d’exister pour absorber vos ressources au service de l’outil !
  • Transformez vos processus pour tenir compte du test quitte à réaliser beaucoup moins de développements. La vertu de ce travail vous obligera à faire de véritables choix. Nous développons beaucoup trop et souvent pour rien !
  • Cessez de poursuivre la recherche de la démonstration du ROI car vous n’êtes pas équipé pour le mesurer pleinement et personne ne l’est. Cette attente vous conduit vers de mauvaises décisions simplement parce que vous n’avez pas l’appareil de mesure approprié. Lorsqu’il n’y a plus d’électricité chez vous (plus de lumière, vos appareil électriques arrêtés, …) vous ne cherchez pas un voltmètre de 18ième génération pour prouver la panne électrique. Vous utilisez votre bon sens et vos capacités d’observations pour agir (aller voir le disjoncteur, appeler un expert, …). C’est identique pour le test, vos constats sont les bons, vos intuitions sont correctes alors suivez les, surtout lorsque vous êtes devant des évidences que vous n’arrivez pas à démontrer financièrement
  • De grâce arrêtez d’attendre du monde du développement logiciel un miracle qui n’arrivera pas ! Le miracle consiste à continuer à croire et à faire croire qu’un développement sans bug peut et doit exister. Ce monde est bien lointain et il dépend de nos efforts à investir dans l’intellect des individus, dans leur culture, dans leurs capacités intellectuelles. Tiens, la boucle viens de se refermer et le “système” nous montre à quelle point tout est intimement lié de bout en bout

En clair, appliquer les grandes règles de la systémique et adoptez une démarche factuelle mais résolument réfléchie qui tentera de tenir compte des effets de bords induits par la mise en place d’une véritable politique de tests.

Je conclurais par deux citations :

  • Jean Piaget : « L’intelligence est notre dernier recours quand nous ne savons pas comment faire face à une situation
  • Claude Lévi-Strauss, « L’humanité s’installe dans la monoculture; elle s’apprête à produire la civilisation en masse, comme la betterave. Son ordinaire ne comportera plus que ce plat. »

Note : c’est le physiologiste Ludwig von Bertalanffy qui est reconnu comme le fondateur de la science des systèmes. Après une série d’articles publiés en 1926 et 1930, il a énoncé sa « Théorie générale des systèmes » en 1947. Il en a exposé les bases fondamentales dans un ouvrage du même nom en 1973 chez Dunod. Voir http://en.wikipedia.org/wiki/Ludwig_von_Bertalanffy ou http://www.approche-systemique.com/sytemicien/precurseur/

Advertisements

Nomadisme et mobilité 2.0

Le techno-nomadisme sous-entend la possibilité pour toute personne mobile ou non de pouvoir utiliser son univers d’activité personnel quel que soit l’endroit où elle se situe. L’exemple du bureau est parfait et représente, par essence, un lieu physique, un espace agencé, géographiquement localisé. A partir du moment où nous obtenons une connexion internet, le terme bureau prend une toute autre valeur. En effet, ce n’est plus un lieu physique mais un objet ! Par prolongement, nous pourrions dire que notre bureau est Internet ! Donc le simple fait de se connecter à Internet permettrait de rejoindre notre bureau quel que soit l’endroit où nous nous trouvons et le bureau est alors dématérialisé et atemporel.

Une projection du futur proche, partagée par de plus en plus de spécialistes, fait plusieurs constats :

  • Nous aurons des ordinateurs concentrant le strict minimum d’intelligence et de puissance de calcul pour les rendre à la fois plus autonomes (possibilité de travailler déconnectés), moins lourds et gourmands en ressources et beaucoup plus « interopérables » avec une connectivité très développés. C’est le retour des mainframes mais bénéficiant de « terminaux » intelligents et à très forte connectivité. Nous sommes passés d’une période où nous avons voulu nous débarrasser de l’existence des postes clients pour arriver à une solution d’informatique centralisée faisant une place importante à l’acteur « nomade » sans lui enlever sa liberté
  • La communication en ligne sera possible de partout utilisant le Wifi, les lignes électriques, les téléphones, les satellites. Le monde entier est alors intégralement connecté
  • Les télévisions hertziennes seront abolies faisant place aux télévisons depuis Internet et les autres supports
  • Nous pourrons créer nos propres programmes média que nous compléterons d’information en direct sur le net
  • Une fois la domotique acceptée, nous pourrons consulter facilement le contenu de notre réfrigérateur depuis le super marché, régler le chauffage de la maison et la température de chaque pièce, démarrer une cuisson, fermer les volets

Nous avançons donc à grands pas dans la mobilité 2.0 et nous pourrons rester connectés quels que soient nos déplacements. Ce nomadisme « latent » engendre donc des questionnements forts sur le futur de l’organisation des taches et des lieux qualifiés de « regroupement » (travail, salles de réunions, écoles, séminaires, etc …).

Ces concepts du « nomadisme 2.0 », utilisés dans une large mesure auprès du grand public, puis dans les entreprises, s’insèrent également de plus en plus dans le monde de la sphère publique. L’apprentissage des différents outils web 2.0 par les internautes (blog, fils rss, réseaux sociaux, richmédia, podcast,…) amène de plus en plus les collectivités locales à prendre en compte ces nouveaux usages dans leur offre web.

Les portails institutionnels ne se contentent plus de fournir des pages statiques qui ont pour seule vocation la présentation dela collectivité. Cessites « vitrines » font place, de plus en plus, à des sites informationnels dont le but est de renseigner le citoyen en lui proposant une certaine dynamique de contenus. De fait, le web entre désormais dans la stratégie des institutions publiques et se décline en 4 composantes:

  • Communication et information : renseigner et informer le citoyen en disposant de contenus “riches” et interactifs
  • Dématérialisation et transaction : améliorer les services rendus
  • Relation citoyens : impliquer le citoyen dans le débat public et à la vie locale en développant des actions d’implications et de participation
  • Définir le futur cadre de travail des agents : les économies d’énergie, la réduction du nombre d’agents publics, la diversité des métiers impliqués par la décentralisation, l’exigence croissante de performance jouent un rôle grandissant dans la nécessité de rendre les données accessibles quel que soit le lieu de travail ou l’instant d’exécution de l’action

Les technologies à surveiller [1]

Les technologies suivantes sont sur le point d’émerger et devraient voir les derniers obstacles à leur prolifération résolus à court terme :

  • Interface utilisateur mobile : l’ergonomie des interfaces mobiles est devenue un sujet important pour l’industrie et il reste beaucoup à faire pour séduire les utilisateurs
  • Géolocalisation permanente : l’accès aux données de positionnement GPS permet de créer des applications contextuelles puissantes et élargit le champ d’action des solutions SIG (métiers techniques, aménagement du territoire).
  • WiFi : le 802.11n apporte débits et portées de natures à concurrencer les réseaux filaires dans les locaux des entreprises. Cette évolution du Wifi est extrêmement importante dans l’amélioration de la mobilité intra établissement (suivi des personnes âgées, synchronisation avec les technologies RFID, accompagnement des tournées médicales HL/CH, moniteurs à connectivité asynchrones/lâche dans la ville)
  • Affichage : la taille et la qualité de l’affichage conditionnent le succès des applications sur les appareils mobiles. Plusieurs technologies vont émerger, dont les pico-projecteurs, pour dépasser ces contraintes et créer de nouveaux usages. Les affichages passifs, comme les écrans e-paper des nouveaux lecteurs d’ebook, vont également modifier la façon d’utiliser les documents et de gérer l’information
  • Haut débit mobile : L’Internet Mobile se conçoit de moins en moins sans un débit mobile suffisant. Le déploiement de la technologie HSPA(High Speed Packet Access) a permis d’en élargir considérablement l’horizon, jusqu’à faire de l’ombre aux hotspots WiFi. La tendance se prolongera avec l’intégration plus fréquente de modules 3G+ dans les ordinateurs portables et netbooks
  • Sécurité et surveillance dynamique : le mobile engendre de nouvelles menaces. En effet si le principe du mur défensif (firewall) autour du réseau de l’entreprise a primé jusqu’à présent, les nouveaux usages imposent une surveillance capable de détecter des comportements et événements anormaux dans le flot de données d’un utilisateur authentifié pour couvrir les usages nomades

La percée des « Smart Objects » [2]

Un « Smart Object » correspond à tout objet qui inclut un identifiant unique capable de tracer des informations sur lui-même. Il existe un grand nombre de technologies pour couvrir ce comportement :

  • Les radios fréquences avec le RFID
  • Les codes à réponse rapide (QR – Quick Response)
  • Les smartcards de tout type

Ce qui rends les « smart objects » intéressant c’est leur capacité et les moyens qu’ils emplois pour se connecter au monde réel. Ceci leur donne un intérêt particuliers pour gérer des « entités » physiques, pour les accompagner dans leurs quotidiens, capturer des informations les concernant (description, instructions, alertes, identifiants).


[1] « Tendances 2010 », Gartner, Octobre 2009

[2] Johnson, L., Levine, A., & Smith, R., «The 2009 Horizon Report », 2009, Austin, Texas: The New Media Consortium

Les Métriques Software

Un support méthodologique pour la compréhension intrinsèque de la qualité des développements objets

Instinctivement, nous pouvons deviner que les « métriques du logiciel » impliquent des chiffres et des mesures des différents aspects du processus de développement logiciel. Si nous nous tournons vers la littérature, nous pouvons trouver plusieurs définitions, qui donnent une interprétation plus ou moins différentes du même terme.

Goodman (1993)[1] définit les métriques logicielles comme « l’application continue de techniques de mesures sur le processus de développement pour fournir des informations de gestion pertinentes et opportunes, ainsi que l’utilisation de techniques pour améliorer ce processus et ses produits ». Le champ est donc vaste mais le but concerne bien l’amélioration de tous les aspects de la réalisation des logiciels.

Grady (1992)[2] souligne pour sa part que les « métriques de logiciels sont utilisées pour mesurer des attributs spécifiques d’un développement logiciel afin de nous aider à prendre de meilleures décisions ». Cette définition met en évidence l’un des problèmes liés aux développements logiciels, le manque d’informations pour prévoir et évaluer les projets.

D’autres auteurs, comme Zuse (1991)[3], font une distinction entre « mesures logicielles » et « métriques logicielles » ! Cela implique que la mesure et la métrique sont des termes plus mathématiquement corrects lors de l’examen de la valeur empirique de différents objets mesurés dans le processus de développement logiciel. En outre, ils constatent qu’une métrique est un critère utilisé pour déterminer la différence ou la distance entre deux entités, par exemple la métrique d’Euclide, qui mesure la distance la plus courte entre deux points.

Parfois, nous trouvons des tentatives de classification des différents types de métriques logiciels. Une telle distinction est faite entre les mesures primitive et celle qui sont calculées. Les métriques primitives sont directement mesurables ou dénombrable, comme le comptage des lignes de code. Les métriques calculées utilisent une sorte de formule mathématique pour obtenir la valeur d’un attribut déterminé.

Pour différentier les mesures qui sont utilisés pour la prise de décision de haut niveau il est fait référence à des « métriques globales ». Cette expression renvoi à des informations sur la taille, le produit, et la qualité du développement qui influent sur la maintenabilité des logiciels. Cette première notion implique qu’il pourrait également y avoir des « métriques locales » ou « métriques de phase », plus liées à des cycles particuliers du développement.

En tout état de cause nous pouvons proposer de synthétiser la métrique software comme :

Une mesure de différents attributs du processus de développement logiciel dans le but d’obtenir des informations utiles et pertinentes pour améliorer l’efficience globale du processus de développement.

Je pense qu’il est important de reconsidérer la place de ces métriques dans nos processus de développement et qu’il faut appliquer les métriques en fonction des différents buts de mesure. Certaines métriques et méthodes de mesure sont plus utiles à une phase spécifique du développement logiciel :

  • Dans les phases préliminaires comme l’analyse des exigences et la conception du système
  • Dans la phase d’implémentation pour capturer le statut réel du projet afin d’en mesurer la progression
  • Dans la phase des tests dans la remontée du nombre de défauts ainsi que la densité de défauts

Il faut appliquer les métriques pertinentes selon les différentes exigences en matière d’objectifs de qualité du produit final. Si on évalue la convivialité du logiciel, par exemple, le degré de satisfaction des clients en termes de facilité d’utilisation est la mesure la plus parlante !

Enfin il faut appliquer les métriques en regard des différents rôles des membres d’une équipe de développement. Les développeurs choisissent des métriques comme l’effort contribué au projet, la durée estimée pour leur tâche, la complexité du module sur lequel ils travaillent, le nombre de lignes de code produit ou la densité de défauts. Le chef de projet mettra l’emphase sur la complexité ou le volume estimé du projet afin de planifier les tâches, les dates et l’effort global prévus. Le management de l’entreprise s’intéresse plutôt aux métriques incluant la valeur commerciale du produit final en fonction de l’investissement avant le projet, le degré de satisfaction des clients, la comparaison entre le temps prévu et le budget disponible et les valeurs obtenues au cours de la construction.

Le sujet est approfondi dans un document que vous pouvez télécharger.


[1] Goodman, P., « Practical implementation of software metrics”, 1993, McGraw-Hill publication

[2] Grady, R.B., « Practical software metrics for project management and process improvement », 1992, Prentice Hall

[3] Zuse, H., « Software complexity – measures and methods », 1991, Walter de Gruyter & Co