70
Professor Mário Dantas ENGENHARIA DE SOFTWARE

Professor Mário Dantas

  • Upload
    royal

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

Engenharia de Software. Professor Mário Dantas. Aula 02. Processos Existentes; Ciclo de vida de desenvolvimento de software;. Processo de Software - Introdução. O que é processo de software: - PowerPoint PPT Presentation

Citation preview

Page 1: Professor Mário  Dantas

Professor Mário Dantas

ENGENHARIA DE SOFTWARE

Page 2: Professor Mário  Dantas

2

Aula 02 Processos Existentes; Ciclo de vida de desenvolvimento de

software;

Page 3: Professor Mário  Dantas

3

Processo de Software - Introdução

O que é processo de software: É um conjunto ( framework ) de atividades e

resultados associados que geram um produto de software;

Há quatro atividades de processo de software fundamentais, a saber:

Especificação do software; Desenvolvimento do Software; Validação do Software; Evolução do Software;

Page 4: Professor Mário  Dantas

4

Processo de Software - Introdução

Uma Visão Genérica: 3 Fases Definição - “o que”

Análise de Requisitos Análise do Sistema Planejamento do Projeto

Desenvolvimento - “como” Projeto Geração do Código Teste

Manutenção

Page 5: Professor Mário  Dantas

5

Processo de Software - Introdução

Processo de Software é diferente de Engenharia de Software: Processo define a abordagem; Engenharia engloba também as tecnologias

como métodos e ferramentas;

Page 6: Professor Mário  Dantas

6

Processo de Software – Engenharia de Software Já vimos que Engenharia de Software é:

Uma disciplina da engenharia que se ocupa de todos os aspectos do desenvolvimento de software;

Para o IEEE (Instituto de Engenheiros Eletricistas e Eletrônicos) é: aplicação de uma abordagem sistemática,

disciplinada e quantificável ao desenvolvimento, operação e manutenção de software, ou seja, a aplicação da engenharia ao software;

O estudo de abordagens do tipo declarado acima.

Page 7: Professor Mário  Dantas

7

Processo de Software – Engenharia de Software

Analisando as definições anteriores podemos encarar a Engenharia de Software como uma tecnologia em camadas:

ferramentasmétodosprocesso

foco na qualidade

Page 8: Professor Mário  Dantas

8

Processo de Software – Engenharia de Software

É o “solo” e o porque de utilizarmos um processo de software.

Gerenciamento da Qualidade Total e filosofias similares produzem uma mudança cultural que permite o desenvolvimento crescente de abordagens mais maduras para a Engenharia de Software.

ferramentasmétodosprocesso

foco na qualidade

Page 9: Professor Mário  Dantas

9

Processo de Software – Engenharia de Software

É a “fundação”; É o que intermedeia as camadas de tecnologias e

permite um desenvolvimento de software racional e em tempo;

Define um conjunto de áreas chave do processo que deve ser estabelecido para um uso efetivo da Engenharia de Software;

ferramentasmétodosprocesso

foco na qualidade

Page 10: Professor Mário  Dantas

10

Processo de Software – Engenharia de Software

É o “como fazer”; Englobam um conjunto de tarefas que inclui

análise de requisitos, projeto, implementação, teste e manutenção;

ferramentasmétodosprocesso

foco na qualidade

Page 11: Professor Mário  Dantas

11

Processo de Software – Engenharia de Software

É o “instrumento apropriado”; Dão suporte automatizado ou semi-automatizado

aos métodos; Quando as ferramentas que apoiam os métodos se

integram, forma-se a Engenharia de Software auxiliada por computador – CASE – Computer Aided Software Engineering;

ferramentasmétodosprocesso

foco na qualidade

Page 12: Professor Mário  Dantas

12

Processo de Software – Engenharia de Software O objetivo desta aula é dar foco no

PROCESSO de desenvolvimento de software e aos MODELOS existentes na literatura;

Processo de software define uma abordagem;

Modelo é uma descrição simplificada, uma abstração dessa abordagem;

Page 13: Professor Mário  Dantas

13

Processo de Software – Modelo de Processo de Software Um modelo de processo de software deve

ser escolhido com base: Na natureza do projeto e da aplicação; Nos métodos e ferramentas a serem

utilizados; Nos controles e produtos que precisam ser

entregues;

Page 14: Professor Mário  Dantas

14

Processo de Software – Modelo de Processo de Software Alguns modelos de processo:

Modelo Seqüencial Linear Modelo RAD Modelos Evolucionários

Modelo de Prototipação ( Descartáveis ) Incremental ( Exploratório ) Espiral ( Exploratório )

Técnicas de 4a Geração

Page 15: Professor Mário  Dantas

15

Processo de Software – Modelo Seqüencial Linear Também conhecido como ciclo de vida

clássico ou Modelo Cascata: Modelo mais antigo e mais usado; Modelado em função do ciclo de engenharia

convencional; Requer uma abordagem sistemática e

seqüencial para o desenvolvimento de um software;

Page 16: Professor Mário  Dantas

16

Processo de Software – Modelo Seqüencial Linear Muitos aplicam esse modelo de forma

estritamente linear:

Engenharia de Sistemas / Informação

Projeto Codificação Testes Análise

Page 17: Professor Mário  Dantas

17

Processo de Software – Modelo Seqüencial Linear

Mas o modelo original prevê a volta:Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Page 18: Professor Mário  Dantas

18

Processo de Software – Modelo Seqüencial Linear

Envolve a coleta de requisitos de todos os elementos do sistema;

Essa visão de sistema é essencial quando o software faz interface com outros elementos como HW, pessoas e BD;

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Page 19: Professor Mário  Dantas

19

Processo de Software – Modelo Seqüencial Linear

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.

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Page 20: Professor Mário  Dantas

20

Processo de Software – Modelo Seqüencial Linear

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

Se concentra em 4 atributos do programa:

Estrutura de Dados, Arquitetura de

Software, Detalhes

Procedimentais e Caracterização de

Interfaces.

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Page 21: Professor Mário  Dantas

21

Processo de Software – Modelo Seqüencial Linear

Tradução das representações do projeto para uma linguagem “artificial” resultando em instruções executáveis pelo computador.

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Page 22: Professor Mário  Dantas

22

Processo de Software – Modelo Seqüencial Linear

Concentram-se: nos aspectos

lógicos internos do software, garantindo que todas as instruções tenham sido testadas.

nos aspectos funcionais externos, para descobrir erros e garantir que a entrada definida produza resultados que concordem com os esperados.

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Page 23: Professor Mário  Dantas

23

Processo de Software – Modelo Seqüencial Linear

O software deverá sofrer mudanças depois que for entregue ao cliente

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

Page 24: Professor Mário  Dantas

24

Processo de Software – Modelo Seqüencial Linear

Problemas: Projetos reais raramente seguem o fluxo sequencial

proposto;

É dificil estabelecer todos os requisitos no começo do projeto na qual existe uma incerteza natural quanto a esses requisitos;

Uma versão do software só vai ficar pronto em um ponto tradio do desenvolvimento; Assim se houver algum erro grave não detectado na

análise ou projeto o resultado pode ser desastroso; Há muitos estágios bloqueantes que permitem a

ociosidade dos desenvolvedores em alguns momentos

Page 25: Professor Mário  Dantas

25

Processo de Software – Modelo Seqüencial Linear

Embora o Modelo Seqüencial Linear ou Ciclo de Vida Clássico tenha fragilidades, ele é significativamente melhor do que uma abordagem casual ao desenvolvimento de software.

Page 26: Professor Mário  Dantas

MODELOS DE PROCESSO

RAD – Rapid Application Development

Page 27: Professor Mário  Dantas

27

É o modelo seqüencial linear, mas que enfatiza um desenvolvimento extremamente rápido;

A “alta velocidade” é conseguida através de uma abordagem de construção baseada em componentes;

Usado quando os requisitos são bem definidos e o escopo do sistema é restrito.

Modelo RAD (Rapid Application Development)

Page 28: Professor Mário  Dantas

28

Modelo RAD

modelagem do

negóciomodelagem dos dadosmodelage

m do processogeração

da aplicaçãoteste e

modificação

modelagem do

negóciomodelagem dos dadosmodelage

m do processogeração

da aplicação teste e

modificação

modelagem do

negóciomodelagem dos dadosmodelage

m do processogeração

da aplicaçãoteste e

modificação

equipe # 3equipe # 2equipe # 1

60-90 dias

Page 29: Professor Mário  Dantas

29

Atividades do Modelo RAD

modelagem do

negóciomodelagem dos dadosmodelage

m do processogeração

da aplicaçãoteste e

modificação

Modelagem do negócio: o fluxo de informação entre as funções do negócio são modeladas de maneira a responder às questões:

que informação dirige o processo do negócio? que informação é gerada? quem gera a informação?

para onde a informação vai? quem a processa?

Page 30: Professor Mário  Dantas

30

Atividades do Modelo RAD

modelagem do

negóciomodelagem dos dadosmodelage

m do processogeração

da aplicaçãoteste e

modificação

Modelagem dos dados:

O fluxo de informação definido na fase anterior é refinado em um conjunto de objetos de dados que são necessários para dar suporte ao negócio; são identificadas as características de cada objeto e são definidos seus relacionamentos.

Page 31: Professor Mário  Dantas

31

Atividades do Modelo RAD

modelagem do

negóciomodelagem dos dadosmodelage

m do processogeração

da aplicaçãoteste e

modificação

Modelagem do processo:Os objetos de dados definidos são transformados para se obter o fluxo de informação necessário para implementar uma função do negócio;São criadas as descrições dos processamentos necessários para manipular esses objetos de dados.

Page 32: Professor Mário  Dantas

32

Atividades do Modelo RAD

modelagem do

negóciomodelagem dos dadosmodelage

m do processogeração

da aplicaçãoteste e

modificação

Geração da aplicação:

O modelo RAD assume o uso de técnicas de 4a. geração; ao invés de criar software de forma convencional, reusa componentes quando possível ou cria componentes reutilizáveis;Ferramentas automatizadas são utilizadas para gerar software.

Page 33: Professor Mário  Dantas

33

Atividades do Modelo RAD

modelagem do

negóciomodelagem dos dadosmodelage

m do processogeração

da aplicaçãoteste e

modificação

Teste e modificação:

Por reutilizar componentes, muitas vezes eles já foram testados, o que reduz o tempo de teste; os novos componentes devem ser testados e as interfaces devem ser exercitadas

Page 34: Professor Mário  Dantas

34

Modelo RAD Quando usar?

As restrições de tempo impostas pelo projeto demandam um escopo de escala.

Quando a aplicação pode ser modularizada de forma que cada grande função possa ser completada em menos de 3 meses.

Cada grande função pode ser alocada para uma equipe distinta e, depois são integradas para formar o todo.

Page 35: Professor Mário  Dantas

35

Problemas com o Modelo RAD Para projetos escaláveis, mas grandes, o

RAD requer recursos humanos suficientes para criar um número adequado de equipes;

RAD requer um comprometimento entre desenvolvedores e clientes para que as atividades possam ser realizadas rapidamente e o sistema seja concluído em um tempo abreviado;

Se o comprometimento for abandonado por qualquer das partes, o projeto falhará;

Não é apropriado quando os riscos são grandes.

Page 36: Professor Mário  Dantas

36

MODELOS DE PROCESSO

Modelos de Processo Evolucionários Descartáveis

Page 37: Professor Mário  Dantas

37

MODELOS DE PROCESSO

Prototipação

Page 38: Professor Mário  Dantas

38

Processo de Software – Prototipação

Processo que possibilita que o desenvolvedor crie um modelo do software que deve ser construído.

Idealmente, o modelo (protótipo) serve como um mecanismo para identificar os requisitos de software.

Apropriado para quando o cliente definiu um conjunto de objetivos gerais para o software, mas não identificou requisitos de entrada, processamento e saída com detalhes.

Page 39: Professor Mário  Dantas

39

Processo de Software – Prototipação

fim

início

construção produto

refinamento protótipo

avaliação protótipo

construção protótipo

projeto rápido

obtenção dos

requisitos

Page 40: Professor Mário  Dantas

40

Processo de Software – Prototipação

construa/reviseprotótipo

teste doprotótipo

pelo cliente

ouça o cliente

Simplificando

Page 41: Professor Mário  Dantas

41

Processo de Software – Prototipação

Obtenção dos Requisitos: desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos são conhecidos e as áreas que necessitam de definições adicionais.

Projeto Rápido: representação dos aspectos do software que são visíveis ao usuário (abordagens de entrada e formatos de saída).

fiminício

construção produto

refinamento protótipo

avaliação protótipo

construção protótipo

projeto rápido

obtenção dos

requisitos

Page 42: Professor Mário  Dantas

42

Processo de Software – Prototipação

Construção Protótipo: implementação rápida do projeto.

Avaliação do Protótipo: cliente e desenvolvedor avaliam o protótipo.

fiminício

construção produto

refinamento protótipo

avaliação protótipo

construção protótipo

projeto rápido

obtenção dos

requisitos

Page 43: Professor Mário  Dantas

43

Processo de Software – Prototipação

Refinamento dos Requisitos: cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido.

Ocorre neste ponto um processo de iteração que pode conduzir à 1ª. atividade até que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito.

fiminício

construção produto

refinamento protótipo

avaliação protótipo

construção protótipo

projeto rápido

obtenção dos

requisitos

Page 44: Professor Mário  Dantas

44

Processo de Software – Prototipação

Construção Produto: identificados os requisitos, o protótipo deve ser descartado e a versão de produção deve ser construída considerando os critérios de qualidade.

fiminício

construção produto

refinamento protótipo

avaliação protótipo

construção protótipo

projeto rápido

obtenção dos

requisitos

Page 45: Professor Mário  Dantas

45

Processo de Software – Prototipação

Problemas:

Cliente não sabe que o software que ele vê, não considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. Não aceita bem a idéia de que a versão final do software vai ser construída e "força" a utilização do protótipo como produto final;

Desenvolvedor freqüentemente faz uma implementação comprometida (utilizando o que está disponível) com o objetivo de produzir rapidamente um protótipo. Depois de um tempo ele se familiariza com essas escolhas, e esquece que elas não são apropriadas para o produto final.

Page 46: Professor Mário  Dantas

46

Processo de Software – Prototipação

Comentários:Ainda que possam ocorrer problemas, a

prototipação é um ciclo de vida eficiente.

A chave é definirem-se as regras do jogo logo no começo.

O cliente e o desenvolvedor devem ambos concordar que o protótipo seja construído para servir como um mecanismo a fim de definir os requisitos.

Page 47: Professor Mário  Dantas

47

MODELOS DE PROCESSO

Modelos de Processo Evolucionários Exploratórios – Incremental, Espiral e

Concorrente

Page 48: Professor Mário  Dantas

48

Processo de Software – Modelos de Processo Evolucionários Usado quando o deadline não é adequado para o

desenvolvimento do software; a data de término não é realística;

Uma versão limitada pode ser introduzida para atender à competitividade e pressões do negócio;

São liberados “produtos core”;

Os detalhes e extensões ainda devem ser definidos;

Page 49: Professor Mário  Dantas

49

Processo de Software – Modelos de Processo Evolucionários

-Prototipação-Incremental-Espiral-Concorrente

Page 50: Professor Mário  Dantas

50

Processo de Software – Modelo Incremental Combina elementos do Modelo Linear com a filosofia da

Prototipação.

Aplica seqüências lineares numa abordagem de “saltos” à medida que o tempo progride

Cada seqüência linear produz um incremento do software (proc. de texto)

O processo se repete até que um produto completo seja produzido

Difere da Prototipação pois a cada incremento produz uma versão operacional do software

Page 51: Professor Mário  Dantas

51

Processo de Software – Modelo Incremental

Engenharia de Sistemas / Informação

Análise Projeto Codificação Testes

Análise Projeto Codificação Testes

Análise Projeto Codificação Testes

Análise Projeto Codificação Testes

incremento 1

incremento 2

incremento 3

incremento 4

produto liberadodo incremento 1

produto liberadodo incremento 2

produto liberadodo incremento 3

produto liberado

do incremento

4tempo

Page 52: Professor Mário  Dantas

52

Processo de Software – Modelo Espiral Engloba a natureza iterativa da

Prototipação com os aspectos sistemáticos e controlados do Modelo Linear

Fornece o potencial para o desenvolvimento rápido de versões incrementais do software

Cada clico da espiral é uma fase do desenvolvimento que sempre passa por 4 aspectos

Page 53: Professor Mário  Dantas

Processo de Software – Modelo Espiral

Planejamento

Definição de Objetivos

Avaliação e redução de risco

Desenvolvimento e Validação

Cada loop da espira é uma fase de desenvolvimento do software;

Page 54: Professor Mário  Dantas

54

É, atualmente, a abordagem mais realística para o desenvolvimento de software em grande escala.

Usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva.

Pode ser difícil convencer os clientes que uma abordagem "evolutiva" é controlável.

Exige considerável experiência na determinação de riscos e depende dessa experiência para ter sucesso.

Processo de Software – Modelo Espiral (comentários)

Page 55: Professor Mário  Dantas

55

Processo de Software – Modelo de Desenvolvimento Concorrente

É representado como uma série de grandes atividades técnicas, tarefas e seus estados associados.

