Aula 18 Métricas e Anomalias de Modularidade

Tamanho: px
Começar a partir da página:

Download "Aula 18 Métricas e Anomalias de Modularidade"

Transcrição

1 Aula 18 Métricas e Anomalias de Modularidade Marcos Silva LES/DI/PUC-Rio Maio 2010 Hoje... Introdução à Métricas Tipos de Métricas Métricas de Tamanho Métricas de Complexidade Métricas de Acoplamento Métricas de Coesão Ferramentas para contagem de Métricas Introdução a Anomalias 2/32 1

2 Métricas Existem diversas métricas que possamos executar a medição de software. Porém Por que medir? O que medir? Quando medir? 3/32 Métricas Não se pode controlar o que não se pode medir. (Morris A. Cohen) As métricas são necessárias para analisar os níveis de qualidade do design do software. Provê insights valiosos sobre particularidades do software Vêm se tornando populares e bem utilizadas Podem oferecer aumento no diagnóstico de sintomas de problemas Como algumas medições revelam problemas no design? 4/32 2

3 Métricas As métricas de software ajudam a entender o comportamento e funcionamento de processos, produtos e serviços de software. Podem se utilizadas para tomar decisões e determinar: o estabelecimento de padrões metas e critérios de aceitação controlar processo produtos e serviços de software prever valores de atributos aperfeiçoar o processo de desenvolvimento gerenciar contratos de software indicar a qualidade de um produto de software avaliar a produtividade do processo entre outras 5/32 Métricas Existem diversas métricas para diferentes tipos de necessidades Unidade de Tipo de Métrica Nome Medida Descrição Básica Esforço Hora Horas utilizadas por uma pessoa em determinada tarefa Básica Pontos por Função PF Tamanho do software, em Pontos por Função Básica Casos de Uso Caso de Uso Quantidade de casos de uso em um sistema Básica Pontos de Casos de Uso UCP Use Case Points, pontos totais somados dos casos de uso, abrangendo a complexidade Básica Linhas de Código KLOC Kilo Lines of Codes - Linhas de código Produtividade Horas por Ponto por Função Hrs / PF Horas por ponto de função Produtividade Linhas de Código por Hora LOC / Hr Linhas de Código desenvolvidas por hora Bugs encontrado em cada release, em Qualidade Bugs por Release B / R média Qualidade Bugs por Ponto por Função B / PF Bugs por Ponto por Função Bugs entregues por mês pela equipe do Qualidade Bugs por Mês B / Mês projeto Tarefas no prazo dividido por tarefas Pontualidade Índice de Pontualidade % entregues fora do prazo 6/32 3

4 Tipos de Métricas Métricas podem ser utilizadas de forma: Direta Exemplo: tamanho = quantidade de linhas de código Indireta ou Derivada Exemplo: densidade de defeitos = nº de defeitos / tamanho Pedição Predição Exemplo: esforço para desenvolver um software = nº de pontos de função 7/32 Diferentes métricas e contagens nominal Sem ordem, simplesmente com base em nomes (linguagem: 3GL, 4GL) ordinal Ordenada, mas sem comparação quantitativa (capacidade do programador: baixa, média, alta) intervalar Define o valor entre determinados valores definidos (capacidade do programador: entre 55 e 75 pontos de 100) ) racional O software proposto é duas vezes maior que o software desenvolvido até então Absoluta O software possui linhas de código 8/32 4

5 Métricas de Software Métricas de software tem como foco o software funcional e orientado a objetos Possível fazer predição de manutenibilidade e reusabilidade através de atributos de software bem conhecidos: Tamanho Complexidade Acoplamento Coesão Métricas estáticas 9/32 Métricas de Tamanho As métricas de tamanho tratam de diferentes aspectos do tamanho do sistema As métricas de tamanho mais comuns são: Linhas de Código (LOC) Número de Atributos (variáveis) (NOA) Número de Operações (funções) (NOM) 10 /32 5

