le développement de logiciel fait référence à un ensemble d'activités informatiques dédiées au processus de création, de conception, de déploiement et de support des logiciels ».
Le logiciel lui-même est l'ensemble des instructions ou des programmes qui indiquent à un ordinateur ce qu'il doit faire. Il est indépendant du matériel et rend les ordinateurs programmable . Il en existe trois types de base :
le logiciel système qui fournit des fonctions de base telles que les systèmes d'exploitation, la gestion de disques, les utilitaires, la gestion du matériel et d'autres nécessités opérationnelles.
le logiciel de programmation qui permet aux programmeurs de disposer d'outils tels que des éditeurs de texte, des compilateurs, des éditeurs de liens, des débogueurs et d'autres outils pour créer du code.
le logiciel d'application (applications ou applis) pour aider les utilisateurs à effectuer tâches. Les suites de productivité bureautique, les logiciels de gestion des données, les lecteurs multimédias et les programmes de sécurité sont des exemples. Le terme applications désignent également les applications Web et mobiles telles que celles utilisées pour faire des achats sur Amazon.com, pour socialiser avec Facebook ou pour poster des photos sur Instagram.1
Un quatrième type possible est le logiciel intégré. Le logiciel système intégré est utilisé pour contrôler des machines et des unités qui ne sont pas habituellement considérés comme des ordinateurs : réseaux de télécommunications, voitures, robots industriels, etc. Ces unités, et leur logiciel , peuvent être connectées tant que composant de l'Internet des objets (IoT).2
Le développement de logiciel est principalement réalisé par des programmeurs, des ingénieurs en logiciels et des développeurs de logiciels. Ces rôles interagissent et se chevauchent, et la dynamique entre eux varie considérablement d'un service de développement à l'autre et d'une communauté à l'autre.
Les programmeurs, ou codeurs, écrivent le code source, afin de programmer des ordinateurs pour des tâches spécifiques telles que la fusion de bases de données, le traitement de commandes en ligne, l'acheminement des communications, la réalisation de recherches ou l'affichage de textes et de graphiques. Les programmeurs interprètent généralement les instructions des développeurs et des ingénieurs en logiciels et utilisent des langages de programmation comme C++ ou Java pour les exécuter.
Les ingénieurs logiciel appliquent des principes d'ingénierie pour créer des logiciels et des systèmes, afin de résoudre des problèmes. Ils utilisent un langage de modélisation et d'autres outils pour concevoir des solutions qui peuvent souvent être appliquées aux problèmes de manière générale, par opposition à la résolution d'un cas donné ou pour un client spécifique. Les solutions d'ingénierie logicielle adhèrent à la méthode scientifique et doivent fonctionner dans le monde réel, comme pour les ponts ou les ascenseurs. Leur responsabilité s'est accrue à mesure que les produits sont devenus de plus en plus intelligents grâce à l'ajout de microprocesseurs, de capteurs et de logiciels. Non seulement un nombre croissant de produits s'appuient sur les logiciels pour se différencier sur le marché, mais leur développement de logiciel doit être coordonné avec le travail de développement mécanique et électrique du produit.
Les développeurs de logiciels ont un rôle moins formel que les ingénieurs et peuvent être étroitement impliqués dans des domaines spécifiques du projet, y compris l'écriture du code. Parallèlement, ils pilotent le cycle de développement de logiciel dans son ensemble, notamment en travaillant avec des équipes fonctionnelles pour transformer les exigences en fonctions, en gérant les équipes et les processus de développement, et en procédant aux tests et à la maintenance des logiciels.3
Le travail de développement de logiciel ne se limite pas aux codeurs ou aux équipes de développement. Les professionnels tels que les scientifiques, les fabricants de dispositifs et de matériel informatique créent également du code logiciel, même s'ils ne sont pas principalement des développeurs de logiciels. Il ne se limite pas non plus aux secteurs d'activité traditionnels des technologies de l'information, comme les entreprises de logiciels ou de semi-conducteurs En fait, selon le Brookings Institute (lien externe à bm.com), ces entreprises « représentent moins de la moitié des sociétés effectuant du développement de logiciel ».
Une distinction importante est le développement de logiciels personnalisés par opposition au développement de logiciels commerciaux. Le développement de logiciels personnalisés est le processus de conception, de création, de déploiement et de maintenance de logiciels pour un ensemble spécifique d'utilisateurs, de fonctions ou d'organisations. En revanche, les logiciels commerciaux prêt à l'emploi sont conçus pour un large éventail d'exigence, ce qui permet de les modulariser, de les commercialiser et de les distribuer.
Le développement d'un logiciel implique généralement les étapes suivantes :
Les étapes du processus de développement de logiciel s'inscrivent dans la gestion du cycle de vie de l'application (ALM). La solution IBM Engineering Management est un sur-ensemble d'ALM qui permet de gérer le développement mécanique, électrique et logiciel en parallèle.
Les étapes du processus de développement de logiciel peuvent être regroupées en phases du cycle de vie, mais l'importance de ce dernier réside dans le fait qu'il se recycle pour permettre une amélioration continue. Par exemple, les problèmes des utilisateurs qui apparaissent dans la phase de maintenance et de support peuvent devenir des exigences au début du cycle suivant.
Le développement de logiciel est également important parce qu'il est omniprésent. Comme le souligne Dibbe Edwards, vice-président d'IBM et blogueur : « Le logiciel est devenu un facteur de différenciation essentiel pour de nombreux produits, des voitures aux machines à laver en passant par les thermostats, qui sont reliés par l'Internet des objets en pleine expansion ».
Quelques exemples :
L'utilisation du développement de logiciel pour différencier les marques et obtenir un avantage concurrentiel exige de maîtriser les techniques et les technologies qui peuvent accélérer le déploiement, la qualité et l'efficacité des logiciels.
Une solution éprouvée pour les activités de modélisation et de conception qui vous aide à fournir plus rapidement des logiciels et des systèmes de meilleure qualité.
Contrôle avancé des versions du logiciels, gestion de l'espace de travail, contrôle distribué des sources et soutien au développement parallèle pour les individus et les équipes, afin d'améliorer la productivité en suivant automatiquement les modifications apportées aux artefacts. Le logiciel offre une fonction de suspension et de reprise quasiment illimitée pour gérer les interruptions de travail.
Fournit des connexions entre les outils IBM Engineering Lifecycle Management et des outils tiers tels que Git, GitLib et GitHub pour gérer le contrôle des versions des logiciels.
Code, contenu, communauté et plus
S'inscrire aux sujets les plus importants
Répondre aux besoins complexes des entreprises avec rapidité et agilité en vous connectant à des outils de développement de logiciel
1 Software, Techopedia (lien externe à ibm.com)
2 Logiciel intégré, Wikipedia (lien externe à ibm.com)
3 Ingénieur logiciel vs. Développeur de logiciel – Quelle est la différence ? Fullstack Academy ((lien externe à ibm.com)
4 The Forrester Wave™: Low-Code development Platforms for AD&D Pros, Q4 201 John R. Rymer, Forrester Research, Inc. 23 octobre 2017 (lien externe à ibm.com)