As metodologias de desenvolvimento são conjuntos de práticas pensadas para coordenar o trabalho de criação de softwares.
Projetos relevantes, como mostramos antes, envolvem muitas etapas e muitas pessoas. Por isso, não podem ser conduzidos de modo aleatório.
É preciso coordenar quem faz o quê, quando, como e onde. E não basta definir tudo isso em uma reunião, ficar na palavra e deixar assim até o fim do projeto.
As etapas avançam e as necessidades mudam, tudo é muito dinâmico.
Nesse contexto entram as metodologias de desenvolvimento de software, para dar ordem ao modo como o trabalho será conduzido e acompanhado.
Claro que tudo deve ser planejado com antecedência: a metodologia utilizada, quem serão as pessoas responsáveis, quais os prazos, etc.
Seja qual for a metodologia escolhida, o trabalho envolve, basicamente, as seguintes figuras:
- Desenvolvedores: aqueles que receberão os requisitos e construirão o software
- Gerente de projeto: responsável por controlar o andamento do trabalho, fazendo o possível para que as entregas sigam dentro dos prazos planejados
Podemos dividir as metodologias entre tradicionais e ágeis.
Nas tradicionais, como a metodologia estruturada, modelo em cascata e programação orientada a objetos, o escopo é pouco flexível.
Por isso, elas têm dado lugar a metodologias ágeis, uma exigência dos tempos de transformação digital, em que é preciso ter flexibilidade, etapas menores e feedbacks e alinhamento constantes.
Principais etapas para o desenvolvimento de softwares
A seguir, vamos falar um pouco sobre as principais etapas de um processo de desenvolvimento de softwares.
Dependendo da metodologia utilizada, pode haver uma divisão diferente das etapas, mas todas as fases descritas abaixo são essenciais para começar e terminar um projeto.
Levantamento de Requisitos
Todo projeto de criação de um software deve começar por aqui.
Ser negligente nessa primeira etapa pode colocar todo o trabalho a perder.
O risco de alguma etapa posterior empacar porque os requisitos não foram levantados é grande.
O levantamento de requisitos existe para saber quais são as reais necessidades dos clientes.
Requisitos são condições, ou seja, exigências que determinam que o software precisará seguir determinados padrões e especificações.
Podem ser requisitos funcionais (o que o software deve fazer), requisitos de usabilidade ou questões de confiabilidade, portabilidade e segurança.
Não é exagero dizer que essa etapa é de responsabilidade compartilhada entre cliente e gerente de projeto.
Pois cabe ao cliente fazer suas exigências, mas aquele que coordenará a equipe de desenvolvedores também precisa se esforçar para compreender totalmente as necessidades e problemas a serem resolvidos de quem o está contratando.
Análise de Requisitos
Após o levantamento dos requisitos, a fase seguinte consiste em avaliá-los, com o intuito de analisar a viabilidade do trabalho.
Primeiro, é preciso escrutinar as informações recebidas.
Está tudo claro ou há erros, contradições, ambiguidades, dados incompletos ou requisitos ocultos nas entrelinhas?
A partir daí, a equipe analisa se é possível realizar o serviço dentro das condições estabelecidas.
É bom destacar que, nessa etapa, estão em avaliação apenas as condições técnicas.
Então, para seguir adiante, é preciso que a equipe seja capaz de desenvolver o software com excelência, considerando todos os requisitos levantados.
Pode acontecer também de os requisitos serem tais que tornam o trabalho inviável, por ser tecnicamente irrealizável ou por não valer a pena tamanho esforço.
A partir dessa avaliação, conversa-se novamente com o cliente para, se necessário, fazer os ajustes necessários na lista de requisitos.
Análise Financeira
Agora que já se sabe exatamente quais são os requisitos para o projeto e sua complexidade, chegou a hora de estimar os custos que estarão envolvidos no serviço.
Qual a quantidade de recursos financeiros e humanos necessários para desenvolver o software dentro das condições requisitadas?
Quanto maior a complexidade do projeto, maior serão o custo para o fornecedor e o preço cobrado ao contratante, é claro.
Afinal, demandará mais tempo e mão de obra mais qualificada.
Aqui, como na maioria das empresas, deve haver margem para negociação – quem sabe até a eliminação de determinados requisitos para que o preço fique mais baixo.
Quaisquer que sejam as condições negociadas, elas precisam ser documentadas, registradas em um contrato que será assinado pelas duas partes.
Será a garantia mútua, pois nele constarão as obrigações que terão, durante o projeto, tanto do prestador de serviço quanto do cliente.
Produção
A etapa de produção pode se dividir em várias, de acordo com a complexidade do projeto e metodologia escolhida para conduzi-lo.
O desenvolvimento de grandes sistemas e softwares costuma prever entregas em módulos.
Isso quer dizer que, em vez de concluir tudo de uma vez, são liberadas, testadas e aprovadas diferentes partes do projeto, aos poucos.
As metodologias ágeis também preveem a aprovação por partes, mesmo em projetos que não são tão complexos, o que ajuda a acelerar o aprendizado, amadurecer a relação com o cliente e gerar insights valiosos para o resto do projeto.
A fase de produção pode envolver um momento de arquitetura de software, com uma apresentação abstrata da solução que será desenvolvida.
Depois de aprovada essa arquitetura, parte-se para a codificação, fase na qual os desenvolvedores trabalham para dar luz ao programa.
Testes
Um projeto jamais vai para o ar ou para o mercado sem passar por um período de testes.
É preciso submeter os códigos à utilização de usuários que vão testar todas suas funções.
Essa é a hora de encontrar erros.
Uma dica para quem está começando: é impossível evitá-los. Sim, os erros vão sempre aparecer.
O segredo é testar bem todas as possibilidades antes de lançar o produto, para diminuir a probabilidade de encontrar esses erros após a implementação.
Por isso, os testes precisam emular o uso real da aplicação, colocando-se no lugar da pessoa para quem ela será destinada.
É importante testar também a usabilidade, o que deve ser feito com testadores especializados ou usuários reais, uma vez que os desenvolvedores já estarão com o “olhar viciado”.
Recomenda-se, ainda, documentar os testes.
Assim, caso surja, posteriormente, algum problema envolvendo uma funcionalidade já testada, haverá pistas a mais para encontrar a solução.
Implementação
Agora, sim, o projeto pode ser entregue.
Mas calma lá: ainda deve ocorrer mais uma etapa de testes, para se certificar de que tudo está funcionando da maneira correta.
A implementação também pode ocorrer em diferentes fases.
Dependendo da necessidade, pode haver sessões de treinamento para que o cliente aprenda a utilizar a solução que foi criada.
O contrato pode prever, ainda, o trabalho de manutenção futuro, caso sejam descobertos novos problemas com o passar do tempo.
