Cleanroom
# Cleanroom

Cleanroom é uma metodologia muito utilizada no desenvolvimento de software. É considerada "pesada" pelos padrões da Engenharia de Software, mas muito difundida no desenvolvimento de grandes projetos corporativos.
O processo é baseado no projeto apurado das funções, que são analisadas pelo método de revisão-par com o objetivo de verificar se fazem realmente o que foram especificadas a fazer. Por analogia, podemos comparar esta metodologia com as salas limpas na fabricação de semicondutores, que eliminam a necessidade de se limpar wafers de silício pelo fato de que eles nunca começam sujos. O desenvolvimento Cleanroom remove a necessidade de depuração do programa, assegurando que os erros nunca começam introduzidos no sistema (veja também RUP - Rational Unified Process).
Um outro uso diferente do termo cleanroom na tecnologia de programação é o uso de equipes separadas para especificar exigências, implementar funcionalidades, e comparar ambos. A comunicação entre os grupos é realizada geralmente via documentos escritos, como toda a comunicação sendo analisada por advogados. Este método pode ser usado para desenvolver softwares de uma maneira que possa ser demonstrado que não houve infração de questões legais por parte dos desenvolvedores.
Essa forma de desenvolvimento cleanroom foi usado na primeira implementação de BIOS para PC que não infrigia as patentes existentes.

## Princípios centrais

Os princípios básicos do processo de Cleanroom são:

### Desenvolvimento de software baseado nos métodos formais

    o desenvolvimento de Cleanroon faz uso do método caixa estruturada para especificar e projetar um produto de software.A verificação que o projeto implementa corretamente a especificação é realizado pela equipe de revisão.

### Implementação incremental sob controle estatístico da qualidade

    Desenvolvimento Cleanroom usa uma abordagem iterativa, na qual o produto é desenvolvido em incrementos que gradualmente acrescenta novas funcionalidades. A qualidade de cada incremento é medida comparando-se a padrões pré-estabelecidos para verificar que o processo de desenvolvimento é uma conduta aceitável.

### Medição estatística dos testes

    Testes de software em um processo Cleanroom é conduzido como um experimento estatístico. Baseado em especificações formais, um subconjunto representativo das entradas e saídas é selecionado e testado. O exemplo é então analisado estatisticamente para estimar a confiabilidade do software, sendo com isto estimado o nível de segurança.