Buscar

teorico 1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Paradigmas de 
Programação
Responsável pelo Conteúdo:
Prof. Me. Roberto Luiz Garcia Vichinsky
Revisão Textual:
Prof. Me. Luciano Vieira Francisco
Introdução à Engenharia de Software
Introdução à Engenharia de Software
• Conhecer os conceitos de desenvolvimento de sistemas com foco nos paradigmas de análise 
preconizados pela Engenharia de Software.
OBJETIVO DE APRENDIZADO 
• Definição e Importância;
• O que é Engenharia de Software?
• Áreas de Aplicação de Software;
• Ciclo de Vida do Software;
• Processo de Software;
• Modelos de Processos de Software.
UNIDADE Introdução à Engenharia de Software
Definição e Importância
Antes de abordarmos os conceitos introdutórios da Engenharia de Software, é 
importante que façamos uma breve definição de seu objeto de estudo: o software. 
O primeiro registro do emprego da palavra software, dentro do contexto da com­
putação, ocorreu em janeiro de 1958, em um artigo do professor de Estatística 
John W. Tukey, da Universidade de Princeton, intitulado The teaching of concrete 
mathematics. Em um trecho de seu artigo, Tukey destaca: “Today the ‘software’ 
comprising the carefully planned interpretive routines, compilers, and other aspects 
of automative programming are at least as important to the modern electronic 
calculator as its ‘hardware’ of tubes, transistors, wires, tapes and the like”, cuja 
tradução livre corresponde à seguinte: “Hoje o ‘software’, que compreende rotinas 
interpretativas cuidadosamente planejadas, compiladores, e outros aspectos da 
programação automatizada, é no mínimo tão importante para a calculadora eletrônica 
moderna quanto seu ‘hardware’ de tubos, transistores, fios, fitas e similares”.
O artigo de John W. Tukey pode ser encontrado em: https://bit.ly/38OwF4M
O termo software identifica todo e qualquer processo lógico que possa ser exe­
cutado por um sistema computacional, tal como define o dicionário Aurélio da 
Língua Portuguesa (FERREIRA, 2010): “[...] aquilo que pode ser executado por um 
equipamento (o hardware)”. 
Podemos dizer, em linhas gerais, que um software é um conjunto de instruções 
que orienta o computador a realizar determinada tarefa, sendo que esse conjunto 
normalmente é um arquivo que pode ser armazenado em uma memória de massa – 
hard-disk, floppy-disk, pendrive, cartão Secure Digital (SD) etc. –, ou embarcado 
em um sistema microcontrolado.
No entanto, para a Engenharia de Software, o termo software ganha um contor­
no mais abrangente, sendo tratado como produto de software, que corresponde a 
todos os artefatos produzidos durante o desenvolvimento do sistema, tais como código 
fonte, programa executável, documentações, manual do usuário, manual técnico, 
entre outros.
O que é Engenharia de Software?
Segundo Pressman (2016), a Engenharia de Software (ES) é a “[...] disciplina que 
integra processo, métodos e ferramentas para o desenvolvimento de software”, ou 
seja, é o emprego das técnicas e ferramentas da Engenharia para a produção de 
sistemas de software.
8
9
Na literatura, encontramos diversas definições para ES, sendo que todas conver­
gem para o mesmo ponto, reforçando a necessidade do emprego da disciplina de 
Engenharia no desenvolvimento de sistemas de software, destacando ainda a aplica­
ção de três elementos fundamentais:
• Os métodos correspondem ao modo com o qual o sistema será desenvolvido, 
ou seja, definem o modelo de abordagem – paradigma de desenvolvimento – 
que será adotado pela equipe desenvolvedora;
• As ferramentas correspondem aos elementos de apoio que darão suporte aos 
métodos como, por exemplo, diagramas, fluxogramas, softwares de gestão de 
projetos e de apoio ao desenvolvimento, entre outros;
• Os procedimentos determinam a maneira como o desenvolvimento será con­
duzido, fornecendo orientações para que as ferramentas e os métodos sejam 
aplicados adequadamente, visando à produção de um software de qualidade.
Nesse contexto, a Figura 1 ilustra as camadas da ES:
Ferramentas
Métodos
Processo
Foco na qualidade
Figura 1 – Camadas da Engenharia de Software
Fonte: Adaptada de Pressman (2016)
Áreas de Aplicação de Software
Atualmente, o software é um elemento presente em praticamente todos os campos 
de atuação humana. Com os avanços da eletrônica e das Tecnologias da Informação e 
Comunicação (TIC), a presença de sistemas computacionais é cada vez mais frequente 
nas atividades humanas, sejam profissionais ou pessoais. “Ao longo dos u ĺtimos 50 
anos, o software evoluiu de uma ferramenta especializada em ana ĺise de informações 
e resolução de problemas para uma indústria propriamente dita” (PRESSMAN, 2016) .
Em relação à classificação dos softwares de acordo com as suas áreas de aplica­
ção, temos atualmente seis grandes categorias, a saber:
• Softwares de sistema: são programas feitos para dar suporte a outros progra­
mas ou sistemas como, por exemplo, compiladores de linguagem, utilitários de 
sistema operacional, drivers de interface, softwares de rede, entre outros;
• Softwares de aplicação: são programas feitos para executar tarefas específicas. 
Como exemplos desse tipo de software podemos citar os editores de texto, as 
planilhas de cálculo, os processadores de áudio e vídeo, entre outros;
9
UNIDADE Introdução à Engenharia de Software
• Softwares de engenharia/científicos: nesta categoria estão enquadrados os 
softwares desenvolvidos para atender às necessidades das áreas de Engenharia 
e científica que envolvem “cálculo em massa”, ou seja, que contemplam grande 
quantidade de cálculo. São exemplos desta categoria os softwares para projeto 
auxiliado por computador (CAD), simuladores para circuitos eletrônicos e má­
quinas mecânicas, análise de dados para Astronomia e Meteorologia, análise 
genética, Biologia Molecular, entre outros;
• Softwares embarcados: programas embarcados ou embutidos são aqueles 
desenvolvidos, geralmente, para serem executados em dispositivos microcon­
trolados. Os termos embarcado e embutido referem­se à forma como esses 
programas são armazenados: gravados eletronicamente na memória interna 
do dispositivo. Como exemplos de softwares desta categoria, podemos citar o 
programa embutido em um televisor para controlar as funções do aparelho, o 
programa para controlar o painel de um forno micro­ondas, o programa em­
butido em um microcontrolador para administrar a abertura e o fechamento de 
um portão de garagem, entre outros. Cabe salientar que esse tipo de software 
é comumente chamado de firmware;
• Aplicações web/aplicativos móveis: nesta categoria enquadram­se os softwares 
desenvolvidos para serem executados em ambiente de internet – navegadores – 
e em dispositivos móveis – aplicativos para smartphones e tablets;
• Softwares de inteligência artificial: são aqueles construídos com base em al­
goritmos naõ numeŕicos com o objetivo de solucionarem problemas complexos 
voltados às áreas da robo t́ica, sistemas especialistas, reconhecimento de ima­
gem, redes neurais artificiais, entre outras.
Ciclo de Vida do Software
Como vimos, a ES se preocupa com o software como produto. Dessa forma, os 
pequenos programas feitos para resolverem um problema específico, e que não mais 
serão usados em outras ocasiões, estão fora do escopo da ES. São descartados tam­
bém os programas feitos unicamente para a diversão do programador.
Como todo produto industrial, o software tem o seguinte ciclo de vida:
• É concebido a partir de uma necessidade;
• É desenvolvido com base em metodologias apropriadas, transformando­se em 
um conjunto de artefatos;
• Entra na fase de operação;
• É desativado ao final de sua vida útil.
10
11
Erros
Tempo
Desenvolvimento Operação Desativação
Figura 2 – Ciclo de vida do software
De acordo com a Figura 2, podemos verificar que os erros ou as inconsistências 
durante a fase de desenvolvimento do software tendem a cair até um nível próximo 
de zero. Durante o período de operação, existem alguns picos onde o número de 
inconsistências é grande – esses picos estãoindicados com um círculo laranja. 
As inconsistências ocorrem, comumente, quando fatores externos ou internos 
exigem mudanças no software como, por exemplo, alterações da legislação, do novo 
posicionamento estratégico da empresa, de novas necessidades do cliente, novas 
tecnologias etc.
Ações corretivas são aplicadas para corrigir ou atualizar o software, fazendo com 
que as inconsistências cheguem outra vez a um nível próximo de zero. No entanto, 
quando as ações corretivas se tornam inviáveis, sejam pelo alto custo ou por inviabi­
lidade técnica, o software entra na fase de desativação.
Processo de Software
Na elaboração de um produto de software é imprescindível que tenhamos em 
mãos um roteiro que nos guie através de uma sequência de passos previsíveis e nos 
ajude a desenvolver, dentro de um prazo e custo estabelecidos, um produto de quali­
dade. Chamamos esse roteiro de processo de software.
O desenvolvedor de software pode adaptar o processo às suas necessidades, 
pois, um processo pode ser apropriado para a criação de um determinado software, 
porém, pode não ser adequado para o desenvolvimento de outro tipo de sistema. 
Por exemplo, o paradigma adotado para o desenvolvimento de um software para o 
controle de um robô industrial pode não ser adequado para o desenvolvimento de 
um sistema de comércio eletrônico.
No contexto da Engenharia de Software, Pressman (2016) afirma que “[...] um pro­
cesso nã o é uma prescriç ã o rí gida de como desenvolver um software. Ao contrá rio, é 
uma abordagem adaptá vel que possibilita à s pessoas realizar o trabalho de selecionar 
e escolher o conjunto apropriado de aç õ es e tarefas”.
11
UNIDADE Introdução à Engenharia de Software
Modelos de Processos de Software 
Todo o desenvolvimento de software pode ser encarado como um ciclo de solu­
ção de problema, onde destacamos quatro estágios básicos: situação atual, defini-
ção do problema, desenvolvimento técnico e integração da solução, conforme 
ilustra a Figura 3:
Situação 
atual
De�nição 
do problema
Desenvolvimento
técnico
Integração
da solução
Figura 3 – Ciclo de solução de problema
Os principais modelos de processo de software, ou paradigmas de desenvolvi­
mento, são: Waterfall – ciclo de vida clássico ou sequencial, modelo de prototipação, 
Espiral e Incremental.
Modelo Waterfall – Ciclo de Vida Clássico ou Sequencial
O paradigma waterfall – cascata –, chamado também de ciclo de vida clássico 
ou sequencial, é o modelo mais antigo e utilizado. Foi concebido com base no ciclo 
da Engenharia Tradicional e é caracterizado por uma abordagem sequencial para o 
desenvolvimento do software, onde cada atividade é tratada como uma fase distinta. 
A Figura 4 ilustra o modelo waterfall, onde podemos observar que as fases – repre­
sentadas pelos retângulos – são dispostas sequencialmente e cada uma deve ser execu­
tada somente após a conclusão da fase anterior, remetendo à ideia de “efeito cascata”. 
Necessidade
Entendimento do Contexto
Necessidade com base na visão do negócio
Dimensionamento
Integração
Registros e testes
Engª de
Sistemas
Análise de
Requisitos
Projeto
Construção
Testes
Manutenção
Figura 4 – Paradigma waterfall (cascata)
12
13
As atividades realizadas em cada uma das fases do modelo waterfall são apresen­
tadas a seguir:
• Engenharia de sistema – planejamento: a equipe de desenvolvimento deve 
entender e contextualizar o problema, coletando informações em nível global e 
realizando a análise dessas informações em alto nível – pouco projeto. Palavras­
-chave: visão global do processo de negócio, entendimento e contextualização 
do problema;
• Análise de requisitos: os desenvolvedores devem identificar as necessidades 
dos usuários, realizar a análise dos custos envolvidos – orçamento – e recursos 
necessários para a condução do projeto – ferramentas e pessoal. Devem tam­
bém estabelecer as restrições de prazo e custo, assim como realizar um projeto 
inicial e global do sistema. Palavras­chave: análise das necessidades, visão global 
do sistema;
• Projeto: realiza­se uma especificação mais detalhada do sistema, de forma que 
seja possível avaliar a qualidade prevista antes de se iniciar a codificação dos pro­
gramas. Definem­se aqui as estruturas de dados que serão usadas, a arquitetura 
do software, os detalhes procedimentais e as interfaces do usuário. Palavras­
­chave: refinamento da especificação global do sistema, dimensionamento;
• Construção: consiste em traduzir o projeto para uma linguagem de programa­
ção, resultando em instruções executáveis pelo computador – código executável. 
Palavras­chave: implementação, integração;
• Testes: são realizados os testes do sistema. Caso seja detectado algum erro de 
projeto ou de construção, os trabalhos devem retornar para a fase que originou 
esse erro. Palavras­chave: registros e testes;
• Manutenção: depois de entrar em operação, provavelmente o software deverá 
sofrer mudanças em razão de erros, inconsistências e/ou novas funcionalidades 
requeridas. Os tipos de manutenção são os seguintes:
» Corretiva: consiste em diagnosticar e corrigir erros inesperados;
» Adaptativa: ajuste do software a uma nova plataforma ou situação de negócio;
» Perfectiva: melhorias no desempenho do software ou inclusão de novas fun­
cionalidades requeridas pelo cliente;
» Preventiva: realização de testes periódicos com o objetivo de antecipar pos­
síveis problemas.
Modelo de Prototipação
O paradigma de prototipação foi criado para evitar que o produto não corresponda 
às expectativas do cliente. Caracteriza­se pela criação, logo no início dos trabalhos, de 
uma versão simplificada do software – protótipo –, que pode se apresentar como um 
programa executável apenas para demonstrar parte das funcionalidades desejadas ou 
a aparência das interfaces do software. A Figura 5 ilustra o modelo de prototipação:
13
UNIDADE Introdução à Engenharia de Software
Construção
produto
Obtenção
dos requisitos
Início
Fim
Projeto
rápido
Re�namento
protótipo
Avaliação
protótipo
Construção
protótipo
Figura 5 – Paradigma de prototipação
As atividades realizadas em cada uma das fases do modelo de prototipação são 
apresentadas a seguir:
• Obtenção dos requisitos:
 » Semelhante à fase de análise do modelo clássico – waterfall;
 » Desenvolvedor e cliente definem os objetivos do software. 
