professor mário dantas

54
Professor Mário Dantas ENGENHARIA DE SOFTWARE

Upload: kirti

Post on 22-Mar-2016

37 views

Category:

Documents


1 download

DESCRIPTION

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; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Professor Mário  Dantas

Professor Mário Dantas

ENGENHARIA DE SOFTWARE

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

Page 3: Professor Mário  Dantas

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.

Page 4: Professor Mário  Dantas

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.

Page 5: Professor Mário  Dantas
Page 6: Professor Mário  Dantas

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

Page 7: Professor Mário  Dantas

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

Page 8: Professor Mário  Dantas

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

Page 9: Professor Mário  Dantas

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

Page 10: Professor Mário  Dantas

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

Page 11: Professor Mário  Dantas

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

Page 12: Professor Mário  Dantas

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

Page 13: Professor Mário  Dantas

13

Por que é tão difícil desenvolver software?

Processo Jovem;

Desenvolvimento de Software

Page 14: Professor Mário  Dantas

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;

Page 15: Professor Mário  Dantas

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.

Page 16: Professor Mário  Dantas

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)

Page 17: Professor Mário  Dantas

17

Objetivos Gerais Qualidade (adequação às

necessidades) Produtividade (agilidade para

construção e manutenção) Controle (qualidade, prazos e custos)

Page 18: Professor Mário  Dantas

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.

Page 19: Professor Mário  Dantas

19

Comparativo de Indicadores

Page 20: Professor Mário  Dantas

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.

Page 21: Professor Mário  Dantas

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.

Page 22: Professor Mário  Dantas

22

Custo de Software

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

Page 23: Professor Mário  Dantas

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

Page 24: Professor Mário  Dantas

24

Questões freqüentes sobre Engenharia de Software1. 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?

Page 25: Professor Mário  Dantas

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

Page 26: Professor Mário  Dantas

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

Page 27: Professor Mário  Dantas

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

Page 28: Professor Mário  Dantas

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

Page 29: Professor Mário  Dantas

29

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.

Page 30: Professor Mário  Dantas

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

Page 31: Professor Mário  Dantas

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.

Page 32: Professor Mário  Dantas

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)

Page 33: Professor Mário  Dantas

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

Page 34: Professor Mário  Dantas

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

Page 35: Professor Mário  Dantas

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.

Page 36: Professor Mário  Dantas

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

Page 37: Professor Mário  Dantas

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.

Page 38: Professor Mário  Dantas

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

Page 39: Professor Mário  Dantas

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.

Page 40: Professor Mário  Dantas

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.

Page 41: Professor Mário  Dantas

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.

Page 42: Professor Mário  Dantas

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.

Page 43: Professor Mário  Dantas

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

Page 44: Professor Mário  Dantas

44

MITOS DA ENGENHARIA DE SOFTWARE

Page 45: Professor Mário  Dantas

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

Page 46: Professor Mário  Dantas

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

Page 47: Professor Mário  Dantas

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

Page 48: Professor Mário  Dantas

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

Page 49: Professor Mário  Dantas

49

“O estabelecimento geral dos objetivos é suficiente para iniciar a escrita de programas – podemos fornecer os detalhes posteriormente?”

RealidadeUma 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

Page 50: Professor Mário  Dantas

50

“Os requisitos de projeto mudam continuamente, mas as mudanças podem ser facilmente acomodadas porque o software é flexível.”

RealidadeO impacto da mudança varia com a época em que é introduzida.

Mitos da Gerência

Page 51: Professor Mário  Dantas

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

Page 52: Professor Mário  Dantas

52

“Até que eu esteja com o programa ‘rodando’ não tenho como avaliar a sua qualidade.”

RealidadeE a revisão?Garantindo a qualidade em todas as etapas, o produto final não terá qualidade?

Mitos do Profissional

Page 53: Professor Mário  Dantas

53

“O único produto de trabalho que pode ser entregue para um projeto de software bem sucedido é o programa executável.”

RealidadeE a documentação?

Mitos do Profissional

Page 54: Professor Mário  Dantas

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