Gerência e Qualidade de Software - Aula 10 - Métricas

UNIVESP
21 Jun 201825:53

Summary

TLDRProfessor Fábio Siqueira's lecture delves into the realm of software quality metrics, emphasizing the importance of quantifying subjective attributes like user interface aesthetics. He discusses the necessity of objective measurements for assessing software quality, the challenges in evaluating certain characteristics, and the utility of metrics in project management and process improvement. The talk covers various types of metrics, including product metrics, and highlights the Function Points method as a way to measure software size and functionality, despite its empirical nature and potential for subjectivity.

Takeaways

  • 😀 Software quality metrics are essential for quantitatively evaluating the aesthetic and user satisfaction of software interfaces.
  • 📐 Metrics provide a numerical way to assess whether software has achieved the desired quality attributes, which is crucial for discussions and improvements.
  • 🔍 The challenge with quality attributes like aesthetics is that they are not always easy to quantify, yet metrics are necessary for objective measurement.
  • 📈 Metrics are used to measure the product, process, and project in software development, serving different purposes such as quality evaluation and defect prediction.
  • 🛠️ A good metric should be easy to calculate, intuitive, unambiguous, consistent, and not dependent on the programming language used.
  • 📊 Metrics are indicators that may not always have a direct correlation with the expected outcomes but are used to aid decision-making.
  • 🔑 Traditionally, metrics are divided into three types: product metrics, project metrics, and process metrics, with the focus of this script being on product metrics.
  • 🔄 Product metrics are used to measure the quality characteristics of the software and can be challenging to measure directly, often requiring indirect measurements.
  • 🔢 The number of lines of code is a widely used but controversial metric due to its simplicity and potential misinterpretation of productivity.
  • 📚 Function points are a method to measure the functional size of software, allowing for estimation of development time and cost without actual implementation.
  • 🔄 Function points consider both data functions and transaction functions, with different levels of complexity affecting the calculation of points.
  • 🔄 Adjusted function points take into account 14 characteristics of the software, allowing for a more nuanced measurement that can vary by up to 35%.

Q & A

  • What is the main topic discussed by Professor Fábio Siqueira in the video?

    -The main topic discussed is software metrics, specifically how they are used to evaluate and measure the quality characteristics of software.

  • Why is it important to quantify the quality characteristics of software?

    -Quantifying quality characteristics is important because it provides a measurable way to assess whether the software meets the expected quality standards, helps identify potential issues, and aids in project management and process control.

  • What are the problems associated with evaluating quality characteristics without metrics?

    -Without metrics, it's difficult to objectively evaluate quality characteristics, leading to potential disagreements and lack of a clear direction for improvements.

  • What are the types of metrics mentioned in the script?

    -The script mentions three types of metrics: product metrics, project metrics, and process metrics.

  • What is the purpose of product metrics as described in the video?

    -Product metrics are used to measure the quality characteristics of a software product, also known as prediction metrics, to foresee if the software will possess certain qualities.

  • What are the characteristics of a good metric according to the video?

    -A good metric should be easy to calculate, intuitive, unambiguous, consistent in measurement units, not dependent on programming language, and useful for decision-making.

  • Why are static metrics important in software development?

    -Static metrics are important because they can be analyzed without executing the software, providing insights into the software's structure and potential issues before the software is run.

  • Can you provide an example of a static metric mentioned in the script?

    -An example of a static metric mentioned is the number of lines of code, which is easy to measure and has been widely used in software engineering.

  • What is the Function Points method and why is it significant?

    -The Function Points method is a way to measure the functional size of software, allowing for the estimation of development time and cost before the implementation phase.

  • What are the two main components used to calculate Function Points?

    -The two main components are Data Functions, which represent data managed by the software, and Transactional Functions, which represent elementary processes within the software.

  • What are the criticisms of using the Function Points method?

    -Criticisms include its empirical nature, which can introduce subjectivity into the measurement process, the difficulty in establishing a real relationship with other metrics like lines of code, and its dependence on the company's historical data for accurate calculation.

  • What is the adjusted Function Points method and how does it differ from the basic Function Points method?

    -The adjusted Function Points method considers 14 general system characteristics, each rated on a scale from 0 to 5, and adjusts the basic Function Points calculation accordingly, accounting for factors such as distributed data processing, performance, and ease of operation.

Outlines

00:00

📏 Introduction to Software Metrics

Professor Fábio Siqueira introduces the concept of software metrics, emphasizing the importance of quantifying software quality attributes to facilitate objective evaluation and improvement. He discusses the need for measurable, non-subjective criteria to assess software interfaces and other quality characteristics, and how metrics can help identify potential issues and manage projects effectively.

05:00

🔍 Characteristics of Good Metrics

The video segment delves into the characteristics that make a metric effective, such as ease of calculation, intuitive understanding, and consistency in measurement units. It also touches on the importance of metrics not being ambiguous or dependent on programming languages, and how they should be useful in reflecting the quality of software. The professor illustrates these points with examples and discusses the challenges in creating metrics that meet all these criteria.

10:02

📈 Types of Metrics and Indirect Measurements

