Engenharia de Software II Técnicas de Métricas de Software 1. SLOC SLOC - Source lines of code (linhas de codigo fonte) é uma métrica de software usada para medir o tamanho físico de um software aplicando o principio de contagem das linhas de codigo (LOC) no texto do programa fonte. Exemplo: O Trecho do codigo abaixo, escrito em C, contém 2 LOC logico ou 3 LOC físico for (i=0; i<100; ++i) { printf("hello"); } Uma derivação desta técnica é obtida empregando-se estimativas otimistas, esperadas e pessimitas SLOC = (KlocOtimista + 4 * KlocEsperado + KlocPessimista)/6 onde kloc Milhares de linha de codigo A TECNIC A DE SLOC varia com a linguagem que está sendo empregada para mesma finalidade, em ambientes distintos temos quantidade de codigo distinta. A abela abaixo apresenta um programa escrito em C e em Cobol para mesma finalidade Em C temos Em Cobol temos: #include <stdio.h> int main(void) { } printf("hello World"); return 0; 000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. HELLOWORLD. 000300 000400* 000500 ENVIRONMENT DIVISION. 000600 CONFIGURATION SECTION. 000700 SOURCE-COMPUTER. RM-COBOL. 000800 OBJECT-COMPUTER. RM-COBOL. 000900 001000 DATA DIVISION. 001100 FILE SECTION.
001200 100000 PROCEDURE DIVISION. 100100 100200 MAIN-LOGIC SECTION. 100300 BEGIN. 100400 DISPLAY " " LINE 1 POSITION 1 ERASE EOS. 100500 DISPLAY "Hello world!" LINE 15 POSITION 10. 100600 STOP RUN. 100700 MAIN-LOGIC-EXIT. 100800 EXIT. 2. Halstead O método de MURICE Halsead, tem o objetivo de determinar a complexidade de um software por meio do comprimento e volume do software. O princípio deste método está na análise e quantificação dos operandos e operadores que compõem o sistema. Sendo: n 1 = número de operadores distintos de um programa n 2 = número de operandos distintos de um programa N 1 = total de ocorrências de operadores em um programa N 2 = total de ocorrências de operandos em um programa Defini-se: Quantidade de vocabulo com n = n 1 + n 2 Comprimento do algoritmo com N = N 1 + N 2 A dimensão de um programa é definida pelo comprimento e pelo volume do programa de forma que Comprimento Volume n 1 x log 2 n 1 + n 2 x log 2 n 2
N x log 2 n 3. NESMA A NESMA, Netherlands Metric Association, determina um padrão simplificado para o calculo de ponto de função. Ponto de função é uma medida para para estimar o tamanho de um sistema de informação baseando-se na funcionalidade que é percebida pelo usuário do sistema. Segundo esta associação o ponto de função e pode ser determinada em relação a quantidade de tabelas que o software ira manipular e a quantidade de interfaces necessárias para manipular dados de banco de dados de outras aplicações. O Ponto de Função PF é dado por: PF = (QTT*35+(QI*15)) Onde: QTT=Quantidade de tabelas QI= Quantidade de interfaces 4. Caper Jones A estimativa descrita por Caper Jones é também uma calculo de ponto de função. Nesta técnica o Ponto de função de um software é determinado em funçcão pela natureza da aplicação esta natureza aborda seu escopo, da classe e do tipo de software a ser produzido. O Ponto de Função PF é dado por: Onde x escopo y classe z tipo PF = (x + y + z) 2,35 cada um desses elementos e associado a um indice segunda as tabelas Tabela de Escopo de um sistema Índice Escopo Índice Escopo 1 Subrotina 6 Programa Isolado 2 Módulo 7 Componente de Sistema
3 Módulo Reutilizável 8 Versão de Sistema 4 Protótipo Descartável 9 Novo Sistema 5 Protótipo Evolutivo 10 Sistema Composto Tabela de Classes de um sistema Índice Classe Índice Classe 1 Software Individual 9 Internet 2 Shareware 10 Software Alugado 3 Software Acadêmico 11 Software Bundled 4 1 Site - Interno 12 Software Comercial (*) 5 Multi-Site - Interno 13 Contrato de Outsourcing 6 Projeto Contratado - Civil 14 Contrato Governamental 7 Time Sharing 15 Contrato Militar 8 Serviço Militar Tabela de Tipo de um sistema Índice Tipo Índice 1 Não Procedural 11 Comunicações 2 Web Applet 12 Controle de Processo 3 Batch 13 Sistema Confiável (Trusted)
4 Interativa 14 Sistema Embedded 5 GUI Interativa 15 Processamento de Imagem 6 Batch DB 16 Multimídia 7 DB Interativa 17 Robótica 8 Cliente/Servidor 18 Inteligência Artificial 9 Matemática 19 Rede Neural 10 Sistema (Operacional) 20 Híbrido: Misto Estimativas de Pazos, equipes e esforço, O prazo T de um projeto pode ser dado por: T = (PF) t Onde o expoente t varia de 0.32 a 0.45 dependendo do ambiente. Caper Jones define os seguintes valores para t: Ambiente de desenvolvimento Expoente t Sistema Comum 0,32-0,35 Sistema Orientado a Objeto 0,36 Sistema Cliente/Servidor 0,37
Sistema Terceirizado 0,38 Sistema de Informações Gerenciais 0,39 Programa Produto Comercial 0,40 Programa de Sistema Operacional 0,41 Software Militar 0,43-0,45 O tamanho sugerido para a equipe de desenvolvimento Te tem como base que cada profissional deve ser responsável por 150 PF. Logo: Te = PF /150 pessoas O esforço resultante para produção do software, medido em homem-mês é dado por: E = 2,4 x v 1,05 homens-mês Onde: E homem-mês v milhares de linhas de codigos, comandos do programa A quantidade de linhas de codigo varia de acordo com a limhagem de programação. Uma aplicação em java cada ponto de função corresponde a 54 loc. A tabela ES_tab_linguagem_PontoFuncao.pdf disponibiliza a relação PF e loc para algumas Linguagens de programação. O tempo para desenvolvimento do projeto dado em função do esforço homens-mês é dado por: T = 2.5 x E 0,32