Você está na página 1de 31

Ciência da Computação

Engenharia de Software
Paradigmas
Prof. Carla Castanho

Engenharia de Software - Prof. Carla Castanho 1


Ciência da Computação

Introdução
• O paradigma de uma linguagem de programação é a sua
identidade
• Corresponde a um conjunto de características que,
juntas, definem como ela opera e resolve os problemas
• Algumas linguagens, inclusive, possuem mais de um
paradigma. São as chamadas multiparadigmas

Engenharia de Software - Prof. Carla Castanho 2


Ciência da Computação

Introdução
• Alguns exemplos de paradigmas:
– Clássico – Prototipação
– Espiral – Lógico
– Procedural – Imperativo
– Funcional – Estruturado
– Orientado a objetos – Orientado a eventos
– RAD
– ...

Engenharia de Software - Prof. Carla Castanho 3


Ciência da Computação

Ciclo Sequencial Clássico


• O Ciclo Sequencial Clássico, também chamado de
Modelo em Cascata ou waterfall, requer uma abordagem
sistemática e sequencial ao desenvolvimento
• Adicionalmente podem ser utilizados conceitos mais
atuais de Engenharia de Software, os quais preveem
atividades de:
– verificação (estamos fazendo o produto de forma correta?)
– validação (estamos fazendo o produto certo?)
– controle de qualidade

Engenharia de Software - Prof. Carla Castanho 4


Ciência da Computação

Ciclo Sequencial Clássico – Modelo


Viabilidade
Análise
Projeto
Implementação
Testes
Implantação
Operação e
Manutenção

Engenharia de Software - Prof. Carla Castanho 5


Ciência da Computação

Ciclo Sequencial Clássico – Fases


1. Viabilidade: definição preliminar do escopo, levantamento de
possíveis restrições ao novo sistema ou projeto, estudo de
alternativas para a solução do problema, viabilidade logística,
financeira, etc.
2. Análise (Projeto Lógico): especificação funcional do sistema
– o que o sistema existente faz e o que o novo sistema deve
fazer
3. Projeto (Projeto Físico): especificação completa da
arquitetura de hardware e software, estruturas de controle,
estruturas de dados do sistema, interfaces – especificação de
COMO o sistema atenderá os Requisitos da Análise

Engenharia de Software - Prof. Carla Castanho 6


Ciência da Computação

Ciclo Sequencial Clássico – Fases


4. Implementação: codificação do software
5. Testes: testes de todos os módulos do software já
integrados como um sistema
6. Implantação: implantação de maneira gradativa, a fim
de evitar insatisfação e possibilitando a correção do
sistema. A implantação deve ser feita em paralelo ao
uso do sistema antigo
7. Operação e Manutenção: utilização do sistema e
modificações decorrentes de erros, mudança de
necessidades, etc.

Engenharia de Software - Prof. Carla Castanho 7


Ciência da Computação

Ciclo Sequencial Clássico


• Pressman descreve uma abordagem alternativa de
fases:

Engenharia de Software - Prof. Carla Castanho 8


Ciência da Computação

Ciclo Sequencial Clássico


• O Ciclo de Vida Clássico é o paradigma mais antigo
ainda utilizado, principalmente em decorrência de
softwares preexistentes que foram construídos a partir
deste modelo
• Porém, no decorrer do tempo, principalmente a partir do
final da década de 90, surgiram várias críticas que
discutem sua aplicabilidade em todas as situações

Engenharia de Software - Prof. Carla Castanho 9


Ciência da Computação

Ciclo Sequencial Clássico – Problemas


• Entre os problemas que surgem, podemos citar:
– Os projetos reais raramente seguem o fluxo sequencial
– Muitas vezes é difícil para o cliente declarar todas suas
exigências e necessidades explicitamente - o ciclo de vida
clássico exige isto e tem dificuldade em acomodar a incerteza
– O cliente deve ter paciência, pois uma versão não estará
disponível antes de um ponto tardio do cronograma, onde um
erro não detectado pode ser desastroso

• Uma das principais desvantagens desta abordagem é o


alto custo de correção das especificações quando nas
fases de Testes e Implantação

Engenharia de Software - Prof. Carla Castanho 10


Ciência da Computação

Ciclo Sequencial Clássico – Problemas


• Barry Boehm, em 1981, enunciou um princípio clássico
na Engenharia de Software
• “O custo de uma alteração em um projeto cresce
exponencialmente à medida que se avança nas fases do
desenvolvimento”

Engenharia de Software - Prof. Carla Castanho 11


