Acoplamento-Coesao
-
Upload
matheus-m-cruz -
Category
Documents
-
view
248 -
download
1
Transcript of Acoplamento-Coesao
![Page 2: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/2.jpg)
2
Projeto de Software
Primeira das três atividades do núcleo técnico do desenvolvimento de software (projeto, codificação e testes).
Enquanto na Análise trabalhamos no domínio do problema, no Projeto trabalhamos no domínio da solução, construindo uma solução computacional para o problema.
![Page 3: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/3.jpg)
3
Atividades de Projeto
Projeto Arquitetural: define a estrutura organizacional do programa (módulos) e os relacionamentos entre seus elementos maiores.
Projeto de Dados: transforma o modelo de informações do domínio em estruturas de dados (ex: Projeto de Banco de Dados).
![Page 4: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/4.jpg)
4
Exemplo de Arquitetura: Camadas
GUI
Negócio
Persistência
Exemplo: Arquitetura em 3 Camadas para Sistemasde Informação
![Page 5: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/5.jpg)
5
Atividades de Projeto:
Projeto de Interface: descreve as interfaces externas do software e a interação entre os seus módulos. Descreve também a interação do software com outros sistemas.
Projeto Procedimental: define os procedimentos do software (ou programas) que devem atender aos requisitos definidos durante a análise.
![Page 6: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/6.jpg)
6
Princípios de Projeto
Modularização
Separação de Objetivos
Ocultação de Informação
Encapsulamento
Generalização
Abstração
![Page 7: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/7.jpg)
7
Modularização O sistema deve ser dividido em módulos (ou componentes) com uma
funcionalidade claramente definida.
Um módulo é mais que uma rotina.
Módulos podem conter:– Coleções de Rotinas– Coleções de dados
![Page 8: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/8.jpg)
8
Modularização Princípios:
– Independência Funcional:
– Alcançada a partir do desenvolvimento de módulos com funcionalidade única e baixa interação com outros módulos.
– O objetivo é construir módulos que tratem sub-funções específicas do software e com uma interface simples com outros módulos.
![Page 9: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/9.jpg)
9
Modularização – Coesão e Acoplamento
Coesão e Acoplamento são princípios originalmente introduzidos como parte do projeto estruturado.
Acoplamento foca em aspectos de relacionamentos entre módulos, enquanto Coesão enfatiza a consistência interna de um módulo.
![Page 10: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/10.jpg)
10
Acoplamento Acoplamento é a medida da força de associação entre
módulos.
Um alto acoplamento dificulta manutenções no sistema. Módulos com alto acoplamento são mais difíceis de entender e manter.
Alto Acoplamento leva à propagação de efeitos colaterais quando uma mudança é realizada no sistema.
![Page 11: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/11.jpg)
11
Tipos de Acoplamento (em ordem crescente) – 1/2
Acoplamento de Dados: módulos que se comunicam por parâmetros.
Acoplamento de Imagem: dois módulos são ligados por imagem se eles se referem à mesma estrutura de dados.
Acoplamento de Controle: um módulo passa para o outro um grupo de dados (flags) destinado a controlar a lógica interna do outro.
![Page 12: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/12.jpg)
12
Tipos de Acoplamento (em ordem crescente) – 2/2
Acoplamento Comum: dois módulos possuem acoplamento comum se eles se referem à mesma área de dados.
Acoplamento de Conteúdo: dois módulos apresentam acoplamento de conteúdo se um faz referência ao interior do outro: por exemplo, se um módulo desvia a seqüência de instruções para dentro do outro.
![Page 13: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/13.jpg)
13
Tipos de Coesão (em ordem decrescente) – 1/3 Coesão Funcional: um módulo com coesão funcional contém
elementos que contribuem para a execução de uma e apenas uma tarefa relacionada ao problema.
Coesão Seqüencial: um módulo seqüencialmente coeso é aquele cujos elementos estão envolvidos em atividades tais que os dados de saída de uma atividade servem como dados de entrada para a próxima.
Coesão Comunicacional: um módulo com coesão comunicacional é aquele cujos elementos contribuem para atividades que usem a mesma entrada ou a mesma saída.
![Page 14: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/14.jpg)
14
Tipos de Coesão (em ordem decrescente) – 2/3 Coesão Procedural: módulo cujos elementos estão envolvidos
em atividades diferentes e possivelmente não relacionadas, mas nas quais o controle flui de uma atividade para a outra.
Coesão Temporal: módulo cujos elementos estão envolvidos em atividades que estão relacionadas no tempo.
Coesão Lógica: módulo cujos elementos contribuem para atividades da mesma categoria geral, onde a atividade ou as atividades a serem executadas são selecionadas fora do módulo.
![Page 15: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/15.jpg)
15
Tipos de Coesão (em ordem decrescente) – 3/3
Coesão Coincidental: um módulo coincidentemente coeso é aquele cujos elementos contribuem para atividadessem relação significativa entre si.
Observação: o grau de similaridade de métodos pode ser visto como o maior aspecto de coesividade dos módulos. Se um módulo possui diferentes rotinas que operam sobre um mesmo conjunto de variáveis locais, o módulo é coeso.
![Page 16: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/16.jpg)
16
Separação de Objetivos (Separation of Concerns)
Permite a análise de diferentes aspectos de um problema, de modo a que os analistas possam se concentrar em um aspecto de cada vez.
Princípio fundamental para o entendimento de sistemas de software complexos.
Responsabilidades diferentes ou não-relacionadas devem ser separadas em um sistema de software, por exemplo, atribuindo-as a diferentes componentes.
Componentes que colaboram para a solução de uma tarefa específica devem ser separados daqueles envolvidos em outras tarefas.
![Page 17: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/17.jpg)
17
Ocultação de Informação (Information Hiding)
Ocultação dos detalhes internos da implementação de um módulo (ou componente) dos seus clientes.
A fim de evitar acoplamento entre componentes, o cliente deve conhecer somente a Interface de seus fornecedores, ou seja, a assinatura de suas operações.
Ocultação da informação é atingida através do princípio de encapsulamento e do princípio de separação de Interface e Implementação.
![Page 18: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/18.jpg)
18
Encapsulamento (Orientação a Objetos) Os atributos de um objeto somente devem ser acessados por métodos do
próprio objeto.
Uma classe encapsula atributos e comportamentos, ocultando os detalhes de implementação dos objetos. (ocultação de informação)
Dados
CódigoMétodos
Atributos
![Page 19: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/19.jpg)
19
Generalização (Orientação a Objetos)
Tipos mais gerais descrevem abstrações mais gerais com propriedades (atributos) e comportamentos (métodos) comuns.
Subtipos mais específicos vão herdar as características mais gerais definidas, acrescentando características específicas ou re-escrevendo comportamentos.
![Page 20: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/20.jpg)
Generalização x Herança
mostrarIdade()verificarPrimNome()
Pessoa
Aluno
nome: stringdtNascimento: date
matrícula: integernumCarteira: integer
matricular()
Professorsalário: realformação: string
reajustarSalário()
![Page 21: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/21.jpg)
21
Atividades da Fase de Projeto
Definição de controles (utilitários do sistema): controle de acesso de usuários, rotinas de backup, procedimentos de segurança etc.
![Page 22: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/22.jpg)
22
Testes de Software
Os custos associados às falhas de software estimulam a realização de uma atividade de teste cuidadosa e bem planejada.
Não é incomum que uma organização gaste 40% do esforço de projeto total em teste.
![Page 23: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/23.jpg)
23
Objetivos da Atividade de Teste
1. A atividade de teste é o processo de executar um programa com a intenção de descobrir um erro.
2. Um bom caso de teste é aquele que tem uma elevada probabilidade de revelar um erro ainda não descoberto.
3. Um teste bem-sucedido é aquele que revela um erro ainda não descoberto.
![Page 24: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/24.jpg)
24
Plano de Teste
Um Plano e Procedimento de Teste deve ser estabelecido, definindo-se ferramentas de teste (caso exista alguma adequada) e casos de teste e seus resultados esperados.
Teste são realizados e todos os resultados são avaliados, isto é, os resultados devem ser comparados com os esperados.
![Page 25: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/25.jpg)
25
Técnicas de Teste de Software Teste de Caixa Preta (black box): testes
realizados nas interfaces do software; validam-se as saídas produzidas contra os dados de entrada;
Teste de Caixa Branca (white box): minucioso exame de detalhes procedimentais e estrutura lógica dos programas; deve garantir que o funcionamento interno do software esteja correto.
![Page 26: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/26.jpg)
26
Teste de Caixa Branca
Casos de teste a partir do uso da técnica de Caixa Branca, garantem que:
1. Caminhos alternativos dentro de um módulo tenham sido executados pelo menos uma vez;
2. Decisões lógicas para valores falsos e verdadeiros foram testadas;
3. Loops foram testados com garantia de terminalidade;
4. Estruturas de dados internas estão consistentes.
![Page 27: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/27.jpg)
27
Técnicas de Teste de Caixa Branca
Teste de Condição: método que concentra-se em testar cada condição do programa; para uma condição composta, todos os ramos de possibilidade devem ser testados.
Teste de Fluxo de Dados: caminho de teste de programa baseado nas localizações das definições e usos de variáveis.
Teste de Laços: teste dos loops do programa.
![Page 28: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/28.jpg)
28
Teste de Caixa Branca
Deve ser executado para um número limitado de caminhos lógicos importantes.
Deve ser executado em combinação com os testes de Caixa Preta.
![Page 29: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/29.jpg)
29
Teste de Caixa Preta
Os métodos de teste de Caixa Preta concentram-se nos requisitos funcionais do software.
Procura descobrir erros nas seguintes categorias:
1. Funções incorretas ou ausentes. 2. Erros de Interface. 3. Erros de organização ou acesso a dados. 4. Problemas de desempenho. 5. Erro de inicialização ou término de programas.
![Page 30: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/30.jpg)
30
Técnicas de Teste de Software
Os testes de caixa branca e caixa preta podem ser combinados.
Atividade de Teste envolve: Verificação e Validação do produto.
=> Verificação: “Estamos construindo certo o produto?”
=> Validação: “Estamos construindo o produto certo?”
![Page 31: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/31.jpg)
31
Estratégias de Teste
Teste de Unidade
Teste de Integração
Teste de Validação
Teste de Sistema
![Page 32: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/32.jpg)
32
Estratégias de Teste Teste de Unidade: teste a nível de módulo,
voltado para o que está implementado no código fonte (técnica de Caixa Branca).
Teste de Integração: concentra-se no projeto e na construção da arquitetura de software (ambas as técnicas).
Teste de Validação: os requisitos estabelecidos na análise são validados em relação ao software (técnica de Caixa Preta).
![Page 33: Acoplamento-Coesao](https://reader033.fdocuments.net/reader033/viewer/2022060113/5571f93e49795991698f21e1/html5/thumbnails/33.jpg)
33
Estratégias de Teste Teste de Sistema: o software, uma vez
validado, deve ser combinado com outros elementos de sistema (por exemplo, hardware, pessoas, banco de dados). O teste de sistema verifica se todos os elementos combinam-se adequadamente, e se a função/desempenho global do sistema é atingida.