especialização em engenharia de software e banco … › pessoal › rodolfo › pos_esbd ›...

50
Especialização em Engenharia de Software e Banco de Dados Disciplina : Engenharia de Software Tópico: Introdução Prof. Rodolfo Miranda de Barros [email protected] Tópico : Introdução

Upload: others

Post on 30-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Especialização em Engenharia de Software e Banco de Dados

Disciplina: Engenharia de SoftwareTópico: Introdução

Prof. Rodolfo Miranda de Barros

[email protected]

Tópico: Introdução

Page 2: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Grandes verdades sobre Grandes verdades sobre

o desenvolvimento e manutenção o desenvolvimento e manutenção

de softwarede software

Page 3: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Nada pode parar a automação

Page 4: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Não estabeleça prazos audaciosos demais

Prazo é prazo !

Page 5: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Nem toda apresentação será um sucesso

Page 6: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

O que serve para um cliente pode não servir para o próximo

Page 7: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Busque soluções eficientes

Acabei o meu banho.

MM... Foi

rápido.

Page 8: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Suporte! Ferramentas diferentes para situações diferentes

Atrasado

Bêbado

Batom

Page 9: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Matemática não é tudo

Mas eu

continuo não

entendendo as

mulheres.

Page 10: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Como devemos extrair as necessidades dos clientes?

Page 11: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

O que é a Engenharia de Software?

• Estudo ou aplicação de abordagens sistemáticas, econômicas e quantificáveis para o desenvolvimento, operação e manutenção de software de qualidade. software de qualidade.

• Engenheiros de software devem adotar uma abordagem sistemática e organizadapara seu trabalho e usar ferramentas e técnicas/métodos apropriados dependendo do problema a ser solucionado, das restrições de desenvolvimento e dos recursos disponíveis

Page 12: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

• Engenharia de Software: – “O desenvolvimento e a aplicação da ciência,

matemática, técnicas, métodos, metodologias e

Engenharia de Software: Definição

matemática, técnicas, métodos, metodologias e ferramentas para o desenvolvimento e manutenção econômica de software de qualidade previsível e controlável, operando de modo econômico em máquinas e ambientes reais”.

Page 13: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

• A Engenharia de software abrange um conjunto de três elementos fundamentais: Métodos, Ferramentase Procedimentos;

• Principais metas: melhorar a qualidade de

Engenharia de Software: Definição

• Principais metas: melhorar a qualidade de produtos de software, aumentar a produtividade do pessoal técnico e aumentar a satisfação do cliente.

Page 14: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

• Métodos: proporcionam os detalhes de “como fazer” para construir o software;– Planejamento e estimativa de projeto;

Engenharia de Software: Definição

– Análise de requisitos de software e de sistemas;– Projeto da estrutura de dados;– Algoritmo de processamento;– Codificação;– Teste;– Manutenção.

Page 15: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

• Ferramentas: dão suporte automatizado aos métodos;

• Procedimentos: constituem o elo de ligação entre os métodos e ferramentas;– Seqüência em que os métodos serão aplicados;

Engenharia de Software: Definição

– Seqüência em que os métodos serão aplicados;

– Produtos que se exige que sejam entregues;

– Controles que ajudam assegurar a qualidade e coordenar as alterações;

– Marcos de referência que possibilitam administrar o progresso do software.

Page 16: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Engenharia de Software:What the Hell is this?

• Engenheiros Civis fazem Plantas antes de construírem prédios;• Engenheiros Eletrônicos fazem Esquemas antes de montarem

aparelhos;• Engenheiros Mecânicos fazem Desenhos antes de produzirem

máquinas;máquinas;• Engenheiros de Software são superdotados pela Mãe Natureza, e não

precisam de nada disso;

“Se prédios fossem construídos da mesma forma que fazemos sistemas, o primeiro pica-pau que aparecesse no planeta destruiria a humanidade.” (autor desconhecido)

Page 17: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

A Engenharia de Software é um área MUITO NOVA !

• O ser humano faz casas e abrigos há milhões de anos;

• O ser humano lida com eletricidade há milhares de anos;anos;

• O ser humano produz máquinas e ferramentas há outros milhares de anos;

• O ser humano faz software há 40/50/60 anos. Estamos nos primórdios da computação ....

Page 18: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Objetivos da Engenharia de Software

• Controlesobre o desenvolvimento de software dentro de custos, prazose níveis de qualidadedesejados;

• Produtividadeno desenvolvimento, operação e • Produtividadeno desenvolvimento, operação e manutenção de software;

• Qualidadeversus Produtividade;• Permitir que profissionais tenham controlesobre o

desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados.

Page 19: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Características da Engenharia de Software

• A Engenharia de Software se refere a software (sistemas) desenvolvidos por gruposao invés de indivíduos;gruposao invés de indivíduos;

• Usa princípiosde engenharia ao invés de arte, e;

• Inclui tanto aspectos técnicosquanto não técnicos.

Page 20: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Mas, na realidade, temos a Crise de Software...

• A crise do software foi um termo utilizado nos anos 70, quando a engenharia de software era praticamente inexistente;

• O termo expressava as dificuldades do desenvolvimento de software frente ao rápido crescimento da demandapor software, da complexidadedos problemas a serem resolvidos e da inexistência de complexidadedos problemas a serem resolvidos e da inexistência de técnicas estabelecidaspara o desenvolvimento de sistemas que funcionassem adequadamente ou pudessem ser validados;

• Uma das primeiras e mais conhecidas referências ao termo foi feita por Edsger Dijkstra, na apresentação feita em 1972 na Association for Computing Machinery Turing Award, intitulada "The Humble Programmer" (EWD340), publicada no periódico Communications of the ACM.

Page 21: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Crise de Software

• 25% dos projetos são cancelados;

• o tempo de desenvolvimento é bem maior do que o estimado;

• 75% dos sistemas não funcionam como planejado;

• a manutenção e reutilização são difíceis e custosas;

• os problemas são proporcionais a complexidade dos sistemas.

Page 22: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Crise de Software- problemas

11-- As estimativas de prazo e de custo freqüentemente As estimativas de prazo e de custo freqüentemente são imprecisas:são imprecisas:

– “ Não dedicamos tempo para coletar dados sobre o – “ Não dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software”;

– “Sem nenhuma indicação sólida de produtividade, não podemos avaliar com precisão a eficácia de novas ferramentas, métodos ou padrões”.

Page 23: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

22-- Insatisfação do cliente com o sistema Insatisfação do cliente com o sistema concluído:concluído:

–– “Os projetos de desenvolvimento de software “Os projetos de desenvolvimento de software

Crise de Software- problemas

–– “Os projetos de desenvolvimento de software “Os projetos de desenvolvimento de software normalmente são efetuados apenas com um normalmente são efetuados apenas com um vago indício das exigências do cliente”.vago indício das exigências do cliente”.

Page 24: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

33-- A qualidade de software às vezes é menos A qualidade de software às vezes é menos que adequada:que adequada:

– Só recentemente começam a surgir conceitos

Crise de Software- problemas

– Só recentemente começam a surgir conceitos quantitativos sólidos de garantia de qualidade de software.

Page 25: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

44-- O software existente é muito difícil de O software existente é muito difícil de manter:manter:

– A tarefa de manutenção devora o orçamento

Crise de Software- problemas

– A tarefa de manutenção devora o orçamento destinado ao software;

– A facilidade de manutenção não foi enfatizada como um critério importante.

Page 26: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Causas dos problemas associados à crise de software

11-- PRÓPRIO CARÁTER PRÓPRIO CARÁTER DO SOFTWARE:DO SOFTWARE:– O software é um elemento

de sistema lógico e não físico;

– Conseqüentemente o sucesso é medido pela qualidade de uma única entidade e não pela qualidade de muitas entidades manufaturadas;

–– O software não se O software não se desgasta, mas se desgasta, mas se deteriora.deteriora.

Page 27: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Causas dos problemas associados à crise de software

22-- FALHAS DAS PESSOAS FALHAS DAS PESSOAS RESPONSÁVEIS PELO RESPONSÁVEIS PELO DESENVOLVIMENTO DE DESENVOLVIMENTO DE SOFTWARE:SOFTWARE:SOFTWARE:SOFTWARE:

– Gerentes sem nenhuma experiência em software;

– Profissionais da área de software têm pouco treinamento formal em novas técnicas para o desenvolvimento de software;

– Resistência a mudanças.

Page 28: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Causas dos problemas associados à crise de software

33-- MITOS DO SOFTWARE: MITOS DO SOFTWARE: Propagaram desinformação e confusão

•• AdministrativosAdministrativos•• ClienteCliente•• ProfissionalProfissional

Page 29: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Mitos do software (ADMINISTRATIVOS)

Mito 1Mito 1::

• Já temos um manual repleto de padrões e • Já temos um manual repleto de padrões e procedimentos para a construção de software;

• Isso não oferecerá ao meu pessoal tudo o que eles precisam saber?

Page 30: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Realidade:

– Será que o manual é usado?

– Os profissionais sabem que ele existe?

Mitos do software (ADMINISTRATIVOS)

– Os profissionais sabem que ele existe?

– Ele reflete a prática moderna de desenvolvimento de software?

– Ele é completo?

Page 31: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Mito 2Mito 2::

• Meu pessoal tem ferramentas de

Mitos do software (ADMINISTRATIVOS)

• Meu pessoal tem ferramentas de desenvolvimento de software de última geração, afinal lhes compramos os mais novos computadores.

Page 32: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Realidade:

– É preciso muito mais do que os mais recentes computadores para se fazer um

