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

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

Engenharia de Software Professor Mário Dantas

Apresentações semelhantes


Apresentação em tema: "Engenharia de Software Professor Mário Dantas"— Transcrição da apresentação:

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

6 Histórico 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.

7 Histórico 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.

8 Histórico 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...

9 Histórico 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.

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

11 Crise do Software 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.

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

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

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;

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.

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)

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

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.

19 Comparativo de Indicadores

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.

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.

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

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

24 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?

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

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

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

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

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.

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

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.

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)

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

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

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.

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

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.

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

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.

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.

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.

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.

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

44 MITOS DA ENGENHARIA DE SOFTWARE

45 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?”

46 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?

47 Mitos da Gerência “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.”

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

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

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

51 Mitos do Profissional “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.

52 Mitos do Profissional “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?

53 Mitos do Profissional “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?

54 Mitos do Profissional “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.


Carregar ppt "Engenharia de Software Professor Mário Dantas"

Apresentações semelhantes


Anúncios Google