On désigne par atelier de génie logiciel (AGL) un ensemble de programmes informatiques permettant eux-mêmes de produire des programmes de manière industrielle. On parle aussi d'outils CASE pour Computer Aided Software Engineering
Alors qu'un compilateur, par exemple, ne peut que traduire un langage informatique vers un autre, la réalisation de programmes, notamment au sein d'équipes nombreuses, requiert bien d'autres activités qui sont généralement couvertes par un AGL :
Un AGL est basé sur un dictionnaire de données, (qui fait implicitement référence à un méta modèle de données). Il est généralement interfacé avec une interface graphique permettant la modélisation, suivant un ou plusieurs formalismes tels que MERISE. Parfois, l'outil a l'intelligence pour mettre en forme, et rendre lisible dans un schéma, l'inévitable complexité du " plat de nouilles " issu du dictionnaire de données.
L'AGL permet de " zoomer " et d'enrichir un référentiel (BDD) d'entreprise suivant plusieurs axes : cycle de vie, domaines projet, cycle d'abstraction, portage technologique sur d'autres environnements de développement…
Un apport essentiel de l'AGL est de permettre de documenter automatiquement un programme, et de maintenir en permanence à jour cette documentation, et, ce tout au long de sa conception.
L'objectif est souvent d'essayer de trouver le bon niveau de granularité dans la conception de chaque composant applicatif, de manière à essayer d'en améliorer la réutilisabilité.
Certains AGL peuvent aller jusqu'à la génération de code ou à l'inverse peuvent inclure des fonctionnalités de rétro-ingénierie et donc analyser pour modélisation les données contenues dans un programme. Enfin certains peuvent faciliter la génération de jeux de test.
Un AGL facilite la collaboration des différents programmeurs (urbanisme informatique) ainsi que la maintenance ultérieure des programmes en les incitant à partager les mêmes méthodes.