Engenharia de Software Módulo: 01 – Software e Engenharia de Software Prof.: Sérgio Guimarães Pinto – FAA - 2010 Software e Engenharia de Software • Importância do Software – Nas 3 primeiras décadas o desafio era desenvolver um hardware que reduzisse os custos de processamento e armazenamento de dados; – Na década de 1980, avanço da eletrônica: maior poder de processamento e baixo custo; – Na década de 1990, o software é o mecanismo que possibilita melhor utilização deste hardware. 2 Software e Engenharia de Software • O Papel Evolutivo do Software Os primeiros anos • Orientação batch • Distribuição limitada • Software customizado 1950 1960 A segunda era • Multiusuários • Tempo real • Banco de dados • Produto de software 1970 A terceira era • Sistemas distribuídos • Inteligência embutida • Hardware baixo custo • Impacto no consumo 1980 A quarta era • Sistemas desk-top poderosos • Tecnologia orientada a objeto • Sistemas especialistas • Computação Paralela 1990 2000 3 Software e Engenharia de Software • SOFTWARE 1. Instruções (programa de computador) que, quando executadas, produzem a função e o desempenho desejado; 2. Estruturas de dados que possibilitam que os programas manipulem adequadamente a informação; 3. Documentos que descrevem a operação e o uso dos programas 4 Software Características do Software – O software é desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico. – Software não se desgasta, ao contrário do hardware: Indice de falhas • Elevados índices de falhas "Desgaste" Tempo Curvas de Falhas Para o Hardware 5 Software Características do Software Continua na mesma taxa até a absolescência Indice de falhas • Tempo Curva de Falhas do Software (Idealizada) 6 Software Características do Software Indice de falhas • Curva real Mudanças Curva Idealizada Tempo Curva de Falhas Real Para o Software 7 Software • Características do Software – A maioria dos softwares é feita sob medida em vez de ser montada a partir de componentes existentes 8 Software • Componentes do Software – – – – – Reusabilidade Linguagem de máquina Linguagem montadas Linguagem de alto nível Linguagem de quarta geração ou não procedural 9 Software • Aplicações do Software – – – – – – – Básico Tempo Real Comercial Científico e de Engenharia Embutido Computador Pessoal Inteligência Artificial 10 Software: Uma Crise no horizonte • Problemas 1. Estimativas de prazos e de custos imprecisos; 2. Produtividade das pessoas não acompanham a demanda; 3. Qualidade é menos que adequada. • • • • Pouco tempo dedicado para coleta de dados Insatisfação do cliente depois do sistema concluído. Qualidade do software é suspeita; Dificuldade na manutenção. 11 Software: Uma Crise no horizonte • Causas – – – – Gerentes sem conhecimentos específicos Deficiência de comunicação Engenheiros de software pouco treinados Resistência a mudanças 12 Mitos do Software • Mitos Administrativos – Já temos um manual – Temos ferramentas de desenvolvimento de última geração – Podemos compensar o atraso com mais pessoas 13 Mitos do Software • Mitos do Cliente – Uma declaração geral é suficiente para começar o programa – Requisitos modificam-se porque o software é flexível 14 Mitos do Software • Mitos do Profissional – O trabalho estará completo quando acabar de escrever o programa; – Não tem como avaliar qualidade antes do término do programa; – Única coisa a ser entregue em um projeto bemsucedido é o programa funcionando. 15 Paradigmas da Engenharia de Software • Engenharia de software: Definição “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.” (Fritz Bauer) 16 Paradigmas da Engenharia de Software • O Ciclo de Vida Clássico Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutenção 17 Paradigmas da Engenharia de Software • Prototipação Início Coleta e refinamento dos requisitos Fim Projeto rápido Engenharia do protótipo C Refinamento do protótipo Construção do protótipo Avaliação do protótipo pelo cliente 18 Paradigmas da Engenharia de Software • O Modelo Espiral Planejamento Análise de riscos Coleta inicial dos requisitos e planejamento do projeto Análise dos riscos baseada nos requisitos iniciais Análise dos riscos baseada na reação do cliente Planejamento baseado nos comentários do cliente Decisão de prosseguir/não prosseguir Na direção de um Sistema concluído Avaliação do cliente Protótipo de software inicial Protótipo de nível seguinte Avaliação do cliente Engenharia Sistema construído pela engenharia 19 Paradigmas da Engenharia de Software • Técnicas de Quarta Geração Coleta de requisitos Estratégia de “projetos” Implementação usando 4GL Teste 20 Paradigmas da Engenharia de Software • Combinando Paradigmas ANÁLISE DE REQUISITOS OBTENÇÃO PRELIMINAR DOS REQUISITOS PROTOTIPAÇÃO 4GT MODELO ESPIRAL 4GT PROJETO PROTOTIPAÇÃO ENÉSIMA ITERAÇÃO MODELO ESPIRAL ENÉSIMA ITERAÇÃO CODIFICAÇÃO 4GT REALIZAÇÃO DE TESTES SISTEMA OPERACIONAL 21 MANUTENÇÃO Uma Visão Genérica da Engenharia de Software • O Quê – Análise do Sistema – Planejamento do Projeto de Software – Análise de Requisitos • O Como – Projeto de Software – Codificação – Realização de Testes dos Software • Mudanças – Correção – Adaptação – Melhoramento Funcional 22