En génie informatique, la spécification est un ensemble de documents qui - par des textes et des diagrammes - décrit de manière formelle et exhaustive le produit informatique à réaliser. La rédaction de la spécification est la première étape du développement d'un logiciel.
Chaque document de spécification est rédigé soit par un analyste fonctionnel, soit par un architecte, puis validé par le client - futur utilisateur du produit. Les documents serviront de référence pour la construction, ainsi que le budget, le planning, et la garantie du produit.
La phase de spécification doit être précédée par une étude préalable, qui décrit l'existant et les attentes et exigences générales exprimées par les utilisateurs pour le domaine à informatiser.
Les spécifications reprendront ces exigences pour les décrire plus en détail.
Un exemple d'attente à prendre en compte à ce stade est la langue du logiciel, qui doit être adaptée à l'utilisateur. Dans le cas où on s'oriente vers un progiciel, il faut s'assurer qu'il est possible et peu coûteux d'adapter les pages-écran, les états, la documentation utilisateur et les aides en ligne à la langue de l'utilisateur. Ces exigences seront détaillées en phase de spécifications.
Rédigée par un analyste fonctionnel, la spécification fonctionnelle décrit les processus métier dans lesquels le produit informatique devra intervenir. Les tâches prises en charge par le produit informatique, son interaction avec les autres intervenants - utilisateurs et autres produits - et les règles des interactions.
Exemple: le calcul de prévision se base sur une date. Seule une date future est autorisée. Si l'utilisateur entre une date passée, alors le logiciel devra afficher un message "date non autorisée".
Il existe deux sortes de spécifications :
Rédigée par un architecte, la spécification d'architecture décrit le système informatique dans lequel le produit sera implanté, son interaction avec les autres composants du système informatique – par exemple SGBD. La spécification d'architecture décrit également l'organisation générale du produit informatique, sa subdivision en modules et en couches.
La spécification d'architecture est quelquefois appelée étude technique dans la méthode MERISE. L'étude technique décrit sous l'angle technique le système à développer (les langages informatiques, les caractéristiques des bases de données, les champs, les consignes…).
La spécification d'architecture ou l'étude technique ne sont pas toujours vraiment nécessaires, si l'application à développer est de taille modeste et s'inscrit dans un cadre de développement plus large, en particulier dans une organisation où les standards techniques sont déjà définis. De bonnes spécifications détaillées peuvent alors suffire.