Você está na página 1de 75

Modelos de Processo

de Software

Prof Jocelma Rios


Jun/2013

O que pretendemos:

Apresentar os conceitos bsicos de processos de


software
Descrever os principais modelos de processos de
software, elucidando suas vantagens e
desvantagens
Refletir sobre as vantagens e desvantagens de
cada modelo para os mais variados tipos de
software e contexto nos quais eles se aplicam

Material produzido com base em SOMMERVILLE (2007), com contribuies de Pressman (2011).

Processo de Software
Conjunto de atividades e resultados
associados que levam produo de
um produto de software
No h um processo ideal e at dentro da
mesma empresa pode haver muitos processos
diferentes utilizados para o desenvolvimento de
software

Padres de processo
Um padro de processo descreve um problema de
processo encontrado durante o trabalho de
engenharia de software, identificando o ambiente
onde foi encontrado e sugerindo uma ou mais
solues comprovadas para o problema.
Em termos mais genricos, um padro de processo
fornece um modelo um mtodo consistente para
descrever solues de problemas no contexto do
processo de software.

Modelos de Processo de Software

So utilizados para explicar diferentes


abordagens do desenvolvimento de software
Definem a sequncia em que as atividades do
processo sero realizadas
Exemplos de processo de software:
1. Modelo Cascata ou Clssico
2.
3.
4.
5.

Engenharia de Software Baseada em Componentes


Modelo Incremental
Modelo Evolucionrio
Processo Unificado (ser visto em detalhes adiante)

Modelo Cascata

Primeiro modelo publicado do processo de


desenvolvimento de software
Tambm conhecido como Ciclo de Vida Clssico ou
Modelo Clssico
Considera as atividades de especificao,
desenvolvimento, validao e evoluo, que so
fundamentais ao processo, e as representa como
fases separadas do processo, como a
especificao de requisitos, o projeto de
software, os testes e assim por diante

Modelo Cascata

Abordagem de Pressman

Modelo Cascata
Definio de
requisitos
Projeto de sistemas
e de software
Implementao e
teste de unidades
Integrao e
teste de sistemas

Operao e
manuteno

Abordagem de Sommerville

Fases do Modelo Cascata


1. Anlise e definio de requisitos
(especificao de requisitos)
As funes, as restries e os
objetivos do sistema so estabelecidos
por meio da consulta aos usurios do
sistema
Em seguida, so definidos em detalhes e
servem como uma especificao do sistema

Abordagem de Sommerville

Fases do Modelo Cascata


2. Projeto de sistemas e de software
Agrupa os requisitos em sistemas de hardware ou de
software
Estabelece uma arquitetura do sistema geral

3. Implementao e teste de unidades


Durante esse estgio, o projeto de software
compreendido como um conjunto de programas ou de
unidades de programa
O teste de unidade envolve verificar que cada
unidade atenda a sua especificao
Abordagem de Sommerville

Fases do Modelo Cascata


4. Integrao e teste de sistemas
As unidades de programa ou programas
individuais so integrados e testados
como um sistema completo a fim de
garantir que os requisitos de software
foram atendidos
Depois dos testes, o sistema de
software entregue ao cliente

Abordagem de Sommerville

Fases do Modelo Cascata


5. Operao e Manuteno
Normalmente, esta a fase mais longa do ciclo
de vida
O sistema instalado e colocado em operao
A manuteno envolve corrigir erros que no
foram descobertos em estgios anteriores do
ciclo de vida ou aumentar as funes desse
sistema medida que novos requisitos so
descobertos
Abordagem de Sommerville

Modelo Cascata

Em princpio, o resultado de cada fase


envolve um ou mais documentos que so
aprovados
Gera muita documentao, nem
sempre utilizada posteriormente

A fase seguinte no deve iniciar at


que a fase precedente tenha sido
concluda
O processo de software no um modelo
linear simples, pois envolve uma
sequncia de iteraes das atividades

problema do modelo cascata

inflexvel diviso do projeto


nesses estgios distintos

Modelo Cascata

O modelo cascata somente deve ser utilizado


quando os requisitos forem bem compreendidos,

Contudo, ele reflete a prtica da engenharia

Consequentemente, os processos de software


com base nessa abordagem ainda so muito
utilizados

Modelo Evolucionrio

