Prévia do material em texto
28/02/2025 1 Introdução à Engenharia de Software 2 • Engenharia de Software – ICET – Instituto de Ciências Exatas e Tecnologia. – carga: 04 horas-aula semanais; – conceituação de Engenharia de Software, Crise do Software. Modelos iterativos e incrementais, gerenciamento de projetos de software. Processo e Produto de Software. • Avaliação: – Provas, trabalhos e listas. Atenção: buscar na secretaria o código e detalhamento do curso!! Informações sobre o Curso 3 NOGUEIRA, Marcelo Engenharia de Software: um Framework Ciência Moderna, 2009 Bibliografia Básica PRESSMAN, R. S. Engenharia de Software Makron Books, 2006 SOMMERVILLE, Ian. Engenharia de Software Prentice Hall, 2007 https://plataforma.bvirtual.com.br/Leitor/Publicacao/276/pdf/3 1 2 3 28/02/2025 2 4 • MAGELA, Rogério - Engenharia de Software Aplicada – Ed. Alta Books, 2006. • PAULA FILHO, Wilson de Pádua - Engenharia de Software – Ed. LTC, 2009. • PFLEEGER, Shari Lawrence. - Engenharia de Software - Ed. Prentice Hall Brasil, 2004. • ENGHOLM JUNIOR, Hélio. Engenharia de Software na Prática. Ed. Novatec, 2010. • SCHACH, Stephenr. Engenharia de Software. Ed. Mcgraw Hill – Artmed, 2008. Bibliografia Complementar 5 • Paulo Freitas • paulo.freitas@docente.unip.br • representante(s) de turma: –Ação enviar e-mail de contato ao professor Contato 6 • Engenharia: – aplicação sistemática de conhecimentos científicos na criação e construção de soluções com boa relação custo / benefício. • Software: – instruções / programas de computador que quando executados produzem o resultado, função e desempenho desejados. Definições 4 5 6 28/02/2025 3 7 • Engenharia de Software: – aplicação de abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software. IEEE, STD 610 – 1990 – estabelecimento e uso de sólidos princípios de engenharia na obtenção de um software confiável, eficiente e economicamente viável. Fritz Bauer - 1969 Definições 8 • Métodos: descrições de como proceder frente a um amplo conjunto de atividades. – Planejamento – Análise de requisitos – Concepção e projeto – Implementação – Codificação – Testes e manutenção. Engenharia 9 • Técnica: procedimentos definidos no âmbito de uma etapa de um método. Definem uma sequência de atividades, produtos a serem entregues, controles que asseguram qualidade, etc. • Ferramentas: apoio aos métodos e técnicas Engenharia 7 8 9 28/02/2025 4 10 • Diferenças do software em relação a outros itens construídos pelo homem: – é imaterial; – não sofre desgaste, não é um produto no sentido usual da palavra; – custos relacionados ao desenvolvimento apenas, não há “matéria prima”; – abstrato e parcial. Para reduzir a complexidade, modelo de apenas uma parte da realidade. – imperceptível. Percebido por seu processo, interface, resultados, etc. Software 11 • Objetivos: – aplicar, modelos, formalismos / técnicas e ferramentas da ciência da computação (e áreas afins) na produção / desenvolvimento sistemático de software. – aplicar métodos, técnicas e ferramentas para o gerenciamento do processo de produção (custos, prazos, equipe, qualidade, etc.) – produzir documentação formal do produto, do processo, dos critérios de qualidade e manuais. Engenharia de Software 12 • Origem: reunião em Garmisch (Alemanha – Out/68). Discussão sobre problemas no desenvolvimento de Software. http://homepages.cs.ncl.ac.uk/brian.randell/NATO/index.html • Motivação: – baixa qualidade do SW; – sem atender requisitos; – “estouro” de orçamento e tempo previsto; – vez por outra “ingerenciáveis” Engenharia de Software 10 11 12 28/02/2025 5 13 “[The major cause of the software crisis is] that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem” Edsger Dijkstra The Humble Programmer Engenharia de Software 14 15 • Projeto da Agência Espacial Européia; • Objetivo: supremacia européia no espaço; • 10 anos de pesquisa e desenvolvimento; • Custo estimado em US$ 8 Bilhões; • Capacidade 6 toneladas; • Vôo inaugural em 04/Jun/96; Exemplo: Ariane 5 13 14 15 28/02/2025 6 16 • Explosão 40 seg. após decolagem; • Destruição do foguete e carga (avaliada em US$ 500 Milhões) • Foguete detonou cargas explosivas de autodestruição; • Forças aerodinâmicas estavam destruindo o foguete, tinha perdido o controle de direção (altitude); Exemplo: Ariane 5 (cont.) 17 • Motivo: computadores principal e back-up deram shut-down ao mesmo tempo!! • Ocorreu um “run-time error”; • Programa de conversão de ponto flutuante para inteiro (de 16 bits) recebeu como entrada um valor que estava fora da faixa permitida. Resultado da conversão não era mais necessário após a decolagem. Exemplo: Ariane 5 (cont.) 18 • Primeira Geração (início em 1950): – sob medida (customizado) e distribuição limitada; – processamento em Batch; – desenvolvimento sem técnicas de engenharia (programação arte); – programador / usuário, sistemas sem documentação; – grande evolução da ciência, pouca da técnica. Evolução do Software 16 17 18 28/02/2025 7 19 • Segunda Geração (após 1965): – melhoria das técnicas de interação com usuário; – sistema em tempo real / multiusuário; – gerenciamento de banco de dados; – surgimento de pacotes de software e softwarehouses; – evolução das técnicas de manutenção. Evolução do Software 20 • Terceira Geração (após 1980): – sistemas distribuídos; – acesso instantâneo a bancos de dados; – sistemas especialistas (inteligência embutida); – software embarcado, integração com outras tecnologias; – crescimento das empresas de software, diferenciação; – hardware de “baixo custo”. Evolução do Software 21 • Quarta Geração (após 1990): – redes neurais e algoritmos genéricos (reconhecimento de padrões e aprendizado); – linguagens específicas a um domínio (DSL); – computação paralela. Evolução do Software 19 20 21 28/02/2025 8 22 Evolução do Software 23 • Custo SW suplantou o de HW • SW visto como fator de diferenciação Evolução do Software 24 Características de Software • Índice de falhas (teórico): 22 23 24 28/02/2025 9 25 • Índice de falhas (real): Características de Software 26 • Aplicações: – software básico: programas escritos para apoiar outros – compiladores, drivers, etc.; – software de tempo real: análise e controle de eventos (mundo real) – equipamentos médicos; – software comercial: operação e administração – folha, contas a pagar, estoque, etc.; – software científico e de engenharia: caracterizado por algoritmos numéricos – manufatura, astronomia, fadiga mecânica, etc.; Software 27 • Aplicações (cont.): – software embutido: residente em memória (read only) – eletrodomésticos, controle, etc.; – software PC: pacotes – planilhas, editor de texto, etc.; – software WEB: instruções executáveis por browser – CGI, HTML, Java, Perl, etc.; – software I.A.: algoritmos não numéricos, solução de problemas de alta complexidade não favoráveis à análise direta – redes neurais, jogos, sistemas especialistas, etc. Software 25 26 27 28/02/2025 10 28 • Qualidade: TQM e filosofias similares produzem a cultura necessária ao desenvolvimento maduro Software 29 • Processo: framework de atividades e resultados associados que geram um produto. Define conjunto de áreas chave de processo (KPA). Software 30 • Método: conjunto de tarefas de desenvolvimento. Inclui análise de requisitos, projeto, implementação, testes e manutenção – como fazer. Software 28 29 30 28/02/2025 11 31 • Ferramentas: suporte (semi-)automatizado ao desenvolvimento. Instrumento apropriado ao modelo. Software 32 • Vantagem x Desconfiança: – criar / adquirir novo software?• “Crise” do final da década de 60: – baixa qualidade / suspeita; – Insatisfação; – critérios imaturos. • Cultura de desenvolvimento: – ênfase em escrever / improvisar código; – soluções imediatas; – validação e verificação são ignorados Qualidade: Herança 33 • Paradigmas clássicos: só é possível avaliar quando o produto está pronto. • Falta de acompanhamento estatístico. • Baixa reutilização. • Ferramentas insuficientes / inapropriadas (ex.: CASE). • Estimativas incorretas (T, $, PW) Qualidade: Herança 31 32 33 28/02/2025 12 34 • Melhorias, ainda com erros de planejamento. • Maiores exigências, menos recursos. • Otimização mandatória. • Opção: Engenharia de Software. Qualidade: Atual 35 • Modelos clássicos: – seqüencial linear (cascata) – Rapid Aplication Development (RAD) – Evolucionários • Prototipação (descartáveis) • Incremental (exploratório) • Expiral (exploratório) Processo • PDCA: – Plan: planejamento – Do: ação / implementação – Check: verificação / validação – Act: correção Processo 34 35 36 28/02/2025 13 37 Descrição geral dos objetivos é suficiente para desenvolver o programa x Visão incompleta / incorreta dos requisitos é a principal causa de fracasso no desenvolvimento de software Mitos x Realidade 38 Caso o cronograma atrase, basta aumentar a equipe de desenvolvimento x Maior atraso devido à necessidade de treinamento e complexidade da comunicação Mitos x Realidade 39 Meta do desenvolvimento é um programa que funcione x Documentação e medidas históricas são a base de desenvolvimento bem sucedidos Mitos x Realidade 37 38 39 28/02/2025 14 40 • Engenharia de Software: utilização dos princípios de engenharia na obtenção software. • Não esquecer os aspectos históricos que nos trouxeram até este ponto. • Qualidade: base de todo o trabalho. • PDCA: filosofia básica de trabalho. Pontos Chave 41 40 41