Vous êtes sur la page 1sur 47

Universidade Jean Piaget

Engenharia de software– ES - (INF040)


ESI004
2016/2017
Docente: Ruben Alexsander Pires Gonçalves da Veiga
E-mail: rgv@cv.unipiaget.org
INTRODUÇÃO A ENGENHARIA DE SOFTWARE
• Aula Inicial
– Contexto histórico;
– Conceitos;
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

2
CONTEXTO HISTÓRICO
• 1950 - 1965
- Contínuas mudanças no hardware
- O software era uma arte "secundária" para a qual
havia poucos métodos sistemáticos
Eng. Ruben Veiga – Disciplina: ES –

- O hardware era de propósito geral


Piaget Mindelo -16/17

- O software era específico para cada aplicação

3
CONTEXTO HISTÓRICO
• 1965 - 1975
- Multiprogramação e sistemas multiutilizadores
- Técnicas interactivas
- Sistemas de tempo real
- 1a geração de SGBD’s
Eng. Ruben Veiga – Disciplina: ES –

- Produto de software - software houses


Piaget Mindelo -16/17

- Bibliotecas de Software
- Cresce no de sistemas baseado em computador
- Invenção das linguagens de alto nível
- Aparecimento de Sistemas Operativos
4
CONTEXTO HISTÓRICO
• 1975 - Actualmente
- Sistemas distribuídos
- Redes locais e globais
- Uso generalizado de microprocessadores – produtos
inteligentes
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

- Hardware de baixo custo

5
CONTEXTO HISTÓRICO
• 1975 - Actualmente
- Impacto de consumo
- Tecnologias orientadas o objectos
- Sistemas especialistas e software de inteligência
artificial usados na prática
Eng. Ruben Veiga – Disciplina: ES –

- Software de rede neural artificial


Piaget Mindelo -16/17

- Computação Paralela
- Internet
- Programação em nuvem
- Dispositivos móveis
6
CONTEXTO HISTÓRICO
• O Grande Problema
– 1965 - 1975
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

CRISE DO SOFTWARE

7
CRISE DO SOFTWARE - CAUSAS
• Falta de documentação
– a má qualidade das teorias (linguagens),
metodologias e ferramentas de desenvolvimento
utilizadas;
– complexidade dos sistemas, dificuldade de
Eng. Ruben Veiga – Disciplina: ES –

formalização.
Piaget Mindelo -16/17

– Concentração dos conhecimentos em uma única


pessoa

8
CRISE DO SOFTWARE - CONSEQUÊNCIAS
• Cerca de um quarto (1/4) dos projetos de
desenvolvimento de grandes sistemas era cancelado
antes da conclusão;
• Em média, o tempo de desenvolvimento era bem maior
do que o estimado;
• Três quartos (3/4) dos grandes sistemas não são usados
Eng. Ruben Veiga – Disciplina: ES –

ou não funcionam como planeado;


Piaget Mindelo -16/17

• A manutenção e reutilização de software eram, em geral,


extremamente difíceis e custosas;
• Ás vezes era mais vantajoso desenvolver um novo
sistema do que modificar, estender ou utilizar a
funcionalidade de um já existente. 9
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17
SOLUÇÃO

SOFTWARE
ENGENHARIA DE

10
ENGENHARIA DE SOFTWARE
• “A ES é o campo da informática que trata dos
aspectos relacionados com a construção de sistemas
de software de grande dimensão e/ou complexidade,
que exigem existência de uma equipa ou equipas de
engenheiros para o seu desenvolvimento.” Ghezzi
• “Construção de software multi-versão multi-pessoa.”
Eng. Ruben Veiga – Disciplina: ES –

Parnas
Piaget Mindelo -16/17

11
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17
Perguntas frequentes sobre software - Sommerville
ENGENHARIA DE SOFTWARE
• “Um campo da informática cujo objectivo é a
construção de software sem erros, entregue a tempo
e dentro do orçamento e que satisfaz as
necessidades do utilizador. Além disso, o software
deve ser de fácil modificação quando as
necessidades dos utilizadores se alterem” Schach
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

13
ENGENHARIA DE SOFTWARE
• “Aplicação de uma abordagem sistemática,
disciplinada e quantificável, para o
desenvolvimento, operação e manutenção do
software, isto é, a aplicação da Engenharia ao
Software.” IEEE
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

