Engenharia de Software I - fct.unesp.br · PRESSMAN, R. S. Engenharia de Software, 6 ... Análise...

72
FCT-UNESP 25/04/2017 Prof. Dr. Rogério Eduardo Garcia 1 Bacharelado em Ciência da Computação 2017 Engenharia de Software I Rogério Eduardo Garcia ([email protected]) BCC 2017 Bibliografia Básica PRESSMAN, R. S. Engenharia de Software, 6ª Edição, McGraw-Hill, Boston, 2001. SOMMERVILLE, I. Engenharia de Software, 6ª Edição, Addison-Wesley, São Paulo, 2003. PETERS, J. F.; PEDRYCZ, W. Engenharia de Software: teoria e prática, Editora Campus, Rio de Janeiro, 2001. PFLEEGER, S. L. Engenharia de Software, Teoria e Prática. Pearson Brasil, 2004. 25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 2

Transcript of Engenharia de Software I - fct.unesp.br · PRESSMAN, R. S. Engenharia de Software, 6 ... Análise...

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �1

Bacharelado emCiência da

Computação2017

Engenharia de Software I

Rogério Eduardo Garcia([email protected])

BCC2017Bibliografia Básica

� PRESSMAN, R. S. Engenharia de Software, 6ªEdição, McGraw-Hill, Boston, 2001.

� SOMMERVILLE, I. Engenharia de Software, 6ªEdição, Addison-Wesley, São Paulo, 2003.

� PETERS, J. F.; PEDRYCZ, W. Engenharia deSoftware: teoria e prática, Editora Campus, Riode Janeiro, 2001.

� PFLEEGER, S. L. Engenharia de Software,Teoria e Prática. Pearson Brasil, 2004.

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 2

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �2

BCC2017Metodologia

� Aulas expositivas teórico-práticas;� Exercícios práticos;� Projetos individuais e/ou em grupo;� Seminários, individuais e em grupo, sobre

tópicos abordados e relacionados.

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 3

BCC2017Avaliação

� As notas de todas as atividades – entre 0 (zero) e 10,0 (dez) –serão atribuídas individualmente, mesmo em atividades em grupo;

� A média final será calculada da seguinte maneira:� MA = (NP1 + 2*NP2)/3� Mt = (NT1 + NT2 +...+ NTn) / n� MT = (7 * NPJ + 3 * Mt)� Média Final:

� MF = (MA + MT)/2 SE E SOMENTE SE (MA>=5 E MT>=5)� Caso contrário (MP<5 OU MT<5) MF = Menor Nota� Sendo:

� MF = Média Final.� MA = Média de Provas� MT = Média de Trabalhos e Projeto� Mt = Média de Trabalhos

Estude como se você fosse viver para sempre. Viva como se você fosse morrer amanhã

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 4

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �3

BCC2017Tópicos da Disciplina

� Introdução: Histórico do desenvolvimento da área de Engenhariade Software. Conceitos básicos e terminologia.

� Objetivos da Engenharia de Software: Finalidade e aplicabilidadedos métodos e técnicas da Engenharia de Software, fornecendouma visão ampla e abrangente da área. Qualidade de Software(ISO 9126)

� Processo de software: Definição de processo de software.Comparação entre modelos de ciclo de vida. Descrição dasatividades no desenvolvimento de software.

� Análise de Requisitos de software: Técnicas de especificação derequisitos. Tipos de requisitos. Modelo de sistemas.

� Projeto de software: Arquitetura de software. Modelos paraarquitetura de sistemas. Sistema de tempo real. Interface com ousuário.

� Verificação e validação de software: Distinção entre verificação evalidação. Planejamento. Testes de software. Sistemas críticos.

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 5

BCC2017Cronograma

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 6

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �4

BCC2017

Software e Engenharia de Software

� A importância do Software� Software� Aplicações de Software� Mitos de Software� Processo de Software� Modelos de Processo de

Desenvolvimento de Software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 7

BCC2017

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 8

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �5

BCC2017SOFTWARE

� “Software é um lugar onde sonhos sãoplantados e pesadelos são colhidos, umpântano abstrato e místico onde demôniosterríveis competem com mágicas panaceias,um mundo de lobisomem e balas de prata”

Brad J. Cox

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 9

BCC2017SOFTWARE

� INSTRUÇÕES que quando executadasproduzem a função e o desempenhodesejados

� ESTRUTURAS DE DADOS que possibilitamque os programas manipulemadequadamente a informação

� DOCUMENTOS que descrevem a operaçãoe o uso dos programas

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 10

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �6

BCC2017Características do Software

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

� Não se desgasta, mas se deteriora

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 11

BCC2017Características do Software

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

� Não se desgasta, mas se deteriora

Curva de Falhas do Hardwaretempo

“desgaste”“mortalidade infantil”

índ

ice

de

falh

as

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 12

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �7

BCC2017Características do Software

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

� Não se desgasta, mas se deteriora

mu

dan

ça

curva idealizada

tempo

Curva de Falhas do Software

índ

ice

de

falh

as

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 13

curva real

BCC2017Características do Software

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

� Não se desgasta, mas se deteriora� A maioria é feita sob medida em vez de ser

montada a partir de componentes existentes

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 14

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �8

BCC2017Aplicações do Software

� Básico� De Tempo Real� Comercial� Científico e de Engenharia� Embutido� De Computador Pessoal� De Inteligência Artificial

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 15

BCC2017Evolução do Software

(1950 - 1965)� O hardware sofreu contínuas mudanças� O software era uma arte "secundária" para a

qual havia poucos métodos sistemáticos� O hardware era de propósito geral� O software era específico para cada

aplicação� Não havia documentação

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 16

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �9

BCC2017Evolução do Software

(1965 - 1975)� Multiprogramação e sistemas multiusuários� Técnicas interativas� Sistemas de tempo real� 1ª geração de SGBD’s� Produto de software - software houses� Bibliotecas de Software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 17

BCC2017Evolução do Software

(1965 - 1975)� Cresce o número de sistemas baseado em

computador� Manutenção quase impossível

..... CRISE DE SOFTWARE

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 18

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �10

BCC2017Evolução do Software