• Projeto rápido:
 » Realiza­se um projeto simplificado do sistema;
 » Geralmente, concentra­se nas partes visíveis ao usuário, ou seja, as interfaces 
de diálogo e interfaces para entrada e saída de dados.
• Construção do protótipo: implementação do projeto rápido, ou seja, codifica­
ção do programa que será apresentado como protótipo;
• Avaliação do protótipo pelo cliente: o cliente utiliza o protótipo para avaliar 
se o que é desenvolvido é o que espera. O protótipo, portanto, serve para refi­
nar os requisitos iniciais estabelecidos;
• Refinamento do protótipo e dos requisitos:
 » As partes interessadas verificam o que deve ser alterado na especificação inicial;
 » Caso haja alterações, as fases de 2 a 5 – projeto rápido até refinamento do 
protótipo – podem ser repetidas diversas vezes, até que não mais exista a ne­
cessidade de refinamentos.
• Construção do produto: implementação do projeto, ou seja, programação dos 
módulos que constituirão o produto.
14
15
Modelo Espiral
O paradigma espiral agrega em um único modelo as vantagens iterativas do padrão 
de prototipação com os aspectos controlados e sistemáticos do modelo waterfall – 
 ciclo de vida clássico –, adicionando um novo elemento: análise de riscos.