14
ENGENHARIA DE SOFTWARE
• De acordo com Sommerville:
– “Engenharia de software é uma disciplina de
engenharia cujo foco está em todos os aspectos da
produção de software, desde os estágios iniciais da
especificação do sistema até sua manutenção,
quando o sistema já está sendo usado.”
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

15
Engenharia de Software
• Há duas expressões importantes nessa definição:
– Todos os aspectos da produção de software. A engenharia
de software não se preocupa apenas com os processos
técnicos do desenvolvimento de software. Ela também inclui
atividades como gestão de projeto de software e
desenvolvimento de ferramentas, métodos e teorias para
apoiar a produção de software.
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17
Engenharia de Software
• Há duas expressões importantes nessa definição:
– Disciplina de engenharia. Engenheiros fazem as coisas
funcionarem. Eles aplicam teorias, métodos e ferramentas
onde for apropriado. No entanto, eles os usam seletivamente
e sempre tentam descobrir as soluções para os problemas,
mesmo quando não há teorias e métodos aplicáveis. Os
engenheiros também reconhecem que devem trabalhar de
Eng. Ruben Veiga – Disciplina: ES –

acordo com as restrições organizacionais e financeiras,


Piaget Mindelo -16/17

então buscam soluções dentro dessas restrições.


Engenharia de software é importante por dois
motivos:
1. Cada vez mais, indivíduos e sociedades dependem dos
sistemas de software avançados. Temos de ser capazes de
produzir sistemas confiáveis económica e rapidamente.
2. Geralmente é mais barato, a longo prazo, usar métodos e
técnicas da engenharia de software para sistemas de
software, em vez de simplesmente escrever os programas
Eng. Ruben Veiga – Disciplina: ES –

como se fossem algum projeto pessoal.Para a maioria dos


Piaget Mindelo -16/17

sistemas, a maior parte do custo é mudar o software depois


que ele começa a ser utilizado.
ENGENHARIA DE SOFTWARE
• Tecnologias em camada
- É o “como fazer”;
- Englobam um conjunto de tarefas que inclui
análise de requisitos, projeto, construção de
programas, teste e manutenção
Eng. Ruben Veiga – Disciplina: ES –

- É o adesivo que cola as tecnologias e permite um


Piaget Mindelo -16/17

desenvolvimento de software racional e em tempo;


- Dão suporte automatizado ou semi-automatizado
ao processo e aos métodos;

19
ENGENHARIA DE SOFTWARE
• Tecnologias em camada
- Qualquer abordagem de engenharia (inclusive a
engenharia de software) deve apoiar num
compromisso organizacional com a qualidade.
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

Ferramentas

Método

Processos

QUALIDADE

20
INTERDISCIPLINIDADE ENGENHARIA DE SOFTWARE

Linguagens de Teoria da
programação computação

Engenharia de
Eng. Ruben Veiga – Disciplina: ES –

Software
Piaget Mindelo -16/17

Inteligência Artificial
Sistemas Operativos

Base de Dados

21
INTERDISCIPLINIDADE ENGENHARIA DE SOFTWARE

Engenharia de
Gestão sistemas

Engenharia de
Eng. Ruben Veiga – Disciplina: ES –

Software
Piaget Mindelo -16/17

22
PROGRAMAÇÃO X ENGENHARIA DE SOFTWARE
Uma pessoa Uma equipa

Sem preocupação com as necessidades Tendo como ponto de partidas as


do utilizador necessidades do utilizador
Pequeno projecto Grande Projecto

Pequenas alterações Várias alterações

Curta duração Longa duração


Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

Barato Caro

PROGRAMAÇÃO ENGENHARIA DE SOFTWARE

23
O ENGENHEIRO DE SOFTWARE - Competências
• Programar fluente em várias linguagens.
• Conhecer diferentes abordagens ao desenho de
sistemas.
• Capaz de traduzir requisitos indicados de forma
vaga e incompleta para especificações precisas.
Eng. Ruben Veiga – Disciplina: ES –

• Capaz de entender as necessidades do utilizador do


Piaget Mindelo -16/17

