segunda-feira, janeiro 17, 2011

Waterfall ou Agile: Como escolher a abordagem do desenvolvimento de Software?

perguntasOs projectos de desenvolvimento de software são normalmente abordados com a utilização alternativa de dois métodos, o Waterfall ou o Agile. Ambos têm prós e contras e cada um tem defensores que salientam o valor da sua abordagem preferida. \

Vamos analisar ambos os métodos e tentar compreender qual é o melhor e sob que circunstâncias respondem à questão: Como escolher a abordagem do meu desenvolvimento de Software?

O método de Waterfall (ou de Cascata)

O método de Waterfall já é usado desde 1970 e continua a ser o mais comum. Afirma que deve ser seguido um conjunto distinto de passos através do ciclo de vida do projecto. Os passos são usualmente similares a estes:

  • · Análise de Requisitos
  • · Desenho
  • · Implementação
  • · Teste
  • · Instalação
  • · Manutenção

waterfall

A razão pela qual é denominado o método de Waterfall (cascata) é por que cada etapa decorre a partir da prévia quando esta se conclui, descendo como uma cascata. Como uma casta flui para baixo e nunca para cima. Este método é muitas vezes considerado como «mais seguro».

O método funciona bem em ambientes comerciais em que os contratos são assinados e o dinheiro é pago. Contudo. Quando se trabalha para clientes internos, é mais difícil fazer má cara a mudanças de última hora quando são as pessoas da organização que as pedem e muitas vezes com o apoio da gestão de topo.

Prós

Contras

Documentação detalhada

Início lento.

Requisitos acordados e assinados.

Requisitos fixos difíceis de mudar.

Pode ser desenvolvido com programadores com conjunto de competências mais baixo.

Não há visibilidade do software para o cliente até que o desenvolvimento esteja concluído.

Número reduzido de defeitos através de um planeamento do desenho.

Falta de flexibilidade tornando difícil mudar de direcção.

Pontos de início e de fim definidos para cada fase, permitindo que o progresso possa ser facilmente medido

Os Clientes não estão inicialmente conscientes dos requisitos.


Método Agile

O método Agile refere-se a uma abordagem iterativa a projectos, em que os requisitos e soluções evoluem através da colaboração entre clientes e equipas de desenvolvimento. O termo está ligado a 2001 quando foi lançado o «Agile Manifesto».

Se o gestor do projecto está receoso de cometer erros frente ao cliente este não é o melhor método a adoptar. O método Agile significa que criamos resultados o mais cedo possível e vamos refinando-os através diversas iterações com o cliente. Contudo, verifica-se que alguns stakeholders encaram negativamente esta abordagem.

Assim, será que o método Agile conduz a uma mais rápida entrega de resultados? Só porque conseguimos começar a programar mais cedo não significa necessariamente que iremos terminar mais cedo. Mas, garante que o resultado final vai de encontro às expectativas e necessidades do cliente, por que , principalmente, ele consegue oferecer válidos inputs durante toda a fase desenvolvimento.

Prós

Contras

Início rápido, releases incrementais e revisões regulares e feedback do cliente.

Pode ser mal interpretado como não planeado ou indisciplinado.

Evolução dos requisitos ao longo do tempo.

Exige uma equipa de alta qualidade que possa enfrentar o cliente.

Capacidade de resposta rápida à mudança.

Necessita de um envolvimento de alto nível por parte do cliente.

Menor trabalho repetido alcançado através de teste continue envolvimento do cliente.

Falta de planos detalhados de longo prazo.

Comunicação em tempo real entre o desenvolvimento e o cliente.

Produz documentação de baixo nível.


Conclusão

Então qual é o melhor método, Waterfall ou Agile?

Nenhum…

O método que usamos depende de vários factores, tais como:

Tipo de trabalho: há um resultado claramente definido? O desenvolvimento de sites da web é criativo e adere com facilidade ao método Agile. Já o desenvolvimento de sistemas de transacções, onde existe um resultado claramente definido adapta-se melhor ao método Waterfall.

