Engenharia de Software: Ciclo de Vida e Modelos de Desenvolvimento

Classificado em Tecnologia

Escrito em em português com um tamanho de 8,32 KB

O que é Engenharia de Software?

Estudo ou aplicação de abordagens sistemáticas, econômicas e quantificáveis para o desenvolvimento, operação e manutenção de software de qualidade.

O que é Software?

Programas de computador e documentação associada.

Características da Engenharia de Software

  • A Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invés de indivíduos.
  • O software deve satisfazer os requisitos solicitados pelo usuário, ser fácil de manter, ter boa performance, ser confiável e fácil de usar.

Ciclo de Vida do Software

  • Definição de Requisitos
  • Análise
  • Projeto
  • Codificação
  • Testes

Definição de Requisitos

Antes do início da construção de um sistema, deve ser definido como ele será usado, como será sua interação com os usuários e a quais funções ele se destina.

Análise

A Análise visa os seguintes objetivos:

  • Verificar a qualidade dos requisitos obtidos;
  • Descrever estes requisitos o suficiente para que atinjam o nível de detalhe adequado aos desenvolvedores.

Em suma, a Análise interessa-se pelo o quê o sistema deve fazer.

Projeto

Projeto diz respeito a como os requisitos serão implementados. Na fase de Projeto há a incorporação de requisitos tecnológicos aos componentes modelados na fase de Análise, bem como a definição da plataforma e das ferramentas utilizadas.

Codificação

A Codificação deve ser uma tradução das decisões de projeto em uma linguagem específica.

Teste de Software

Teste de software é uma atividade de garantia da qualidade. O principal objetivo é analisar a qualidade do software em execução, verificando se este atende às necessidades do cliente.

Tipos de Teste:

  • Teste de unidade
  • Teste de integração
  • Teste de sistema
  • Teste de unidade é o nível mais baixo de teste e é normalmente realizado pelo próprio desenvolvedor.
  • Teste de Integração: Quando as unidades tiverem sido certificadas nos testes de unidade, elas devem ser integradas em unidades maiores e finalmente no sistema. O propósito dos testes de integração é testar se as diferentes unidades trabalham corretamente em conjunto.
  • O Teste de Sistema é executado no ambiente real de funcionamento mas, frequentemente, é realizado em um ambiente de teste diferente do local em que será instalado.

Modelo de Ciclo de Vida

Uma representação abstrata e simplificada do processo de desenvolvimento de software, tipicamente mostrando as principais atividades e dados usados na produção e manutenção de software.

Adoção de um Modelo de Ciclo de Vida

A adoção de um ciclo de vida não é suficiente para guiar e controlar um projeto de software na prática. Outras características devem ser levadas em consideração durante a vida de um produto de software:

  • Organização das atividades do processo
  • Recursos humanos, hardware e software;
  • Procedimentos de operação
  • Políticas de desenvolvimento e restrições
  • Tipos de software

Características dos Modelos de Ciclo de Vida do Software

  • Descrever as principais fases do desenvolvimento;
  • Definir as principais atividades a serem realizadas durante cada uma das fases;
  • Especificar os produtos de cada uma das fases e insumos para o início das fases;
  • Fornecer um framework sobre o qual as atividades necessárias podem ser mapeadas.

Principais Modelos de Ciclo de Vida do Software

  • Modelo Cascata
  • Modelo Incremental
  • Modelo Evolutivo
  • Modelo RAD
  • Prototipagem
  • Modelo Espiral
  • Modelo de Ciclo de Vida Associado ao RUP

Modelo em Cascata

  • Modelo mais antigo e o mais amplamente usado na engenharia de software, modelado em função do ciclo da engenharia convencional;
  • Requer uma abordagem sistemática e sequencial ao desenvolvimento de software;
  • Adequado em situações nas quais os requisitos são bem entendidos e o gerente do projeto confia na capacidade da equipe de desenvolver utilizando o processo.
  • Sua estrutura é composta de várias fases que são executadas de forma sistemática e sequencial;
  • Na prática, existe uma interação entre as fases e cada fase pode levar a modificações nas fases anteriores.

Vantagens e Desvantagens do Modelo Cascata

Vantagens:
  • O uso de revisões ao fim de cada fase permite o envolvimento do usuário;
  • O modelo permite que se imponha um controle de configuração;
  • Cada passo serve como uma base aprovada e documentada para o passo seguinte.
Desvantagens:
  • O fluxo sequencial que o modelo propõe geralmente não é seguido em projetos reais;
  • Requisitos devem ser estabelecidos de maneira completa, correta e clara no início de um projeto;
  • A aplicação deve ser entendida pelo desenvolvedor desde o início do projeto;
  • Difícil avaliar o progresso verdadeiro do projeto durante as primeiras fases.

Prototipagem

Como na programação exploratória, a primeira fase prevê o desenvolvimento de um programa para o usuário experimentar.

No entanto, o objetivo aqui é estabelecer os requisitos do sistema.

O software deve ser reimplementado na fase seguinte.

A construção de protótipos com os quais os usuários possam brincar é uma ideia bastante atrativa:

  • Para sistemas grandes e complicados.
  • Quando não existe um sistema anterior ou um sistema manual que ajude a especificar os requisitos.
Objetivos da Prototipagem:
  • Entender os requisitos dos usuários.
  • Definir a interface com os usuários.
  • Demonstrar a viabilidade dos sistemas para os gerentes.

Iteração

A forma com que os processos de desenvolvimento de software são conduzidos, diz respeito à iteração entre as atividades deste processo, ou seja, como estas são encadeadas.

Em processos iterativos, a especificação é desenvolvida juntamente com o sistema podendo ser:

  • Incremental
  • Em Espiral

Desenvolvimento Espiral

Acrescenta aspectos gerenciais ao processo de desenvolvimento de software.

  • Análise de riscos em intervalos regulares do processo de desenvolvimento de software
  • Planejamento
  • Controle
  • Tomada de decisão
  • O processo é representado como uma espiral em vez de uma sequência de atividades
  • Cada volta na espiral representa uma fase no processo
  • Não há fases fixas como especificação ou projeto - voltas na espiral são escolhidas dependendo do que é requerido
  • Riscos são avaliados explicitamente e resolvidos ao longo do processo

Desenvolvimento Incremental

Em vez de entregar o sistema como um todo, o desenvolvimento e a entrega são divididos em incrementos, com cada incremento entregando parte da funcionalidade requerida.

  • Requisitos dos usuários são priorizados e os requisitos de mais alta prioridade são incluídos nas iterações iniciais.
  • Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são "congelados". Embora os requisitos possam continuar a evoluir para incrementos posteriores.
Abordagem Incremental (Parte 1)
  • Estes modelos levam às fases simultaneamente para cada conjunto de requisitos levantados, cortando transversalmente as fases de desenvolvimento gerando iterações.
  • A abordagem incremental combina o modelo em cascata e o evolutivo visando compromissos em fases intermediárias.
  • Os requisitos são divididos em serviços que recebem uma estrutura de prioridades.
Abordagem Incremental (Parte 2)
  • Os serviços mais importantes (alta prioridade) são atacados como resultados de incrementos a serem atacados nas primeiras iterações do desenvolvimento.
  • O sistema vai sendo entregue em incrementos a partir dos serviços principais.
  • Cada incremento pode usar uma abordagem interna em cascata (requisito bem entendido) ou evolutiva (requisito ainda não estável).

Entradas relacionadas: