Desenvolvimento de um aplicativo para cálculo de Pontos de Função

Documentos relacionados
Ciência da Computação ENGENHARIA DE SOFTWARE. Métricas e Estimativas do Projeto

FERRAMENTA DE CÁLCULO E GERENCIAMENTO DE ESTIMATIVAS DE SOFTWARE

ANÁLISE DE PONTOS DE FUNÇÃO E SUA IMPORTÂNCIA PARA PROJETOS DE DESENVOLVIMENTO DE SOFTWARE

Análise de Pontos de Função

"A estimativa de tamanho de software é o coração do processo de estimativas de um projeto de software". (PUTMAN,1992)

Gerência de Projetos e Manutenção de Software Aula 4 Planejamento de Projetos (Estimativas) Andréa Magalhães Magdaleno 2017.

FATORES E MÉTRICAS DE QUALIDADE

Análise de Ponto de Função APF. Aula 01

Medidas de Esforço de Desenvolvimento de Software

GPS - Gestão de Projeto de Software

Análise de Pontos de Função Carlos Eduardo Vazquez

Medidas de Esforço de Desenvolvimento de Software

Simulado para CFPS. Questões de Propósito, Tipo e Fronteira. 1. Um dos objetivos da Análise de Pontos de Função é:

Conceitos Básicos. Capítulo 1. Introdução. Medições

FATTO CONSULTORIA E SISTEMAS

Projeto e Desenvolvimento de Software

Estimativas e Métricas Engenharia de Software

Uso das ferramentas APF e COCOMO para estimativa da capacidade produtiva da TI

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA FASE DE PROJETO

Medidas de Esforço de Desenvolvimento de Software

Medidas de Esforço de Desenvolvimen to de Software

ENGENHARIA DE SOFTWARE

Medição, Estimativas e Gerenciamento de Projetos de Software

De Olho na Pista. Documento de Arquitetura. De Olho na Pista Documento de Arquitetura Data: 23/03/2013. AJA Software

Uso das Ferramentas APF e COCOMO para Estimativa da Capacidade Produtiva da TI

Análise de Pontos de Função Inicial

Análise de Ponto de Função APF. Aula 02

Engenharia de Software II

ANÁLISE DE PONTOS DE

Análise de Ponto de Função APF. Aula 03

Implantando Pontos de Função com PSM

Metodologia de Gestão de Desenvolvimento de Sistemas da UFVJM

ACEITE DE SOFTWARE NA VISÃO DO CLIENTE: GARANTINDO A QUALIDADE DOS PROJETOS DE SOFTWARE. Resp:Marcelo Nascimento Costa, MSc

Ferramenta para cálculo de métricas em softwares orientados a objetos codificados em Object Pascal

Planejamento de Projeto de Software: Estimativas de Esforço e Custo

Princípios da Engenharia de Software aula 03

Análise de Pontos de Função Carlos Eduardo Vazquez

Garantia da Qualidade, Medição e Melhoria. Leonardo Gresta Paulino Murta

Análise de Ponto de Função APF. Aula 04

Estimativa de Esforço. Estimativas de Software. Subjetividade da Estimativa. Incerteza de Estimativa. Técnicas de Estimativas

Gerência e Planejamento de Projeto. SCE Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestre de 2002

Engenharia de Software

Estimativa por Pontos de Caso de Uso

1. INTRODUÇÃO A MODELAGEM DE DADOS

Requisitos Funcionais e seus níveis de granularidade

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

SOFTWARE PARA APOIO AO PROFESSOR EM SALA DE AULA: desenvolvimento fundamentado na Metodologia Ágil Scrum

Prof. Luiz A. Nascimento

Manutenção de Software

UML: Introdução. História Visão geral Modelo conceitual da UML. Bibliografia. UML: introdução

APLICATIVO MÓVEL PARA TREINAMENTO AUDITIVO PARA IDENTIFICAÇÃO DE ALTERAÇÕES DE FALA DECORRENTES DA FISSURA LABIOPALATINA

UNIVERSIDADE METODISTA DE PIRACICABA

Rational Unified Process (RUP)

Estimativas de Software