Ciência da Computação

Prototipação
• Protótipos são produtos de experimentação rápida, onde
uma versão simplificada do sistema é projetada,
desenvolvida, testada e colocada em operação
• Os protótipos são modelos que visam permitir:
– Que o projetista analise certas características do projeto que as
especificações escritas no papel não são capazes de mostrar
– Que o modelo seja testado sem o risco de comprometer toda
uma produção em larga escala ou nas proporções reais
– Que o futuro usuário entenda mais facilmente o produto que está
sendo gerado

Engenharia de Software - Prof. Carla Castanho 12


Ciência da Computação

Prototipação
• Com base na experiência adquirida com a primeira
versão, estabelecem-se novos requisitos para o sistema
e uma nova versão é concebida e implementada
• Têm-se, a partir disso, um ciclo evolutivo e incremental
• A prototipação pode entregar, a cada final de incremento,
uma versão inacabada do software e não uma versão
plenamente funcional

Engenharia de Software - Prof. Carla Castanho 13


Ciência da Computação

Prototipação – Objetivos
• A prototipação tem como objetivos:
– Estabelecer um diálogo intensivo entre usuários e analistas/
projetistas
– Encurtar ao máximo o ciclo "concepção-implementação-
utilização-avaliação" do sistema
– Possibilitar a evolução do sistema
através de vários ciclos ou
refinamentos sucessivos
– Avaliar constantemente o sistema

Engenharia de Software - Prof. Carla Castanho 14


Ciência da Computação

Prototipação – Vantagens
• A filosofia de protótipos possui as seguintes vantagens:
– Maior garantia de sucesso técnico e psicológico (cliente está
vendo o que será criado)
– Redução no fator tempo: “o usuário gosta de ver o sistema
funcionando”

Engenharia de Software - Prof. Carla Castanho 15


Ciência da Computação

Prototipação – Problemas
• A prototipação pode ser problemática por duas razões:
– O cliente vê o que parece ser uma versão executável do
software, ignorando que o protótipo consiga apenas funcionar
precária e parcialmente
– O desenvolvedor frequentemente faz concessões na
implementação a fim de conseguir rapidamente um protótipo
executável

Engenharia de Software - Prof. Carla Castanho 16


Ciência da Computação

Modelo Espiral
• O modelo de ciclo de vida que utiliza protótipos pode se
adequar muito bem com esta filosofia de
desenvolvimento
• Ele combina a natureza iterativa da prototipação com os
aspectos controlados e sistemáticos do modelo em
cascata, acrescentando ao mesmo tempo um novo
elemento – a Análise de Riscos – que falta nestes
paradigmas

Engenharia de Software - Prof. Carla Castanho 17


Ciência da Computação

Modelo Espiral – Análise de Riscos


• A Análise de Riscos visa avaliar e reduzir os riscos,
onde, para cada risco de projeto identificado, uma
análise detalhada é realizada e providências são
tomadas para a redução do mesmo
• Por exemplo, se os requisitos do software mudam
drasticamente depois que o projeto está concluído, o
projeto pode sofrer com a perda de controle e da
compreensão do problema, caso novos requisitos sejam
relativos a funções ou características com as quais a
equipe de projeto não esteja familiarizada

Engenharia de Software - Prof. Carla Castanho 18


Ciência da Computação

Modelo Espiral – Análise de Riscos


• Além disso, se a especificação de projeto não for
suficientemente flexível para ser modificada rápida e
facilmente, uma mudança radical nos requisitos
provavelmente conduzirá o projeto a perdas referentes a
tempo e dinheiro. A perda associada a um risco é
chamada de Impacto do Risco
• Uma alternativa neste caso, é criar especificações de
projeto que facilitem a manutenibilidade futura, visando a
minimização das referidas perdas, caso venham a
acontecer

Engenharia de Software - Prof. Carla Castanho 19


Ciência da Computação

Modelo Espiral
• O modelo Espiral fornece o potencial para o
desenvolvimento rápido de versões de software cada vez
mais completas
• Ele define cinco importantes quadrantes com atividades
bem definidas, mas que podem sofrer algumas variações
segundo a abordagem de quem usa o modelo
• Como o software evolui à medida que o processo
avança, o desenvolvedor e o cliente entendem melhor e
reagem aos riscos de cada nível evolucionário

Engenharia de Software - Prof. Carla Castanho 20


Ciência da Computação

Modelo Espiral

• O primeiro circuito em volta do espiral pode resultar no desenvolvimento de


