Ciclo de vida de desenvolvimento de software (sdlc)

Definição – O que significa Ciclo de Vida de Desenvolvimento de Software (SDLC)?

Um modelo de ciclo de vida de desenvolvimento de software (SDLC) é uma estrutura conceitual que descreve todas as atividades em um projeto de desenvolvimento de software, do planejamento à manutenção. Este processo está associado a vários modelos, cada um incluindo uma variedade de tarefas e atividades.

O desenvolvimento de software é uma atividade complicada que exige a identificação adequada dos requisitos, sua implementação e implantação de software. No entanto, as atividades não param por aí. Após a distribuição do software, a manutenção adequada deve ser fornecida em tempo hábil.

Esse termo também é conhecido como modelo de processo de desenvolvimento de software.

Definirtec explica o ciclo de vida de desenvolvimento de software (SDLC)

Vejamos uma maneira mais intuitiva de abordar a definição do ciclo de vida de desenvolvimento de software (SDLC). Pense sobre os estágios pelos quais o desenvolvimento de software passa, desde as primeiras fulminações de uma ideia de projeto até o lançamento desse software em um ambiente de produção.

Pense no SDLC como composto de várias “estações intermediárias” no caminho para o desenvolvimento e lançamento final completo, com todos os testes do usuário e outras coisas que acontecem no final do processo.

Essa é uma boa maneira de começar a pensar sobre o que é o SDLC.

Pontos principais do SDLC

Aqui estão algumas coisas que serão centrais para a nossa explicação do ciclo de vida de desenvolvimento de software:

  • SDLC abrange: planejamento, implementação, teste, documentação, implantação e manutenção.
  • Os modelos mudaram de processos SDLC tradicionais em estágios para agile e, em seguida, para Devops.
  • Agile e Devops como práticas mesclaram a preparação tradicional de maneiras novas e interessantes.
  • A nuvem trouxe a chegada de recursos fornecidos pela web em cena.
  • Embora o SDLC tenha mudado muito, o conceito permanece basicamente o mesmo.

História do Ciclo de Vida de Desenvolvimento de Software

O consenso é que o SDLC como uma estrutura se desenvolveu nas décadas de 1950 e 1960 à medida que a própria ciência da computação evoluiu rapidamente.

Antes da segunda metade de 1900, quando o ENIAC e várias outras inovações impulsionaram o mundo da computação rapidamente, a computação realmente não era elaborada o suficiente para precisar de algo como o SDLC. As primeiras implementações de tecnologias de software envolveram ferramentas simples, como linhas go-to básicas e instruções if / then.

Com o tempo, o conceito de programação estruturada trouxe a necessidade de modelos de desenvolvimento e o SDLC nasceu.

Os primeiros modelos iniciais eram definidos principalmente pelos estágios.

Dê uma olhada neste infográfico para entender essa migração histórica de práticas da cascata para novas metodologias DevOps e ágeis.

Compartilhe esta imagem em seu site

Inclua a atribuição a techopedia.com neste gráfico.

As práticas iterativas e incrementais levaram à prototipagem na década de 1980, o que levou a vários tipos diferentes de inovações, como estruturas em espiral e modelo V, e depois para o agile nos anos 1990

Existem várias maneiras de descrever essas mudanças ao longo do tempo, mas o resultado final é que o ciclo de vida de desenvolvimento de software começou como um processo cuidadosamente preparado.

A cachoeira continua sendo o modelo dominante para essas estruturas iniciais de ciclo de vida de desenvolvimento de software. No modelo em cascata, tudo em um estágio é concluído antes de você passar para o próximo estágio. Todo o planejamento é concluído antes que o projeto passe para a implementação. Toda a implementação é concluída antes que o processo passe para o teste.

Então, à medida que essas estruturas evoluíram para o agile, essa ideia se desfez em um sistema em que o trabalho colaborativo mudou os fluxos de trabalho, e a preparação anteriormente monolítica foi fatiada e dividida em suas partes compostas. Por exemplo, o teste pode ocorrer em diferentes fases em diferentes ambientes.

Como uma observação lateral, os testes também estavam se tornando cada vez mais automatizados.

Em qualquer caso, a mudança de cascata para outros modelos, para ágil e DevOps, nos leva até os dias atuais, onde a mentalidade DevOps está aproveitando arquiteturas de nuvem, micro-serviços e muito mais para redefinir o que significa o trabalho do ciclo de vida de desenvolvimento de software.

Processo SDLC

As principais atividades de desenvolvimento de software incluem:

Extração de requisitos

O cliente tem uma vaga ideia do que é necessário. O departamento de vendas, engenheiros de software e especialistas em domínio colaboram para reunir informações sobre o que o produto deve ser, seus propósitos e como deve funcionar. Esta análise é freqüentemente associada a pesquisas de mercado.

Análise de viabilidade

Após uma análise minuciosa dos requisitos e etapas de planejamento para atingir o objetivo, a ideia abstrata do cliente é colocada em prática por um grupo de engenheiros de software. Um documento de “Especificação de Requisitos de Software” (SRS) é compilado para incluir tudo o que deve ser desenvolvido para concluir o projeto.

Fase de desenho

Durante esta fase, a arquitetura geral do sistema é projetada definindo a funcionalidade de cada módulo, bem como sua interação com módulos de terceiros.

Estágio de construção e codificação

