You are on page 1of 12

ENGENHARIA DE SOFTWARE SOMMERVILLE 2007

CAPITULO 4 Processo de Software


Um processo de software um conjunto de atividades que leva produo de um produto de
software.
Atividades que so comuns a todos os processos de software:
Especificao de Software;
Projeto e Implementao de Software;
Validao de Software;
Evoluo de Software.

Os estgios da engenharia de software compem um ciclo que pode ser dividido em duas grandes
etapas: a anlise do problema e a sntese da soluo.

Considere: uma disciplina que se ocupa de todos os aspectos da produo de software, desde os
estgios iniciais de especificao do sistema at a manuteno desse sistema, depois que ele entrou
em operao. Seu principal objetivo fornecer uma estrutura metodolgica para a construo de
software com alta qualidade. A definio refere-se engenharia de software.

Em relao aos modelos de processos de software, pode-se dizer que os modelos incremental e
evolucionrio possuem a caracterstica de serem iterativos. Assinale a alternativa que melhor
descreve um modelo de produo de software iterativo.
A abordagem iterativa possibilita desenvolver um sistema de software de forma incremental,
permitindo ao desenvolvedor tirar vantagem daquilo que foi aprendido durante a fase inicial de
desenvolvimento de uma verso do sistema. O aprendizado ocorre simultaneamente tanto para o
desenvolvedor, quanto para o usurio do sistema.
De acordo com a engenharia de software, como todo produto industrial, o software possui um ciclo
de vida. Cada fase do ciclo de vida possui divises e subdivises. Em qual fase avaliamos a
necessidade de evoluo dos softwares em funcionamento para novas plataformas operacionais ou
para a incorporao de novos requisitos? Fase de retirada;
O ciclo de vida de um software descreve as fases pelas quais o software passa desde a sua
concepo at ficar sem uso algum. Segue abaixo a classificao de 4 fases que so delimitadas por
diversos eventos tpicos em diversos ciclos de vida.
Fase de definio: Busca-se a identificao de problemas para que possam elaborar propostas de
soluo de sistemas computacionais que resolvam tais problemas.
Fase de desenvolvimento: Inclui todas as atividades que tem por objetivo a construo do produto.
Ela inclui principalmente o design, a implementao e a verificao e validao do software.
Fase de operao: Envolve diferentes tipos de atividades como (Distribuio e entrega; Instalao
e configurao; Utilizao e Manuteno)
Fase de retirada: Trata da substituio de softwares legados por plataformas com tecnologia mais
atual.
Fonte:
http://engenhariadesoftware.blogspot.com.br/2007/02/ciclo-de-vida-do-software-parte1.html?m=1

Durante a fase inicial do ciclo de vida do desenvolvimento de sistemas, na etapa de investigao, a


tarefa que determina a probabilidade de sucesso do sistema proposto e propicia uma avaliao
superficial da rea tcnica, econmica e comportamental do projeto, sendo decisivamente
importante para o processo do desenvolvimento de sistemas chamada estudo de viabilidade.
Inicia-se com o Estudo de Viabilidade, segue para a Identificao dos Requisitos, Anlise dos
Requisitos (e Negociao), Especificao e Documentao, Validao, e Gesto de Requisitos.

Dos diferentes modelos para o ciclo de vida de desenvolvimento de um software correto afirmar
que o modelo em cascata o menos flexvel e mais simples.
O modelo em cascata (ciclo de vida clssico), sugere uma abordagem sistemtica e sequencial para
o desenvolvimento de softwares. Prev cinco fases: Comunicao, Planejamento, Modelagem,
Construo e Implantao.
Item por item:
O modelo espiral envolve conceitos como iteraes e incrementos e faz parte dos modelos
evolucionrios, que passaram a existir apenas depois dos modelos sequenciais e incrementais.
No modelo em cascata uma fase depende da outra para comear e quando uma fase termina, no
possvel retornar para ela. O modelo simples pois foi o primeiro a ser criado, no havendo muitos
estudos sobre esse assunto naquela poca, e faz parte dos modelos sequenciais.
No existe um software sem requisitos, mesmo que eles j sejam conhecidos, seu gerenciamento
dever ser feito.

"Em um processo de desenvolvimento iterativo, o teste de sistema concentra-se no teste de um


incremento que ser entregue ao cliente; em um processo em cascata, o teste de sistema concentrase no teste de todo o sistema".
Fonte: Engenharia de Software, pag. 357, cap. 23, 8 Edio. Ian Sommerville. Editora Pearson
Adison Wesley.
Iterativo: O modelo interativo realiza vrias iteraes, onde cada iterao disponibiliza um
incremento (Uma parte do sistema). Onde cada incremente testado.
Cascata: No modelo Cascata, no ocorre iteraes, o sistema construdo em uma nica iterao.
Assim disponibilizando apenar o sistema completo no final do processo. Contudo esse processo
fornece um grande risco.

Observe a figura, que representa uma ferramenta de processo, conhecida como Ciclo de Vida de
Sistema. Devido ao encadeamento de uma fase com outra, esse modelo conhecido como
cascata. Observe.

Um das fases prev a execuo de atividades que envolvem a identificao e a descrio das
abstraes fundamentais do sistema de software e suas relaes e o estabelecimento de uma
arquitetura geral para o sistema como um todo. Essa fase denomina-se projeto de sistema e
software.

Observe um modelo de ciclo de vida para desenvolvimento de sistemas. Nessa abordagem, o


desenvolvimento do produto de software dividido em ciclos, sendo identificadas em cada ciclo, as
fases de anlise, projeto, implementao e testes.

Este modelo conhecido como ciclo de vida iterativo e incremental.

A imagem apresentada na questo est no livro Princpios de Anlise e Projeto de Sistemas com
UML, Eduardo Bezerra, p. 33.
O modelo apresentado na figura o ciclo de vida iterativo e incremental. Nessa abordagem, o
desenvolvimento do produto de software dividido em ciclos. Ao contrrio da abordagem em
cascata, na qual as fases de projeto, implementao e testes so realizadas apenas uma vez, o
desenvolvimento iterativo e incremental repete essas fases a cada ciclo. Nesse contexto, Bezerra at
cita que cada iterao considerada uma "minicascata". Na figura possvel observar que cada
incremento desenvolvido em cascata.
Um ciclo define um subconjunto de requisitos. Cada vez que ele executado, um novo incremento
do sistema produzido. Dessa forma, o desenvolvimento do software evolui em verses, onde
novas funcionalidades so acrescentadas at que se alcance a verso final.
Bezerra resume da seguinte forma:
"No modelo de ciclo de vida incremental e iterativo, um sistema de software desenvolvido em
vrios passos similares (iterativo). Em cada passo, o sistema estendido com mais funcionalidades
(incremental)."

Fases como Testes e Implantao ocorrem aps a implementao.