6 Ex 1: Número de Linhas de Código (LOC) 01 bool searchlist( Comentários e espaços 02 char *cmd, // command string em branco devem ser 03 char **list, // array of strings contabilizados? 04 unsigned n) // max. no. of elements 05 { 06 unsigned i; // search entire list for command string 07 for ( unsigned i=0; i < n; i++ ) // for each element 08 { 09 if ( stricmp( cmd, list[i]) == 0) // matched? 10 { 11 return true; // found match 12 } 13 } } return false; // no match 11 /32 Ex 2: Número de Linhas de Código (LOC) bool searchlist( char *cmd, char **list, unsigned n ) { // search entire list for command string for(unsigned i=0; i < n; i++) if ( stricmp(cmd, list[i]) == 0) return true; return false; } Ex1 - escrito de forma verbosa e possui LOC = 15 Ex2 - escrito de forma concisa e possui LOC = 5 Como existem diferentes formas de observar a métrica são necessárias regras que definam a forma adequada de contar Em tamanho, o estilo de programação influencia na contagem 12 /32 6

7 Métricas de Complexidade Complexidade Ciclomática: é uma das métricas mais amplamente utilizadas em se tratando de métricas estáticas A complexidade ciclomática de um módulo de software é calculada a partir de um gráfico conectado do módulo: Complexidade Ciclomática (CC) = E - N + p, onde: E = o número de arestas do gráfico N = o número de nós do gráfico p = o número de componentes conectados 13 /32 Benefícios da Métrica de Complexidade Estudos mostram uma correlação entre a complexidade Ciclomática de um programa e sua freqüência de erro Uma baixa complexidade Ciclomática contribui para a facilidade de compreensão de um programa Indica que este é acessível a modificações com risco menor que um programa mais complexo A complexidade Ciclomática de um módulo também é um forte indicador de sua facilidade de teste Complexidade Ciclomática Avaliação de Risco Programa simples, sem muito risco Complexo, risco moderado Complexo, Programa de alto risco. maior que 50 Programa quase impossível de ser testado. (altíssimo risco) 14 /32 7

8 Exemplo de medição da complexidade E=8 n=7 p=2 CC=5 if ( a == b ) { if ( a < b) { menor = a ; } else { menor = b ; } } else { menor = \0 ; } Cada nó corresponde a uma bloco sequencial de código Cada aresta corresponde a um caminho criado a partir de uma estrutura de decisão 15 /32 Revisão: Acoplamento O acoplamento é uma medida do volume, da dificuldade de assegurar a corretude e do risco de erro como conseqüência de se estabelecer uma instância de relacionamento (conexão) entre cliente e servidor. Exemplos de relacionamento: no caso de variáveis globais é um acesso a uma dessas variáveis no caso de funções é uma chamada no caso de um módulo é um #include Mar 2009 Alessandro Garcia LES/DI/PUC-Rio 16 /32 8

9 Influência de acoplamento no... O risco de erro e a dificuldade de assegurar corretude está relacionada com o esforço humano para assegurar a corretude será menos difícil quanto mais puder ser verificado pelo compilador ou por alguma ferramenta de verificação será mais difícil quanto mais depender da ação humana Exemplo, na função double * OpMatriz( int dimlinhas, int dimcolunas, int tamlinhas, int tamcolunas, double * pmatriz ) em uma chamada qualquer permutação dos quatro primeiros argumentos é válida do ponto de vista do compilador A manutenibilidade: qualquer mudança na implementação do conector, afeta os módulos clientes A reusabilidade: o módulo cliente precisa depender de mais detalhes do módulo servidor sendo reusado 17 /32 Métricas de acomplamento Sistemas que precisam ter independência entre suas partes! Comum adotar a estratégia de módulos com forte independência de outros módulos e com forte unicidade Ou seja, sistemas com fraco acoplamento entre subsistemas com cada subsistema é fortemente coeso Como minimizar dependências e maximizar o reuso? Atribuir responsabilidades de forma a minimizar o acoplamento 18 /32 9

10 Como medir acoplamento? Como medir acoplamento? Baixo Acoplamento entre Módulos Alto Acoplamento entre Módulos 19 /32 Como medir acoplamento? Algumas métricas para medir acoplamento: Acoplamento entre módulos: mede o quão fortemente os módulos estão dependentes e Acoplamento intra-módulos: mede o quão fortemente estão dependentes suas funções e atributos entre si Nos quais são contabilizados o número de tipos utilizados em variáveis, parâmetros, retornos e etc. Acoplamento entre dados abstratos: mede o número total de tipos referenciados na declaração das variáveis Acoplamento entre funções: mede o número de funções as quais uma outra função é dependente Volume de acoplamento de fuñção: mede o número de tipos existentes numa função (retorno, tipos e parâmetros) 20 /32 10

11 Revisão: Coesão A coesão avalia o inter-relacionamento entre os elementos que constituem uma interface ou um conector quanto mais forte for o inter-relacionamento, melhor será a coesão incidental os elementos estão juntos somente por conveniência ou falta de cuidado do programador lógica os elementos possuem alguma funcionalidade correlata mas não existe uma definição única e bem delimitada para o conjunto temporal os elementos interdependem somente pelo fato de serem manipulados em um mesmo intervalo de tempo procedural os elementos interdependem pelo fato de serem ativados um após ao outro funcional os elementos definem uma única função que implementa exatamente um conceito abstração de dados os elementos definem uma único tipo abstrato de dados Na verdade, é um caso particular de coesão funcional Mar 2009 Alessandro Garcia LES/DI/PUC-Rio 21 /32 Métricas de coesão Cohesão significa dizer que um certo módulo possui elementos (funções, variáveis, etc) relacionados a ele. Falta de coesão significa que um módulo (ou mesmo um subconjunto do mesmo) está fazendo coisas além de sua responsabilidade. De forma geral, a falta de coesão não impacta na funcionalidade do módulo (nem do sistema) Entretanto, o sistema acabará com problemas de: legibilidade, entendimento e gerência do código dado que as funcionalidades estão espalhadas e acabaram em lugares (módulos) errados 22 /32 11

12 Falta de Coesão Falta de Coesão entre métodos (funções) (LCOM) Possui três formatos: LCOM 1: com base no acesso as variáveis LCOM 2: versão melhorada de LCOM1 e LCOM 3: melhoria do LCOM1 e LCOM2 proposta por Henderson-Sellers. NOTA: As métricas de coesão são muito mais utilizadas em sistemas orientados a objetos (classes, métodos e atributos) 23 /32 Falta de Coesão: Forma 1 LCOM 1: Tomamos então duas variáveis, P e Q Escolhe-se pares de funções criando um conjunto de variáveis acessadas para cada uma delas. Caso os conjuntos sejam disjuntos incrementa-se P. Caso contrário, para cada variável compartilhada incrementase Q RESULTADO = (P > Q)? (P - Q) : 0 Um valor baixo indica alta coesão entre as funções. Também pode indicar que o módulo possui bom nível reusabilidade e design 24 /32 12

13 Falta de Coesão: Forma 2 LCOM 2: Definidos m: número de métodos (funções) de uma classe (módulo) a: número de atributos (variáveis) de uma classe ma: número de métodos (funções) que acessam um dado atributo (variável) A. soma(ma): soma de todos os valores para ma no módulo. RESULTADO = 1- soma(ma)/(m*a) Caso o número de funções ou variáveis for 0, então: RESULTADO = 0 25 /32 Falta de Coesão: Forma 3 LCOM 3 é definida da seguinte forma: RESULTADO = (m - sum(ma)/a) ) / (m-1) m, a, ma soma(ma) definidas como em LCOM2 LCOM 3 varia entre 0 e 2 LCOM3 > 1 indica falta de coesão e é considerado um problema. Nesse caso é melhor que a classe seja particionada em duas ou mais classes. Se existe apenas um método na classe RESULTADO = 0. O mesmo ocorre se não existirem variáveis na classe 26 /32 13

