Arquitetura, Coesão e Testabilidade de Software
Classificado em Computação
Escrito em em
português com um tamanho de 5,57 KB
Visões de Projetos de Software
Visões de Projetos de SW: 1 - Dados: seleciona as representações de dados / 2 - Arquitetural: modela a estrutura completa do software, define qual arquitetura utilizar / 3 - Procedimental: finaliza os detalhes do processamento de cada módulo / 4 - Interfaces: especifica os layouts e classifica os tipos de usuários.
Tipos de arquitetura
Tipos de arquitetura: Centralizada / Parcialmente centralizada / Cliente-Servidor / Distribuída.
Tipos de usuários na definição de interface
Tipos de usuários na definição de interface: Principiante / Treinados e frequentes / Treinados e esporádicos.
Coesão (pior para melhor)
Coesão (pior para melhor):
- Coincidente: partes de um componente não estão relacionadas entre si.
- Lógica: diversas funções ou elementos de dados relacionados são colocados no mesmo componente.
- Temporal: um componente é utilizado para iniciar o software, realizando diversas funções em sequência; elas estão relacionadas apenas pela sincronização.
- Procedural: as funções são agrupadas em um componente apenas para assegurar uma ordem de execução.
- De comunicação: funções são associadas porque utilizam os mesmos dados.
- Sequencial: a saída de uma parte de um componente é a entrada para a próxima parte.
- Funcional: os elementos de processamento são essenciais para o desempenho de uma única função e estão contidos no mesmo componente.
O baixo acoplamento entre módulos resulta em menor propensão a efeitos de propagação.
O software final está em um nível aceitável de qualidade quando: baixo acoplamento e alta coesão.
Estilos de projeto
Estilos de projetos: Pipes and Filters (evolução) / Chamada Implícita / Camadas (reuso) / Repositório.
Arquitetura multicamadas
Multicamadas divide-se em três camadas lógicas. São elas: Apresentação, Negócio e Acesso a Dados.
Níveis de acoplamento
Níveis de acoplamento: de dados, por identificação, por controle, comum, por conteúdo.
Acoplamento (melhor para pior)
Acoplamento (melhor para pior):
- Por conteúdo: o componente modificado é totalmente dependente daquele que o modifica.
- Comum: quando há modificação nos dados (em um mesmo repositório) comuns a vários componentes.
- Por controle: quando um componente fornece parâmetros para controlar a atividade de outro componente.
- Por identificação: quando uma estrutura de dados é utilizada para fornecer informações de um componente para outro e a própria estrutura de dados é fornecida.
- De dados: quando apenas os dados são fornecidos.
Um dos métodos de medir a qualidade de um projeto é o acoplamento, que representa o grau de interdependência entre dois módulos. Os módulos são acoplados por DADOS quando se comunicam por parâmetros únicos. No caso de um módulo passar para outro um grupo de dados que altere a lógica interna, teremos o acoplamento de CONTROLE. Quando um módulo desvia a sequência de instruções ou altera o comando de outro módulo, consideramos que houve o acoplamento de CONTEÚDO.
MVC
MVC: Modelo: encapsula estado da aplicação; responde a consultas de estado; expõe funcionalidade da aplicação; notifica a Visão sobre alterações.
UML
UML: Padrão da indústria para modelagem de sistemas orientados a objeto.
Testabilidade
Testabilidade: facilidade com que um software pode ser testado.
- Operabilidade: quanto mais operável, mais pode ser testado.
- Observabilidade: o que você vê é o que você testa.
- Controlabilidade: quanto mais você pode controlar o software, mais os testes podem ser automatizados.
- Decomponibilidade: controlar o escopo do teste permite isolar problemas mais rapidamente e realizar testes de forma mais racional.
- Simplicidade: quanto mais fácil testar, mais rapidamente se testa.
- Estabilidade: quanto menos mudanças, menos testes.
- Compreensibilidade: quanto mais informações, mais racional é o teste.
Teste caixa branca
Teste Caixa Branca (a meta é assegurar que as declarações e as condições foram executadas pelo menos uma vez)
- Teste mais próximo de detalhes procedurais.
- Caminhos lógicos e colaboração entre componentes são testados.
Possíveis: Teste de Caminho Básico e Teste de Estrutura de Controle.
Teste caixa preta
Teste Caixa Preta
- Testes conduzidos na interface do software.
- Examina aspectos funcionais do software, sem a preocupação com a estrutura lógica interna.