Teorico 1

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 20

Paradigmas de

Programação
Introdução à Engenharia de Software

Responsável pelo Conteúdo:


Prof. Me. Roberto Luiz Garcia Vichinsky

Revisão Textual:
Prof. Me. Luciano Vieira Francisco
Introdução à Engenharia de Software

• 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.

OBJETIVO DE APRENDIZADO
• Conhecer os conceitos de desenvolvimento de sistemas com foco nos paradigmas de análise
preconizados pela Engenharia 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
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
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 ́ricos 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
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ão indicados 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
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:

Definição
do problema

Situação Desenvolvimento
atual 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

Engª de Entendimento do Contexto


Sistemas
Análise de Necessidade com base na visão do negócio
Requisitos
Dimensionamento
Projeto

Integração
Construção

Registros e testes
Testes

Manutenção

Figura 4 – Paradigma waterfall (cascata)

12
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
13
UNIDADE Introdução à Engenharia de Software

Início

Fim
Obtenção
dos requisitos
Construção Projeto
produto rápido

Refinamento Construção
protótipo protótipo
Avaliaçã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
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


Início

Decisão de
continuar ou não
(go/stop)

Avaliação
do cliente Engenharia

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
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
1º incremento
Sistemas
Análise de
Requisitos

Projeto
Engª de
2º incremento
Sistemas
Construção
Análise de
Requisitos
Testes
Projeto
Engª de
3º incremento
Sistemas
Construção
Análise de
Requisitos
Testes
Projeto

Construção

Testes

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
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
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

Você também pode gostar