01 introdução a engenharia de software

41
Monica de Souza Massa Março / 2015 slide 1 Fundamentos da Engenharia de Software INTRODUÇÃO À ENGENHARIA DE SOFTWARE

Upload: flavio-junior

Post on 20-Dec-2015

4 views

Category:

Documents


0 download

DESCRIPTION

s

TRANSCRIPT

Page 1: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 1

Fundamentos da Engenharia de Software

INTRODUÇÃO À ENGENHARIA DE

SOFTWARE

Page 2: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 2

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE

O QUE É

Engenharia de Software ?

Page 3: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 3

Fundamentos da Engenharia de Software

Objetivos:

Identificar os problemas envolvidos com o desenvolvimento de software.

Analisar as causas destes problemas.

Propor soluções economicamente viáveis para a resolução destes problemas.

Organizar o conhecimento sobre as diversas técnicas e métodos para o desenvolvimento de software.

Surgimento do termo Engenharia de Software...

Otan 1968

Page 4: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 4

Fundamentos da Engenharia de Software

Algumas Definições:

ENGENHARIA DE SOFTWARE

“O estabelecimento e uso de um conjunto de princípios de engenharia com o objetivo de se construir software confiável, eficiente e economicamente viável em máquinas reais.” Fritz Bauer

“ Aplicação prática do conhecimento científico no projeto e construção de programas e de documentação requerida para desenvolver, operar e manter estes programas.” Barry Boehm

“É 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 andEletronic Engineers)

Page 5: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 5

Fundamentos da Engenharia de Software

“ A ES é uma disciplina da engenharia que se

ocupa de todos os aspectos da produção de

software, desde os estágios iniciais de especificação

do sistema até a manutenção deste, depois que

entrou em operação”.

Ian Sommerville

ENGENHARIA DE SOFTWARE

Aprofundando o entendimento do termo…

Page 6: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 6

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE

Disciplina de engenharia...

1. os engenheiros fazem os produtos funcionarem

2. Os engenheiros aplicam teorias., métodos e ferramentas para desenvolver os produtos

3. Os engenheiros reconhecem que precisam trabalhar de acordo com diretrizes organizacionais e restrições orçamentárias

Aprofundando o entendimento do termo…

Page 7: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 7

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE

Todos os aspectos da produção de software...

1. a ES não se dedica apenas aos processos técnicos de desenvolvimento de software

2. também são consideradas atividades como gerenciamento de projetos, desenvolvimento de métodos e teorias que dêem suporte à produção do software

Aprofundando o entendimento do termo…

Page 8: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 8

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE

EXERCÍCIO

Construção de uma casa X Construção de um software

Page 9: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 9

Fundamentos da Engenharia de Software

MAS ... O QUE É SOFTWARE?

Page 10: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 10

Fundamentos da Engenharia de Software

Instruções (programas de computador) que, quando executadas, produzem a função e desempenho desejados;

Estruturas de dados que permitem que os programas manipulem adequadamente a informação; e

Documentos que descrevem a operação e o uso de programas.

Pressman (2006)

MAS ... O QUE É SOFTWARE?

Page 11: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 11

Fundamentos da Engenharia de Software

APLICAÇÕES DO SOFTWARE

Page 12: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 12

Fundamentos da Engenharia de Software

1. é desenvolvido ( não é manufaturado no sentido clássico)

2. não se desgasta

3. a maioria é construída sob encomenda

CARACTERÍSTICAS DO SOFTWARE

... O que diferencia o SW do HW...

Page 13: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 13

Fundamentos da Engenharia de Software

HISTÓRICO Tempo de vida – pouco mais de meio século (aprox. seis décadas)

Início (década de 60)

Programação considerada uma espécie de arte.

Altos custos de hardware encobrem os custos de software.

Projeto no cérebro de uma pessoa.

Software feito sob medida.

Produtos pouco complexos e orientados para resolver problemas específicos.

Sem documentação.

Softwares construídos por pequenas equipes.

Page 14: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 14

Fundamentos da Engenharia de Software

EXERCÍCIO: construção de uma linha da vida sobre a Engenharia de Software nos últimos 50 anos

Fatores que mudaram a prática da ES nos últimos 50 anos

HISTÓRICO

A Evolução do Software

Page 15: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 15

Fundamentos da Engenharia de Software

HISTÓRICOA Evolução do Software

Os primeiros anos (1950 a início dos 60)

- Aplicações científicas e de engenharia

A segunda era (1960 a meados de 80)

- Aplicações comerciais em grande-porte (sistemas de informação BD)

A terceira era (meados de 70 e década de 80)

- Aplicativos pessoais em microcomputadores

A quarta era (meados de 80 a meados de 90)

- Aplicativos com Interfaces Gráficas - Redes e Arquitetura Cliente- Servidor

A quinta era (de meados de 90 a ???)

- Software Distribuídos, Internet, Groupware e Intranets

Sexta era??

- Computação Pervasiva, Móvel e Ubíqua

Page 16: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 16

Fundamentos da Engenharia de Software

HISTÓRICOA Evolução do Software

1950-1970: Desafio principal era desenvolver Hardware •Reduzir o custo de processamento e armazenamento de dados

Hoje: Reduzir o custo e melhorar a qualidade dos Softwares (potencial da computação)

•Impacto na sociedade e cultura é profundo!!!!!! •O software atingiu as grandes massas; tomada de decisões nos negócios, base para a pesquisa científica, solução de problemas de engenharia e telecomunicações, funcionalidade. •Comunidade de Software objetiva desenvolver tecnologias para facilitar o projeto de softwares de alta qualidade

Page 17: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 17

Fundamentos da Engenharia de Software

Mitos sobre o gerenciamento do software

Mitos sobre o cliente

Mitos sobre o Engenheiro de Software

ENGENHARIA DE SOFTWARE

Mitos do Software

Page 18: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 18

Fundamentos da Engenharia de Software

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?

Realidade: Será que o manual é usado? Os profissionais sabem que ele existe? Ele reflete as práticas modernas de desenvolvimento de SW? Ele é completo?

Realidade: Será que o manual é usado? Os profissionais sabem que ele existe? Ele reflete as práticas modernas de desenvolvimento de SW? Ele é completo?

ENGENHARIA DE SOFTWARE

Mitos sobre o gerenciamento do Software

Page 19: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 19

Fundamentos da Engenharia de Software

Se eu decidir terceirizar o projeto de software, posso então relaxar e deixar que a firma contratada construa-o.

Realidade: Se uma organização não entende cono gerenciar e controlar internamente seus projetos de software, isso vai se potencializar quando um rojeto for terceirizado.

Realidade: Se uma organização não entende cono gerenciar e controlar internamente seus projetos de software, isso vai se potencializar quando um rojeto for terceirizado.

ENGENHARIA DE SOFTWARE

Mitos sobre o gerenciamento do Software

Page 20: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 20

Fundamentos da Engenharia de Software

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

Realidade:

O desenvolvimento de software não é um processo mecânico igual à manufatura.

Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem ser acrescentadas, mas somente de uma forma planejada.

Realidade:

O desenvolvimento de software não é um processo mecânico igual à manufatura.

Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem ser acrescentadas, mas somente de uma forma planejada.

ENGENHARIA DE SOFTWARE

Mitos sobre o gerenciamento do Software

Page 21: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 21

Fundamentos da Engenharia de Software

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

Realidade:

Uma definição inicial ruim é a principal causa de fracassos dos esforços de 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.

Realidade:

Uma definição inicial ruim é a principal causa de fracassos dos esforços de 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.

ENGENHARIA DE SOFTWARE

Mitos sobre o cliente

Page 22: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 22

Fundamentos da Engenharia de Software

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

Realidade:

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

Realidade:

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

ENGENHARIA DE SOFTWARE

Mitos sobre o cliente

Page 23: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 23

Fundamentos da Engenharia de Software

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

Realidade:

Os dados da indústria indicam que entre 60 e 80% de todo esforço gasto num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente.

Realidade:

Os dados da indústria indicam que entre 60 e 80% de todo esforço gasto num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente.

ENGENHARIA DE SOFTWARE

Mitos sobre o Engenheiro de Software

Page 24: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 24

Fundamentos da Engenharia de Software

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

Realidade:

Uma das melhores mecanismos de garantia de qualidade de um software pode ser aplicado desde a sua fase inicial – é a revisão técnica.

Realidade:

Uma das melhores mecanismos de garantia de qualidade de um software pode ser aplicado desde a sua fase inicial – é a revisão técnica.

ENGENHARIA DE SOFTWARE

Mitos sobre o Engenheiro de Software

Page 25: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 25

Fundamentos da Engenharia de Software

O único produto de um projeto de software bem sucedido entregue ao cliente é o conjunto de programas rodando corretamente.

Realidade:

Um programa funcionando é somente 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.

Realidade:

Um programa funcionando é somente 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.

ENGENHARIA DE SOFTWARE

Mitos sobre o Engenheiro de Software

Page 26: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 26

Fundamentos da Engenharia de Software

A engenharia de software nos fará criar um volume desnecessário de documentação, que invariavelmente implicará na demora de execucáo e entrega do projeto.

Realidade:

ES nào tem por objetivo criar documentos e sim criar qualidade, que implica na redução do retrabalho. Consequentemente o projeto será entregue mais rápido.

Realidade:

ES nào tem por objetivo criar documentos e sim criar qualidade, que implica na redução do retrabalho. Consequentemente o projeto será entregue mais rápido.

ENGENHARIA DE SOFTWARE

Mitos sobre o Engenheiro de Software

Page 27: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 27

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE

Estatísticas (The Standish Group)

19% dos projetos de software são terminados com sucesso.

52,2% dos projetos são concluídos com atrasos ou acima do orçamento.

31,1% são cancelados.

Page 28: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 28

Fundamentos da Engenharia de Software

Aumento de complexidade do software.

Estimativas imprecisas de prazo e de custo.

Produtividade do pessoal envolvido não acompanha demanda por produção (aumento “backlog”)

Software de baixa qualidade (erros e não conformidades com requisitos que tiram a confiança do cliente sobre o produto)

Dificuldade de comunicação cliente X desenvolvedor.

