Pages

vendredi 12 août 2011

Vision et enjeux du logiciel

Je vous dois un petit billet sur la modélisation d'entreprise, mais je suis en vacances ... le hasard veut qu'on m'ait demandé mon avis en une page sur "les enjeux du logiciel". Je me suis dit que je partagerais cette page avec vous pour avis et commentaires. C'est un exercice difficile (surtout à cause de la contrainte qui force à la synthèse), donc subjectif ... mais propice aux échanges !

(A) Les grandes transformations des 20 dernières années

(1) La complexité croissante des logiciels embarqués L'application de la loi de Moore dans le monde de l'embarqué (téléphone, avion, IPTV, etc.) fait apparaître des logiciels multi-millions de lignes, soumis à des contraintes de performance (temps réel) et de robustesse (criticité).

(2) Software as a Service

Le logiciel sur station de travail/PC évolue vers un modèle multi-tiers dans lequel le PC ne joue plus le rôle que de terminal de présentation. Le modèle de service (location de logiciel hébergé sur un serveur - naissance du concept de Webapp) progresse de façon continue à cause d'avantages économiques (mutualisation / distribution) et opérationnels (installation / maintenance). L'augmentation constante de la puissance des réseaux déplace continuellement la frontière de ce qui est centralisable sur le cloud.

(3) L'émergence du marché mondial des smartphones
Le terminal de calcul le plus déployé est le smartphone, avec une croissance qui est loin d'être achevée. Les contraintes d'ergonomie ont recréé une segmentation entre:
  • les "blockbusters" des applications, qui sont développées et gérée comme des applications natives indépendantes (cf. appStore),
  • la longe traîne qui va s'installer sous formes de Webapps (appli web consommées sous le browser, sans besoin de chargement).
(4) Le système d'information devient un système de système
Le système d'information n'est plus simplement une collection d'application métiers qui partagent des données (architecture mainframe). C'est devenu un système de systèmes, avec des problématique d'intégration (technique), de sémantique partagée (modèle métier), d'orchestration et de maitrise de la complexité (notamment sur les performance et la fiabilité).

(B) Les grands enjeux des 10 prochaines années

(1) Maîtriser la complexité
Un des grands défis, dans les domaines de l'embarqué comme celui du système d'information. Cela rend le domaine de l'ingénierie des systèmes fondamental pour les prochaines années, avec des défis de formation, de diffusion et de recherche.
La maîtrise de l'ingénierie de la complexité va devenir un facteur clé de différenciation entre les acteurs de l'industrie logicielle. Cela touche l'architecture (point précédent) mais également les méthodes opératoires (par exemple avec l'émergence des méthodes de qualité industrielle, telle que CMMi ou Lean IT).

(2) Changement de paradigme : de Von Neuman au massivement parallèle
Nous devons apprendre à travailler avec des milliers puis des millions de processeurs :
  • dans le cloud, c'est déja parti - Il suffit de voir l'avance de Google, c'est un enjeu de compétitivité,
  • dans les serveurs d'entreprise, c'est devant nous : les data centers privés se transforment en "cloud privé" avec des fermes de serveurs multi-processeurs identiques. Les entreprises qui continuent à s'appuyer sur des "serveurs hautes performances classiques" vont souffrir d'un désavantage sur celles qui passeront au "commodity parallel computing" (pour du billing par exemple),
  • dans les terminaux, c'est un peu plus lointain (même si nous aurons d'ici 10 ans un millier de processeurs sur un PC), à cause de la dominance du modèle "thin client"/cloud, et la volonté des clients d'être indépendant du choix du terminal (une seule expérience - fondée sur le cloud - sur le terminal de mon choix en fonction du contexte : PC, tablette, mobile, etc.).
(3) La pression sur les coûts logiciels
L'industrie du logiciel est soumise à une très forte pression pour réduire ses coûts unitaires :
  • hypercompétition et mondialisation (cf. « Processus et Entreprise 2.0 » J),
  • numérisation continuelle de l'activité humaine,
  • complexité des nouveaux domaines à traiter (cf. T. Friedman, ce qui est simple a déjà été fait),
  • importance du modèle "gratuit" dans le grand-public.
Les 10 ans qui viennent vont démontrer une friction tectonique entre des "plaques" (offshore, approche composants, SaaS, MDA : meta-data programming + abstraction).

(4) l'informatique agile plus proche de son utilisateur
Le contexte des entreprises fait qu'elles ont besoin de solutions logicielles qui d'adaptent de façon continue :
  • c'est un balancier à la tendance offshore,
  • c'est ce qui nourrit la tendance "lean programming" / "extreme programming",
  • le domaine des interfaces utilisateur est plus que jamais central et le lieu de la différenciation - l'utilisateur souhaite façonner lui-même sa solution.