A função mais importante de uma especificação é projetar o programa . Mesmo se você estiver trabalhando sozinho no código e escrever uma especificação exclusivamente para seu próprio benefício, o ato de escrevê-la - descrevendo como o programa funciona em mínimos detalhes - forçará você a realmente projetar o programa ...
... quando você projeta seu produto em uma linguagem humana, leva apenas alguns minutos para tentar pensar em várias possibilidades, revisar e melhorar seu design. Ninguém se sente mal quando exclui um parágrafo em um processador de texto. Mas quando você projeta seu produto em uma linguagem de programação, leva semanas para fazer projetos iterativos. O que é pior: um programador que passa apenas duas semanas escrevendo algum código ficará bastante ligado a esse código, não importa o quão errado ele seja ...
... Ao escrever uma especificação, você só precisa comunicar como o programa deve funcionar uma vez . Todos na equipe podem apenas ler as especificações. O pessoal do controle de qualidade lê o documento para saber como o programa deve funcionar e saber o que testar. O pessoal de marketing o usa para escrever seus vagos white papers de vaporware para vomitar no site sobre produtos que ainda não foram criados. O pessoal do desenvolvimento de negócios o interpretou mal para gerar fantasias estranhas sobre como o produto curará a calvície, verrugas e outras coisas, mas atrai investidores, então tudo bem. Os desenvolvedores leem para saberem o código a escrever. Os clientes leem para garantir que os desenvolvedores estejam criando um produto pelo qual desejam pagar. Os escritores técnicos leem e escrevem um bom manual ...
Quando você não tem uma especificação, toda essa comunicação ainda acontece, porque precisa , mas acontece ad hoc . O pessoal do controle de qualidade brinca com o programa à toa e não, e quando algo parece estranho, eles interrompem os programadores mais uma vez para fazer outra pergunta estúpida sobre como a coisa deve funcionar ...
sem uma especificação detalhada, é impossível fazer um cronograma ... Em muitas organizações de programação, toda vez que há um debate sobre design, ninguém consegue tomar uma decisão, geralmente por razões políticas. Portanto, os programadores trabalham apenas em coisas incontroversas. À medida que o tempo passa, todas as decisões difíceis são levadas ao fim ... Escrever uma especificação é uma ótima maneira de definir todas aquelas decisões irritantes de design, grandes e pequenas, que ficam encobertas se você não tiver uma especificação. ..