(1965 - 1975)� Cresce o número de sistemas baseado em

computador� Manutenção quase impossível

..... CRISE DE SOFTWARE

CRISE DE SOFTWARERefere-se a um conjunto de

problemas encontrados no desenvolvimento de software

AFLIÇÃO CRÔNICA

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 19

BCC2017Evolução do Software

(1975 - hoje)� Sistemas distribuídos� Redes locais e globais� Uso generalizado de microprocessadores -

produtos inteligentes� Hardware de baixo custo� Impacto de consumo

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 20

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �11

BCC2017Crise de Software - problemas

1) As estimativas de prazo e de custofrequentemente são imprecisas� “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 denovas ferramentas, métodos ou padrões”

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 21

BCC2017Crise de Software - problemas

2) Insatisfação do cliente com o sistemaconcluído� “Os projetos de desenvolvimento de software

normalmente são efetuados apenas com umvago indício das exigências do cliente”

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 22

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �12

BCC2017Crise de Software - problemas

3) A qualidade de software às vezes é menosque adequada� Só recentemente começam a surgir conceitos

quantitativos sólidos de garantia de qualidade desoftware

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 23

BCC2017Crise de Software - problemas

4) O software existente é muito difícil demanter� 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

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 24

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �13

BCC2017

Causas dos problemas associados à crise de software

1) PRÓPRIO CARÁTER DO SOFTWARE� O software é um elemento de sistema lógico e

não físico. Consequentemente o sucesso émedido pela qualidade de uma única entidade enão pela qualidade de muitas entidadesmanufaturadas

O software não se desgasta, mas se deteriora

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 25

BCC2017

Causas dos problemas associados à crise de software

2) FALHAS DAS PESSOAS RESPONSÁVEISPELO DESENVOLVIMENTO DESOFTWARE� Gerentes sem nenhum background em software� Profissionais da área de software têm pouco

treinamento formal em novas técnicas para odesenvolvimento de software

� Resistência a mudanças

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 26

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �14

BCC2017

Causas dos problemas associados à crise de software

3) MITOS DO SOFTWARE� Propagaram desinformação e confusão

� Administrativos� Cliente� Profissional

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 27

BCC2017

Mito 1:� Já temos um manual repleto de padrões e

procedimentos para a construção desoftware.

� Isso não oferecerá ao meu pessoal tudo oque eles precisam saber?

Mitos do SoftwareADMINISTRATIVOS:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 28

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �15

BCC2017

Mito 1:� Já temos um manual repleto de padrões e

procedimentos para a construção desoftware.

� Isso não oferecerá ao meu pessoal tudo oque eles precisam saber?

Mitos do SoftwareADMINISTRATIVOS:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 29

BCC2017

Mito 2:� Meu pessoal tem ferramentas de

desenvolvimento de software de últimageração.

Mitos do SoftwareADMINISTRATIVOS:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 30

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �16

BCC2017

Mito 2:� Meu pessoal tem ferramentas de

desenvolvimento de software de últimageração.

Mitos do SoftwareADMINISTRATIVOS:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 31

BCC2017

Mito 3:� Se nós estamos atrasados nos prazos,

podemos adicionar mais programadores etirar o atraso.

Mitos do SoftwareADMINISTRATIVOS:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 32

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �17

BCC2017

Mito 3:� Se nós estamos atrasados nos prazos,

podemos adicionar mais programadores etirar o atraso

Mitos do SoftwareADMINISTRATIVOS:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 33

BCC2017

Mito 1:� Uma declaração geral dos objetivos é

suficiente para se começar a escreverprogramas - podemos preencher os detalhesmais tarde.

Mitos do SoftwareCLIENTE:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 34

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �18

BCC2017

Mito 1:� Uma declaração geral dos objetivos é

suficiente para se começar a escreverprogramas - podemos preencher os detalhesmais tarde.

Mitos do SoftwareCLIENTE:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 35

BCC2017

Mito 2:� Os requisitos de projeto modificam-se

continuamente, mas as mudanças podem serfacilmente acomodadas, porque o software éflexível.

Mitos do SoftwareCLIENTE:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 36

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �19

BCC2017

Mito 2:� Os requisitos de projeto modificam-se

continuamente, mas as mudanças podem serfacilmente acomodadas, porque o software éflexível.

Mitos do SoftwareCLIENTE:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 37

BCC2017

MAGNITUDE DAS MUDANÇAS

Mitos do Software

FASES CUSTO DE MANUTENÇÃO

DEFINIÇÃO 1x

DESENVOLVIMENTO 1.5 a 6x

MANUTENÇÃO 60 a 100x

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 38

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �20

BCC2017

Mito 1:� Assim que escrevermos o programa e o

colocarmos em funcionamento nossotrabalho estará completo.

Mitos do SoftwarePROFISSIONAL:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 39

BCC2017

Mito 1:� Assim que escrevermos o programa e o

colocarmos em funcionamento nossotrabalho estará completo.

Mitos do SoftwarePROFISSIONAL:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 40

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �21

BCC2017

Mito 2:� Enquanto não tiver o programa

"funcionando", eu não terei realmentenenhuma maneira de avaliar sua qualidade.

Mitos do SoftwarePROFISSIONAL:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 41

BCC2017

Mito 2:� Enquanto não tiver o programa

"funcionando", eu não terei realmentenenhuma maneira de avaliar sua qualidade.

Mitos do SoftwarePROFISSIONAL:

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 42

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �22

BCC2017Evolução do Software

� (1965 - 1975)� Cresce o número de sistemas baseado em

computador� Manutenção quase impossível

CRISE DE SOFTWARE

Refere-se a um conjunto de problemas

encontrados no desenvolvimento de

software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 43

BCC2017Resposta à Crise de Software

� A aplicação de uma abordagem sistemática,disciplinada e possível de ser medida para odesenvolvimento, operação e manutenção dosoftware (IEEE)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 44

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �23

BCC2017Resposta à Crise de Software

PROCESSO DE SOFTWARE

� A aplicação de uma abordagem sistemática,disciplinada e possível de ser medida para odesenvolvimento, operação e manutenção dosoftware (IEEE)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 45