Tipo de cliente: será que o cliente está disposto a trabalhar de forma iterativa, terão tempo suficiente para rever e comentar as iterações regulares?

Ponto de vista do gestor: Será que ele favorece um método relativamente ao outro. Até que ponto é ele adaptável?

Apreciação das TI na organização: as TI são vistas como um parceiro valioso ou um mal necessário? Se o ponto de vista é o último, então utilize o método de Waterfall.

Cliente externo ou interno: o seu cliente é externo ou interno? O método Waterfall funciona bem com clientes externos para os quais é normal existir um contrato assinado, pelo contrário com os clientes internos podem forçar mudanças com base no suporte da gestão de topo.

O gestor de projecto deve seleccionar o método que melhor satisfaça as necessidades dos utilizadores. O problema surge quando existem diferenças de opinião. Neste caso, escolha o método que irá realizar o melhor resultado e faça a gestão dos desacordos.

No fim ambos os métodos podem realizar o projecto. O segredo está na gestão das expectativas do cliente e na realização de um produto de qualidade. A realidade é que quando se chega ao fim da viagem, já ninguém se importa como é que lá se chegou.

LQ

sexta-feira, janeiro 07, 2011

Conhecer os custos de um projecto não é suficiente!

Para se poder compreender o verdadeiro valor de um projecto e decidir se o levamos a cabo ou não (ou mesmo até, em primeiro lugar, iniciá-lo) não é muito útil considerar unicamente os custos. Se os benefícios excedem os custos então não há razão porque os custos não podem aumentar. O que é importante é que os benefícios continuem a exceder os custos.

Quando a organização pretende verificar se estes componentes se mantêm em desequilíbrio é porque pretende validar a realização.money_and_failure

Quando analisamos os custos torna-se vital que também verifiquemos os benefícios. Nós temos coisas chamadas centros de custo onde todos os custos relevantes são acumulados e mantidos e inevitavelmente debruçamo-nos sobre eles, analisamo-los e revemo-los, etc. E então o que fazemos com os benefícios? Quando foi a última vez que ouvimos falar de um centro de benefícios?

O que precisa então ser conhecido acerca destes benefícios que podem vir a ocorrer num futuro incerto? A próxima vez que estiver num projecto pense acerca do que pode ser necessário registar destes benefícios, para garantir que são compreendidos de forma adequada a poderem ser reconciliados com os custos. Sugeria o seguinte:

  • Descrição do Benefício – uma narrativa que nos ajude a compreender o âmbito daquilo que esperamos obter.
  • Quando é expectável ocorrer o benefício e qual o período durante o qual se realizará – os benefícios são raramente óbvios de forma imediata. Taxa Interna de Retorno, Valor Líquido Presente, Payback e outros indicadores financeiros trabalham tão bem com benefícios como com custos.
  • Medir a realização do benefício e como será obtida – como iremos medir o verdadeiro valor e particularmente como é que o poderemos medir. Não se esqueça de fazer uma avaliação do «estado actual» já que todas as melhorias devem ser medidas em relação com alguma coisa.
  • Que custos estão directamente associados com os benefícios em questão.
  • Qual o projecto que irá realizar os outputs que permitirão obter os benefícios.
  • Que riscos podem estar associados com o caminho de obtenção do benefício.
  • Quem irá ser responsável e proprietário da realização dos benefícios.

Se registamos os benefícios desde o início estaremos em boa posição para validarmos as razões para o projecto e aptos a demonstrar a sua viabilidade.

segunda-feira, dezembro 20, 2010

Gestão de Requisitos – Maturidade da empresa

