As próximas seções descreve sucintamente a unidade de medida de pontos de função e também outras unidades que foram derivadas de pontos de função (pontos por feature, pontos por objeto, pontos por caso de uso e story points).
A.3.1
Pontos de função - function points
Esta unidade de medida baseada na funcionalidade do programa foi primeiramente intro- duzida por [22] em 1979. O número de pontos de função depende do número de caracte- rísticas do software (em termos de formato e processamento lógico) [91]. Os pontos que devem ser contabilizado são separados em cinco classes: número de entradas, número de saídas, número de consultas, números de arquivos internos e externos e número de inter- faces. É uma forma de medir o tamanho do software que é independente da tecnologia e de fatores do ambiente [99]. Dessa maneira, esta unidade de medida é independente de linguagem de programação, design do produto e estilo de desenvolvimento. É uma unidade de medida muito adequada para sistemas de uso intensivo de dados [99]. Além disso, uma grande vantagem da unidade de medida de pontos por função é a possibilidade de quantificar o projeto nos estágios iniciais de especificação [91].
Com o aumento do uso da unidade de medida de pontos por função na indústria, outras unidades de medida derivadas surgiram; as principais delas são: pontos por feature, pontos por objeto, pontos de caso de uso e story points.
A.3.1.1 Pontos por funcionalidade - feature points
Pontos por feature podem ser considerados uma extensão de pontos por função. Neles é possível também medir o número de algoritmos envolvidos no sistema. Para cada algoritmo é atribuído um peso; os pontos por feature são dados pela soma dos pontos dos algoritmos com os pontos por função [69]. É uma unidade de medida bastante interessante para sistemas onde existem poucas entradas e saídas e alta complexidade computacional, como software de modelagens físicas, simulações discretas e aplicações militares [91].
A.3.2
Pontos por objeto - object points
Já pontos por objeto [123], ou alternativamente pontos por aplicação, é uma outra forma de mensurar o tamanho de um software em linguagens da quarta geração (tipicamente orientadas a objeto). O número de pontos por objeto não é o mesmo que a quantidade de classes (objetos) do sistema. O número de pontos por objeto é uma média ponderada das telas do sistema, relatórios e número de módulos do programa. É uma ótima unidade de medida para aplicações construídas sob linguagens de alto nível. Além disso, pode ser utilizada nos estágios iniciais de especificação do projeto e não depende de detalhes de implementação [99].
A.3.3
Pontos de caso de uso - use case points
Também uma extensão de pontos por função, o método de pontos de caso de uso [115] é usado para medir e estimar projetos desenvolvidos com paradigmas de orientação a objeto. A principal desvantagem desta abordagem é que a unidade de medida por caso de uso é totalmente dependente da confecção do modelo do caso de uso da UML (do inglês,
Unified Modeling Language) [63], o qual não pode ser realizado com precisão durante as
fases iniciais do projeto.
A.3.4
Story points
Por fim, existe a unidade de medida chamada story points [64], muito utilizada em métodos ágeis de desenvolvimento de software. Story point é a unidade de medida de uma story de um usuário ou de uma feature. Um ponto é atribuído para cada story de um usuário. Os pontos são relativos e atribuídos baseados na complexidade, esforço envolvido e risco inerente. Estimar tais pontos exige bastante experiência do profissional envolvido no processo de estimativa [43].
Intermediate COCOMO
A Tabela B.1 a seguir mostra todos as entradas do Intermediate COCOMO (cost drivers); note que o valor neutro é o apresentado na coluna “Nominal”.
Figura B.1: Entradas do Intermediate COCOMO e seus valores para cada classificação
Revisão Sistemática
Este apêndice apresenta o detalhamento de processos e tabelas associados à revisão sis- temática. Na maior parte dos casos, o corpo da dissertação apresentou apenas uma visão resumida de tabelas e processos.
C.1
Identificação das publicações
Com a análise das publicações das fontes de referência mostrados na Tabela 3.4, foi possível gerar a Tabela C.1 (parte 1) e a Tabela C.2 (parte 2) apresentando todas as “publicações de referência". Em resumo obtivemos 26 métodos identificados, 11 não encontrados o PDF na literatura e 13 repetidos. A primeira coluna das Tabelas mostram o nome do método seguido de sua referência bibliográfica, a segunda coluna detalha onde este método foi identificado (ou seja, qual dos trabalhos do “fontes de referência” listou primeiro este método), a terceira coluna contém o título da publicação do método, a quarta mostra se o trabalho foi ou não encontrado digitalmente para análise mais profunda e por fim a última coluna mostra qual o tipo do trabalho (artigo, livro, relatório técnico, tese de doutorado, anais de conferências ou whitepaper ).
Tabela C.1: Métodos identificados na análise das “fontes de referência- Parte 1 Método e Abre-
viação
Fonte Publicação Encon-
trado
Tipo
Bailey & Basili [32] (ART1)
[18] A Meta-model for Software Development Re- source Expenditures
Sim Artigo
Farr & Zagorski [95] (ART2)
[18] Cost estimation for software development Não Livro
Nelson Model [113] (ART3)
[18] Management handbook for the estimation of computer programming costs
Sim Relatório Técnico General Re-
search Corp. [107] (ART4)
[18] Software Cost Estimation: Present and Fu- ture
Sim Artigo
Boeing Model [51] (ART5)
[18] Analysis of the state of the Art of Parametric Software Cost Modeling
Não Relatório Técnico Aron Model
[29] (ART6)
[18] Software Estimating: A Description and Analysis of Current Methodologies with Re- commendation on Appropriate Techniques For Estimating RIT Research Corporation Software Projects
Sim Tese
Walston & Fe- lix Model [136] (ART7)
[18] A method of programming measurement and estimation
Não Relatório Técnico
Doty Model [30] (ART8)
[18] Software cost estimation study Não Livro
Putnam
(SLIM) Model [121] (ART9)
[18] A General Empirical Solution to the Macro Software Sizing and Estimating Problem
Sim Artigo
Jensen Model [66] (ART10)
[18] A comparison of the Jensen and COCOMO schedule and cost estimation models
Não Artigo
COCOMO [38] (ART11)
[18] Software Engineering Economics Sim Livro
COCOMO-II [37] (ART12)
[18] An Overview of the COCOMO 2.0 Software Cost Model
Sim Artigo
SCEP Model [51] (ART13)
[18] Analysis of the state of the Art of Parametric Software Cost Modeling
Sim Relatório técnico Kustanowitz
Model [89] (ART14)
[18] System Life Cycle Estimation (SLICE): a new approach to estimating resources for ap- plication program development
Tabela C.2: Métodos identificados na análise das “fontes de referência- Parte 2 Método e Abre-
viação
Fonte Publicação Encon-
trado
Tipo
Schneider Model [129] (ART15)
[18] Prediction of software effort and project du- ration: four new formulas
Sim Artigo
Price-S Model [48] (ART16)
[18] PRICE software model-Version 3, An over- view
Não Artigo
SEER-SEM [50] (ART17)
[80] Software Sizing, Estimation, and Risk Ma- nagement: When Performance is Measured Performance Improves
Sim Livro
Albrecht & Gaffney [24] (ART18)
[125] Software function, source lines of code, and development effort prediction: A software science validation
Sim Artigo
Parthasarathy [116] (ART19)
[125] Practical Software Estimation Não Livro
Kassab [77] (ART20)
[125] Formal and Quantitative Approach to Non- Functional Requirements Modeling and As- sessment in Software Engineering
Sim Tese PhD
Mendes [103] (ART21)
[125] Effort Estimation: How Valuable is it for a Web Company to Use a Cross-company Data Set, Compared to Using Its Own Single- company Data Set?
Sim Artigo
Kultur [87] (ART22)
[125] Domain Specific Phase by Phase Effort Esti- mation in Software Projects
Sim Artigo
Martin [100] (ART23)
[125] Software Development Effort Estimation Using Fuzzy Logic: A Case Study
Sim Artigo
CheckPoint [70] (ART24)
[35] Applied Software Measurement (2Nd Ed.): Assuring Productivity and Quality
Não Livro
ESTIMACS [126] (ART25)
[35] ESTIMACS, IEEE Não White
Paper Select Esti-
mator [15] (ART26)
[35] Estimation for Component-based Develop- ment Using SELECT Estimator
Não Web Site