Pular para o conteúdo principal

Estimativas de Software

As estimativas do produto e do processo são a base para o planejamento do projeto de software. As estimativas fornecem dados que permite prever a quantidade de pessoas que serão necessárias, o tempo necessário e os custos do projeto. Não é possível elaborar cronograma e orçamento sem o uso de estimativas.

É importante ressaltar que os diversos elementos do planejamento estão relacionados entre si. Por exemplo, um dos maiores impactos nos custos de um software são os recursos humanos. Normalmente, um desenvolvedor ganha um salário mensal tornado este custo diretamente proporcional ao tempo de desenvolvimento.

Para determinar o tempo de desenvolvimento é necessário estimar a duração das atividades do software. Estimativas da duração do software dependem do tamanho do software que é necessário produzir e da produtividade dos desenvolvedores.

Estimativas são realizadas com base em métricas. Métricas de tamanho, duração, produtividade e esforço estão entre as mais utilizadas. Para fazer as estimativas, pode optar por duas estratégias:

  • Métricas com base no histórico da organização
  • Métricas estatísticas de diferentes organizações

As métricas históricas funcionam bem quando a organização é estável e já possui informações colhidas em anos de experiência. Para isso, é fundamental que exista um processo de gerenciamento do processo de software cuidadoso e que todos os dados sejam obtidos para serem analisados e avaliados. Como isso, pode-se estimar como a equipe irá produzir ou qual será o tamanho do software a partir de casos anteriores semelhantes.

Neste caso, as estimativas podem ser realizadas por especialistas que atribuem valores com base em sua experiência de projetos anteriores. Neste caso, pode-se utilizar analogias com projetos anteriores e estimar quais seriam os valores para o novo projeto.

A métricas estatísticas são elaboradas por empresas especializadas que obtêm dados de diversas organizações de desenvolvimento de software. Estes dados devem levar em consideração as diversas condições e características que causem impacto no desenvolvimento do software. Com base nestes valores, os especialistas elaboram tabelas, fórmulas e algoritmos que podem ser aplicadas no planejamento de um processo de software. Isto permite que as organizações de desenvolvimento possam elaborar o seu planejamento ajustando os valores às suas próprias condições.

Os métodos algorítmicos para a realização de estimativas oferecem uma opção mais independente e objetiva. Um exemplo desses métodos são as estimativas de esforço. Esses métodos estão centrados no tamanho do software e da produtividade da equipe:

Esforço = Produtividade*Tamanho^B*M

Existem diversas variantes desta fórmula de maneira que se possa realizar ajustes de acordo com as características da organização e de outros fatores relacionados ao produto.

Um exemplo de modelo baseado nesta fórmula é o COCOMO (Modelo de custos construtivo). A versão inicial foi proposta em 1981, por Barry Boehm. Esta versão evoluiu para o COCOMO II que considera características dos software atuais. O COCOMO II permite associar multiplicadores que levam em consideração o nível (fase) do projeto e a sua complexidade.

Veja a apresentação powerpoint sobre este assunto.

Para saber mais:

COCOMO II

Comentários

Anônimo disse…
Para o cmmi novel 3 posso utioizar na minha instituição estimativas a partir do conhecimento dos especialistas e bases históricas ou devo ter uma estimativa baseada em referencias formias como
APF?
Anônimo disse…
Olá Jair.. Infelizmente o link da apresentação em Power Point desta página está com problemas. Quando possível, gostaria que você o arrumasse. Obrigado. Ah e o seu blog realmente é muito bom. Está me ajudando bastante a entender a engenharia de software. Obrigado!!!
Jair C Leite disse…
O link já foi corrigido.
HPaulo disse…
Boas Noites

Estou a fazer a disciplina de Eng. Software e necessitava de alguma ajuda. Pois tenho um trabalho que tenho de apresentar sobre estudo de viabilidade do projecto com o respectivo planeamento. Necessitava de ajuda onde poderei encontrar documentos que poderei preencher documentar o trabalho. Sei que existem documentos para isso mas não encontro o que necessito dai precisar de ajuda.

Obrigado
davi disse…
Eu aprendi a estimar um software utilizando APF, mas para o tipo de software que desenvolvemos vimos que não é viável utilizar a APF.
Desenvolvendo softwares para Engenharia para área de projetos, em sua maioria não tem banco de dados ou nenhum repositório de dados. Os softwares são compostos de cálculos complexos e desenho de itens.
Algo parecido com softwares de vetorização como o CorelDraw, AutoCAD, etc.
Existe alguma outra técnica para fazer estimativa de software?

Postagens mais visitadas deste blog

O Modelo Espiral

O objetivo do modelo espiral é prover um metamodelo que pode acomodar diversos processos específicos. Isto significa que podemos encaixar nele as principais características dos modelos vistos anteriormente, adaptando-os a necessidades específicas de desenvolvedores ou às particularidades do software a ser desenvolvido. Este modelo prevê prototipação, desenvolvimento evolutivo e cíclico, e as principais atividades do modelo cascata. Sua principal inovação é guiar o processo de desenvolvimento gerado a partir deste metamodelo com base em análise de riscos e planejamento que é realizado durante toda a evolução do desenvolvimento. Riscos são circunstâncias adversas que podem surgir durante o desenvolvimento de software impedindo o processo ou diminuindo a qualidade do produto. São exemplos de riscos: pessoas que abandonam a equipe de desenvolvimento, ferramentas que não podem ser utilizadas, falha em equipamentos usados no desenvolvimento ou que serão utilizados no produto final, etc.

O Modelo Evolutivo

O modelo evolutivo descreve um processo na qual o software deve ser desenvolvido de forma a evoluir a partir de protótipos iniciais. Para entender melhor este modelo é importante entender o que é prototipação (ou prototipagem). Prototipação é uma abordagem baseada numa visão evolutiva do desenvolvimento de software, afetando o processo como um todo. Esta abordagem envolve a produção de versões iniciais - "protótipos" - de um sistema futuro com o qual pode-se realizar verificações e experimentações para se avaliar algumas de suas qualidades antes que o sistema venha realmente a ser construído. Objetivos da Prototipação Num projeto de software várias questões podem ser respondida com a construcão de protótipos. Nas situações típicas de desenvolvimento podemos distinguir entre diferentes objetivos na prototipação: Exploratória - é quando o protótipo é usado para ajudar a esclarecer requisitos dos usuários com respeito ao sistema futuro. Uma prototipação também é exploratória

Sistemas Computacionais

Um sistema computacional (ou baseado em computador) é aquele que automatiza ou apóia a realização de atividades humanas através do processamento de informações. Um sistema baseado em computador é caracterizado por alguns elementos fundamentais. Hardware Software Informações Usuários Procedimentos ou Tarefas Documentação O hardware corresponde às partes eletrônicas e mecânicas (rígidas) que possibilitam a existência do software, o armazenamento de informações e a interação com o usuário. A CPU, as memórias primária e secundária, os periféricos, os componentes de redes de computadores, são exemplos de elementos de hardware. Um único computador pode possibilitar a existência de diversos sistemas e um sistema pode requisitar diversos computadores. O software é a parte abstrata do sistema computacional que funciona num hardware a partir de instruções codificadas numa linguagem de programação. Estas instruções permitem o processamento e armazenamento de informações na for