Teorico 1
Teorico 1
Teorico 1
Programação
Introdução à Engenharia de Software
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 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)”.
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.
Ferramentas
Métodos
Processo
Foco na qualidade
9
9
UNIDADE Introdução à Engenharia de Software
10
Erros
Tempo
Desenvolvimento Operação Desativação
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.
11
11
UNIDADE Introdução à Engenharia de Software
Definição
do problema
Situação Desenvolvimento
atual técnico
Integração
da solução
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
Integração
Construção
Registros e testes
Testes
Manutenção
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. Palavraschave: análise das necessidades, visão global
do sistema;
• Projeto: realizase 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. Definemse 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.
Palavraschave: 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. Palavraschave: 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. Caracterizase 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
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.
Decisão de
continuar ou não
(go/stop)
Avaliação
do cliente Engenharia
As atividades realizadas em cada uma das fases do modelo espiral são apresenta
das a seguir:
• Planejamento: determinase os objetivos, as restrições e verificase alternativas
de projeto;
• Análise de risco: analisase as alternativas e verificase os riscos. Decidese
seguir o projeto na mesma linha ou começar de novo;
• Engenharia: desenvolvese o protótipo. A cada nova fase de Engenharia, o
produto aproximase 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
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
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.
18