Você está na página 1de 17

Engenharia de Software

Processo de Software

Professor
Marcio A. Queiroz
PROCESSO DE SOFTWARE
 O que é um Processo de Software?
Processo de Software é um conjunto de atividades e resultados associados
que levam a produção de produto de software. As atividades comuns em
um processo de software são:

Especificação de software: É preciso definir a funcionalidade do software e as


restrições em sua operação.

Projeto em implementação de software: Deve ser produzido o software de


modo que cumpra sua especificação.

Validação de software: O software precisa ser validado para garantir que ele
faz o cliente deseja.

Evolução de software: O software precisa evoluir para atender às


necessidades mutáveis do cliente.
PROCESSO DE SOFTWARE
 O que é um MODELO de Processo de Software?

É uma descrição simplificada de um processo de software, que é


apresentada a partir de uma perspectiva específica.

Alguns exemplos dos tipos de modelos de processo de software que


podem ser produzidos:

Workflow (Fluxo de Trabalho): Seqüência de atividades no


processo (representações de ações humanas).

Fluxo de dados ou de atividade: Representa o processo com um


conjunto de atividades.

Maiores detalhes: Página 08 – Capítulo 01 – ES 6ª Edição - Summerville


MODELOS DE PROCESSO DE
SOFTWARE
Paradigmas de desenvolvimento de software:

 Modelos Seqüências Modelo Cascata

 Modelos incrementais Modelo Incremental


Modelos R.A.D
 Modelo Evolucionário – Prototipação

 Modelo Espiral

Modelo XP
 Modelos Ágeis
Modelos SCRUM
MODELOS DE PROCESSO DE
SOFTWARE
 Modelo Cascata/Seqüencial (Waterfall)

A proposta do modelo Cascata consiste na execução das atividades de


desenvolvimento de software em uma seqüência ordenada.

Desta forma, a passagem para determinada atividade exige como critério a


finalização da atividade imediatamente anterior.

As principais atividades
do modelo são:
Levantamento de requisitos,
Análise de requisitos,
projeto, implementação,
teste e implantação.
MODELOS DE PROCESSO DE
SOFTWARE
 Modelo Cascata/Seqüencial (Waterfall)

Vantagens:
 Facilidade no gerenciamento, pois todas as etapas são bem
definidas e sem sobreposição;
 Muito eficiente em casos nos quais o domínio do problema é bem
entendido, por exemplo, projetos em quais vários sistemas
semelhantes foram construídos anteriormente.
Desvantagens:
 Em função da dificuldade de se obter todos os requisitos do
sistema no início do projeto, geralmente esse processo resulta em
um atraso para o início da fase de projeto, cumulativa ao prazo
final;
 Obtenção do produto final apenas no final do projeto, deixando
margens de correção menores.
MODELOS DE PROCESSO DE
SOFTWARE
 Modelo Incremental

Divide o projeto em “construções”, onde os requerimentos com maior prioridade


são construídos nos primeiros incrementos. Como são entregues parte por parte,
corre-se o risco de alguma das partes não estarem sincronizadas com as
demais. Conhecida como Entrega por Estágio (estratégia de desenvolvimento
por estágios)
MODELOS DE PROCESSO DE
SOFTWARE
 Modelo Incremental – R.A.D.

RAD – Desenvolvimento Rápido de Aplicação


É utilizado em projetos de grande porte e devem ser entregue em prazos curtos
há grande interação entre equipes.
MODELOS DE PROCESSO DE
SOFTWARE

Modelo Incremental

Vantagens:

 Disponibilidade de módulos do sistema mais em menor tempo;


 Maior facilidade nos testes, sendo que na maioria das vezes,
testar cada parte do processo (incremento) é mais fácil do que
testar o software pronto como um todo;
 A resposta (feedback) com do cliente a cada incremento
executado (pronto).
MODELOS DE PROCESSO DE
SOFTWARE

Modelo Incremental

Desvantagens:

 Dificuldade na integração dos módulos desenvolvidas do sistema;


 Difícil mapeamento dos requisitos dos clientes dentro dos
incrementos.
MODELOS DE PROCESSO DE
SOFTWARE
 Modelo Evolucionário - Prototipação

O modelo de prototipação surge para tentar atender a dois grandes aspectos


pertinentes ao desenvolvimento de software: o primeiro diz respeito à velocidade
de desenvolvimento, no sentido de propiciar-se ao usuário uma visão mais real
do software que está sendo projetado.
MODELOS DE PROCESSO DE
SOFTWARE
Modelo Evolucionário - Prototipação

Vantagens:

 Recomendado para sistemas nos quais os requisitos mudam


rapidamente;
 Favorece uma resposta (feedback) constante do cliente a respeito
do protótipo (sistema);
 Melhor visibilidade do produto que está sendo desenvolvido;
 Recomendado para sistemas nos quais nem você nem seu cliente
conhecem bem o domínio da aplicação;
MODELOS DE PROCESSO DE
SOFTWARE

Modelo Evolucionário - Prototipação

Desvantagens:

 Dificuldade em se prever o tempo que será necessário para


produzir um produto aceitável;
 Tendência em desenvolver no modo
implementação-implantação (code-and-fix), causando o
esquecimento das fases de análise, projeto e testes;
 Maior complexidade de gerenciar o projeto, os riscos e a
qualidade do produto final.
MODELOS DE PROCESSO DE
SOFTWARE

 Modelo Espiral

O modelo espiral induz a um desenvolvimento evolucionário de software (o que


também se verifica no modelo de prototipação), sem perder a abordagem de
execução de etapas sistemáticas, mas que sobrepõe cada iteração do modelo
apresentado na figura a seguir:
MODELOS DE PROCESSO DE
SOFTWARE

 Modelo Espiral

Em vez de representar o
processo de software em
uma seqüência de
atividades o processo é
representado em espiral.

Cada loop na espiral representa uma fase do processo de software. Assim, o loop
mais interno pode estar relacionado a viabilidade do sistema; o loop seguinte, à
definição de requisitos do sistema; o próximo loop, ao projeto do sistema, e assim
por diante.
MODELOS DE PROCESSO DE
SOFTWARE
Modelo Espiral

Vantagens:
 Combinação entre outros modelos de ciclo de vida;
 Melhoria na qualidade a partir do planejamento e análise dos
riscos em cada fase;
 Melhor visibilidade para a gerência, principalmente na gerência
de riscos.
Desvantagens:
 O processo de gerência é mais complexa;
 Necessidade de maior experiência da equipe de desenvolvimento,
sobretudo dos responsáveis pela gerência;
 Exige maior experiência da equipe envolvida e maior esforço para
o desenvolvimento, dessa forma, podendo aumentar
consideravelmente os custos.
MODELOS DE PROCESSO DE
SOFTWARE

 Modelo Ágil

O termo metodologia ágeis tornou-se popular em 2001, quando 17


especialistas em processos de desenvolvimento de software
estabeleceram princípios comuns compartilhados por várias metodologias.
O resultado foi a criação de Aliança Ágil e o estabelecimento do manifesto
Ágil [http://agilemanifesto.org].

Existem várias metodologias que podem ser consideradas como abordagens ágeis,
entre elas: Scrum, Programação Extrema (XP), FDD entre outras.

Falaremos um pouco mais desse novo modelo de processo no próximo material.