This paragraph explains the three traditional types of metrics: product metrics, project metrics, and process metrics, focusing on product metrics in this lesson. It discusses the challenges of indirect measurement of certain software qualities like usability and how properties related to ISO 25000 can be used to measure these attributes. The segment also covers static and dynamic metrics, providing examples such as lines of code and execution time.

15:02

🤖 Function Points: Measuring Software Functionality

The professor introduces function points as a method to measure the functional size of software, allowing for predictions about the software's characteristics before its implementation. He explains the concept of function points, which are based on transactions (external inputs, outputs, and inquiries) and data functions (internal and external files). The segment also covers how to calculate function points and the empirical nature of this method, including its advantages and limitations.

20:03

🔄 Adjusted Function Points and Subjectivity

The video discusses the concept of adjusted function points, which take into account 14 characteristics that can influence the software's complexity. It explains how to calculate these points by summing up the function points of data and transactional functions, and then adjusting them based on the characteristics' scores. The segment also addresses the subjectivity involved in function point analysis and its empirical nature, which can lead to variations in measurements.

25:03

📚 Conclusion and Future Outlook on Function Points

In the concluding segment, the professor summarizes the discussion on function points, acknowledging their utility despite the inherent subjectivity and empirical basis. He mentions the historical use of function points in tenders and public companies and notes a decline in their popularity in recent years. The segment also briefly introduces variations of function points, such as use case points, which measure software complexity through use cases.

Mindmap

Keywords

💡Metrics

Metrics in the context of the video refer to quantitative measures used to assess the quality attributes of software. They are essential for providing an objective way to evaluate whether the software meets the desired quality standards. For example, the script mentions using metrics to measure the 'aesthetics of the user interface,' which is how pleasing and satisfactory the interface is for the user.

💡Software Quality

Software quality is the degree to which software possesses desired characteristics such as usability, maintainability, and reliability. The video discusses how metrics are used to evaluate these qualities, emphasizing the importance of defining non-functional requirements with objective values to avoid subjective discussions about whether the software is sufficient or not.

💡User Interface Aesthetics

User interface aesthetics is a quality attribute that pertains to how enjoyable and satisfactory the interaction with the software is for the user. The script uses this term to illustrate the challenge of quantifying subjective qualities, highlighting the need for metrics that can provide a numerical evaluation of what is otherwise a qualitative assessment.

💡Quantitative Evaluation

Quantitative evaluation is the process of assessing something through numerical data. The video emphasizes the preference of engineers for this type of evaluation in software development, as it provides a clear and objective measure of whether the software has achieved its quality goals.

💡Non-functional Requirements

Non-functional requirements are aspects of software that define the conditions under which the software should perform, rather than specifying the functions the software should perform. The video explains the importance of defining these requirements with objective values to avoid ambiguity and facilitate measurement.

💡Measurement

Measurement in the video is the act of quantifying attributes or characteristics of software to evaluate its quality. It is used to determine if the software has met the expected quality levels and to identify potential issues, such as the number of defects, which can indicate problems in the software's future performance.

💡Product Metrics

Product metrics are a type of metric that focuses on measuring the quality characteristics of the software product itself. The video discusses how these metrics can be used to predict whether the software will possess certain qualities, such as usability or maintainability, before it is fully developed.

💡Function Points

Function points are a measure of the functional size of software, allowing for the estimation of the size of the software system without actually building it. The script explains how function points are calculated based on 'data functions' and 'transactional functions,' and how they can be used to estimate development time and cost.

💡Maintainability

Maintainability is a software quality attribute that refers to how easily the software can be modified or enhanced after its initial development. The video uses the concept of maintainability to illustrate how indirect measurements, such as the number of lines of code, can be related to the ease of analysis and thus to maintainability.

💡Static and Dynamic Metrics

Static metrics are those that can be analyzed without executing the software, such as the number of lines of code. Dynamic metrics, on the other hand, require the software to be executed to gather data, such as execution time or memory usage. The video explains the difference between these two types of metrics and provides examples of each.

💡Subjectivity

Subjectivity refers to the potential for personal bias or variation in the measurement process. The video discusses the criticism of function points due to their empirical nature, which can introduce a degree of subjectivity into the measurement of software size and quality.

Highlights

Professor Fábio Siqueira discusses the importance of metrics in evaluating software quality.

Aesthetics of the user interface is defined as the degree of pleasant and satisfying interaction for the user.

The necessity of quantifying software quality attributes for objective evaluation and improvement.

The challenge of evaluating subjective software quality characteristics through quantitative metrics.

Metrics are essential for defining non-functional requirements with objective values to avoid disputes.

Measuring software quality to assess if the expected quality is achieved and to identify potential problems.

The use of metrics for project management, such as estimating the effort and progress of software development.

Definition of a metric as a quantitative measure of a system, component, or product's attribute.

Metrics should be easy to calculate, intuitive, and not ambiguous to be effectively used in decision-making.

Metrics should not be dependent on programming languages to maintain consistency across projects.

The importance of metrics being useful despite not fulfilling all ideal characteristics.

Traditional division of metrics into product metrics, project metrics, and process metrics.

