SyntaxHighlighter

segunda-feira, 7 de setembro de 2015

Quais são as fases do Ciclo de Vida de Desenvolvimento de Software (SDLC) ?

Essa é para puxar na memória.
Lembra quando você tinha essa matéria, que era decoreba, na faculdade ou no curso tecnico de processamento de dados? (Caramba! Curso de Processamento de Dados... acho que entreguei a minha idade agora!).
Pior que tinha sempre um professor que as colocava fora de ordem e na multipla escolha tínhamos que acertar qual a ordem certa, mas tinha sempre aquela maldita opção das "N.R.A."  - Nenhuma das Respostas Acima, pois é...
Hoje em dia, por mais que você a ignore, ela tem um peso muito grande.
Gigantes como a Microsoft estão focando suas equipes e aplicativos em frameworks que facilitam o SDLC, porém, com um outro nome: o ALM (Application Lifecycle Management) - Gerencimento do Ciclo de Vida da Aplicação. O nome ficou mais bonito e pomposo, mas na prática é a mesma coisa. A única grande novidade é que, na Microsoft com o Team Foundation Server, você pode escolher entre utilizar CMMI, Agile ou Scrum para gerenciar o seu trabalho. Mas, isso é assunto pra um outro artigo, quando eu abordar um ALM completo com TFS e depois um ALM completo totalmente Open Source, com Jenkins.
Se você ainda está na faculdade e está às voltas com essa sigla, que você acha que tem parte com o Capiroto, fique tranquilo, vamos exorcizar essa pobre alma em algumas linhas abaixo.
Existem várias abordagens definidas e projetadas para desenvolvimento de Software que são utilizadas/empregadas durante o processo. Tais abordagens também são definidas como Modelos de Processos do Desenvolvimento de Software, por exemplo, temos o Modelo Cascata, Modelo Incremental, Modelo V, que não é o de Vingança, o Modelo Iterativo e etc etc). Cada modelo de processos segue um ciclo de vida específico na sua forma de produzir sucesso, ou fama lê-se Martin Fowler, no desenvolvimento de software.
Os modelos de ciclo de vida do Software descrevem suas fases e a ordem nas quais devem ser executadas. Cada fase produz entregáveis necessários para que a próxima fase tenha início, ou seja, são fases dependentes - pegando um pouquinho de carona com o pessoal PMI na veia. Requisitos são traduzidos em Modelagem. Código é produzido de acordo com a modelagem - pelo menos deveria - no que é chamada de fase de desenvolvimento. Após Codificar, os "Codar", os testes de verificação do produto final para verificar se estão de acordo com o que fora levantado, se sim, então podemos "subir" a aplicação em Produção, que é quando o usuário vai poder utilizar o Sistema e fazer os milagres que sempre faz em encontrar erros e também dizer "pior que isso funciona!".
É verdade que listamos muitos modelos, mas você vai me perguntar: 
- Gabriel, você tá doidão? e o Scrum, XP e outras abreviações ágeis?
A minha resposta será: 
- Estão no Desenvolvimento Iterativo!
The treta has planted!
Apesar da treta estar plantada, existem 6 fases padrão, pelo menos por enquanto, em todo ciclo de vida de desenvolvimento de um Software, o SDLC ou o ALM da Skynet e do Ultron não contam:

  1. Levantamento de Requisitos e Análise
  2. Modelagem
  3. Implementação ou Codificação - (É  a gente mesmo!)
  4. Testes - (É nóis na fita, ladrão!)
  5. Publicação ou Implementação em Produção
  6. Manutenção ou Sustentação
