(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é
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.