ANÁLISE DE PONTOS DE FUNÇÃO: CONCEITOS E PRÁTICAS DE CONTAGEM

Análise e Projeto de Sistemas I Curso: Sistemas de Informação

Orientação prática para preenchimento da Planilha de Contagem NESMA (EFP)

Estudo de Caso - Sistema de Controle de Ponto

SNAP Resultados de 60 projetos

Requisitos de Sistemas

Engenharia de Software II

Planejamento de Projeto de Software: Estimativas de Esforço e Custo

2 Fluxos no Ciclo de Vida do Processo Unificado. O Processo Unificado consiste da repetição de uma série de ciclos durante a vida de um sistema.

XVIII Seminário Nacional de Distribuição de Energia Elétrica. Olinda - Pernambuco - Brasil

Aula 05 - ES - Métricas de Software

Análise de Sistemas. Aula 5

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Soluções para universidades corporativas

Bruno Hott. Aula: Análise de Pontos de Função (FPA)

Planejador: Uma Ferramenta de Coleta de Tempos do Processo de Desenvolvimento de Software

Análise de Ponto de Função APF. Aula 05

Desenvolvimento de um software para cálculo e controle de análises Texturais de solos

Projeto Integrador. <Projeto Integrador> Documento Visão. Versão <1.0>

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

UMA ANÁLISE DE MÉTRICAS DE SOFTWARE ORIENTADAS À FUNÇÃO E SUA APLICAÇÃO AO DESENVOLVIMENTO ORIENTADO A OBJETOS

O PAPEL DO ANALISTA DE NEGÓCIOS NA AGILIDADE. Ainda precisamos de Analistas de Negócios?

Síntese das discussões do fórum Livro-APF: Janeiro/2011

QUALIDADE DE SOFTWARE. Princípios de Engenharia de Software

Instituto Federal de Educação, Ciência e Tecnologia do Sul de Minas Gerais Câmpus Muzambinho. Muzambinho /MG.

Aula 12. Aquisição de Hardware

Gerenciamento Eletrônico de Documentos

PDS. Aula 1.5 Modelos de Processo. Prof. Dr. Bruno Moreno

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Construção de. Software Orientado ao Negócio A solução proposta pelo método iron integração de Requisitos Orientados a Negócio

Uso da curva ABC na Técnica de Análise por Pontos de Função nas Estimativas de Projetos de Software

ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Campus: Data: / / Nome:

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016

Modelos de Sistemas Casos de Uso

Pontos de Função PF e COCOMO

Pontos por Caso de Uso

Análise e Projeto. Prof. Erinaldo Sanches Nascimento

ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA º PERÍODO - 7º MÓDULO AVALIAÇÃO A1 DATA 10/09/2009 ENGENHARIA DE USABILIDADE

Como melhorar seu laticínio. com um aplicativo para celular

Qual o nível de detalhe adequado para os requisitos?

Crise do Software. Crise de tecnologia - hardware caminha mais rápido que o software

Transcrição:

Desenvolvimento de um aplicativo para cálculo de Pontos de Função Daniel Vieira de Souza 1, Cassiana Fagundes da Silva 1, Douglas J. P. de Azevedo 1 Faculdade da Indústria IEL PR Brasil souzamaxi@yahoo.com.br,{cassiana.silva, douglas.azevedo}@ielpr.org.br Resumo. O aplicativo (APP) apóia desenvolvedores de software na árdua missão de dimensionar o tamanho de um projeto de desenvolvimento de software. Sabe-se uma má medição pode levar a empresa a prejuízos difíceis de administrar e que levará algum tempo até a empresa se reerguer. Então com este APP procura-se ajudar a todos os profissionais da área de desenvolvimento de software a dimensionar o provável tamanho de software utilizando-se os métodos preconizados pela Analise de Pontos por Função (FPA). Com esta previsão pode-se dimensionar a equipe e planejar o desenvolvimento com a metodologia que a empresa adota. Recomenda-se que ao final do desenvolvimento do software, contar utilizando-se a metodologia de contagem de tamanho FPA para comparar e ajustar no APP que se está propondo. Palavras-chave: FPA, Medição de Software, Projeto de desenvolvimento, APP. 1. Introdução O nível de competitividade das organizações está diretamente ligado à eficiência e eficácia dos sistemas de informações, por isto a rapidez na precisão e na estimativa de tamanho de sistemas de informação faz toda a diferença par uma empresa produtora de software. Com base neste tamanho ela pode estimar o tempo e o custo para o seu desenvolvimento. Com o amadurecimento das mídias sociais e a crescente utilização dos smartphones. Neste contexto, propôs-se criar um aplicativo para Android e IOS para estimar o tamanho de software utilizando-se o método percentual preconizado por [CAPERS JONES, 2007]. O texto está estruturado como segue. A seção 1 descreve uma breve contextualização sobre o assunto, bem como suas definições. Na seção 2 são descritos os conceitos da técnica de pontos de função de contagem. Na seção 3 são descritos os conceitos da técnica de pontos de função percentual, objeto deste APP. Na seção 4 descreve a solução proposta, bem como a modelagem do APP. Na seção 5 os resultados são apresentados, com as respectivas figuras do APP. A seção 6 apresenta as conclusões e trabalhos futuros. 2. Análise de Pontos de Função (AFP) Segundo Braga (1980) no início da década de 70, pesquisadores do Serviço de Processamento de Dados da IBM, a pedido do grupo de usuários (GUIDE), começaram a analisar centenas de programas para isolar as variáveis críticas, que determinam a produtividade da programação. Descobriram que poderiam basear a avaliação de um sistema, medindo-se o valor das funções executadas pelos programas, em vez de utilizar como base o volume ou a complexidade do código dos programas. Em 1979 Allan J. Albrecht (IBM White Plains), prosseguindo essas pesquisas, introduziu uma técnica de avaliação conhecida como Analise de pontos de função. A técnica está baseada na visão externa do usuário, sendo, portanto, independente da linguagem utilizada, permitindo calcular o esforço de programação e auxiliando o usuário final a melhorar o exame e avaliação de projetos. Os objetivos são: medir o que foi

2 requisitado e recebido pelo usuário; medir independente da tecnologia utilizada para a implementação; prover uma métrica de medição para apoiar a análise de produtividade e qualidade; prover uma forma de estimar o tamanho do software e prover um fator de normalização para comparação de software. Além de atingir os objetivos descritos, o processo de contagem de Pontos por Função deve ser: simples para minimizar o trabalho adicional do processo de mensuração e conciso para permitir consistência, ao longo do tempo dos projetos, e entre os usuários da técnica. 2.1 Regras de Contagem Segundo Manual de melhores praticas do IFPUG (Internacional Function Point User Group), criado em 1986, destinado a divulgar informações e novas implementações da técnica a todos os seus associados, uma aplicação, vista sob a ótica do usuário, é um conjunto de funções ou atividades do negócio que o beneficiam na realização de suas tarefas. Essas funções podem ser divididas nos seguintes grupos: ALI - Arquivo Lógico Interno são grupos lógicos de dados do ponto de vista do usuário cuja manutenção é feita internamente pela aplicação; AIE - Arquivo de Interface Externa são grupos lógicos de dados utilizados na aplicação cuja manutenção pertence a outra aplicação. EE - Entrada Externa são transações vindas diretamente do usuário que referenciam arquivos internos. SE - Saída Externa são dados extraídos da aplicação, tais como relatórios e mensagens do terminal de vídeo. CE - Consulta Externa é uma combinação de uma entrada e uma saída de dados, isto é, uma requisição de dados que gera uma aquisição e exibição imediata de dados. 2.2 Classificação das Funções A Tabela 1 apresenta um resumo das classificações das funções de dados e das funções de transações, conforme demonstrado abaixo: Cada função deve ser classificada de acordo com sua complexidade funcional relativa, que é baseada no número de itens de dados e de registros lógicos, classificam-se as funções em simples, médio ou complexo. Tabela 1: Classificação das funções FUNÇÃO SIMPLES MÉDIA COMPLEXA ALI 7 10 15 AIE 5 7 10 EE 3 4 6 SE 4 5 7 CE 3 4 6 3. Método de Estimativa por Percentual Segundo Capers Jones (2007), uma das principais vantagens da APF sobre outras técnicas de medição de aplicações é a possibilidade de estimar dimensão de projetos desde as primeiras fases de análise e desenho. A precisão da estimativa do tamanho de uma aplicação varia de

