Dans cet article, nous avons pris le parti d’aborder le sujet du développement logiciel embarqué et de ses liens fondamentaux avec l’électronique.
Tous les objets du quotidien associent de l’électronique et du logiciel.
La miniaturisation des puces électroniques a permis de développer des logiciels de plus en plus performants. Le rapport entre la puissance de l’électronique et du logiciel s’est légèrement inversé en faveur de ce dernier, le plaçant au cœur des systèmes embarqués.
Les logiciels sont présents dans de nombreux systèmes, que nous utilisons quotidiennement : voiture, smartphone, terminal de paiement, thermostat de chauffage et bien d’autres.
Beaucoup d’entre eux sont facilement identifiables au travers de leurs interfaces homme-machine (IHM).
Nous avons aujourd’hui l’habitude qu’une interface homme-machine, comme un smartphone par exemple, soit très ergonomique et rapide dans ses exécutions. C’est bel et bien la puissance du logiciel qui fait la force de l’équipement embarqué à ce jour !
Un logiciel embarqué se trouve à l’intérieur d’un équipement qui n’a pas comme un ordinateur, une vocation purement informatique. Ce logiciel est intégré dans un matériel spécifique. Une fois installé, il est autonome dans son environnement.
Ces dernières années, nous avons beaucoup entendu parler de l’IoT (Internet of Things) ou Internet des objets. Et pour cause, c’est un marché en pleine expansion ! En 2018, on recensait près de 15 milliards d’objets connectés contre plus de 80 milliards en 2020.
Cette croissance exponentielle démontre que l’industrie du système embarqué est au cœur de la révolution du « tout connecté ». Toutefois, il ne faut pas oublier que l’IoT n’est qu’un sous-ensemble de ces systèmes et qu’il en existe de nombreux autres !
De ce fait, le développement logiciel est essentiel pour les systèmes embarqués. Il a connu de nombreuses évolutions au fil des années laissant place à des systèmes toujours plus complexes, nécessitant d’être accompagné par des experts.
Découvrez comment, chez PONANT Technologies, nous abordons vos projets de développement de logiciel embarqué.
Rencontre avec Antoine, notre Responsable Technique.
Des prémices de l’électronique, au développement de logiciel
L’histoire de l’informatique débute en 1880 avec le futur créateur d’IBM qui invente la mécanographie. Il créé une machine facilitant le recensement en stockant les informations sur une carte perforée.
L’évolution de l’informatique a été accélérée par la guerre. Le concept d’ordinateur est défini de façon universelle.
En 1947, c’est l’arrivée du transistor. Il s’agit d’un composant électronique utilisé dans la plupart des circuits électroniques.
A la fin des années 1950, les premiers langages de programmation sont créés. On pense alors, avoir trouvé la solution quant aux problèmes rencontrés en terme de développement des applications informatiques.
En 1962, le pionnier Philippe Dreyfus invente le mot « informatique » en contractant les mots « information » et « automatique » pour n’en former plus qu’un.
A la fin des années 1970, la miniaturisation du transistor, découle sur la création d’une puce microcontrôleur intégrée qui fait décoller les logiciels embarqués. L’Intel 4004, est le premier microprocesseur développé en 1971. C’est le premier circuit intégré incorporant tous les éléments d’un ordinateur dans un seul et même boîtier.
Ensuite, nous assistons à la crise du logiciel. C’est la prise de conscience générale des difficultés que rencontre le développement de grands projets informatiques. Ce constat fait naître une nouvelle discipline, le génie logiciel.
Le génie logiciel est défini comme l’ingénierie appliquée au logiciel. Cette discipline touche tout le cycle de vie des logiciels. De l’analyse du besoin, à l’élaboration des spécifications en passant par la conception, le développement et le test, jusqu’au déploiement et à la gestion de logiciels.
Dans le même temps, le prix du hardware diminue petit à petit. Le coût de logiciel doit prendre en compte deux problématiques : les coûts de développement et les coûts de maintenance (corrective et évolutive).
À la suite de cette baisse de prix, les microprocesseurs intègrent presque tous les appareils électroniques et chacune de ces puces possède un voire plusieurs logiciels intégrés. On les trouve même dans des produits comme les lave-linges, des robots de cuisine ou des jouets pour enfants. La technologie de développement de logiciels embarqués a également connu de nombreux changements.
Dans les années 1980 à 1995 c’est l’avènement de la micro-informatique. Le développement de logiciels commence à prendre une place prépondérante.
Par la suite, l’industrie du logiciel se complique rapidement, il s’agit d’industrialiser les développements. La tendance est au logiciel open source.
La part largement électronique des systèmes a commencé à laisser une part plus importante au logiciel. Les systèmes embarqués se sont multipliés de façon exponentielle laissant place à une concurrence rude et une évolution des technologies toujours plus rapide.
La fin des années 1990 marque encore un temps fort avec l’émergence d’Internet et des technologies du web. On distingue alors une scission avec d’un côté les développements liés à Internet et d’un autre ceux liés aux systèmes embarqués. Nous allons ici nous concentrer sur cette deuxième partie.
Fin des années 1990 : émergence de 2 tendances
Nous allons à présent nous concentrer sur la partie basse du schéma ci-dessus, à savoir les systèmes embarqués.
C’est en 1999 que le terme IoT « Internet des objets » est créé. Le premier appareil qualifié ainsi est une machine à Coca-Cola installée en 1982 dans une université américaine. Elle était capable de transmettre ses niveaux de stock via ARPANET, le premier réseau de transfert de données conçu aux Etats-Unis.
Le concept continue d’évoluer au fil des années. Au début des années 2000, on note un tournant important puisqu’on commence à trouver de l’embarqué partout dans nos objets du quotidien (lave-linge, réfrigérateur, grille-pain, montre, …). Il y a une volonté de « tout » connecter pour simplifier le quotidien.
En 2010, l’IoT et les technologies du web connaissent un développement massif.
Les équipements embarqués se multiplient et connaissent un essor particulièrement fulgurant. L’application du système embarqué touche de nombreuses industries : l’automobile, le médical, les applications de paiement, les appareils domotiques…
En 2020, les objets connectés inondent le marché à tel point qu’on soulève parfois l’utilité réelle de certains d’entre eux.
Toutefois, cette technologie demeure véritablement révolutionnaire !
Aujourd’hui notre maison est connectée, notre voiture, notre téléphone lui, est connecté avec notre ordinateur portable. Nous vivons dans un environnement perpétuellement connecté. Si bien qu’il nous est possible de parler à une enceinte pour changer de musique ou à notre téléphone pour qu’il démarre le minuteur de la cuisson des pâtes à notre place. Les informations se trouvent très facilement et en retour nous pouvons communiquer sur de multiples canaux.
En résumé, en 2022, si on veut passer un moment « déconnecté », il faut se rendre en haut d’une montagne où il n’y a pas de réseau ou au fin fond du désert.
Le développement logiciel embarqué, de nos jours
Autrefois, un projet était déterminé par la capacité électronique en termes de mémoire, de processeur, etc… Il s’agissait de s’adapter à ce qu’il y avait de disponible à ce moment-là.
Aujourd’hui, le développement logiciel embarqué n’est plus limité par celui-ci.
« Le bureau d’études électronique nous demande ce dont on a besoin et non l’inverse comme auparavant. »
A présent, il choisit les composantes en fonction du logiciel qu’on souhaite développer.
Le logiciel est devenu la valeur ajoutée, l’élément différenciant.
Si bien que dernièrement, Volkswagen annonçait que 60% de la valeur de ses véhicules sera représentée par le logiciel en 2025 contre un taux « inférieur à 10% » en 2020.
Cette évolution remarquable des systèmes embarqués dans le secteur automobile est donc attendue dans tous les domaines couvrant l’électronique !
Qu’est-ce qu’un système embarqué ?
Les appareils connectés et intelligents sont constitués d’un « ordinateur de bord », et donc d’un logiciel.
Un système embarqué est un système électronique et logiciel. C’est une combinaison de logiciels qui peut être représentée comme le cœur du système, et de matériel informatique comme le corps physique, tout cela étant vu comme le produit. Il est autonome et dédié à une tâche précise. Il est embarqué au sein d’un produit plus large comme une voiture, un smartphone ou une console de jeux.
Les caractéristiques indispensables d’un système embarqué
Un système embarqué nécessite des performances temps réel. Il doit être flexible, spécifique, sûr et sécurisé. Pour certains d’entre eux, ils doivent offrir des possibilités de débogage intégrées permettant une maintenance à distance.
La notion de plateforme
Pour des raisons économiques, dans certaines applications, pour des gammes de produits, il peut y avoir un intérêt que le logiciel embarqué soit portable ou modulaire. L’objectif est de faciliter son utilisation dans différents environnements électroniques. Le logiciel va être développé une fois et il pourra être intégré dans différents équipements, il s’agit de la notion de plateforme.
Le développement logiciel VS le développement logiciel embarqué, les subtilités
Le développement logiciel représente l’ensemble du processus de réalisation d’une application. Le processus démarre avec l’étude du besoin client, se poursuit par la conception et la mise en œuvre jusqu’à la maintenance de l’application.
C’est l’ensemble des étapes, méthodes (organisation, bonnes pratiques) et outils (technologies, langages) qui mènent de la page blanche à la création d’une application sur-mesure, pour un besoin donné.
Les différentes étapes du projet sont menées par une équipe de développeurs utilisant des langages de programmation spécifiques, le tout sous la responsabilité d’un chef de projet.
Le logiciel embarqué est un sous-ensemble du développement logiciel. Il est spécifique à certains métiers et secteurs d’activité (aéronautique, automobile, l’IoT…).
La spécificité d’un logiciel embarqué réside dans son lieu d’application. Un logiciel prendra place dans un système informatique interne à l’entreprise, c’est-à-dire les différents ordinateurs ou serveurs. Un logiciel embarqué quant à lui s’intégrera complètement dans un équipement à destination des utilisateurs, fonctionnant de manière indépendante (smartphone, montre connectée, télévision…).
Les spécificités du développement logiciel embarqué
Le logiciel embarqué prend la place d’un système informatique complet. Le développement logiciel embarqué consiste à développer un logiciel dans un environnement contraint en consommation d’énergie et en capacité de mémoire.
Concernant la sécurité, les logiciels embarqués sont dans des environnements difficilement contrôlables. Ils peuvent se retrouver dans les mains de « n’importe qui ». Ils sont ouverts puisqu’ils communiquent entre eux. Les sécuriser est donc primordial (protection des données, protection du système). Ce sont des contraintes supplémentaires à prendre en compte dans un développement d’un logiciel embarqué.
Qui ne s’est jamais pris la tête avec une imprimante qui ne fonctionne pas à cause d’un bug informatique ? Imaginez le cas échéant avec un logiciel embarqué dans un avion. Pour ce type de système, il n’y a pas le droit à l’erreur !
Votre projet, nos valeurs
Le développement logiciel fait partie de notre ADN, les technologies et l’innovation sont des valeurs fortes que nous appliquons dans tous nos projets.
L’engagement et la proximité sont d’autres valeurs clés chez PONANT Technologies, c’est pourquoi l’échange et l’accompagnement sont au cœur de notre relation client.
Le mode projet chez PONANT Technologies, comment ça se passe ?
Dans les phases initiales du projet, sachez que deux rôles sont particulièrement clés au niveau du succès de votre projet de développement logiciel, à savoir :
Le chef de projet sera votre interlocuteur privilégié.
Dans un premier temps, nous vous proposons de vous rencontrer chez vous ou chez nous, on s’adapte ! L’adaptabilité est le maître mot pour chaque projet : chaque produit a ses spécificités.
Notre priorité, c’est comprendre votre métier ainsi que les besoins et les attentes de vos clients finaux, les utilisateurs du produit développé.
Une fois le projet lancé, nous sommes disponibles pour échanger avec vous et organiser des réunions de travail, en présentiel ou à distance tout au long du projet.
Notre espace créativité, chaleureux et accueillant vous donnera envie de revenir nous voir !
Notre process de développement logiciel embarqué
Vous souhaitez en savoir plus sur notre mode de fonctionnement ?
Découvrez notre process de développement logiciel en 8 étapes mis en place par notre équipe Solutions.
Étape 1 : Définition de vos besoins. C’est l’objet de notre « première rencontre de travail » une fois le projet lancé ! L’objectif est de formaliser les bases du projet, en analysant vos besoins et vos attentes afin de poser les fondations de votre projet. Dans cette étape nous pouvons vous accompagner en rédigeant le cahier des charges avec vous.
Étape 2 : Élaboration de vos spécifications logicielles. Il s’agit du « quoi », on répond à la question : « Que fait mon logiciel ? ». C’est un travail réalisé en interaction, nous formons un binôme de travail pour répondre à votre cahier des charges. « On vous explique tout, on vous propose différentes solutions possibles et on vous conseille sur la meilleure solution à choisir ! ». C’est à ce moment du process qu’Antoine redécore son bureau avec des grandes mind map (en réalité il les réalise sur son ordinateur ! ????) qui sont des représentations en toiles d’araignée géantes de toutes les données utiles à ne pas oublier, tous les détails, avec au bout de chaque branche les fonctionnalités unitaires du logiciel. Cet outil visuel permet de se replonger dans le projet plus facilement à tout moment !
Étape 3 : Conception logicielle. Cette étape est réalisée en interne avec l’équipe de développement et nos experts techniques. Il s’agit du « comment » du projet. Ce sont des éléments techniques que l’on va mettre en place pour répondre au « quoi », c’est-à-dire les spécifications logicielles exigées. Nous choisissons les meilleurs outils (technologies et langages) pour votre projet.
C’est à ce moment-là également que le « squelette » du logiciel est créé, et qui sera ensuite complété par les développeurs.
Pour avoir un ordre d’idée, pour un projet d’une durée de 6 mois ces 3 premières étapes, c’est 1 à 2 mois de travail avec nos équipes !
Étape 4 : Développement. L’équipe technique rentre dans la boucle. Notre équipe de développeurs est dans les starting-blocks, le développement du code de votre logiciel commence.
Étape 5 : L’intégration. Notre principal objectif est de commencer à intégrer dès que cela est possible (en parallèle du développement). Tous les modules logiciel qui ont été développés, sont rapidement connectés entre eux, afin qu’ils puissent communiquer et devenir une fois ensemble, un logiciel. Cette méthode nous permet d’avoir très tôt un MVP (Minimum Viable Product). Le MVP correspond au plus petit produit logiciel possible qui commence à avoir des fonctionnalités, où il y a déjà tous les modules de connectés.
Concrètement, dès qu’une fonctionnalité du logiciel peut être exécutée, nous vous la présentons afin que vous ayez des premiers résultats dès le début de la mise en route du projet. Nous commençons donc rapidement à assembler pour avoir un premier produit disponible. Cela permet d’avoir un retour rapide de votre part. Un retour métier, puisque vous verrez le logiciel fonctionner ! Ainsi vous pouvez le montrer en interne, voire à vos clients finaux. L’idée de cette démarche c’est d’anticiper au maximum les risques.
Étape 6 : La validation et la livraison. Le logiciel est terminé. Nous réalisons des tests sur le terrain,c’est à-dire auprès des utilisateurs du logiciel, les clients finaux, pour qu’ils fassent leurs premiers retours d’utilisation. Nous soulevons ainsi les premiers bugs.
Étape 7 : L’accompagnement dans le suivi et les évolutions. Nous corrigeons les retours d’anomalies avec vous lors des premiers mois d’utilisation du logiciel. Nous faisons également évoluer le logiciel.
Par la suite, si vous souhaitez que nous vous accompagnions ponctuellement, pour des évolutions, notre mode plateau vous permet de commander des jours de travail auprès de nos équipes sur votre projet.
La force de cette démarche réside dans le fait que nos équipes connaissent votre projet sur le bout des doigts puisque ce sont elles qui l’ont développé ! Elles seront donc les plus efficaces pour appréhender vos demandes d’évolutions.
Étape 8 : Transfert de compétences auprès de vos équipes. L’objectif de cette dernière étape est que vous soyez autonome dans l’utilisation et l’évolution de votre logiciel.
Nos solutions pour vos projets
Vous avez un projet de système embarqué ?
Nous associons de l’électronique, de la mécanique et du développement logiciel embarqué pour mener à bien celui-ci ! Voici les différentes solutions d’accompagnement que nous vous proposons :
Solution 1 : Spécialiste du logiciel.
PONANT Technologies s’intègre dans votre équipe projet déjà formée. Nous maîtrisons le logiciel, le reste de l’équipe est en interne chez vous, ou chez d’autres partenaires pour couvrir les sujets d’électronique et de mécanique
Solution 2 : Constitution d’une équipe partenaires.
Nous nous intégrons dans le projet en maîtrisant le logiciel avec une équipe projet de partenaires que nous créons pour vous. Vous bénéficiez donc d’une prestation complète avec des experts dans chaque domaine. Nous vous apportons une solution clé en main.
Solution 3 : Maîtrise d’œuvre.
Si vous ne souhaitez pas être maîtrise d’œuvre, PONANT Technologies devient maître d’œuvre du projet global et prend en charge l’ensemble des missions à réaliser.
Industrie : le rôle central du développement logiciel embarqué
Nous avons récemment réalisé un projet de développement logiciel embarqué pour WCS Coding, une entreprise spécialisée dans le marquage jet d’encre (TIJ).
Notre point fort est de s’adapter à votre projet. C’est pourquoi le mode projet décrit ci-dessus a été complété par des étapes supplémentaires.
Avant le processus en 8 étapes décrit ci-dessus, nous avons commencé avec un avant-projet :
- Etudes d’architectures, proposition de plusieurs solutions possibles (pré-étude). Du besoin exprimé, plusieurs solutions ont été proposées afin de répondre au mieux à celui-ci en exposant clairement les avantages et les inconvénients de chacune. Et en conseillant une solution en particulier. À la suite de cela, nous avons débattu afin de déterminer la solution qui correspondait le mieux au projet.
- Choix d’une solution par le client, sur la base des avantages/inconvénients présentés.
- Prototypage / Preuve de concept (POC). Cette étape sert à lever les verrous techniques. À la suite de la pré-étude, nous avons soulevé certains points posant des problèmes, qui pourraient avoir un impact sur la faisabilité du projet. Il s’agit donc de proposer une solution en élaborant une exécution technique prouvant que les verrous techniques peuvent tout à fait être solutionnés.
- Processus en 8 étapes (voir ci-dessus).
- Formation des équipes en interne, elles deviennent totalement opérationnelles et autonomes.
Dans la continuité du projet livré nous pouvons vous apporter notre expertise quand vous le souhaitez, ainsi que notre conseil pour l’évolution de votre logiciel.
Évolutions et perspectives…
L’IoT (Internet des objets) et la digitalisation de l’ensemble de la société a entraîné les entreprises à une adaptabilité croissante en termes de technologies et d’innovations.
Notons que le nombre d’utilisateurs des applications a connu un bond record, passant parfois de quelques centaines d’utilisateurs à plusieurs millions ! Les interfaces utilisateurs sont donc désormais une priorité en termes de développement.
Les systèmes embarqués sont chaque jour plus nombreux, ce qui nécessite d’être en veille permanente afin de rester compétitif sur le marché. Sur le marché des systèmes embarqués, on parle même d’une révolution industrielle, s’annonçant plus grande que celle du smartphone !
L’intégration des technologies issues du web dans l’informatique embarquée (réseau, cloud, langages de programmation) a largement augmenté dernièrement.
Chez PONANT Technologies, nous considérons qu’un projet se créé petit à petit et nous pouvons facilement être confronté à un élément ou une situation non prévisible. C’est pourquoi nous privilégions une démarche plutôt intuitive. Nous intégrons au fur et à mesure, l’objectif principal étant de lever les risques dès que possible.
Cette démarche prend les points forts des méthodes agile et du traditionnel cycle en V.
Conclusion
Au fur et à mesure que les puces sont devenues plus puissantes, les applications embarquées sont devenues plus complexes et les exigences en matière de support de développement ont augmenté.
Aujourd’hui, les objets connectés sont partout dans notre quotidien, ce qui signifie un développement accru des logiciels embarqués.
« Le développement de logiciel embarqué explose car nous avons la capacité de mettre du logiciel partout, même dans une brosse à dents ! » Nous pouvons même connecter différents systèmes entre eux : « En plus de pouvoir mettre de l’électronique et du logiciel dans n’importe quel objet, on a la capacité de les interconnecter entre eux, de les faire communiquer. »
En 20 ans, le changement a été si important qu’il a impacté profondément la société en termes de technologies et d’innovations. Les interfaces des logiciels embarqués sont de plus en plus utilisées et doivent donc être toujours plus performantes.
Nous avons aujourd’hui, trouvé un équilibre, entre la puissance de l’électronique et la puissance du logiciel permettant de créer des systèmes embarqués plus efficients que jamais !
Dans le même temps, le rythme de renouvellement et d’évolution des applications web s’accélère. Les environnements sont multiples et demandent une grande capacité d’adaptation de la part des équipes de développement. Les méthodes utilisées doivent être optimales afin de délivrer la meilleure qualité de travail tout en étant le plus productif possible.
Tout va très vite, nous sommes désormais dans une société d’immédiateté constante. Tout, tout de suite et tout connecté.
Nous sommes donc au cœur d’une révolution industrielle et sociétale.
Jusqu’où celle-ci nous mènera-t-elle ?