De acordo com Sommerville, cada volta na espiral dividida em quatro setores:
Definio dos objetivos:
Determina objetivos especficos para essa fase do projeto
Identifica restries ao processo e ao produto
Elabora um plano de projeto detalhado
Identifica os riscos do projeto
Avaliao e reduo de riscos:
feita uma anlise detalhada para cada risco identificado
Avalia alternativas, identifica e resolve os riscos
Desenvolvimento e validao:
Seleciona um modelo de desenvolvimento para o sistema (melhor abordagem de desenvolvimento,
de acordo com os riscos identificados desenvolve e verifica o prximo nvel do produto
Planejamento:
Revisa o projeto e planeja a prxima fase, ou seja, a prxima volta na espiral
De acordo com Pressman, cada volta na espiral dividida em cinco setores:
Comunicao
Planejamento: estimativa de custos, cronograma e anlise de riscos
Modelagem: anlise e projeto
Construo: codificao e testes
Emprego: entrega e feedback
O Ciclo de Vida de um Sistema especifica todas as fases de desenvolvimento, desde sua concepo
at o processo de manuteno e declnio. No que diz respeito ao desenvolvimento de software,
existem alguns processos conhecidos. Um destes processos, possui caracterstica iterativa e
incremental, inicia cada fase do projeto realizando um planejamento prvio, realiza a execuo da
fase, verifica o progresso e os resultados da fase (riscos, lies aprendidas) e incrementa novos
objetivos para a fase seguinte, seguindo para a prxima iterao. O processo de software em
questo o modelo espiral.

Segundo Pressman:
MODELO DE PROCESSO ESPIRAL
- um modelo de processo de software evolucionrio que acopla a natureza iterativa da prototipao
com os aspectos sistemticos e controlados do modelo em cascata.
-Os RISCOS so considerados medida que cada revoluo realizada.
-Usa a prototipao como mecanismo de reduo de riscos.
-Cada loop espiral est dividido em 4 (quatro) fases: (fonte: Sommerville)
DEFINIO DE OBJETIVOS
AVALIAO E REDUO DE RISCOS
DESENVOLVIMENTO E VALIDAO
PLANEJAMENTO
O modelo de processo denominado em espiral combina as atividades de desenvolvimento
com o gerenciamento de riscos, de modo a minimiz-los e control-los.
Na Engenharia de Software, h diversos modelos de ciclo de vida, definidos com variados
nveis de formalidade. O modelo prototipagem evolutiva entrega uma verso inicial do
sistema, que considera requisitos j definidos com o cliente.
Pressman define os seguintes modelos de processo prescritivo:
MODELO EM CASCATA (SEQUENCIAL)
-O modelo em CASCATA, algumas vezes chamado de ciclo de vida clssico, sugere uma abordagem
sequencial e sistemtica.
-Os requisitos de um problema so bem compreendidos.
-Diviso inflexvel do projeto em estgios distintos (uma etapa s inicia aps a anterior).
-Deve ser usado apenas quando os requisitos forem bem compreendidos e houver pouca
probabilidade de mudanas radicais durante o desenvolvimento do sistema.
-O software s entregue na fase final do ciclo de vida (manuteno).
MODELO DE PROCESSO(INCREMENTAL)
-Rpido fornecimento de um determinado conjunto funcional aos usurios.
-Combina elementos dos fluxos de processos lineares e paralelos.
-O fluxo de processo de qualquer incremento pode incorporar o paradigma da prototipao.
-O primeiro incremento um produto essencial, tambm chamado de ncleo do produto.
-O modelo de processo incremental tem seu foco voltado para a entrega de um produto operacional
com cada incremento.
-Incrementos podem ser planejados para administrar riscos tcnicos.
-Objetiva a elaborao de um produto funcional.
MODELOS DE PROCESSO EVOLUCIONRIO (PROTOTIPAO E ESPIRAL)
PROTOTIPAO
-Frequentemente, o cliente define uma srie de objetivos gerais para o software, mas no identifica,
detalhadamente, os requisitos para funes e recursos.
-A prototipao pode ser utilizada como um modelo de processo stand-alone, porm mais utilizada
como uma tcnica no contexto dos demais modelos.
- til quando os requisitos so obscuros.
-Na sua forma ideal o prottipo atua como um mecanismo para identificar os requisitos do software.
-Os prottipos podem ser descartveis ou evolucionrios.
-Problemas: o cliente pode acreditar que o prottipo uma verso operacional do software e o
engenheiro pode utiliz-lo, de forma inadequada, como base de novas verses.
ESPIRAL
- um modelo de processo de software evolucionrio que acopla a natureza iterativa da prototipao
com os aspectos sistemticos e controlados do modelo em cascata.

-Os RISCOS so considerados medida que cada revoluo realizada.


-Usa a prototipao como mecanismo de reduo de riscos.
-Cada loop espiral est dividido em 4 (quatro) fases: (fonte: Sommerville)
DEFINIO DE OBJETIVOS
AVALIAO E REDUO DE RISCOS
DESENVOLVIMENTO E VALIDAO
PLANEJAMENTO
MODELOS CONCORRENTES
-Possibilita a equipe de software representar elementos concorrentes e iterativos de qualquer um dos
modelos de processos.
-A modelagem concorrente se aplica a todos os tipos de desenvolvimento de software e fornece uma
imagem precisa do estado atual de um projeto.

O modelo de ciclo de vida de processo de software cujos principais subprocessos so executados


em estrita sequncia, o que permite demarc-los como pontos de controle bem definidos,
denominado: Cascata ou modelo Clssico.
Nenhuma fase terminada at que a sua documentao tenha sido completada e seus produtos
aprovados pelo grupo de garantia da qualidade.
Ao fazer a codificao, o projeto deve ser traduzido em uma forma legvel por mquina. Quando o
projeto bem detalhado, essa etapa pode ser realizada mecanicamente.

Idealizada e a curva real se referem taxa de falhas do software. A curva real mostra que as
sucessivas alteraes do software tendem a introduzir mais erros antes da estabilizao dos erros de
alteraes anteriores, ocasionando a tendncia crescente do ndice de falhas.
O conceito desta questo se encontra no livro do Pressman:
Durante sua vida, o software passar por alteraes. medida que estas ocorram, provvel que
sejam introduzidos erros, fazendo com que a curva de taxa de defeitos se acentue, conforme
mostrado na "curva real". Antes que a curva possa retornar taxa estvel original, outra alterao
requisitada, fazendo com que a curva se acentue novamente. Lentamente, o nvel mnimo da taxa
comea a aumentar - o software est deteriorando devido modificao.
Pressman, Roger. Engenharia de Software - Uma Abordagem Profissional - 7a edio - pg. 33.

Existem diversos tipos de ciclo de vida de software, dentre eles se destacam o ciclo de vida em
cascata, em espiral e incremental.
As fases do ciclo de vida guardam entre si semelhanas entre diversos modelos, de forma que o fato
do enunciado no especificar a qual ciclo de vida ele est se referindo no interfere na resoluo da
questo.
Tomando Pressman como referncia, podemos entender duas etapas comuns nos ciclos de vida de
software:
- Anlise de requisitos: O objetivo dessa etapa entender e mapear as necessidades do software que
se deseja construir, entender o domnio da aplicao, as funes requeridas, o comportamento e a
performance esperada. Nessa etapa os requisitos so documentados e revisados com o cliente. O
Foco da anlise entender o que o software deve fazer.
- Projeto ( Design ): O objetivo dessa etapa projetar a estrutura de dados, a arquitetura do
software, os detalhes procedimentais e a caracterizao da interface. A fase de projeto traduz os
requisitos definidos previamente em uma representao de software. O Foco do projeto definir
como o software ir fazer.
Como podemos ver, o enunciado da questo troca os conceitos de Anlise e Design, portanto,
questo errada
Fonte : Pressman, Roger S. Software Engineering: A Practiotioners Approach. Fifth Edition

Segundo os autores mais renomados de engenharia de software as seguintes fases no ciclo de vida
so:
Para Pressman
1-Comunicao
2-Planejamento
3-Modelagem
4-Construo
5-Implantao
Para Sommerville
1. Definio de Requisitos
2. Projeto de sistema e software
3. Implementao e teste de unidade
4. Integrao e teste de sistema
5. Operao e manuteno

O ciclo de vida de um software pode ser descrito com base em modelos. Um deles, proposto por
Barry Boehm em 1988, apresenta-se como um modelo onde cada fase precedida por uma anlise
de risco e sua execuo realizada incrementalmente. O nome dado ao modelo descrito por Barry
Boehm em 1988 modelo Espiral.
O modelo espiral para a Engenharia de Software foi desenvolvido acrescentando-se novos
elementos as melhores caractersticas de outros modelos. Segundo o modelo espiral, a determinao
dos objetivos, alternativas e restries est relacionada atividade de planejamento.

O termo Modelo de Ciclo de Vida utilizado para descrever um grupo de atividades e a forma

como elas se relacionam. Considerando o Modelo de Ciclo de Vida de Sistemas por Prototipagem
Evolucionria, afirma-se que no h uma forma de saber de antemo o nmero de iteraes que
sero necessrias.

O gerenciamento de grande quantidade de informao na construo de sistemas pode ser


contornada usando-se a tcnica de refinamentos sucessivos, utilizada no modelo de Ciclo de Vida
Iterativo e Incremental. A construo de sistemas, com base nesse modelo de ciclo de vida, contm
atividades que podem exigir trabalho, em maior ou menor grau, em todos os incrementos
planejados.

Modelo de ciclo de vida em cascata:


Enfatiza a realizao sequencial das atividades do desenvolvimento de um produto de software.
Modelo de Prototipagem:
enfatiza a comunicao estreita com o cliente durante o desenvolvimento do produto de software
envolve a ideia principal de criar um prottipo executvel e, atravs de transformaes sucessivas,
chegar ao sistema completamente implementado.
Modelo Espiral:
envolve a anlise dos riscos envolvidos no desenvolvimento dos requisitos identificados para
produto de software.
Modelo Evolutivo:
recomenda a gerao de verses incompletas do sistema, que podem ser passadas para o usurio
final, o que permite a retroalimentao do processo de desenvolvimento.

Modelo de ciclo de vida para desenvolvimento de sistemas. Essa abordagem divide o


desenvolvimento de software em ciclos, em que, em cada ciclo, podem ser identificadas as fases de
anlise, projeto, implementao e testes. Cada um dos ciclos considera um subconjunto de
requisitos, e estes so desenvolvidos uma vez que sejam alocados a um ciclo de desenvolvimento.
Esse modelo de ciclo de vida denominado incremental e iterativo.

O modelo de ciclo de vida em espiral divide o desenvolvimento do software em iteraes.


O modelo de ciclo de vida em espiral orientado a reduzir os riscos do projeto.
No modelo de ciclo de vida em cascata, as etapas acontecem de maneira sequencial.
O modelo de prototipagem evolucionria permite que desde muito cedo se ganhe uma melhor
percepo dos requisitos do sistema.

Essa questo foi retirada do livro do Sommerville, 8 edio, captulo 4 - Processos de software,
pgina 48:
"Em vez de representar o processo de software como uma sequncia de atividades com algum
retorno entre uma atividade e outra, o processo representado como uma espiral. Cada loop na
espiral representa uma fase do processo de software. Dessa forma, o loop mais interno pode estar
relacionado viabilidade do sistema; o prximo loop, definio de requisitos; o prximo, ao
projeto de sistema e assim por diante."

No modelo em espiral do processo de software cada loop na espiral representa uma fase do
processo.

medida que se avana pelo modelo ocorre uma iterao e o software evolui para estgios
superiores, normalmente com aumento da complexidade. Cada iterao est provida das atividades
determinadas pelos quadrantes planejamento, avaliao de alternativas e riscos, desenvolvimento do
software e avaliao do cliente. No ciclo de vida de desenvolvimento de software, trata-se da
propriedade do modelo Espiral.

As atividades do modelo espiral de Engenharia de Software so: Planejamento, Anlise dos Riscos,
Engenharia e Avaliao feita pelo cliente.

Prototipao uma abordagem baseada numa viso evolutiva do desenvolvimento de software,


afetando o processo como um todo. Esta abordagem envolve a produo de verses iniciais prottipos (anlogo a maquetes para a arquitetura) - de um sistema futuro com o qual pode-se
realizar verificaes e experimentaes para se avaliar algumas de suas qualidades antes que o
sistema venha realmente a ser construdo.

A metodologia de prototipagem evolutiva uma abordagem que visualiza o desenvolvimento de


concepes do sistema conforme o andamento do projeto, por meio de prottipos visuais.

No ciclo de vida em cascata, o custo de correo menor na fase de requisitos.


S pra constar, o modelo em cascata tambm conhecido pelos seguintes nomes:
Linear;
Sequncial; Clssico.

Cascata;

Segundo Pressman:
"apesar da prototipagem poder ser usada como um modelo de processo independente, ela mais
comumente usada como uma tcnica que pode ser implementada dentro do contexto de qualquer um
dos modelos de processo mencionados neste captulo".
Logo, isso leva a concluso que possvel o uso de prottipos, como tcnica, no modelo cascata.

O modelo em cascata consiste de fases e atividades que devem ser realizadas em seqncia, de
forma que uma atividade requisito da outra.

Segundo Pressman, o modelo de Prototipagem muito utilizado quando nem todos os requisitos so
definidos de maneira clara pelo cliente. A caracterstica principal desse modelo gerar prottipos do
sistema com definies de requisitos dadas pelo cliente e que ento testado pelo cliente para
validar as suas funcionalidades.

O modelo de desenvolvimento por prototipao caracterizado pela ausncia de mtricas de


controle, dada a natureza experimental do desenvolvimento e do produto obtido.
Errado, a prototipao tem como principal caracterstica facilitar a coleta de requisitos, o que
facilita a obteno de mtricas de controle

No modelo iterativo, divide-se o desenvolvimento em iteraes. A cada iterao, podem ser


acrescentadas novas funcionalidades ao software. Uma iterao parte do estado no qual se
encontravam os artefatos ao trmino da iterao anterior e resulta em um incremento. Uma iterao
pode ter disciplinas como captura de requisitos, anlise, projeto, implementao e teste.

De acordo com Rezende (2005), o modelo espiral foi desenvolvido para abranger melhor as
caractersticas do ciclo de vida e prototipao, acrescentando anlise de riscos, considerando as
seguintes fases:
Planejamento: determinao dos objetivos, alternativas e restries.
Anlise de Riscos: anlise de alternativas e identificao ou resoluo dos riscos.
Engenharia: desenvolvimento do produto.
Avaliao: avaliao dos resultados feita pelo usurio.

A Engenharia de Software uma rea da computao que visa abordar de modo sistemtico as
questes tcnicas e no tcnicas no projeto, implantao, operao e manuteno no
desenvolvimento de um software.

A Engenharia de Software uma disciplina que se ocupa de todos os aspectos da produo de


software, desde os estgios iniciais de especificao do sistema at a sua manuteno. A Engenharia
de Software adota mtodos que so abordagens de estruturadas para o desenvolvimento de software,
que incluem modelos de sistemas, notaes, regras, recomendaes de projetos e diretrizes de
processos.

Um analista desenvolve um software e identifica que os seus requisitos iniciais esto razoavelmente
bem definidos, mas o escopo geral do desenvolvimento no permite um processo puramente linear.
Ele sabe que precisa, em curtssimo prazo, prover um conjunto limitado de funcionalidades do
software para os usurios, que sero refinadas e expandidas em verses futuras.
Qual o modelo de ciclo de vida de desenvolvimento de software mais adequado a esse caso?
Incremental
Segundo o professor Pedrosa...
a) Cascata no gera verses.
b) O Espiral, apesar de iterativo e incremental, no vai gerar um produto em "curtssimo" prazo,
pois ele ainda tem um certo formalismo, principalmente em se tratando de Anlise de Riscos
(quadrante obrigatrio do modelo).
c) Mtodo Formal custoso, lento.
e) Prototipao poderia ser uma resposta aceitvel... principalmente se pensarmos em Prototipao
Evolucionria (comear dos requisitos mais fceis para entregar verses rpidas ao usurio). Mas,
como eu falo em sala de aula, normalmente quando se fala "Prototipao", estamos nos referindo

