Você está na página 1de 25

Capítulo 2

Paradigmas da Engenharia
de Software
Profa. Jaqueline F. Domenciano
Disciplina: Engenharia de Software I
Engenharia de Software
Elementos Fundamentais
Lembrando:
🞂 A engenharia de software envolve métodos, ferramentas e
procedimentos para o desenvolvimento racional de software.
🞂 Métodos: “como fazer”
◦ Planejamento do projeto
◦ Análise de sistema
◦ Projeto das estruturas de dados, arquitetura do programa e algoritmos.
◦ Codificação
◦ Teste
◦ Manutenção
🞂 Ferramentas: suporte automatizado para os métodos.
◦ CASES (Computer Aided Software Engeneering)
🞂 Procedimentos: Sequência de emprego dos métodos, documentação
requerida, controles para garantir a qualidade... Tudo o que garanta
que o desenvolvimento do software progrida.
Engenharia de Software
Processo de Software
“O Processo é um diálogo no qual o conhecimento, que deve se
transformar em software, é reunido e incorporado ao software”
(Howard Baetjer)
🞂 Definições:
◦ Processo é o arcabouço para as tarefas que são necessárias para
construir software de alta qualidade.
◦ Um processo define a abordagem que é adotada quando o
software é elaborado.
◦ Um processo define quem está fazendo o quê, quando e como para
alcançar um certo objetivo.

🞂 Importância:
◦ O processo oferece estabilidade, controle e organização para uma
atividade que pode, se deixada sem controle, tornar-se bastante
caótica.
Engenharia de Software
Processo de Software
🞂 Processo de software: envolve métodos, ferramentas e pessoas
para o desenvolvimento de software:
◦ procedimentos e métodos que descrevem a relação entre as tarefas;
◦ ferramentas e equipamentos que dão suporte a realização das
tarefas, simplificando e automatizando o trabalho; e
◦ pessoas com perfil adequado, treinadas nos métodos e nas
ferramentas para realizar as atividades adequadamente.

🞂 Este conjunto deve estar integrado harmoniosamente para


funcionar de maneira eficaz.

🞂 Paradigma: realizações científicas que geram modelos que, por


um período de tempo, orientam o desenvolvimento na busca de
soluções por problemas ou ainda, uma forma de abordar um
problema.
Processo de Software
Engenharia de Software em Camadas
Ferramentas

Métodos
Processo
Foco na Qualidade

🞂 A engenharia de software é uma tecnologia em camadas.


🞂 Foco na qualidade: o processo contínuo de aperfeiçoamento leva ao
desenvolvimento de abordagens cada vez mais efetivas para a
engenharia de software (compromisso organizacional com a qualidade).
🞂 Processo: alicerce da engenharia de software, define a base para a
efetiva utilização da tecnologia e para o controle gerencial de projetos de
software.
🞂 Métodos: oferecem técnicas de “como fazer” para construir softwares.
🞂 Ferramentas: apoio automatizado para o processo e métodos.
Engenharia de Software
Paradigma Genérico
🞂 São modelos (padrões) para o desenvolvimento de software. Formas
de se estruturar métodos, ferramentas e procedimentos.

Definição
Engenharia de
Software
Desenvolvimento
Planejamento do
Software
Projeto Manutenção
Análise de Implementação
requisitos
Testes Correção
O quê? Implantação
Adaptação

Como? Expansão

Mudanças...
Paradigmas mais usados
🞂 “Codifica-remenda”: sem processo definido
🞂 Modelo em Cascata (Ciclo de vida Clássico)
🞂 Prototipacão
🞂 Modelo Espiral
🞂 Técnicas de Quarta Geração
🞂 Modelo Incremental/Iterativo
Paradigmas
Modelo Codifica-Remenda

🞂 Modelo Balbúrdia.
🞂 É um ausência de formalismo.
🞂 As fases do processo se resumem em:

Implementação Implantação

🞂 Resultado: produtos de software com qualidade


duvidosa.
Paradigmas
Modelo em Cascata
🞂 Ciclo de Vida Clássico

Especificação do Sistema
Engenharia
de Sistemas
Plano de Projeto de Sw
Especificação dos Requisitos do Sw
Análise

Projetos
Projeto

Código-fonte/.exe
Codificação

Sw testado
Teste

