es aula01

39
Engenharia de Software Ciência da Computação Noiza Waltrick Trindade [email protected] Introdução Aula 01

Upload: itau

Post on 24-Jun-2015

447 views

Category:

Documents


1 download

DESCRIPTION

Engenharia de Software

TRANSCRIPT

Page 1: Es   aula01

Engenharia de Software

Ciência da Computação

Noiza Waltrick Trindade

[email protected]

Introdução

Aula 01

Page 2: Es   aula01

Software

Instruções

quando executadas produzem a função e o

desempenho desejados

Estruturas de Dados

possibilitam que os programas manipulem

adequadamente a informação

Documentos

descrevem a operação e o uso dos

programas

Page 3: Es   aula01

Características do Software

1. desenvolvido ou projetado por engenharia, não

manufaturado no sentido clássico

2. não se desgasta mas se deteriora

3. a maioria é feita sob medida em vez de ser

montada a partir de componentes existentes

Page 4: Es   aula01

Falhas de Hardware/Software

Quando um componente de hardware se

desgasta é substituído por uma “peça de

reposição”

Não existe “peça de reposição” para software

– Toda falha indica um erro no projeto ou no

processo de tradução para o código executável

– Manutenção do software é mais complexa do que

a do hardware

Page 5: Es   aula01

Curva de falhas para o Hardware

tempo

“desgaste”“mortalidade

infantilӒndice

de

falhas

Page 6: Es   aula01

Curva de falhas do Software

índice de

falhasmudança

curva real

curva idealizada

tempo

Page 7: Es   aula01

O que é Software?

(Arndt Von Staa, 1987)

São, usualmente, componentes de sistemas

automatizados

São compostos por documentação, dados, código e

procedimentos

São desenvolvidos com o objetivo de instruir

máquinas e pessoas no sentido da realização de um

conjunto bem definido de tarefas de processamento

de dados

São instrumentos para alcançar um fim específico:

transformar dados em resultados confiáveis, úteis e

oportunos

Page 8: Es   aula01

Quando desenvolver software?

Aplicado a qualquer problema em que

um conjunto previamente de passos

procedimentais tiver sido definido

(algoritmo)

Exceção: Softwares de Inteligência

Artificial

Page 9: Es   aula01

Aplicações do Software

BBÁÁSSIICCOO programas de apoio a outros programas

DDEE TTEEMMPPOO RREEAALL monitora, analisa e controla eventos domundo real

CCOOMMEERRCCIIAALL operações comerciais e tomadas dedecisões administrativas

CCIIEENNTTÍÍFFIICCOO EE DDEE

EENNGGEENNHHAARRIIAAalgoritmos de processamento de números

EEMMBBUUTTIIDDOO controla produtos e sistemas de mercadosindustriais e de consumo

DDEE CCOOMMPPUUTTAADDOORR

PPEESSSSOOAALLprocessamento de textos, planilhaseletrônicas, diversões, etc.

DDEE IINNTTEELLIIGGÊÊNNCCIIAA

AARRTTIIFFIICCIIAALLalgoritmos não numéricos para resolverproblemas que não sejam favoráveis àcomputação ou à análise direta

Page 10: Es   aula01

(1950 - 1965)

O hardware sofreu contínuas mudanças

O software era uma arte "secundária" para a qual havia poucos métodos sistemáticos

O hardware era de propósito geral

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

Não havia documentação

Evolução do Software

Page 11: Es   aula01

(1965 - 1975)

Multiprogramação e sistemas multiusuários

Técnicas interativas

Sistemas de tempo real

1a geração de SGBD’s

Produto de software - software houses

Bibliotecas de Software

Cresce no de sistemas baseado em computador

Manutenção quase impossível

..... CRISE DE SOFTWARE

Evolução do Software

Page 12: Es   aula01

(1975 - hoje)

Sistemas distribuídos

Redes locais e globais

Uso generalizado de microprocessadores -

produtos inteligentes

Hardware de baixo custo

Impacto de consumo

Evolução do Software

Page 13: Es   aula01

(Quarta era do software: atualidade)

Tecnologias Orientadas a Objetos

