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).