Ele define uma série de eventos que podem disparar transições de um estado para outro, para cada uma das atividades da engenharia de software.

É freqüentemente usado como um paradigma para o desenvolvimento de aplicações Cliente/Servidor.

Pode ser aplicado a todo tipo de desenvolvimento de software e fornece uma visão exata de como está o estado do projeto.

Page 56: Professor Mário  Dantas

56

Processo de Software – Modelo de Desenvolvimento Concorrente

none

sob

inspeção

sob

revisão

averiguado

realizado

aguardando

mudanças

em desenvolvime

nto

Atividade de Análise

Page 57: Professor Mário  Dantas

57

MODELOS DE PROCESSO

Desenvolvimento orientado ao reuso

Page 58: Professor Mário  Dantas

58

Processo de Software – Desenvolvimento orientado a reuso Baseado em reutilização de componentes de

software e que podem ser acessados com alguma infraestrutura de integração para estes componentes.

Estágios do Processo Análise dos Componentes; Modificação dos Requisitos; Projeto de sistema com reuso; Desenvolvimento e Integração.

Vantagem de reduzir a quantidade de software a ser desenvolvido, e reduzir os custos.

Page 59: Professor Mário  Dantas

59

Processo de Software – Desenvolvimento Orientado a Reuso

Especificação dos

Requisitos

Análise dos Componente

s

Modificação dos

Requisitos

Projeto do Sistema com

Reuso

Desenvolvimento e

IntegraçãoValidação do

Sistema

Page 60: Professor Mário  Dantas

60

Processo de Software – Desenvolvimento Orientado a Reuso Desvantagens:

Adequação dos requisitos são inevitáveis; O produto final pode não ser aquele que o

cliente pediu; Difícil controle sobre a evolução do sistema

pois os componentes evoluem independentemente;

Page 61: Professor Mário  Dantas

61

MODELOS DE PROCESSO

Modelos de Métodos Formais

Page 62: Professor Mário  Dantas

62

Processo de Software – Modelo de Métodos Formais

Compreende um conjunto de atividades que determinam uma especificação matemática para o software;

Utilizando métodos formais eliminam-se muitos problemas encontrados nos outros modelos, como p.ex., ambigüidade, incompletitude e inconsistência, que podem ser corrigidas mais facilmente de forma não ad hoc, mas através de análise matemática;

Promete o desenvolvimento de software livre de defeitos

Page 63: Professor Mário  Dantas

63

Processo de Software – Modelo de Métodos Formais (comentários)

Atualmente esse modelo consome muito tempo e é muito caro;

Como poucos desenvolvedores possuem o background necessário para utilizá-lo, são requeridos muitos cursos e treinamentos;

É difícil usar tais modelos como meio de comunicação com a maioria dos clientes;

Page 64: Professor Mário  Dantas

64

Processo de Software – Modelo de Métodos Formais

Definição de

RequisitosEspecificação Formal

Transformação Formal

Integração e Teste do Sistema

Page 65: Professor Mário  Dantas

65

Modelo de Métodos Formais -Transformações Formais

R2Formalspecification R3 Executable

program

P2 P3 P4

T1 T2 T3 T4

Proofs of transformation correctness

Formal transformations

R1

P1

Prova de regularidade transformações

Transformações Formais

Page 66: Professor Mário  Dantas

66

MODELOS DE PROCESSO

Técnicas de Quarta Geração

Page 67: Professor Mário  Dantas

67

Processo de Software – Técnicas de 4a Geração

Concentra-se na capacidade de se especificar o software a uma máquina em um nível que esteja próximo à linguagem natural.

Engloba um conjunto de ferramentas de software que possibilitam que:

o sistema seja especificado em uma linguagem de alto nível e

o código fonte seja gerado automaticamente a partir dessas especificações

Page 68: Professor Mário  Dantas

68

Obtenção dos Requisitos

Estratégia do “Projeto”

Implementação usando 4GL

Testes

Processo de Software – Técnicas de 4a Geração

Page 69: Professor Mário  Dantas

69

PROPONENTES: redução dramática no tempo de desenvolvimento do software (aumento de produtividade);

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

4G ainda é questionável

Processo de Software – Técnicas de 4a Geração (comentários)

Page 70: Professor Mário  Dantas

70

Processo de Software – Conclusão

ENGENHARIA DE SOFTWAREpode ser vista como uma abordagem

de desenvolvimento de software elaborada com disciplina e métodos

bem definidos.