Plano de Análise de Esforço e Tempo

Versionamento

Data Versão Descrição Autor(es)
03/09/2020 0.1 Construção do documento a partir do template recomendado[1] Murilo Loiola
11/09/2020 1.0 Revisão do documento Murilo Loiola

Introdução

  Neste documento serão abordadas técnicas utilizadas para a medição de custos de fabricação de software, onde esses custos representam o valor dos insumos utilizados na fabricação de um determinado produto. Segundo Fenton e Pfleeger (1997), uma estimativa é uma avaliação de probabilidade. Uma estimativa só é útil se for razoavelmente precisa.

  Estimativas são necessárias nas fases iniciais do ciclo de vida de cada projeto, pois há uma necessidade de apresentar propostas apropriadas de negócio e administrar corretamente os recursos ao longo do mesmo. O uso de técnicas formais de estimativa pode dobrar a probabilidade do projeto de software ser concluído com sucesso, conforme indicaram as pesquisas de Roetzheim (2000b).

  Para a estimativa do custo, será levado em consideração apenas o ciclo de produção do software e não o ciclo de vida por completo, que poderia envolver questões como distribuição, atendimento ao cliente, garantia, propaganda, retirada de mercado etc. Geralmente os custos são subdivididos em Custos de Matéria-Prima, Custos de Mão-de-Obra Direta e Custos Indiretos de Fabricação. O modelo utilizado para a realização dessas estimativas será feito utilizando o método COCOMO (COnstructive COst MOdel).

Modelo de Custo Construtivo (Constructive Cost Model - COCOMO)

  COCOMO ou Modelo de Custo Construtivo, é um modelo de estimativa do tempo e esforço de desenvolvimento de um software. Criado por Barry Boehm, é baseado no estudo de sessenta e três projetos. Os programas examinaram de 2.000 a 100.000 linhas de código em linguagens de programação de Assembly a PL/I. Pelo fato dessa metodologia ter utilizado várias linguagens de programação para criar as deduções, constantes e atributos para cada situação, esse método pode ser considerado generalista e útil para quase todos os projetos de software. O COCOMO pode ser divido em três implementações, a depender do tipo de software que será desenvolvido e qual o grau de confiabilidade a que se quer chegar na estimativa de um projeto. São eles:

  O modelo COCOMO pode ser aplicado em três classes de projetos:

  Dado as características do software que será desenvolvido, sendo ele um aplicativo para facilitar o acompanhamento (por parte do médico) de grupos de paciente com doenças crônicas, o projeto se encaixa na classe de Semidestacado, pois ele exige certos requisitos rígidos, como confiabilidade na identificação dos dados corretos dos médicos e pacientes, garantia de que os pacientes estarão vinculados ao médico correto, entre outros requisitos que não são considerados triviais. Além disso, o projeto será desenvolvido por uma equipe composta de vários alunos que não fazem parte de uma equipe fixa e que possuem níveis mistos de experiência tanto nas questões tecnológicas quanto no entendimento dos processos de atendimento aos grupos citados.

COCOMO Intermediário

  De acordo com as caracteristicas do prjeto a ser densenvolvido, torna-se necessário o uso de uma implementação mais avançada que o COCOMO Básico, mas que também não tenha que lidar com variáveis muito complexas, como no COCOMO Detalhado que faz uso de multiplicadores sensiveis à fase do projeto ou hierarquia do produto(Nível de Módulo, Nível de Subsistema e Nível de Sistema). Assim sendo, a implementação intermediária, que considera atributos de esforços além de oferecer maior simplicidade quando comparada com o COCOMO Detalhado, foi considerada a melhor escolha.

  Neste modelo, o COCOMO Básico é ampliado com a finalidade de levar em consideração um conjunto de atributos direcionadores do custo que são agrupados em quatro categorias:

  Cada um desses atributos deve ser classificado de acordo com uma escala que varia de “muito baixo” a “extremamente elevado” (em importância e valor). A partir desta classificação determina-se o Multiplicador de Esforço (considerando a Tabela publicada por Boehm (1981)). O produto de todos os resultados de Multiplicadores de Esforços é chamado de Fator de Ajustamento de Esforço.

