Ciclo de vida do software: conheça as fases de desenvolvimento

Adam Lane
8 de mai de 2018

Parece que todo mundo quer se tornar desenvolvedor de software agora. Recrutadoras estão buscando preencher um enorme número de vagas e a função aparece frequentemente nas listas de "melhores empregos" do site Glassdoor, com alto índice de satisfação profissional e salários ainda mais altos. Se você considera este como um próximo passo possível, é um ótimo tempo para considerar ser um desenvolvedor de software.

Enquanto certamente há um conjunto de habilidades que você precisa dominar se vai ter sucesso no desenvolvimento de software, há mais em jogo do que apenas saber quais são as peças: você precisa aprender a pensar como um desenvolvedor de sofrware.

Aqui está Art Gillespie, engenheiro de software sênior da Udacity, com um conselho para futuros desenvolvedores: "É incrivelmente importante que novos desenvolvedores não passem seu tempo apenas afinando suas habilidades técnicas, mas também entendam o processo. Entender os princípios do desenvolvimento de software, design sprints e mesmo ferramentas de gestão de processo são pré-requisitos para se tornar um desenvolvedor eficaz."

Um dos conceitos principais que Art desencreve é o ciclo de vida de desenvolvimento de software (SDLC, na sigla em inglês). O SDLC é a base de um processo que desenvolvedores usam para transformar ótimos conceitos de software em produtos finais excepcionais.

Ele concentra os esforços de grandes equipes de desenvolvimento e ajuda desenvolvedores a atingir suas datas de entrega e se manter dentro do orçamento. Explora o que essas fases envolvem abaixo.

Leia: Passo a passo: saiba como criar um app do zero

O ciclo de vida do software

Levantamento de requisitos (Requirements gathering)

Um bom design de software começa com desenvolvedores entendendo e documentado as especificações. Esta fase envolve

  • Conduzir entrevistas e pesquisas para angariar feedback formal de stakeholders – que podem ser clientes externos ou pessoas de outras áreas da própria empresa, como business development, vendas e marketing
  • Criar listas de ações (casos de uso) para mostrar como um usuário vai interagir com um produto para ativar uma certa função. Às vezes protótipos são construídos para demonstrar como isso funcionaria
  • Discutir quão factíveis suas ideias são, quanto tempo o projeto levará e quanto vai custar

Os requisitos serão descritos em um documento chamado "software requirement specification" (SRS), as especificações de requisitos. Este documento será uma referência central ao longo de todo o processo.

Design

Uma vez que os requisitos para o software tenham sido fixados, o próximo passo é criar a arquitetura do sistema – o design geral de como o software será construído.

Essa fase é liderada por arquitetos de software e pelos desenvolvedores-líderes, que são responsáveis por criar diagramas de Linguagem de Modelagem Unificada (Unified Modeling Language, ou UML).

Esta é uma abordagem padrão para modelar visualmente como o software vai funcionar. Pense no diagrama como equivalente às plantas baixas usadas para construir casas.

Durante este processo, cada função de um produto será considerada, da tela que o usuário verá depois de clicar em um botão em particular até as possibilidades de upgrade e melhoria.

Leia: UX e UI: quais são as maiores diferenças entre esses campos?

Programação (coding)

A fase de programação (também chamada de fase de "implementação" ou "desenvolvimento") envolve a construção de um produto de verdade. A programação é feita e então testada aos poucos para garantir que os diferentes componentes trabalham juntos.

A programação é geralmente a fase que mais consome tempo durante um processo de ciclo de vida do software. Desenvolvedores precisam levar muitas coisas em consideração, incluindo:

  • Garantir que o código está de acordo com os requisitos de diferentes stakeholders, frequentemente ao demonstrar as funções em ação
  • Criar funções de back-end e front-end
  • Garantir que o produto está seguindo todos os requisitos do SRS, aquele documento-referência

Testes (testing)

Mesmo que um produto seja testado ao longo do processo, é importante avaliá-lo em um ambiente dedicado a testes. Durante esta fase, temas são identificados através de testes automatizados.

Testadores de programas também podem ser usados – e vão realmente tentar quebrar um produto para identificar problemas. Essa fase inclui testes de funcionalidade, integração de diferentes sistemas e de operação.

É importante destacar que normalmente todos os stakeholders precisam aprovar o software finalizado antes que a animação da implantação (deployment) do produto se encaminhe.

Implantação (Deployment)

A fase de implantação é quando o software é lançado para seus usuários finais. A complexidade do que foi construído vai determinar exatamente como isso acontece.

Se for um projeto simples e direto, por exemplo, o lançamento também pode ser simples, direto e de uma vez

Se for um produto mais complexo, desenvolvedores vão dividir o lançamento de maneira escalonada e oferecer o software para um número limitado de usuários, usando essa experiência como parte dos testes. Este é um "teste beta". Nada ganha do feedback de usuários para ajudar a refinar o jeito que um software funciona!

Um processo escalonado ("staggered process") também significa que funções adicionais podem ser adicionadas com o tempo e lançadas apenas quando estão prontas.

Manutenção

Desenvolvedores tratam a fase de manutenção com seriedade porque é ali que um produto é refinado e melhorado em resposta à sua performance no mundo real.

A reputação dos desenvolvedores é construída em cima de sua habilidade de criar softwares robustos e que funcionam como deveriam. Isso vem da manutenção do produto por meses ou mesmo anos após sua implantação.

E este é o SDLC! Ao seguir sua estrutura básica, os desenvolvedores focam nas coisas importantes no momento certo e na ordem certa.

Se você tem interesse em explorar uma carreira como desenvolvedor de software, a Udacity oferece o curso aberto Software Development Process, que oferece aulas aprofundadas sobre muitos dos conceitos citados.

Há também nosso portfólio completo voltado para a engenharia de software, onde você descobre diversas habilidades diferentes para se capacitar profissionalmente nessa área tão promissora.

Leia também:

Artigo originalmente publicado no blog americano da Udacity