Génie logiciel
30516
30547681
2008-06-11T20:23:17Z
Kilom691
27847
/* Quelques exemples d'employeurs potentiels */
Le '''génie logiciel''' (en [[anglais]] : ''software engineering'') désigne l'ensemble des méthodes, des techniques et outils concourant à la production d'un [[logiciel]], au-delà de la seule activité de [[Programmation informatique|programmation]].
== Définitions ==
Si l'on se réfère à l'arrêté ministériel du 30 décembre 1983 relatif à l'enrichissement du vocabulaire de l'informatique [''Journal officiel'' du 19 février 1984], on appelle génie logiciel « l'ensemble des activités de conception et de mise en œuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi ».
Une définition plus pratique pourrait être la suivante : '''procédures''', '''méthodes''', '''langages''', '''ateliers''', imposés ou préconisés par les '''normes''' adaptées à l'environnement d'utilisation afin de favoriser la '''production et la maintenance de composants logiciels de qualité'''.<ref>Patrick Jaulent, ''Génie logiciel, les méthodes'', Armand Colin, Paris, 1992</ref>
L'appellation '''génie logiciel''' concerne l'[[ingénierie]] appliquée au logiciel informatique. Cette branche de l'[[informatique]] s'intéresse plus particulièrement à la manière dont le [[code source]] d'un [[logiciel]] est spécifié puis produit. Le génie logiciel touche au [[Cycle de développement|cycle de vie des logiciels]]. Toutes les phases de la création d'un logiciel informatique y sont enseignées : l'analyse du [[besoin]], l'élaboration des [[Spécification (informatique)|spécifications]], la conceptualisation du mécanisme interne au logiciel ainsi que des techniques de programmation, le [[Développement de logiciel|développement]], la phase de [[Test (informatique)|test]] et finalement à la [[maintenance]].
Les projets relatifs à l'ingénierie logicielle sont de l'ordre du ''Programming in the large'', c’est-à-dire que les projets sont généralement de grande envergure et dépassent souvent les 10 000 lignes de code. Ces projets nécessitent une équipe de développement bien structurée. La [[gestion de projet]] vient en complément naturel du génie logiciel.
La norme [[SWEBOK]] du [[Institute of electrical and electronics engineers|IEEE]] définit les champs de connaissance du génie logiciel, comme le [[Project Management Body of Knowledge]] (PMBOK) du [[Project Management Institute]] (PMI) le fait, pour la gestion de projet.
== Compétences et habiletés visées par le génie logiciel ==
* la conception et le développement de nouveaux logiciels selon les principes propres à l'ingénierie
* l'analyse des problèmes en vue de la programmation d'une solution logicielle économique
* l'établissement des objectifs quantitatifs sur le plan de la sécurité, de l'utilisation, de l'impact sur la productivité, de la maintenance, de la fiabilité ainsi que de l'adaptation et de la viabilité d'un projet logiciel d'un point de vue économique
* la mise en œuvre de solutions par des logiciels bien structurés
* la vérification des logiciels dans le respect des objectifs initiaux
* la gestion et la coordination efficace des projets logiciels et de l'équipe de développement
* l'évaluation du processus de développement et de son niveau de maturité
== Thématiques et domaines couverts ==
Les thématiques du génie logiciel recouvrent notamment :
* les [[outil]]s et [[Méthode de travail|méthode]]s de [[spécification]] de [[fonction (informatique)|fonctionnalités]] d'un [[logiciel]]
** les formalismes de modélisation ([[Unified modeling language|UML]] par exemple)
** les méthodes formelles ([[Méthode B]] par exemple)
** ...
* les outils et les méthodes de [[conception de logiciel]]
** Outil de conception, [[Atelier de génie logiciel|atelier]] logiciel,
** Ingénierie des modèles [[Kermeta]] par exemple,
** Environnement de développement
** ...
* la génération automatique de code d'après une spécification formelle.
* l'utilisation de [[patron de conception|patrons de conception]].
* l'automatisation de l'optimisation du code.
== Quelques disciplines couvertes par le génie logiciel ==
* [[Gestion de la qualité du logiciel]]
* Architecture de haut niveau
* Architecture détaillée
* Analyse/spécification des besoins
* [[Documentation logicielle]]
* Établissement de programme de mesure du logiciel
* Implantation de norme logicielle ([[Organisation internationale de normalisation|ISO]], [[IEEE]])
* Connaissance dans l'application du [[Capability Maturity Model Integration|CMM/CMMI]]
* Les cycles de vie du logiciel
* Optimisation des interfaces usager
* [[Gestion de projet]]
* Les métriques (par exemple : [[Points-fonction]])
== Base de connaissance du génie logiciel ==
La base de connaissance du génie logiciel est le [[SWEBOK]] (''Software Engineering Body of Knowledge'') chapeauté par l'[[IEEE]].
Le SWEBOK n'est pas un guide. Il est un corpus de connaissance.
== Outils de production utilisés par le génie logiciel ==
D'autres domaines sont connexes au génie logiciel dans la mesure où ils partagent des outils communs : description formelle du code, [[grammaire formelle|grammaire]]s des langages manipulés. Ces domaines sont par exemple :
* la [[compilateur|compilation]] ;
* l'[[interpréteur|interprétation]] de code ;
* la traduction de code d'un [[langage de programmation]] vers un autre.
* un éditeur dédié au [[langage de programmation]]
* les bibliothèques de [[composant]]s
* les [[Outil]]s de [[Planification]]
* un outil de [[Gestion de configuration]] pour contrôler les évolutions du code produit
* des moyens de [[test (informatique)|tester]] pour vérifier la conformité du code produit
* des outils de génération de [[Métrique (logiciel)|métriques]] pour caractériser la conformité du code produit
== Outils de gestion en relation avec le génie logiciel ==
Bien que l'on passe du génie de la production à celui de la décision, ces domaines ont un impact tellement important sur l'activité de génie logiciel qu'ils doivent être mentionnés :
* La [[gestion de la qualité]] permet de contrôler l'organisation de la production du code.
* La qualité repose sur des [[Méthode de travail|méthodes]].
* Le [[management]] est un [[modèle]] et un moyen humain qui a pour but d'améliorer la production.
== Les professions du génie logiciel ==
Le titulaire d'un diplôme dans ce domaine peut exercer dans les diverses professions suivantes :
* Ingénieur en logiciel
* Ingénieur au niveau conception de logiciel
* Ingénieur en informatique
== Quelques exemples d'employeurs potentiels ==
Le titulaire d'un diplôme en génie logiciel sera amené à travailler un peu partout où le développement de logiciel sera nécessaire, voici quelques exemples d'employeurs pouvant avoir besoin de personnels spécialisé dans le génie logiciel :
* les [[société de services en ingénierie informatique|sociétés de services en ingénierie informatique]] ([[SSII]]) ;
* les éditeurs de logiciels ;
* les institutions de certification gouvernementales.
== Bibliographie ==
* Strohmeier A., Buchs D., ''Génie logiciel : principes, méthodes et techniques'', Lausanne, Presses polytechniques et universitaires romandes, 1996.
* ''SWEBOK: Software Engeneering Body Of Knowledge'', norme IEEE, 2004. Voir [[SWEBOK]].
== Notes et références ==
<references/>
{{Audit de sécurité informatique}}
{{Portail informatique}}
[[Catégorie:Génie logiciel| ]]
[[Catégorie:Gestion de projet]]
[[Catégorie:Ingénierie]]
[[Catégorie:Développement logiciel]]
[[af:Sagteware-ingenieurswese]]
[[ar:هندسة البرمجيات]]
[[ast:Inxeniería del software]]
[[bs:Softverski inžinjering]]
[[ca:Enginyeria de programari]]
[[cs:Softwarové inženýrství]]
[[da:Softwareudvikling]]
[[de:Softwaretechnik]]
[[en:Software engineering]]
[[es:Ingeniería de software]]
[[fa:مهندسی نرمافزار]]
[[fi:Ohjelmistotuotanto]]
[[ga:Innealtóireacht bogearraí]]
[[gl:Enxeñaría de software]]
[[he:הנדסת תוכנה]]
[[hr:Programsko inženjerstvo]]
[[id:Rekayasa perangkat lunak]]
[[is:Hugbúnaðarverkfræði]]
[[it:Ingegneria del software]]
[[ja:ソフトウェア工学]]
[[ko:소프트웨어 공학]]
[[lt:Programų inžinerija]]
[[lv:Programminženierija]]
[[nl:Software Engineering]]
[[no:Programvareutvikling]]
[[pl:Inżynieria oprogramowania]]
[[pt:Engenharia de software]]
[[ru:Разработка программного обеспечения]]
[[sk:Softvérové inžinierstvo]]
[[sr:Инжењеринг софтвера]]
[[su:Rékayasa software]]
[[sv:Programvaruutveckling]]
[[ta:மென்பொருட் பொறியியல்]]
[[th:วิศวกรรมซอฟต์แวร์]]
[[tl:Software engineering]]
[[tr:Yazılım mühendisliği]]
[[vi:Công nghệ phần mềm]]
[[zh:软件工程]]