Engenharia de Software Motivação e Introdução Software O que é Software? Instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados [Pressman] APLICAÇÕES Básico Tempo Real Comercial Eng e Científico Embutido Pessoal Inteligência Artificia Estruturas de dados que permitem a manipulação das informações [Pressman] A evolução do Software? Coadjuvante Principal 1
Evolução do Software Revolução Industrial 1a., 2a. e 3a. Ondas Têxtil, Carvão e Ferro Aço e motor vapor e motor combustão Eletricidade, ENIAC e transistor Sociedade Industrial Sociedade da Informação Sociedade Industrial Sociedade da Informação quanto menos maior valor quanto mais maior valor UNIX, MAC e Windows Software: Novo Contexto Desafios de Sistemas Informatizados? hardware de baixo custo e bom desempenho DIFERENCIAL Funcionalidade Inteligência User-Friendlyness Compatibilidade Suporte Completeza de informação melhor qualidade de soluções baseadas em software Software na linha da evolução Ver gráfico 2
Características Principais Desenvolvido ou projetado, não manufaturado Custos no trabalho de engenharia Fábrica de software Software não desgasta Manutenção de software Manutenção de hardware Feito sob medida e não montado por componentes Orientação a Objetos, Reusabilidade e Padrões Crise do Software (~1970) 30 anos de duração; Problemas de execução Prazos extrapolados Custos inesperados Insatisfação de usuários Crise ou Aflição Crônica Falhas não se restringem ao software que não funcionam Desenvolvimento, testes, manutenção, equipamento, etc... Documentação Interação do grupo Experiência Pouca interação com o usuário 3
Exemplos Therac-25 Equipamento de Radioterapia Adaptado da antecessora Therac-6 6 mortes por overdose de radiação Testes Integrados Documentação Denver International Airport Falha geral no Sistema Automático de Transporte de Bagagem Prejuízo de US$360milhões US$86milhões para Mnutenção do sistema 100mil pass/dia 1.200 voos/semana 94 portões de embarque 6 pistas de pouso e decolagem Exemplos Ariane 5 Projeto da Agencia Espacial Europeia 4/Jun/96: 40 segundos 10 anos US$8Bilhões 6toneladas de carga O foguete detonou sua carga explosiva de autodestruição e explodiu no ar Forças aerodinâmicas Perda de controle Sistema principal e de Backup capotaram Run-time error, out of range, over-flow 4
Engenharia de Software Por que demora tanto para concluir um projeto? Prazos Por que custa tanto? Custos Por que não descobrimos erros antes de entregar o software? Falhas de execução Por que não conseguimos acompanhar progresso durante desenvolvimento do software? Processo dinâmico Causas Óbvias Não dedicamos tempo para coletar dados sobre o desenvolvimento do software Comunicação durante o desenvolvimento muito fraca Estimativas a Olho Sem Interação durante o desenvolvimento Testes sistemáticos e de Integração Falta de testes completos Outras Background gerencial Pouco treinamento Falta de investimento em ES Métodos de automação 5
Engenharia de Software 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 Métodos Ferramentas Procedimentos Conclusões Software é a chave para o sucesso do Sistema de Informação Dúvidas quanto a eficácia dos métodos Já falhou uma vez! Sempre tentamos adotar o MDS Software não é hardware Software não é fácil Software mata Precisamos de ajuda Gastos com acompanhamento Difíceis de Implantar Não é estátia Certificados para Empresas de desenvolvimento de Software (CMM, ISO,) 6