A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Professor Mário Dantas E NGENHARIA DE S OFTWARE. Ementa da Disciplina  Processos Existentes;  Ciclo de vida de desenvolvimento de software;  Engenharia.

Apresentações semelhantes


Apresentação em tema: "Professor Mário Dantas E NGENHARIA DE S OFTWARE. Ementa da Disciplina  Processos Existentes;  Ciclo de vida de desenvolvimento de software;  Engenharia."— Transcrição da apresentação:

1 Professor Mário Dantas E NGENHARIA DE S OFTWARE

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. 2

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,  PRESSMAN, R. S. Engenharia de Software, 6ª Edição, São Paulo: McGraw-Hill  SOMMERVILLE, Ian. Engenharia de Software, 6ª Edição, São Paulo: Addison-Wesley,

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,  McCONNELL, S. Code Complete: um Guia Completo para Construção de Software. Porto Alegre: Bookman,  REZENDE, D. A. Engenharia de Software e Sistemas de Informações. Brasport,  VAZQUEZ, C. E., SIMÕES, G. S., ALBERT, R. M. Análise de Pontos de Função. 1 ed., Érica,

5

6  Até o início da década de 60:  O custo de hardware era o fator mais importante na automatização de tarefas;  Software era uma arte: inexistência de sistematização na sua construção e documentação;  Modelos e documentação técnica residiam somente na cabeça do desenvolvedor. Histórico 6

7  Entre 1965 a 1975:  Desenvolvimento dos primeiros SGBD's;  Surgimento do conceito de software como produto;  Surgimento das empresas desenvolvedoras de software;  Manutenção torna-se tarefa perigosa: CRISE DO SOFTWARE. Histórico 7

8  A partir daí...  Disseminação das redes;  Queda no preço do hardware;  Aumento no poder de processamento e armazenamento dos computadores;  Surgimento da Internet;  E muito mais... Histórico 8

9  Habilidade em construir software deixa a desejar em relação ao potencial do hardware;  A construção de software não é rápida o suficiente para atender as necessidades do mercado;  A sociedade depende cada vez mais de software confiável;  O esforço para construir software confiável e de qualidade é muito grande;  O suporte aos programas existentes é pobre e de recursos inadequados. Histórico 9

10  Relatório do 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%; Relatório do Caos 10

11 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

12  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. Falhas em Projetos de Software 12

13  Por que é tão difícil desenvolver software?  Processo Jovem; Desenvolvimento de Software 13

14 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

15 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

16 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

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

18 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

19 Comparativo de Indicadores 19

20 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

21 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

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

23  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. Software 23

24 Questões freqüentes sobre Engenharia de Software 1. O que é Software? 2. O que é Engenharia de Software? 3. Qual é a diferença entre Engenharia de Software e Ciência da Computação? 4. Qual é a diferença entre Engenharia de Software e Engenharia de Sistemas? 5. O que é Processo de Software? 6. O que é Modelo de Processo de Software? 7. O que são Métodos da Engenharia de Software? 8. Quais são os Custos da Engenharia de Software? 9. O que é CASE (Computer-Aided Software Engineering)? 10. Quais os atributos de um bom software? 11. Quais os desafios chave enfrentados pela Engenharia de Software? 24

25 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

26  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. Características 26

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

28 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

29 Qual é a diferença entre Engenharia de Software 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

30 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, peopleware e 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

31 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

32 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

33 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

34 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

35 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

36 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

37 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

38 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

39 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

40 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

41 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

42 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

43 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

44 MITOS DA ENGENHARIA DE SOFTWARE 44

45  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?” Mitos da Gerência 45

46 46  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? Mitos da Gerência

47  “Se nos atrasarmos no cronograma, podemos adicionar mais programadores e ficar em dia?”  Realidade  “Adicionar pessoas a um projeto de software atrasado atrasa-o ainda mais.” Mitos da Gerência 47

48  “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. Mitos da Gerência 48

49 49  “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. Mitos do Cliente

50 50  “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. Mitos da Gerência

51 51  “Quando escrevemos um programa e o fazemos funcionar, nosso trabalho está completo.”  Realidade  “Quanto mais cedo você começar a escrever código, mais vai demorar para acabar.”  Entre 60% e 80% de todo o esforço despendido em software vai ser despendido depois de ele ser entregue ao cliente pela primeira vez. Mitos do Profissional

52 52  “Até que eu esteja com o programa ‘rodando’ não tenho como avaliar a sua qualidade.”  Realidade  E a revisão?  Garantindo a qualidade em todas as etapas, o produto final não terá qualidade? Mitos do Profissional

53 53  “O único produto de trabalho que pode ser entregue para um projeto de software bem sucedido é o programa executável.”  Realidade  E a documentação? Mitos do Profissional

54  “A engenharia de software vai nos fazer criar documentação volumosa e desnecessária que certamente nos atrasará.”  Realidade  A ES não se relaciona à criação de documentos. Refere-se à criação de qualidade. Melhor qualidade leva à redução de re-trabalho. E menor re-trabalho resulta em tempos de entrega mais rápidos. Mitos do Profissional 54


Carregar ppt "Professor Mário Dantas E NGENHARIA DE S OFTWARE. Ementa da Disciplina  Processos Existentes;  Ciclo de vida de desenvolvimento de software;  Engenharia."

Apresentações semelhantes


Anúncios Google