BCC2017Engenharia de Software

� Pode ser vista como uma abordagem dedesenvolvimento de software elaborada comdisciplina e métodos bem definidos.

.....“a construção por múltiplas pessoas de um

software de múltiplas versões”

[Parnas 1987]

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 46

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �24

BCC2017Qualidade

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 47

BCC2017Qualidade de Software

O QUE

Funcionalidade

QUANDO e COMO

Confiabilidade

Usabilidade

Eficiência

Manutenibilidade

Portabilidade

Norma ISO/IEC 9126Características

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 48

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �25

BCC2017Qualidade de Software

UsuárioDesenvolvedorOrganização requisitos de

software produto Processo

deDesenvolvimento

SOFTWARE PRODUTO

requisitosatendidos

SOFTWARE COM QUALIDADE

PROCESSO DE SOFTWAREDefinição

Avaliação

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 49

BCC2017O Processo de Software

� Abrange um conjunto de três elementosfundamentais: Métodos, Ferramentas eProcedimentos para projetar, construir emanter grandes sistemas de software deforma profissional

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 50

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �26

BCC2017O Processo de Software

� MÉTODOS: proporcionam os detalhes decomo fazer para construir o software

� Planejamento e estimativa de projeto

� Análise de requisitos de software e de sistemas

� Projeto da estrutura de dados

� Algoritmo de processamento

� Codificação

� Teste

� Manutenção

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 51

BCC2017O Processo de Software

� FERRAMENTAS: dão suporte automatizadoaos métodos

� Existem atualmente ferramentas para sustentarcada um dos métodos

� Quando as ferramentas são integradas, éestabelecido um sistema de suporte aodesenvolvimento de software chamado CASE -

Computer Aided Software Engineering

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 52

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �27

BCC2017O Processo de Software

� PROCEDIMENTOS: constituem o elo deligação entre os métodos e ferramentas

� Sequência em que os métodos devem seraplicados

� Produtos que se exige que sejam entregues

� Controles que ajudam assegurar a qualidade ecoordenar as alterações

� Marcos de referência que possibilitamadministrar o progresso do software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 53

BCC2017ISO 12207: Estrutura

Processos Fundamentais Processos de Apoio

Processos Organizacionais

Aquisição

Fornecimento

Desenvolvimento

Operação

Manutenção

Documentação

Garantia de Qualidade

Verificação

Validação

Revisão Conjunta

Auditoria

Resolução de Problemas

Gerência

Melhoria

Infra-estrutura

Treinamento

Ada

ptaç

ão

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 54

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �28

BCC2017

Processo de Software com Qualidade

� A Qualidade do Processo de Software estárelacionada à extensão na qual um processo desoftware específico é eficiente e é explicitamentedefinido, gerenciado, medido e controlado.

� A Qualidade de Processo de Software tambémimplica em um potencial para crescimento nacapacidade do processo de software e aconsistência com a qual ele é aplicado em projetospor toda a organização.

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 55

BCC2017

Processo de Software com Qualidade (SOMMERVILLE)

� Inteligibilidade� O processo é definido e inteligível

� Visibilidade� O progresso do processo é visível

externamente

� Suportabilidade� O processo pode ser apoiado por ferramentas

CASE

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 56

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �29

BCC2017

Processo de Software com Qualidade (SOMMERVILLE)

� Aceitabilidade� O processo é aceito por todos envolvidos nele

� Confiabilidade� Os erros do processo são descobertos antes

que resultem em erros no produto

� Robustez� O processo pode continuar a despeito de

problemas inesperados

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 57

BCC2017

Processo de Software com Qualidade (SOMMERVILLE)

� Manutenibilidade� O processo pode evoluir para atender

alterações de necessidades organizacionais

� Velocidade� Quão rápido o sistema pode ser produzido

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 58

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �30

BCC2017

MODELOS DE PROCESSO DE SOFTWARE

Processo de Software com Qualidade

PROCESSO DE SOFTWARE

eficiente

controlado

definido

medido

gerenciado

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 59

BCC2017

Fases Genéricas dos Modelos de Processo de ENGENHARIA� Especificação - estabelecer os requisitos e restrições

do sistema

� Projeto - produzir um modelo documentado do sistema

� Implementação - construir o sistema

� Teste - verificar se o sistema atende às especificaçõesrequeridas

� Instalação - liberar o sistema para o cliente e garantirque ele seja operacional

� Manutenção – eliminar defeitos e evoluir o sistemaconforme demanda

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 60

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �31

BCC2017

Fases Genéricas dos Modelos de Processo de SOFTWARE

� Independentemente da natureza do projeto eaplicação os modelos de processo desoftware possuem:

� Fase de definição� Fase de desenvolvimento� Fase de manutenção� Atividades de apoio

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 61

BCC2017

Fase de Definição do Processo de Software

Focaliza "o que" será desenvolvido� Que informação vai ser processada� Que função e desempenho são desejados� Que comportamento pode ser esperado do sistema� Que interfaces vão ser estabelecidas� Que restrições de projeto existem� Que critérios de validação são exigidos para definir

um sistema bem sucedido� Que tarefas serão realizadas

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 62

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �32

BCC2017

Fase de Definição do Processo de Software

Focaliza "o que" será desenvolvido� Que informação vai ser processada� Que função e desempenho são desejados� Que comportamento pode ser esperado do sistema� Que interfaces vão ser estabelecidas� Que restrições de projeto existem� Que critérios de validação são exigidos para definir

um sistema bem sucedido� Que tarefas serão realizadas

Três tarefas principais ocorrem de alguma forma:

engenharia de sistemas

planejamento do projeto de software

análise de requisitos

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 63

BCC2017

Fase de Desenvolvimento do Processo de Software

Focaliza "como" o software será desenvolvido� Como os dados vão ser estruturados� Como a função vai ser implementada como uma

arquitetura de software� Como os detalhes procedimentais vão ser

implementados� Como as interfaces vão ser caracterizadas� Como o projeto será traduzido em uma linguagem

de programação� Como os testes serão efetuados

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 64

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �33

BCC2017

Fase de Desenvolvimento do Processo de Software

