1 / 54

Professor Mário Dantas

Engenharia de Software. Professor Mário Dantas. Ementa da Disciplina. Processos Existentes; Ciclo de vida de desenvolvimento de software; Engenharia de Requisitos; Princípios e conceitos de análise e projeto; Métricas de software; Qualidade de software;

kirti
Download Presentation

Professor Mário Dantas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Engenharia de Software Professor Mário Dantas

  2. Ementa da Disciplina • Processos Existentes; • Ciclo de vida de desenvolvimento de software; • Engenharia de Requisitos; • Princípios e conceitos de análise e projeto; • Métricas de software; • Qualidade de software; • Verificação, Validação e Teste de software; • Gerência de Configuração; • Ferramentas Case; • Ambientes de desenvolvimento de software; • Padrões de desenvolvimento; • Reuso; • Engenharia reversa e Reengenharia.

  3. Bibliografia Básica • GUSTAFSON, D. Teoria e Problemas de Engenharia de Software, Bookman, 2003 (Coleção Schaum). • PAULA FILHO, W. de P. Engenharia de Software – Fundamentos, Métodos e Padrões. LTC, 2001 • PFLEEGER, Shari Lawrence. Engenharia de Software - Teoria e Prática, 2ª Edição, Makron Books, 2004. • PRESSMAN, R. S. Engenharia de Software, 6ª Edição, São Paulo: McGraw-Hill 2006. • SOMMERVILLE, Ian. Engenharia de Software, 6ª Edição, São Paulo: Addison-Wesley, 2003.

  4. Bibliografia Complementar • CARVALHO, A.M.B.R. e CHIOSSI, T.C.S.Uma Introdução a Engenharia de Software. São Paulo: Editora da Unicamp, 2001. • McCONNELL, S. Code Complete: um Guia Completo para Construção de Software. Porto Alegre: Bookman, 2000. • REZENDE, D. A. Engenharia de Software e Sistemas de Informações. Brasport, 1999. • VAZQUEZ, C. E., SIMÕES, G. S., ALBERT, R. M. Análise de Pontos de Função. 1 ed., Érica, 2003.

  5. Histórico • Até o iníciodadécada de 60: • O custo de hardware era o fatormaisimportantenaautomatização de tarefas; • Software era uma arte: inexistência de sistematizaçãonasuaconstrução e documentação; • Modelos e documentaçãotécnicaresidiamsomentenacabeça do desenvolvedor.

  6. Histórico • Entre 1965 a 1975: • Desenvolvimento dos primeiros SGBD's; • Surgimento do conceito de software comoproduto; • Surgimento das empresasdesenvolvedoras de software; • Manutençãotorna-se tarefaperigosa: CRISE DO SOFTWARE.

  7. Histórico • A partirdaí... • Disseminação das redes; • Queda no preço do hardware; • Aumento no poder de processamento e armazenamento dos computadores; • Surgimentoda Internet; • E muitomais...

  8. Histórico • Habilidadeemconstruir software deixa a desejaremrelaçãoaopotencial do hardware; • A construção de software não é rápida o suficienteparaatender as necessidades do mercado; • A sociedadedependecadavezmais de software confiável; • O esforçoparaconstruir software confiável e de qualidade é muitogrande; • O suporteaosprogramasexistentes é pobre e de recursosinadequados.

  9. Relatório do Caos • Relatóriodo Standish Group • Projetos construídos dentro do orçamento e no prazo: 16,2%; • Projetos cancelados: 31,1%; • Projetos concluídos atrasados ou fora do orçamento: 52,7%; A Crise do Software

  10. A “crise do software” é caracterizada pela incapacidade da indústria de software de atender a demanda de mercado em entregar produtos dentro dos custos, prazos, qualidade e além de tudo, atendendo aos requisitos contratados. • Crise do Software

  11. Falhas em Projetos de Software • Em 1992 e 1993, mais de 60% dos softwares nos EUA estavam atrasados e mais da metade ultrapassa em 50% o prazo planejado. • Em 1999, 37% dos projetos foram entregues no prazo, dos 63% que atrasaram, 42% ultrapassaram o orçamento.

  12. Desenvolvimento de Software • Por que é tão difícil desenvolver software? • ProcessoJovem;

  13. Conceitos iniciais • Informática: Ciência que tem como objetivo o tratamento da informação através do uso de equipamentos e procedimentos da área de processamento de dados; • Ciência: Conjunto organizado de conhecimentos relativos a determinado objeto (assunto ou tema), especialmente os obtidos mediante a observação, a experiência dos fatos e um métodos próprio;

  14. Conceitos iniciais • Processamento de Dados: Tratamento dos dados por meio de máquinas, com o fim de obter como resultado informação a partir dos dados; • Engenharia: Arte de aplicar conhecimentos científicos e empíricos e certas habilitações específicas à criação de estruturas, dispositivos e processos que se utilizam para converter recursos (hardware e software configurados e programados) em formas adequadas ao atendimento das necessidades humanas.

  15. Engenharia de Software “É a aplicação de uma abordagem sistemática, disciplinada e mensurável ao desenvolvimento, à operação e à manutenção de software” IEEE (Institute of Eletric and Eletronic Engineers)

  16. Objetivos Gerais • Qualidade (adequação às necessidades) • Produtividade (agilidade para construção e manutenção) • Controle (qualidade, prazos e custos)

  17. Cenário • Gasta-se mais na manutenção do software, mas ainda documenta-se pouco (e mal) os produtos e projetos de software. • 55% dos defeitos são inseridos durante a análise de requisitos, mas apenas 18% desses defeitos são localizados nessa fase.

  18. Comparativo de Indicadores

  19. Outros Motivadores • As economias de todos os países (e organizações), em maior ou menor grau, são dependentes de software; • Mais e mais sistemas são controlados por software (“computação invisível”); • As despesas com software representam uma fração significativa do PIB dos países e mundial.

  20. Custo de Software • Geralmente domina o custo total dos sistemas: o custo de software em um PC geralmente é maior que o custo de hardware. • Custa mais para ser mantido do que para ser desenvolvido. • Quando o ciclo de vida é longo, o custo de manutenção é muitas vezes superior ao custo de desenvolvimento.

  21. Custo de Software A Engenharia de Software preocupa-se com o custo efetivo do desenvolvimento, operação e da manutenção de Software.

  22. Software • Processo jovem; • Quando falham: consertados; • Falhas ignoradas, amenizadas, racionalizadas; • Erros continuam sendo cometidos; • Problemas de escopo; • Solicitações de mudanças pelo contratante; • Concluídos fora dos prazos e custos; • Quando entregues não atendem a expectativas do cliente.

  23. Questões freqüentes sobre Engenharia de Software • O que é Software? • O que é Engenharia de Software? • Qual é a diferença entre Engenharia de Software e Ciência da Computação? • Qual é a diferença entre Engenharia de Software e Engenharia de Sistemas? • O que é Processo de Software? • O que é Modelo de Processo de Software? • O que são Métodos da Engenharia de Software? • Quais são os Custos da Engenharia de Software? • O que é CASE (Computer-Aided Software Engineering)? • Quais os atributos de um bom software? • Quais os desafios chave enfrentados pela Engenharia de Software?

  24. O que é software? • Programas de computador e toda a documentação a eles associada (diferente de programa isolado para realização de testes computacionais e sem orientação sistêmica). • Produtos de software podem ser: • Desenvolvidos para um cliente em particular (personalizados) • Desenvolvidos para o mercado em geral (genéricos) • Oferecidos na forma de serviços

  25. Características • O software é desenvolvido e passa por um processo de engenharia; • Software não “se desgasta”; • Os produtos de software podem ser desenvolvidos para um cliente específico ou para um mercado geral; • A maior parte dos softwares continua a ser construída sob encomenda.

  26. Tipos • Software de aplicação • Software científico • Software embutido • Software para linhas de produto • Aplicações Web • Computação ubíqua • Software aberto

  27. O que é Engenharia de Software? • É a engenharia que se ocupa dos aspectos da produção e da manutenção de software. • Produz as especificações para a criação dos programas que compõem o software. • Tem engenheiros de software como protagonistas. • Os engenheiros de software devem adotar uma abordagem sistemática e organizada ao seu trabalho e devem usar ferramentas e técnicas apropriadas, dependendo do problema a ser resolvido, das restrições e dos recursos disponíveis (premissas).

  28. Qual é a diferença entre Engenharia deSoftware e Ciência da Computação? • Ciência da Computação se ocupa da teoria e dos fundamentos (algoritmos, estruturas de dados, etc.), tendo base abstrata; • Engenharia de Software se ocupa das práticas para desenvolver e entregar software de qualidade, valendo-se de conhecimentos científicos e empíricos e da aplicações de habilidades específicas. • As teorias da Ciência da Computação são insuficientes para atuar como suporte completo à Engenharia de Software. • São complementares, pois a segunda fornece infraestrutura de software para que a primeira se ocupe da solução de problemas complexos de alto nível que requerem uma solução baseada em software.

  29. Qual é a diferença entre Engenharia de Software e Engenharia de Sistemas? • Engenharia de Sistemas se ocupa de todos os aspectos do desenvolvimento de sistemas (na disciplina em estudo, os sistemas baseados em computadores), incluindo hardware, software, peoplewaree processos de negócio. • Engenheiros de Sistemas cuidam da especificação, desenho arquitetônico, integração e desenvolvimento de sistemas complexos. • A Engenharia de Sistemas é anterior a Engenharia de Software e, na maioria dos casos, essencial ao sucesso desta. Conhecimento de Ciência da Computação é essencial para os engenheiros de software

  30. O que é processo (metodologia de desenvolvimento) de software? • É um conjunto de atividades cujo objetivo é desenvolver e/ou evoluir um produto de software. • Atividades que fazem parte de todos os processos (de desenvolvimento) de software: • Especificação – o que o sistema deve fazer e quais as suas restrições (requisitos funcionais e não-funcionais). • Construção – produção de um software. • Validação – verificar que o software é o que o cliente deseja. • Evolução – modificar o software em resposta às novas demandas. • Define o ciclo de vida (fases) de um software, usando modelos de processos de software e métodos (paradigmas). • Trata-se da metodologia para desenvolver software. • É uma abstração que se concretiza em projetos de software.

  31. O que é um modelo de processo de software? • Uma representação simplificada e abstrata de um processo de software, que pode ser apresentada a partir de perspectivas. • Exemplos de perspectivas (visões) de processo são: • Workflow (fluxo de trabalho) – seqüência de atividades • Data-flow (fluxo de dados) – fluxo de informações • Role/Action (papeis e ações) – quem faz o quê • Exemplos de Modelos de Processos Abstratos são: • Cascata • Evolucionário • Iterativo (Espiral, Incremental) • Integração a partir de componentes reutilizáveis • Prototipagem Evolutiva (Metodologias Ágeis) • Entrega Evolutiva (Cascata + Prototipagem Evolutiva)

  32. O que são métodos de engenharia de software? • Descrevem modelos, gráficos, diagramas, notações, regras, restrições e práticas de desenho (Notação) • Orientam o processo, recomendando práticas mais adequadas e atividades a serem seguidas • Os métodos podem ser: • Estruturados • Orientados a Dados • Orientados a Objetos • Baseados em Protótipos

  33. Quais os custos da Engenharia de Software? • Grande parte dos custos do processo de software estão concentrados na engenharia (entendimento do problema, desenho e arquitetura da solução e especificação dos programas). • Os custos variam em função do tipo de sistema que está sendo desenvolvido, dos requisitos (funcionais) e dos requisitos de performance e nível de disponibilidade (requisitos não funcionais). • Os custos de distribuição dependem do modelo de processo de desenvolvimento usado (complexidade da gerência de configuração).

  34. Quais os custos da Engenharia de Software? • O processo de engenharia de software em si, assim como qualquer processo de gestão e planejamento, tem um custo e é importante que os stakeholders estejam a par deles. • É papel do engenheiro de software demonstrar a relação entre os custos incorridos e os benefícios auferidos, com base em fatos concretos.

  35. O que é CASE (Computer-Aided Software Engineering)? • Sistemas de Software que servem para dar suporte automatizado às atividades do processo. Ferramentas CASE devem ser usadas. • Upper-CASE • Ferramentas para suportar as atividades desde o início do processo, incluindo requisitos e desenho (Judy, DB Designer, Power Design, Rational Rose). • Lower-CASE • Ferramentas para suportar as atividades finais como programação, depuração e teste de programas (Netbeans, Eclipse, Ant, JUnit).

  36. Quais os atributos de um bom software? • O software deve fornecer as funcionalidades requeridas e atender aos requisitos não funcionais de performance, segurança, confiabilidade, usabilidade, manutenibilidade, entre outros. • Manutenibilidade • Deve poder ser alterado para atender as mudanças de necessidades. • Segurança e Confiabilidade • O sistema do qual faz parte deve ser confiável e seguro física e logicamente. • Eficiência • Não deve desperdiçar recursos do sistema. • Usabilidade e Acessibilidade • Deve ser de fácil utilização para os usuários para os quais foi desenhado e proporcionar acesso universal.

  37. Quais os grandes desafios da engenharia de software? • Lidar com sistemas legados, com grande diversidade de tecnologias, menores tempos de entrega e manutenção. • Sistemas Legados • Antigos, mas ainda úteis, são os sistemas que devem ser mantidos e aprimorados • Heterogeneidade • Os sistemas são distribuídos para várias plataformas e incluem uma composição de hardware e software básico. • Tempo • Existe forte e crescente pressão para uma entrega mais rápida, quase sempre, com clientes subestimando a complexidade. • Manutenção • Os reparos em software são geralmente mais complicados que os reparos em hardware (faltam documentação e boas práticas).

  38. Síntese • Engenharia de Software ocupa-se de todos os aspectos da produção de software. • Produtos de software consistem de programas (desenvolvidos sob encomenda ou não) e toda a documentação associada. • Características essenciais são manutenibilidade, segurança e confiabilidade, eficiência e usabilidade.

  39. Síntese • O processo de software (ou metodologia) consiste em atividades que fazem parte do desenvolvimento de produtos de software. As atividades básicas são: especificação e análise, desenho e construção, teste e validação e evolução. Exemplos: RUP, PRAXIS, Processo Unificado, eXtreme Programming – XP, METODES.

  40. Síntese • Métodos são maneiras organizadas de produzir software. Incluem sugestões a serem seguidas, notações, regras e modelos, orientando o processo de desenvolvimento. Exemplos: Estruturado, Orientado a Dados, Orientado a Objetos, Baseado em Protótipos.

  41. Síntese • Ferramentas CASE são sistemas de software desenhados para dar suporte a atividades do processo de software como: organização de requisitos, produção e consistência de diagramas, rastreamento, codificação e teste de programas.

  42. Síntese • Os Engenheiros de Software devem ir além dos aspectos técnicos, pois, como nos ensina a Teoria Geral de Sistemas, os sistemas são abertos, influenciando e sendo influenciados pelo meio onde estão inseridos. • Software é elemento chave para o sucesso, mas software não é fácil e demanda gerenciamento de projeto eficaz...

  43. MITOS DA ENGENHARIA DE SOFTWARE

  44. Mitos da Gerência • Mito • “Já temos um livro que está cheio de padrões e procedimentos para elaborar o software. Isso não fornece ao meu pessoal tudo que ele precisa saber?”

  45. Mitos da Gerência • Realidade • O livro é usado? Os profissionais sabem da sua existência? Ele reflete as práticas modernas da ES? É Completo? Adaptável? Melhora o prazo de entrega mantendo o foco na qualidade?

  46. Mitos da Gerência • “Se nosatrasarmos no cronograma, podemosadicionarmaisprogramadores e ficaremdia?” • Realidade • “Adicionarpessoas a um projeto de software atrasadoatrasa-o aindamais.”

  47. Mitos da Gerência • “Se eu decidir terceirizar um projeto de software vou poder relaxar e deixar que aquela firma o elabore?” • Realidade • Se uma empresa não sabe como gerir e controlar projetos de software internamente, certamente terá problemas quando terceirizar esses projetos.

  48. Mitos do Cliente • “O estabelecimento geral dos objetivos é suficiente para iniciar a escrita de programas – podemos fornecer os detalhes posteriormente?” • Realidade • Uma descrição formal e detalhada do domínio da informação, da função, do comportamento, do desempenho, das interfaces, das restrições de projeto e dos critérios de validação é ESSENCIAL.

  49. Mitos da Gerência • “Os requisitos de projeto mudam continuamente, mas as mudanças podem ser facilmente acomodadas porque o software é flexível.” • Realidade • O impacto da mudança varia com a época em que é introduzida.

More Related