Product metrics help measure software quality attributes and are also known as prediction metrics.

The difficulty of directly measuring certain software quality attributes, necessitating indirect measurements.

ISO 25000 standard model's approach to linking software quality characteristics with measurable properties.

Examples of maintainability metrics, such as lines of code, and their correlation with software analysis ease.

Static and dynamic metrics, with examples including lines of code and execution time.

The famous lines of code metric, its ease of measurement, and its historical significance in software engineering.

Criticisms of the lines of code metric, including its dependence on programming language and potential misrepresentation of productivity.

Introduction to the concept of Function Points as a measure of software's functional size.

Function Points' usefulness in estimating development time, cost, and productivity.

The empirical nature of Function Points calculation and the existence of different standards for calculation.

The process of calculating Function Points, including obtaining documentation and measuring data functions and transaction functions.

The subjective nature of Function Points and its criticism despite being a widely used metric.

Alternatives to Function Points, such as Use Case Points, for measuring software complexity through use cases.

Transcripts

play00:00

[Música]

play00:12

olá eu sou professor fábio siqueira e

play00:15

nessa hora vou falar sobre métricas

play00:17

então quando a gente considera as

play00:19

características de qualidade de software

play00:21

elas têm sempre uma definição desse tipo

play00:23

aqui como por exemplo a estética da

play00:25

interface com o usuário é o grau que a

play00:27

interface do usuário permite interação

play00:29

agradável satisfatória para o usuário

play00:31

legal ótimo então eu preciso ver o grau

play00:35

disso no software

play00:36

mas como eu e como específico isso como

play00:39

eu coloco isso no software como eu

play00:42

consigo colocar o grau de alguma

play00:45

característica se agradável da interface

play00:47

agradável

play00:48

então eu posso simplesmente falar que a

play00:50

interface tem que ser muito agradável

play00:51

para o usuário o que é muito que é pouco

play00:55

o que é médio com o que eu consigo

play00:56

avaliar isso é preciso ter números

play00:58

então a gente engenharia gosta sem

play01:00

trabalhar com alguma forma de avaliação

play01:02

quantitativa

play01:04

você precisa ter um número para você

play01:05

dizer atingiu não atingir seu não

play01:08

atingir bons fazer alguma coisa para

play01:09

melhorar

play01:11

então um problema sério que a gente tem

play01:13

quando eu tenho um atributo uma

play01:14

característica qualidade desse tipo

play01:16

característica subir cura são

play01:18

características é que nem sempre é fácil

play01:22

avaliar a ela mas a gente precisa

play01:24

avaliar de algum jeito então de alguma

play01:26

forma a gente precisa ter métrica a

play01:28

gente precisa conseguir medir a gente

play01:30

conseguir precisa conseguir chegar algum

play01:33

número que consegui expressar se a gente

play01:36

atingiu aquela cueca aquela

play01:38

característica esperada ou não então se

play01:41

você definir um requisito não funcional

play01:42

sem usar um valor objetivo

play01:45

você tem sempre a possibilidade de

play01:47

discussão alguém pode chegar e falar não

play01:48

para mim não está suficiente pra outra

play01:51

pessoa falaram pra mim tá suficiente e

play01:53

fica essa discussão que não leva a lugar

play01:55

nenhum então a gente já tem números até

play01:57

alguma forma objetiva de medir

play02:00

mesmo que seja uma característica de

play02:02

difícil aparente difícil medição

play02:05

então o que a gente vai medir num

play02:08

projeto de software

play02:09

a agente média o produto o processo e o

play02:11

projeto então aula de hoje a gente vai

play02:15

focar no produto processo projeto vai

play02:18

ser tratado nessa aula aqui mas pra que

play02:20

a gente mede então o motivo principal é

play02:23

esse daí que eu coloquei

play02:25

que é pra gente conseguir a avaliar a

play02:27

qualidade do software tenha consigo

play02:29

medir para saber se eu atingiam a

play02:31

qualidade esperada mas também a gente

play02:33

pode medir alguma característica para

play02:35

descobrir corrigir algum problema que

play02:37

tem é potencialmente no software não se

play02:39

pode medir a quantidade de defeitos para

play02:43

você saber se tem algum problema pode

play02:45

dar algum problema no software futuro a

play02:47

uma outra vantagem outro um outro uso da

play02:51

medição é pra gente conseguisse mais

play02:53

esforço

play02:54

então você sabe eu já fiz eu tenho 20

play02:56

casos de uso para serem implementados

play02:58

eu já fiz dez então faltam se eu já fiz

play03:01

50% obviamente depende do da

play03:04

complexidade do caso de uso mas

play03:06

dependendo de como você mede isso você

play03:08

consegue ter uma estimativa de quanto

play03:10

falta que é bastante útil para gestão de

play03:12

projetos e também pra você controlar o

play03:14

andamento do processo a essa atividade é

play03:17

que já foi feita então já estou

play03:19

terminando essa atividade possa executar

play03:21

essa essa atividade aqui tá foi 50%

play03:24

feita então a próxima atividade

play03:27

a gente já pode começar a planejar ela

play03:29

então pra medir a gente já teve métrica

play03:33