Focaliza "como" o software será desenvolvido� Como os dados vão ser estruturados� Como a função vai ser implementada como uma

arquitetura de software� Como os detalhes procedimentais vão ser

implementados� Como as interfaces vão ser caracterizadas� Como o projeto será traduzido em uma linguagem

de programação� Como os testes serão efetuados

Três tarefas técnicas específicas deverão ocorrer sempre:

projeto de software

geração de código

Inspeção e teste de software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 65

BCC2017

Fase de Manutenção do Processo de Software

Focaliza as "mudanças" que ocorrerão depois que o software for liberado para uso operacional

� A fase de manutenção reaplica os passos das fasesde definição e desenvolvimento, mas faz isso nocontexto de um software existente.

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 66

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �34

BCC2017

Fase de Manutenção do Processo de Software

Focaliza as "mudanças" que ocorrerão depois que o software for liberado para uso operacional

� A fase de manutenção reaplica os passos das fasesde definição e desenvolvimento, mas faz isso nocontexto de um software existente.

As mudanças estão associadas com:

• Correção de erros/defeitos• Adaptações exigidas conforme o ambiente

do software evolui• Mudanças devido a melhoramentos

ocorridos por alterações nos requisitos dos clientes

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 67

BCC2017

Atividades de Apoio ao Processo de Software

� As três fases genéricas do processo de softwaresão complementadas por uma série de atividades

de apoio

� As atividades de apoio são aplicadas durante toda aengenharia do software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 68

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �35

BCC2017

Atividades de Apoio ao Processo de Software

� As três fases genéricas do processo de softwaresão complementadas por uma série de atividades

de apoio

� As atividades de apoio são aplicadas durante toda aengenharia do software

Atividades típicas nessa categoria são:

� Controle e Acompanhamento do Projeto de Software

� Revisões Técnicas Formais

� Garantia de Qualidade de Software

� Gerenciamento de Configuração de Software

� Preparação e Produção de Documentos

� Gerenciamento de Reusabilidade

� Medidas

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 69

BCC2017

Modelos de Processo de Desenvolvimento de Software

� Existem vários modelos de processo de

desenvolvimento de software (ou paradigmas

de engenharia de software)� Cada um representa uma tentativa de

colocar ordem em uma atividadeinerentemente caótica

� Pode-se citar os seguintes modelos de

processo de desenvolvimento de software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 70

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �36

BCC2017

Modelos de Processo de Desenvolvimento de Software� O Modelo Sequencial Linear

� Também chamado Modelo Cascata

� O Modelo de Prototipação� O Modelo RAD (Rapid Application Development)� Modelos Evolutivos de Processo de Software

� O Modelo Incremental� O Modelo Espiral� O Modelo de Montagem de Componentes

� Técnicas de Quarta Geração

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 71

BCC2017

Modelos de Processo de Desenvolvimento de Software� O Modelo Sequencial Linear

� Também chamado Modelo Cascata� O Modelo de Prototipação� O Modelo RAD (Rapid Application Development)� Modelos Evolutivos de Processo de Software

� O Modelo Incremental� O Modelo Espiral� O Modelo de Montagem de Componentes

� Técnicas de Quarta Geração

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 72

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �37

BCC2017O Modelo Cascata

� Modelo mais antigo e o mais amplamenteusado da engenharia de software

� Modelado em função do ciclo da engenhariaconvencional

� Requer uma abordagem sistemática,sequencial ao desenvolvimento de software

� O resultado de uma fase se constitui naentrada da outra

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 73

BCC2017O Modelo Cascata

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 74

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �38

BCC2017O Modelo Cascata

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Engenharia de Sistemas / Informação e Modelagem

� Envolve a coleta de requisitos em nível dosistema, com uma pequena quantidade de projetoe análise de alto nível

� Esta visão é essencial quando o software devefazer interface com outros elementos (hardware,pessoas e banco de dados)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 75

BCC2017O Modelo Cascata

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Análise de Requisitos de Software� O processo de coleta dos requisitos é intensificado e

concentrado especificamente no software� Deve-se compreender o domínio da informação, a função,

desempenho e interfaces exigidos� Os requisitos (para o sistema e para o software) são

documentados e revistos com o cliente

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 76

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �39

BCC2017O Modelo Cascata

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

ManutençãoProjeto

� Tradução dos requisitos do software para um conjunto derepresentações que podem ser avaliadas quanto àqualidade, antes que a codificação se inicie

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 77

BCC2017O Modelo Cascata

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

ManutençãoCodificação� Tradução das representações do projeto

para uma linguagem “artificial” resultandoem instruções executáveis pelo computador

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 78

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �40

BCC2017O Modelo Cascata

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Testes� Concentra-se:

� Nos aspectos lógicos internos do software, garantindo quetodas as instruções tenham sido testadas

� Nos aspectos funcionais externos, para descobrir erros egarantir que a entrada definida produza resultados queconcordem com os esperados

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 79

BCC2017O Modelo Cascata

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Manutenção� Provavelmente o software

deverá sofrer mudanças depoisque for entregue ao cliente

� Causas das mudanças: erros,adaptação do software paraacomodar mudanças em seuambiente externo e exigênciado cliente para acréscimosfuncionais e de desempenho

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 80

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �41

BCC2017

Problemas com o Modelo Cascata

� Projetos reais raramente seguem o fluxo“sequencial” que o modelo propõe

� Logo no início é difícil estabelecerexplicitamente todos os requisitos. Nocomeço dos projetos sempre existe umaincerteza natural

� O cliente deve ter paciência. Uma versãoexecutável do software só fica disponível emuma etapa avançada do desenvolvimento

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 81

BCC2017

Problemas com o Modelo Cascata

� Projetos reais raramente seguem o fluxo“sequencial” que o modelo propõe

� Logo no início é difícil estabelecerexplicitamente todos os requisitos. Nocomeço dos projetos sempre existe umaincerteza natural

� O cliente deve ter paciência. Uma versãoexecutável do software só fica disponível emuma etapa avançada do desenvolvimento

�Embora o Modelo Cascata tenha

fragilidades, ele é significativamente

melhor do que uma abordagem casual

