engenharia de software - conceitos e modelos de desenvolvimento

112
Conceitos e modelos de desenvolvimento Engenharia de Software Prof: Sérgio Souza Costa

Upload: sergio-souza-costa

Post on 19-May-2015

10.628 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Conceitos e modelos de desenvolvimento

Engenharia de Software

Prof: Sérgio Souza Costa

Page 2: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Sobre mim

Sérgio Souza CostaProfessor - UFMADoutor em Computação Aplicada (INPE)

[email protected]

https://sites.google.com/site/profsergiocosta/home

https://twitter.com/profsergiocosta

http://gplus.to/sergiosouzacosta

http://www.slideshare.net/skosta/presentations?order=popular

Page 3: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que iremos aprender hoje ?

Page 4: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que iremos aprender hoje ?

Conceitos sobre Engenharia de Software

Page 5: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que iremos aprender hoje ?

Conceitos sobre Engenharia de Software

Modelos de desenvolvimento

Page 6: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que iremos aprender hoje ?

Conceitos sobre Engenharia de Software

Page 7: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Qual o primeiro conceito ? Por onde devemos começar ? O que vocês acham ?

Page 8: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que é software ?

Page 9: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que é software?

Resposta não é obvia, segundo Pressman, em 1970 menos de 1% dos profissionais poderiam ter definido o que é software.

Page 10: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que é software?

Produto que os engenheiros de software projetam e constroem.

Page 11: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que é software?

Produto que os engenheiros de software projetam e constroem. Englobando:

Page 12: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que é software?

1) Instruções (programas de computadores, código executável) que produzem algum resultado desejado.

Produto que os engenheiros de software projetam e constroem. Englobando:

Page 13: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que é software?

2) Estruturas de dados que permitem que os programas manipulem adequadamente a informação.

Produto que os engenheiros de software projetam e constroem. Englobando:

Page 14: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

O que é software?

3) Documentação que descrevem o uso dos programas.

Produto que os engenheiros de software projetam e constroem. Englobando:

Page 15: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Produto que os engenheiros de software projetam e constroem. Englobando:

O que é software?

3) Documentação que descrevem o uso dos programas.

SIM. Documentação, aquela parte que os programadores não morrem de amor.

Page 16: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Então, software é um produto do engenheiro de software, como um hardware é um produto de um engenheiro eletrônico ? O que diferencia estes produtos?

Page 17: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Então, software é um produto do engenheiro de software, como um hardware é um produto de um engenheiro eletrônico ? O que diferencia estes produtos?

Software é lógico.

Hardware é físico.

Page 18: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Então, software é um produto do engenheiro de software, como um hardware é um produto de um engenheiro eletrônico ? O que diferencia estes produtos?

Software é lógico.

Hardware é físico.Vamos ver melhor estas diferenças, e como isto reflete na sua construção.

Page 19: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

CARACTERÍSTICAS DO SOFTWARE

Page 20: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Qual a diferença entre Hardware e Software ?

Page 21: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

1. Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico.

Page 22: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Projeto (modelo conceitual)

Artefatos (esquemas, plantas, mapas ... )

Fabricação (manufaturado)

Hardware - manufaturado

Mundo Lógico

Mundo físico

1. Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico.

Page 23: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Projeto (modelo conceitual)

Artefatos (diagramas, documentos ..)

Programa – modelo de implementação

Software

Mundo Lógico

Alto nível

Baixo nível

Mo

del

os

1. Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico.

Page 24: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

1. Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico.

Projeto (modelo conceitual)

Artefatos (diagramas, documentos ..)

Programa – modelo de implementação

Software

Mundo Lógico

Alto nível

Baixo nível

Mo

del

os

Relaxem. Iremos entender melhor isso durante o curso, na carreira, em algum momento …

Page 25: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

1. Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico.

Projeto (modelo conceitual)

Artefatos (diagramas, documentos ..)

Programa – modelo de implementação

Software

Mundo Lógico

Alto nível

Baixo nível

Mo

del

os

Relaxem. Iremos entender melhor isso durante o curso, na carreira, em algum momento …

A engenharia ainda está entendendo melhor estas diferenças.

Page 26: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

No desenvolvimento de um software conceitualmente não existe um processo manual, todos os envolvidos exercem um trabalho intelectual.

