Diretrizes:
|
Plano de Desenvolvimento de Software |
É um conjunto de atividades e de tarefas divididas por seqüências de tempo, com recursos atribuídos, contendo dependências de tarefas, para o projeto. |
Uma iteração é definida como um mini-projeto completo, que passa por todas as principais disciplinas e resulta, na maioria dos casos, em um sistema executável, porém incompleto: um release. Embora o ciclo (edição, compilação, teste, depuração) pareça uma iteração, o significado aqui não é esse. Os builds diários ou semanais, que integram e testam gradativamente cada vez mais elementos do sistema, também podem parecer uma iteração, mas são apenas parte dela, conforme o uso do termo neste contexto.
A iteração inicia com planejamento e requisitos e termina com um release interno ou externo.
A rapidez da iteração depende, principalmente, do tamanho da organização do desenvolvimento.
Por exemplo:
Outros fatores exercem influência: o grau de familiarização da organização com a abordagem iterativa, incluindo uma organização experiente e estável, o nível de automação usado pela equipe para gerenciar códigos (por exemplo, CM distribuído), para distribuir informações (por exemplo, web interna),para automatizar testes etc.
Preste atenção também porque há uma sobrecarga fixa em uma iteração, em relação a planejamento, sincronização, análise dos resultados e assim por diante.
Portanto, por um lado, convencido dos enormes benefícios da abordagem iterativa, você pode ficar tentado a iterar constantemente, porém os limites humanos de sua organização diminuirão sua vontade.
Alguns dados empíricos:
| SLOCs | Número de desenvolvedores | Duração de uma Iteração |
| 10.000 | 5 | 1 semana |
| 50.000 | 15 | 1 mês |
| 500.000 | 45 | 6 meses |
| 1.000.000 | 100 | 1 ano |
Quando tiver idéia do número de iterações no esboço de plano, você precisará definir o conteúdo de cada iteração. Recomenda-se inclusive dar um nome ou um título para qualificar o produto no fim de cada iteração, o que ajudará as pessoas a obter um melhor enfoque.
Exemplo Iterações para um Comutador Telefônico Privado
- Iteração 1: chamada local.
- Iteração 2: acrescentar chamadas externas e gerenciamento de assinantes.
- Iteração 3: acrescentar correio de voz e chamadas de conferência.
Um projeto bem simples pode ter apenas uma iteração por fase:
Para obter um projeto mais substancial, a norma a ser seguida no ciclo de desenvolvimento inicial deve ser:
No caso de um grande projeto, com várias questões desconhecidas, novas tecnologias etc., é possível que haja um caso para:
Portanto, durante um ciclo de desenvolvimento haverá:
- Baixo: 3 iterações [0,1,1,1]
- Típico: 6 [1, 2, 2, 1]
- Alto: 9 [1, 3, 3, 2]
- Muito Alto: 10 [2, 3, 3, 2]
Em geral, planeje de três a dez iterações. Contudo, observe que os limites superior e inferior indicam circunstâncias fora do comum. Conseqüentemente, a maioria dos desenvolvimentos usará de seis a oito iterações.
São possíveis diversas variações, dependendo dos riscos, do tamanho e da complexidade:
A seqüência de revisão padrão de um projeto de ciclo de vida em cascata passa por uma única grande revisão após a conclusão dos artefatos importantes. Por exemplo:
No Rational Unified Process (RUP), partes dos artefatos equivalentes são revistos assim que são concluídos em cada iteração, mas os marcos principais (e, portanto, as revisões) estão de acordo com a conclusão das fases: iniciação, elaboração, construção e transição. Um Gerente de Projeto que deseje adotar o RUP talvez tenha que encontrar uma maneira de reconciliar esse conflito aparente por causa das obrigações contratuais. O ideal seria que ele convencesse o cliente de que a abordagem baseada em fases e iterações, na verdade, permite uma visibilidade real maior do andamento do projeto, além de reduzir riscos, tornando desnecessária uma SRR, uma SSR etc. Entretanto, isso nem sempre é possível, e o Gerente de Projeto precisa programar essas revisões nos pontos apropriados. No RUP, é possível localizar os pontos em que esses importantes artefatos (na verdade, seus equivalentes no RUP) estão basicamente completos, embora isso nem sempre esteja perfeitamente de acordo com as fases ou as iterações.
Isso é feito aqui considerando que o esforço relativo que será gasto em requisitos, design e assuntos do gênero será aproximadamente o mesmo no RUP que no ciclo de vida em cascata (ideal), mas que o esforço será distribuído de modo diferente. O resultado é este:
Para obter eficiência, o Gerente de Projeto e o cliente deverão trocar idéias e tentar combinar essas revisões com as revisões prescritas do RUP. Isso é claramente possível para a SRR e a PDR, que podem ser combinadas com a Revisão dos Marcos de Ciclo de Vida de Objetivos e com a Revisão dos Marcos de Ciclo de Vida de Arquitetura, respectivamente. Isso, porém, não é tão óbvio no caso da SSR e da CDR. Entretanto, considerando que praticamente todos os projetos terão, no mínimo, duas iterações na elaboração e, pelo menos, duas na construção, recomenda-se que a SSR seja combinada com a Revisão de Aceitação de Iteração para a primeira iteração na fase de elaboração e que a CDR seja combinada com a Revisão de Aceitação da Iteração para a primeira iteração na construção. Nos dois casos, será possível ter uma boa visibilidade dos artefatos experimentados, com tempo suficiente para correção, embora a abordagem iterativa deva ser capaz de lidar com isso como rotina habitual.
Assim como o processo de software é influenciado pelas características do projeto, a organização do projeto também sofre essa influência. A estrutura padrão, aqui apresentada (consulte a figura abaixo), precisa ser adaptada para refletir os efeitos de alguns fatores, como os que aparecem listados:
Esses fatores serão descritos detalhadamente em Diretrizes: Discriminadores do Processo. Nesta seção, examinaremos seu efeito na escolha da estrutura do projeto. A figura a seguir apresenta uma organização de projeto padrão, que mostra como as responsabilidades são atribuídas à estrutura de equipe.