ao desenvolvimento de software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 82

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �42

BCC2017O Modelo Cascata

� O modelo Cascata trouxe contribuiçõesimportantes para o processo dedesenvolvimento de software:� Imposição de disciplina, planejamento e

gerenciamento� A implementação do produto deve ser

postergada até que os objetivos tenham sidocompletamente entendidos

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 83

BCC2017

Modelos de Processo de Desenvolvimento de Software� O Modelo Sequencial Linear

� Também chamado Modelo Cascata

� O Modelo de Prototipação� O Modelo RAD (Rapid Application Development)� Modelos Evolutivos de Processo de Software

� O Modelo Incremental� O Modelo Espiral� O Modelo de Montagem de Componentes

� Técnicas de Quarta Geração

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 84

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �43

BCC2017O Modelo de Prototipação

� O objetivo é entender os requisitos dousuário e, assim, obter uma melhor definiçãodos requisitos do sistema

� Possibilita que o desenvolvedor crie ummodelo (protótipo) do software que deve serconstruído

� Apropriado para quando o cliente não definiudetalhadamente os requisitos

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 85

BCC2017

O Modelo de Prototipação para obtenção dos requisitos

Obter Requisitos

Elaborar Projeto Rápido

Construir Protótipo

Avaliar Protótipo

Refinamento do Protótipo

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 86

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �44

BCC2017

O Modelo de Prototipação para obtenção dos requisitos

Obter Requisitos

Elaborar Projeto Rápido

Construir Protótipo

Avaliar Protótipo

Refinamento do Protótipo

1- OBTENÇÃO DOS REQUISITOS:desenvolvedor e cliente definem os objetivosgerais do software, identificam quaisrequisitos são conhecidos e as áreas quenecessitam de definições adicionais

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 87

BCC2017

O Modelo de Prototipação para obtenção dos requisitos

Obter Requisitos

Elaborar Projeto Rápido

Construir Protótipo

Avaliar Protótipo

Refinamento do Protótipo2- PROJETO RÁPIDO: representação dosaspectos do software que são visíveis aousuário (abordagens de entrada eformatos de saída)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 88

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �45

BCC2017

O Modelo de Prototipação para obtenção dos requisitos

Obter Requisitos

Elaborar Projeto Rápido

Construir ProtótipoAvaliar Protótipo

Refinamento do Protótipo3- CONSTRUÇÃO PROTÓTIPO:

implementação rápida doprojeto

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 89

BCC2017

O Modelo de Prototipação para obtenção dos requisitos

Obter Requisitos

Elaborar Projeto Rápido

Construir Protótipo

Avaliar Protótipo

Refinamento do Protótipo4- AVALIAÇÃO DO PROTÓTIPO: cliente e

desenvolvedor avaliam o protótipo

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 90

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �46

BCC2017

O Modelo de Prototipação para obtenção dos requisitos

Obter Requisitos

Elaborar Projeto Rápido

Construir Protótipo

Avaliar Protótipo

Refinamento do Protótipo

5- REFINAMENTO DO PROTÓTIPO: cliente edesenvolvedor refinam os requisitos dosoftware a ser desenvolvido

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 91

BCC2017

O Modelo de Prototipação para obtenção dos requisitos

Obter Requisitos

Elaborar Projeto Rápido

Construir Protótipo

Refinamento do Protótipo

CONSTRUÇÃO DO PRODUTO

Avaliar Protótipo

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 92

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �47

BCC2017

O Modelo de Prototipação para obtenção dos requisitos

Obter Requisitos

Elaborar Projeto Rápido

Construir Protótipo

Refinamento do Protótipo

CONSTRUÇÃO DO PRODUTO

Avaliar Protótipo

6- CONSTRUÇÃO PRODUTO: identificados osrequisitos, o protótipo deve ser descartadoe a versão de produção deve ser construídaconsiderando os critérios de qualidade

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 93

BCC2017Problemas com a Prototipação

� Cliente não sabe que o software que ele vênão considerou, durante o desenvolvimento,a qualidade global e a manutenibilidade alongo prazo

� Desenvolvedor frequentemente faz umaimplementação comprometida (utilizando oque está disponível) com o objetivo deproduzir rapidamente um protótipo

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 94

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �48

BCC2017

Comentários sobre o Modelo de Prototipação

� Ainda que possam ocorrer problemas, aprototipação é um ciclo de vida eficiente

� A chave é definir-se as regras do jogo logono começo

� O cliente e o desenvolvedor devem ambosconcordar que o protótipo seja construídopara servir como um mecanismo a fim dedefinir os requisitos

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 95

BCC2017

Modelos de Processo de Desenvolvimento de Software� O Modelo Sequencial Linear

� Também chamado Modelo Cascata

� O Modelo de Prototipação� O Modelo RAD (Rapid Application Development)� Modelos Evolutivos de Processo de Software

� O Modelo Incremental� O Modelo Espiral� O Modelo de Montagem de Componentes� O Modelo de Desenvolvimento Concorrente

� Modelos de Métodos Formais� Técnicas de Quarta Geração

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 96

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �49

BCC2017O Modelo RAD

� RAD (Rapid Application Development) é ummodelo sequencial linear que enfatiza umciclo de desenvolvimento extremamentecurto

� O desenvolvimento rápido é obtido usandouma abordagem de construção baseada emcomponentes

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 97

BCC2017O Modelo RAD

� Os requisitos devem ser bem entendidos e oalcance do projeto restrito

� O modelo RAD é usado principalmente paraaplicações de sistema de informação

� Cada função principal pode ser direcionadapara uma equipe RAD separada e entãointegrada para formar o todo

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 98

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �50

BCC2017O Modelo RAD

Modelagem

do Negócio

Modelagem

dos Dados

Modelagem

do Processo

Geração da

Aplicação

Teste e

Modificação

Equipe #1

Modelagem

do Negócio

Modelagem

dos Dados

Modelagem

do Processo

Geração da

Aplicação

Teste e

Modificação

Equipe #2 Modelagem

do Negócio

Modelagem

dos Dados

Modelagem

do Processo

Geração da

Aplicação

Teste e

Modificação

Equipe #3