14 Ferramentas A grande maioria das ferramentas para medição de software funcional utilizam-se de análise estática Resource Standard Metrics Versão 7.75 (bem estável) Possui versão free Website: msquaredtechnologies.com/m2rsm Diversas esasferramentas e podem ser encontradas em: spinroot.com/static/ 27 /32 Sintomas de Problemas Assim como um médico pode usar os números extraídos de exames para diagnosticar doenças e prescrever tratamentos números de plaquetas ph taxas de glicose e colesterol e outras centenas de índices possíveis Desenvolvedores também podem detectar sintomas de problemas de design por meio da análise numérica de informações extraídas do código-fonte. 28 /32 14

15 Problemas de Design Existem diversos tipos de problemas no design Veremos Anomalias de Modularidade Code Smells Geralmente levam aos padrões de refatoração Podemos encontrar pontos de refatoração à partir de métricas coletadas no código-fonte 29 /32 Aula 16 Métricas e Anomalias de Modularidade (continua...) Marcos Silva Marcos Silva LES/DI/PUC-Rio Maio

Medidas de Esforço de Desenvolvimento de Software

Medidas de Esforço de Desenvolvimento de Software Medidas de Esforço de Desenvolvimento de Software Unidade 1 Fundamentos de Métricas e Medidas Luiz Leão luizleao@gmail.com http://www.luizleao.com Unidade 1 Fundamentos de métricas e medidas Introdução

Leia mais

Disciplina Medições e Qualidade de Software. Tópicos da Disciplina. Método de Avaliação. Qualidade de Software.

Disciplina Medições e Qualidade de Software. Tópicos da Disciplina. Método de Avaliação. Qualidade de Software. Engenharia de Software Aula 19 Disciplina 2012-2 Medições e Qualidade de Software Medição e Qualidade de Software Terças e quintas: 9:25 as 11:05 Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com

Leia mais

Projeto de Linguagem. Linguagens de Programação

