Title: Engenharia de Software
1Engenharia de Software
2IEEE Computer Society
- Aproximadamente 100.000 membros.
- Organização de suporte aos profissionais da
computação, provendo informação técnica, serviços
a comunidade e personalizados. - Fundada em 1946.
- A maior das 39 sociedades do IEEE.
- Dedicada ao avanço teórico, prático e aplicação
de computadores e tecnologia da informação. - Aproximadamente 40 dos membros vive e trabalha
fora dos EUA, fomentando a comunicação
internacional, a cooperação e a troca de
informação. - Tem um escritório central de serviços em Tokyo,
Japão um escritório de publicação em Los
Alamitos, California e a sede em Washington.
3The Guide to the SWEBOK
- Não é o conhecimento em si, mas uma sÃntese e uma
referência ao material disponÃvel em diversas
publicações que se complementam para formar o
corpo de conhecimento. - Descreve que parte do conhecimento é geralmente
aceita pela comunidade profissional. - Organiza o conhecimento.
- Provê acesso por tópicos ao conhecimento.
- Patrocinado por empresas como Rational (IBM),
SAP, Boeing, entre outras.
4Objetivos
- Promover uma visão consistente da engenharia de
software em todo o mundo (500 revisores de 42
paÃses na fase Stoneman, versão Trial, e 120
revisores de 21 paÃses na fase Ironman, versão
2004). - Definir as fronteiras de atuação da engenharia de
software e as áreas de interseção com outras
disciplinas como engenharia da computação,
ciência da computação, gestão de negócios,
matemática, gerenciamento de projetos, gestão da
qualidade, ergonomia (acessibilidade e
usabilidade) e engenharia de sistemas (SWEBOK,
capÃtulo 12).
5Objetivos (Continuação)
- Caracterizar o conteúdo da disciplina engenharia
de software, subdividindo-o hierarquicamente em
áreas de conhecimento (o Apêndice A descreve como
as AC devem ser organizadas). - Prover acesso por tópicos a base de conhecimento
da engenharia de software (material de referência
e matriz em cada AC). - Fornecer um alicerce para desenvolvimento do
currÃculo, certificação individual e
licenciamento de material (conhecimento
geralmente aceito aplica-se a maioria dos
projetos e das equipes pelo consenso e pela
efetividade).
6Uma Crise no horizonte
- A industria de Software tem tido uma crise que
a acompanha há quase 30 anos. - Problemas não se limitam ao software que não
funciona adequadamente, mas abrange - desenvolvimento, testes, manutenção, suprimento,
etc.
7Therac-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
- página 382 do Pfleeger.
8Denver 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
9Denver International Airport
- Problemas
- Erros no sistema automático de transporte de
bagagens - Atraso na abertura do aeroporto com custo total
estimado em US360 Milhões - 86 milhões para consertar o sistema.
10Ariane 5
11Ariane 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.
12Vôo inaugural em 4/junho/1996
13Resultado
- Explosão 40 segundos após a decolagem.
- Destruição do foguete e carga avaliada em US 500
milhões.
14O que aconteceu?
- 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). O que causou isso? - Os computadores principal e back-up deram
shut-down ao mesmo tempo
15O 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.
16Especificamente O que faltou?
- strict precondition 1
-
- Set."x"FLPT and Set."y"INT16
- and -32768 lt x lt 32767
-
- program code
- y int(x)
- postcondition
- Set."x"FLPT and Set."y"INT16 and yint(x)
17Ironia...
- O resultado desta conversão não era mais
necessário após a decolagem...
18Receita Federal dos Estados Unidos
- No começo da década de 80, a Receita Federal dos
Estados Unidos (IRS) contratou a empresa Sperry
Corporation para construir um sistema
automatizado de processamento de formulários de
impostos federais. De acordo com o jornal
americano Washington Post, o sistema se mostrou
inadequado à carga de trabalho, custou cerca de
duas vezes o esperado e deve ser logo
substituÃdo (Sawyer, 1985)
19(continuação)
- Em 1985, foi necessário adicionar US 90 milhões
aos US 103 milhões que já haviam sido pagos
pelos equipamentos da Sperry. Além disso o
problema acarretou o atraso das restituições da
IRS aos contribuintes, o que forçou a IRS a pagar
US 40,2 milhões em juros e US 23 milhões em
horas extras para os funcionários que tentaram
compensar o estrago.
20(continuação)
- Em 1996, a situação não havia melhorado.
- O jornal americano Los Angeles Times publicou,
em 29 de março daquele ano, que ainda não havia
nenhum plano para a modernização dos computadores
da IRS, somente um relatório com 6.000 páginas. - O congressista americano Jim Lighfoot chamou o
projeto de um fiasco de quatro bilhões de
dólares que está afundando por falta de
planejamento
21Quais 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.
22Importância do Planejamento
- Em 1994, uma pesquisa realizada pelo The Standish
Group demonstrava que nos Estados Unidos apenas
cerca de 19 do total de projetos de software
iniciados eram terminados com sucesso. - 52,2 dos projetos eram concluÃdos com atrasos e
acima dos orçamentos. - 31,1 eram cancelados.
23Perguntas que a 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?
24Causas ó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.
25Causas menos óbvias
- O Software é desenvolvido ou projetado por
engenharia, não manufaturado no sentido clássico. - Profissionais recebem pouco treinamento formal.
- Falta investimento (em ES).
- Falta métodos e automação.
26Mitos 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).
27Mitos do Software - do Cliente
- Uma declaração geral é suficiente para começar a
escrever programas. - Mudanças podem ser facilmente acomodadas em um
projeto.
28Mitos 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.
29Quanto mais tarde a detecção de um erro, mais
cara é a sua correção!
- Segundo Pfleeger, o custo para a correção de um
erro cometido em um projeto durante a etapa
inicial da análise é um décimo do custo para
corrigir um erro semelhante depois que o sistema
foi entregue ao cliente. - Metade dos custos de correção de defeitos
encontrados durante a fase de testes e manutenção
vem de erros cometidos no inÃcio de vida do
sistema.
30Sugestão para detecção de erros
- Muitos estudantes estão acostumados a desenvolver
e testar o seu próprio software - Seus testes podem ser menos efetivos do que
pensam - Fagan, estudou o modo como os defeitos têm sido
detectados ele descobriu que executar um
programa com dados de teste revela somente cerca
de um quinto dos defeitos cometidos durante o
desenvolvimento do sistema.
31Sugestão para detecção de erros(continuação)
- O processo de revisão, realizado por colegas que
mutuamente examinam e comentam o código e o
projeto que eles criam, revela quatro dos cinco
defeitos restantes (Fagan, 1986) - Então, a qualidade do software pode aumentar
consideravelmente somente com a revisão e dos
trabalhos pelos colegas.
32Qual tem sido o grau de sucesso dos sistemas
atuais?
- Pense como era a vida das pessoas antes dos
processadores de texto, das planilhas
eletrônicas, do correio eletrônico, da telefonia
sofisticada. - Os produtos de softwares têm apoiado avanços na
medicina, na agricultura, nos transportes, etc - Além de nos permitir realizar as coisas nunca
feitas antes, como microcirurgias, educação,
multimÃdia e robótica.