60 a 90 dias

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 99

BCC2017O Modelo RAD

Desvantagens:� Exige recursos humanos suficientes para todas

as equipes� Exige que desenvolvedores e clientes estejam

comprometidos com as atividades de “fogo-rápido” a fim de terminar o projeto num prazocurto

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 100

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �51

BCC2017O Modelo RAD

� Nem todos os tipos de aplicação sãoapropriadas para o RAD:� Deve ser possível a modularização efetiva da

aplicação� Se alto desempenho é uma característica e o

desempenho é obtido sintonizando as interfacesdos componentes do sistema, a abordagem RADpode não funcionar

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 101

BCC2017

Modelos de Processo de Desenvolvimento de Software� O Modelo Sequencial Linear

� Também chamado Modelo Cascata

� O Modelo de Prototipação� O Modelo RAD (Rapid Application Development)� Modelos Evolutivos de Processo de Software

� O Modelo Incremental� O Modelo Espiral� O Modelo de Montagem de Componentes� O Modelo de Desenvolvimento Concorrente

� Modelos de Métodos Formais� Técnicas de Quarta Geração

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 102

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �52

BCC2017

Modelos Evolutivos de Processo

� Existem situações em que a engenharia desoftware necessita de um modelo deprocesso que possa acomodar um produtoque evolui com o tempo

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 103

BCC2017

Modelos Evolutivos de Processo

� Quando os requisitos de produto e de negóciomudam conforme o desenvolvimento procede

� Quando uma data de entrega apertada (mercado) -impossível a conclusão de um produto completo

� Quando um conjunto de requisitos importantes ébem conhecido, porém os detalhes ainda devemser definidos

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 104

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �53

BCC2017

Modelos Evolutivos de Processo

� Modelos evolutivos são iterativos� Possibilitam o desenvolvimento de versões

cada vez mais completas do software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 105

BCC2017

Modelos de Processo de Desenvolvimento de Software� O Modelo Sequencial Linear

� Também chamado Modelo Cascata

� O Modelo de Prototipação� O Modelo RAD (Rapid Application Development)� Modelos Evolutivos de Processo de Software

� O Modelo Incremental� O Modelo Espiral� O Modelo de Montagem de Componentes� O Modelo de Desenvolvimento Concorrente

� Modelos de Métodos Formais� Técnicas de Quarta Geração

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 106

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �54

BCC2017O Modelo Incremental

� O modelo incremental combina elementosdo modelo cascata (aplicado repetidamente)com a filosofia iterativa da prototipação

� O objetivo é trabalhar junto do usuário paradescobrir seus requisitos, de maneiraincremental, até que o produto final sejaobtido

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 107

BCC2017

O Modelo Incremental (SOMMERVILLE)

Versão Inicial

Descrição geral Descrição

geral

Descrição geral

Versões Intermediárias

Versão Final

Análise Projeto

Codificação

Teste

Engenharia de

sistemas/informação

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 108

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �55

BCC2017O Modelo Incremental

� A versão inicial é frequentemente o núcleodo produto (a parte mais importante)� A evolução acontece quando novas

características são adicionadas à medida quesão sugeridas pelo usuário

� Este modelo é importante quando é difícilestabelecer a priori uma especificaçãodetalhada dos requisitos

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 109

BCC2017O Modelo Incremental

� O modelo incremental é mais apropriadopara sistemas pequenos

� As novas versões podem ser planejadas demodo que os riscos técnicos possam seradministrados (Ex. disponibilidade dedeterminado hardware)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 110

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �56

BCC2017

Modelos de Processo de Desenvolvimento de Software� O Modelo Sequencial Linear

� Também chamado Modelo Cascata

� O Modelo de Prototipação� O Modelo RAD (Rapid Application Development)� Modelos Evolutivos de Processo de Software

� O Modelo Incremental� O Modelo Espiral� O Modelo de Montagem de Componentes

� Técnicas de Quarta Geração

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 111

BCC2017O Modelo Espiral

� O modelo espiral acopla a natureza iterativada prototipação com os aspectos controladose sistemáticos do modelo cascata

� O modelo espiral é dividido em uma série deatividades de trabalho ou regiões de tarefa

� Existem tipicamente de 3 a 6 regiões detarefa

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 112

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �57

BCC2017

O Modelo Espiral (com 4 regiões)

DETERMINAR OBJETIVOS, ALTERNATIVAS E

RESTRIÇÕES

PLANEJAR PRÓXIMA FASE

AVALIAR ALTERNATIVAS,IDENTIFICAR, RESOLVER RISCOS

DESENVOLVER, VERIFICARPRODUTO NO PRÓXIMO NÍVEL

Análisede risco

Análisede risco

Análisede risco

Análisede risco

Protótipo 3Protótipo 2

Protó-tipo 1

Protótipo de

operação

Revisão

Simulação, modelos, benchmarksConceito deoperação

Plano de requisitosPlano de ciclo de vida

Plano dedesenvolvimento

Integração eplano de teste

Requisitosde S/W Projeto do

produtoProjetodetalhado

Código

Teste deunidadeTeste de

integraçãoTeste deaceitaçãoOperação

Validação de requisitos

V & V doprojeto

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 113

BCC2017

O Modelo EspiralDETERMINAR OBJETIVOS,

ALTERNATIVAS E RESTRIÇÕES

PLANEJAR PRÓXIMA FASE

AVALIAR ALTERNATIVAS,IDENTIFICAR, RESOLVER RISCOS

DESENVOLVER, VERIFICARPRODUTO NO PRÓXIMO NÍVEL

Análisede risco

Análisede risco

Análisede risco

Análisede risco

Protótipo 3Protótipo 2

Protó-tipo 1

Protótipo de

operação

Revisão

Simulação, modelos, benchmarksConceito deoperação

Plano de requisitosPlano de ciclo de vida

Plano dedesenvolvimento

Integração eplano de teste

Requisitosde S/W Projeto do

produtoProjetodetalhado

Código

Teste deunidadeTeste de

integraçãoTeste deaceitaçãoOperação

Validação de requisitos

V & V doprojeto

cada “loop” no espiral representa

uma fase do processo de