sistema
• Capaz de entender um problema em diversos níveis
de abstração
• Capaz de trabalhar em equipa
24
ENGENHARIA DE SOFTWARE
• Apesar da evolução do software…
• A habilidade em construir software deixa a desejar em
relação ao potencial do hardware
• A construção de software não é rápida o suficiente para
atender as necessidades do mercado
• A sociedade depende cada vez mais de software confiável;
Eng. Ruben Veiga – Disciplina: ES –

quando ele falha, podem ocorrer gastos enormes e


Piaget Mindelo -16/17

desgaste de muitos profissionais para arrumá-lo


• O esforço para construir software confiável e de qualidade
é muito grande
• O suporte aos programas existentes é apoiado por
projectos pobres e recursos inadequados
25
ENGENHARIA DE SOFTWARE
• Hoje, é o software que custa mais do que o hardware.
• Já há algum tempo, gestores e técnicos se perguntam:
- Porque é preciso tanto tempo para terminar os
programas?
- Porque os custos são tão altos?
• Porque não se consegue encontrar todos os erros
Eng. Ruben Veiga – Disciplina: ES –

antes que o software seja liberado para os clientes?


Piaget Mindelo -16/17

• Porque existe uma dificuldade em medir o progresso à


medida que o software está sendo construído?

26
PRINCÍPIOS DA ENGENHARIA DE SOFTWARE
• Rigor e formalismo
• Separação de assuntos
• Modularidade
• Abstracção
Eng. Ruben Veiga – Disciplina: ES –

• Antecipação da mudança
Piaget Mindelo -16/17

• Generalidade
• Incrementalidade

27
RIGOR E FORMALISMO
• Rigor
- ...produtos fiáveis
- ...custos controlados
- ...confiança acrescida
Eng. Ruben Veiga – Disciplina: ES –

• Formalismo
Piaget Mindelo -16/17

- Formalidade: processo de desenvolvimento


de software regido e orientado por leis
matemáticas.
28
SEPARAÇÃO DE ASSUNTOS
• Separação de assuntos permite:
- Dividir um problema em partes que podem
ser realizadas separadamente
- Criar um entendimento na forma como as
partes dependem/relacionam-se umas
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

com as outras

29
DIMENSÕES DA SEPARAÇÃO DE ASSUNTOS
• Separação temporal:
- Planeamento da agenda semanal de forma a reduzir a
comutação de actividades
• Separação das qualidades:
- Começar por desenhar o programa por forma a garantir a
correcção e só depois o rever para aumentar a eficiência.
• Separação de vistas:
Eng. Ruben Veiga – Disciplina: ES –

- Concentração no fluxo de dados ou no fluxo de controlo.


Piaget Mindelo -16/17

• Separação de partes do sistema (em termos de tamanho)


- Em sistemas muito complexos
• Separação de responsabilidades:
- divisão de trabalho das várias pessoas da equipa, com
diferentes tarefas e responsabilidades

30
MODULARIDADE
• Separação em pequenas e individuais peças
- Tratamento dos detalhes de cada módulo
individual
- Integração de todos os módulos de forma
coerente
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

31
ABSTRAÇÃO
• Processo pelo qual se identificam os
aspectos importantes de um fenómeno e se
ignoram os respectivos detalhes
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

32
ANTECIPAÇÃO DA MUDANÇA
• Antecipar a mudança permite...
– …criar uma infra-estrutura que absorva
mudanças facilmente
– …eliminar facilmente erros não detectados
– ...novos requisitos e alterações dos existentes
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

– ...a reusabilidade de componentes


– ...controlo de custos a longo prazo

33
GENERALIDADE
• A generalidade permite…
– …aumento da reusabilidade
- por outros programas
- em pontos diferentes do mesmo programa
Eng. Ruben Veiga – Disciplina: ES –

– …aumento da robustez
Piaget Mindelo -16/17

– …desenvolvimento mais rápido


– …custo reduzido

34
INCREMENTABILIDADE
• A incrementalidade permite…
- ...o desenvolvimento de melhores produtos
- ...uma identificação atempada dos problemas
- ...um aumento da satisfação do cliente
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

35
O PRODUTO
• Objectivo da Engenharia de Software:
- construir algo: produto: Software (e não só...)
• O que é o Software?
- é uma sequência de instruções a serem seguidas e/ou
executadas, na manipulação, ou modificação de um
dado/informação ou acontecimento
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

- é o nome dado ao comportamento exibido por essa