Tem como base a ideia de desenvolver uma


implementao inicial, expor o resultado ao
comentrio do usurio e fazer seu aprimoramento por
meio de muitas verses, at que um sistema adequado
tenha sido desenvolvido
Em vez de ter as atividades de especificao,
desenvolvimento e validao em separado, todo esse
trabalho realizado concorrentemente com um rpido
feedback por meio dessas atividades

Modelo Evolucionrio
Atividades concorrentes

Descrio
do esboo

Especificao

Verso
inicial

Desenvolvimento

Verses
intermedirias

Validao

Verso
final

Modelo Evolucionrio
Vantagens:
* A abordagem evolucionria do desenvolvimento de
software, muitas vezes, mais eficaz do que a
abordagem em cascata, no sentido de produzir
sistemas que atendam s necessidades imediatas dos
clientes
* A especificao pode ser desenvolvida
gradativamente. medida que os usurios desenvolvem
uma compreenso melhor de seus problemas, isso pode
ser refletido na melhoria do software em construo

Modelo Evolucionrio
Problemas:
* Como os softwares so desenvolvidos
rapidamente, no vivel produzir documentos
que reflitam cada verso do sistema
* Os softwares frequentemente so mal
estruturados a mudana constante tende a
corromper a estrutura do software
* Incorporar modificaes torna-se cada vez mais
difcil e oneroso

Engenharia de Software Baseada


em Componentes

Essa abordagem tem como base a existncia de


um nmero significativo de componentes
reutilizveis
O processo de desenvolvimento de software se
concentra na integrao desses componentes,
ao invs de proceder ao desenvolvimento a
partir do zero

Engenharia de Software Baseada


em Componentes
Modelo genrico de processo para a engenharia
de software baseada em componentes
Especificao de
requisitos

Projeto de sistema
com reuso

Anlise de
componentes

Desenvolvimento
e integrao

Modificao de
requisitos

Validao

Engenharia de Software Baseada


em Componentes
Especificao de
requisitos

Projeto de sistema
com reuso

Anlise de
componentes

Desenvolvimento
e integrao

Modificao de
requisitos

Validao

Engenharia de Software Baseada


em Componentes

Especificao de Requisitos
comparvel com outros processos, como por
exemplo, o modelo cascata

As funes, as restries e os objetivos do


software so estabelecidos por meio da
consulta aos usurios
Em seguida, so definidos em detalhes e
servem como uma especificao do software

Engenharia de Software Baseada


em Componentes
Especificao de
requisitos

Anlise de
componentes

Projeto de sistema
com reuso

Desenvolvimento
e integrao

Modificao de
requisitos

Validao

Engenharia de Software Baseada


em Componentes

Anlise de Componentes com base na


especificao de requisitos, feita uma busca de
componentes para implementar essa especificao

Nem sempre possvel encontrar uma combinao


exata e os componentes que podem ser utilizados
fornecem somente parte da funcionalidade
requerida

Engenharia de Software Baseada


em Componentes
Especificao de
requisitos

Projeto de sistema
com reuso

Anlise de
componentes

Desenvolvimento
e integrao

Modificao de
requisitos

Validao

Engenharia de Software Baseada


em Componentes

Modificao de requisitos durante esse estgio,


os requisitos so analisados, utilizando-se as
informaes sobre os componentes que foram encontrados

Eles so ento modificados para refletir os


componentes disponveis
Quando as modificaes forem impossveis, a
atividade de anlise de componentes refeita, a
fim de procurar solues alternativas

Engenharia de Software Baseada


em Componentes
Especificao de
requisitos

Projeto de sistema
com reuso

Anlise de
componentes

Modificao de
requisitos

Desenvolvimento
e integrao

Validao

Engenharia de Software Baseada


em Componentes

Projeto de sistema com reuso durante essa


fase, a infraestrutura do sistema projetada ou
uma infraestrutura existente reutilizada

Os projetistas levam em conta os componentes


que so reutilizados e organizam a
infraestrutura para lidar com esse aspecto

Engenharia de Software Baseada


em Componentes
Especificao
de requisitos

Anlise de
componentes

Projeto de sistema
com reuso

Desenvolvimento
e integrao

Modificao de
requisitos

Validao

Engenharia
em

de Software Baseada
Componentes