1) Levantamento de Requisitos e análise: Requisitos do Negócio são levantados nessa fase. Essa fase é o foco principal dos colaboradores e dos gerentes de projeto e dos POs também  - pros agilistas ficarem no meu blog. - Entrevistas com gerentes, colaboradores envolvidos no negócio e usuários de todos os tipos e espécies em seu habitat natural, todos são colocados em fila para determinar, inspecionar e nos ensinar cada vez melhor , veja bem! - sobre as Regras de Negócio envolvidas, tais como: Quem vai utilizar o Sistema? Quais dados serão inseridos no Sistema? Quais dados o sistema irá mostrar aos usuários? Estas são perguntas gerais que devem ser respondidas durante a fase de levantamentos de requisitos (É, realmente deveriam né? mas a realidade... bem, a realidade... xá pra lá!). Após o levantamento de requisitos, estes são analisados, validados e é estudada a possibilidade do que deve ou não ser incorporado aos requisitos do sistema a ser desenvolvido.
Finalmente, é... ainda não acabou, um documento de Especificação de Requisitos é criado e serve (uhum, sei!) como guia para as próximas fases do Modelo.
Diante do que foi dito nessa primeira fase, você já notou como tudo fica mais difícil quando um requisito é mal modelado ou quando uma Estória de Usuário é entregue sem Regra de Aceitação ou quando uma Regra de Aceitação é mal feita ou a própria Estória de Usuário na verdade é um Épico e você não compreendeu? Olha bem o quanto de dinheiro é gasto nessa fase e quanto que se ainda vai gastar caso algo dê errado. Pensa aí e depois coloca lá nos comentários, vamos debater sobre isso.
2)  Modelagem: Nessa fase, o produto e o ambiente, são modelados e projetados de acordo com as especificações de requisitos estudadas e informadas na fase 1. O projeto do sistema ajuda a especificar o hardware e os requisitos também auxiliam no geral à Arquitetura do Sistema - não existe almoço grátis. As especificações de projeto e modelagem de sistema servem como entrada para a próxima fase.
3)  Implementação ou Codificação: Ao receber os documentos de modelagem, o trabalho é dividido em módulos/unidades e a codificação atual é iniciada. Assim que esta fase começa a produzir o código propriamente dito, o foco principal é para o desenvolvedor. Essa é a fase mais longa do ciclo de vida do desenvolvimento de software, para quem não acredita, aqui vai uma estorinha "das trincheiras" que tá na moda: Imagine que Deus (Gerente de Projetos) avisa pra você que a humanidade vai acabar ("cara, esse projeto é de emergência") e ainda te avisa que vão chover 40 dias e 40 noites ("... esse projeto tem muita gente graúda, precisamos entregar isso logo senão estamos fritos...") e então te manda construir uma arca ("Cara, faz de um jeito rápido que dê pra entregar e tá bom. Rodou... Xablau!") e aí vem a chuva, quando você ainda está terminando os testes de aceitação, mas o XGH  - Extremme Go Horse - é quem manda e o resto você já sabe né... não é à toa que essa fase 3 é a mais demorada. Em alguns lugares ela dura por anos... (o grifo é nosso).
4)  Teste:  Após o código ser desenvolvido, ele é testado de acordo com o que está escrito nos requisitos, aí que começa o "sapeca iá iá", para verificar se o Produto está realmente resolvendo os problemas dos quais fora contratado para resolver nas fases anteriores, o que significa, que se tudo der certo, saber também se a equipe de desenvolvimento vai ganhar uma PLR gorda no final do ano ou um Cestão (ferrados! é claro). Durante essa fase, todos os testes que a mente maligna e criativa do tester criar serão utilizados: Teste unitário, Teste de Integração, Teste de Sistema, Teste de Aceitação e dentre outros. Não especifiquei todos porque estou escrevendo antes de dormir e não quero ter pesadelos.
5)  Publicação em Produção: Ufa! depois que nosso trabalho sobreviveu a fase de testes, vamos faturar. O produto é entregue e publicado em produção para que o cliente o utilize.
6) Maintenance: Mas, nem tudo são flores e quando os clientes começam a utilizar o sistema de forma massiva, e é aí que eles fazem cada coisa...operam verdadeiros milagres, até cheat codes utilizam, então os problemas começam a aparecer e precisam ser solucionados de tempos em tempos.  Tal processo, onde damos um carinho e uma amolecida no nosso produto desenvolvido, é mais conhecido como Manutenção ou Sustentação, mas o usuário teima em chamar de Porcaria, fazer o quê?

Fonte: ISTQB