introdução a engenharia de software prof. henrique vila nova td - tarde unibratec

50
Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Upload: internet

Post on 18-Apr-2015

110 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Introdução a Engenharia de Software

Prof. Henrique Vila NovaTD - TARDE

Unibratec

Page 2: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Introdução do Curso

2 partes:– Teoria básica (antes da P1)

– Modelagem + Prática (após a P1)

Page 3: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Estrutura do curso (I)

Introdução + Ciclos de Vida Gerência de Projetos: Análise e Projeto de Software Testes e Confiança Manutenção Garantia de Qualidade

Page 4: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Estrutura do curso (II)

Modelagem Orientada a Objetos UML Computer Aided Software Engineering:

Rational Rose

Page 5: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Bibliografia

Engenharia de Software, Roger Pressman, Makron Books:– o mais completo (a bíblia)– edição em português desatualizada (3a. Edição,

de 1992)– 4a. Edição em inglês.

Software Engineering: Theory and Practice, Shari Pfleeger. Prentice Hall

Sommerville, Addison Wesley, 1989.

Page 6: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

1a. Aula

Introdução a Engenharia de Software

Page 7: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Introdução

“O Software ultrapassou o Hardware como chave para o sucesso de muitos sistemas baseados em computador” (Pressman, pg. 3, 1992)

Page 8: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

O Software é o que faz a diferença!!! Completeza da

informação inteligência funcionalidade compatibilidade suporte

Tornam 1 produto melhor que outro

Page 9: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

A importância do Software

Durante as 3 primeiras décadas da era do computador, o principal desafio era desenvolver um HARDWARE de baixo custo e alto desempenho.

O hoje o desafio é melhorar a qualidade (e reduzir os custos) das soluções baseadas em SOFTWARE!

Page 10: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

A evolução do Software

- Nova Revolução

Computação Industrial (Toffler)

- 3a. Onda

Page 11: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

( Parêntesis: Revolução IndustrialPrimeira Onda

Ferro (Darby, 1709) Máquina a vapor:

– Inventada (Newcomen, 1712) – Aperfeiçoada (WATT, 1766 - ’69 -’82)

Mecanização da indústria têxtil:– Tear Mecânico (Kay, 1722)– Maquina de fiar (Hargreaves, 1764)

Aspectos sociais, políticos e econo

Têxteis, Carvão e Ferro

Page 12: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

)Parêntesis: Revolução IndustrialSegunda Onda

Aço (Bessemel, 1856 e 1885 - Liga) Locomotiva a Vapor (Rede de Transporte -

1830) Máquina de Costura (SINGER,1851) Motor a combustão interna:

– Primeiro eficiente (OTTO, 1876)– Produção automobilística em massa (Daimler

e Benz, 1896) Desemprego e fim da escravidão

Page 13: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Revolução Industrial: Terceira Onda Energia Nuclear (Fermi, 1942) Uso Industrial/Comercial da Eletricidade Computadores Eletrônicos (ENIAC 1946) Transistor (Shockley, et al., 1948)

Sociedade Sociedade

Industrial da Informaçãotransformação

Page 14: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Filosofando...

A mudança de uma sociedade industrial para uma baseada na informação é uma Radical Mudança Econômica:– Material tem menos valor e Informação tem mais valor

Antes: quanto menos pessoas possuísse algo, maior o valor.

Hoje: quanto mais pessoas possuem algo, maior o valor.

Page 15: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Filosofando ... Exemplo! Cite as características dos sistemas

operacionais que você conhece. Compare os sistemas:

– Unix– Windows– MacOS

O Windows vende mais porque é mais Conhecido ou é mais Conhecido porque vende mais???

Page 16: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

A evolução do software

Software é dividida em 4 Eras:– Primeiros anos 1950 - 1965– Segunda Era 1965 - 1975– Terceira Era 1975 - 1988– Quarta Era 1988 - ...

Page 17: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

O que é Software?

Definição - Software é:1o - instruções (programas de computador)

que, quando executadas, produzem a função e o desempenho desejados;

2o - estruturas de dados que permitem a manipulação das informações;

3o - documentos que descrevem a operação e uso dos programas.

Page 18: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Características do Software - 1

