ENGENHARIA DE SOFTWARE José Manuel de Sacadura Rocha [email protected] http://unigalera.vila.bol.com.br O que é um Sistema? É uma série integrada de partes com uma meta claramente definida. Carro: É um sistema cuja meta/objetivo é fornecer transporte. Todavia, as partes do sistema são interdependentes. http://unigalera.vila.bol.com.br Sistemas • Conjunto de processos, relacionados e coordenados de forma a produzirem um bem (produto ou serviço); • Processo: conjunto de atividades, coordenadas entre si, e que formam uma estrutura organizada; Sistemas Automatizados Software Hardware Usuários SISTEMA Dados Procedimentos http://unigalera.vila.bol.com.br Visão de Gestão de Sistemas Conjunto de entidades interrelacionadas que, através de instruções e procedimentos (processos) numa seqüência lógica definida, produzem resultados, utilizando determinados recursos (hardware, software, tecnologia de comunicação, depósitos de dados e RH). Sistemas apresentam características específicas comuns, tais como objetivo, totalidade, tendência à deteriorização, adaptabilidade ao meio e reciprocidade funcional. http://unigalera.vila.bol.com.br Crise de Software Crise de Tecnologia - hardware caminha mais rápido que os sistemas e que o próprio software. Crise de Oferta - demanda é maior que a capacidade de desenvolvimento de novos sistemas e softwares. Crise de manutenção - mau projetado - principalmente nas fases iniciais e recursos escassos não permitem permanente atualização. Problemas Por que os sistemas não ficam prontos rapidamente ? Por que os custos de desenvolvimento são altos ? Por que erros não são detectados ? Por que é difícil medir o progresso durante o desenvolvimento ? http://unigalera.vila.bol.com.br Softwares não desgastam! Hardwares sim! 120 100 Desgaste 80 60 40 Taxa de falhas 20 (hardware) 0 1 3 5 7 9 11 13 15 17 19 21 23 25 27 Tempo http://unigalera.vila.bol.com.br Ciclo de Vida de Software 120 100 80 60 40 20 0 Curva idealizada Curva Real Mudança 1 4 7 10 13 16 19 22 25 28 Softwares deterioram!! http://unigalera.vila.bol.com.br Engenharia de Software Estabelece o uso de princípios sólidos de gestão, com o intuito de obter , economicamente, softwares que sejam confiáveis e funcionem eficientemente em ambientes reais. Métodos Ferramentas Produtividade Pessoas http://unigalera.vila.bol.com.br Componentes de Desenvolvimento de Softwares Enfoque de Engenharia Recursos Humanos Tecnologia Enfoque de Gestão Processos http://unigalera.vila.bol.com.br Ciclo de Desenvolvimento de Softwares Modelo de Cascata Engenharia de Software Análise de Sistemas Projeto Codificaçào Teste Manutenção http://unigalera.vila.bol.com.br Prototipação Modelo da interface de usuário (em papel ou tela) Implementação de algoritmos Implementação de parte das funções Fim Início Coleta e refinamento dos requisitos Projeto Rápido Engenharia do Produto Construção do Protótipo Refinamento do Produto Avaliação do Protótipo pelo Cliente http://unigalera.vila.bol.com.br Modelo Espiral Levantamento/Planejamento dos riscos Análise e Projeto Coleta inicial dos requisitos e planejamento do projeto Desenho Lógico 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 Avaliação do cliente Análise do cliente Codificação/Prototipação http://unigalera.vila.bol.com.br Protótipo de sistema inicial Protótipo no nível seguinte