e o que é uma métrica então né trica é

play03:36

uma medida quantitativa do grau que o

play03:39

sistema componente o produto possui um

play03:42

determinado tributo então o importante

play03:44

aqui é a questão do quantitativo

play03:46

então é algo numérico e têm um grau a a

play03:52

gente consegue ter um número

play03:54

eu consigo dizer isso daqui têm valor x

play03:57

para um determinado a componente

play04:00

processo ou produto

play04:01

então a gente vai avaliar de uma forma

play04:03

quantitativa a qualidade e as métricas

play04:06

elas vão ser usadas como indicadores são

play04:09

elas indicam alguma coisa não

play04:11

necessariamente é verdade não

play04:14

necessariamente é aquilo que a gente tem

play04:17

de informação que a métrica da tem uma

play04:19

correlação direta e objetiva com aquilo

play04:22

a gente espera que tenha mas ela indica

play04:24

alguma coisa que pode ser que aconteça a

play04:28

gente vai usar métrica pra ajudar a

play04:30

gente a tomar a decisão

play04:32

e quando a gente pensa em metro que ela

play04:34

tem que ter algumas boas características

play04:36

então quando você pensa uma métrica

play04:38

ela precisa é a primeira coisa precisa

play04:40

ser fácil de calcular se você tiver uma

play04:42

métrica que é muito complexa de você

play04:44

calcular tem uma forma muito complicada

play04:47

você pegar uma informação muito

play04:48

complicado

play04:49

ela acaba se tornando um pouco prático

play04:51

não é conseguir usar essa métrica a na

play04:54

prática uma outra característica

play04:56

importante é que ela tem que ser

play04:59

intuitivo

play05:00

então se você tem uma métrica que é ela

play05:02

estranha se eu falar quando aumenta o

play05:05

valor disso aqui significa que a

play05:07

complexidade do software diminuiu

play05:10

ela fica meio estranho então aumentou

play05:13

alguma coisa diminui puxa o que está

play05:15

acontecendo ou pior nessa tem algumas

play05:17

métricas você pode definir uma meta que

play05:20

é a partir de uma faixa de valor até um

play05:22

crescimento diferente do que há a faixa

play05:26

de valor inferior a ficar confuso eu

play05:28

olho para o valor eu não sei muito bem

play05:30

dizer o que ela quer

play05:31

então uma boa meta não pode ser assim

play05:33

ela tem que ser intuitivo subir um pouco

play05:36

eu consigo ter um reflexo e consigo é

play05:39

ver o reflexo claramente na qualidade

play05:41

uma outra característica importante ela

play05:44

não ser ambígua

play05:45

então se você tem uma métrica que fala

play05:46

puxa tem esse valor eu não consigo dizer

play05:48

se é isso é bom e ruim

play05:51

um abono métrica gente deveria conseguir

play05:53

claramente olhar para o valor e dizer o

play05:55

que significa e ela também precisa ser

play05:58

consistente no uso de medidas é nuno uso

play06:01

de unidades dimensões então se tiver uma

play06:03

médica que tem um monte de unidade

play06:05

dimensão colocados é a métrica é pessoa

play06:08

linha de código a função por segundo o

play06:13

que significa isso não é claro então

play06:16

você tem que ter uma métrica que ela

play06:17

seja bem direta em relação às unidades

play06:19

dela se olha você consegue saber a data

play06:22

significa isso eu consigo a trabalhar

play06:25

com isso

play06:25

a outra característica importante ela

play06:28

não ser dependente em linguagem de

play06:29

programação

play06:30

então a gente sabe que a linguagem de

play06:32

programação tem um impacto muito grande

play06:33

no desenvolvimento

play06:35

se pegar uma linguagem você pega uma

play06:37

linguagem com você e pega uma linguagem

play06:39

como o clube vai dar um impacto bem

play06:42

diferente no seu projecto e pegar sendo

play06:44

então meu deus do céu vai dar

play06:46

tem uma dificuldade muito maior de

play06:48

desenvolver então tem um impacto disso

play06:50

mas o ideal aqui

play06:52

há uma boa métrica não seja impactado

play06:55

por isso e acima de tudo uma boa métrica

play06:59

ela precisa ser útil então se você

play07:02

aplicar a métrica ao se medir um

play07:05

determinado valor e vai ser o último

play07:07

você sabe alguma informação o

play07:09

interessante dessas características é

play07:11

que tem algumas métricas que não cumprem

play07:14

com todas elas

play07:15

nessa aula vou mostrar uma métrica que

play07:17

não cumprir todas essas características

play07:19

aqui e ainda assim ela é útil então as

play07:22

métricas não precisam ter todas essas

play07:23

características para ser útil para elas

play07:26

serem úteis

play07:26

o ideal seria que fosse mas às vezes é

play07:29

difícil gerar um momento interessante

play07:31

são as métricas se dividem

play07:36

tradicionalmente em três tipos médica

play07:38

métricas de produto métricas de projeto

play07:41

e métricas de processo

play07:43

nessa aula eu falar só sobre métricas de

play07:45

produto

play07:46

a médica de projeto as métricas de

play07:49

