- Développement de logiciel
-
Le développement de logiciel est le travail d'étudier, de concevoir, construire, transformer, mettre au point, maintenir et améliorer des logiciels.
Ce travail est effectué par les collaborateurs des éditeurs de logiciels, des sociétés de services et d'ingénierie informatique (abr. SSII) et les membres de la communauté du logiciel libre.
Un logiciel est créé petit à petit par une équipe d'ingénieurs, au service d'un ou de plusieurs utilisateurs. Différentes activités permettent de prendre connaissance des attentes de l'usager, créer un modèle théorique du logiciel, qui servira de plan de construction, puis construire le logiciel, contrôler son bon fonctionnement et son adéquation au besoin. La planification et la répartition des travaux permet d'anticiper le délai et le coût de fabrication.
Sommaire
Les activités clé
La phase préliminaire avant le commencement des travaux de développement est une étude qui permettra de déterminer le besoin, le but visé par les travaux, et le retour sur investissement de l'utilisation du futur logiciel. Cette phase comporte souvent une analyse sommaire, destinée à obtenir une estimation empirique du coût de fabrication du logiciel[1].
Analyse
Article détaillé : Analyse fonctionnelle (conception).Le travail de l'analyste est d'effectuer une enquête, qui vise à recenser, et documenter chaque fonctionnalité que devra offrir le logiciel, et créer les documents de spécification, qui seront la base du cahier des charges du logiciel. C'est à ce moment que sera créée la maquette de l'interface graphique du logiciel[1].
Un cahier des charges détaillé permettra au chef de projet de calculer en détail de coût de fabrication du logiciel ainsi que le temps nécessaire.
Conception
Le travail de conception consiste à déterminer les solutions techniques théoriques qui permettront de satisfaire le cahier des charges, c'est-à-dire les attentes de l'usager. L'ingénieur se basera sur ses connaissances scientifiques, ainsi que le savoir-faire propre au développement logiciel que sont les patrons de conception - des modèles de solutions déjà éprouvés. Le résultat du travail effectué sont des documents tels que les diagrammes d'architecture, la description du modèle de données et le diagramme de classes. Les diagrammes utilisent souvent la notation UML[1].
Construction
Article détaillé : programmation informatique.La construction est la principale activité, qui occupe plus de la moitié de la durée totale du développement. Durant cette étape le programmeur rédige le code source du logiciel, puis utilise un compilateur pour le transformer et obtenir le logiciel proprement dit. Le programmeur effectue également de nombreux tests en vue de déceler un maximum de bugs - des erreurs de programmation.
Les différents modules du logiciels sont programmés un par un, puis rassemblés, et de nouveau tests sont effectués en vue de vérifier le fonctionnement de l'ensemble (test d'intégration).
Le produit de cette phase est le livrable, c'est-à-dire l'ensemble des fichiers qui seront mis à disposition de l'utilisateur final, parmi lesquels il y a les programmes, ainsi que le mode d'emploi et les fichiers de configuration. Le livrable peut être une application informatique complète, un composant, ou un patch[1].
Recette
Article détaillé : Recette (informatique).Durant la recette, divers contrôles sont effectués avant que le logiciel soit mis sur le marché. Un examen approfondi, composé d'une suite de tests, est effectué en vue de vérifier l'alignement du produit avec le cahier des charges. Une version beta (pré-série) du logiciel est mise à disposition d'un nombre limité d'usager en vue de leur permettre d'évaluer l'adéquation du logiciel avec leurs attentes[2].
Le génie logiciel
Article détaillé : génie logiciel.Le génie logiciel est la science des bonnes pratiques de développement de logiciel. Cette science étudie en particulier la répartition des phases dans le temps, les bonnes pratiques concernant les documents clés que sont le cahier des charges, le diagramme d'architecture ou le diagramme de classes. Le but recherché est d'obtenir des logiciels de grande ampleur qui soient fiables, de qualité, et correspondent aux attentes de l'usager.
Les outils
Un compilateur permet de traduire le code source rédigé dans un certain langage de programmation, et d'obtenir le code binaire du logiciel. Un éditeur de liens et un pré-processeur est parfois nécessaire. Ces trois outils sont parfois réunis en un moteur de production qui automatise la préparation du code binaire (opération appelée make ou build).
Le code source est rédigé à l'aide d'un éditeur de texte. Celui-ci est souvent muni de coloration syntaxique, une fonctionnalité qui met en couleur les éléments du lexique du langage de programmation.
Le débogueur (anglais debugger) permet de contrôler le déroulement de l'exécution du logiciel, et déceler des bugs.
Un environnement de développement intégré est une suite d'outils de développement, qui comporte généralement un compilateur, un moteur de production, un éditeur et un débogueur. Les trois logiciels sont orientés autour d'un même langage de programmation et prévus pour être utilisés ensemble. Il peut souvent être couplé avec un système de gestion de versions.
un système de gestion de versions est un outil qui permet d'enregistrer des fichiers en conservant l'historique de toutes les modifications effectuées. Il permet de retrouver le code source dans l'état où il était à une date donnée.
Un logiciel de suivi de problèmes permet de recenser les problèmes techniques rencontrés avec un logiciel, l'évolution des corrections de bugs, et les possibilités de contournement (anglais workaround).
Le cahier des charges peut être rédigé avec un traitement de texte standard. Les diagrammes de conception peuvent être rédigés avec un outil de dessin assisté par ordinateur. Les outils de dessins orientés sur les diagrammes de logiciel utilisent souvent la notation UML (Unified Modeling Language).
Un atelier de génie logiciel est une suite d'outils qui permettent la construction, ainsi que la conception et la planification des travaux. Il comporte tous les outils présents dans un environnement de développement intégré, ainsi que des outils de conception, de planification, de test, et des outils qui créent automatiquement du code source et de la documentation.
Une forge est un portail Web sur une suite d'outils de développement collaboratif. Il comporte tous les outils présents dans un environnement de développement intégré, y compris un système de gestion de versions et un logiciel de suivi de problèmes, ainsi que des outils de liste de discussions et de rédaction collaborative de documents (wiki).
Voir aussi
Notes et références
- (en)N. D. Birrell, Martyn A. Ould,A Practical Handbook for Software Development,Cambridge University Press - 1988,(ISBN 978-0-521-34792-1)
- (en)Sartaj Sahni et Bob Cmelik, Software development in C,ilicon Press - 1995,(ISBN 978-0-929306-16-2)
Wikimedia Foundation. 2010.