[Música] olá eu sou professor fábio siqueira e nessa hora vou falar sobre métricas então quando a gente considera as características de qualidade de software elas têm sempre uma definição desse tipo aqui como por exemplo a estética da interface com o usuário é o grau que a interface do usuário permite interação agradável satisfatória para o usuário legal ótimo então eu preciso ver o grau disso no software mas como eu e como específico isso como eu coloco isso no software como eu consigo colocar o grau de alguma característica se agradável da interface agradável então eu posso simplesmente
falar que a interface tem que ser muito agradável para o usuário o que é muito que é pouco o que é médio com o que eu consigo avaliar isso é preciso ter números então a gente engenharia gosta sem trabalhar com alguma forma de avaliação quantitativa você precisa ter um número para você dizer atingiu não atingir seu não atingir bons fazer alguma coisa para melhorar então um problema sério que a gente tem quando eu tenho um atributo uma característica qualidade desse tipo característica subir cura são características é que nem sempre é fácil avaliar a ela mas
a gente precisa avaliar de algum jeito então de alguma forma a gente precisa ter métrica a gente precisa conseguir medir a gente conseguir precisa conseguir chegar algum número que consegui expressar se a gente atingiu aquela cueca aquela característica esperada ou não então se você definir um requisito não funcional sem usar um valor objetivo você tem sempre a possibilidade de discussão alguém pode chegar e falar não para mim não está suficiente pra outra pessoa falaram pra mim tá suficiente e fica essa discussão que não leva a lugar nenhum então a gente já tem números até alguma
forma objetiva de medir mesmo que seja uma característica de difícil aparente difícil medição então o que a gente vai medir num projeto de software a agente média o produto o processo e o projeto então aula de hoje a gente vai focar no produto processo projeto vai ser tratado nessa aula aqui mas pra que a gente mede então o motivo principal é esse daí que eu coloquei que é pra gente conseguir a avaliar a qualidade do software tenha consigo medir para saber se eu atingiam a qualidade esperada mas também a gente pode medir alguma característica para
descobrir corrigir algum problema que tem é potencialmente no software não se pode medir a quantidade de defeitos para você saber se tem algum problema pode dar algum problema no software futuro a uma outra vantagem outro um outro uso da medição é pra gente conseguisse mais esforço então você sabe eu já fiz eu tenho 20 casos de uso para serem implementados eu já fiz dez então faltam se eu já fiz 50% obviamente depende do da complexidade do caso de uso mas dependendo de como você mede isso você consegue ter uma estimativa de quanto falta que é
bastante útil para gestão de projetos e também pra você controlar o andamento do processo a essa atividade é que já foi feita então já estou terminando essa atividade possa executar essa essa atividade aqui tá foi 50% feita então a próxima atividade a gente já pode começar a planejar ela então pra medir a gente já teve métrica e o que é uma métrica então né trica é uma medida quantitativa do grau que o sistema componente o produto possui um determinado tributo então o importante aqui é a questão do quantitativo então é algo numérico e têm um
grau a a gente consegue ter um número eu consigo dizer isso daqui têm valor x para um determinado a componente processo ou produto então a gente vai avaliar de uma forma quantitativa a qualidade e as métricas elas vão ser usadas como indicadores são elas indicam alguma coisa não necessariamente é verdade não necessariamente é aquilo que a gente tem de informação que a métrica da tem uma correlação direta e objetiva com aquilo a gente espera que tenha mas ela indica alguma coisa que pode ser que aconteça a gente vai usar métrica pra ajudar a gente a
tomar a decisão e quando a gente pensa em metro que ela tem que ter algumas boas características então quando você pensa uma métrica ela precisa é a primeira coisa precisa ser fácil de calcular se você tiver uma métrica que é muito complexa de você calcular tem uma forma muito complicada você pegar uma informação muito complicado ela acaba se tornando um pouco prático não é conseguir usar essa métrica a na prática uma outra característica importante é que ela tem que ser intuitivo então se você tem uma métrica que é ela estranha se eu falar quando aumenta
o valor disso aqui significa que a complexidade do software diminuiu ela fica meio estranho então aumentou alguma coisa diminui puxa o que está acontecendo ou pior nessa tem algumas métricas você pode definir uma meta que é a partir de uma faixa de valor até um crescimento diferente do que há a faixa de valor inferior a ficar confuso eu olho para o valor eu não sei muito bem dizer o que ela quer então uma boa meta não pode ser assim ela tem que ser intuitivo subir um pouco eu consigo ter um reflexo e consigo é ver
o reflexo claramente na qualidade uma outra característica importante ela não ser ambígua então se você tem uma métrica que fala puxa tem esse valor eu não consigo dizer se é isso é bom e ruim um abono métrica gente deveria conseguir claramente olhar para o valor e dizer o que significa e ela também precisa ser consistente no uso de medidas é nuno uso de unidades dimensões então se tiver uma médica que tem um monte de unidade dimensão colocados é a métrica é pessoa linha de código a função por segundo o que significa isso não é claro
então você tem que ter uma métrica que ela seja bem direta em relação às unidades dela se olha você consegue saber a data significa isso eu consigo a trabalhar com isso a outra característica importante ela não ser dependente em linguagem de programação então a gente sabe que a linguagem de programação tem um impacto muito grande no desenvolvimento se pegar uma linguagem você pega uma linguagem com você e pega uma linguagem como o clube vai dar um impacto bem diferente no seu projecto e pegar sendo então meu deus do céu vai dar tem uma dificuldade muito
maior de desenvolver então tem um impacto disso mas o ideal aqui há uma boa métrica não seja impactado por isso e acima de tudo uma boa métrica ela precisa ser útil então se você aplicar a métrica ao se medir um determinado valor e vai ser o último você sabe alguma informação o interessante dessas características é que tem algumas métricas que não cumprem com todas elas nessa aula vou mostrar uma métrica que não cumprir todas essas características aqui e ainda assim ela é útil então as métricas não precisam ter todas essas características para ser útil para
elas serem úteis o ideal seria que fosse mas às vezes é difícil gerar um momento interessante são as métricas se dividem tradicionalmente em três tipos médica métricas de produto métricas de projeto e métricas de processo nessa aula eu falar só sobre métricas de produto a médica de projeto as métricas de projetos são usados pelo gerente de projeto para conseguir acompanhar as atividades dele e as métricas de processo são usadas para a melhoria do processo então consigo medir o processo e eu sei que o processo está bom tá ruim e consigo usar essa informação para a
melhoria tão falando especificamente sobre métricas de produto a que ela porque ela serve lançaram em pra ajudará a medir alguma característica de qualidade do produto elas são chamadas também métricas de previsão então você mede aquela característica você consegue prevê a all é se essa característica se o software vai ter aquela característica ou não pensando em software pode usar para outras coisas também e é o desagradável de métricas de produto é que nem sempre você consegue fazer uma medição direta da métrica então você pega por exemplo eficiência da execução o comportamento no tempo mais especificamente isso
é fácil de medir diretamente você pega um cronômetro e vê lá o tempo quanto tempo estava demorando pra fazer isso aqui hoje eu consegui ver o comportamento no tempo isso é fácil enxergar mas tem coisas que a gente não consegue medir diretamente como por exemplo não tem habilidade usabilidade como comércio diretamente a mano tem viabilidade como que eu meço de diretamente à usabilidade não dá a gente não consegue emitir diretamente então a gente tem que fazer algumas medições indiretas então pra fazer essas medições a gente acaba relacionando as propriedades estão pegando o modelo da iso
25 mil a ideia que vai ter características sobre características e aí você vai ter propriedades essas propriedades são o que você vai medir e é isso que a gente consegue medir então por exemplo por exemplo manutenabilidade têm analisa análise habilidade ou seja com é o quão fácil é analisar o produto de software e como que a gente mede isso diretamente difícil me diz directamente então o que a gente pode fazer é relacionar uma métrica como por exemplo o número de linhas de código a análise habilidade não se fala por si um software que tem poucas
linhas de código tem poucas linhas de código é mais fácil de analisar do que um software que tem muita linha de código então isso daí é uma relação que a gente fez então a gente está considerando que tem uma correlação entre essas informações e com isso a gente consegue analisar é consegue calcular se o software é fácil de analisar ou não um outro exemplo de análise habilidade outra métrica que a gente podia poderia considerar é o número de filhos de uma classe falar classes que têm um menor que é muito grande são mais difíceis de
analisar no clássico de amanhã daqui é pequena então só tem é 2 nível geral que é mais fácil analisar tudo bem é é uma outra característica é uma outra métrica que a gente consegue tirar dessa informação e assim como o caso da revisão é quando a gente trabalha com métrica tem duas formas tem dois tipos de métrica você tem métricas que são estáticas e métricas são dinâmicas as métricas estatísticas são métricas que você consegue analisar é a partir de uma representação do do seu sol então você não precisa executar o software você pega essa representação
do software e analisa as dinâmicas por outro lado você precisa ter um exemplo precisa executar o software então você precisa executar para calcular alguma coisa então por exemplo uma métrica estática é o número de linhas de código uma métrica dinâmica seria o tempo de execução ou a quantidade de memória que o software precisa então você só executando o software vai conseguir ter um valor preciso disso daí a uma das métricas mais famosas é a número de linhas de código era bastante famosa porque é muito fácil de ser medida então você pega qualquer código você consegue
facilmente ver o número de linhas de código dele é uma métrica aqui foi bastante usada pela engenharia de software no começo tem gente solta a a vantagem dela que é muito fácil de medir a e uma outra vantagem é que ela tem muito trabalho sobre sobre essa métrica porque ela foi bastante usada era fácil e é o que muitas vezes se tinha no começo nos primórdios da engenharia de software mas a e por causa disso a gente tem há muito uso e relacionando linhas de código com outras coisas então por exemplo você tem erros por
mil linhas de código que a gente chama de ken block a tem custo por mil linhas de código então você tem essas informações que você pode usar qual é o problema da da linha de código a linha de código tem um problema muito sério que ela é muito independente da linguagem de programação é claro que faz muita diferença se você tem é um código feito em c1 código feito em python ao número de linhas de código você completamente diferente então você precisa levar isso em consideração um outro problema de linha de código aquela finaliza bons
projetos bombons programadores muitas vezes é um programador que é muito vergonhoso escreve bastante coisa para resolver um problema à ele pode parecer muito produtivo escrever um monte de linha de código enquanto que um programador que demora muito pra fazer alguma coisa mas escreve um código enxuto direto e eficiente ele pode parecer menos produtivos e usa a linha de código produtividade então além de código tem esse tipo de problema ah e por causa disso o uso de linhas de código hoje em dia atualmente é bem discutível mas ainda assim como tem bastante trabalho é importante conhecer
uma outra métrica muito interessante é é são os pontos de função que é o ponto de função é uma forma de você medir o tamanho funcional do seu software então você consegue fazer uma medição do tamanho do sistema do software que vai construir sem construir então durante a atividade de análise requisitos você consegue calcular o ponto de função de um determinado software e aí você consegue dizer você consegue tirar algumas informações algumas revelações interessantes por exemplo quanto tempo vai demorar para construir aquele software o quanto custa para construir o software então é interessante que você
não consegue descobrir o tamanho antes da implementação qual que o uso disso há a questão de produtividade bastante uso é bastante útil questão de qualidade a gente consegue mediantes a ver quanto que as pessoas conseguem fazer conseguem produzir cada desenvolvedor a equipe consegue produzir a útil para fazer estimativas de custo a recurso então quantas pessoas vão ser necessárias a conseg também sempre dizer número de erros então você consegue ter históricos e falar olha a gente tem tantos erros por ponto de função há também em relação ao ponto de função com linhas de códigos e consegue
dizer tal esse ponto de função um ponto de função na minha equipe é equivale à x linhas de código em tal linguagem de programação então a métrica bem interessante a e ela é baseada em duas informações principais são as transações que eles chamam de funções internacionais e dos dados necessários chance chamados de funções de dados o detalhe do ponto de função é que é uma forma empírica ou seja é uma fórmula que o pessoal foi desenvolvendo com o tempo experimentalmente chegaram à fórmula e acharam que o valor dela é interessante que é a forma interessante
existem diversas organizações que definem como calcular essa forma então não existe uma fórmula só um jeito só de você calcular ponto de função o que é um problema então existem dois padrões iso por exemplo que dizem como calcular pontos de função tem o pessoal da spu gui e do mesmo que definem formas diferentes a ideia geral é a mesma mas os detalhes variam dependendo da organização e como que se calcula pontos de função o processo e se daqui a primeira coisa que tem que ser feita é obter documentação então obter informação sobre o que tem
que ser feito é o que vai ser feito no projeto depois de terminar o escopo ea fronteira então tem que saber o que que vai ser desenvolvido e aí sim se mede as funções de dados e as funções de transação a partir dessas informações se calcula o tamanho funcional do software em pontos de função e depois de documento e ponto então como eu como se mede em função de dados então a função de dado a idéia dela é que elas vão representar os dados agrupados ou informações de controle que o software precisa de algum tipo
por algum motivo então existem dois tipos de funções de dados são os arquivos de lógica interna que são dados que o próprio software gerencia ele cuida daquilo e os arquivos de interface está em externa que são os dados que o software precisa mais que são gerenciados por algum outro software um outro sistema externo então outra aplicação cuida disso então por exemplo uma loja virtual a você pode dizer que os dados do pedido categoria vem daí produto são todas responsabilidades da loja a loja cuida disso daqui mas externamente o é o dados do cliente é cuidado
pelo sistema separado que o sistema de crm então como que você como se mede isso há a as normas dizem como você vai medir como calcular cada uma dessas informações como dizer o que é uma função de dado que não é e aí tem também uma tabela que diz com quantos pontos de função você tem para cada função de dados e existe uma complexidade que ela varia de baixo média alta é esse baixa e média alta também está definido como calcular o que é baixo que a média o que é alto então basicamente a quantidade
de informação que tem lá faz diferença se obviamente será interno e externo também faz diferença não se usa essa tabela para calcular o quanto quantos pontos de função se tempo em determinada função de dados a mesma idéia usada para a função transnacional então a idéia da função tradicional é que ela vai tratar de processos elementares então é um processo que é o a mínima unidade menor possível no dentro do seu software e tem três tipos de funções transnacionais são as entradas em cada externas que elas basicamente representam entrada de dados então alguém passa algum dado
pelo sistema existe também a consulta externa que é o pedido de alguma informação para o sistema um pedido simples a biobío tem essa informação aqui mostra tal informação do do sistema e tem a saída externa que é similar à consulta externa só que não é simples ela pode ter um algoritmo complexo pode ter um cálculo complexo que é feito a e pode guardar os dados de alguma forma esse específica para resolver o problema então a e pode alterar o comportamento do sistema também então a saída externa basicamente tem mais complexidade um exemplo disso daqui a
de entrada externa consulta e saída pensa numa loja virtual de novo a entrada externa pode ser a edição de produto informar dados de compra adicional produz na compra tudo isso a entrada de dados está informando dados o usuário informando dados a consulta você tem a procurar produto tudo bem o usuário tem que informar alguma coisa que tem que dizer como no produto mas é algo bastante simples que em forma e já tem a resposta e tem também os ver ver os dados do cliente também é uma consulta externa não tem cálculo nenhum complexo nisso agora
tem alguns cálculos mais complexo como por exemplo o relatório de vender é algo mais complexo então a saída externo e emitir nota fiscal também algo mais complexo então também é uma saída externo assim como na função de dar nas funções de dados as funções transnacionais têm uma forma de você calcular o ponto de função a partir do tipo se é entrada sair do consulta e à complexidade e à norma vai dizer como com o complexo é como calcular essa complexidade ea partir dessas informações você consegue calcular pontos de função usando uma forma essa forma ela
varia dependendo do tipo de sistema então se você está fazendo desenvolvimento projetos de melhoria ou se já tem o seu já foi feito um projeto de melhoria a sua valia fórmula faria a o que eu vou mostrar pra vocês é a fórmula para desenvolvimento tal forma desenvolvimento é simplesmente somar você faz a soma do tamanho das funções de dados com a soma das funções transacionais e pronto você tem um ponto de função tradicionalmente que se usa é o ponto de função ajustado que ele considera alguns ajustes são 14 características que são levados em conta que
você precisa dar uma nota de 0 a 5 exemplos de características processamento de dados distribuídos então se tiver processamento distribuído você tem que calcular levar isso em conta o desempenho se o desempenho for algo importante você também precisa levar em conta é dar uma nota no valor de 0 a 5 a facilidade de operação instalação se for importante também conto esses são múltiplos sites um site só isso também tem que ser levado em conta no ajuste e à forma com um ponto de função ajustado tem uma variação de mais ou menos 35% ea fórmula é
essa daqui então são os pontos de função calculados anteriormente mais a somatória de cada um dessas características do peso dessas características x 0 01 em somar 0 65 ou seja é bem explica claramente é um número bem em pico a para calcular isso aí existe também uma forma de você relacionar pontos de função a linguagem de programação estão aqui têm uma tabela que mostra a relação de quanto é um ponto de função prom uma determinada linguagem de programação e trabalha com médio mínimo e máximo mas dá para perceber claramente que se você considerar a assembléia
é bastante se você pegar uma linguagem comum que seja é c++ já é uma diferença bastante grande e tem relação também de ponto de função com o homem hora mas nessas nesses casos aqui nessas relações um interessante é o histórico da empresa então a empresa tem um histórico ela deve manter um histórico dela para saber exatamente como funciona essa relação da mesma forma o homem hora como linguagem de programação linha de código de programação e se você considerar o manual a das pulgas da mesma tanto faz ele vai falar como você não conta como exatamente
você deve trabalhar com pontos de função então eles tentam detalhar o máximo possível como fazer esse cálculo para ter o mínimo de subjetividade mas apesar disso tudo a tem um pouco de subjetividade e esse é a grande crítica do ponto de função apesar de ter um monte de regra ainda tem uma certa dose de subjetividade que atrapalha a medição anterior ricamente duas pessoas não deveriam dar valores diferentes e que o pessoal alega aqui pessoas bem treinadas conseguem fazer isso mas é difícil é difícil treinar também a ser tão bem treinado e um outro problema é
que é uma forma empírica não tem jeito ela é baseada na experiência nos cálculos muita gente usando essa forma mas ainda assim ela não tem uma relação tão real com os valores de linha de código depende do histórico da empresa empresa precisa relacionar isso e vai depender da equipe vai depender de várias coisas e um outro problema que ela não tem um significado real então o que é um ponto de função por disfunção significa nada significa a relação de pontos função com alguma outra métrica interessante então como conclusão é ela tem seus problemas como qualquer
outra métrica não é uma métrica perfeita porque não existe métrica perfeita mas ainda assim ela útil e é usada em alguns editais estão alguns anos 15 anos era bastante comum ou empresas públicas usarem são pra fazer pra fazer uma licitação fala olha a gente precisa de uma empresa que desenvolva x pontos de função mas hoje em dia isso daí acabou não sendo tão popular assim não é tão comum empresas trabalharem com isso mas a idéia é muito interessante e existem algumas variações de ponto de função exige por exemplo ponto de casos de uso que a
mesma idéia só que para casos de uso então você consegue medir a complexidade do seu software só através do caso de uso e analisando algumas características do caso de uso então isso foi à aula sobre métrica até a próxima aula [Música] [Música] [Música]