1 engenharia de software

71
Disciplina Engenharia de Software Prof. Esp. Rafael H Mauro [email protected]

Upload: felipe-bugov

Post on 11-Jul-2015

168 views

Category:

Education


1 download

TRANSCRIPT

Page 1: 1   engenharia de software

Disciplina Engenharia de Software

Prof. Esp. Rafael H Mauro

[email protected]

Page 2: 1   engenharia de software

Bibliografia

• KOSCIANSKI, A; Qualidade de Software. São Paulo: Novatec Editora, 2006.

• MALDONADO, José C; DELAMARO, Márcio; JINO, Mário; Introdução ao Teste de Software, Rio de Janeiro: Elsevier, 2007.

• PFLEEGER, S.L; Engenharia de Software: teoria e prática. 2.ed. São Paulo: Prentice Hall, 2004.

• SOMMERVILLE, I; Engenharia de Software., Fifth Edition, Pearson. 2003.

• WIEGERS, K; Software Requirements, 10ed., Englewood Cliffs, NJ: Prentice Hall Inc, 1997.

Page 3: 1   engenharia de software

Introdução

• “O Software ultrapassou o Hardware como chave para o sucesso de muitos sistemas baseados em computador” (Pressman)

Page 4: 1   engenharia de software

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

• Acesso as informações

• Facilidade de uso

• inteligência

• funcionalidade

• compatibilidade

• suporte

Tornam 1 produto melhor que outro

Page 5: 1   engenharia de software

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 6: 1   engenharia de software

A evolução do Software

- Nova Revolução Computação Industrial (Toffler)

- 3a. Onda

Page 7: 1   engenharia de software

Parêntesis: Revolução Industrial Primeira 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 econômicos

Têxteis, Carvão e Ferro

Page 8: 1   engenharia de software

Parêntesis: Revolução Industrial Segunda 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 9: 1   engenharia de software

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ção

transformação

Page 10: 1   engenharia de software

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 11: 1   engenharia de software

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 12: 1   engenharia de software

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 13: 1   engenharia de software

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 14: 1   engenharia de software

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.

– Ver curvas de falha, páginas 14 e 15 do Pressman.

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

Page 15: 1   engenharia de software

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 16: 1   engenharia de software

Aplicações de Software

(Pressman)

• 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 17: 1   engenharia de software

Uma Crise no horizonte

• A indústria 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 18: 1   engenharia de software

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

(Pfleeger)

Page 19: 1   engenharia de software

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 20: 1   engenharia de software

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 21: 1   engenharia de software

Ariane 5

Page 22: 1   engenharia de software

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 23: 1   engenharia de software

Vôo inaugural em 4/junho/1996

Page 24: 1   engenharia de software

Resultado

• Explosão 40 segundos após a decolagem.

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

Page 25: 1   engenharia de software

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 26: 1   engenharia de software

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 27: 1   engenharia de software

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 28: 1   engenharia de software

Ironia...

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

Page 29: 1   engenharia de software

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 30: 1   engenharia de software

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 31: 1   engenharia de software

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 32: 1   engenharia de software

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 33: 1   engenharia de software

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 34: 1   engenharia de software

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.

Page 35: 1   engenharia de software

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 36: 1   engenharia de software

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 37: 1   engenharia de software

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 38: 1   engenharia de software

Paradigmas de Engenharia de Software

• Existem dezenas.

• 4 principais:

– Ciclo de Vida Clássico (modelo Cascata)

– Prototipagem

– Espiral

– Técnicas de Quarta Geração

(Pressman)

Page 39: 1   engenharia de software

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 40: 1   engenharia de software

Ciclo de Vida Clássico (II)

Requirementsdefinition

System andsoftware design

Implementationand unit testing

Integration andsystem testing

Operation andmaintenance

(Sommerville)

Page 41: 1   engenharia de software

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 42: 1   engenharia de software

Modelo Espiral de Boehm (1988)

Page 43: 1   engenharia de software
Page 44: 1   engenharia de software

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 45: 1   engenharia de software

Conclusão

• Software é elemento chave para o sucesso. Mas:

– Software não é hardware.

– Software não é fácil.

– Software mata.

– Precisamos de ajuda.

Page 46: 1   engenharia de software

Engenharia de Sistemas

• “Se preocupa com o projeto, implementação, instalação e operação de sistemas que incluem hardware, software e pessoas”. (Sommerville)

Page 47: 1   engenharia de software

O que é um Sistema?

• Um conjunto de componentes inter-relacionados organizados para atingir um certo objetivo.

• É organizado para executar certo método, procedimento ou controle ao processar informações.

• Automatiza ou apóia a realização de atividades humanas através do processamento de informações.

Page 48: 1   engenharia de software

Problemas da Engenharia de Sistemas

• Sistemas grandes são projetados para resolver problemas “problemáticos”.