Desenvolvimento e integrao
o software que no puder ser comprado, ser
desenvolvido, e os componentes e sistemas COTS

(commercial off-the-shelf sistemas comerciais de prateleira)

sero integrados, a fim de atender por completo


a especificao do usurio

Saiba mais: http://wer.inf.puc-rio.br/WERpapers/artigos/artigos_WER99/souza.pdf

Engenharia
em
Especificao de
requisitos

Projeto de sistema
com reuso

de Software Baseada
Componentes
Anlise de
componentes

Desenvolvimento
e integrao

Modificao de
requisitos

Validao

Engenharia
em

de Software Baseada
Componentes

Validao de sistema o software deve


ser validado para garantir que atende a
especificao do usurio

Engenharia
em

de Software Baseada
Componentes

Vantagens

Reduz a quantidade de software a ser


desenvolvida, reduzindo custos e
riscos

Geralmente propicia a entrega mais


rpida do software

Engenharia
em

de Software Baseada
Componentes

Problemas

As adequaes nos requisitos so


inevitveis, e isso pode resultar em um
software que no atenda s reais
necessidades dos usurios

O controle sobre a evoluo do software se


perde, uma vez que novas verses dos
componentes reutilizveis no esto sob o
controle da organizao que utiliza esses
componentes

Processos Iterativos

Os modelos apresentados anteriormente apresentam


vantagens e desvantagens
Para o desenvolvimento de grandes sistemas, pode
haver a necessidade de utilizar diferentes
abordagens para diferentes partes, de maneira
que um modelo hbrido tem de ser utilizado
H tambm a necessidade de iterao, em que
partes do processo so repetidas, medida que
os requisitos do software evoluem

Processos Iterativos

Existem dois modelos hbridos, que apoiam


diferentes abordagens do desenvolvimento e
que foram explicitamente projetados para
apoiarem a iterao do processo

Desenvolvimento Incremental

Desenvolvimento em Espiral

Processos Iterativos
Incremental vs. Espiral uma metfora
Entrega 1

Incremental

Espiral

Entrega 2

Entrega 3

Modelo Incremental

Possui uma abordagem mais simplista para a


identificao dos requisitos, buscando obter um
produto para entrega o mais rpido possvel
A cada entrega, os requisitos so refinados para que
haja a expanso das funcionalidades
Combina elementos dos fluxos de processos lineares e
paralelos

Aplica sequncias lineares, de forma escalonada,


medida que o tempo avana

1 ciclo foca nos requisitos essenciais, mnimos


para o funcionamento do software

Cada entrega gera um produto operacional,


efetivamente

Proposta de Pressman

Outro ponto de vista: http://blog.anascimento.net/category/gerenciamento

Modelo Incremental
Situaes em pode ser til:

Quando o software completo exige um hardware


ainda no disponvel e com data de entrega
incerta

Quando a equipe disponvel insuficiente


para assumir o projeto completo, entregando
num prazo factvel para o usurio

Proposta de Pressman

Modelo Incremental

Proposta de Pressman

Desenvolvimento Incremental

uma abordagem intermediria, que combina as


vantagens do modelo cascata e do desenvolvimento
evolucionrio
Em um processo de desenvolvimento incremental, os
clientes identificam, em um esboo, as funes a
serem fornecidas pelo sistema, definindo quais so
mais importantes e quais so menos importantes
Em seguida, definida uma srie de estgios de
entrega, com cada um fornecendo um subconjunto das
funcionalidades do software
As funes prioritrias so entregues primeiramente
ao usurio

Desenvolvimento Incremental

Uma vez identificados os incrementos, os requisitos


para as funes a serem entregues no primeiro
incremento so definidos em detalhes
Esse incremento desenvolvido, utilizando-se o
processo de desenvolvimento mais apropriado
Uma vez que um incremento concludo e entregue, os
usurios podem coloc-lo em operao
Isso significa que eles recebem com antecedncia parte
da funcionalidade do sistema, podendo experimentar o
software, facilitando assim o esclarecimento dos
requisitos para os incrementos seguintes

Desenvolvimento Incremental

medida que novos incrementos so


concludos, eles so integrados aos estgios
existentes, melhorando a funcionalidade do
software a cada novo estgio de entrega

Desenvolvimento Incremental
Definir esboo
dos requisitos