Direcionadores de Custo Muito Baixo Baixo Normal Elevado Muito Elevado Extremamente Elevado
ATRIBUTOS DO PRODUTO
Confiabilidade exigida do software 0.75 0.88 1.00 1.15 1.40 -
Tamanho do banco de dados - 0.94 1.00 1.08 1.16 -
Complexidade do produto 0.70 0.85 1.00 1.15 1.30 1.65
ATRIBUTOS DO HARDWARE
Restrições ao tempo de execução - - 1.00 1.11 1.30 1.66
Restrições de memória - - 1.00 1.06 1.21 1.56
Volatilidade do ambiente de máquina - 0.87 1.00 1.15 1.30 -
Tempo de turnaround (tempo para completar o ciclo) exigido - 0.87 1.00 1.07 1.15 -
ATRIBUTOS DE PESSOAL
Capacidade do analista 1.46 1.19 1.00 0.86 0.71 -
Experiência em aplicações 1.29 1.13 1.00 0.91 0.82 -
Capacidade do programador 1.42 1.17 1.00 0.86 0.70 -
Experiência em Máquina Virtual 1.21 1.10 1.00 0.90 - -
Experiência com a linguagem de programação 1.14 1.07 1.00 0.95 - -
ATRIBUTO DE PROJETO
Uso de práticas modernas de programação 1.24 1.10 1.00 0.91 0.82 -
Uso de ferramentas de software 1.24 1.10 1.00 0.91 0.83 -
Cronograma exigido de desenvolvimento 1.23 1.08 1.00 1.04 1.10 -

Cálculo da Estimativa do Esforço

  O resultado do esforço representa o valor de Pessoas/Mês. O modelo COCOMO Intermediário usa a seguinte equação para a estimativa do esforço:

  E = a x Sb x fae

onde:

  Tabela para os valores dos coeficientes "a" e "b" de acordo com o tipo do projeto, a mesma tabela utilizada no COCOMO básico:

Projeto de Software a b c d
Orgânico 2.40 1.05 2.50 0.38
Semidestacado 3.00 1.12 2.50 0.35
Embutido 3.60 1.20 2.50 0.32

  Como dito na introdução, nosso projeto é do tipo Semidestacado, portanto os valores serão a = 3.00 e b = 1.12.

Cálculo da Estimativa do Tempo

  Representa a quantidade de meses prevista para a conclusão do projeto:

  T = c x Ed

onde:

Resultados

Estimativa de Quantidade de Linhas de Código:

  O projeto não é trivial e, portanto, o número de linhas de código foi estipulado na casa dos milhares. Levando em consideração o uso de frameworks e padronização de código, a linguagem de programação que será utilizada no backend (JavaScript - Node) e o framework que será utilizado no frontend (React Native), o grupo fez uma estimativa inicial de que a aplicação deve alcançar pelo menos 2.500 linhas de código.

  Os módulos necessários para o desenvolvimento da aplicação ainda serão estruturados através do levantamento de requisitos. Dessa forma, o grupo estipulou somente o número de linhas de código geral do projeto, como mencionado acima. Espera-se que conforme a estrutura do projeto torne-se mais clara, a estimativa seja refeita com mais precisão.

Estimativa de Esforço

  Para 2,5 Kloc:

  E = a x Sb x fae
  E = 3,0 x 2,51,12 x 0,84
  E = 7,03 pessoas/mês

  Pesos atribuídos a cada atributo através de uma reunião em grupo para a convergência em cada esforço de cada atributo:

Direcionadores de Custo Muito Baixo Baixo Normal Elevado Muito Elevado Extremamente Elevado
ATRIBUTOS DO PRODUTO
Confiabilidade exigida do software 0.75 0.88 1.00 1.15 1.40 -
Tamanho do banco de dados - 0.94 1.00 1.08 1.16 -
Complexidade do produto 0.70 0.85 1.00 1.15 1.30 1.65
ATRIBUTOS DO HARDWARE
Restrições ao tempo de execução - - 1.00 1.11 1.30 1.66
Restrições de memória - - 1.00 1.06 1.21 1.56
Volatilidade do ambiente de máquina - 0.87 1.00 1.15 1.30 -
Tempo de turnaround (tempo para completar o ciclo) exigido - 0.87 1.00 1.07 1.15 -
ATRIBUTOS DE PESSOAL
Capacidade do analista 1.46 1.19 1.00 0.86 0.71 -
Experiência em aplicações 1.29 1.13 1.00 0.91 0.82 -
Capacidade do programador 1.42 1.17 1.00 0.86 0.70 -
Experiência em Máquina Virtual 1.21 1.10 1.00 0.90 - -
Experiência com a linguagem de programação 1.14 1.07 1.00 0.95 - -
ATRIBUTO DE PROJETO
Uso de práticas modernas de programação 1.24 1.10 1.00 0.91 0.82 -
Uso de ferramentas de software 1.24 1.10 1.00 0.91 0.83 -
Cronograma exigido de desenvolvimento 1.23 1.08 1.00 1.04 1.10 -

Estimativa de Tempo

Para 2,5 Kloc:

  T = c x Ed
  T = 2,50 x 7,030,35
  T = 4,95 meses

Referências

  1. ^ Arquitetura e Desenho de Software 2019.2 - Grupo "A Monitoria", artefato - Estimativas de Custo;
  2. Meller, Maristela Corrêa. Modelos Para Estimar Custos De Software: Estudo Comparativo Com Softwares De Pequeno Porte. 2002. Disponível em: https://repositorio.ufsc.br/xmlui/handle/123456789/82351;