Alternativa B
A questão aborda conceitos fundamentais de Engenharia de Software, especificamente sobre segurança, confiabilidade e qualidade. Vamos analisar cada uma das sentenças para identificar a correta:
Análise das Sentenças
Sentença I - "Toda vulnerabilidade de sistema é um bug de software e vice-versa."
Esta afirmação é falsa. Embora haja uma relação próxima entre os dois termos, eles não são equivalentes:
- Bug: Refere-se a qualquer erro ou defeito no código ou na lógica do software. Um bug pode causar mau funcionamento, mas não necessariamente abre uma brecha de segurança.
- Vulnerabilidade: É uma fraqueza que pode ser explorada por um agente mal-intencionado para comprometer a segurança (confidencialidade, integridade ou disponibilidade).
- Nem todo bug é uma vulnerabilidade (ex: um erro de digitação em um texto não afeta a segurança), e nem toda vulnerabilidade é estritamente um "bug" de código (pode ser um erro de configuração, arquitetura ou política).
Sentença II - "Software confiável e software seguro são dois conceitos distintos."
Esta afirmação é verdadeira. São áreas da engenharia de software com focos diferentes:
- Confiabilidade (Reliability): Foca na capacidade do sistema de funcionar corretamente sob condições específicas durante um período determinado. Trata de evitar falhas acidentais.
- Segurança (Security): Foca na proteção do sistema contra acessos não autorizados ou ataques maliciosos.
- Um sistema pode ser confiável (não trava) mas inseguro (vulnerável a hackers), ou seguro (resistente a ataques) mas pouco confiável (apresenta bugs frequentes).
Sentença III - "Seguindo boas práticas de desenvolvimento de software seguro é possível garantir o lançamento de um sistema 100% livre de falhas."
Esta afirmação é falsa. Na ciência da computação e engenharia de software, a perfeição absoluta é inatingível:
- Sistemas complexos possuem inevitavelmente pontos de falha ou vulnerabilidades desconhecidas ("zero-days").
- As boas práticas servem para minimizar riscos e aumentar a robustez, mas nunca para garantir uma ausência total de falhas.
Conclusão
Como apenas a sentença II está correta, a alternativa adequada é a letra B.
| Sentença | Status | Motivo Principal |
|---|
| I | Falsa | Bug $\neq$ Vulnerabilidade (nem sempre se sobrepõem) |
| II | Verdadeira | Confiabilidade (funcionamento) $\neq$ Segurança (proteção) |
| III | Falsa | Garantiar 100% de perfeição é impossível |
Portanto, a resposta correta é a Alternativa B.