engenharia de software material cedido por: profa. dra. ana paula gonçalves serra software e...

27
ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Upload: internet

Post on 22-Apr-2015

116 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

ENGENHARIA DE SOFTWARE

Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra

Software e Engenharia de SoftwareCapítulo 1

Page 2: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

O Papel Evolutivo do Software

2

PassadoProgramador solitário

AtualmenteEquipe de Especialistas em software,

cada um se concentrando em uma parteda tecnologia necessária para produzir um sistema.

GlobalizaçãoSociedade da Informação

Internet...

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.

Page 3: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

3

Evolução do software

1950 1960 1970 1980 1990 2000

1

2

3

4

5

1.•sistemas batch•distribuição limitada•software dedicado

2.•sistemas multiusuário•tempo real•bancos de dados•produto de software

3.•sistemas distribuídos•hardware de baixo custo•inteligência local•impacto de consumo

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

Page 4: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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?

O que é software?

4

Page 5: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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.

O que é software?

5

Page 6: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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.

Características do Software

6

Page 7: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

Curva da Falhas para o Software

7

Como seria a curva de falhas para hardware?

Page 8: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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

Categorias de Software – Atuais

8

Page 9: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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.

Categorias de Software – Atuais

9

Page 10: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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

Categorias de Software – Atuais

10

Page 11: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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

Categorias de Software – Atuais

11

Page 12: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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.

Categorias de Software – Atuais/Futuras

12

Page 13: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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?

Algumas questões...

13

Page 14: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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, ... )

Crise do Software

14

Page 15: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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.

Crise do Software

15

Page 16: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

Ainda vivemos em crise de software?Ver as próximas transparências...

Qual é o futuro do software?

Crise e Futuro do Software

16

Page 17: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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.

Alguns Exemplos de Problemas de Software

17

Page 18: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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

18

Page 19: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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.

Alguns Exemplos de Problemas de Software

19

Page 20: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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?

Problemas de Software

20

Page 21: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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

Mitos de Software

21

Page 22: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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:

Mitos de Software

22

Page 23: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

Engenharia de Software em Camadas

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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

Page 24: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

Engenharia de Software em Camadas

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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

Page 25: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

Exercício-Aula 1.pdf

Exercício

25

Page 26: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

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.

Agradecimento

26

Page 27: ENGENHARIA DE SOFTWARE Material cedido por: Profa. Dra. Ana Paula Gonçalves Serra Software e Engenharia de Software Capítulo 1

Profa. Dra. Ana Paula Gonçalves Serra – Engenharia de Software I

Bibliografia

27

Engenharia de Software Roger Pressman 6ª edição – McGrawHill