projeto de software professora: aline vasconcelos cefet campos [email protected]

33
Projeto de Software Professora: Aline Vasconcelos CEFET Campos [email protected]

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

Projeto de Software

Professora: Aline Vasconcelos

CEFET Campos

[email protected]

Page 2: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

4

Exemplo de Arquitetura: Camadas

GUI

Negócio

Persistência

Exemplo: Arquitetura em 3 Camadas para Sistemasde Informação

Page 5: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

6

Princípios de Projeto

Modularização

Separação de Objetivos

Ocultação de Informação

Encapsulamento

Generalização

Abstração

Page 7: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

31

Estratégias de Teste

Teste de Unidade

Teste de Integração

Teste de Validação

Teste de Sistema

Page 32: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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: Projeto de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

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.