Implementação X Especificação

Fala galera!

Eu estou precisando de uma definição clara sobre o que é implementação e o que é especificação.

Abraço a todos.

Especificação é a definição sobre o que deve ser feito…

Exemplo: O programa deve receber dois inteiros, fazer a soma e imprimir o resultado

Implementação é o programa que segue a essa especificação

Exemplo (pseudo-código)

int a = readInt();
int b = readInt();
print a + b;

Especificação da Linguagem Java: http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html

Implementação da Especificação: Compilador Java

[quote=fesaab]Especificação da Linguagem Java: http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html

Implementação da Especificação: Compilador Java[/quote]

A especificação da linguagem é utilizada para fazer o compilador…

Mas o compilador é a implementação da especificação do compilador… nao da linguagem :smiley:

Nessa filosofia… a especificação da máquina virtual: http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html

Implementação da máquina virtual: java.exe

hehehe
vlw a correção :smiley:

Acho que entendi.
Então uma especificação pode ter várias implementações, ou seja, o que deve ser feito pode ser feito de diversas maneiras.

[quote=theodrums]Acho que entendi.
Então uma especificação pode ter várias implementações, ou seja, o que deve ser feito pode ser feito de diversas maneiras.[/quote]

Isso mesmo. A especificação pode ser dividida em dois “grandes grupos”: especificação funcional e especificação não funcional. A especificação funcional diz o que o sistema ou software deve fazer, como no exemplo do rogelgarcia. Já a especificação não funcional não diz exactamente o que o deve ser feito, mas adiciona algumas caracteristicas ao sistema. Um exemplo de especificação não funcional: o programa não pode demorar mais do que 2 minutos a calcular a soma dos números inseridos. Você não programa esta especificação, mas você faz de tudo para cumpri-la.

Só um adendo. Requisitos não-funcionais não se programam imperativamente. Faltou o imperativamente.
Eles sim se programam. Ou seja, vc sim escreve código que levará ao cumprimento desse requisito, apenas não o faz imperativamente.

Blz pessoal.

Obrigado pelas respostas!

[quote]Só um adendo. Requisitos não-funcionais não se programam imperativamente. Faltou o imperativamente.
Eles sim se programam. Ou seja, vc sim escreve código que levará ao cumprimento desse requisito, apenas não o faz imperativamente.[/quote]

Obrigado pela correção :stuck_out_tongue: