Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra
ENGENHARIA DE
SOFTWARE
Software e Engenharia de Software
Capítulo 1
O Papel Evolutivo do Software
Globalização
Sociedade da Informação
Internet
...
Passado
Programador solitário
Atualmente
Equipe de Especialistas em software,
cada um se concentrando em uma parte
da tecnologia necessária
para produzir um sistema.
Mas as mesmas questões continuam...
• Por que leva tanto tempo para construir um software?
• Por que os custos de desenvolvimento são tão latos?
• Por que não podemos achar todos os erros antes de entregar o software aos clientes?
• Por que gastamos tanto tempo e esforço mantendo programas existentes?
...
Essas são preocupações que a engenharia de software aborda, tenta responder e
minimiza os problemas.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
2
Evolução do software
1.
•sistemas batch
•distribuição limitada
•software dedicado
2.
•sistemas multiusuário
•tempo real
•bancos de dados
•produto de software
4.
•tecnologia orientada a
objetos
•computação paralela
•Internet
•“onda” do desktop
•Sistemas especialistas
e redes neurais
artificiais
5.
•computação ubíqua
•sistemas portáteis
• computação nas
nuvens
3.
•sistemas distribuídos
•hardware de baixo
custo
•inteligência local
•impacto de consumo
5
4
3
2
1
1950
3
1960
1970
1980
1990
2000
O que é software?
Algumas definições básicas de software...
1.
São instruções (programas de computadores) que quando executadas fornecem
as características , funções e desempenho desejado;
2.
Estrutura de dados que permitem aos programas manipular adequadamente a
informação
3.
Documentos que descrevem a operação e o uso dos programas
Todos concordam com essas definições?
Cada uma delas realmente expressa o que é software?
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
4
O que é software?
Software não é somente o programa, mas
também conjuntos de dados, arquivos de
configuração e documentação necessários para
que o software funcione corretamente.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
5
Características do Software

Software é desenvolvido e não fabricado.

Software não “se desgasta”.

Apesar da tendência de utilização de componentes,
uma grande parte dos softwares continua sendo
construída sob encomenda.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
6
Curva da Falhas para o Software
Como seria a curva de falhas para hardware?
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
7
Categorias de Software – Atuais

Software de Sistemas
São softwares utilizados por outros softwares.
Ex: compiladores, sistemas operacionais, componentes,...

Software de Aplicação
São softwares que tem como objetivo resolver um problema específico de negócio.
Ex: sistema de folha de pagamento, sistema de gestão de informações, ...

Software de Tempo Real
São softwares de aplicação, mas que monitoram, analisam e controlam eventos de
tempo real.
Ex: sistema do metrô, sistema de aviação, ...
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
8
Categorias de Software – Atuais

Software Científico e de Engenharia
Antigamente eram caracterizado apenas por softwares que processavam números.
Ex: sistema de astronomia, análise automotiva de tensão à dinâmica orbital do ônibus
espacial, sistema de manufatura automatizada, sistema de análise molecular, ...
Atualmente softwares de apoiado por computadores, simulação de sistemas e outras
aplicações interativas podem ser classificadas como esse tipo de software.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
9
Categorias de Software – Atuais

Software Embutido
São softwares que residem dentro de um produto, sistema ou memória ROM.
Ex: controle do teclado forno microondas, controle de combustível de automóvel,...

Software para linha de produtos (prateleira)
São softwares que atendem uma necessidade específica para ser utilizado por
vários usuários diferentes.
Ex: sistema de multimídia (jogos), planilhas, editores de texto,...
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
10
Categorias de Software – Atuais

Software para Web
São softwares desenvolvido para serem disponibilizados em browser.
Ex: sites de conteúdo, E-Commerce, E-Business, E-Learning, ....

Software para Inteligência Artificial
São softwares que utilizam algoritmos não numéricos para resolver problemas
complexos que não são passíveis de computação ou análise direta.
Ex: robótica, sistemas especialistas, sistema de reconhecimento de padrão (voz,
imagens), redes neurais, ...
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
11
Categorias de Software –
Atuais/Futuras

Computação ubíqua
São softwares de aplicação que permitem que pequenos dispositivos móveis, como
PDAs e celulares, computadores e sistemas empresariais se comuniquem através de
diferentes tipos de redes através da computação distribuída.
Ex: acesso a informações via celular, TV digital, multimídia conferência móvel, ...

Software Aberto
São softwares de aplicação com código aberto, que resulta na distribuição de código
fonte, de modo que os usuários possam fazer modificações locais.
Ex: sistema de operacionais, sistemas de banco de dados, sistemas de E-learning.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
12
Algumas questões...

Forneça exemplo de sistemas que trabalham com uma ou mais
categorias de software.

O que são softwares legados?

Qual sua relação com o desenvolvimento de software?

Quais são os possíveis problemas de um software legados?
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
13
Crise do Software
Início em 1968 em uma conferência organizada para
discutir a chamada “crise do software”








Desenvolvimento de Software informal não era suficiente
Atrasos constantes
Custos maiores do que previsto
Não eram confiáveis
Difícil manutenção
Desempenho inferior ao esperado
Declive do custo de hardware
Evoluiu-se muito a capacidade de produzir software
(preocupação com qualidade, compreensão das atividades de
desenvolvimento, criação de técnicas e notações, ... )
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
14
Crise do Software



Crise de tecnologia - hardware caminha mais rápido
que o software
Crise de oferta - demanda é maior que a capacidade
de desenvolvimento
Crise de manutenção - projeto mal feito e recursos
escassos não permitem manutenção.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
15
Crise e Futuro do Software


Ainda vivemos em crise de software?
Ver as próximas transparências...
Qual é o futuro do software?
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
16
Alguns Exemplos de Problemas de
Software


Explosão do foguete Arianne V que possuía na sua
codificação uma rotina destinada ao Ariana IV, e que
não deveria ser ativada.
Aeroporto de Denver, que ficou fechado durante
anos esperando o funcionamento do sistema de
bagagens, o que poderia ser detectado em um
sistema de simulação.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
17
Alguns Exemplos de Problemas de
Software


Explosão do foguete Arianne V (1996) em 40 segundo após decolagem que
possuía na sua codificação uma rotina do Ariane IV, que não deveria ser
utilizada. A rotina convertia valor flutuante em inteiro e que recebeu como
entrada um valor que estava fora da faixa permitida e fez com que os
computadores principais e de backup dessem “shut-down” ao mesmo tempo.
Projeto da Agência Espacial Européia que custou:

10 anos

U$ 8 Bilhões

U$ 500 milhões de carga do foguete
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
18
Alguns Exemplos de Problemas de
Software

Aeroporto de Denver, que ficou fechado durante
anos esperando o funcionamento do sistema de
bagagens, o que poderia ser detectado em um
sistema de simulação.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
19
Problemas de Software

Por que os programas não ficam prontos rapidamente?

Por que os custos de desenvolvimento são tão altos?


Por que os erros não são detectados antes da entrega
aos consumidores?
Por que é difícil medir o progresso durante o
desenvolvimento?
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
20
Mitos de Software
Sob o ponto de vista do gerente

Aumentar o tamanho da equipe resolve o problema de um projeto atrasado.

Terceirizar resolve os problemas de gerência.
Sob o ponto de vista da equipe de desenvolvimento

Não há como avaliar a qualidade do software até que ele seja efetivamente colocado
em produção.

O único produto que realmente interessa é o código executável.

Uma vez que o programa está pronto, acabou o trabalho do “engenheiro de software”.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
21
Mitos de Software
Sob o ponto de vista do usuário/cliente


Basta uma visão geral dos objetivos para se iniciar o desenvolvimento do
software.
É fácil acomodar as mudanças de requisitos durante o desenvolvimento do
software.
Realidade do impacto da modificação:
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
22
Engenharia de Software em Camadas
23


Qualidade: É a camada que suporta a engenharia de software, tendo como foco um software
total com qualidade.
Um maior detalhamento será descrito no material de Qualidade e discutido.
Processo: É um conjunto de atividades e resultados associados que geram um produto de
software. Há quatro atividades de processo fundamentais comuns a todos os processos de
software.
1. Especificação do software: as funcionalidades (requisitos funcionais), as restrições
tecnológicas (requisitos não-funcionais ou atributos) e as restrições de negócio (requisitos de
domínio) devem ser definidas.
2. Desenvolvimento do software: detalhamento, solução e codificação devem ser realizadas
de modo que atenda as especificações.
3. Validação do software: o software tem de ser validado para garantir que ele realize o
que foi especificado
4. Evolução do software: O software deve evoluir para atender às necessidade mutáveis do
cliente/usuário.
Um maior detalhamento será descrito no material de Modelos de Processos de Software e
discutido.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
Engenharia de Software em Camadas
24


Métodos: São abordagens para o desenvolvimento de software, que incluem:
modelos, notações, regras, recomendações e diretrizes. É a camada que
fornece a técnica de como fazer para construir softwares, ou seja a maneira
de conduzir um processo.
Ferramentas: É a camada que proporciona apoio automatizado aos
processos e métodos, como por exemplo às ferramentas CASE (Computer
Aided Software Engineering).
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
Exercício

Exercício-Aula 1.pdf
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
25
Agradecimento
Material cedido por:
Profa. Dra. Ana Paula Gonçalves Serra
Copyright © 2013-2014 Profa. Ana Paula Gonçalves Serra.
Todos direitos reservados. Reprodução ou divulgação total ou parcial deste
documento é expressamente proibido sem o consentimento formal, por
escrito, da Profa. Ana Paula Gonçalves Serra.
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
26
Bibliografia

Engenharia de Software

Roger Pressman

6ª edição – McGrawHill
Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I
27
Download

O que é software?