Page 27: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Porém, onde e quem exerce o trabalho mais similar a um trabalho “manual” em um software ?

No desenvolvimento de um software conceitualmente não existe um processo manual, todos os envolvidos exercem um trabalho intelectual.

Page 28: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

2. Software não se desgasta como nos hardware.

Page 29: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Como é a manutenção em um hardware ? e em um software?

Page 30: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Mortalidade infantil

Associada a falhas de fabricação e ou projeto.

Desgaste

Males ambientais, poeiras, vibrações.

Todo hardware tem um tempo de vida.

Mortalidade infantil

Curva de falha do hardware

Desgaste

Tempo

Falh

a

Page 31: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

E no software, como vocês acham que é esta curva ? Lembrem-se de que no software não existe uma processo manufaturado, não existem peças que se desgastam.

Page 32: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Curva de falha do software

Tempo

Falh

a

Mudança

Curva real

Curva idealizada

Page 33: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Curva de falha do software

Tempo

Falh

a

Mudança

Curva real

Curva idealizada

Page 34: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Curva de falha do software

Tempo

Falh

a

Mudança

Curva real

Contraditorio ? Consegueriam explicar ?

Curva idealizada

Page 35: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Curva de falha do software

Tempo

Falh

a

Mudança

Curva real

Incremento devido os efeitos

colaterais

Curva idealizada

Page 36: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Efeitos colaterais, o pesadelo de todo desenvolvedor de software.

Correção de erros, tendem a gerar novos erros.

Page 37: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Efeitos colaterais, o pesadelo de todo desenvolvedor de software.

Correção de erros, tendem a gerar novos erros.

Desenvolvedores temem modificações, tentam a evitá-las.

Page 38: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Efeitos colaterais, o pesadelo de todo desenvolvedor de software.

Correção de erros, tendem a gerar novos erros.

Desenvolvedores temem modificações, tentam a evitá-las.

Porém, mudanças são inevitáveis e temos que lidar com isso.

Page 39: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Efeitos colaterais, o pesadelo de todo desenvolvedor de software.

Correção de erros, tendem a gerar novos erros.

Desenvolvedores temem modificações, tentam a evitá-las.

Porém, mudanças são inevitáveis e temos que lidar com isso.

Requisitos de softwares sempre mudam.

Page 40: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Efeitos colaterais, o pesadelo de todo desenvolvedor de software.

Correção de erros, tendem a gerar novos erros.

Desenvolvedores temem modificações, tentam a evitá-las.

Porém, mudanças são inevitáveis e temos que lidar com isso.

Requisitos de softwares sempre mudam.

Vamos ver durante o curso, mecanismo que tentam tornar esse processo menos dolorosos.

Page 41: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

3. A maioria é feita sob medida em vez de ser montada a partir de componentes existentes.

Page 42: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

3. A maioria é feita sob medida em vez de ser montada a partir de componentes existentes.

O reuso de “componentes de software” ainda não é equivalente a outras engenharias, como no hardware. Padrões ainda estão sendo desenvolvidos.

Page 43: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

3. A maioria é feita sob medida em vez de ser montada a partir de componentes existentes.

Existem diversos componentes padronizado para a montagem de um hardware, parafusos, placas, transistores, diodos, etc.

O reuso de “componentes de software” ainda não é equivalente a outras engenharias, como no hardware. Padrões ainda estão sendo desenvolvidos.

Page 44: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

EVOLUÇÃO DO SOFTWARE

Page 45: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Evolução do Software

Os primeiros anos- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO

1950 1960 1970 1980 2000

Page 46: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Evolução do Software

Os primeiros anos

A segunda era

- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO

- MULTIUSUÁRIO- TEMPO REAL- BANCO DE DADOS- PRODUTOS DE SOFTWARE

1950 1960 1970 1980 2000

Page 47: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Evolução do Software

Os primeiros anos

A segunda era

- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO

- MULTIUSUÁRIO- TEMPO REAL- BANCO DE DADOS- PRODUTOS DE SOFTWARE

1950 1960 1970 1980 2000

Crise do software

Page 48: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Evolução do Software

Os primeiros anos

A segunda era

A terceiraera

- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO

- SISTEMAS DISTRIBUÍDOS-INTELIGÊNCIA EMBUTIDA-HARDWARE DE BAIXO CUSTO- IMPACTO DECONSUMO

- MULTIUSUÁRIO- TEMPO REAL- BANCO DE DADOS- PRODUTOS DE SOFTWARE

1950 1960 1970 1980 2000

Crise do software

Page 49: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Evolução do Software

Os primeiros anos

A segunda era

A terceiraera

- ORIENTAÇÃOBATCH- DISTRIBUÍÇÃOLIMITADA- SOFTWARECUSTOMIZADO

- SISTEMAS DISTRIBUÍDOS-INTELIGÊNCIA EMBUTIDA-HARDWARE DE BAIXO CUSTO- IMPACTO DECONSUMO

- SISTEMAS DE DESKTOPPODEROSOS- TECNOLOGIASORIENTADASA OBJETOS- SISTEMASESPECIALISTAS- REDES NEURAISARTIFICIAIS- COMPUTAÇÃOPARALELA

- MULTIUSUÁRIO- TEMPO REAL- BANCO DE DADOS- PRODUTOS DE SOFTWARE

1950 1960 1970 1980 2000

A quartaeraCrise do software

Page 50: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

A crise do software

+ Complexidade - Confiabilidade

Aumento crescente por sistemas de Informação

Sistemas mais e mais sofisticados exigem mais recursos (humanos e máquinas)

Mais dependência do software nos procedimentos normais do cotidiano

Sistemas devem ser mais e mais seguros.

Page 51: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

A crise do software

•Imprecisão nas especificações iniciais do projeto•Muitas modificações exigidas pelo cliente•Rotatividade acentuada da equipe de projeto•Informações não muito bem documentadas•Custo elevado nos estágios finais de projeto

Manutenabilidade

Page 52: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Temos muitos PROBLEMAS, a quem podemos recorrer ?

Page 53: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Temos muitos PROBLEMAS, a quem podemos recorrer ?

ENGENHARIA

Page 54: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

ENGENHARIA DE SOFTWARE de acordo com IEEE é a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software.

Page 55: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

ENGENHARIA DE SOFTWARE de acordo com IEEE é a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software.

Sistemática por que parte do princípio de que existe um processo de desenvolvimento definindo as atividades que deverão ser executadas.

Page 56: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

ENGENHARIA DE SOFTWARE de acordo com IEEE é a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software.

Sistemática por que parte do princípio de que existe um processo de desenvolvimento definindo as atividades que deverão ser executadas.

Disciplinada por que parte do princípio de que os processos definidos serão seguidos

Page 57: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

ENGENHARIA DE SOFTWARE de acordo com IEEE é a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software.

Sistemática por que parte do princípio de que existe um processo de desenvolvimento definindo as atividades que deverão ser executadas.

Disciplinada por que parte do princípio de que os processos definidos serão seguidos

Quantificável por que se deve definir um conjunto de medidas a serem extraídas do processo

Page 58: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

ENGENHARIA DE SOFTWARE de acordo com IEEE é a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software.

Sistemática por que parte do princípio de que existe um processo de desenvolvimento definindo as atividades que deverão ser executadas.

Disciplinada por que parte do princípio de que os processos definidos serão seguidos

Quantificável por que se deve definir um conjunto de medidas a serem extraídas do processo

Desenvolvimento, operação e manutenção são fases do processo de software.

Page 59: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

ENGENHARIA DE SOFTWARE de acordo com IEEE é a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software.

Sistemática por que parte do princípio de que existe um processo de desenvolvimento definindo as atividades que deverão ser executadas.

Disciplinada por que parte do princípio de que os processos definidos serão seguidos

Quantificável por que se deve definir um conjunto de medidas a serem extraídas do processo

Desenvolvimento, operação e manutenção são fases do processo de software.

Mas o que é um processo ?

Page 60: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

ES – Uma tecnologia em camadas

Ferramentas

Métodos

Processo

Foco na qualidade

Adaptado de Roger Pressman

Page 61: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Ferramentas

Métodos

Processo

Foco na qualidade

Adaptado de Roger Pressman

ES – Uma tecnologia em camadas

Page 62: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Foco na qualidade