Projeto de Linguagem. Linguagens de Programação Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 16 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar, discutir o conceito de métricas de software. DESENVOLVIMENTO Métricas

Leia mais

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Teste de Software Engenharia de Software 2o. Semestre de 2006 Slide

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Métricas de Software

Métricas de Software Métricas de Software Plácido Antônio de Souza Neto 1 1 Gerência Educacional de Tecnologia da Informação Centro Federal de Educação Tecnologia do Rio Grande do Norte 2006.1 - Planejamento e Gerência de

Leia mais

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 OBJETIVOS Compreender o processo de gerenciamento de qualidade e as principais atividades do processo de garantia, planejamento e controle

Leia mais

Engenharia de Software

Engenharia de Software Introdução Engenharia de Software O principal objetivo da Engenharia de Software (ES) é ajudar a produzir software de qualidade; QUALIDADE DE SOFTWARE Empresas que desenvolvem software de qualidade são

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 12 http://www.ic.uff.br/~bianca/engsoft2/ Aula 12-31/05/2006 1 Ementa Processos de desenvolvimento de software (Caps. 2, 3 e 4 do Pressman) Estratégias e técnicas de teste

Leia mais

Aula 04 Conceitos e Princípios de Modularidade 3 Alessandro Garcia

Aula 04 Conceitos e Princípios de Modularidade 3 Alessandro Garcia Aula 04 Conceitos e Princípios de Modularidade 3 Alessandro Garcia LES/DI/PUC-Rio Agosto 2017 Especificação Objetivo dessa aula Estudar características da interface de módulos Estudar os princípios de

Leia mais

Nomes, vinculações e escopos

Nomes, vinculações e escopos Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF022 Tópicos Avançados. Medição de Sofware

Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF022 Tópicos Avançados. Medição de Sofware Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF022 Tópicos Avançados Medição de Sofware Prof. Dr. Renato L. Novais renato@ifba.edu.br Agenda Medição de software Por que medir? Exemplos

Leia mais

Aula 20 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016

Aula 20 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016 Aula 20 Testes 3 Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016 Slides adaptados de: Staa, A.v. Notas de Aula em Programacao Modular; 2008. Teste de Caixa Branca O que

Leia mais

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos Profa. Juliana Santiago Teixeira Disciplina: Programação Orientada a Objetos I Tema da aula Introdução ao paradigma de programação: Orientado a Objetos Paradigma Paradigma é a filosofia adotada na construção

Leia mais

Métricas de processo e projeto de software

Métricas de processo e projeto de software Métricas de processo e projeto de software Métrica é um conjunto de medidas. Medição existe em qualquer processo de construção de qualquer coisa. A medição é realizada não apenas na Engenharia de Software.

Leia mais

3 Medição de Software

3 Medição de Software 3 Medição de Software À medida que a engenharia de software amadurece, a medição de software passa a desempenhar um papel cada vez mais importante no entendimento e controle das práticas e produtos do

Leia mais

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos Linguagem de Programação II Programação Orientada a Objetos Orientação a Objetos Prof. Alessandro Borges 2 Tópicos Introdução à Programação Orientada a Objetos Conceitos Objetivos Classes e Objetos Atributos

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Design Principles Representando SW em UML OO em C Pattens úteis para embedded Rodrigo M A Almeida Design Principles Design Principles são guias para decompor as funcionalidades e

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO

ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO Adalberto Cajueiro (adalberto@computacao.ufcg.edu.br) Departamento de Sistemas e Computação Universidade Federal de Campina Grande 1

Leia mais

CONCEITOS BÁSICOS E MODELO DE PROJETO

CONCEITOS BÁSICOS E MODELO DE PROJETO CONCEITOS BÁSICOS E MODELO DE PROJETO Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Na aula passada... Abstração Arquitetura Padrões de Projeto Separação por interesses (por afinidades) Modularidade

Leia mais

Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Departamento de Computação Medições e Métricas de Software

Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Departamento de Computação Medições e Métricas de Software Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Departamento de Computação Medições e Métricas de Software Aluno: Igor Muzetti Pereira Professor: Tiago Garcia de Senna Carneiro

Leia mais

Medidas de Esforço de Desenvolvimento de Software

Medidas de Esforço de Desenvolvimento de Software Medidas de Esforço de Desenvolvimento de Software Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 O que você entende por Métricas de software? Questão 1 Resposta O que você entende por Métricas

Leia mais

Métricas. Métricas. [Engenharia de Software II] Adriano J. Holanda 11/9/2017