Refere-se a um conjunto de problemas encontrados no desenvolvimento de software:

CRISE DO SOFTWARE

Page 29: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 29

Fundamentos da Engenharia de Software

Cliente insatisfeito com produto final.

Problemas com manutenção do software produzido.

Falta de tempo para coletar dados sobre o software e seu processo de desenvolvimento, o que implica em análise fraca de requisitos.

Falta de planejamento e de acompanhamento dos projetos.

Não é dada a devida importância aos testes de software sistemáticos e tecnicamente completos.

Refere-se a um conjunto de problemas encontrados no desenvolvimento de software:

CRISE DO SOFTWARE

Page 30: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 30

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE

CRISE OU AFLIÇÃO CRÔNICA ???

Page 31: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 31

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE

Crise – “ponto de inflexão ao longo de determinada coisa; momento, estágio ou evento decisivo ou crucial”.

CRISE OU AFLIÇÃO CRÔNICA ???

Aflição – “qualquer coisa que causa dor ou desconforto”.

Crônica – “de longa duração o u que volta frequentemente”.

Page 32: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 32

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE“The” Silver Bullet

No Silver Bullet – artigo escrito por F. Brooks em 1986

Page 33: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 33

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE“The” Silver Bullet

No Silver Bullet – artigo escrito por F. Brooks em 1986

The SE Silver Bullet Conundrum – artigo escrito por D. Berry em 2008

balas de prata e balas de alumínio

sempre um novo desafio

temporalidade das balas de prata

There is no single development, in either technology or in management technique, that by itself promisses even one order-of-magnitude

improvement in productivity, in reliability, in simplicity.

(If this is true,) Bulding software will always be hard. There is inherently no silver bullet.

Page 34: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 34

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE“The” Silver Bullet

No Silver Bullet – artigo escrito por F. Brooks em 1986

The SE Silver Bullet Conundrum – artigo escrito por D. Berry em 2008

balas de prata e balas de alumínio

sempre um novo desafio

temporalidade das balas de prata

Page 35: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 35

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARESe não existe a famosa “Silver Bullet” como lidar com os problemas do dia a dia na construção de SW com qualidade?

Page 36: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 36

Fundamentos da Engenharia de Software

ENGENHARIA DE SOFTWARE

Abordagem de resolução de problemas

Os Engenheiros de Software utilizam ferramentas,

técnicas, procedimentos e paradigmas para melhorar

a qualidade dos produtos de software e aumentar a

sua produtividade. O objetivo é utilizar abordagens

eficientes e produtivas para gerar soluçõs efetivas

para os problemas.

Page 37: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 37

Fundamentos da Engenharia de Software

Oferece ao profissional base para construção do software com maior qualidade e produtividade e menor custo.

A ENGENHARIA DE SOFTWARE abrange um conjunto de

três elementos fundamentais: Métodos, Ferramentas e Procedimentos

ENGENHARIA DE SOFTWAREAbordagem de resolução de problemas

Page 38: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 38

Fundamentos da Engenharia de Software

SWEBOK - Software Engineering Book of KnowledgeO QUE É?

síntese do conhecimento sobre ES.

descreve conhecimento em ES geralmente aceito pela comunidade profissional.

organizado pela IEEE – institute of eletric and eletronic engineers (obs: IEEE computer é a maior das 39 sociedades da IEEE com cerca de 100.000 membros).

patrocinado por empresas como a Rational, Boeing, SAP, etc.

Page 39: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 39

Fundamentos da Engenharia de Software

SWEBOK - Software Engineering Book of KnowledgeOBJETIVOS

1. Promover uma visão consistente da engenharia de software em todo o mundo (cerca de 500 revisores de 42 países na versão 2004).

2. Definir as fronteiras de atuação da engenharia de software e as áreas de interseção com outras disciplinas como: engenharia da computação, ciência da computação, gestão de negócios, matemática, gerenciamento de projetos, gestão da qualidade, ergonomia (acessibilidade e usabilidade) e engenharia de sistemas.

Page 40: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 40

Fundamentos da Engenharia de Software

SWEBOK - Software Engineering Book of KnowledgeOBJETIVOS

3. Caracterizar o conteúdo da disciplina engenharia de software, subdividindo-o hierarquicamente em áreas de conhecimento (AC).

4. Prover acesso por tópicos a base de conhecimento da engenharia de software (material de referência para cada AC).

5. Fornecer um alicerce para desenvolvimento do currículo. www.swebok.

org

Page 41: 01 Introdução a Engenharia de Software

Monica de Souza Massa Março / 2015 slide 41

Fundamentos da Engenharia de Software

SWEBOK - Software Engineering Book of KnowledgeÁREAS DE CONHECIMENTO1. Software Requirements (Requisitos)2. Software Design (Desenho/Projeto)3. Software Construction (Construção/Implementação)4. Software Testing (Testes)5. Software Maintenance (Manutenção)6. Software Configuration Management (Configuração)7. Software Engineering Management (Gerenciamento)8. Software Engineering Process (Processo)9. Software Engineering Tools and Methods (Ferramentas e Métodos)10. Software Quality ( Qualidade)