• A busca pela qualidade é o objetivo de usar qualquer engenharia (não apenas da ES).

• Ela deve ser buscada em cada fase do processo de desenvolvimento.

• Permite ao – gerente um controle e ao– desenvolvedor uma referência.

Page 63: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Ferramentas

Métodos

Processo

Foco na qualidade

Adaptado de Roger Pressman

ES – Uma tecnologia em camadas

Page 64: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Métodos

Os detalhes de “como fazer” para construir o software, existem métodos para as diferentes tarefas.

Planejamento e estimativa de projeto

Análise de requisitos

Projeto da estrutura de dados

Codificação, teste, manutenção

Page 65: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Ferramentas

Métodos

Processo

Foco na qualidade

Adaptado de Roger Pressman

ES – Uma tecnologia em camadas

Page 66: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Ferramentas

As ferramentas de engenharia de software proporcionam apoio automatizado ou semi-automatizado aos métodos.

Se elas são integradas (troca de informação), chamamos de ferramentas

• CASE (Computer-Aided Software Engineering), em português Engenharia de Software Auxiliada por Computador.

Cada tarefa, pode ter uma ou mais ferramenta auxiliando.

Page 67: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Ferramentas

Métodos

Processo

Foco na qualidade

Adaptado de Roger Pressman

ES – Uma tecnologia em camadas

Page 68: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Processo

O processo é a camada mais importante da ES, esta camada constitui o elo de ligação entre as ferramentas e os métodos. Um processo define :

Page 69: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Processo

O processo é a camada mais importante da ES, esta camada constitui o elo de ligação entre as ferramentas e os métodos. Um processo define :

A seqüência em que os métodos serão aplicados.

Quais os responsáveis por cada tarefa.

Quando e como o software será entregue.

Possibilitam aos gerentes de software avaliar o progresso do desenvolvimento.

Page 70: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Processo

O processo é a camada mais importante da ES, esta camada constitui o elo de ligação entre as ferramentas e os métodos. Um processo define :

A seqüência em que os métodos serão aplicados.

Quais os responsáveis por cada tarefa.

Quando e como o software será entregue.

Possibilitam aos gerentes de software avaliar o progresso do desenvolvimento.

Uma empresa pode usar métodos e ferramentas e não seguir nenhum processo estabelecido. Existem até classificações para empresas quanto ao uso de processos.

Page 71: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelos de processo

Um processo é representado por um MODELO

prescritivo.

Um modelo prescritivo, nos dá uma referência, porem sempre existe a necessidade de adaptá-lo a cada projeto:– O pessoal que vai executar o trabalho e o ambiente no

qual o trabalho vai ser conduzido.

Page 72: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelos de processo

Um processo é representado por um MODELO

prescritivo.

Um modelo prescritivo, nos dá apenas uma referência, porem sempre existe a necessidade de adaptá-lo a cada projeto:– O pessoal que vai executar o trabalho e o ambiente no

qual o trabalho vai ser conduzido.

Modelos prescritivos são versões simplificadas, não sao processos.

Page 73: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelos de processos

• Existem diversos modelos de processo como:– Cascata

– Incremental

– Protótipo

– Espiral

– Formal

– 4º geração

– ...

Page 74: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelos de processo

• Independente do modelo de processo, inclui-se as seguintes atividades:– Comunicação

– Planejamento

– Modelagem

– Construção

– Implantação

Page 75: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

“Existem muitos modos de ir para frente, mas apenas um modo de ficar parado.”

Franklin D. Rosevelt

Page 76: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo em cascata

Conhecido como “ciclo de vida clássico”. Sugere

uma abordagem sistemática e seqüencial.

Filosofia: O resultado de uma fase se constitui na entrada da outra e uma fase só começa, após o termino da anterior.

O modelo mais antigo e ainda muito utilizado, porém existem diversas variações.

Page 77: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo em cascata

ComunicaçãoIniciação do projeto, levantamento de requisitos

Page 78: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Comunicação

Os serviços, restrições e objetivos do sistema são definidos por meio de consulta aos usuários do sistema.

A especificação do sistema:

Quais informações os sistemas deverá prover

Quais informações os sistemas não deverá prover

Page 79: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Comunicação

Os serviços, restrições e objetivos do sistema são definidos por meio de consulta aos usuários do sistema.

A especificação do sistema:

Quais informações os sistemas deverá prover

Quais informações os sistemas não deverá prover

Isto é documentado e “assinado”. Faz parte do contrato.

Page 80: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Comunicação

Exemplo de requisitos:

Em pequenos sistemas, uma ferramenta de planilhas pode ser suficiente:

Ref:

Page 81: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Comunicação

Exemplo de requisitos:

Em pequenos sistemas, uma ferramenta que planilhas pode ser suficiente:

Veremos sobre engenharia de requisitos, capitulo 7.

Ref:

Page 82: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo em cascata

ComunicaçãoIniciação do projeto, levantamento de requisitos

PlanejamentoEstimativas, cronogramas, monitoração

Page 83: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Planejamento

O planejamento define o tempo estimado de entrega.

Nele, deve ser definido o cronograma de execução de cada atividade.

Além disso, deve se ter mecanismo que permita a monitoração do projeto.– Será que o projeto irá atender as estimativas,

sobre custo e tempo.

Page 84: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Planejamento

Ferramentas que auxilia, MSProject e OpenProject.

Page 85: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo em cascata

Comunicação

ModelagemIniciação do projeto, levantamento de requisitos

Análise e projeto

PlanejamentoEstimativas, cronogramas, monitoração

Page 86: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelagem

A análise e o projeto estabelecerá a arquitetura geral do sistema e envolve:

Identificar e descrever as abstrações fundamentais do sistema de software e suas relações.

Page 87: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelagem

Nessa fase, se estivermos fazendo uso da UML, precisaremos de ferramentas que construam os seus diagramas.

Gato

RaçaTamanhoCor

caçarbrincar

Page 88: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelagem

Nessa fase, se estivermos fazendo uso da UML, precisaremos de ferramentas que construam os seus diagramas.

Veremos estes diagramas em outra disciplina.

Gato

RaçaTamanhoCor

caçarbrincar

Page 89: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo em cascata

Comunicação

ModelagemIniciação do projeto, levantamento de requisitos

Análise e projeto

Codificação, teste

PlanejamentoEstimativas, cronogramas, monitoração

Construção

Page 90: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Codificação e teses

O projeto de software é traduzido para um conjunto de programas ou unidades (funções, objetos, componentes, etc).

Nesta fase, são feitos testes unitários, que envolve a verificação de que cada unidade atende sua especificação.

Page 91: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Codificação e teses

Nesta fase, é usual utilizar uma IDE (Integrated Development Environment), ou ambiente integrado de desenvolvimento, por exemplo o Eclipse.

No Java existe a JUnit para testes de unidade

Page 92: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo em cascata

Comunicação

Modelagem

Implantação

Iniciação do projeto, levantamento de requisitos

Análise e projeto

Codificação, testeEntrega,

manutenção, feedback

PlanejamentoEstimativas, cronogramas, monitoração

Construção

Page 93: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Implantação

As unidades individuais de programa e ou programas, são integrados e testados buscando garantir os requisitos de software foram atendidos.

Após os testes o sistema é entregue e implantado para o cliente.

Manutenção, envolve a correção de erros não detectados.

Além da ampliação dos serviços do sistema á medida que novos requisitos são identificados

Page 94: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Implantação

As unidades individuais de programa e ou programas, são integrados e testados buscando garantir os requisitos de software foram atendidos.

Após os testes o sistema é entregue e implantado para o cliente.

Manutenção, envolve a correção de erros não detectados.

Além da ampliação dos serviços do sistema á medida que novos requisitos são identificados

Como é a implantação em sistemas desktop e em sistemas Web?

Page 95: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Implantação

As unidades individuais de programa e ou programas, são integrados e testados buscando garantir os requisitos de software foram atendidos.

Após os testes o sistema é entregue e implantado para o cliente.

Manutenção, envolve a correção de erros não detectados.

Além da ampliação dos serviços do sistema á medida que novos requisitos são identificados

Como é a implantação em sistemas desktop e em sistemas Web?

Requisitos sempre mudam

Page 96: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo cascata

• Pontos fortes

Page 97: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo cascata

• Pontos fortes– Mais antigo e testado modelo de processo