projetos são usados pelo gerente de

play07:50

projeto para conseguir acompanhar as

play07:52

atividades dele e as métricas de

play07:54

processo são usadas para a melhoria do

play07:56

processo então consigo medir o processo

play07:59

e eu sei que o processo está bom tá ruim

play08:02

e consigo usar essa informação para a

play08:03

melhoria tão falando especificamente

play08:06

sobre métricas de produto a que ela

play08:10

porque ela serve lançaram em pra ajudará

play08:13

a medir alguma característica de

play08:15

qualidade do produto elas são chamadas

play08:18

também métricas de previsão então você

play08:20

mede aquela característica você consegue

play08:22

prevê a all é se essa característica se

play08:25

o software vai ter aquela característica

play08:27

ou não pensando em software pode usar

play08:29

para outras coisas também e é o

play08:32

desagradável de métricas de produto é

play08:34

que nem sempre você consegue fazer uma

play08:36

medição direta da métrica

play08:38

então você pega por exemplo eficiência

play08:41

da execução

play08:42

o comportamento no tempo mais

play08:44

especificamente isso é fácil de medir

play08:46

diretamente

play08:46

você pega um cronômetro e vê lá o tempo

play08:48

quanto tempo estava demorando pra fazer

play08:50

isso aqui hoje eu consegui ver o

play08:52

comportamento no tempo

play08:53

isso é fácil enxergar mas tem coisas que

play08:56

a gente não consegue medir diretamente

play08:57

como por exemplo não tem habilidade

play08:59

usabilidade como comércio diretamente a

play09:02

mano tem viabilidade

play09:04

como que eu meço de

play09:05

diretamente à usabilidade não dá a gente

play09:08

não consegue emitir diretamente

play09:09

então a gente tem que fazer algumas

play09:10

medições indiretas

play09:13

então pra fazer essas medições a gente

play09:16

acaba relacionando as propriedades estão

play09:18

pegando o modelo da iso 25 mil a ideia

play09:22

que vai ter características sobre

play09:23

características e aí você vai ter

play09:25

propriedades

play09:26

essas propriedades são o que você vai

play09:28

medir e é isso que a gente consegue

play09:30

medir

play09:30

então por exemplo por exemplo

play09:32

manutenabilidade têm analisa análise

play09:35

habilidade ou seja com é o quão fácil é

play09:39

analisar o produto de software e como

play09:44

que a gente mede isso diretamente

play09:45

difícil me diz directamente então o que

play09:48

a gente pode fazer é relacionar uma

play09:51

métrica como por exemplo o número de

play09:54

linhas de código a análise habilidade

play09:57

não se fala por si um software que tem

play09:59

poucas linhas de código tem poucas

play10:02

linhas de código é mais fácil de

play10:03

analisar do que um software que tem

play10:05

muita linha de código

play10:07

então isso daí é uma relação que a gente

play10:09

fez

play10:10

então a gente está considerando que tem

play10:11

uma correlação entre essas informações e

play10:14

com isso a gente consegue analisar é

play10:17

consegue calcular se o software é fácil

play10:22

de analisar ou não um outro exemplo de

play10:24

análise habilidade outra métrica que a

play10:27

gente podia poderia considerar é o

play10:29

número de filhos de uma classe falar

play10:30

classes que têm um menor que é muito

play10:32

grande

play10:32

são mais difíceis de analisar no

play10:34

clássico de amanhã daqui é pequena então

play10:37

só tem é 2 nível geral que é mais fácil

play10:40

analisar tudo bem é é uma outra

play10:43

característica é uma outra métrica que a

play10:46

gente consegue tirar dessa informação e

play10:51

assim como o caso da revisão é quando a

play10:55

gente trabalha com métrica tem duas

play10:57

formas tem dois tipos de métrica

play10:59

você tem métricas que são estáticas e

play11:03

métricas são dinâmicas as métricas

play11:05

estatísticas são métricas que você

play11:07

consegue analisar é a partir de uma

play11:10

representação do do seu sol então você

play11:13

não precisa executar o software você

play11:15

pega essa representação do software e

play11:16

analisa

play11:18

as dinâmicas por outro lado você precisa

play11:20

ter um exemplo precisa executar o

play11:23

software

play11:23

então você precisa executar para

play11:24

calcular alguma coisa então por exemplo

play11:26

uma métrica estática é o número de

play11:29

linhas de código

play11:30

uma métrica dinâmica seria o tempo de

play11:34

execução ou a quantidade de memória que

play11:37

o software precisa então você só

play11:38

executando o software vai conseguir ter

play11:40

um valor preciso disso daí a uma das

play11:46

métricas mais famosas é a número de

play11:50

linhas de código era bastante famosa

play11:52

porque é muito fácil de ser medida

play11:54

então você pega qualquer código você

play11:56

consegue facilmente ver o número de

play11:57

linhas de código dele é uma métrica aqui

play12:00

foi bastante usada pela engenharia de

play12:03

software no começo tem gente solta a a

play12:06

vantagem dela que é muito fácil de medir

play12:08

a e uma outra vantagem é que ela tem

play12:11

muito trabalho sobre sobre essa métrica