3 acordo com o grau de conhecimento adquirido sobre a mesma., ao final da fase de desenho do sistema é possível fazer estimativas com uma margem de erro +/- 10%. Entretanto, para fazer estimativas antes do final da fase de desenho com uma margem de erro aceitável, é aconselhável que o usuário se apóie em algum método com base estatística para suprir a falta de conhecimento de algumas funções da aplicação. A partir de dados coletados em mais de 120 projetos, a empresa Software Produtivity Research, verificou a existência de uma correlação entre os vários tipos de funções de um sistema, totalizando 100%, que pode ser expressa da seguinte forma: A quantidade de ALI representa 25 % do total de funções de um sistema; A quantidade de AIE representa 3 % do total de funções de um sistema; A quantidade de EE representa 30 % do total de funções de um sistema; A quantidade de SE representa 28 % do total de funções de um sistema; A quantidade de CE representa 14 % do total de funções de um sistema. Baseado nesta análise estatística, o analista de sistemas necessita identificar apenas a quantidade de um dos tipos de funções do sistema para derivar os demais. Neste método devese sempre trabalhar com uma complexidade funcional média para todos os tipos de função e considerar o valor do fator de ajuste igual a 1. 3.1 Utilizando o Método de Estimativa por Percentual No início de uma analise do projeto de desenvolvimento, muitas vezes quando se está fazendo o levantamento, inconscientemente identifica-se de uma maneira intuitiva e preliminar as classes que podem fazer parte da solução a ser apresentada ao cliente. Explorando esta linha de raciocínio, procura-se identificar os ALIs do sistema. Com base nestas informações, tem-se a quantidade de arquivos lógicos internos, que deverá ser utilizada em uma regra de três para definir o total de funções, conforme descrito no item método de estimativa por percentual. Para utilizar os conceitos deste método, precisa-se de dois parâmetros como entrada: Total de função (sempre 100%); Total de ALI s. Então, ao se fazer o levantamento inicial de um sistema chegou-se à conclusão que o total de ALI s é de três (3). Com esta definição têm-se os dois parâmetros necessários para utilização do método, como é demonstrado na Tabela 2. Tabela 2: Cálculo dos ALI s do sistema ALI Se 3 = 25 então total de funções = 12 X = 100 A partir da definição do total das funções que é 12, troca-se o total de ALI que foi utilizado somente para se definir o total de funções e utiliza-se o total de funções juntamente com o total de funções que é 100, para derivar para os demais percentuais (Tabela 3). Tabela 3: Cálculo dos AIE s, EE s, SE s, CE s do sistema AIE Se 3 = 100 então total de funções = 0,36 X = 12 Então o AIE contribui com um total de 0,36

4 no total de 12 funções; EE Se 30 = 100 então total de funções = 3,6 X = 12 Então o AIE contribui com um total de 3,6 no total de 12 funções; SE Se 28 = 100 então total de funções = 3,36 X = 12 Então o AIE contribui com um total de 3,36 no total de 12 funções; CE Se 14 = 100 então total de funções = 1,68 X = 12 Então o AIE contribui com um total de 1,68 no total de 12 funções; Resumindo, com base nos parâmetros definidos ALI = 3 e Total de funções = 100%, os valores finais dos pontos de funções não ajustados encontram-se ilustrados na Tabela 4. FUNÇÃO Tabela 4: Resumo dos cálculos do sistema CONTRIBUIÇÃO OBSERVAÇÃO ALI 3 Percepção reconhecida no levantamento AIE 0,36 EE 3,6 SE 3,36 CE 1,68 Pontos estimados 12 Definido no primeiro cálculo Com estes valores definidos para cada função, aplica-se uma complexidade funcional média, demonstrado acima, para todos os tipos de função e considera-se o valor do fator de ajuste igual a 1, da seguinte maneira: Tabela 5: Cálculo da complexidade do sistema Tipo de função Complexidade funcional Total de função ALI 3 X 10 = 30 AIE 0,36 X 7 = 2,58 EE 3,6 X 4 = 14,4 SE 3,36 X 5 = 16,8 CE 1,68 X 4 = 6,72 * * * Total de Pontos por Função Ajustados = 70,5 Então, o total de pontos de funções estimados para o desenvolvimento deste sistema é 70,5 pontos de funções. Imaginando que cada ponto de funções esteja estimado em R$ 500,00 reais o custo para o seu desenvolvimento deverá ficar em torno de R$ 35.250,00 (trinta e cinco mil, duzentos e cinqüenta reais). E que a linguagem esteja estimada em cada ponto de função deverá levar aproximadamente 8 hs o tempo de desenvolvimento deste sistema, será estimado em aproximadamente 564 horas.