– Enfoque sistemático e sequencial das tarefas

– Muitas melhorias e variações,

– É o arcabouço de referência a diversos outros modelos de processos.

Page 98: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo cascata

• Pontos fracos

Page 99: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo cascata

• Pontos fracos– Projetos reais raramente seguem um fluxo seqüencial.

– Os Clientes e Usuários não conseguem estabelecer de forma clara e completa os requisitos de sistema no início do desenvolvimento.

– Grande demora até a entrega do produto ao cliente (primeira apreciação).

– Alto custo da correção das especificações quando na fase da integração e teste.

Page 100: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo incremental

Combina elementos do modelo em cascata, aplicado de maneira iterativa.

Aplica seqüência lineares, de modo cada sequencia produz incrementos do software.

Page 101: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo incremental

Combina elementos do modelo em cascata, aplicado de maneira iterativa.

Aplica seqüência lineares, de modo cada sequencia produz incrementos do software.

Um incremento, é um produto operacional.

Page 102: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo incremental

Combina elementos do modelo em cascata, aplicado de maneira iterativa.

Aplica seqüência lineares, de modo cada sequencia produz incrementos do software.

Um incremento, é um produto operacional.

Os primeiros incrementos são versões simplificadas.

Page 103: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo incremental

Comunicação

Planejamento

Modelagem

Construção

Implantação

Incremento 1

Tempo decorrido

Fun

cio

nal

idad

es

Page 104: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo incremental

Comunicação

Planejamento

Modelagem

Construção

Implantação

Incremento 1

Incremento 2

Tempo decorrido

Fun

cio

nal

idad

es

Page 105: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo incremental

Comunicação

Planejamento

Modelagem

Construção

Implantação

Incremento 1

Incremento 2

Incremento N

Tempo decorrido

Fun

cio

nal

idad

es

Page 106: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo incremental

• Enfoque para sistemas modulares ou baseado em subsistemas.

• Utilizado como estratégia para projetos muito grandes.

• Evita problemas de perda de controle: custo e prazos.

• É um modelo evolucionário.

Page 107: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo incremental

• Enfoque para sistemas modulares ou baseado em subsistemas.

• Utilizado como estratégia para projetos muito grandes.

• Evita problemas de perda de controle: custo e prazos.

• É um modelo evolucionário.

Por exemplo, os modelos unificados que vocês verão em orientação objeto tem como referência o modelo incremental.

Page 108: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Modelo incremental

• Enfoque para sistemas modulares ou baseado em subsistemas.

• Utilizado como estratégia para projetos muito grandes.

• Evita problemas de perda de controle: custo e prazos.

• É um modelo evolucionário.

Por exemplo, os modelos unificados que vocês verão em orientação objeto tem como referência o modelo incremental.

Já ouviram falar em métodos ágeis ? Eles tambem são incrementais.

Page 109: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Pontos chaves: Conceitos ES

• Software, são os 1) programas, 2) estruturas de dados e 3) documentação.

• A ES nasce pra resolver diversos problemas que foram agravados com o incremento na quantidade e complexidade dos softwares.

• ES é a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software.

• Um processo define que métodos e quais ferramentas usar para atingir um nível de qualidade.

Page 110: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

Pontos chaves: Modelos

• Um modelo descreve uma visão simplificada do processo.

• Um modelo deve ser ajustado as necessidades do projeto específico.

• Um modelo de processo genérico inclui: comunicação, planejamento, modelagem, construção e implantação.

• Existem diversos modelos, vimos hoje o modelo em cascata, conhecido como ciclo de vida clássico.

• E o modelo incremental, que é baseado no modelo em cascata, porém divide o sistemas em incrementos, que possui uma funcionalidade e seu próprio cronograma

Page 111: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

http

://ww

w.p

rojectcarto

on

.com

/cartoo

n/58

Como o cliente definiu.

Como o lider do projeto entendeu.

Como o analista projetou.

Como o programador escreveu.

Como o projeto foi documentado.

Como o projeto foi instalado.

Como o cliente pagou

O que o cliente realmente precisava.

Page 112: Engenharia de Software - Conceitos e Modelos de Desenvolvimento

• As atividades deverão ser enviadas por email antes do início da próxima aula.

Exercitando o cérebro....