Mitos do software (ADMINISTRATIVOS)

recentes computadores para se fazer um desenvolvimento de software de alta qualidade.

Page 33: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Mito 3Mito 3::

• Se nós estamos atrasados nos prazos,

Mitos do software (ADMINISTRATIVOS)

• Se nós estamos atrasados nos prazos, podemos adicionar mais programadores e tirar o atraso.

Page 34: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Realidade:

– O desenvolvimento de software não é um processo mecânico igual à manufatura. Acrescentar pessoas em um projeto torna-

Mitos do software (ADMINISTRATIVOS)

Acrescentar pessoas em um projeto torna-o ainda mais atrasado.

– Pessoas podem ser acrescentadas, mas somente de uma forma planejada.

Page 35: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Mitos do software (CLIENTE)

Mito 1Mito 1::

• Uma declaração geral dos objetivos é • Uma declaração geral dos objetivos é suficiente para se começar a escrever programas - podemos preencher os detalhes mais tarde.

Page 36: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Realidade:

– Uma definição inicial ruim é a principal causa de fracassos dos esforços de desenvolvimento de software.

Mitos do software (CLIENTE)

desenvolvimento de software.

– É fundamental uma descrição formal e detalhada do domínio da informação, função, desempenho, interfaces, restrições de projeto e critérios de validação.

Page 37: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Mito 2Mito 2::

• Os requisitos de projeto modificam-se

Mitos do software (CLIENTE)

• Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível.

Page 38: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Realidade:

– Uma mudança, quando solicitada tardiamente num projeto, pode ser maior

Mitos do software (CLIENTE)

tardiamente num projeto, pode ser maior do que a ordem de magnitude mais dispendiosa da mesma mudança solicitada nas fases iniciais.

Page 39: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

MAGNITUDE DAS MUDANÇAS

Mitos do software (CLIENTE)

Page 40: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Mitos do software (PROFISSIONAL)

Mito 1Mito 1::

• Assim que escrevermos o programa e o • Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estará completo.

Page 41: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Realidade:

– Os dados da indústria indicam que entre 50 e 70% de todo esforço gasto num

Mitos do software (PROFISSIONAL)

50 e 70% de todo esforço gasto num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente.

Page 42: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Mito 2Mito 2::

• Enquanto não tiver o programa

Mitos do software (PROFISSIONAL)

• Enquanto não tiver o programa "funcionando", eu não terei realmente nenhuma maneira de avaliar sua qualidade.

Page 43: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Realidade:

– Um programa funcionando é somente uma parte de uma Configuração de

Mitos do software (PROFISSIONAL)

uma parte de uma Configuração de Software que inclui todos os itens de informação produzidos durante a construção e manutenção do software.

Page 44: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

Resposta à Crise de Software

Page 45: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

O Mundo do desenvolvimento de Software - Resumindo

• Crise do Software (~1970)• Desenvolvimento de Software como “arte”;• Problemas de execução – erros;• Prazos extrapolados;• Prazos extrapolados;• Custos inesperados – correção de erros e adaptação do

código às reais necessidades do usuário;• Empresas dependentes de computadores com sistemas

legados que necessitam modificações mas com código/documentação ilegível ou inexistentes;

• Insatisfação de usuários.

Page 46: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

O Mundo do desenvolvimento de Software - Resumindo

• O que acontecia? (ou ainda acontece?)– Falta de alinhamento de expectativas;

– Falta de preparo da equipe do projeto;

– Planejamento inexistente ou insuficiente;

– Incapacidade de prever riscos;

– Problemas de comunicação;

– Requisitos mal definidos;

– Limitação de recursos.

Page 47: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

O Mundo do desenvolvimento de Software - Resumindo

• O que precisamos fazer? Onde está a bala de prata?– Na linguagem?– Na linguagem?

– No ambiente?

– Nas notações?

– Nas ferramentas CASE?

– Nas metodologias?

– Na falta de planejamento e gerenciamento?

Page 48: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

• Para que planejar?– Para garantir que estamos

sempre fazendo a coisa mais importante que se tem a fazer;

O Mundo do desenvolvimento de Software - Resumindo

a fazer;– Para coordenar a interação

das pessoas;– Para responder

rapidamente a mudanças.

Page 49: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

O Mundo do desenvolvimento de Software - Resumindo

• Paradoxo de Cobb - Martin Cobb - Treasury Board of Canada Secretariat

“We know why projects fail, we know how to prevent their failure - so why do they still fail?"

Page 50: Especialização em Engenharia de Software e Banco … › pessoal › rodolfo › pos_esbd › ES_Rodolfo_I...• Engenharia de Software: – “O desenvolvimento e a aplicação

O Mundo do desenvolvimento de Software - Resumindo

• Reflita sobre o filme a seguir. Você conhece alguma empresa que trabalha desta maneira?maneira?