Você sabe tudo o que acontece desde que alguém tem uma ideia genial para um novo software até que ele chegue até você?

Hoje resolvi escrever um texto um pouco mais técnico, mas nem por isso menos interessante ou extremamente complexo ?

Mas, para isso, repito a pergunta que fiz lá em cima: você saberia explicar o que acontece antes daquele sistema, joguinho ou app chegar até você? Alguns podem não fazer ideia. Outros vão falar que algum nerd deve ter ficado sentado por horas na frente do computador até que construiu aquele-app-que-não-consigo-viver-sem! Mas imagino que só quem é da área que vai explicar (ou não :p) detalhadamente todas as etapas necessárias para se chegar a um software.

Ok, quem disse que alguém passou um tempo na frente do computador para que o sistema, joguinho ou app surgisse acertou. Mas esse alguém não é um nerd (muitas vezes não é nem “um”, mas uma equipe) e ele não ficou apenas digitando freneticamente.

Programando como se não houvesse amanhã

Para entender melhor a gente consegue fazer uma analogia entre o desenvolvimento de software e a construção de qualquer outro produto, como uma casa. Pensando nisso, para que uma casa fique pronta basta colocarmos um tijolo em cima do outro? Se isso for feito sem nenhuma organização e planejamento…

Aquele “jeitinho brasileiro”

Com o software não é diferente. A equipe de TI precisa organizar o conjunto apropriado de ações para entregar um software que atenda as necessidades de seus usuários.

Atividades do desenvolvimento de software

A primeira dessas atividades é o levantamento de requisitos. É quando os analistas de sistemas interagem com os usuários para identificar as necessidades deles (a.k.a. requisitos). Ou seja, é o momento de compreender o “problema” que o software precisa resolver. O que me faz pensar: será que esse é o motivo de chamarem os profissionais de TI que atuam nessa área de analistas? Talvez seja apenas coincidência… :p

Após a compreensão do problema, inicia-se uma fase de análise. Os analistas de sistemas (de novo eles) usam como insumo os requisitos identificados para gerar uma série de modelos que descrevem o que o sistema deve fazer. Sabe aquele papo de que uma imagem vale mais que mil palavras? É, esses modelos conseguem representar essas 1000 palavras (talvez um pouco menos) em um formato que tanto usuários quanto equipe de TI compreendam. Isso porque eles precisam ser validados para que, lá no final do desenvolvimento, o software entregue realmente atenda às necessidades identificadas.

Em sequência, passa-se para o projeto, que nada mais é do que um refinamento dos modelos gerados até o momento, considerando a tecnologia a ser utilizada. Repare que, até esse momento, ninguém estava preocupado com tecnologia (ou coisas de nerd!). O importante era ter um bom entendimento do problema e descrever uma solução para ele. O aspecto computacional só aparece a partir dessa etapa.

Durante a implementação (ou digitação frenética no computador :p), o desenvolvedor “traduz” os modelos gerados para algo que pode ser executado pelo computador. Isso é feito utilizando diferentes linguagens de programação. Nesse momento que chegamos ao software (ufa!)

Curiosidade: O primeiro programador da história não foi O, mas sim A programadora! Se você ainda não sabia disso, corre para ouvir o SciCast sobre ela: Ada Lovelace.

Mas aguenta que ainda não acabou!

Não?!

Quem nunca xingou porque o jogo te fez voltar para o início da fase ou teve que esperar horas numa fila porque o “sistema estava lento”? Para evitar que os usuários passem por situações como essa, alguns testes também precisam ser realizados. O objetivo é que os profissionais de teste identifiquem erros no software desenvolvido e não os usuários. Além disso, eles também precisam checar se o software que foi desenvolvido é o software que o usuário esperava receber (para que não se torne aquela compra fail diretamente da China)

Produto não testado

Quando temos uma versão estável do software, ele pode ser implantado ou entregue aos usuários. O famoso “colocar em produção”. A partir de agora o usuário consegue utilizar o software!

Acabou!!!

Mas se você acha que acabou, está enganado!

Stop, pleeeeeeeeeeeeeeeeease!

Mesmo após a entrega do software, a equipe de TI continua trabalhando nele. Sabe quando você recebe aquelas atualizações via AppStore ou Play Store? Isso acontece porque os usuários encontraram algum erro que precisa ser corrigido (é, mesmo com os testes é impossível garantir que o software não possua nenhum erro) ou alguém identificou a necessidade de incluir novos recursos para uma versão mais completa do software. Essa é a fase de manutenção.

A forma como essas atividades do desenvolvimento de software estarão organizadas ou terão maior ou menor ênfase para a equipe de TI, é assunto para outro texto ?

Mas chegamos ao fim e vocês podem se perguntar: Para que fazer tudo isso? Bem, eu te responderei com apenas uma imagem (afinal, já falei antes que cada uma delas vale mais do que 1000 palavras…):

Resultado das atividades do desenvolvimento de software