Por um lado, o paradigma espiral segue a abordagem de passos sistemáticos do 
ciclo de vida clássico, mas em uma estrutura iterativa, ou seja, dentro de uma estru­
tura de repetições de ciclos. Por outro lado, emprega a prototipação em qualquer 
etapa da evolução do produto, para garantir a redução de riscos. A Figura 6 ilustra 
tal modelo:
Planejamento Análise dos riscos
Avaliação
do cliente Engenharia
Decisãode
continuar ou não
(go/stop)
Início
Figura 6 – Paradigma espiral
As atividades realizadas em cada uma das fases do modelo espiral são apresenta­
das a seguir:
• Planejamento: determina­se os objetivos, as restrições e verifica­se alternativas 
de projeto;
• Análise de risco: analisa­se as alternativas e verifica­se os riscos. Decide­se 
seguir o projeto na mesma linha ou começar de novo;
• Engenharia: desenvolve­se o protótipo. A cada nova fase de Engenharia, o 
produto aproxima­se mais de sua versão final. Esta fase pode incluir todo o ciclo 
de vida clássico;
• Avaliação do cliente: os desenvolvedores verificam a necessidade de novas 
fases a partir da avaliação do produto realizada pelo cliente.
Modelo Incremental
O paradigma incremental combina os elementos do modelo waterfall – cascata – 
com os processos iterativos do modelo de prototipagem. 
Cada etapa evolutiva dentro do ciclo de vida do software é tratada como um in­
cremento, onde se emprega as fases do modelo clássico – waterfall. Por exemplo, 
suponhamos que o software a ser desenvolvido seja um processador de textos: no 
15
UNIDADE Introdução à Engenharia de Software
primeiro incremento poderíamos desenvolver as funções básicas de criação, gravação 
e abertura de arquivos; no segundo incremento poderíamos desenvolver as funções 
mais sofisticadas de formatação de texto; no terceiro incremento, um corretor ortográ­
fico – e assim por diante. A Figura 7 ilustra o paradigma incremental:
Engª de
Sistemas
Análise de
Requisitos
Projeto
Construção
Testes
1º incremento
Engª de
Sistemas
Análise de
Requisitos
Projeto
Construção
Testes
2º incremento
Engª de
Sistemas
Análise de
Requisitos
Projeto
Construção
Testes
3º incremento
Figura 7 – Paradigma incremental
O desenvolvimento incremental é indicado para situações onde não se tem mão 
de obra ou outros recursos suficientes para desenvolver o software no prazo estabe­
lecido. Desta forma, emprega­se os recursos disponíveis para desenvolver o primeiro 
incremento, que será colocado em operação. Só então inicia­se o segundo incremento, 
e assim sucessivamente. 
Outra indicação desse paradigma é quando uma parte do sistema exige uma tecno­
logia ainda não adquirida pelo cliente. Planeja­se e se desenvolve, então, os incrementos 
independentes dessa tecnologia. Quando a nova tecnologia for adquirida – hardware 
ou plataforma de rede, por exemplo – os demais incrementos podem ser iniciados sem 
maiores problemas.
16
17
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Livros
Engenharia de software: uma abordagem profissional
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 8. ed. 
Porto Alegre, RS: AMGH, 2016.
Engenharia de software: os paradigmas clássico e orientado a objetos
SCHACH, S. R. Engenharia de software: os paradigmas clássico e orientado a 
objetos. 7. ed. Porto Alegre, RS: AMGH, 2010.
 Leitura
Engenharia de software
Publicados na Revista da Sociedade Brasileira de Computação (SBC).
https://bit.ly/3iOjQvV
A Engenharia de Software, a qualidade final do software e o papel do profissional de desenvolvimento
https://bit.ly/2ZXMhP8
17
UNIDADE Introdução à Engenharia de Software
Referências
FERREIRA, A. B. de H. Dicionário da Língua Portuguesa. 5. ed. Curitiba, PR: 
Positivo, 2010.
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 8. ed. 
Porto Alegre, RS: AMGH, 2016.
SCHACH, S. R. Engenharia de software: os paradigmas clássico e orientado a 
objetos. 7. ed. Porto Alegre, RS: AMGH, 2010.
18

Continue navegando