Métricas. Métricas. [Engenharia de Software II] Adriano J. Holanda 11/9/2017 Métricas [Engenharia de Software II] Adriano J. Holanda 11/9/2017 Algumas Métricas Medidas que podem ser usadas para monitoramento e controle do processo de desenvolvimento. Número de linhas de código

Leia mais

PCS3413 Engenharia de Software e Banco de Dados

PCS3413 Engenharia de Software e Banco de Dados PCS3413 Engenharia de Software e Banco de Dados Aula 23 Escola Politécnica da Universidade de São Paulo 1 Acoplamento! Indica dependência entre classes.! Deve ser o menor possível.! Direcionar associações

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE Teste de Software Verificação e validação Testes de desenvolvimento Testes de release Testes de usuário Desenvolvimento dirigido a testes Kele Teixeira Belloze kelebelloze@gmail.com

Leia mais

Modelo do Mundo Real. Abstração. Interpretação

Modelo do Mundo Real. Abstração. Interpretação Modelo do Mundo Real Mundo Real Abstração Interpretação Sistema de Software Modelo Algoritmo Abstração: O modelo precisa capturar apenas as características do mundo real que são importantes para o sistema

Leia mais

TESTES DE SOFTWARE. Profa. Maria Auxiliadora

TESTES DE SOFTWARE. Profa. Maria Auxiliadora TESTES DE SOFTWARE 1 Teste de software É uma atividade crítica na garantia de qualidade de software; Quatro dimensões: Estado do teste ( o momento ); Técnica do teste ( como vou testar ); Metas do testes

Leia mais

Medições e métricas de software

Medições e métricas de software Medições e métricas de software A medição de software está preocupada com a derivação de um valor numérico para um atributo de um produto de software ou processo. - O que permite comparações objetivas

Leia mais

4 O Framework de Avaliação

4 O Framework de Avaliação 4 O Framework de Avaliação O propósito central do uso de aspectos é melhorar a separação de concerns. Entretanto a orientação a aspectos pode afetar também outros atributos de software, tais como acoplamento,

Leia mais

Análise e Projeto de Software

Análise e Projeto de Software Análise e Projeto de Software Proj. Desenvolvimento de Software Prof. Cleverton Hentz cleverton.hentz@ifrn.edu.br 8 de junho de 2017 Material Apresentado Sumário de Aula 1 Introdução 2 Estruturação do

Leia mais

Engenharia de Software

Engenharia de Software Prof. M.Sc. Ronaldo C. de Oliveira ronaldooliveira@facom.ufu.br FACOM - 2011 UML Linguagem Unificada de Modelagem Projeto de Software Introdução O que é projeto em software? O termo projeto é um tanto

Leia mais

Falta Erro Falha. Motivação. Teste de Software. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro 6/6/11

Falta Erro Falha. Motivação. Teste de Software. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro 6/6/11 Motivação Teste de Software Ocorrência de falhas humanas no processo de desenvolvimento de software é considerável Processo de testes é indispensável na garantia de qualidade de software Custos associados

Leia mais

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo Teste de Software Técnica de Teste Estrutural Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Casos de Teste e Cenários de Teste Técnicas de Teste Técnica de Teste Estrutural 2 Casos

Leia mais

DCC004 - Algoritmos e Estruturas de Dados II

DCC004 - Algoritmos e Estruturas de Dados II Conceito de especificação de software Renato Martins Email: renato.martins@dcc.ufmg.br https://www.dcc.ufmg.br/~renato.martins/courses/dcc004 Material adaptado de PDS2 - Douglas Macharet e Flávio Figueiredo

Leia mais

Estimativas e Métricas Engenharia de Software

Estimativas e Métricas Engenharia de Software Tema da Aula - I Prof. Cristiano R R Portella portella@widesoft.com.br 9 Nas Engenharias, a atividade de medir é exercida com prioridade (peso, potência, tensão, sinal/ruído, tempo, espessura etc). O que

Leia mais

Gerência e Planejamento de Projeto. SCE Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestre de 2002

Gerência e Planejamento de Projeto. SCE Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestre de 2002 Gerência e Planejamento de Projeto SCE 186 - Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestre de 2002 Conteúdo: Parte 1: Gerenciamento & Qualidade Plano de Projeto

Leia mais

Estruturas de controle Parte 1

Estruturas de controle Parte 1 1. Objetivos Estruturas de controle Parte 1 Nas lições anteriores, foram mostrados programas seqüenciais, onde as instruções foram executadas uma após a outra de forma fixa. Nesta lição, discutiremos estruturas

Leia mais

Ferramenta para cálculo de métricas em softwares orientados a objetos codificados em Object Pascal