Manutenção
Paradigmas
Modelo em Cascata
🞂 Vantagens
Estruturação Clara
Requisitos Bem Definidos
Documentação Abundante
Controle de Qualidade
Adequado para Projetos Pequenos e Simples

🞂 Desvantagens
Rigidez a Mudanças
Falta de Flexibilidade
Entrega Tardia de Valor
Dependência de Requisitos Iniciais
Avaliação Tardia
Falta de Interação com o Cliente
Pouca Adaptação a Mudanças de Tecnologia
Paradigmas
Prototipação
🞂 O protótipo é um modelo do software a ser desenvolvido, serve para
identificar as necessidades do cliente. É descartável!!
🞂 O protótipo é feito com base nos requisitos iniciais do sistema.
🞂 Pode ser: em papel, um executável, um pacote pré-existente.
🞂 Protótipo funciona como uma primeira versão do sistema.
🞂 Preocupação maior com a funcionalidade principal e não com a
qualidade (nem da interface).

Análise de Requisitos

Análise dos
Requisitos Especificação dos requisitos do Sw
Projeto

Codificação Projeto Codificação Teste Manutenção

Teste

Engenharia do Produto

Criação do
protótipo descartável
Paradigmas
Prototipação

Reunião (desenvolvedor e
Coleta e cliente) para definir requisitos
Refinamento globais
dos
Requisitos
Engenharia Projeto Faz-se um
do Produto Rápido projeto rápido
com os
requisitos
estabelecidos

Refinamento Construção
do Protótipo do protótipo

O resultado da avaliação Avaliação do


é usada para refinar os protótipo
requisitos do software a pelo cliente
ser desenvolvido Protótipo é avaliado
pelo cliente e
desenvolvedor
Paradigmas
Prototipação
🞂 Vantagens e Desvantagens:
Paradigmas
Prototipação
Paradigmas
Prototipação
Paradigmas
Modelo Espiral
🞂 Protótipo Evolutivo.
🞂 Quadrantes: planejamento, análise de riscos, engenharia e
avaliação.

Levantamento Análise de Riscos Análise das alternativas,


dos Requisitos do identificação e solução de
Sistema e do
Software riscos

Cada nível do espiral


corresponde versões mais
completas.
Avaliação pelo Desenvolvimento O primeiro nível pode ser um
usuário do Software protótipo. Pode-se ter vários
protótipos.
Paradigmas
Modelo Espiral
🞂 Vantagens
◦ Abordagem Iterativa
◦ Gestão de Riscos
◦ Flexibilidade
◦ Feedback do Cliente
◦ Melhoria Contínua

🞂 Desvantagens
◦ Complexidade de Gestão
◦ Custo e Tempo
◦ Exigência de Experiência
◦ Documentação Adicional
◦ Possível Dificuldade de Estimativa
◦ Requisitos Bem Definidos
Paradigmas
Modelo Incremental ou Iterativo
Iteração = Repetição
Cada novo incremento pode ser:
- Nova funcionalidade.
-Mudança em funções entregues.
Incremento n
Funcionalidade

Incremento 2

Paralelismo
Incremento 1

Tempo
Legenda
Comunicação
Planejamento
Modelagem (Análise e projeto)
Construção (código, teste)
Implantação (entrega,
feedback)
Paradigmas
Modelo Incremental ou Iterativo
🞂 Vantagens
◦ Entrega Contínua de Valor
◦ Feedback Rápido do Cliente
◦ Mitigação de Riscos
◦ Flexibilidade
◦ Estímulo à Colaboração

🞂 Desvantagens
◦ Possível Complexidade de Integração
◦ Exigência de Planejamento Cuidadoso
◦ Necessidade de Escolhas de Design Antecipadas
◦ Maior Custo de Gerenciamento
◦ Possível Dificuldade de Estimativa
◦ Requisitos Bem Definidos
Paradigmas
Técnicas de 4ª Geração
🞂 Dirigidas por Ferramentas - Usa L4G (Linguagens de 4a. Geração).

🞂 1G(geração) - Codificação em nível de máquina: Assembler


🞂 2G - Base para as ling. modernas: Fortran, BASIC, COBOL
🞂 3G - linguagens modernas e de alto nível:
● Uso geral: Pascal, C.
● Orientada a objeto: C++
● Especializadas Prolog, Lisp.
🞂 4 -: linguagens não-procedimentais (descreve resultados desejados e
não procedimentos desejados): geradores de programa, CASE, apoio
a decisão. ( buscam automatizar e simplificar o processo de criação
de software, reduzindo a necessidade de escrever código
manualmente. )
L4G