O Software é desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico:– Custos são concentrados no trabalho de

engenharia.– Projetos não podem ser geridos como

projetos de manufatura.– “Fábrica de Software!”

Page 19: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Características do Software - 2

Software não desgasta!– Software não é sensível aos problemas

ambientais que fazem com que o hardware se desgaste.

– Toda falha indica erro de projeto ou implementação: manutenção do SW é mais complicada que a do HW.

Page 20: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Características do Software - 3

A maioria dos softwares é feita sob medida e não montada a partir de componentes existentes.

!= Hardware. Situação esta mudando:

– Orientação a objetos.– Reusabilidade é o “Santo Graal”(diminui

custos e melhora projetos).

Page 21: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Aplicações de Software

Pressman, página 20 Software Básico Software de Tempo Real Software Comercial Software Científico ou de Engenharia Software Embutido Software de Computador Pessoal Software de Inteligência Artificial

Page 22: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Uma Crise no horizonte

A industria de Software tem tido uma “crise” que a acompanha há quase 30 anos:– Aflição Crônica != Crise

Problemas não se limitam ao software que não funciona adequadamente, mas abrange:– desenvolvimento, testes, manutenção,

suprimento, etc.

Page 23: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Therac-25

Equipamento de Radioterapia. Entre 1985 e 1987 se envolveu em 6

acidentes, causando mortes por overdoses de radiação.

Software foi adaptado de uma antecessora, Therac-6:– falhas por falta de testes integrados– falta de documentação

.

Page 24: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Denver International Airport

Custo do projeto: US$ 4.9 bilhões– 100 mil passageiros por dia– 1,200 vôos– 53 milhas quadradas– 94 portões de embarque e desembarque– 6 pistas de pouso / decolagem

Page 25: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Denver International Airport

Erros no sistema automático de transporte de bagagens (misloaded, misrouted, jammed):– Atraso na abertura do aeroporto com custo total estimado em US$360

Milhões 86 milhões para consertar o sistema

Page 26: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Ariane 5

Page 27: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Ariane 5

Projeto da Agência Espacial Européia que custou:– 10 anos.– US$ 8 Bilhões.

Capacidade 6 toneladas. Garante supremacia

européia no espaço.

Page 28: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Vôo inaugural em 4/junho/1996

Page 29: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Resultado

Explosão 40 segundos após a decolagem.

Destruição do foguete e carga avaliada em US$ 500 milhões.

Page 30: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

O que aconteceu? (I)

Fato: o veículo detonou suas cargas explosivas de autodestruição e explodiu no ar. Por que?

Porque ele estava se quebrando devido às forças aerodinâmicas. Mas por que?

O foguete tinha perdido o controle de direção (atitude). Causa disso?

Os computadores principal e back-up deram shut-down ao mesmo tempo.

Page 31: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

O que aconteceu? (II)

Por que o Shut-down? Ocorrera um run time error (out of range, overflow , ou outro) e ambos computadores se desligaram. De onde veio este erro?

Um programa que convertia um valor em ponto flutuante para um inteiro de 16 bits recebeu como entrada um valor que estava fora da faixa permitida.

Page 32: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Especificamente:O que faltou?

strict precondition 1:

{

Set."x"=FLPT and Set."y"=INT16

and -32768 <= x <= +32767

}

program code:

y := int(x);

postcondition:

{Set."x"=FLPT and Set."y"=INT16 and y=int(x)}

Page 33: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Ironia...

O resultado desta conversão não era mais necessário após a decolagem...

Page 34: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Quais são os problemas?

A sofisticação do software ultrapassou nossa capacidade de construção.

Nossa capacidade de construir programas não acompanha a demanda por novos programas.

Nossa capacidade de manter programas é ameaçada por projetos ruins.

Page 35: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Perguntas que Engenharia de Software quer responder: Porque demora tanto para concluir um

projeto (não cumprimos prazos)? Porque custa tanto (uma ordem de

magnitude a mais)? Porque não descobrimos os erros antes de

entregar o software ao cliente? Porque temos dificuldade de medir o

progresso enquanto o software está sendo desenvolvido?

Page 36: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Causas óbvias

Não dedicamos tempo para coletar dados sobre o desenvolvimento do software - resulta em estimativas “a olho”.

Comunicação entre o cliente e o desenvolvedor é muito fraca.

Falta de testes sistemáticos e completos.

Page 37: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Causas menos óbvias

O Software é desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico (característica 1).

Gerentes sem background em desenvolvimento de SW.

Profissionais recebem pouco treinamento formal.

Falta investimento (em ES). Falta métodos e automação.

Page 38: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Mitos do Software - Administrativos Um manual oferece tudo que se precisa

saber. Computadores de última geração

solucionam problemas de desenvolvimento.

Se estamos atrasados, basta adicionar programadores e tirar o atraso (chamado “conceito de hordas de mongois”).

Page 39: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Mitos do Software - do Cliente

Uma declaração geral é suficiente para começar a escrever programas.

Mudanças podem ser facilmente acomodadas em um projeto (ver figura pg. 28).

Page 40: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Mitos do Software - do Profissional Um programa está terminado ao

funcionar. Quanto mais cedo escrever o código,

mais rápido terminarei o programa. Só posso avaliar a qualidade de um

programa em funcionamento. A única coisa a ser entregue em um

projeto é o programa funcionando.

Page 41: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Engenharia de Software: Definição “Engenharia de Software é o

estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais”

É METODOLOGIA!

Page 42: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Engenharia de Software: Abrangência E.S. possui 3 elementos fundamentais:

– métodos: “como fazer”– ferramentas: apoio automatizado aos métodos.– Procedimentos: elo de ligação entre os métodos

e os procedimentos Existem diversos Paradigmas de

Engenharia de Software:– abordagens que envolvem estes métodos,

ferramentas e procedimentos

Page 43: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Paradigmas de Engenharia de Software Existem dezenas. 4 principais:

– Ciclo de Vida Clássico (modelo Cascata)– Prototipagem– Espiral– Técnicas de Quarta Geração

Páginas 32 até 43 Pressman

Page 44: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Ciclo de Vida Clássico: modelo Cascata (Waterfall) Baseado em projetos de engenharia

clássicos (não de Software) - 1970 Fases:

– Análise de requisitos– Definição– Projeto– Implementação– Integração e testes– Operação e manutenção

Page 45: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Ciclo de Vida Clássico (II)Requirements

definition

System andsoftware design

Implementationand unit testing

Integration andsystem testing

Operation andmaintenance

de Sommerville, 1995.

Page 46: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Ciclo de Vida Clássico (III)

Problemas:– projetos reais não seguem um fluxo

seqüencial: dificuldade de acomodar mudanças depois de iniciado.

– Dificuldade de declaração de todas as exigências pelo cliente.

– Paciência!

Page 47: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Modelo Espiral de Boehm (1988)

Riskanalysis

Riskanalysis

Riskanalysis

Riskanalysis Proto-

type 1

Prototype 2Prototype 3

Opera-tionalprotoype

Concept ofOperation

Simulations, models, benchmarks

S/Wrequirements

Requirementvalidation

DesignV&V

Productdesign Detailed

design

CodeUnit test

IntegrationtestAcceptance

testService Develop, verifynext-level product

Evaluate alternativesidentify, resolve risks

Determine objectivesalternatives and

constraints

Plan next phase

Integrationand test plan

Developmentplan

Requirements planLife-cycle plan

REVIEW

Page 48: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Fases do modelo Espiral

Definição dos objetivos– Especificação dos objetivos específicos desta

fase. Análise dos riscos

– Identificação e solução dos principais riscos Desenvolvimento e validação Planejamento

– O projeto é revisto e se define planos para a próxima “volta da espiral”

Page 49: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Conclusão

Software é elemento chave para o sucesso. Mas:– Software não é hardware.– Software não é fácil.– Software mata.– Precisamos de ajuda.

Próxima aula, início da ajuda: gerência de projetos.

Page 50: Introdução a Engenharia de Software Prof. Henrique Vila Nova TD - TARDE Unibratec

Exercício para próxima aula

Descreva 2 casos de problemas causados por erros em software que você conhece (OBS: não adianta falar do Windows)

Descreva 2 produtos (que não seja um computador) onde o software faz a diferença.