Ferramenta para cálculo de métricas em softwares orientados a objetos codificados em Object Pascal Ferramenta para cálculo de métricas em softwares orientados a objetos codificados em Object Pascal Patrícia Regina Ramos da Silva Seibt (FURB) patrícia@benner.com.br Marcel Hugo (FURB) marcel@furb.br Everaldo

Leia mais

INSTRUÇÕES DE REPETIÇÃO

INSTRUÇÕES DE REPETIÇÃO Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 6 INSTRUÇÕES DE REPETIÇÃO As instruções de repetição permitem fazer com que a execução de uma

Leia mais

Arquitetura de software

Arquitetura de software Arquitetura de software Problema: vamos implementar um clone do compraentrega.com.br Mantém preços atualizados Recebe encomendas e pagamento Recomenda itens a usuários Por onde começamos? Arquitetura =

Leia mais

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 OBJETIVO Compreender uma série de técnicas de testes, que são utilizadas para descobrir defeitos em programas Conhecer as diretrizes que

Leia mais

Capítulo 24. Gerenciamento de Qualidade Pearson Prentice Hall. Todos os direitos reservados. slide 1

Capítulo 24. Gerenciamento de Qualidade Pearson Prentice Hall. Todos os direitos reservados. slide 1 Capítulo 24 Gerenciamento de Qualidade slide 1 Tópicos abordados Qualidade de software Padrões de software Revisões e inspeções Medições e métricas de software slide 2 Gerenciamento de qualidade de software

Leia mais

Arquitetura de Software visão emergente

Arquitetura de Software visão emergente Arquitetura de Software visão emergente Objetivos Visão abstrata do software através de componentes e interfaces Independência de plataforma Independência de paradigma de programação Técnicas Estilos Arquiteturais

Leia mais

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural

Leia mais

Visões Arquiteturais. Visões Arquiteturais

Visões Arquiteturais. Visões Arquiteturais Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE Qualidade de Software Qualidade do produto e do processo Padrões de software Revisões Medições e métricas de software Kele Teixeira Belloze kelebelloze@gmail.com CONCEITO DE QUALIDADE

Leia mais

Estilos Arquiteturais

Estilos Arquiteturais Estilos Arquiteturais Estilos Arquiteturais A arquitetura de um sistema pode aderir a um ou mais estilos arquiteturais Um estilo define os tipos de elementos que podem aparecer em uma arquitetura e as

Leia mais

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001 PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO Projeto de Programas PPR0001 QUALIDADE DO PROJETO 2 3 Qualidade do Projeto de Software Modularidade: gerar particionamento em elementos que executam funções

Leia mais

Testes de correção (de defeitos)

Testes de correção (de defeitos) Testes de correção (de defeitos) Revelam a presença de erros, mas NÃO a ausência Um teste bem sucedido é aquele que descobre o maior número de erros existentes. Deve ser utilizado em conjunto com técnicas

Leia mais

Os princípios do desenho orientado a objetos

Os princípios do desenho orientado a objetos Os princípios do desenho orientado a objetos Os princípios do desenho orientado a objetos Encapsulamento e congeneridade Domínios, grau de dependência e coesão Os perigos da herança e do polimorfismo Encapsulamento

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-5 Estruturas de Decisão e Controle. Arrays em Java Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de

Leia mais

Estimativa por Use Case Point (UCP)

Estimativa por Use Case Point (UCP) Estimativa por Use Case Point (UCP) A análise de sistemas Orientados a Objetos já utiliza, comumente, os diagramas de Casos de Uso (Use Cases) para descrever as funcionalidades do sistema de acordo com

Leia mais

Análise de Ponto de Função APF. Aula 02

Análise de Ponto de Função APF. Aula 02 Análise de Ponto de Função APF Aula 02 Agenda Parte 01 Introdução a Métricas de Software Parte 02 A Técnica de APF O que é APF? Objetivos Benefícios Conceitos Básicos Visão Geral dos Procedimentos de Contagem

Leia mais

Organização para Realização de Teste de Software

Organização para Realização de Teste de Software Organização para Realização de Teste de Software Quando o teste se inicia há um conflito de interesses: Desenvolvedores: interesse em demonstrar que o programa é isento de erros. Responsáveis pelos testes:

Leia mais

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri Unidade VI Técnicas de Teste de Software Profa. Dra. Sandra Fabbri Os requisitos de teste são extraídos de uma implementação em particular Teste dos detalhes procedimentais A maioria dos critérios dessa

Leia mais

ARCHITECTURAL DESIGN. Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos

ARCHITECTURAL DESIGN. Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos ARCHITECTURAL DESIGN Ian Sommerville, 8º edição Capítulo 11 Aula de Luiz Eduardo Guarino de Vasconcelos Objetivos Tópicos abordados Arquitetura de Software Projeto de arquitetura Vantagens de arquitetura

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Parte 1 Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 04 Algoritmos e Estruturas de Dados I Qual a diferença entre um algoritmo e um programa? Como escolher o algoritmo

Leia mais

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO REVISÃO POO INTRODUÇÃO À LINGUAGEM JAVA CRIANDO CLASSES EM JAVA Convenção de Nomes em Java Classes iniciam com letras maiúsculas Métodos, atributos e variáveis locais iniciam com minúsculas. Declaração

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Visão Geral Profa.Paulo C. Masiero masiero@icmc.usp.br ICMC/USP Algumas Dúvidas... Como são desenvolvidos os softwares? Estamos sendo bem sucedidos nos softwares que construímos?

Leia mais

Aula 10 Especificação de Requisitos

Aula 10 Especificação de Requisitos Aula 10 Especificação de Requisitos Alessandro Garcia LES/DI/PUC-Rio Setembro 2016 Especificação Objetivos dessa aula Apresentar a importância e o que são especificações de requisitos, bem como conceitos

Leia mais

Aula 04 Introdução à Programação Orientada à Objetos

Aula 04 Introdução à Programação Orientada à Objetos Aula 04 Introdução à Programação Orientada à Objetos Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda Introdução à Programação Orientada

Leia mais

Gerência de Projetos e Manutenção de Software Aula 4 Planejamento de Projetos (Estimativas) Andréa Magalhães Magdaleno 2017.

Gerência de Projetos e Manutenção de Software Aula 4 Planejamento de Projetos (Estimativas) Andréa Magalhães Magdaleno 2017. Gerência de Projetos e Manutenção de Software Aula 4 Planejamento de Projetos (Estimativas) Andréa Magalhães Magdaleno andrea@ic.uff.br 2017.02 Agenda Aulas Anteriores Estimativas Planning Poker Paramétrica

Leia mais

10/10/2012. Artigo: Autores:

10/10/2012. Artigo: Autores: Artigo: Apresentar um estudo sistemático sobre as métricas de acoplamento na Programação Orientada a Aspectos e seu impacto na manutenibilidade e estabilidade do projeto. Autores: Rachel Burrows, Alessandro

Leia mais

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé)

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé) GRASP Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Introdução a padrões O que são? Por que utilizá-los? Padrões GRASP O que são? Quais serão apresentados na disciplina?

Leia mais

Aula 02 Conceitos e Princípios de Modularidade 1

Aula 02 Conceitos e Princípios de Modularidade 1 Aula 02 Conceitos e Princípios de Modularidade 1 Alessandro Garcia LES/DI/PUC-Rio Agosto 2016 Lembretes Horário das aulas inicio cada aula a partir de 13:15 Sítio (site) da disciplina: www.inf.puc-rio.br/~inf1301

Leia mais

Estágio II. Aula 04 Testes Ágeis. Prof. MSc. Fred Viana

Estágio II. Aula 04 Testes Ágeis. Prof. MSc. Fred Viana Estágio II Aula 04 Testes Ágeis Prof. MSc. Fred Viana Agenda Manifesto dos Testes Ágeis Testes Ágeis x Testes Tradicionais Sinais de que os Testes Não São Ágeis Testador Ágil Testador Ágil em Equipe Independente

Leia mais

Conceitos Básicos de C

Conceitos Básicos de C Conceitos Básicos de C Bibliografia Problem Solving & Program design in C, Jeri R. Hanly e Elliot B. Kpffman, 3 a edição Data Structures and Algorithm Analysis in C, Mark Allen Weiss, 2 a edição, Addison-Wesley,

Leia mais

Aula 05 - ES - Métricas de Software

Aula 05 - ES - Métricas de Software Aula 05 - ES - Métricas de Software Conceito METRICAS inferências sobre os processos de trabalho que traduzem: a priori ESTIMATIVAS expectativas METRICAS Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com

Leia mais

Visualização de Software com o KDevelop 4