Figura que mostra a Organização Padrão do Projeto. Observe que não há valor em termos de maturidade ou autoridade na classificação dos papéis.
Essa figura é um ponto de início que orienta como as responsabilidades e os papéis no nível do projeto devem ser mapeados em uma estrutura de equipes. A figura também serve para destacar que os papéis (mostrados nas caixas amarelas) não representam indivíduos, mas "chapéus" que um indivíduo (ou uma equipe) pode usar durante o projeto. É por esse motivo que alguns papéis (o de Gerente de Projeto, por exemplo) aparecem mais de uma vez. Isso indica que, em algum momento, a função de Gerente de Projeto, conforme definido no RUP, poderá aparecer em mais de uma equipe. Por exemplo, em um grande projeto, a tarefa de preparação de um relatório de status em uma Estrutura de Divisão de Trabalho pode ser delegada a um indivíduo da Equipe de Administração. Entretanto, essa é uma responsabilidade que o RUP atribui ao papel denominado Gerente de Projeto.
Em um pequeno projeto, é provável que um indivíduo indicado como Gerente de Projeto execute todas as atividades do papel denominado Gerente de Projeto. Nesse caso, a Equipe de Administração funde-se na Equipe de Gerenciamento de Software. A seleção da estrutura da equipe será influenciada pela natureza e pelo tamanho do projeto, mas deve ser conciliada com algumas regras de grande senso comum:
Os fundamentos da organização padrão serão descritos detalhadamente em [ROY98]. Em particular, as responsabilidades de implantação designadas para a equipe de avaliação de software reconhece que, entre todas as equipes em um projeto de desenvolvimento, a equipe de avaliação de software tem a maior exposição ao software tal como o usuário final irá vê-lo.
Durante a vida útil de um projeto, a organização se desenvolverá a fim de suportar a estrutura de divisão de trabalho capturada no plano de projeto. Isso é mostrado na figura abaixo, contida no [ROY98].

Essa evolução enfatiza um conjunto diferente de atividades em cada fase:
A migração entre as equipes durante essa evolução permitirá manter o conhecimento e a capacidade dentro do projeto. Por exemplo, quando a elaboração estiver concluída, alguns membros da equipe de arquitetura poderão ser transferidos para as equipes de desenvolvimento, podendo atuar como chefes de equipe ou transmitindo a 'visão' de arquitetura para o desenvolvimento. Por último, quase no final da fase de construção, o foco será na equipe de avaliação, e o pessoal passa da equipe de desenvolvimento para a equipe de avaliação. Nesse estágio, também é importante evitar a perda da integridade arquitetural, que se encontra no auge da construção, e evitar que a influência da equipe de arquitetura não se perca como 'centro de gravidade' à medida que o projeto for evoluindo. A migração de alguns membros da equipe de arquitetura para a equipe de avaliação é uma maneira de evitar isso.
|
Rational Unified Process
|