Plan du chapitre
Introduction
Qu'est-ce que le génie logiciel ? Pourquoi le génie logiciel est-il important ? Comment le génie logiciel est-il mis en œuvre ? Eh bien, le génie logiciel a un impact sur toutes les industries et tous les aspects de la vie. Un secteur où le génie logiciel a été révolutionnaire est l'industrie automobile. Les logiciels écrits pour automatiser le tableau de bord sont réinventés encore et encore pour améliorer l'expérience de conduite avec des solutions logicielles telles que les affichages tête haute universels pour voitures. Ces affichages fournissent des informations de vitesse et de navigation au niveau des yeux et évitent ainsi aux conducteurs d'avoir à baisser les yeux vers leur tableau de bord pendant qu'ils conduisent.
Le logiciel est omniprésent de nos jours, et sa présence transforme les industries traditionnelles. Par exemple, le logiciel est plus important que jamais dans les automobiles, et les constructeurs automobiles y répondent en investissant de plus en plus dans son développement. Le développement de dispositifs de santé numériques a de même incité l'industrie de la santé à investir dans le développement de logiciels. Même les opérations de support client évoluent en utilisant des logiciels d'IA générative (GenAI) (Generative AI (GenAI)) tels que ChatGPT (ChatGPT) pour répondre aux questions sur les maladies et leur propagation. À mesure que les dépenses en développement de logiciels augmentent, les entreprises traditionnelles deviennent des entreprises technologiques dans lesquelles le logiciel et son développement jouent des rôles importants et le plus souvent cruciaux. Les avancées dans les systèmes embarqués, les technologies de communication, l'apprentissage automatique, et les solutions autonomes intelligentes, telles que les voitures autonomes, les grands modèles linguistiques (par exemple, ChatGPT), et les pompes à insuline et autres technologies de santé portables, renforceront davantage cette tendance dans la plupart des industries.
Le génie logiciel se concentre sur la conception et le développement de logiciels. À mesure que les entreprises subissent des transformations numériques, les ingénieurs logiciels doivent connaître et appliquer des principes solides aux solutions qu'ils contribuent à créer. Ils doivent collaborer avec les architectes d'entreprise et de solutions et être familiarisés avec les processus du cycle de vie du génie logiciel pour répondre aux besoins des entreprises pour lesquelles ils travaillent et pour utiliser des approches, des techniques et des outils pour concevoir et développer des logiciels significatifs.
À mesure que les entreprises évoluent et que la technologie change, les attentes placées sur un ingénieur logiciel évoluent également. Par exemple, considérez comment une automobile moyenne d'il y a quarante ans avait peu ou pas de génie logiciel dans son fonctionnement. Dans l'industrie automobile d'aujourd'hui, les ingénieurs logiciels créent une variété de solutions qui sont intégrées dans tout le véhicule. Cela va du logiciel fonctionnant sur des écrans interactifs sur les tableaux de bord qui proposent des systèmes de musique et des aides à la navigation, au logiciel qui permet le contrôle des appels téléphoniques mains libres. À mesure que les solutions de génie logiciel dans les automobiles continuent d'évoluer et d'être appliquées à tous les aspects de la conduite, elles ouvrent la voie aux véhicules autonomes et auto-conduits. Les ingénieurs logiciels sont confrontés à de nombreux défis car les processus de génie logiciel doivent toujours être adaptés à chaque projet, et les ingénieurs logiciels doivent être capables d'aider à comprendre, concevoir, construire et déployer des solutions logicielles qui font avancer ce projet. Ainsi, le processus de développement de logiciels pour une automobile qui prend en charge des fonctionnalités embarquées telles que les affichages tête haute, les systèmes d'alerte de franchissement de ligne, et même des solutions embarquées qui alertent le conducteur sur des problèmes mécaniques tels qu'une faible pression d'air dans les pneus serait très différent de celui d'une montre intelligente qui propose des applications aidant les utilisateurs à suivre leur exercice et à surveiller leurs habitudes de sommeil. Bien que les ingénieurs logiciels suivent un processus pour élaborer les solutions qu'ils construisent, ils doivent constamment s'adapter pour gérer les problèmes et les changements associés à l'environnement commercial dans lequel ils travaillent, ainsi que pour affiner la technologie et les approches qu'ils utilisent.
Les ingénieurs logiciels doivent également comprendre les exigences commerciales pour s'assurer que les solutions logicielles qu'ils créent sont couronnées de succès. Cela est rendu plus difficile car les exigences changent constamment, ou parce que les personnes impliquées dans un projet ont des attentes contradictoires. Comme quiconque ayant envoyé un SMS à un ami concernant des projets de dîner, pour découvrir ensuite que cela a été transformé en une discussion sur les « canards » et d'autres questions ornithologiques, même une exigence apparemment simple comme « corriger automatiquement les mots mal orthographiés » a de multiples interprétations. De plus, évaluer si le mauvais comportement des solutions résulte d'un code défectueux ou d'une mauvaise compréhension des exigences conduit souvent à la confusion et aux désaccords entre les ingénieurs logiciels et leurs clients. Pour minimiser de tels problèmes, il est important pour les ingénieurs logiciels de comprendre leur rôle et de se familiariser avec les processus de génie logiciel, les types de solutions et de technologies disponibles, et leur applicabilité à un projet donné à un moment donné.
Considérez un scénario (scenario) dans lequel un ingénieur logiciel travaille pour une entreprise appelée TechWorks. L'équipe d'ingénierie dont il fait partie est chargée d'un projet visant à ajouter de nouvelles fonctionnalités logicielles au tableau de bord d'une future automobile électrique. Étant donné que le processus de génie logiciel ne peut (en général) être entièrement automatisé, les ingénieurs logiciels sont confrontés au défi de devoir déterminer le meilleur processus logiciel, les meilleures approches et les meilleurs outils à utiliser pour le projet. Ils doivent le faire tout en collaborant avec un certain nombre de personnes et en faisant face à des changements d'exigences, et ils doivent toujours livrer des solutions à temps et dans les limites du budget. Dans l'exemple du tableau de bord automobile, la conception et le développement d'un nouveau compteur de vitesse numérique nécessitent des efforts coordonnés de tous les membres de l'équipe et leur alignement sur les mêmes objectifs. Heureusement, comme vous l'apprendrez dans ce chapitre, il existe une variété de cadriciels et d'outils logiciels que l'équipe de génie logiciel peut appliquer à un projet pour augmenter ses chances de succès.