Anda di halaman 1dari 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. Engenharia de Software Baseada em Componentes
3. Modelo Incremental
4. Modelo Evolucionrio
5. 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

Verso
Especificao inicial

Verses
Descrio
Desenvolvimento intermedirias
do esboo

Verso
Validao 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 Anlise de Modificao de


requisitos componentes requisitos

Projeto de sistema Desenvolvimento


Validao
com reuso e integrao
Engenharia de Software Baseada
em Componentes

Especificao de Anlise de Modificao de


requisitos componentes requisitos

Projeto de sistema Desenvolvimento


Validao
com reuso e integrao
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 Anlise de Modificao de


requisitos componentes requisitos

Projeto de sistema Desenvolvimento


Validao
com reuso e integrao
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 Anlise de Modificao de


requisitos componentes requisitos

Projeto de sistema Desenvolvimento


Validao
com reuso e integrao
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 Anlise de Modificao de


requisitos componentes requisitos

Projeto de sistema Desenvolvimento


Validao
com reuso e integrao
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 Anlise de Modificao de


de requisitos componentes requisitos

Projeto de sistema Desenvolvimento


Validao
com reuso e integrao
Engenharia de Software Baseada
em 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 de Software Baseada
em Componentes
Especificao de Anlise de Modificao de
requisitos componentes requisitos

Projeto de sistema Desenvolvimento


Validao
com reuso e integrao
Engenharia de Software Baseada
em Componentes
Validao de sistema o software deve
ser validado para garantir que atende a
especificao do usurio
Engenharia de Software Baseada
em Componentes

Vantagens
Reduz a quantidade de software a ser
desenvolvida, reduzindo custos e
riscos
Geralmente propicia a entrega mais
rpida do software
Engenharia de Software Baseada
em 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 Entrega 2 Entrega 3

Incremental

Espiral
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
Modelo Incremental
Outro ponto de vista: http://blog.anascimento.net/category/gerenciamento

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 Atribuir requisitos Projetar arquite-


dos requisitos aos incrementos tura do sistema

Desenvolver incre- Validar Integrar


mento do sistema incremento 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-de-
software/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

Anda mungkin juga menyukai