Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Professora: Aline Vasconcelos
Projeto de Software Professora: Aline Vasconcelos CEFET Campos
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.
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).
4
Exemplo de Arquitetura: Camadas
Arquitetura em 3 Camadas para Sistemas de Informação
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.
6
Princípios de Projeto Modularização Separação de Objetivos
Ocultação de Informação Encapsulamento Generalização Abstração
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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) Código Métodos Dados Atributos
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.
20
Generalização x Herança
Pessoa nome: string dtNascimento: date mostrarIdade() verificarPrimNome() Aluno Professor matrícula: integer numCarteira: integer salário: real formação: string reajustarSalário() matricular()
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.
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.
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.
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.
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.
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.
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.
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.
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.
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?”
31
Estratégias de Teste Teste de Unidade Teste de Integração
Teste de Validação Teste de Sistema
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).
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.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.