Sistemas especialistas e software de inteligência

artificial usados na prática

Software de rede neural artificial

Computação Paralela

Internet

Evolução do Software

Page 14: Es   aula01

(1965 - 1975)

Cresce o número de sistemas baseado

em computador

Manutenção quase impossível

Evolução do Software

..... CRISE DE SOFTWARE

CRISE DE SOFTWARERefere-se a um conjunto de

problemas encontrados no desenvolvimento de

software

AFLIÇÃO CRÔNICA

Page 15: Es   aula01

Crise de Software - Problemas

1. As estimativas de prazo e de custo

freqüentemente são imprecisas

– “Não dedicamos tempo para coletar dados

sobre o processo de desenvolvimento de

software”

– “Sem nenhuma indicação sólida de

produtividade, não podemos avaliar com

precisão a eficácia de novas ferramentas,

métodos ou padrões”

Page 16: Es   aula01

Crise de Software - Problemas

1. As estimativas de prazo e de custo

freqüentemente são imprecisas

– “Os prazos arrastam-se por meses”

– “Causa insatisfação para o cliente e falta

de confiança”

– “Sem nenhuma indicação sólida de

produtividade, não podemos avaliar com

precisão a eficácia de novas ferramentas,

métodos ou padrões”

Page 17: Es   aula01

Crise de Software - Problemas

2. Insatisfação do cliente com o sistema

concluído

– “Os projetos de desenvolvimento de

software normalmente são efetuados

apenas com um vago indício das

exigências do cliente”

– “A comunicação entre o cliente e o

desenvolvedor de software é muito fraca

Page 18: Es   aula01

Crise de Software - Problemas

3. A qualidade de software às vezes é

menos que adequada

– Não uso de técnicas de teste sistemáticas

e completas

– Só recentemente começam a surgir

conceitos quantitativos sólidos de garantia

de qualidade de software

Page 19: Es   aula01

Crise de Software - Problemas

4. O software existente é muito difícil de manter

– A tarefa de manutenção devora o orçamento

destinado ao software

– A facilidade de manutenção não foi enfatizada como

um critério importante

– Esses problemas podem ser corrigidos

– Abordagem de engenharia de software aliada a

técnicas e ferramentas

Page 20: Es   aula01

estimativas de prazo e de custo

produtividade das pessoas

qualidade de software

software difícil de manter

Crise de Software

Page 21: Es   aula01

Causas dos problemas associados à

Crise de Software

1. Próprio caráter do Software

• O software é um elemento de sistema lógico e não físico (produto intangível)

• Conseqüentemente, o sucesso é medido pela qualidade de uma única entidade e não pela qualidade de muitas entidades manufaturadas

O software não se desgasta, mas se

deteriora!!!

Page 22: Es   aula01

2. Falhas das pessoas responsáveis pelo

desenvolvimento de Software

• Gerentes sem nenhum background em

software

• Os profissionais da área de software têm

recebido pouco treinamento formal em novas

técnicas para o desenvolvimento de software

• Resistência a mudanças.

Causas dos problemas associados à

Crise de Software

Page 23: Es   aula01

3. Mitos do Software

Propagaram desinformação e confusão

administrativos

cliente

profissional

Causas dos problemas associados à

Crise de Software

Page 24: Es   aula01

Já temos um manual repleto de padrões e

procedimentos para a construção de

software. Isso não oferecerá ao meu pessoal

tudo o que eles precisam saber?

Realidade:

Será que o manual é usado?

Os profissionais sabem que ele existe?

Ele reflete a prática moderna de desenvolvimento de software?

Ele é completo?

Mitos do Software (administrativos)

Page 25: Es   aula01

Meu pessoal tem ferramentas de

desenvolvimento de software de última

geração; afinal lhes compramos os

mais novos computadores.

Realidade:

É preciso muito mais do que os mais recentes

computadores para se fazer um desenvolvimento de

software de alta qualidade.

Mitos do Software (administrativos)

Page 26: Es   aula01

Mitos do Software (administrativos)

Se nós estamos atrasados nos prazos,

podemos adicionar mais programadores e

tirar o atraso.

Realidade:

O desenvolvimento de software não é um processo mecânico igual à manufatura.

Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem ser acrescentadas, mas somente de uma forma planejada.

Page 27: Es   aula01

Mitos do Software (cliente)

Uma declaração geral dos objetivos é

suficiente para se começar a escrever

programas - podemos preencher os detalhes

mais tarde.

Realidade:

Uma definição inicial ruim é a principal causa de fracassos dos

esforços de desenvolvimento de software.

É fundamental uma descrição formal e detalhada do domínio da

informação, função, desempenho, interfaces, restrições de

projeto e critérios de validação.

Page 28: Es   aula01

Mitos do Software (cliente)

Os requisitos de projeto modificam-se

continuamente, mas as mudanças podem ser

facilmente acomodadas, porque o software é

flexível.

Realidade:

Uma mudança, quando solicitada tardiamente num projeto,

pode ser maior do que mais do que uma ordem de magnitude

mais dispendiosa do que a mesma mudança solicitada nas

fases iniciais.

Page 29: Es   aula01

Magnitude das mudanças

FASES CUSTO DE MANUTENÇÃO

DEFINIÇÃO 1 x

DESENVOLVIMENTO 1.5 - 6x

MANUTENÇÃO 60 - 100x

Page 30: Es   aula01

Mitos do Software (profissional)

Assim que escrevermos o programa e o

colocarmos em funcionamento nosso

trabalho estará completo.

Realidade:

Os dados da indústria indicam que entre 50 e 70% de todo

esforço gasto num programa serão despendidos depois que

ele for entregue pela primeira vez ao cliente.

Page 31: Es   aula01

Mitos do Software (profissional)

Enquanto não tiver o programa

"funcionando", eu não terei realmente

nenhuma maneira de avaliar sua qualidade.

Realidade:

Um programa funcionando é somente uma parte de uma

Configuração de Software que inclui todos os itens de

informação produzidos durante a construção e manutenção do

software.

Page 32: Es   aula01

Questionamentos

Por que tanta demora para entregar?

Por que os prazos se atrasam?

Por que os custos são altos?

Por que não achar todos os erros antes

de entregar?

Por que dificuldade em medir o

progresso do desenvolvimento de um

software?

CRISE DE SOFTWARERefere-se a um conjunto de problemas encontrados

no desenvolvimento de software

Page 33: Es   aula01

Resposta à Crise de Software

A aplicação de uma abordagem

sistemática, disciplinada e possível de

ser medida para o desenvolvimento,

operação e manutenção do software

(IEEE)

Page 34: Es   aula01

Resposta à Crise de Software

A aplicação de uma abordagem

sistemática, disciplinada e possível de

ser medida para o desenvolvimento,

operação e manutenção do software

(IEEE)34

PROCESSO DE SOFTWARE

Page 35: Es   aula01

Engenharia de Software

Preocupação: Sistematizar o processo

de criação e manutenção de software.

Page 36: Es   aula01

Engenharia de Software

Definições

IEEE Standard Glossary of Software

Engineering terminology:

– Engenharia de software é uma abordagem

sistemática para o desenvolvimento,

operação, manutenção de software;

– Software: programas de computador,

procedimentos, regras, documentação

possivelmente associada, e dados sobre

sua operação.

Page 37: Es   aula01

Engenharia de Software

Definições

Boehm: Engenharia de software

envolve a aplicação prática de

conhecimento científico para o projeto e

construção de programas de

computador e a documentação

associada necessária para desenvolvê-

los, operá-los e mantê-los.

Page 38: Es   aula01

Engenharia de Software

Definições

Fairley: Engenharia de software é a

disciplina tecnologica e gerencial

preocupada com a produção

sistemática e manutenção de produtos

de software que são desenvolvidos e

modificados no prazo estabelecido e

dentro das estimativas de custo.

Page 39: Es   aula01

Pontos a ponderar

Os mitos de software citados em aula

são somente alguns entre muitos

outros. Liste mitos adicionais para cada

uma das categorias apresentadas.

Além das aplicações de software

citadas, pesquise sobre:

– computação ubiqua

– netsourcing

– software aberto

,