Prototipao Descartvel, que muito mais uma tcnica de elicitao de requisitos do que um
modelo de ciclo de vida.

So tcnicas e abordagens utilizadas na obteno dos requisitos: pontos de vista, cenrios e


entrevista.
Pressman classifica as tcnicas de elicitao em:
1.
Pontos de Vista
2.
Entrevistas
3.
Cenrios
4.
Casos de Uso
5.
Etnografia
O Swebok (SoftWare Enginering Body of Knoledge) classifica as tcnicas em:
1.
Entrevistas
2.
Cenrios
3.
Prottipos
4.
Brainstorm
5.
Observao
Tcnicas de elicitao de requisitos:
1. Amostragem
2. Investigao de documentos
3. Estudo Etnogrfico
4. Entrevista e questionrio
5. WorkShop de requisitos
6. Cenrios
7. Prototipagem
8. JAD - Joint Application Development

No livro do Sommerville, 7 edio, pg 49, possui o modelo em espiral do processo de software de


Boehm. Cada volta do espiral possui:
1. Determinar objetivos, alternativas e restries
2. Avaliar alternativas, identificar, resolver riscos
3. Planejar prxima fase
4. Desenvolver, verificar produto de prximo nvel

Gabarito E. Segundo Pressman: "um fluxo de processo iterativo repete uma ou mais das atividades
antes de prosseguir para a seguinte", logo no sequencial (linear).
(Fonte: Livro Engenharia de Software, Pressman, 7ed, pag 54)

No modelo de desenvolvimento de software em espiral, cada loop na espiral representa uma fase do
processo de software.
O modelo em espiral difere principalmente dos outros modelos de processo de software
por reconhecer explicitamente o risco.

O Modelo em espiral um processo de desenvolvimento de software que combina


elementos de projeto prototipao-em-etapas, em um esforo para combinar as
vantagens dos conceitos de top-down e bottom-up, acrescentando um novo elemento, a
anlise de riscos que falta a esses paradigmas.