Baixe o app para aproveitar ainda mais
Prévia do material em texto
Nesta aula, você compreenderá as seguintes técnicas de estimativa: COCOMO (básico, intermediário e detalhado); COCOMO II (estimativas de prazo, de custo e de defeitos); método de Putnam e a complexidade ciclomática. Compreender as técnicas de estimativa COCOMO e COCOMO II; Entender o método de Putnam e a complexidade ciclomática. O que é COCOMO? COnstructive COst MOdel (COCOMO) é um algorítmico modelo de estimativa do custo do software criado por Barry Boehm. O modelo usa uma fórmula básica de regressão, com parâmetros que são derivados dos dados históricos e das características atuais dos projetos. O método COCOMO é um modelo de estimativa do tempo de desenvolvimento de um software e está baseado no estudo de 63 projetos, dos quais foram examinados de 2.000 a 100.000 linhas de código em linguagens de programação Assembly. O COCOMO consiste em três implementações: básico, intermediário e avançado. Avance a tela e compreenda cada uma delas. Métricas de software Aula 4: Estimativa de esfoço e prazo Introdução Objetivos COCOMO COCOMO básico COCOMO básico é um modelo estático que calcula o esforço de desenvolvimento de software e seu custo em função do tamanho de linhas de códigos desenvolvidas. Aplica-se às seguintes classes de projetos do software: Orgânicos: são projetos relativamente pequenos, simples e com pouca inovação, com equipes de dimensão relativamente pequena. Exemplo: mala direta. Semidestacado ou difuso (em tamanho e complexidade): são projetos intermediários com características entre o modo orgânico e o embutido, em que as equipes de trabalho são heterogêneas em termo de experiência, como, por exemplo, um sistema de processamento de transações (folha de pagamento). Embutido ou restrito: aplicável no desenvolvimento de sistemas complexos embutidos em hardware, com muitas inovações, restrições severas e/ou requisitos muito voláteis e de confinamentos operacionais; exemplo: sistema de controle de telefonia. Figura 1 Fonte: Elaborado pelo autor Os coeficientes ab, bb, cb e db Tabela 1 Projeto de software ab bb cb db Orgânico 2,4 1,05 2,5 0,38 Semidestacado 3,0 1,12 2,5 0,35 Embutido 3,6 1,20 2,5 0,32 O COCOMO básico é um modelo estático de valor simples, que calcula o esforço do desenvolvimento de software em função do tamanho deste software, expresso em linhas de código estimadas. Avance e veja alguns exemplos. Uma vantagem do COCOMO básico é a sua rapidez em estimativas de custo de software; porém, sua exatidão é limitada devido à falta de fatores para explicar as diferenças entre: Ferramentas; Qualidade de pessoal e experiência; Uso de ferramentas modernas e técnicas; Outros atributos de projeto que influenciam nos custos de software. Exemplos de COCOMO básico http://pos.estacio.webaula.com.br/cursos/ATU298/aula4/img/figura1.png Figura 2 Fonte: Elaborado pelo autor Exemplo 1: Considere um software com 33,3 Kloc; usando o modelo semidestacado, temos: Tabela 2 Esforço Duração do projeto E = 3,0 (Kloc)1,12 D = 2,5 (E) 0,35 = 3,0 (33,3) 1,12 = 2,5 *(152) 0,35 = 152 pessoas/mês = 14,5 meses Logo, o número ideal de pessoas no projeto é: N = E/D = 152/14,5 = 11 pessoas Suponha que outro software tenha o Kloc igual a 45,3? Tabela 3 Esforço Duração do projeto E = 3,0 (Kloc) 1,12 D = 2,5 (E) 0,35 = 3,0 (45,3) 1,12 = 2,5 *(215) 0,35 = 215 pessoas/mês = 16,4 meses Exemplo 2: Considere que, após uma análise de ponto de função, detectamos 236 PFs não ajustados e que, além disso, as fórmulas do COCOMO tenham sido construídas com Kloc. Se a linguagem utilizada for ACCESS, temos: Tabela 4 Linguagem LOC/PF Linguagem LOC/PF ACCESS 38 FoxPro 2.5 34 Ansi SQL 13 HTML 3.0 156 Ansi COBOL 85 91 JAVA 53 C 128 LISP 64 http://pos.estacio.webaula.com.br/cursos/ATU298/aula4/img/figura2.png Linguagem LOC/PF Linguagem LOC/PF C++ 53 Smaltalk 22 Clipper 19 Object pascal 29 COBOL II 107 Oracle 40 dBase IV 36 Turbo C 128 Delphi 29 Turbo Pascal V.5 49 Fortran 95 71 Visual Basic 5 29 TAMANHO = 38 x 236 (PF) = 8968 LOC = 8,968 KLOC Usando o COCOMO básico, o gerente considerou o projeto como orgânico. Sendo assim, vamos usar as fórmulas. Tabela 5 Esforço Duração do projeto E = 3,0 (Kloc) 1,12 D = 2,5 (E) 0,35 = 3,0 x(9) 1,12 = 2,5 *(36) 0,35 = 36 pessoas/mês = 4,3 meses Logo, o número ideal de pessoas no projeto é: N = E/D = 36/4,3 = 8 pessoas O método intermediário é uma extensão do método básico, porém, com mais categorias de controle, como: atributos do produto; atributos de hardware; atributos pessoais; atributos do projeto. Atributos do produto I – Confiabilidade exigida do software; II – Tamanho do banco de dados; III – Complexidade do software. Atributos do hardware COCOMO intermediário I – Restrições de desempenho de run-time; II - Restrições de memória; III – Mudanças do ambiente de software; IV – Tempo de resposta. Atributos de pessoal I – Capacidade dos analistas; II – Capacidade dos programadores; III – Experiência na aplicação; IV – Experiência no ambiente de hardware; V – Experiência com a linguagem de programação. Atributos do projeto I – Uso de ferramenta de software; II – Técnicas modernas de programação; III – Prazo requerido para o desenvolvimento. O COCOMO intermediário calcula o esforço de desenvolvimento de software em função do tamanho do programa, que inclui custo, avaliação subjetiva do produto, hardware, pessoal e atributos de projeto. Observe a fórmula: E = ai (LOC)(bi).EAF Onde: E é o esforço aplicado em pessoas por mês; LOC é o número de linhas de código para o projeto; e EAF é o fator calculado . Os coeficientes ai e bi são dados na tabela: Tabela 6 Projeto de software ai bi Orgânico 3,2 1,05 Semidestacado 3,0 1,12 Embutido 2,8 1,50 Considere que, no exemplo 2 (COCOMO intermediário), o gerente considerou o projeto como orgânico; portanto, usaremos as fórmulas: Tabela 7 Esforço Duração do projeto E = 3,2 (Kloc)1,05 x EAF D = 2,5 (E) 0,38 Cálculo do EAF: analisando os 15 direcionadores da tabela de multiplicadores de esforço (clique aqui para visualizá-la), o gerente alcançou os seguintes resultados: Complexidade do software: Alta Restrições quanto ao uso da memória: Alto Experiência com a linguagem de programação: Baixa Capacidade dos programadores: Baixa Os outros atributos foram considerados normais. Assim, podemos calcular o EAF: EAF = (1,15 x 1,06 x 1,14 x 1,17) = 1,63 Dessa forma, pode-se estimar o esforço: E = 3,2 (Kloc) 1,05 x EAF E = 3,2 (9)1,05 x 1,63 = 52,42 pessoas-mês Prazo: D = 2,5 (E) 0,38 D = 2,5(52,42)0,38 = 11,26 meses No COCOMO avançado, são incorporadas características da versão intermediária com uma avaliação de impacto de custo em cada passo do projeto. Nele, pode ser empregado software interativo auxiliar para a estimativa de custos e prazos. A partir de um conjunto de atributos, premissas e modos de desenvolvimento, o COCOMO estima os prazos, custos e recursos necessários para cada etapa do ciclo de vida do produto. O que é Spider-CoCoMo? É uma ferramenta oriunda das pesquisas do projeto SPIDER da Universidade Federal do Pará (OLIVEIRA, 2010). Esse projeto tem como objetivo a construção de uma suíte de ferramentas livres para dar suporte à implementação do modelo de qualidade MPS.BR – Melhoria de Processo de Software Brasileiro (SOFTEX, 2009). Por que foi concebida? Sua concepção ocorreu pela necessidade de uma forma sistematizada e simples para realizar estimativas de projetos de software, pois a maioria das empresas utilizam planilhas eletrônicas e, com elas, não é possível atender completamente às necessidades dos gerentes, tendo em vista que não é possível obter uma base histórica dos valores estimados nos projetos da organização. COCOMO avançado COCOMO avançado: Spider-CoCoMo O que é o MPS.BR? O MPS.BR (SOFTEX, 2009) é um programa que busca avaliar processos de desenvolvimento de software por meio de um conjunto de boas práticas. Esse modelo se divide em sete níveis de maturidade, partindo do nível G, o mais baixo, até o nível A, o maisalto. À medida que se passa de um nível para o outro, o processo é entendido como mais maduro; cada nível possui um conjunto de atividades, denominados processos. Por fim, cada processo contido em um nível possui resultados esperados, que indicam que um determinado item do processo em questão foi alcançado. A avaliação se dá pela análise de cada resultado esperado dos processos. A Spider-CoCoMo está inserida no contexto do processo Gerência de Projetos, auxiliando nas estimativas de custo, prazos e número de pessoas. A ferramenta está indiretamente ligada com o resultado esperado do GPR 2 e diretamente ligada com o GPR 4, dois dos resultados esperados desse processo. GPR 2 Visa garantir que tarefas e produtos de trabalho sejam dimensionados por meio de métodos apropriados. A ferramenta necessita que o resultado esperado seja cumprido, pois ele serve de parâmetro para o cálculo do CoCoMo. Em particular para esse resultado esperado, o projeto SPIDER possui duas ferramentas para medir o tamanho de projeto baseado no método de análise de pontos por função e pontos por casos de uso, que são a Spider-APF e a Spider-UCP (BALDEZ, 2010). Caso seja adotado qualquer outro tipo de método que não os citados anteriormente, o valor pode ser inserido manualmente na Spider-CoCoMo sem que haja perda nos resultados estimados. GPR 4 Requer que o esforço e os custos sejam estimados. Esse resultado esperado é totalmente atendido com a utilização da Spider-CoCoMo tanto nos níveis G e F, tendo em vista que o método CoCoMo é utilizado para estimativas, como dito anteriormente, como nos níveis superiores ao F, pois os valores estimados são armazenados em banco de dados, sendo feito um histórico deles. Esse é o grande diferencial da Spider-CoCoMo sobre as planilhas eletrônicas. O COCOMO II (segunda versão do COCOMO – COnstructive COst MOdel) é um modelo objetivo de custos para o planejamento e execução de projetos de software. Um modelo de custos fornece estrutura (framework) para a comunicação de decisões de negócio entre os envolvidos em um empreendimento baseado em software. Além disso, oferece suporte a negociações contratuais, análises de melhoria de processo, aquisição de ferramentas, alterações na arquitetura, decisões entre desenvolvimento e aquisição de componentes, assim como diversas outras decisões sobre retorno do investimento, servindo de base a estimativas plenas de credibilidade. Embora a maioria das organizações inicie o processo de estimativa utilizando modelos lineares simples, o amadurecimento do processo de software leva à utilização de modelos mais sofisticados, capazes de melhor descrever os fatores que influenciam os projetos de software. COCOMO II O que é o COCOMO II? Como se processa? O COCOMO II é uma excelente escolha nesse sentido. Desenvolvido em uma universidade e fortemente apoiado pela indústria, oferece uma solução aberta, escalável e respeitada. O mesmo processo pode ser aplicado ao projeto inteiro ou apenas a um componente individual; O COCOMO pode calcular a programação da manutenção anual; O COCOMO pode examinar a vantagem de dados históricos e, com essas informações, criar uma constante da calibração que pode ser calculada para estimativas futuras. Imprecisão: sua precisão pode ser prejudicada no início do projeto, pois o modelo depende fortemente de uma estimativa precisa da quantidade de linhas O método de Putnam considera múltiplas variáveis e o ciclo de desenvolvimento do projeto. Com base em análise estatística, Putnam relacionou os comportamentos prazo e esforço. Equação de Putnam L = Ck. K1/3.Td 4/3, onde: L = linhas de códigos; Ck = constante de estado de tecnologia; K = Esforço (pessoa/ano); Td = tempo de desenvolvimento em anos. Ck 2.000Ambiente de desenvolvimento pobre. 8.000Métodos em prática, documentação e revisões adequadas. 11.000Ambiente ótimo, com ferramentas e técnicas automatizadas. O que é? Em 1976, McCabe criou uma maneira de testar cada caminho independente de um programa, de forma que a quantidade de casos de teste será a complexidade ciclomática do programa. Complexidade ciclomática ou complexidade condicional é uma métrica usada para indicar a complexidade do software; mede a quantidade de caminhos de execução independentes a partir do código fonte. Quais são suas vantagens? Qual é a sua desvantagem? Método de Putnam Complexidade ciclomática Como é calculada? É calculada a partir de um grafo de fluxo: os nós do grafo correspondem a grupos indivisíveis de comandos, e uma aresta conecta dois nós. Em que pode ser aplicada? A complexidade ciclomática também pode ser aplicada a funções, módulos, métodos ou classes individuais de um programa. Vamos a um exemplo? Veja como calcular a complexidade ciclomática para um artefato de software (VG). Figura 3 Fonte: Elaborado pelo autor V(G) = E – N + 2P Para: E = 8 P = 1 N = 7 V(G) = 8 – 7 + 2 = 3 V(G) = 3 V(G): Complexidade ciclomática; G: Grafo (fluxograma); E: Número de bordas (ligações); N: Número de nós (instruções); P: Número de componentes conectados ao gráfico (assumimos P = 1). Complexidade ciclomática http://pos.estacio.webaula.com.br/cursos/ATU298/aula4/img/figura3figura3.png Não existe um modelo único; Deve-se desenvolver o modelo mais adequado à empresa; O modelo deve ser periodicamente revisto; Deve-se validar por mais de um método; É um aspecto estratégico para a empresa. Finalizamos esta aula; avance e faça uma atividade. Discuta com seus colegas a importância da adoção do modelo de estimativa de ciusto COCOMO no processo de projeto de software a importância de se determinar a complexidade ciclomática. COCOMO, COCOMO II, Complexidade. Conclusões Atividade proposta Exercícios de fixação O método COCOMO é um modelo de estimativa do tempo de desenvolvimento de um software, baseado no estudo de vários projetos, dos quais foram examinados de 2.000 a 100.000 linhas de código em linguagens de programação Assembly. Esse método consiste em três implementações: básico, intermediário e avançado. O modelo básico: É um modelo com atributos de controle, como: atributos do produto; atributos de hardware; atributos pessoais; atributos do projeto. É um modelo com características da versão intermediária com uma avaliação de impacto de custo em cada passo do projeto. É um modelo estático que calcula o esforço de desenvolvimento de software e seu custo em função do tamanho de linhas de códigos. É um modelo dinâmico com características próprias que calcula o esforço de cada programador. É um modelo sistêmico que calcula as horas trabalhadas por cada equipe do projeto. O COCOMO básico se aplica a três classes de projetos do software; são elas: Básico, intermediário e avançado Orgânico, semidestacado e embutido Básico, semidestacado e restrito Difuso, semidestacado e embutido Orgânico, difuso e semidestacado O COCOMO ____________________ é aplicado no desenvolvimento de sistemas complexos embutidos em hardware, com muita inovação, com restrições severas e/ou com requisitos muito voláteis e de confinamentos operacionais. Difuso Semidestacado Orgânico Funcional Embutido O COCOMO ____________________ mede projetos de software relativamente pequenos, simples e com pouca inovação, com equipes de dimensão relativamente pequena. Avançado Semidestacado Orgânico Funcional Embutido O COCOMO ____________________ é aplicado quando as equipes de trabalho são heterogêneas em termo de experiência; por exemplo, um sistema de processamento de transações, como o controle de estoque. Avançado Semidestacado Orgânico Funcional Embutido O COCOMO II (segunda versão do COCOMO – COnstructive COst MOdel) é um modelo objetivo de custos para o planejamento e execução de projetos de software. Um modelo de custos fornece uma estrutura (framework) para a comunicação de decisões de negócio entre os envolvidos em um empreendimento baseado em softwares. Marque as vantagens do COCOMO II: O mesmo processo pode ser aplicado ao projeto inteiro. O mesmo processo podeser aplicado a apenas um componente individual.. Sua precisão pode ser prejudicada no inicio do projeto, pois o modelo depende fortemente de uma estimativa precisa da quantidade de linhas. Pode calcular a programação da manutenção anual. Pode fazer exame da vantagem de dados históricos e criar uma constante de calibração que pode ser calculada para estimativas futuras. O __________________ considera múltiplas variáveis e o ciclo de desenvolvimento do projeto com base em análise estatística, relacionando os comportamentos prazo e esforço. Método de esforço Método COCOMO Método COCOMO II Método de pontos por função Método de Putnam A complexidade ciclomática ou complexidade condicional é uma métrica usada para indicar a complexidade do software. Mede a quantidade de caminhos de execução independentes a partir do código fonte. É calculada a partir de um(a): Tabela da arquivos lógicos Diagrama de fluxo de dados Diagrama de casos de uso Grafo de fluxo Diagrama de Gantt Analise esta tabela do COCOMO semidestacado. Tabela 8 Projeto do software ab bb cb db Semidestacado 3,0 1,12 2,5 0,35 Agora, determine o número de pessoas e o prazo que deve levar o projeto de um software com 45 Kloc, usando: E = ab * KLOC bb D = cb * E db P = E / D, onde: E = Esforço aplicado por pessoa no mês D = Tempo de desenvolvimento em meses 328 pessoas/mês – 12 meses 215 pessoas/mês – 16,4 meses 142 pessoas/mês – 25,7 meses Nesta aula: COCOMO (básico, intermediário e detalhado); COCOMO II: estimativas de prazo, custo e defeitos; Método de Putnam – estudo de casos. PADUA Filho, Wilson de. Engenharia de Software: fundamentos, métodos e padrões. 3. ed. Rio de Janeiro: Editora LTC, 2009. PETERS, James F. Engenharia de Software. 3. ed. Campus, 2001. PRESSMAN, Roger S. Engenharia de Software. 7. ed. McGraw Hill, 2011. SOMMERVILLE, Ian. Engenharia de Software. 8. ed. McGraw Hill, 2007. VAZQUEZ, C. E.; SIMÕES, G. S.; ALBERT, R. M. Análise de ponto de função medição, estimativa e gerenciamento de projetos de software. São Paulo: Editora Érica, 2009. p 5 115 pessoas/mês – 26,4 meses 102 pessoas/mês – 18 meses Determine a complexidade ciclomática de um software cujo grafo apresenta 12 bordas e 7 nós. Considere o número de componentes conectado igual a 1. 5 7 19 14 84 Síntese Referências
Compartilhar