Etapas de Desenvolvimento de Software
Existem várias formas de desenvolver um software, dependendo do propósito dele, número de pessoas envolvidas, custo e prazo, mas em linhas gerais é um processo que consiste em 6 etapas:
- Conceito
- Descoberta de Requisitos
- Análise e Design
- Programação
- Teste
- Implantação
Tenha em mente que esses passos podem ser executados repetidamente em iterações de acordo com a metodologia adotada.
Vamos entender qual é o objetivo de cada uma das etapas.
1. Conceito
Na etapa de conceito você procura descrever a idéia em si, a necessidade que o software pretende atender ou o problema que ele pretende resolver.
Para projetos individuais e pequenos essa descrição pode caber num parágrafo, mas se o projeto for complexo e precisar de investimento, essa descrição pode se transformar num documento de várias páginas chamado plano de negócio, indicando que oportunidade de mercado será explorada e qual o resultado financeiro esperado do produto ou serviço criado pelo software, para se estimar o retorno sobre o investimento e a lucratividade do mesmo.
É nessa etapa que se elabora o plano do projeto, determinando a metodologia a ser usada e quando e como as próximas etapas serão executadas e gerenciadas.
2. Descoberta de Requisitos
A partir do conceito descrito, o próximo passo é descobrir que requisitos o software precisa atender para alcançar o objetivo.
Essa etapa envolve identificar as partes interessadas no software (conhecidos como “stakeholders”) ou seja, as pessoas que serão impactadas pelo software e o que elas esperam do sistema.
A elaboração de perguntas e a realização de entrevistas com essas pessoas ajudarão a descobrir e elicitar os requisitos. É possível que nem todos os requisitos sejam descobertos na primeira entrevista e por isso pode ser necessário planejar revisões dos requisitos descobertos para se certificar que o resultado final seja o mais preciso possível.
3. Análise e Design
De posse dos requisitos descobertos, se procede a análise dos mesmos. Aqui se especificam as funcionalidades que o sistema irá prover. Os requisitos diretamente ligados às funcionalidades são chamados de requisitos funcionais.
Nessa etapa também se determinam aspectos técnicos do sistema, tais como a linguagem de programação e o framework a ser adotado, a organização das funcionalidades em módulos, como o sistema irá interagir com o mundo externo, o sistema operacional que irá servir à aplicação, protocolos de rede utilizados, etc. Requisitos técnicos como estes são chamados de requisitos não-funcionais.
Quando o problema que o software vai resolver é muito complexo e difícil de ser entendido, algumas etapas adicionais podem ser necessárias:
3.1 Prototipação e Análise de Viabilidade
Na prototipação algumas idéias capturadas na descoberta de requisitos são codificadas para produzir um programa que só tenha a funcionalidade que se quer validar.
Isso ajuda a entender melhor o problema, descobrir novos requisitos e também avaliar se é economicamente viável (ou mesmo se é possível) desenvolver aquela solução para o cliente.
4. Programação
Nessa etapa a aplicação é codificada na linguagem de programação escolhida, de acordo com os requisitos funcionais e não funcionais determinados. O código produzido é compilado e os erros encontrados são corrigidos.
Além da funcionalidade em si, outro código deveria ser criado nessa etapa: o programa que testa o código que você criou. Projetos modernos e bem sucedidos exigem testes automatizados e eles são de responsabilidade do desenvolvedor que criou a funcionalidade a ser testada.
Se a funcionalidade codificada parece estar completa do ponto de vista do desenvolvedor, o código é salvo no sistema de controle de versões (uma operação chamada de “commit”).
5. Teste
Aqui são executados os testes automatizados criados na etapa anterior e testes de integração com outros módulos do sistema desenvolvidos por outros desenvolvedores ou mesmo integração com outros sistemas, quando o software é desenvolvido para interagir com outras aplicações.
Em grandes projetos de software existe o Engenheiro de Testes, que cria testes independentes para descobrir erros na aplicação.
Analistas também avaliam se os requisitos especificados são atendidos pela funcionalidade desenvolvida.
6. Implantação
Chamamos de implantação a configuração dos ambientes onde a aplicação será executada com a última versão aprovada do sistema. Em geral são preparados pelo menos dois ambientes: um chamado de Homologação e outro chamado de Produção.
No ambiente de Homologação demonstra-se a aplicação para o cliente, que “experimenta” o sistema e faz seus próprios testes de uso.
O ambiente de Produção é onde de fato a aplicação vai funcionar, servindo a todos os usuários do sistema.
Manutenção
Uma vez criado e aprovado, o software entra em operação.
Desse ponto em diante a aplicação precisará de manutenção de acordo com a descoberta de defeitos não identificados durante sua criação ou de novos requisitos funcionais e não-funcionais tais como escalabilidade por aumento de uso ou resolução de vulnerabilidades divulgadas pela comunidade de segurança. Novos ciclos de desenvolvimento repetindo as etapas anteriores serão necessários com um novo planejamento.
No próximo artigo conheceremos as metodologias comumente usadas para a execução dessas etapas.