APLICATIVO PARA CÁLCULO DE MÉTRICA DE SOFTWARE EM CÓDIGO-FONTE PL/SQL



Documentos relacionados
FERRAMENTA DE APOIO A REESTRUTURAÇÃO DE CÓDIGO FONTE EM LINGUAGEM PL/SQL BASEADO EM PADRÕES DE LEGIBILIDADE

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Ferramenta de Análise Código Fonte em Delphi. Aluno - Roque César Possamai Orientador - Everaldo Artur Grahl

FERRAMENTA WEB PARA MODELAGEM LÓGICA EM PROJETOS DE BANCOS DE DADOS RELACIONAIS

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

Testes Baseados na Implementação. (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins

Logado no OracleXE vamos acessar a opção:

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

SQL Procedural. Josino Rodrigues Neto

IES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce alvaro@darce.com.br

Engenharia de Software II

Ferramenta de Testes de Programas para Auxílio na Aprendizagem de Programação

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

SOFTWARE PARA CÁLCULO DA COMPLEXIDADE CICLOMÁTICA EM CÓDIGO-FONTE PL/SQL

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Oracle PL/SQL Overview

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto :

1.6. Tratamento de Exceções

Sintaxe e Semântica. Fases da Compilação. programa fonte

EMENTA DO CURSO. Tópicos:

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Orientação a Objetos

Sistemas de Informação

Geração de código intermediário. Novembro 2006

Gerador de aplicativos Oracle PL/SQL WEB baseado na estrutura das tabelas do. Wagner da Silva Orientando Prof. Alexander Roberto Valdameri Orientador

SISTEMA DE GESTÃO DE CAIXAS DE CRÉDITO

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Projeto de Sistemas I

Curso Técnico em Redes

SISTEMA DE CONTROLE DE ACESSO, PARA AMBIENTE ACADÊMICO

ATENAS: Um Sistema Gerenciador de Regras de Negócio

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

TESTE-PLAN: FERRAMENTA DE APOIO AO PLANEJAMENTO E CONTROLE DAS

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Prof.: Clayton Maciel Costa

Fundamentos de Teste de Software

Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Projeto de Banco de Dados

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

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

FERRAMENTA WEB DE SUPORTE A AVALIAÇÃO DE SOFTWARE COM A METODOLOGIA CERTICS

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

Hugo Pedro Proença, 2007

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

SQL. Curso Prático. Celso Henrique Poderoso de Oliveira. Novatec

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Projeto de Software Orientado a Objeto

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#

2 echo "PHP e outros.";

Protótipo de sistema de consultas utilizando a linguagem SPARQL

GERADOR DE CÓDIGO JAVA A PARTIR DE ARQUIVOS DO ORACLE FORMS 6I

Treinamento. DBA Oracle 11g. Duração: 120 horas

Lógica de Programação

Introdução a Verificação, Validação e Teste de Software

Sistema de informação para controle de vendas em imobiliária

Projectos de Software

SISTEMA PARA CONTROLE DE ESTOQUE DOS ALMOXARIFADOS DE AGÊNCIAS DE CORREIOS NO ESTADO DE SANTA CATARINA

Sistema para Reservas de Veículos de uma Cooperativa de Saúde. Ricardo Hoffmann Orientador: Wilson Pedro Carli

Índice: Nitgen do Brasil

Qualidade de Software

Nota de Aplicação. Escrita em Banco de Dados SQL com o Vijeo Citect 1.0. Suporte Técnico Brasil. Versão:

Programação WEB. Prof. André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

SISTEMA PARA CONTROLE DE ESTOQUE DE BEBIDAS

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

A Linguagem Pascal e o Ambiente de Programação Dev-Pascal. Introdução à Ciência da Computação I

SQL Gatilhos (Triggers)

CURSO DE PROGRAMAÇÃO EM JAVA

Oracle 10g: SQL e PL/SQL

Introdução a Java. Hélder Nunes

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

CONVENÇÃO DE CÓDIGO JAVA


GEADA. Gerador de Expressões Algébricas em Digrafos Acíclicos. para versão 1.0, de agosto/2008. Autor: Márcio Katsumi Oikawa

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

[RÓTULO:] MNEMÔNICO [OPERANDOS] [;COMENTÁRIO]

Análise comparativa de produtividade entre Groovy e Java, aplicado no desenvolvimento web

Clóvis Diego Schuldt. Orientador: Prof. Wilson Pedro Carli

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Análise de Dados do Financeiro

Considerações a serem feitas antes da implantação.

Aspectos de Segurança em Programação com Java

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Sistema de Help Desk e Controle de Chamados Baseado em Workflow. Cristian Paulo Prigol Marcel Hugo

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Modelos de Qualidade de Produto de Software

Ciência da Computação ENGENHARIA DE SOFTWARE. Análise dos Requisitos de Software

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

ENGENHARIA DE SOFTWARE DESENVOLVIMENTO EM CAMADAS

Universidade Regional de Blumenau - FURB

MÓDULO DE AVALIAÇÃO DO RETORNO DE INVESTIMENTO EM SISTEMA DE ANIMAL. Eduardo Ehlert Orientador: Mauro Marcelo Mattos

Transcrição:

APLICATIVO PARA CÁLCULO DE MÉTRICA DE SOFTWARE EM CÓDIGO-FONTE PL/SQL Karine Trevisani Cunha Alexander Roberto Valdameri - Orientador

Roteiro Introdução Objetivos Motivação Fundamentação Teórica Desenvolvimento Especificação (requisitos e diagramas) Implementação (trechos importantes) Operacionalidade Conclusão Extensões Relevância Pessoal

Introdução Métrica de software Complexidade Ciclomática (CC) proposta por McCabe Códigos escritos em PL/SQL

Objetivos Calcular a métrica da CC em códigos PL/SQL Identificar as quebras de fluxo do código Gerar o resultado, acompanhado de um parecer

Motivação Necessidade da empresa Mensuração de sistemas legado Avaliação da complexidade Possibilidade de melhoria Diminuição dos custos de manutenção Somente códigos Delphi e Java

Métricas de Software Não se pode controlar o que não se pode medir. (De Marco, 1989) Classificação Processo Produto Crescente preocupação das empresas em mensurar sistemas. As métricas vem se aprimorando. Hoje são amplamente utilizadas. A métrica deste trabalho é de produto

Teste de Software Testar para obter qualidade Antes, durante e depois Ocorrência de erros por várias causas A atividade deve ter especial atenção Tipos de teste mais conhecido Caixa Preta Caixa Branca Teste do caminho básico Funcional, simula ação do usuário Estrutural, realizado com base nos códigos gerados

Manutenibilidade Processo de modificação após entrega Atributo de qualidade da ISO/IEC 9126-1 Pode corresponder a 70% do custo do sistema Um dos aspectos para o calculo: complexidade Ciência do Software e Complexidade Ciclomática

Ciência do Software Métrica de Halstead Calculada após a geração do código Formado basicamente de operadores e operandos n1 n2 N1 N2 número de operadores distintos número de operandos distintos número total de ocorrências de operadores número total de ocorrências de operandos São gerados valores como o comprimento global do programa, o nível do programa, o nível da linguagem, entre outros.

Complexidade Ciclomática Mede testabilidade e manutenibilidade Proposta por McCabe na década de 70 Mostra o quanto um programa é complexo Resulta um único número O resultado pode ser comparado, independente da linguagem Costuma ser representado por um grafo com uma entrada e uma saída, mostrando o fluxo de ações

Complexidade Ciclomática Testabilidade: número mínimo de casos de teste necessários para testar todos os caminhos independentes Manutenibilidade: observar a classificação a seguir: CC 1-10 11-20 21-50 maior que 50 Avaliação do Risco programa simples, sem muito risco. programa mais complexo, risco moderado. programa de risco elevado programa incompreensível, risco muito alto Quanto menor a CC, menor esforço pra manter o sistema Se CC muito grande, quebrar código em vários módulos

Notação de Fluxo Representação gráfica de um módulo de software Cada estrutura lógica tem sua própria representação

Complexidade Ciclomática Fórmula: CC = E N + p» E = número de arestas» N = número de nós» p = número de entradas e saídas Como só existe uma entrada e uma saída, p é sempre igual a 2 Graficamente, é também o nº. de regiões

PL/SQL Extensão procedural da linguagem SQL Apresenta basicamente a seguinte estrutura: DECLARE -- Bloco de declaração (opcional) BEGIN -- Programa propriamente dito EXCEPTION -- Bloco de exceções (opcional) END Dois tipos de construções condicionais: IF e LOOP

Estruturas Condicionais Caracterizam uma quebra no fluxo de dados IF v_nome = MARCELO THEN v_cargo := GERENTE ; v_depto := 7; v_salario := sal * 0.20; END IF; IF v_data_conclu > v_data_prev THEN v_flag := Atrasada ; ELSE v_flag := Adiantada ; END IF; IF v_comeco > 100 THEN v_comeco := 2 * v_comeco; ELSIF v_comeco >= 50 THEN v_comeco := 0.5 * v_comeco; ELSE v_comeco := 0.1 * v_comeco; END IF; DECLARE v_nro_ordem item.nro_ordem%type := 100; v_contador NUMBER(2):= 1; BEGIN LOOP INSERT INTO item(nro_ordem, seq) VALUES (v_nro_ordem, v_contador); v_contador := v_contador + 1; EXIT WHEN v_contador > 50; END LOOP; END; DECLARE v_nro_ordem item.nro_ordem%type := 100; BEGIN FOR i IN 1..10 LOOP INSERT INTO (nro_ordem, seq) VALUES (v_nro_ordem, v_contador); END LOOP; END; DECLARE v_nro_ordem item.nro_ordem%type := 100; v_contador NUMBER(2):= 0; BEGIN WHILE v_contador < 10 LOOP INSERT INTO (nro_ordem, seq) VALUES (v_nro_ordem, v_contador); v_contador := v_contador + 1; END LOOP; END;

Exemplo

Resolução CC = E - N + 2 E = 9 N = 7 CC = 4 Usando a outra maneira, apenas gráfica, o resultado é o mesmo, são 4 regiões distintas 1 2 3 4 1-7 1-2 - 5-6 - 1-7 1-2 - 3-5 - 6-1 - 7 1-2 - 3-4 - 5-6 - 1-7

Trabalhos Correlatos Possamai (2000) - Métricas para Pascal Seibt (2001) - Métricas OO Gonçalves (2003) - Métricas e testes para Delphi

Requisitos Importação de arquivos PL/SQL (RF) Reconhecer quebras de fluxo de dados (RF) Apresentar resultado com um parecer (RF) Gravar resultado em arquivos externos (RF) Ser desenvolvido em Java (RNF) Usar a métrica conforme McCabe (RNF)

Especificação Inicialmente especificado para operação em modo console Versão final da especificação visando operação em modo gráfico Foram utilizados os conceitos dos diagramas da UML Foram criados os diagramas de caso de uso e de classes para o aplicativo. Especificado através da ferramenta Enterprise Architect

Caso de Uso Contempla os requisitos de importação de arquivos e reconhecimento de quebras Contempla o requisito de apresentar o resultado com parecer Contempla o requisito de gravar o resultado em arquivos externos

Diagrama de Classes

Desenvolvimento Criada uma versão console e outra gráfica Ambas implementadas em Java 1.4.2 Versão console - ferramenta Eclipse Versão gráfica - ferramenta Net Beans

String Tokenizer Codificação

Cálculo da CC Codificação

Versão Console Geração do Resultado Rotina de Ajuda

Operacionalidade Tela principal Arquivo escolhido Escolha de arquivos Botão de cálculo Botão Sobre...

Operacionalidade Tela de Resultados Nova análise Classificação Salvar em arquivo Área de resultados

Conclusões Cenário real da empresa Diferente dos outros trabalhos Será continuada a versão console e adequada à empresa. Com isso o QA poderá ter estatísticas sobre os sistemas implantados e novos desenvolvimentos Objetivos alcançados. Por não usar estruturas gráficas como os demais, não foi preciso BNF e nem fazer o cálculo por arestas e nós

Extensões Sugestões para trabalhos futuros e aperfeiçoamentos: Sub-rotinas críticas; Outras métricas; Leitura do banco de dados; Base de dados dos resultados; Linguagem PL para outros bancos; Outras linguagens procedurais.

Relevância Pessoal Consolidação dos conceitos de desenvolvimento de projetos; Notoriedade conseguida dentro da empresa; Aprendizado da linguagem Java; Mais uma etapa vencida.