5 4. Tecnologia para o desenvolvimento do APP O projeto foi iniciou-se no 3º período do curso de graduação em Bacharelado em Sistemas de Informação. No início foi levantou-se a importância da medição de um sistema a ser desenvolvido e como fazer esta medição. Através da disciplina de Engenharia de Software foi possível aprender métodos de como se medir um software no método conceitual e percentual. Uma das formas de se medir é o tamanho de um sistema, neste caso temos a Analise de Pontos por Função (APF) que é um dos métodos para determinar o tamanho do sistema que se está desenvolvendo. (GARMUS, 2001). 4.1 Identificação dos requisitos Através da identificação dos Arquivos Lógicos Internos (ALI) é com o uso de algumas formulas simples podemos chegar facilmente aos valores da medição do tamanho e do esforço necessário para o desenvolvimento do sistema. Seguindo método de estimativa por percentual, descrito acima, para efetuar os cálculos da medição será possível saber quantos pontos o software a ser desenvolvido possui. Com todas as informações necessárias para efetuar o cálculo da APF percentual, foi iniciado o levantamento de como seria projetado o Aplicativo para efetuar o cálculo da tabela acima de uma forma simples e pratica. 4.2 Metodologia e etapas Utilizando a metodologia ágil User Story que possui apenas 3 aspectos críticos chamados de os três C s que são. (FOGGETTI, 2014 p. 81). Cartão: é a descrição do problema ou da necessidade do usuário, levantamento dos requisitos são apresentados, ou seja, seria a própria User Story. Conversas: Por onde se identifica qual a melhor solução será aplicada para cada situação, está etapa parte faz parte do time de desenvolvimento que trocam informações e efetuam o desenvolvimento da solução. Confirmação: Responsável por efetuar a documentação, testes e homologação com o cliente para saber se os critérios satisfação do cliente está de acordo. 4.3 Desenvolvimento A primeira parte no processo de desenvolvimento analisou-se qual o padrão de desenvolvimento a ser utilizado e qual o seria o processo de gerencia do acompanhamento projeto. Foi utilizado o Scrum como método para gestão e planejamento, que divide o projeto em pequenos ciclos rápidos de desenvolvimento chamados de Sprint. As Sprint representam um time box que envolvem um conjunto de atividades a serem desenvolvidas executadas. (FOGGETTi, 2014 p. 81). A segunda parte foi a definição de qual a plataforma a ser utilizada. Escolheu-se que seria Móbile, logo após, a prioridade foi definir qual linguagem de programação seria utilizada. Com o ponto forte da equipe de desenvolvimento é o Object Pascal, foi adotada a ferramenta para desenvolvimento Delphi XE8 quem além de efetuar o desenvolvimento para a plataforma escolhida, pode ser executado em qualquer outra plataforma. Já com tudo pronto o projeto foi separado em seis (6) etapas de desenvolvimento, que são as seguintes: Definição do layout da tela;

