Aqueles que não estão familiarizados com os métodos de gerenciamento de projetos Agile podem ter a impressão que as equipes trabalham sem especificações. Os objetivos variam de um sprint para outro, não sabemos exatamente o que estará no próximo sprint … No entanto, isso está longe de ser verdade. Dizer que um projeto Agile não tem especificações está completamente errado. O que é verdade, no entanto, é que o modo de concepção das especificações funcionais agile é totalmente diferente daquelas de um método convencional.
Pequeno lembrete sobre as especificações funcionais
As especificações funcionais pretendem descrever com precisão todas as funções de um software ou aplicativo e, assim, estabelecer o âmbito funcional do projeto.
A elaboração das especificações é baseada na expressão das necessidades do cliente, geralmente agrupadas e reformuladas em um caderno de encargos. A especificação de uma função, portanto, descreverá em detalhes os serviços que ela fornecerá ao aplicativo ou ao usuário. Para um site, podemos encontrar, por exemplo, a exibição da página inicial, dos menus, as identificações dos usuários e o gerenciamento do carrinho de compras, se for um site de comércio eletrônico …
As especificações funcionais descreverão, portanto, os aspectos de negócios do aplicativo bem como a sua implementação e organização.
Nesta fase, as soluções técnicas não são discutidas. Ou seja, as diferentes funções do aplicativo serão detalhadas, mas não os meios para implementá-las. A arquitetura, as tecnologias e o hardware serão descritos nas especificações técnicas.
Um aspecto por vezes esquecido das especificações funcional é que também devem incluir cenários de teste. De fato, é importante nesta etapa prever como será possível verificar se a função desenvolvida corresponde à funcionalidade descrita.
Elaboração das especificações dentro de um gerenciamento de projetos tradicional
No contexto de um gerenciamento de projetos em cascata ou com um ciclo em V, o escopo funcional é perfeitamente enquadrado desde o início. Isso significa definir uma lista exaustiva de funcionalidades antes de descrevê-las uma por uma.
Cada funcionalidade será detalhada de forma a que seja compreensível pelo cliente, que poderá verificar se a descrição corresponde ao que ele espera, e pela equipe de desenvolvimento, que pode elabora uma versão fiel.
Em um método convencional de gerenciamento de projetos, a fase de implementação só pode começar quando todas as especificações funcionais tiverem sido escritas e validadas pelo cliente. Isso significa que por vezes pode levar semanas, ou mesmo meses, entre o início da especificação funcional e o início dos desenvolvimentos.
Este método é, portanto, adequado para projetos cujas funcionalidades e núcleo do negócio, são bem conhecidos e que não irão variar, ou não muito, ao longo do tempo.
Este processo de elaboração das especificações funcionais que deve ser concluído antes de iniciar a fase de desenvolvimento é, no entanto, um pouco problemático.
Para começar, é muito raro que os usuários possam descrever exaustivamente todas as funcionalidades que desejam ver incorporadas no aplicativo. Além disso, como o processo perdura ao longo do tempo, é muito provável que a análise das necessidades, a elaboração das especificações, a redação das especificações funcionais, os desenvolvimentos e os testes sejam realizados por pessoas diferentes. Por conseguinte, será necessário assegurar uma boa comunicação entre todos os intervenientes, de modo a não perder informação. A transmissão dessas informações torna-se ainda mais complicada durante projetos muito longos, porque é comum pessoas saírem e outras chegarem, sem nunca se cruzarem.
Há também a questão da manutenção de especificações funcionais. Mesmo que as necessidades variem pouco durante o projeto (caso contrário, é melhor optar por um método Agile), será necessário atualizar as especificações regularmente para ter em conta os avanços e os possíveis problemas identificados durante a realização.
As especificações funcionais Agile
Como acabamos de explicar, é muito complicado, até irreal, ser capaz de elaborar especificações funcionais exaustivas.
Podemos então começar a desenvolver sem depender de especificações?
Claro que não. O gerenciamento de projetos não deixa espaço (ou muito pouco) para improvisação. Requer especificações funcionais para converter as necessidades do cliente em funções aplicativas e, em seguida, orientar as equipes técnicas em suas realizações.
As especificações funcionais Agile não serão, portanto, elaboradas no início do projeto. Pelo contrário, serão moldadas durante todo o seu desenvolvimento. Cada especificação funcional será elaborada imediatamente antes de seu desenvolvimento. Para que o processo seja eficaz, será necessário muito rigor e uma comunicação perfeita entre o product owner de um lado e a equipe de desenvolvimento do outro.
Ao contrário de um método tradicional, a responsabilidade da elaboração das especificações funcionais é compartilhada. O cliente, através do seu product owner, ajudará a descrever suas necessidades e especificações. A equipe de desenvolvimento definirá a estrutura e as soluções técnicas que devem ser implementadas. A identificação de testes, adaptados aos desenvolvimentos, permitirá, por um lado, refinar as especificações e, por outro lado, avaliar mais rapidamente a conformidade do comportamento da aplicação.
Seguir este procedimento tem várias vantagens.
O projeto desenvolve-se na forma de iterações, as especificações funcionais Agile beneficiam à medida que são elaboradas durante todo o período do projeto. A partir deste exato momento, você tem à sua disposição toda a informação reunida desde o início do projeto, incluindo novas restrições que possam ter surgido durante sprints anteriores. Por outro lado, as especificações funcionais Agile foram elaboradas pouco antes dos desenvolvimentos, a equipe de desenvolvimento ainda as tem em mente no momento da implementação. É muito mais simples do que ter que voltar a um documento elaborado há várias semanas, quando o projeto poderia não estar integrado ainda. Os desenvolvedores, portanto, serão mais eficientes, já que não precisarão procurar informações de editores anteriores.
Os desenvolvimentos e as especificações funcionais Agile são centralizados. Uma especificação funcional Agile se concentra em uma única função do aplicativo, geralmente apresentada como uma user story. Isso permite um melhor foco na funcionalidade em questão, ignorando informações que possam interferir na compreensão da necessidade.
Por outro lado, as especificações funcionais Agile requerem com métodos trabalho just-in-time. Portanto, é particularmente arriscado elaborar especificações correspondentes aos desenvolvimentos que serão realizados no sprint atual. É importante antecipar e criar especificações funcionais em paralelo antes do início do sprint de desenvolvimento. Se dispuser das especificações funcionais ao dividir as user stories e durante a sua subsequente distribuição em diferentes tarefas, a estimativa da carga de realização do sprint será muito facilitada e, portanto, muito mais precisa.
Para concluir, as especificações funcionais Agile
As especificações funcionais Agile representam uma forma diferente de operação de um projeto. Fornecem flexibilidade (podem ser adaptadas), precisão (com foco em uma funcionalidade centralizada) e confiabilidade (aproveitando o histórico do projeto e informações recentes). No entanto, exigem rigor, para que sua preparação antes dos sprints facilite o trabalho dos desenvolvedores.
Não hesite em testar gratuitamente durante 14 dias a solução completa de gerenciamento de projetos Agile da Nutcache, que coloca à disposição de suas equipes um pacote completo de ferramentas para gerenciar suas especificações funcionais.