Gerenciamento de Projetos >> Programação de Projeto Engenharia de Software – Profa. Viviane Dal Molin de Souza Programação de Projeto A programação de projeto consiste em dividir o trabalho total de um projeto em atividades distintas e avaliar o tempo necessário para completar essas atividades. De modo geral, algumas dessas atividades são realizadas em paralelo. É preciso coordenar essas atividades e organizar o trabalho, de modo que a força de trabalho seja otimizada. O ideal é que as atividades de um projeto durem no mínimo uma semana e no máximo oito a dez semanas. Uma boa regra para realizar estimativas é criá-la como se nenhum problema fosse acontecer e então acrescentar mais tempo para acomodar as incertezas. Uma regra seria acrescentar de 30% a 50% ao tempo previsto. Programação de Projeto A programação de projeto é normalmente representada como um conjunto de diagramas mostrando a estrutura analítica do trabalho, dependências de atividades e alocação de pessoal. Sobre a data final do projeto: * Pode ter sido definida antes do planejamento do projeto. (O esforço é distribuído no tempo disponível.) * Foi estabelecida por limites cronológicos aproximados que foram discutidos após o cálculo das estimativas. (O esforço é distribuído para que possa tirar melhor proveito dos recursos e a data final é definida após cuidadosa análise.) Infelizmente a primeira opção é a mais freqüente. Um cronograma descumprido pode insatisfeitos e elevar custos internos. deixar clientes Programação de Projeto Mito de software: “... Se nos atrasarmos, sempre poderemos acrescentar mais programadores e posteriormente sairmos do atraso do projeto.” Acrescentar pessoas tardiamente pode ter um efeito contrário, fazendo com que o cronograma fuja ainda mais do controle. As pessoas que são incluídas: • Devem aprender sobre o sistema • As pessoas que ensinam são as mesmas que estão realizando o trabalho • Enquanto estão ensinando nenhum ou pouco trabalho é feito Isto pode atrasar o projeto! Programação de Projeto Os diagramas de barras e as redes de atividades são notações gráficas utilizadas para ilustrar a programação do projeto. Os diagramas de barras mostram quem é responsável por cada atividade e para quando está programado o início e o término desta atividade. As redes de atividades mostram a dependência entre as diferentes atividades. Vamos utilizar um exemplo!!! Programação de Projeto >> Exemplo: Rede de Atividades Suponhamos a tabela abaixo: Tarefa Duração(dias) Dependências T1 8 T2 15 T3 15 T4 10 T5 10 T2, T4 (M2) T6 5 T1, T2 (M3) T7 20 T1 (M1) T8 25 T4 (M5) T9 15 T3, T6 (M4) T10 15 T5, T7 (M7) T11 7 T9 (M6) T12 10 T11 (M8) T1 (M1) Programação de Projeto Esta tabela mostra as tarefas e suas interdependências. Vemos, por exemplo, que a tarefa T3 depende da tarefa T1. Isto significa que T1 deve ser concluída antes que T3 seja iniciada. Considerando as dependências e as durações estimadas, pode ser produzida uma rede de atividades que mostre as seqüências destas atividades. Essa rede mostra quais atividades podem ser realizadas em paralelo e quais devem ser executadas em seqüência devido a dependência. Programação de Projeto 8 dias M1 T1 14/07/2006 15 dias T3 T9 M4 5 dias T6 M3 15 dias M6 04/08/2006 25/08/2006 25/07/2006 04/07/2006 20 dias Início 7 dias T7 T2 T11 15 dias 11/08/2006 25/07/2006 M2 T4 M7 10 dias T5 T10 10 dias M5 18/07/2006 M8 05/09/2006 10 dias T12 15 dias 25 dias T8 19/09/2006 Fim Programação de Projeto Os marcos de referência são indicados com cantos arredondados. As datas nesse diagrama mostram a data de início da atividade. Todas as atividades devem terminar em marcos. Uma atividade pode iniciar quando um marco precedente (que pode depender de diversas atividades) tiver sido atingido. Antes de prosseguir de um marco pra outro todos os caminhos que levam até ele precisam estar completos. O tempo mínimo necessário para terminar o projeto pode ser estimado considerando o caminho mais longo do diagrama (o caminho principal. Programação de Projeto O caminho crítico é mostrado com uma seqüência de contornos em negrito. A programação total do projeto depende do caminho principal. Qualquer atraso na execução de qualquer importante ocasiona o atraso do projeto. atividade Porém, atrasos ocorridos nas atividades que não estão no caminho principal não precisam causar um atraso geral de programação. Contanto que esses atrasos não estendam as atividades a ponto de o tempo total exceder o tempo no caminho principal, a programação do projeto não será afetada. Programação de Projeto As redes de atividades também são utilizadas para alocar pessoas ao projeto. Elas podem fornecer esclarecimentos sobre dependências que não são intuitivamente óbvias. Uma maneira alternativa de representar as informações sobre a programação do projeto é um diagrama de barras (também chamado de diagrama de Gantt). Ele mostra um calendário de projeto e a data de início e término das atividades. Programação de Projeto 4/7 11/7 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 T4 T1 T2 T7 T3 T8 T6 T5 T9 T10 T11 T12 12/9 19/9 Programação de Projeto >> Exemplo: Diagrama de Barras Para alocar pessoas em um projeto de software cria-se inicialmente uma tabela que determina qual desenvolvedor irá trabalhar em cada tarefa. Tarefa Desenvolvedor T1 Maria T2 Paula T3 Maria T4 João T5 Ana T6 Paula T7 José T8 João T9 Maria T10 Paula T11 João T12 João Programação de Projeto Pode então ser produzido um diagrama de barras que mostra os períodos nos quais o pessoal está designado para o projeto. 4/7 João 11/7 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 12/9 T4 T8 T11 T12 Maria T1 T3 T9 Paula T2 T6 José Ana T7 T5 T10 19/9 Programação de Projeto As empresas podem empregar um desenvolvedor para trabalhar em vários projetos. Desta forma se um projeto atrasar isto pode gerar atraso de um outro projeto onde o desenvolvedor seria alocado. Programação de Projeto >> Rastreamento e Controle do Cronograma “Os projetos de software atrasam-se em seu cronograma um dia de cada vez.” O atraso de um dia na programação raramente trará problemas, porém os dias se somam e então pequenos atrasos podem resultar em grandes problemas. Para acompanhar o andamento do cronograma o Engenheiro de Software pode: • Realizar reuniões periódicas sobre a situação do projeto, em que cada membro da equipe relate o progresso e os problemas. • Determinar os marcos de referência que foram atingidos até a data programada. • Comparar a data de início real com a data de início planejada para cada tarefa do projeto. Programação de Projeto • Reunir-se informalmente com profissionais para obter suas avaliações sobre o progresso até o momento e os problemas que aparecerem. Quando ocorrerem problemas o Engenheiro de Software deverá tentar resolvê-los. Depois que os problemas tiverem sido diagnosticados, recursos adicionais podem ser concentrados na área de problema ou a programação do projeto redefinida.