No contexto de software, o termo especificação tem significado diferente para diversas pessoas. Uma especificação pode ser um documento escrito, um modelo gráfico, um modelo matemático formal, uma coleção de cenários de uso, um protótipo, ou qualquer combinação dos itens citados.
Embora seja sugerido às vezes o desenvolvimento e uso de templates padrão para especificação de requisitos, com o argumento que isto conduz a uma representação de maneira mais consistente e compreensível, há momentos em que existe a necessidade da criação de uma especificação mais flexível.
Para grandes sistemas, um documento escrito contendo linguagem natural combinada a modelos gráficos pode ser a melhor abordagem. Para sistemas pequenos desenvolvidos em ambiente técnico conhecido pode ser suficiente a utilização de cenários de uso.
A especificação do sistema é o produto final produzido pelos engenheiros de requisitos. Ela é usada como a base para as engenharias de hardware, software e banco de dados, pois descreve funções e desempenho requeridas de um sistema baseado em computação e as regras que irão guiar seu desenvolvimento. A especificação limita cada elemento alocado ao sistema. A especificação do sistema também descreve a informação (dados e controle) que é entrada e saída do sistema.