play12:14

porque ela foi bastante usada era fácil

play12:17

e é o que muitas vezes se tinha no

play12:19

começo nos primórdios da engenharia de

play12:21

software mas a e por causa disso a gente

play12:24

tem há muito uso e relacionando linhas

play12:28

de código com outras coisas

play12:30

então por exemplo você tem erros por mil

play12:32

linhas de código que a gente chama de

play12:34

ken block a tem custo por mil linhas de

play12:38

código então você tem essas informações

play12:39

que você pode usar

play12:41

qual é o problema da da linha de código

play12:44

a linha de código tem um problema muito

play12:46

sério que ela é muito independente da

play12:49

linguagem de programação

play12:50

é claro que faz muita diferença se você

play12:52

tem é um código feito em c1 código feito

play12:55

em python ao número de linhas de código

play12:57

você completamente diferente então você

play13:00

precisa levar isso em consideração um

play13:02

outro problema de linha de código aquela

play13:03

finaliza bons projetos bombons

play13:06

programadores muitas vezes é um

play13:08

programador que é muito vergonhoso

play13:10

escreve bastante coisa para resolver um

play13:12

problema à ele pode parecer muito

play13:15

produtivo escrever um monte de linha de

play13:17

código enquanto que um programador que

play13:18

demora muito pra fazer alguma coisa mas

play13:21

escreve um código enxuto direto e

play13:23

eficiente ele pode parecer menos

play13:25

produtivos e usa a linha de código

play13:27

produtividade

play13:28

então além de código tem esse tipo de

play13:30

problema

play13:31

ah e por causa disso o uso de linhas de

play13:35

código hoje em dia atualmente é bem

play13:37

discutível mas ainda assim como tem

play13:39

bastante trabalho é importante conhecer

play13:41

uma outra métrica muito interessante é é

play13:46

são os pontos de função que é o ponto de

play13:48

função é uma forma de você medir o

play13:51

tamanho funcional do seu software

play13:54

então você consegue fazer uma medição do

play13:56

tamanho do sistema do software que vai

play13:58

construir sem construir

play14:01

então durante a atividade de análise

play14:04

requisitos você consegue calcular o

play14:07

ponto de função de um determinado

play14:08

software e aí você consegue dizer você

play14:11

consegue tirar algumas informações

play14:12

algumas revelações interessantes por

play14:14

exemplo quanto tempo vai demorar para

play14:16

construir aquele software o quanto custa

play14:18

para construir o software então é

play14:20

interessante que você não consegue

play14:22

descobrir o tamanho

play14:23

antes da implementação qual que o uso

play14:26

disso há a questão de produtividade

play14:28

bastante uso é bastante útil questão de

play14:31

qualidade a gente consegue mediantes a

play14:33

ver quanto que as pessoas conseguem

play14:35

fazer conseguem produzir cada

play14:37

desenvolvedor a equipe consegue produzir

play14:39

a útil para fazer estimativas de custo a

play14:43

recurso então quantas pessoas vão ser

play14:46

necessárias

play14:47

a conseg também sempre dizer número de

play14:49

erros

play14:50

então você consegue ter históricos e

play14:52

falar olha a gente tem tantos erros por

play14:56

ponto de função há também em relação ao

play15:00

ponto de função com linhas de códigos e

play15:02

consegue dizer tal esse ponto de função

play15:04

um ponto de função na minha equipe é

play15:07

equivale à x linhas de código em tal

play15:10

linguagem de programação então a métrica

play15:12

bem interessante a e ela é baseada em

play15:16

duas informações principais são as

play15:19

transações que eles chamam de funções

play15:21

internacionais e dos dados necessários

play15:23

chance chamados de funções de dados

play15:27

o detalhe do ponto de função é que é uma

play15:30

forma empírica ou seja é uma fórmula que

play15:34

o pessoal foi desenvolvendo com o tempo

play15:37

experimentalmente chegaram à fórmula e

play15:39

acharam que o valor dela é interessante

play15:41

que é a forma interessante existem

play15:44

diversas organizações que definem como

play15:46

calcular essa forma então não existe uma

play15:49

fórmula só um jeito só de você calcular

play15:51

ponto de função o que é um problema

play15:53

então existem dois padrões iso por

play15:56

exemplo que dizem como calcular pontos

play15:58

de função

play15:58

tem o pessoal da spu gui e do mesmo que

play16:01

definem formas diferentes a ideia geral

play16:03

é a mesma mas os detalhes variam

play16:05

dependendo da organização e como que se

play16:09

calcula pontos de função o processo e se

play16:11

daqui a primeira coisa que tem que ser

play16:13

feita é obter documentação então obter

play16:16

informação sobre o que tem que ser feito

play16:19

é o que vai ser feito no projeto

play16:21

depois de terminar o escopo ea fronteira

play16:22

então tem que saber o que que vai ser

play16:25

desenvolvido e aí sim se mede as funções

play16:27

de dados e as funções de transação

play16:30

a partir dessas informações se calcula o

play16:32

tamanho funcional do software em pontos

play16:34

de função e depois de documento e ponto

play16:37

então como eu como se mede em função de

