Logomarca IETEC

Buscar no TecHoje

Preencha o campo abaixo para realizar sua busca

:: Gestão de Projetos

Gestão de Projetos de desenvolvimento de software

Daniela Franco Silveira

Pós-Graduada em Gestão Projetos pelo Ietec

1. Introdução
Desenvolvimento de software, como sugere Martins (2006), é uma atividade criativa, diferente dos projetos tradicionais, baseados em atividades produtivas e processos administrativos que possuem fluxo de trabalho relativamente fixo. É muito difícil planejar antecipadamente o trabalho que será feito antes de saber mais precisamente o que vai ser produzido. A engenharia de software não alcançou o nível de outras disciplinas e, talvez, nunca alcance, já que as teorias básicas de suporte são fracas e pouco compreendidas. Por conseguinte, a engenharia de software é um domínio de alto risco e requer uma abordagem diferenciada para gerenciamento de projetos.

De acordo com PMBOK, o gerenciamento de projetos é a aplicação do conhecimento, habilidades, ferramentas e técnicas às atividades do projeto a fim de atender aos seus requisitos. O gerenciamento de projetos é realizado através da aplicação e da integração dos seguintes processos de gerenciamento de projetos: iniciação, planejamento, execução, monitoramento e controle, e encerramento.

Cada vez mais os sistemas são complexos e precisam estar prontos em menos tempo. Um projeto de desenvolvimento de software geralmente sofre muitas mudanças durante o seu ciclo de vida, dificultando muito o gerenciamento se forem utilizadas as técnicas tradicionais de gerenciamento de projetos. Os requisitos mudam por vários motivos: usuário muda de idéia (as necessidades dos usuários mudam com o passar do tempo), o problema muda (ao implantar o sistema verifica que o mesmo não está resolvendo completamente o problema), mudanças técnicas (novas tecnologias), mudanças de mercado (concorrentes podem lançar produtos similares e melhores). [Martins, 2006]

Para atender a esta necessidade de engenharia de software foi criado o Rational Unified Process (RUP).

2. RUP
O RUP é um processo de engenharia de software cujo objetivo é garantir a produção de software de qualidade, que atenda aos requisitos estabelecidos pelo cliente (escopo), respeitando um orçamento (custo) e um cronograma (prazo) previamente definidos. [Martins, 2006] Como dito no PMBOK, é o que os gerentes de projetos frequentemente falam de uma "restrição tripla" - escopo, custo e prazo. A qualidade do projeto é afetada pelo balanceamento desses três fatores.

No RUP o planejamento é baseado num conjunto de processos, que buscam atingir certos objetivos no tempo. Os processos são utilizados como base para definir as atividades das várias fases do projeto. [Martins, 2006]

O RUP adota as seguintes premissas básicas: uso de iterações para evitar o impacto de mudanças no projeto, gerenciamento de mudanças e abordagens dos pontos de maior risco o mais cedo possível.

A proposta do RUP é conduzir o projeto em ondas, ou seja, em iterações. Cada iteração é abordada de forma tradicional, alguns requisitos e riscos mais críticos são trabalhados, há um pouco de análise, implementação, testes e implantação. Depois há outra iteração, onde novos requisitos são trabalhados, outros riscos são mitigados, há mais análise, implementação, testes e implantação. Isso continua até que o produto seja concluído. [Martins, 2006]

De acordo com Martins (2006), com essa abordagem, há dois grandes benefícios:
a) permite que a equipe progressivamente identifique os componentes e decida quais serão desenvolvidos, reutilizados e quais serão comprados;
b) a integração não é um "big bang " no final do projeto; ao invés disso, os elementos são integrados progressivamente. O sistema é montado através de várias integrações. Como muitos riscos do projeto geralmente estão associados às integrações entre os componentes e subsistemas, este mecanismo permite aumentar significativamente as chances de sucesso.

Os processos do RUP orientam o gerente de projeto na elaboração do WBS , na identificação dos riscos, na divisão do trabalho e no seqüenciamento das atividades.

3. Planejamento das Fases
O plano de projeto define os objetivos do projeto, do ponto de vista do negócio, indicando o que vai ser produzido e não por que. Os objetivos do projeto devem ser específicos, mensuráveis e realísticos. [Martins, 2006]

No RUP, o projeto é composto por quatro fases: Concepção, Elaboração, Construção e Transição. Cada fase do projeto tem um conjunto específico de objetivos:

Concepção: nesta fase, o foco é chegar a um acordo com os stakeholders quanto à visão do sistema e aos objetivos e estimativas das demais fases do projeto.

Elaboração: esta fase é um processo de engenharia, onde o foco está em especificar uma arquitetura robusta e confiável para o sistema fazer o planejamento para o restante do projeto. Para isso é necessário obter uma visão abrangente do sistema, como, escopo, funcionalidades principais e requisitos não funcionais.

Construção: a fase de construção basicamente consiste num processo de manufatura, onde o foco está no gerenciamento de recursos e otimização do tempo, custos e qualidade.

Transição: a finalidade desta fase é refinar requisitos, especificações e transferir o produto para a comunidade de usuários.

4. Planejamento da Iteração
Cada fase do projeto é composta por uma ou mais iterações e, em cada iteração, uma parte do software é produzida. Cada iteração termina com um marco do projeto (um marco menor), onde é possível avaliar o progresso do projeto. Desta forma o produto final será produzido incrementalmente, à medida que as iterações ocorrerem.

Cada iteração é abordada como um projeto em cascata. O foco de cada iteração muda em função dos seus objetivos, dando-se maior e menor ênfase em cada uma das disciplinas. Os focos das iterações em cada fase são os seguintes:

Concepção: o foco é entender os requisitos de um modo abrangente e definir o escopo do projeto.

Elaboração: o foco está na captura dos requisitos e na definição da arquitetura.

Construção: o foco está na implementação, evoluindo-se o protótipo inicial para um produto operacional.

Transição: o foco é transferir o produto para o cliente, garantir que tenha nível de qualidade esperado e atenda aos requisitos especificados, corrigir erros, treinar usuários, fazer ajustes no sistema e adicionar elementos que foram esquecidos.

As iterações devem ser planejadas em detalhe, vislumbrando-se os objetivos específicos que foram definidos do planejamento das fases e considerando o horizonte de tempo da iteração.


5. Plano de projeto
O plano de projeto de fases é abrangente. Há somente um para todo o projeto e seu objetivo é registrar as informações globais do projeto, pertinentes às fases previstas no RUP. Já o plano de projeto de cada iteração é desenvolvido utilizando-se técnicas tradicionais de planejamento de projetos, como as propostas pelo PMBOK.

O escopo de cada fase deriva dos objetivos da fase e esses, por sua vez, são a base para a definição do escopo das iterações. O WBS pode ser definido em quatro níveis: fases, iterações, artefatos e tarefas resumo. No planejamento das fases, além do WBS, deve existir uma descrição dos objetivos de cada fase e iteração do projeto. No plano de projeto das iterações devem ser definidos os pacotes de trabalho com maior precisão, contudo, ao final de cada iteração, os objetivos precisam ser revisados de modo que reflitam o estado atual do projeto. [Martins, 2006]

Com base no escopo, nos riscos e nos objetivos de cada fase, são definidos os marcos do projeto, quando os resultados obtidos até o momento são questionados, artefatos específicos são avaliados, atividades são sincronizadas ou o produto é liberado. Serão criados cronogramas detalhados apenas no planejamento das iterações. O

marco maior refere-se a um evento que indica o fim de uma fase e início de oura, enquanto que o marco menor indica o fim de uma iteração. Após definir o tempo e o esforço para cada iteração, o próximo passo é dividi-los entre as disciplinas do projeto, sendo que cada disciplina define um conjunto de atividades logicamente relacionadas, definidas no WBS (exemplos de disciplinas no desenvolvimento de software: Modelo de Negócio, Requisitos, Análise, Implementação, Teste, Implantação, Gerenciamento de configuração, Gerenciamento de projeto, Ambiente). [Martins, 2006]

O custo associado ao esforço de trabalho é dividido entra as fases do projeto usando uma abordagem top-down , da mesma forma que a estimativa de tempo. Na construção de um sistema, o homem/hora é o principal recurso consumido e o custo é estimado atribuindo-se valor às unidades de esforço, considerando os diferentes tipos de profissionais para as diversas fases do projeto. Outros custos que podem ser incluídos estão relacionados à aquisição de componentes de software e uso de equipamentos. [Martins, 2006]

