Prévia do material em texto
1 CInCIn--UFPEUFPE 11©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos Engenharia de SoftwareEngenharia de Software Introdução à Engenharia de Software CInCIn--UFPEUFPE 22©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos Tópicos CobertosTópicos Cobertos n Introdução à engenharia de software n Conceitos importantes sobre engenharia de software n Introdução ao conceito de software de qualidade n Introdução ao conceito de Ferramentas CASE 2 CInCIn--UFPEUFPE 33©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos n As economias de TODOS os países desenvolvidos são dependentes de software n Existem cada vez mais sistemas controlados por software n Os gastos com desenvolvimento de software representam uma fração significativa do PIB de muitos países ContextoContexto CInCIn--UFPEUFPE 44©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos ContextoContexto n O desenvolvimento de software é muitas vezes puramente artesanal; n As pessoas desenvolvendo sistemas erram constantemente nas suas estimativas de custo e tempo; n Vários sistemas contém muitos erros; n Consertar erros muitas vezes produz mais erros; n O tamanho dos sistemas cresce consideravelmente. 3 CInCIn--UFPEUFPE 55©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos n Custos de software geralmente domina o custo do sistema. n Software custa mais para manter do que para desenvolver! Para sistemas com vida longa, custos de manutenção podem ser várias vezes o custos de desenvolvimento. n Engenharia de software está envolvida com o desenvolvimento eficaz de software de qualidade. Custo do softwareCusto do software CInCIn--UFPEUFPE 66©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos O que é software?O que é software? n Programas de computador e documentação associada n Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral n Produtos de software podem ser: u Genéricos - desenvolvidos para serem vendidos para uma variedade de clientes diferentes u Customizados - desenvolvidos para um único cliente de acordo com sua especificação 4 CInCIn--UFPEUFPE 77©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos O que é engenharia de software?O que é engenharia de software? n Engenharia de software é uma disciplina que está envolvida com todos os aspectos da produção de software de qualidade a um custo aceitável. n Engenheiros de software devem adotar uma abordagem sistemática e organizada para seu trabalho e usar ferramentas e técnicas apropriadas dependendo do problema a ser solucionado, das restrições de desenvolvimento e dos recursos disponíveis. CInCIn--UFPEUFPE 88©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos Qual é a diferença entre a engenharia de software Qual é a diferença entre a engenharia de software e a ciência da computação?e a ciência da computação? n A ciência da computação inclui teoria e fundamentos; engenharia de software trata de aspectos práticos do desenvolvimento e da entrega de software n Teorias da ciência da computação são atualmente insuficientes para agir como um suporte completo para a engenharia de software, a qual está também relacionada com: uCiências Sociais (Direito, Sociologia, Psicologia, Ciência cognitiva) uEtnografia 5 CInCIn--UFPEUFPE 99©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos Qual é a diferença entre a engenharia de software Qual é a diferença entre a engenharia de software e a engenharia de sistema?e a engenharia de sistema? n Engenharia de sistema trata de todos os aspectos de desenvolvimento de sistemas baseados em computador, incluindo hardware, software e a engenharia de processo. Engenharia de software é parte desse processo. CInCIn--UFPEUFPE 1010©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos O que é um processo de software?O que é um processo de software? n Um conjunto de atividades cujo objetivo é o desenvolvimento ou a evolução do software n Algumas atividades genéricas em todos os processos de software: u Especificação - o que o sistema deve fazer e suas restrições de desenvolvimento u Desenvolvimento - produção do sistema de software u Validação - verifica se o software é o que o cliente deseja u Evolução - mudanças no software em resposta a demandas 6 CInCIn--UFPEUFPE 1111©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos O que é um modelo de processo de software?O que é um modelo de processo de software? n Uma representação simplificada de um processo de software, apresentada de uma perspectiva específica n Exemplos de perspectiva de processo são u Perspectiva de fluxo de trabalho (workflow) - seqüência de atividades u Perspectiva de fluxo de dados (data-flow) - fluxo de informação u Perspectiva de papel/ação (role/action) - quem faz o que CInCIn--UFPEUFPE 1212©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos Quais são os custos da engenharia de software?Quais são os custos da engenharia de software? n Aproximadamente 60% dos custos são de desenvolvimento, 40% são custos de teste. Para software customizados, custos de evolução normalmente excedem custos de desenvolvimento n Custos variam dependendo do tipo do sistema que está sendo desenvolvido e dos requisitos de qualidade do sistema, tais como performance e confiabilidade do sistema n Distribuição dos custos depende do modelo de desenvolvimento que é usado 7 CInCIn--UFPEUFPE 1313©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos O que são métodos de engenharia de software?O que são métodos de engenharia de software? n Abordagens estruturadas para desenvolvimento de software que incluem modelos de sistema, notações, regras, recomendações de projeto e orientações de processo n Modelos do sistema u Descrições de modelos gráficos que devem ser produzidos utilizando alguma notação n Regras u Restrições aplicadas aos modelos do sistema n Recomendações u Conselhos sobre um boa prática de projeto n Orientações de processo u Quais atividades seguir CInCIn--UFPEUFPE 1414©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos O que é um software de qualidade?O que é um software de qualidade? n O software que os requisitos solicitados pelo usuário. Deve ser fácil de manter, ter boa performance, ser confiável e fácil de usar n Atributos de qualidade u Manutenibilidade èO software deve evoluir para atender os requisitos que mudam u Dependibilidade èO software não deve causar prejuízo físico ou econômico no caso de uma falha u Eficiência èO software não deve desperdiçar os recursos do sistema u Usabilidade èO software deve ser fácil de usar pelos usuários para os quais ele foi projetado 8 CInCIn--UFPEUFPE 1515©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos O O que que é é CASECASE (Computer(Computer--Aided Software Aided Software Engineering)Engineering) n Sistemas de software que são planejados para fornecer suporte automatizado para atividades do processo de software. Sistemas CASE são normalmente usados para suportar um método n Upper-CASE u Ferramentas para suportar as atividades iniciais do processo: dos requisitos ao projeto n Lower-CASE u Ferramentas para suportar as atividades finais como programação, depuração (debugging), e teste CInCIn--UFPEUFPE 1616©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos Pontos principaisPontos principais n Engenharia de software é uma disciplina de engenharia que estáenvolvida com todos os aspectos da produção de software. n Produtos de software consistem de programas desenvolvidos e documentação associada. Atributos essenciais de qualidade do produto são manutenibilidade, dependibilidade, eficiência e usabilidade. n O processo de software consiste nas atividades que são envolvidas no desenvolvimento de produtos de software. Atividades básicas incluem especificação, desenvolvimento, validação e evolução de software. n Métodos são formas organizadas de produzir software. Eles incluem sugestões para o processo a ser seguido, as notações a serem usadas, regras que governam as descrições do sistema que são produzidas e diretrizes de projeto. 9 CInCIn--UFPEUFPE 1717©2001, ©2001, Jaelson Jaelson Castro e Alexandre VasconcelosCastro e Alexandre Vasconcelos Pontos principaisPontos principais n Ferramentas CASE são sistemas de software que são projetados para suportar as atividades rotineiras no processo de software, como edição de diagramas de projeto e verificação de consistência dos diagramas .