# SWEBOK

Le SWEBOK, ou « Guide to the Software Engineering Body of Knowledge », ou « Guide du corpus de connaissances en génie logiciel » est un référentiel établi par l’IEEE Computer Society pour structurer les connaissances relatives au génie logiciel. Il cherche à délimiter des domaines de connaissances bien identifiés, et à faire une synthèse des pratiques et techniques généralement acceptées, tout en visant à asseoir la reconnaissance du génie logiciel comme discipline de l'ingénierie. La version électronique est mis à disposition gratuitement par l'IEEE.

## Intérêt

Le SWEBOK vise à codifier les connaissances professionnelles, et servir ainsi de guide aux professionnels du développement de logiciels pour l'exercice de leur métier, aux organismes académiques ou de formation professionnelle pour l'élaboration de cursus d'apprentissage, et à des organisations professionnelles pour établir des programmes de certification ou d'accréditation professionnelle. Le SWEBOK s’adresse donc aux enseignants chargés de bâtir des programmes de l’enseignement supérieur et aux étudiants. Il peut être aussi utilisé par les entreprises privées et publiques comme un guide des connaissances du domaine pour mettre en place des bonnes pratiques d’ingénierie du logiciel. Ce qui ne veut pas dire que tout ingénieur devra l’appliquer sans réflexion.
Son but est de structurer le génie logiciel en 15 domaines de compétences, et de présenter les pratiques « généralement acceptées », techniques et normes correspondantes. Il fait ainsi un inventaire méthodologique qui permet d'orienter le praticien. Toutefois l'attention du lecteur est attiré sur le fait qu'il s'agit d'un guide sur le corpus et non du corpus lui-même : le SWEBOK se réfère ainsi à des connaissances métier existantes, sans chercher à se substituer à d'autres ouvrages et sources de référence. Par ailleurs, il documente en quoi le génie logiciel constitue une discipline à part entière de l'ingénierie.

## Historique

Les travaux pour établir le SWEBOK ont démarré en 1993 à la suite d'une initiative conjointe entre l'IEEE et l'ACM et ont été organisés en trois phases.
Le début de l'élaboration de ce référentiel est concomitante avec les travaux de l'Organisation Internationale de normalisation initiés en 1990 et qui ont abouti à la promulgation en 1995 de la norme ISO 12207 sur le cycle de vie des processus logiciels. Cette norme a servi de base de référence au SWEBOK, qui en est toutefois indépendant et ne se limite pas à la norme.
Une première version du SWEBOK est réalisée en 1998 mais nécessite des améliorations$^,$.
L'ACM s'est retiré des instances de pilotage du SWEBOK en 2000, après avoir constaté que l'IEEE envisageait d'utiliser le SWEBOK comme base pour réglementer l'accès à la profession d'ingénieur logiciel (via une licence d'exercice), ce à quoi l'ACM s'oppose fondamentalement.
Une seconde version du SWEBOK est publiée en 2004. Elle a été publiée en 2005 sous la forme d’un rapport technique de normalisation ISO/IEC TR 19759:2005.
La norme ISO 12207 est révisée en 2008 et prend l'intitulé « Ingénierie des systèmes et du logiciel -- Processus du cycle de vie du logiciel ».
Une troisième version, le SWEBOK 3.0, est publiée en 2014. Elle a été publiée en 2015 sous forme d'un rapport technique de normalisation ISO/IEC TR 19759:2015 également diffusé par l'AFNOR.
La norme ISO 12207 est révisée en 2017 et devient une norme commune avec l'IEEE, et cite le SWEBOK en tant que rapport technique de référence.
Une quatrième version est sortie en octobre 2024. C'est la version actuelle du référentiel.

## Les domaines de connaissance du génie logiciel

Le SWEBOK structure le génie logiciel en 15 domaines de connaissances. Un chapitre est dédié à chacun d'entre eux:
* Exigences du logiciel ( « Software requirements »)
* Conception du logiciel ( « Software Design »)
* Construction du logiciel (« Software Construction »)
* Test du logiciel ( « Software Testing »)
* Maintenance du logiciel ( « Software Maintenance »)
* Gestion de la configuration du logiciel ( « Software Configuration Management »)
* Management du génie logiciel ( « Software Engineering Management »)
* Processus du génie logiciel ( « Software Engineering Process »)
* Modèles et méthodes du génie logiciel ( « Software Engineering Models and Methods »)
* Qualité du logiciel ( « Software Quality »)
* Pratique professionnelle du génie logiciel ( « Software Engineering Professional Practice »)
* Principes économiques du génie logiciel ( « Software Engineering Economics »)
* Bases informatiques ( « Computing Foundations »)
* Bases mathématiques ( « Mathematical Foundations »)
* Bases d'ingénierie ( « Engineering Foundations »)
Ces domaines, et les processus évoqués dans les domaines ne sont pas à comprendre comme des activités séquentielles.

## Les disciplines liées au génie logiciel

Le SWEBOK identifie les disciplines suivantes comme étant liées au génie logiciel:
* L’ingénierie informatique (« Computer engineering » en anglais);
* L'informatique (« Computer science » en anglais)
* Les mathématiques;
* La gestion;
* La gestion de projet;
* Le management de la qualité;
* L’ingénierie des systèmes.

### Participation au dispositif du SWEBOK

Le projet SWEBOK est le fruit d’une collaboration entre universités, industries et associations professionnelles soit :
* Associations professionnelles : IEEE Computer Society, ACM (s’est retirée en 2000)
* Autres organisations professionnelles: Conseil canadien des ingénieurs (CCI), Conseil national de recherches Canada (CNRC)
* Organisations publiques: NIST, MITRE Corporation
* Entreprises : Boeing, Raytheon, Construx, Rational Software (vendue à IBM en 2003), SAP
* Entités académiques :École de technologie supérieure (ÉTS), Université du Québec à Montréal (UQÀM)

## Réactions face à SWEBOK

Il y a eu de fortes réactions lors du processus de création du SWEBOK, en raison de l'intention affichée par l'IEEE d'utiliser le SWEBOK pour règlementer l'accès à la profession d'ingénieur logiciel sur la base d'un mécanisme de licence professionnelle. L'ACM qui était co-initiatrice du SWEBOK s'est ainsi retirée du projet dès 2000, en raison de son opposition rigoureuse à une telle restriction règlementaire, et de sa position en faveur d'un accès libre à la profession.
Plusieurs auteurs ont critiqué publiquement une version préliminaire du SWEBOK 2004, lors d'une phase publique d'appel à commentaires, que ce soit sur l'intention d'établir une licence professionnelle, ou sur la base du contenu jugé comme prêtant à question, insuffisant ou erroné comme Martin Fowler, Cem Kaner (professeur de génie logiciel)$^,$ et Grady Booch.
Depuis, le SWEBOK a subi plusieurs révisions qui ont fait intervenir plus de 150 praticiens. L'avant-propos de la version en vigueur ne mentionne plus le mécanisme de licence professionnelle qu'à titre d'exemple, parmi les procédés à disposition des professions pour diffuser les connaissances nécessaires à leur exercice, au même titre que les études, les formations, et les certifications. La dernière version du SWEBOK prend de plus en compte les pratiques agile, et précise pour plusieurs domaines, comme par exemple les exigences ou la conception, que le processus est nécessairement itératif.