sequência de instruções quando executada em um
computador ou máquina semelhante.

36
O SOFTWARE
• Produto
- Quando libera o potencial embutido no hardware.
• Veículo para liberar produto
- quando ele actua como uma base para o controlo
do computador - sistema operativo;
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

- para a comunicação de informação - redes;


- para a criação e controlo de outros programas.

37
CARACTERÍSTICAS
• Utilizador procura Software:
- Fiável, eficiente e fácil de usar
• Engenheiro de Software:
- Fácil de verificar,
- Extensível ,
Eng. Ruben Veiga – Disciplina: ES –

- “Manutensível”,
Piaget Mindelo -16/17

- “Portável”
• Gestor do projeto quer um processo de produção:
- Eficiente e
- Fácil de controlar 38
CARACTERÍSTICAS
• Características Externas X Internas
- Externas → visíveis aos utilizadores do sistemas
- Internas → visíveis aos programadores do
sistema
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

39
CARACTERÍSTICAS
• Produto X Processo
- Usa-se um processo para produzir um produto
de Software.
- Certas características do processo influenciam
características do produto.
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

- O produto produzido pelo processo de ES não é


atómico:
• Programa compilado + Manuais de utilização
• Código fonte
40
CARACTERÍSTICAS
• Correção/ Corretude → Especificações do Cliente,
• Fiabilidade,
• Robustez → comportamento razoável,
• Desempenho.
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

41
CARACTERÍSTICAS
• Manutensibilidade → após entrega,
• Verificabilidade,
• Intuitivo,
• Visibilidade → módulos bem estruturados e
Eng. Ruben Veiga – Disciplina: ES –

documentados,
Piaget Mindelo -16/17

42
CARACTERÍSTICAS
• Evolutibilidade,
• Reparabilidade → correção dos defeitos num
tempo limitado,
• Pontualidade,
Eng. Ruben Veiga – Disciplina: ES –

• Produtividade.
Piaget Mindelo -16/17

43
CARACTERÍSTICAS
• Interoperabilidade
– pode ser entendida como uma característica que se refere à
capacidade de diversos sistemas e organizações trabalharem
em conjunto de modo a garantir que pessoas, organizações e
sistemas computacionais interajam para trocar informações de
maneira eficaz e eficiente.
Eng. Ruben Veiga – Disciplina: ES –

• Compreensibilidade
Piaget Mindelo -16/17

• Reusabilidade
• Portabilidade
– a sua capacidade de ser compilado ou executado em
diferentes arquiteturas (hardware/software). O termo pode ser
usado também para se referir a re-escrita de um código fonte
para uma outra linguagem de computador.
44
APLICAÇÕES DE SOFTWARE
• De acordo com suas aplicações, um software pode ser classificado
das seguintes formas:
– Softwares de Sistema:

Programas para servir outros programas (compiladores,
editores, utilitários de gestão de arquivos)
– Software de Tempo real:

monitora, analisa, controla eventos do mundo real. Um
sistema de tempo real deve responder dentro de
Eng. Ruben Veiga – Disciplina: ES –

restrições de tempo escrita. O tempo de resposta de um


Piaget Mindelo -16/17

software assim é curo, variando de 1 milésimo de


segundo a 1 minuto.
– Software Comercial:

software desenvolvido para comercializar ou com
interesses empresariais, ou que processam informações
comerciais.
45
APLICAÇÕES DE SOFTWARE

Software Científico e de Engenharia:

auxiliam as aplicações científicas. Têm sido
caracterizados por algoritmos de processamentos de
números.

Software Embutido:
softwares próprios de um determinado hardware. O
Eng. Ruben Veiga – Disciplina: ES –

software embutido é usado para controlar produtos e


Piaget Mindelo -16/17

sistemas para os mercados industriais e de consumo,


produtos inteligentes (carros, forno
microondas,smartwatches).

Software Online:

que funcionam em conexão com a internet.
46
APLICAÇÕES DE SOFTWARE
• Software para computadores pessoais:
– Processadores de texto
– gestão de bases de dados
• Software para inteligência artificial:
– Redes Neurais
Eng. Ruben Veiga – Disciplina: ES –
Piaget Mindelo -16/17

– Sistemas Periciais
– Robots

47

Vous aimerez peut-être aussi