uma especificação do produto, já as passagens subsequentes podem ser
usadas para desenvolver um protótipo e, então, progressivamente, versões
cada vez mais sofisticadas do software
• Cada passagem pela região de planejamento resulta em ajustes no projeto

Engenharia de Software - Prof. Carla Castanho 21


Ciência da Computação

Modelo Espiral
• O modelo Espiral usa a prototipação como um
mecanismo de redução dos riscos (surpresas, efeitos
indesejados, falhas), mas o que é mais importante,
possibilita que o desenvolvedor aplique a abordagem de
prototipação em qualquer etapa
• Portanto, o modelo Espiral mantém a abordagem de
passos sistemáticos do ciclo de vida clássico, mas a
incorpora numa estrutura interativa mais real

Engenharia de Software - Prof. Carla Castanho 22


Ciência da Computação

Modelo Espiral
• O modelo Espiral visa atender os seguintes casos:
– O problema a ser resolvido não está totalmente entendido
– A realidade do sistema pode mudar enquanto ele está sendo
desenvolvido
– A própria solução adotada pode ter algum efeito colateral
desconhecido
– A preocupação está centrada mais na qualidade e funcionalidade
do que naquilo que se produz

Engenharia de Software - Prof. Carla Castanho 23


Ciência da Computação

Modelo Espiral – Problemas


• Pode ser difícil convencer os clientes que a abordagem
evolutiva é controlável
• Esta abordagem exige competência considerável na
avaliação de riscos e se depende dessa competência
para ter sucesso
• Se um risco importante não for descoberto e gerenciado,
fatalmente ocorrerão problemas
• O desenvolvimento de protótipos para este modelo exige
o uso de ferramentas RAD

Engenharia de Software - Prof. Carla Castanho 24


Ciência da Computação

Modelo RAD
• O RAD (Rapid Application Development -
Desenvolvimento Rápido de Aplicação) é um modelo de
processo de software incremental que enfatiza um ciclo
de desenvolvimento curto
• O modelo RAD é uma adaptação "de alta velocidade" do
modelo em cascata, no qual o desenvolvimento rápido é
conseguido com o uso de uma abordagem de construção
baseada em componentes e geração automática de
parte do código, bem como da documentação

Engenharia de Software - Prof. Carla Castanho 25


Ciência da Computação

Modelo RAD
• Se os requisitos forem bem compreendidos e o objetivo
do projeto for restrito, o processo RAD permite a uma
equipe de desenvolvimento criar um "sistema
plenamente funcional", dentro de um período de tempo
bastante curto
• O modelo RAD abrange um amplo conjunto de
ferramentas de software, onde cada uma delas possibilita
que o desenvolvedor especifique alguma característica
do software num nível elevado, como por exemplo, com
o uso de diagramas

Engenharia de Software - Prof. Carla Castanho 26


Ciência da Computação

Modelo RAD – Exemplo

Engenharia de Software - Prof. Carla Castanho 27


Ciência da Computação

Modelo RAD – Desvantagens


• Como todos os modelos de processos, a abordagem
RAD tem desvantagens:
– Se o sistema não puder ser modularizado, a construção dos
componentes necessários ao RAD será problemática
– O RAD pode não ser adequado quando os riscos técnicos são
altos - por exemplo, quando uma nova aplicação faz bastante
uso de alguma tecnologia recente, ainda incipiente no mercado

Engenharia de Software - Prof. Carla Castanho 28


Ciência da Computação

Combinando Paradigmas
• Os paradigmas podem e Obtenção Preliminar dos requisitos

devem ser combinados


Análise dos M Espiral
de forma que as requisitos
Prototipação RAD

potencialidades de cada
Projeto
um possam ser obtidas Prototipação RAD
Enésima iteração
num único projeto
Codificação
RAD
• A natureza da aplicação Modelo Espiral
Enésima iteração

deve ditar a abordagem a Testes


ser tomada
Software pronto

Manutenção

Engenharia de Software - Prof. Carla Castanho 29


Ciência da Computação

Fluxo de
Processos

O Fluxo de Processo
descreve como são
organizadas as atividades
metodológicas, bem como
as ações e tarefas que
ocorrem dentro de cada
atividade em relação à
sequência e ao tempo

Engenharia de Software - Prof. Carla Castanho 30


Ciência da Computação

Como você quer seu projeto?

Devemos sempre ter bom senso e pensar no equilíbrio dos métodos, processos e ferramentas!

Engenharia de Software - Prof. Carla Castanho 31

Você também pode gostar