Les phases d’analyse et de développement logiciels reposent sur l’utilisation de langages spécifiques. On peut distinguer
les langages de conception qui guident la conception d’un système, notamment au niveau:
des exigences d’un système logiciel. Il s’agit essentiellement de langages textuels structurés ou de notations graphiques simples tels que les cas d’utilisation UML ou diagrammes d’exigences/buts tels que SysML ou KAOS
des spécifications détaillées de l’architecture du logiciel, qui repose sur un ensemble de notations plus élaboré, typiquement des diagrammes UML de classes, de séquences, machines à états, composants...
les langages de programmation qui décrivent comment un ordinateur va réaliser les manipulations conduisant à la réalisation du design précédemment spécifié, il s’agit notamment:
de langages impératifs procéduraux ou orientés-objets tels que Java, C, C++, C#, python, php...
des langages plus spécifiques par exemple pour décrire les bases de données et les manipuler (SQL), manipuler des données et des éditeurs associés sur bases de méta-modèles (EMF/GMF)