• Sistemas requerem abordagem multi-disciplinar

– Infinitas possibilidades

– Falta de compreensão e confiança entre disciplinas

• Sistemas devem ser projetados para durarem muitos anos em um ambiente dinâmico.

Page 49: 1   engenharia de software

Sistema de Compra

Page 50: 1   engenharia de software

Fases da Engenharia de Sistemas

Podemos identificar três fases nos paradigmas de desenvolvimento vistos:

• Definição:

– Determina viabilidade, requisitos do software, especifica e projeta o sistema.

• Desenvolvimento:

– Implementação, integração e instalação.

• Operação:

– manutenção, correção e evolução.

Page 51: 1   engenharia de software

Sobre a Definição do Software

Page 52: 1   engenharia de software

Análise de Sistemas

• Atividade que engloba as tarefas da engenharia de sistemas de computador.

• Geralmente confundida com as atividades de análise de requisitos.

• Concentra-se em todos os elementos do sistema, não apenas software.

• Trabalha na fase de DEFINIÇÃO do sistema: especifica o sistema para o trabalho de desenvolvimento.

Page 53: 1   engenharia de software

Problemas da análise de sistemas

• Separar partes de hardware, software e peopleware requer muita negociação.

• Pessoas assumem que problemas com difícil solução são facilmente resolvidos pelo computador.

• Plataformas podem ser inapropriadas: software deve compensar isso.

Page 54: 1   engenharia de software

Passos da Análise de Sistemas

• Análise de sistemas envolve:

– Identificação das necessidades.

– Estudo de viabilidade.

– Análise, especificação e validação dos Requisitos.

– Projeto do sistema: • Arquitetura

• Interface

• Dados

Page 55: 1   engenharia de software

Estudo de Viabilidade

• Econômica:

– análise custo benefício (pg 206 Pressman)

• Técnica:

– Estudo da função, desempenho e restrições para um sistema aceitável.

• Legal:

– infrações e violações legais (Ex: IA Médica)

• Alternativas

Page 56: 1   engenharia de software

Análise de requisitos de software

• O processo que estabelece serviços necessários e restrições de operação e desenvolvimento.

• Requisitos:

– são objetivos ou restrições estabelecidas por clientes e usuários do sistema que definem as diversas propriedades do sistema (e que dizem respeito ao software).

Page 57: 1   engenharia de software

Passos da análise de requisitos

Page 58: 1   engenharia de software
Page 60: 1   engenharia de software
Page 61: 1   engenharia de software
Page 62: 1   engenharia de software

Especificação dos Requisitos (I)

• Pressman define um documento básico para a especificação dos requisitos. Ele contém 8 partes:

I. Introdução 1. Referências do Sistema

2. Descrição Geral

3. Restrições de projeto do software

Page 63: 1   engenharia de software

Especificação dos Requisitos (II)

II. Descrição da Informação

1. Representação do fluxo de informação

a. Fluxo de Dados

b. Fluxo de Controle

2. Representação do conteúdo de informação

3. Descrição da interface com o sistema

Page 64: 1   engenharia de software

Especificação dos Requisitos (III)

III. Descrição Funcional 1. Divisão funcional em partições

2. Descrição funcional a. Narrativas b. Restrições/limitações c. Exigências de desempenho d. Restrições de projeto e. Diagramas de apoio

3. Descrição do controle a. Especificação do controle b. Restrições de projeto

Page 65: 1   engenharia de software

Especificação dos Requisitos (IV)

IV. Descrição Comportamental

1. Estados do Sistema

2. Eventos e ações

V. Critérios de Validação

1. Limites de desempenho

2. Classes de testes

3. Reação esperada do software

4. Considerações especiais

VI. Bibliografia

VII Apêndice

Page 66: 1   engenharia de software

Atividades de Projeto

Architecturaldesign

Abstractspecification

Interfacedesign

Componentdesign

Datastructuredesign

Algorithmdesign

Systemarchitecture

Softwarespecification

Interfacespecification

Componentspecification

Datastructure

specification

Algorithmspecification

Requirementsspecification

Design activities

Design products

Page 67: 1   engenharia de software

O processo do Projeto

Partitionrequirements

Identifysub-systems

Assign requirementsto sub-systems

Specify sub-systemfunctionality

Define sub-systeminterfaces

Page 68: 1   engenharia de software

Abordagens para o Projeto

• Existem diversas abordagens para o projeto de um sistema.

• Geralmente é feito de maneira gráfica

• Modelos possíveis:

– Fluxo de Dados

– Entidade-relacionamento

– Estruturais

– Orientados a Objetos

Page 69: 1   engenharia de software

Fim do trabalho do analista!!!!!!!!!!

Page 70: 1   engenharia de software

HORA DO DESABAFO!!!

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

Page 71: 1   engenharia de software

Fim da Aula, Obrigado e Boa Noite