Desenvolver incremento do sistema

Atribuir requisitos
aos incrementos

Validar
incremento

Projetar arquitetura do sistema

Integrar
incremento

Validar

Sistema incompleto

Sistema
Final

Desenvolvimento Incremental

No existe necessidade de utilizar o mesmo


processo para o desenvolvimento de cada
incremento
Quando as funes tm especificao bem
definida, o modelo de desenvolvimento em cascata
pode ser utilizado
Quando a especificao for mal definida, poder
ser utilizado um modelo de desenvolvimento
evolucionrio

Desenvolvimento Incremental

Vantagens
1. Os usurios no precisam esperar at que todo o
software seja entregue, para ento tirar proveito
dele
2. Existe um risco menor de fracasso completo do
software. Embora possam ser encontrados problemas em
alguns incrementos, provvel que alguns
incrementos sejam entregues com sucesso
3. Como as funes prioritrias so entregues
primeiro, inevitvel que elas passem pela maior
parte dos testes

Desenvolvimento Incremental

Problemas

Os incrementos devem ser relativamente


pequenos, e cada incremento deve produzir
alguma funcionalidade para o software

Pode, portanto, ser difcil mapear os


requisitos dos usurios dentro de
incrementos de tamanho correto

Desenvolvimento Incremental

Extreme Programming (programao extrema)


recente evoluo da abordagem incremental
Tem como base o desenvolvimento e a entrega
de incrementos de funcionalidade muito
pequenos, o envolvimento do usurio no
processo, a constante melhoria
de cdigo e a programao
impessoal

Modelo em Espiral
Em vez de representar o processo de software como
uma sequncia de atividades com algum retorno de
uma atividade para outra, o processo
representado como uma espiral

Cada loop na espiral representa uma fase do


processo de software
Assim, o loop mais interno pode estar
relacionado viabilidade do software
O loop seguinte, definio de requisitos para
o software
O prximo loop, ao projeto do software, e assim
por diante...

Modelo em Espiral

Modelo em Espiral

Cada loop da espiral dividido


em 4 setores:
1. Definio de objetivos

So definidos os objetivos
especficos para essa fase do
projeto

So identificados os riscos
do projeto e, dependendo dos
riscos podero ser planejadas
estratgias alternativas

Desenvolvimento em Espiral
Definio dos objetivos

Desenvolvimento em Espiral
2. Avaliao e reduo de riscos

Para cada um dos riscos de projeto


identificados, realizada uma anlise
detalhada e so tomadas providncias para
reduzir esses riscos

Por exemplo, se houver um risco de os


requisitos serem inadequados, poder ser
desenvolvido um prottipo

Desenvolvimento em Espiral
Avaliao e reduo
de riscos

Desenvolvimento em Espiral
3. Desenvolvimento e validao

Depois da avaliao dos riscos,


escolhido um modelo de desenvolvimento
para o software

Por exemplo, se forem dominantes os


riscos relacionados interface com o
usurio, pode ser utilizado o modelo de
desenvolvimento evolucionrio
(prototipao)

Desenvolvimento em Espiral

Desenvolvimento
e
validao

Desenvolvimento em Espiral
4. Planejamento

O projeto revisto e tomada a deciso


sobre continuar com o prximo loop da
espiral

Se a deciso for continuar, sero


traados os planos para a prxima fase do
projeto

Desenvolvimento em Espiral

Planejamento

Desenvolvimento em Espiral

No h fases fixas, como especificao ou


projeto, no modelo em espiral
O modelo em espiral abrange outros modelos
de processo, como por exemplo, prototipao
Diferena do modelo em espiral em relao a
outros modelos de processo de software
explcita considerao dos riscos no modelo
em espiral

Etapas do processo de software


Especificao
Projeto
Implementao
Validao
Evoluo

Abordagem de Sommerville

Especificao de Software

Estabelece quais funes so requeridas pelo software


e as restries sobre sua operao e seu
desenvolvimento
Essa etapa chamada tambm de Engenharia de
Requisitos de extrema importncia
O processo de engenharia de requisitos leva
produo do documento de requisitos, que a
especificao para o software
Existem 4 atividades principais no processo de
engenharia de requisitos veremos a seguir...