6 Criação da tela; Criação das funcionalidades dos botões da tela; Verificação das funcionalidades e levantamento; Testes automatizados; Entrega da versão. No processo de desenvolvimento utilizaram-se os patrões de clean code e orientação a objeto, para manter um código limpo organizado e de fácil manutenção ou correções futuras. 4.4 Testes e Homologação Nesta etapa a equipe de testes fez os testes das funcionalidades aplicadas em cada etapa do projeto, cada erro encontrado deve ser adicionado em uma lista de backlog de erros é informado a equipe de desenvolvimento para efetuar a correção. Após a correção dos erros, a equipe de desenvolvimento deve retornar o projeto para a equipe de erro para nova análise e novos testes. Assim que finalizados os testes do projeto a equipe de teste gerou um relatório de aprovação, para o analista de sistemas que deve gerar a primeira versão do projeto para que o mesmo passe por uma homologação com o cliente. Cada etapa deve ser analisada junto com o cliente e as divergências devem ser corrigidas. Assim que o projeto for aprovado pelo cliente deve-se iniciar o processo de implantação/distribuição da aplicação. 5. Aplicativo FPA Percentual Com base nestes conceitos desenvolveu-se um APP para automatizar estes cálculos para demonstrar a estimativa de sistema, apenas com a inclusão do total de Arquivos lógicos interno. Na tela inicial do APP, demonstrado pela Figura 1, visualiza-se o tipo das funções, as multiplicações e a demonstração dos cálculos das funções. Também é demonstrado na parte direita o ajuste das características gerais. Figura 1: Tela inicial do APP

7 A ação para iniciar a execução do APP mostrado na Figura 1 é a colocação do Total de Arquivos Lógicos Internos, logo após, clicar no botão CALCULAR. Figura 2: Apresentação do resultado em pontos de função Após ser efetuado o cálculo, a geração da estimativa de tamanho do sistema em pontos de função será apresentada na Figura 2. Figura 3: Detalhe do cálculo A visualização dos detalhes destes cálculos está demonstrada na figura 3, onde se aplicou os percentuais com os detalhamentos esclarecidos no item 3.1. 6. Considerações Finais

8 É importante lembrar que este método presume um relacionamento lógico e previsível entre variáveis independentes, quando na realidade (para um determinado projeto), esse relacionamento pode não acontecer. Nesses casos, à medida que aumenta o grau de conhecimento sobre o sistema, pode-se identificar qual e em que quantidade um determinado tipo de função ficou fora destas médias, procedendo-se os ajustes necessários no planejamento de atividades e de recursos. O cálculo do número de Pontos por Função Não Ajustados, através deste método, é realizado considerando que todas as funções possuam um grau de complexidade relativa média e o Fator de Ajuste deve ser considerado como 1. Em função da etapa em que se encontre o projeto quando da estimativa de seu tamanho, deve-se aplicar o percentual correspondente à margem de erro prevista conforme a tabela anteriormente apresentada. Outro aspecto a ser ressaltado é que, com a prática de realização de estimativas, este processo irá se aperfeiçoando face ao maior domínio do método utilizado. Por isso é necessário que cada técnico que, estime o tamanho de um sistema, realize posteriormente, a sua contagem e analise qual os fatores que o levaram (ou poderiam ter levado) a um resultado melhor. Como trabalho futuro será desenvolvida neste mesmo APP uma previsão de valor de custo do projeto estimado e uma previsão de horas de desenvolvimento que proporcionará uma melhor negociação com a empresa cliente. 7. Referências BRAGA, Antonio. Análise de Pontos de Função. Infobook, Rio de Janeiro, 1986. FOGGETTI, Cristiano. Gestão ágil de projetos. Education do Brasil, São Paulo 2014. FRIZANDO, Orlando. Gerencia de projetos e sistemas informatizados: Um enfoque prático / Edição do autor, Curitiba 2004. GARMUS, David, Herron, David. Function Point Analysis: measurement pratices for sucessfull software projects, Addison-Wesley, Boston, 2001. INTERNATIONAL Function point user group. Análise de Pontos de Função [S.I.] IFPUG 1994. Baseado na versão 4.0 do Manual de práticas de contagem do IFPUG JONES, Capers. The Sociology of software measurement, Computerwordl. In Depth Framingham, 1991. JONES, Capers. Estimating Software Costs: Bringing Realism to Estimating, Second Edition. The McGraw-Hill Companies. New York, 2007.