software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 114

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �58

BCC2017

O Modelo Espiral

Análisede risco Protó-

tipo 1Revisão

Conceito deoperação

Plano de requisitosPlano de ciclo de vida

o “loop” mais interno está concentrado nas possibilidades do sistema

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 115

BCC2017

O Modelo Espiral

Análisede risco

Protótipo 2

Simulação, modelos, benchmarks

Plano dedesenvolvimento

Requisitosde S/W

Validação de requisitos

o próximo “loop”está concentrado na definição dos requisitos do sistema

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 116

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �59

BCC2017

O Modelo Espiral

Análisede risco

Protótipo 3

Simulação, modelos, benchmarks

Integração eplano de teste

Projeto doproduto

V & V doprojeto

o “loop” um pouco mais externo está concentrado no projeto do sistema

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 117

BCC2017

O Modelo Espiral

Análisede risco

Protótipo de

operação

Simulação, modelos, benchmarks

Projetodetalhado

Código

Teste deunidadeTeste de

integraçãoTeste deaceitaçãoOperação

um “loop” ainda mais externo está concentrado na construção do sistema

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 118

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �60

BCC2017

O Modelo EspiralDETERMINAR OBJETIVOS,

ALTERNATIVAS E RESTRIÇÕES

PLANEJAR PRÓXIMA FASE

AVALIAR ALTERNATIVAS,IDENTIFICAR, RESOLVER RISCOS

DESENVOLVER, VERIFICARPRODUTO NO PRÓXIMO NÍVEL

Análisede risco

Análisede risco

Análisede risco

Análisede risco

Protótipo 3Protótipo 2

Protó-tipo 1

Protótipo de

operação

Revisão

Simulação, modelos, benchmarksConceito deoperação

Plano de requisitosPlano de ciclo de vida

Plano dedesenvolvimento

Integração eplano de teste

Requisitosde S/W Projeto do

produtoProjetodetalhado

Código

Teste deunidadeTeste de

integraçãoTeste deaceitaçãoOperação

Validação de requisitos

V & V doprojeto

� Não existem fases fixas no modelo� As fases mostradas na figura são

meramente exemplos� A gerência decide como estruturar

o projeto em fases

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 119

BCC2017

O Modelo Espiral (com 4 regiões)

DETERMINAR OBJETIVOS, ALTERNATIVAS E

RESTRIÇÕES

PLANEJAR PRÓXIMA FASE

AVALIAR ALTERNATIVAS,IDENTIFICAR, RESOLVER RISCOS

DESENVOLVER, VERIFICARPRODUTO NO PRÓXIMO NÍVEL

Análisede risco

Análisede risco

Análisede risco

Análisede risco

Protótipo 3Protótipo 2

Protó-tipo 1

Protótipo de

operação

Revisão

Simulação, modelos, benchmarksConceito deoperação

Plano de requisitosPlano de ciclo de vida

Plano dedesenvolvimento

Integração eplano de teste

Requisitosde S/W Projeto do

produtoProjetodetalhado

Código

Teste deunidadeTeste de

integraçãoTeste deaceitaçãoOperação

Validação de requisitos

V & V doprojeto

AVALIAÇÃO E REDUÇÃO DE

RISCOS

Cada “loop” do espiral é dividido em 4 setores

DESENVOLVIMENTO E VALIDAÇÃO

PLANEJAMENTO

DEFINIÇÃO DE

OBJETIVOS

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 120

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �61

BCC2017

• São definidos objetivos específicos para a fase do projeto

• São identificadas restrições sobre o processo e o produto

• É projetado um plano de gerenciamento detalhado

• São identificados riscos do projeto• Dependendo dos riscos, estratégias alternativas podem ser planejadas

DEFINIÇÃO DE

OBJETIVOS

O Modelo Espiral (com 4 regiões)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 121

BCC2017

• Para cada um dos riscos identificados, uma análise

detalhada é executada. Iniciativas são tomadas para

reduzir o risco

DEFINIÇÃO DE

OBJETIVOS

AVALIAÇÃO E REDUÇÃO DE

RISCOS

O Modelo Espiral (com 4 regiões)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 122

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �62

BCC2017

• Depois da avaliação do risco, um modelo de

desenvolvimento é escolhido para o sistema

DEFINIÇÃO DE

OBJETIVOS

AVALIAÇÃO E REDUÇÃO DE

RISCOS

DESENVOLVIMENTO E VALIDAÇÃO

O Modelo Espiral (com 4 regiões)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 123

BCC2017

DEFINIÇÃO DE

OBJETIVOS

AVALIAÇÃO E REDUÇÃO DE

RISCOS

DESENVOLVIMENTO E VALIDAÇÃO

• O projeto é revisto e é tomada uma decisão de continuidade

se é decidido continuar• São projetados planos para a

próxima fase do projeto (próximo “loop” )

PLANEJAMENTO

O Modelo Espiral (com 4 regiões)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 124

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �63

BCC2017

� Engloba as melhores características do ciclode vida Clássico e da Prototipação,adicionando um novo elemento: a Análisede Risco

� Segue a abordagem de passos sistemáticosdo Ciclo de Vida Clássico incorporando-osnuma estrutura iterativa que reflete maisrealisticamente o mundo real

� Usa a Prototipação, em qualquer etapa daevolução do produto, como mecanismo deredução de riscos

O Modelo Espiral

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 125

BCC2017

Comentários sobre o Modelo Espiral

� É, atualmente, a abordagem mais realísticapara o desenvolvimento de software emgrande escala

� Usa uma abordagem que capacita odesenvolvedor e o cliente a entender ereagir aos riscos em cada etapa evolutiva

� Pode ser difícil convencer os clientes queuma abordagem "evolutiva" é controlável

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 126

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �64

BCC2017

Comentários sobre o Modelo Espiral

� Exige considerável experiência nadeterminação de riscos e depende dessaexperiência para ter sucesso

� O modelo é relativamente novo e não temsido amplamente usado. Demorará muitosanos até que a eficácia desse modelo possaser determinada com certeza absoluta

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 127

BCC2017

Planejamento

Análise de Riscos

Engenharia

Construção e Liberação