play16:40

dados

play16:41

então a função de dado a idéia dela é

play16:44

que elas vão representar os dados

play16:47

agrupados ou informações de controle que

play16:50

o software precisa de algum tipo por

play16:52

algum motivo

play16:53

então existem dois tipos de funções de

play16:56

dados são os arquivos de lógica interna

play16:58

que são dados que o próprio software

play17:00

gerencia ele cuida daquilo e os arquivos

play17:03

de interface está em externa que são os

play17:06

dados que o software precisa mais que

play17:08

são gerenciados por algum outro software

play17:11

um outro sistema externo então outra

play17:14

aplicação cuida disso

play17:15

então por exemplo uma loja virtual a

play17:17

você pode dizer que os dados do pedido

play17:19

categoria vem daí produto são todas

play17:22

responsabilidades da loja a loja cuida

play17:24

disso daqui mas externamente o é o dados

play17:29

do cliente é cuidado pelo sistema

play17:31

separado que o sistema de crm

play17:34

então como que você como se mede isso há

play17:38

a as normas dizem como você vai medir

play17:40

como calcular cada uma dessas

play17:42

informações como dizer o que é uma

play17:45

função de dado que não é

play17:46

e aí tem também uma tabela que diz

play17:50

com quantos pontos de função você tem

play17:53

para cada função de dados

play17:54

e existe uma complexidade que ela varia

play17:57

de baixo

play17:58

média alta é esse baixa e média alta

play18:00

também está definido como calcular o que

play18:03

é baixo que a média o que é alto

play18:05

então basicamente a quantidade de

play18:07

informação que tem lá faz diferença se

play18:09

obviamente será interno e externo também

play18:12

faz diferença não se usa essa tabela

play18:14

para calcular o quanto quantos pontos de

play18:16

função se tempo em determinada função de

play18:19

dados

play18:19

a mesma idéia usada para a função

play18:21

transnacional

play18:22

então a idéia da função tradicional é

play18:24

que ela vai tratar de processos

play18:26

elementares

play18:27

então é um processo que é o a mínima

play18:30

unidade menor possível

play18:32

no dentro do seu software e tem três

play18:35

tipos de funções transnacionais são as

play18:38

entradas em cada externas que elas

play18:41

basicamente representam entrada de dados

play18:43

então alguém passa algum dado pelo

play18:45

sistema existe também a consulta externa

play18:47

que é o pedido de alguma informação para

play18:50

o sistema um pedido simples a biobío tem

play18:54

essa informação aqui mostra tal

play18:56

informação do do sistema e tem a saída

play18:59

externa que é similar à consulta externa

play19:01

só que não é simples ela pode ter um

play19:04

algoritmo complexo pode ter um cálculo

play19:06

complexo que é feito a e pode guardar os

play19:10

dados de alguma forma esse específica

play19:12

para resolver o problema

play19:14

então a e pode alterar o comportamento

play19:17

do sistema também então a saída externa

play19:19

basicamente tem mais complexidade

play19:21

um exemplo disso daqui a de entrada

play19:25

externa consulta e saída pensa numa loja

play19:28

virtual de novo a entrada externa pode

play19:31

ser a edição de produto informar dados

play19:33

de compra adicional produz na compra

play19:36

tudo isso a entrada de dados está

play19:38

informando dados o usuário informando

play19:39

dados a consulta você tem a procurar

play19:43

produto tudo bem o usuário tem que

play19:45

informar alguma coisa que tem que dizer

play19:46

como no produto mas é algo bastante

play19:48

simples que em forma e já tem a resposta

play19:51

e tem também os ver ver os dados do

play19:53

cliente também é uma consulta externa

play19:56

não tem cálculo nenhum complexo nisso

play19:57

agora tem alguns cálculos mais complexo

play20:00

como por exemplo o relatório de vender é

play20:02

algo mais complexo então a saída externo

play20:04

e emitir nota fiscal também algo mais

play20:07

complexo então também é uma saída

play20:08

externo

play20:09

assim como na função de dar

play20:11

nas funções de dados as funções

play20:13

transnacionais têm uma forma de você

play20:16

calcular o ponto de função a partir do

play20:17

tipo se é entrada sair do consulta e à

play20:21

complexidade e à norma vai dizer como

play20:25

com o complexo é como calcular essa

play20:27

complexidade ea partir dessas

play20:31

informações você consegue calcular

play20:33

pontos de função usando uma forma essa

play20:36

forma ela varia dependendo do tipo de

play20:38

sistema então se você está fazendo

play20:40

desenvolvimento projetos de melhoria ou

play20:43

se já tem o seu já foi feito um projeto

play20:45

de melhoria a sua valia fórmula faria a

play20:48

o que eu vou mostrar pra vocês é a

play20:52

fórmula para desenvolvimento tal forma

play20:55

desenvolvimento é simplesmente somar

play20:56

você faz a soma do tamanho das funções

play20:59

de dados com a soma das funções

play21:00

transacionais e pronto você tem um ponto

play21:03

de função

play21:04

tradicionalmente que se usa é o ponto de

play21:06

função ajustado que ele considera alguns

play21:09