Passei os últimos dias a acompanhar alguns colaboradores de uma empresa que pretende preparar uma equipa para um desenvolvimento de alguma dimensão e necessita de compreender as necessidades do negócio e de as acompanhar ao longo do processo. Verifiquei, com algum espanto, que se pensa possível, de forma teórica, a preparação de recursos para implementar um processo de gestão de requisitos sem um prévio suporte de experiência e um cuidado consolidado no âmbito de anteriores projectos.
Pensei então que a empresa deveria tentar conhecer o estado e a forma como até agora este tipo de necessidade é encarada e que factores poderiam ser identificados para o realizar.enterprise-20-maturing-into-the-mainstream
Em primeiro lugar, a realidade das empresas leva-nos considerar que:
  1. Todas as organizações têm pontos negros – as pessoas focam-se naquilo que fazem muito bem e tendem a estar focados nestas questões e tentam sempre evitar melhorias. Muito embora isto pareça contra-intuitivo, quando se trata da maturidade da gestão de requisitos, já que aqui temos de procurar encontrar estes pontos negros – aquilo que não fazemos bem – e resolver isso para obter verdadeiros ganhos.
  2. A maturidade da gestão de requisitos é definida de diversas formas, de uma forma elementar como possuir um conjunto estável de modelos de documentação usados pela companhia até um processo único dentro da organização definido com os recursos adequados e devidamente apoiado.
Então como podemos definir com simplicidade a maturidade da gestão de requisitos? A maturidade de um processo é sempre acerca do grau até ao qual uma organização pode ser repetível, consistente e eficiente na sua execução.
As organizações que não têm processos definidos, ou com processos mas que não são aplicados terão níveis baixos de maturidade, tal como as organizações com processos bem descritos, institucionalizados e optimizados terão altos níveis de maturidade. A questão é que não é só o processo que é necessário já que há seis capacidades a entender.
  • Processo – Aquilo que as pessoas têm de fazer.
  • Técnica – Como é que as pessoas irão realizar os vários passos do processo dentro de certas variações e condições.
  • Competência dos colaboradores – As funções, papéis e competências das pessoas e o seu alinhamento para este objectivo correntemente e nas contratações futuras.
  • Ferramentas/Tecnologia – O suporte e automação utilizados na conclusão das actividades.
  • Organização – A estrutura de construção dos requisitos, a infra-estrutura de apoio, os serviços oferecidos pela organização e a abordagem de gestão dos recursos.
  • Resultados – Os documentos, resultados e produtos do trabalho necessários para realizar o processo.
As pessoas falham aqui porque não vêem todas as capacidades que devem estar presentes. Um exemplo é o de uma organização com processos bem definidos e resultados, mas com um estabelecimento elementar das competências dos colaboradores necessárias e pouca formação para construir essas capacidades. Até que ponto será efectiva esta organização? Está a definir o que as pessoas devem fazer mas não está a dar as competências a estas pessoas para realizarem adequadamente as suas tarefas.
Se acredita que a sua organização tem uma maturidade elevada, então deve analisar as seis capacidades – para ver onde estão as fraquezas. A mais frágil é aquela em que se deve concentrar.
O outro erro que as pessoas fazem é pensar que os requisitos são só documentação ou só elicitação. De fato o “processo” dos requisitos é a realização de vários processos realmente importantes como:
  • Planeamento e Gestão dos Requisitos
  • Elicitação dos Requisitos (recolha)
  • Análise e Documentação dos Requisitos
  • Comunicação dos Requisitos
  • Implementação dos Requisitos
Na realidade, a organização pode considerar-se madura porque é muito boa em uma ou duas destas áreas de processo, mas poucas organizações analisam todas as áreas de processo e compreendem as suas forças e fraquezas. Sublinho, que lá por sermos bons numa coisa, não significa que todo o processo é particularmente eficiente ou controlável e isso significa que não pode ser considerado maduro.
Alcançar a maturidade na gestão dos requisitos pode parecer complicado, mas é, em primeiro lugar, tratar de ser honesto com a visão que se tem da organização e aceitar que há sempre áreas que necessitam de melhoria. A maior parte do tempo, estas melhorias são em áreas que a organização «não vê» - são pontos cegos – e, mesmo muitas vezes, é necessário trazer pessoas de fora para avaliar … tal como auditores.
Por outro lado, as organizações que tem alta maturidade têm excepções, diferenças nos custos e variações de performance – mas tendem a conseguir produzir aplicações a 40% do custo das dos seus concorrentes com baixa maturidade. Qual é o investimento em TI que retorna 40% só por se ser honesto com nós próprios?
LQ