Avaliação do Cliente

Comunicação com Cliente

O Modelo Espiral (com 6 regiões)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 128

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �65

BCC2017

Modelos de Processo de Desenvolvimento de Software� O Modelo Sequencial Linear

� Também chamado Modelo Cascata

� O Modelo de Prototipação� O Modelo RAD (Rapid Application Development)� Modelos Evolutivos de Processo de Software

� O Modelo Incremental� O Modelo Espiral� O Modelo de Montagem de Componentes

� Técnicas de Quarta Geração

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 129

BCC2017

O Modelo de Montagem de Componentes

� Utiliza tecnologias orientadas a objeto� Quando projetadas e implementadas

apropriadamente as classes orientadas aobjeto são reutilizáveis em diferentesaplicações e arquiteturas de sistema

� O modelo de montagem de componentesincorpora muitas das características domodelo espiral

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 130

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �66

BCC2017

O Modelo de Montagem de Componentes

Planejamento

Análise de Riscos

Avaliação do Cliente

Comunicação com Cliente

Engenharia Construção e Liberação

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 131

BCC2017

O Modelo de Montagem de ComponentesPlanejamento

Análise de Riscos

Avaliação do Cliente

Comunicação com Cliente

Engenharia Construção e Liberação

Identificar componentes

candidatos

Procurar componentes na biblioteca

Extrair componentes se disponíveis

Construir os componentes

não disponíveis

Colocar os novos

componentes na biblioteca

Construir a na

iteração do sistema

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 132

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �67

BCC2017

O Modelo de Montagem de Componentes

� O modelo de montagem de componentesconduz ao reúso do software

� A reusabilidade fornece uma série debenefícios:� Redução de 70% no tempo de desenvolvimento� Redução de 84% no custo do projeto� Índice de produtividade de 26.2 (normal da

indústria é de 16.9)

� Esses resultados dependem da robustez dabiblioteca de componentes

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 133

BCC2017

Modelos de Processo de Desenvolvimento de Software� O Modelo Sequencial Linear

� Também chamado Modelo Cascata

� O Modelo de Prototipação� O Modelo RAD (Rapid Application Development)� Modelos Evolutivos de Processo de Software

� O Modelo Incremental� O Modelo Espiral� O Modelo de Montagem de Componentes

� Técnicas de Quarta Geração

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 134

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �68

BCC2017Técnicas de 4ª Geração

� Concentra-se na capacidade de seespecificar o software a uma máquina em umnível que esteja próximo à linguagem natural

� Engloba um conjunto de ferramentas desoftware que possibilitam que:� O sistema seja especificado em uma linguagem

de alto nível� O código fonte seja gerado automaticamente a

partir dessas especificações

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 135

BCC2017

Ferramentas do Ambiente das Técnicas de 4ª Geração

� O ambiente de desenvolvimento de software quesustenta o ciclo de vida de 4ª geração inclui asferramentas:� Linguagens não procedimentais para consulta de banco de

dados� Geração de relatórios� Manipulação de dados� Interação e definição de telas� Geração de códigos� Capacidade gráfica de alto nível� Capacidade de planilhas eletrônicas

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 136

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �69

BCC2017Técnicas de 4a Geração

Obtenção dos Requisitos

Estratégia do “Projeto”

Implementação usando 4GL

Testes

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 137

BCC2017Técnicas de 4a Geração

Obtenção dos Requisitos

Estratégia do “Projeto”

Implementação usando 4GL

Testes

OBTENÇÃO DOS REQUISITOS:

• O cliente descreve os requisitos os quais sãotraduzidos para um protótipo operacional

• O cliente pode estar inseguro quanto aos requisitos

• O cliente pode ser incapaz de especificar as informaçõesde um modo que uma ferramenta 4GL possa consumir

• As 4GLs atuais não são sofisticadas suficientemente paraacomodar a verdadeira "linguagem natural"

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 138

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �70

BCC2017Técnicas de 4a Geração

Obtenção dos Requisitos

Estratégia do “Projeto”

Implementação usando 4GL

Testes

ESTRATÉGIA DO "PROJETO":

• Para pequenas aplicações é possível mover-se do passode Obtenção dos Requisitos para o passo deImplementação usando uma linguagem de quartageração

• Para grandes projetos é necessário desenvolver umaestratégia de projeto. De outro modo ocorrerão osmesmos problemas encontrados quando se usaabordagem convencional (baixa qualidade)

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 139

BCC2017Técnicas de 4a Geração

Obtenção dos Requisitos

Estratégia do “Projeto”

Implementação usando 4GL

Testes IMPLEMENTAÇÃO USANDO 4GL:

• Os resultados desejados são representados de modoque haja geração automática de código. Deve existiruma estrutura de dados com informações relevantes eque seja acessível pela 4GL

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 140

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �71

BCC2017Técnicas de 4a Geração

Obtenção dos Requisitos

Estratégia do “Projeto”

Implementação usando 4GL

TestesTESTES:

• O desenvolvedor deve efetuar testes e desenvolveruma documentação significativa. O softwaredesenvolvido deve ser construído de maneira que amanutenção possa ser efetuada prontamente

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 141

BCC2017

Comentários sobre as Técnicas de 4ª Geração

� PROPONENTES:� Redução dramática no tempo de

desenvolvimento do software (aumento deprodutividade)

� OPONENTES:� As 4GL atuais não são mais fáceis de usar do

que as linguagens de programação� O código fonte produzido é ineficiente� A manutenibilidade de sistemas usando técnicas

4GL ainda é questionável

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 142

�FCT-UNESP �25/04/2017

�Prof. Dr. Rogério Eduardo Garcia �72

BCC2017

Para escolha de um Modelo de Processo de Software:

� Natureza do projeto e da aplicação

� Métodos e ferramentas a serem usados

� Controles e produtos que precisam serentregues

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 143

BCC2017

Software e Engenharia de Software

� A importância do Software

� Software

� Aplicações do Software

� Mitos do Software

� Processo de Software

� Modelos de Processo deDesenvolvimento de Software

25/04/2017 Ciência da Computação - Engenharia de Software I - Rogério Eduardo Garcia 144