ajustes são 14 características que são

play21:12

levados em conta que você precisa dar

play21:14

uma nota de 0 a 5 exemplos de

play21:16

características processamento de dados

play21:19

distribuídos então se tiver

play21:20

processamento distribuído

play21:22

você tem que calcular levar isso em

play21:24

conta o desempenho se o desempenho for

play21:26

algo importante

play21:27

você também precisa levar em conta é dar

play21:29

uma nota no valor de 0 a 5

play21:31

a facilidade de operação instalação se

play21:33

for importante também conto esses são

play21:36

múltiplos sites um site só isso também

play21:39

tem que ser levado em conta no ajuste e

play21:42

à forma com um ponto de função ajustado

play21:45

tem uma variação de mais ou menos 35% ea

play21:49

fórmula é essa daqui então são os pontos

play21:51

de função calculados anteriormente

play21:53

mais a somatória de cada um dessas

play21:55

características do peso dessas

play21:57

características x 0 01 em somar 0 65 ou

play22:02

seja é bem explica claramente é um

play22:04

número bem em pico a para calcular isso

play22:07

play22:09

existe também uma forma de você

play22:10

relacionar pontos de função a linguagem

play22:13

de programação estão aqui têm uma tabela

play22:16

que mostra a relação de quanto é um

play22:18

ponto de função prom uma determinada

play22:20

linguagem de programação e trabalha com

play22:23

médio mínimo e máximo

play22:25

mas dá para perceber claramente que se

play22:27

você considerar a assembléia é bastante

play22:30

se você pegar uma linguagem comum que

play22:33

seja é c++ já é uma diferença bastante

play22:36

grande e tem relação também de ponto de

play22:40

função com o homem hora mas nessas

play22:42

nesses casos aqui nessas relações um

play22:45

interessante é o histórico da empresa

play22:48

então a empresa tem um histórico ela

play22:49

deve manter um histórico dela para saber

play22:52

exatamente como funciona essa relação

play22:54

da mesma forma o homem hora como

play22:56

linguagem de programação linha de código

play22:58

de programação e se você considerar o

play23:02

manual a das pulgas da mesma tanto faz

play23:06

ele vai falar como você não conta como

play23:09

exatamente você deve trabalhar com

play23:10

pontos de função então eles tentam

play23:12

detalhar o máximo possível como fazer

play23:15

esse cálculo para ter o mínimo de

play23:18

subjetividade mas apesar disso tudo a

play23:21

tem um pouco de subjetividade e esse é a

play23:24

grande crítica do ponto de função apesar

play23:26

de ter um monte de regra ainda tem uma

play23:29

certa dose de subjetividade que

play23:31

atrapalha a medição anterior

play23:33

ricamente duas pessoas não deveriam dar

play23:35

valores diferentes e que o pessoal alega

play23:39

aqui pessoas bem treinadas conseguem

play23:42

fazer isso mas é difícil é difícil

play23:44

treinar também a ser tão bem treinado e

play23:47

um outro problema é que é uma forma

play23:49

empírica

play23:49

não tem jeito ela é baseada na

play23:52

experiência nos cálculos

play23:54

muita gente usando essa forma mas ainda

play23:56

assim ela não tem uma relação tão real

play23:59

com os valores de linha de código

play24:02

depende do histórico da empresa empresa

play24:05

precisa relacionar isso e vai depender

play24:07

da equipe vai depender de várias coisas

play24:08

e um outro problema que ela não tem um

play24:11

significado real

play24:12

então o que é um ponto de função por

play24:14

disfunção significa nada significa a

play24:16

relação de pontos função com alguma

play24:18

outra métrica interessante então como

play24:21

conclusão é ela tem seus problemas como

play24:24

qualquer outra métrica não é uma métrica

play24:26

perfeita porque não existe métrica

play24:28

perfeita mas ainda assim ela útil e é

play24:31

usada em alguns editais estão alguns

play24:33

anos 15 anos era bastante comum ou

play24:37

empresas públicas usarem

play24:39

são pra fazer pra fazer uma licitação

play24:41

fala olha a gente precisa de uma empresa

play24:43

que desenvolva x pontos de função mas

play24:46

hoje em dia isso daí acabou não sendo

play24:48

tão popular assim não é tão comum

play24:49

empresas trabalharem com isso mas a

play24:51

idéia é muito interessante e existem

play24:54

algumas variações de ponto de função

play24:56

exige por exemplo ponto de casos de uso

play24:58

que a mesma idéia

play24:59

só que para casos de uso então você

play25:01

consegue medir a complexidade do seu

play25:03

software só através do caso de uso e

play25:06

analisando algumas características do

play25:07

caso de uso

play25:10

então isso foi à aula sobre métrica até

play25:14

a próxima aula

play25:15

[Música]

play25:34

[Música]

play25:43

[Música]

Rate This

5.0 / 5 (0 votes)

الوسوم ذات الصلة
Software QualityMetricsLectureUser InterfaceQuantitative EvaluationProject ManagementQuality AssuranceEngineeringProduct AnalysisEducational Content
هل تحتاج إلى تلخيص باللغة الإنجليزية؟