Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion capitulos/QUALIDADE_DE_SOFTWARE.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,19 @@ e mensurar os aspectos de qualidade, sendo o modelo de qualidade propriamente.
4. **Liberdade de risco:** O software, ao ser usado, oferece riscos à integridade do usuário?
5. **Cobertura de contexto:** O software funciona sob diferentes condições de uso?


<img alt="escavadeira" src="../imagens/escavadeira.webp" width="400px">

### Liberdade de risco

Ao desenvolver um software, para qualquer área de atuação que seja, é importante determinar os riscos que a utilização desse software pode oferecer ao usuário. Softwares com possibilidade de aquisição de itens pagos, como sites de compra e venda, podem oferecer riscos de golpes aos compradores e vendedores, por exemplo. Portanto, durante o desenvolvimento de um software com esse recurso, é necessário pensar em formas de garantir que o comprador vai receber seu produto e o vendedor vai receber seu dinheiro. Porém, além de pensar nos riscos ao usuário, deve-se pensar nos riscos durante o desenvolvimento, como a possibilidade de bugs, invasões ao ambiente de desenvolvimento e o processo de implementação. Durante o desenvolvimento, os seguintes tópicos devem ser pensados cuidadosamente:

1. **Ambiente de desenvolvimento seguro:** o controle e integridade do processo de desenvolvimento deve ficar restrito ao time de desenvolvedores, sem influência externa capaz de executar alguma mudança inesperada no ambiente.
2. **Gestão de código fonte:** contar com uma ferramente de gerenciamento garante maior integridade e organização do código fonte, evitando erros quanto à versão colocada em produção.
3. **Testes e validação:** são etapas necessárias para verificar o comportamento e funcionamento de trechos do código antes da implementação final.
4. **Gestão e correção de bugs:** a documentação e correção dos possíveis bugs é imprescindível para evitar ocorrências semelhantes no futuro.
5. **Integração contínua:** processo que entrega mais qualidade ao software, por automatizar verificações e gerar novos releases.
6. **Documentação do software:** se feita de maneira clara, objetiva e bem estruturada, é uma prática que traz mais qualidade ao processo de desenvolvimento. Isso facilita a ampliação e a melhoria futura.

## Qualidade do Produto

Novamente, é subdividida em oito categorias, definidas pela ISO 25010:
Expand All @@ -45,6 +55,19 @@ Novamente, é subdividida em oito categorias, definidas pela ISO 25010:

<img alt="relógio de luxo" src="../imagens/patek_philippe.png" width="400px">

### Portabilidade

A portabilidade de um software se refere a capacidade do mesmo de operar normalmente em outros dispositivos ou softwares. Para medir a portabilidade de um software, deve-se analisar os seguintes aspectos:

1. **Adaptabilidade:** Avalia a capacidade de software de ser adaptado a diferentes plataformas (hardwares ou softwares) sem grandes alterações. Exemplo: Quais alterações são necessárias para que o software funcione corretamente no Windows, MacOS e Android.
2. **Facilidade de instalação:** Mede a simplicidade e a flexibilidade do processo de instalar e desinstalar o software. Exemplo: Quão fácil é a instalação e desinstalação do software em diferentes dispositivos e sistemas.
3. **Capacidade de substituição:** Determina o quão fácil é substituir o software por outro que desempenhe a mesma função. Exemplo: Microsoft Office e LibreOffice realizam as mesmas funções, porém o Microsoft Office se destaca por ser mais completo, possuir integração com outros serviços da empresa, melhor compatibilidade com arquivos de diversos tipos, ser de uma marca muito conhecida, entre outros.
4. **Coexistência:** Refere-se a capacidade do software de compartilhar recursos do sistema sem conflitos com outros softwares. Exemplo: O software deve conseguir funcionar em conjunto com outros softwares do sistema sem causar conflitos, bugs ou falhas no sistema, lentidão ou sobrecarga de uso dos recursos do hardware.

### Como melhorar a portabilidade de um software?

Para melhorar a portabilidade de um software e permitir seu funcionamento em outros hardwares e softwares, é uma boa estratégia criar o software com padrões amplamente aceitos e com suporte em diversas plataformas. A linguagem Java, por exemplo, permite a portabilidade entre sistemas operacionais através do sistema Java Virtual Machines, facilitando a portabilidade. Além disso, reduzir dependências diretas com a plataforma, onde o sistema está sendo desenvolvido, como através de camadas de abstração que desacoplam o código das especificidades do sistema operacional. Por fim, é muito importante realizar testes do software em diferentes plataformas durante o processo de desenvolvimento, para identificar problemas de portabilidade desde o início.

## Como mensurar a qualidade?

A maneira de mensurar qualidade depende do que a equipe de desenvolvimento definir junto com o cliente. Não existem critérios rígidos, e
Expand Down