Especificao de Software
1. Estudo de Viabilidade existe tecnologia atual
para o desenvolvimento do sistema? Existem restries
oramentrias
2. Levantamento e anlise de requisitos obteno
dos requisitos do sistema. Entrevista, observao,
sistemas existentes, ...
3. Especificao de requisitos documento que
especifica os requisitos
4. Validao de requisitos verificao dos
requisitos quanto a pertinncia, consistncia e
integralidade

Especificao de Software
Exemplo de fluxos de atividades da etapa de
Especificao de Software ou Engenharia de Requisitos

Projeto e Implementao de
Software
Um projeto de software uma descrio
estruturada a ser implementada, dos dados que
so parte do sistema, das interfaces entre os
elementos do sistema e dos algoritmos utilizado

Mtodos de Projeto

Projeto estruturado

Projeto orientado a objetos

Projeto e Implementao de
Software

Codificao

Costuma ser individualizada, sem regras e


dependente da criatividade e competncia
pessoal

Teste x Depurao

Teste

estabelece a existncia de defeitos

Depurao

localiza e corrige esses defeitos

Validao de Software

Destina-se a mostrar que um software est de


acordo com suas especificaes e que atende s
expectativas do usurio
Processo de teste

1. Teste de unidade componentes individuais


2. Teste de mdulo coleo de componentes
3. Teste de subsistema conjunto de mdulos
integrados
4. Teste de sistema integrao dos
subsistemas
5. Teste de aceitao o software testado
com os dados fornecidos pelo usurio, no
lugar dos testes simulados

Evoluo de Software

Manuteno de software

o processo de modificar o software desenvolvido


depois que o mesmo colocado em operao
pode acontecer motivado por identificao de
erros no software ou por novos requisitos
O software pode ser continuamente modificado ao
longo de seu tempo de durao, em resposta a
requisitos em constante modificao e s
necessidades do usurio

Ferramentas CASE

o nome dado ao software utilizado para apoiar


as atividades de processo de software, como a
engenharia de requisitos, o projeto, o
desenvolvimento e os testes
As ferramentas CASE, portanto, incluem editores
de projeto, dicionrios de dados, compiladores,
depuradores, ferramentas de construo de
sistemas, entre outros

Ferramentas CASE

Exemplos de atividades que podem ser


automatizadas utilizando-se CASE

O desenvolvimento de modelos grficos de


software, como parte das especificaes
de requisitos ou do projeto de software

A compreenso de um projeto utilizando-se


um dicionrio de dados que contm
informaes sobre as entidades/objetos

A gerao de interfaces com usurios

Ferramentas CASE

Exemplos de atividades que podem ser


automatizadas utilizando-se ferramentas CASE

A depurao de cdigo, pelo fornecimento


de informaes sobre um programa em
execuo

Traduo automatizada de programas, a


partir de uma antiga verso de uma
linguagem de programao, como Cobol,
para uma verso mais recente

Evoluo dos processos de


software

Para praticar...
Considerando os modelos de processos
de software discutidos aqui, qual a
melhor opo para qual tipo de
software?
Absorvendo as melhores prticas de
cada modelo, como poderia ser um
modelo timo?
O que acham de elaborar um quadro
comparativo?
Consultar: Pressman (2011), p. 64

Para refletir...
O texto apresentado por Andr
Nascimento, em seu blog
(http://blog.anascimento.net/tag/fabrica-de-software/)

faz uma anlise sobre as


fbricas de software.
O que pensam sobre o ponto de
vista do autor?

Referncias

PRESMANN, R. Engenharia de Software: uma


abordagem profissional. 7. ed. Rio de
Janeiro: Mc Graw Hill, 2011. Cap. 2
SOMMERVILLE, I. Engenharia de Software. 8.
ed. Rio de Janeiro: Pearson, 2007. Cap. 4
Sugesto de consulta/leitura:
http://julianakolb.com/category/engenharia-desoftware/sumario-engenharia-de-software/

Vdeos sugeridos
Aula 2 - Engenharia de Software (Processo de

desenvolvimento de software)
-> aulas desenvolvidas por alunos

Parte 01 - www.youtube.com/watch?v=igeU6B5GmIU
Parte 02 - www.youtube.com/watch?v=0fRv6o3aakw
Ver tambm os vdeos indicados no material sobre

Ciclo de Vida de Sistemas de Informao

Você também pode gostar