O produto é construído e codificado de acordo com os padrões da própria empresa. Os designers seguem um conjunto de melhores práticas e diretrizes e usam as ferramentas de programação de que dispõem para desenvolver o produto.

Fase de teste

O código é testado para garantir que está livre de bugs, atende aos requisitos do cliente e faz a interface correta com outros produtos de software junto com o hardware subjacente.

Implantação e manutenção

A versão final do produto é lançada no mercado. A manutenção é realizada ao longo do tempo para alterar a arquitetura do sistema de acordo com as necessidades futuras. Isso pode exigir a adição de código ou alteração do código existente.

O processo de desenvolvimento acima é simplificado por uma série de modelos. A equipe de desenvolvimento seleciona o modelo mais adequado entre vários conhecidos. Os diferentes modelos são:

Modelo em cascata

Os desenvolvedores declaram os requisitos, analisam-nos, determinam uma solução e estruturam uma arquitetura de software, representação de interface e detalhes algorítmicos. Em seguida, eles desenvolvem o código, testam o código, implantam o software e fazem sua manutenção. O principal problema com esse modelo é que o requisito para corrigir erros deve ser conhecido antecipadamente e em um estágio inicial. Caso contrário, todo o processo pode continuar na direção errada, o que pode impactar negativamente o custo de produção.

Modelo em forma de V

É uma variação do modelo em cascata. Enfatiza a verificação e validação do produto. Todos os resultados são testáveis ​​e o progresso é monitorado por marcos. O teste é implementado em paralelo à fase de desenvolvimento.

Modelo de protótipo

Um protótipo é desenvolvido na fase de requisitos e avaliado pelos usuários finais. Com base no feedback do usuário, os desenvolvedores alteram o protótipo para satisfazer os requisitos do usuário. Embora este modelo finalize os requisitos facilmente, seu uso no ambiente de produção pode resultar em problemas de qualidade, fazendo com que o processo de correção continue para sempre.

Modelo espiral

Faz uso de modelos em cascata e protótipos. Ele adiciona linguagens de programação de 4ª geração, prototipagem de desenvolvimento rápido de aplicativos e análise de risco ao modelo em cascata. Os requisitos do sistema são projetados e um projeto preliminar do sistema é criado. Um protótipo inicial é projetado e testado. Com base na avaliação dos resultados do teste, um segundo protótipo é criado. Os protótipos subsequentes são construídos para garantir a satisfação do cliente. O sistema é criado com base no protótipo final. O sistema final é avaliado e testado. Embora esse modelo reduza o risco em grande medida, ele pode não atender ao orçamento e é aplicado de forma diferente para cada aplicativo.

Modelo SDLC iterativo e incremental

Especifica e implementa uma parte do software, que é então revisada e outros requisitos adicionados e implementados em grupos. Cada versão entrega um produto operacional apresentando aos clientes funcionalidades importantes primeiro, reduzindo os custos iniciais de entrega. O risco de mudança de requisitos é bastante reduzido e os clientes podem responder a cada construção. Apesar de seus pontos fortes, este modelo requer um bom planejamento e definição antecipada do sistema completo e totalmente funcional. Também requer interfaces de módulo bem definidas.

Modelo de desenvolvimento ágil

É usado para aplicativos de tempo crítico em organizações que empregam métodos disciplinados. Ele acelera as fases do ciclo de vida e tem escopo reduzido.

Modelo de caixa mágica

É um modelo de desenvolvimento de aplicativos da Web. É a maneira mais rápida de terminar o projeto com o mínimo de bugs, pois oferece a chance de alterar o código e as estruturas do banco de dados.

Existem muitas partes móveis. É por isso que as empresas começaram a contratar scrum master, para reunir equipes e orientá-las rapidamente sobre o que está acontecendo no terreno.

Esse tipo de check-in garante que, mesmo em um ambiente altamente complexo, tudo esteja funcionando bem.

Sobre o desenvolvimento de software como serviço (SDaaS)

Com todos os itens acima em mente, Desenvolvimento de Software como Serviço, ou SDaaS, refere-se à vasta gama de serviços disponíveis de fornecedores que assumirão aspectos do processo de ciclo de vida de desenvolvimento de software de alguma forma, forma ou forma.

Essas empresas podem dedicar equipes de indivíduos para gerenciar o ciclo de vida do software de uma forma que dê suporte à empresa cliente com base na descoberta e na participação.

Muitos desses sistemas contam com o método ágil, porque pode ser muito simbiótico com a natureza do SDaaS. Como há muita interatividade e interoperabilidade, o cliente pode interagir rotineiramente com o fornecedor de suporte de maneiras que promovem bons resultados.

Os fornecedores podem ter scrum masters e outros profissionais disponíveis para orientar as equipes de desenvolvimento ou implantação que entregam de acordo com necessidades específicas.

Alguns fornecedores caracterizam isso como oferta de serviços de desenvolvimento de software com custos projetados contínuos, a fim de ajudar os clientes a terceirizar, embora muitos considerem o SDaaS diferente do modelo de TI terceirizado.

Considerações Finais

Todos os itens acima ajudam a mostrar por que o ciclo de vida de desenvolvimento de software é importante e como ele evoluiu ao longo do tempo.

Pense sobre este método fundamental de criação de aplicativos, executáveis ​​e produtos de software que usamos diariamente.