Visualização de Software com o KDevelop 4 Live Blue (http://liveblue.wordpress.com) Visualização de Software com o KDevelop 4 Sandro Santos Andrade sandro.andrade@gmail.com http://liveblue.wordpress.com liveblue@googlegroups.com 1 Um desafio inicial

Leia mais

Puca Huachi Vaz Penna / José Américo T. Messias

Puca Huachi Vaz Penna / José Américo T. Messias BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66 Puca Huachi Vaz Penna / José Américo T. Messias Departamento de Computação Universidade Federal de Ouro Preto http://www.decom.ufop.br/puca

Leia mais

Testes de software - Teste funcional

Testes de software - Teste funcional Testes de software - Teste funcional Vitor Alcântara de Almeida Universidade Federal do Rio Grande do Norte Natal, Brasil 30 de outubro de 2014 Alcântara (UFRN) Testes de software - Testes funcionais 30

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 13 http://www.ic.uff.br/~bianca/engsoft2/ Aula 13-02/06/2006 1 Ementa Processos de desenvolvimento de software (Caps. 2, 3 e 4 do Pressman) Estratégias e técnicas de teste

Leia mais

FATORES E MÉTRICAS DE QUALIDADE

FATORES E MÉTRICAS DE QUALIDADE FATORES E MÉTRICAS DE QUALIDADE 1 2 FATORES DE QUALIDADE OPERAÇÃO DO PRODUTO CORRETITUDE (FAZ O QUE EU QUERO?) CONFIABILIDADE (SE COMPORTA COM PRECISÃO?) EFICIÊNCIA (RODARÁ TÃO BEM QUANTO POSSÍVEL?) INTEGRIDADE

Leia mais

Mas o que é mesmo Padrão de Projeto?

Mas o que é mesmo Padrão de Projeto? Mas o que é mesmo Padrão de Projeto? Um Padrão de Projeto descreve uma solução comprovada para um problema recorrente e conhecido no desenvolvimento de software orientado a objetos. Mas afinal, porque

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 21 http://www.ic.uff.br/~bianca/engsoft2/ Aula 21-05/07/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software Métricas para software

Leia mais

DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação

DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação Funções DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / 07 1 Programação modular Programação modular: divir um programa em módulos mais pequenos Função: um conjunto de instruções que desempenham

Leia mais

Processos de software

Processos de software Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de

Leia mais

REUSO E REUSABILIDADE

REUSO E REUSABILIDADE REUSO E REUSABILIDADE Manutenção de Software Profa. Cynthia Pinheiro Antes de mais nada... 2ª Lista de Exercícios Já está disponível no site a 2ª Lista de Exercícios Entrega: dia 03/10, no horário da aula.

Leia mais

Engenharia de Software II

Engenharia de Software II Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Engenharia de Software II Aula 03 (rogerio@fct.unesp.br) Contextualizando ISO 12207: Estrutura

Leia mais

9 Conclusão e trabalhos futuros

9 Conclusão e trabalhos futuros 255 9 Conclusão e trabalhos futuros O aumento da complexidade das aplicações de software de hoje em dia e o advento de tecnologias inovadoras e recentes fazem com que os sistemas de software incorporem

Leia mais

Medidas de Esforço de Desenvolvimen to de Software

Medidas de Esforço de Desenvolvimen to de Software Medidas de Esforço de Desenvolvimen to de Software Prof. Luiz Leão luizleao@gmail.com luizleao.com Métricas Utilizando Ponto Função Medidas da Produtividade por PF Aspectos de influência na produtividade

Leia mais

Documento de Requisitos*

Documento de Requisitos* * Rosana T. Vaccare Braga *slides adaptados a partir do material da Profa Ellen Francine Barbosa Processo de Engenharia de Requisitos Documento de requisitos Processo de Engenharia de Requisitos Estudo

Leia mais

Linguagens de Programação Conceitos e Técnicas. Amarrações

Linguagens de Programação Conceitos e Técnicas. Amarrações Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador

Leia mais

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

Introdução à Programação. Conceitos Básicos de Orientação a Objetos Introdução à Programação Conceitos Básicos de Orientação a Objetos Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma Conceito de paradigma Diferentes

Leia mais

Introdução à Análise e Projeto de Sistemas

Introdução à Análise e Projeto de Sistemas Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise

Leia mais

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo

Leia mais

Aula 02 Conceitos e Princípios de Modularidade 1

Aula 02 Conceitos e Princípios de Modularidade 1 Aula 02 Conceitos e Princípios de Modularidade 1 Alessandro Garcia LES/DI/PUC-Rio Março 2017 Lembretes Horário das aulas vamos ter que começar as 13:00 Definição de horário de monitoria Sítio (site) da

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 19 http://www.ic.uff.br/~bianca/engsoft2/ Aula 19-28/05/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software Métricas para software

Leia mais

Engenharia de Software

Engenharia de Software Sumário Engenharia de Software Modelos de desenvolvimento de software Fases de desenvolvimento Programação modular Abordagem top-down e bottom-up Linguagens de programação: Compilação / Interpretação Aplicação

Leia mais

Aula 15: Introdução a Funções

Aula 15: Introdução a Funções Aula 15: Introdução a Funções Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aula Anterior Laços aninhados Exemplos diversos

Leia mais