L3G

L2G
L1G

1950 1960 1970 1980 1990 2000


Paradigmas
Técnicas de 4ª Geração
🞂 Técnicas de 4a. Geração: “capacidade de se especificar software a
uma máquina em um nível mais próximo da linguagem humana”.

Cliente
Ideal:
Coleta dos Ferramenta T4G Produto
Requisitos (operacional)

Real: -Requisitos do cliente ????


Coleta de
Requisitos
Estratégia de
Projeto
Qualidade e
Implementação
manutenibilidade
usando L4G

Teste
Paradigmas
Técnicas de 4ª Geração
🞂 Vantagens
◦ Aumento de Produtividade (rápido)
◦ Redução de Erros: Automatizar partes do processo de
desenvolvimento reduz a probabilidade de erros humanos
◦ Foco no Domínio do Problema: concentrar mais na resolução de
problemas reais e na lógica de negócios.
◦ Aceleração da Entrega: entrega mais rápida de software funcional
◦ Facilitação da Manutenção: O uso de abordagens de geração
automática de código e modelos bem definidos torna a
manutenção do software mais eficiente, já que as alterações
podem ser aplicadas de forma consistente em várias partes do
sistema.
◦ Maior Flexibilidade
Paradigmas
Técnicas de 4ª Geração
🞂 Desvantagens
◦ Limitações de Personalização: Algumas abordagens de 4ª geração podem ser
menos flexíveis em relação a personalizações avançadas ou casos de uso
complexos.
◦ Complexidade da Ferramenta: Ferramentas de geração automática de código
ou plataformas de baixo código podem ter uma curva de aprendizado, e a
complexidade dessas ferramentas pode ser uma barreira para alguns
desenvolvedores.
◦ Falta de Controle Fino: Em algumas situações, as técnicas de 4ª geração
podem limitar o controle direto sobre o código gerado, o que pode ser
problemático em casos onde otimizações de desempenho ou ajustes específicos
são necessários.
◦ Dependência da Ferramenta: Ao usar ferramentas específicas de geração
automática ou plataformas de baixo código, os desenvolvedores podem ficar
dependentes dessas ferramentas e enfrentar dificuldades se precisarem migrar
para outras tecnologias.
◦ Limitações de Funcionalidade: Algumas técnicas de 4ª geração podem não ser
adequadas para todos os tipos de projetos ou requisitos avançados, limitando a
capacidade de atender a casos de uso mais complexos.
◦ Curva de Aprendizado: O aprendizado e a adoção de novas ferramentas ou
abordagens podem ser necessários, o que pode consumir tempo e recursos no
curto prazo.
◦ Possível Falta de Conhecimento Técnico: Em alguns casos, as técnicas de 4ª
geração podem permitir a criação de software por pessoas com menos
conhecimento técnico, o que pode resultar em produtos de menor qualidade.
Referências Bibliográficas
🞂 Pressman, R. Engenharia de Software. São Paulo: McGraw Hill,
2006 (Capítulo 2).

“ Idéias são blocos construtivos de idéias”


(Jason Zebehazy)
Atividade
Estudo de Caso: Desenvolvimento de Sistema de Reservas de Hotel
Uma cadeia de hotéis deseja modernizar seus sistemas de reservas para
melhorar a eficiência e a experiência do cliente. O sistema atual é baseado
em papel e é propenso a erros, levando a reservas duplicadas e insatisfação
dos clientes. A empresa precisa de um novo sistema de reservas que
permita aos clientes fazer reservas online, verificar a disponibilidade de
quartos e pagar de forma conveniente.

Requisitos do Projeto:
1. Capacidade de reservar quartos online.
2. Verificação de disponibilidade de quartos em tempo real.
3. Integração de sistemas de pagamento para processar transações seguras.
4. Funcionalidade para gerentes de hotel acompanharem as reservas e
disponibilidade.
5. Interface de usuário intuitiva para os clientes.

Analise cada um dos paradigmas estudados e faça uma proposta de


utilização, justificando com base nos requisitos apresentados.

Você também pode gostar