De acordo com Martins (2006), a correção de problemas de software é de 100 a 1000 vezes mais onerosa após a implantação do sistema do que no início do projeto. Por conseguinte, é de vital importância controlar e garantir a qualidade do sistema durante todo o ciclo de vida de projeto, no que diz respeito às funcionalidades, confiabilidade e performance. Assim, é necessária a criação de testes para cada cenário para realizar a verificação da qualidade. Portanto a verificação contínua da qualidade provê solução para algumas das causas mais comuns de fracasso de projetos de desenvolvimento de software.

A quantidade de pessoas a serem alocadas no projeto depende da estimativa de esforço definida para cada fase e nas restrições de prazo. Por outro lado, o RUP prevê um conjunto específico de responsabilidades e capacitação para cada processo; logo, pode ser necessário alocar mais de um profissional no projeto, caso não seja possível encontrar uma só pessoa com todas as características necessárias para desempenhar todos os papéis do RUP. [Martins, 2006]

De acordo com Martins (2006), durante a execução, a principal informação a ser comunicada aos stakeholders é o relatório de progresso, que apresenta o estado atual do projeto. Além de monitorar e comunicar o esforço previsto versus o realizado, também devem ser monitoradas as atividades não planejadas e o esforço consumido, através de relatórios de progresso (earned value). [Martins, 2006]

No RUP a identificação dos riscos mais críticos do projeto é base para a definição dos marcos do cronograma. Os riscos que afetam os objetivos do projeto e a sua exeqüibilidade devem ser abordados primeiro na fase de Concepção. Na fase de Elaboração são mitigados os riscos técnicos, enquanto que na fase de Construção são tratados os riscos pertinentes à performance de desenvolvimento e qualidade. Finalmente, os riscos associados à implantação são resolvidos na fase de Transição. No plano de projeto de iterações, nas fases de Concepção e Elaboração os objetivos da iteração são definidos com base nos riscos, que por sua vez, vão definir os casos de uso, cenários, algoritmos e outros elementos que serão trabalhados.

Para garantir que as ações necessárias para mitigação do risco sejam executadas adequadamente, é aconselhável que sejam incluídas no WBS e no cronograma. Geralmente, as revisões dos planos de risco são realizadas nos marcos dos projetos. [Martins, 2006] Em projetos de desenvolvimento de software, as aquisições estão associadas à compra de componentes de software, ferramentas e ao uso de equipamentos. [Martins, 2006]

6. Conclusões
Um projeto é bem sucedido quando foi concluído dentro do tempo e orçamento previstos, apresentou eficiência na utilização dos recursos disponibilizados e atingiu a qualidade e performance desejada. [Senra, 2006]

O gerenciamento de projetos de desenvolvimento de software, mesmo quando baseado em uma metodologia, ainda pode falhar por diferentes motivos. Esses projetos que falham têm, conforme Martins (2006), muitos sintomas em comum:
- Entendimento impreciso das necessidades dos usuários;
- Gerenciamento de requisitos de forma informal e amadora;
- Arquitetura frágil;
- Complexidade excessiva que cresce fora de controle;
- Inconsistências não detectadas nos requisitos, especificações técnicas e implementação;
- Testes insuficientes ou inadequados;
- Propagação descontrolada das mudanças de projeto;
- Incompetência na mitigação dos riscos.

A equipe de projetos deve estabelecer uma metodologia para gerenciamento, porém para mitigar estes tipos de problemas, o RUP pode ser um auxiliar importante com ferramentas e processos. O sistema será testado várias vezes, os requisitos serão refinados e reavaliados, e representarão mais fielmente as necessidades dos usuários. Com isso as chances para um projeto de desenvolvimento de software ser bem sucedido podem ser melhoradas.


Referências Bibliográficas
MARTINS, José Carlos Cordeiro. Gerenciando Projetos de desenvolvimento de software com PMI, RUP e UML - 3 ed. rev. e ampl. - Rio de Janeiro: Brasport, 2006.

Um Guia do Conjunto de Conhecimentos em Gerenciamento de Projetos (Guia PMBOK®). Terceira edição ©2004 PMI - Project Management Institute.

SENRA, Clênio. Técnicas de Gestão Aplicadas à Tecnologia da Informação (2.1. Gerenciamento de Projetos) Belo Horizonte, 2006. (Material do curso de Pós-Graduação em Gestão e Tecnologia da Informação realizada no IETEC. Apostila didática).

http://www.portaljava.com.br/home/modules.php?name=News&file=article&sid=425 - RUP - Rational Unified Pocess - acessado em 15 de jan. de 2007

Indique este artigo a um amigo

Indique o artigo