Modelos de Processo de Software
Modelagem e Ciclo de Vida
Construindo um avião
Objetivos de hoje
 Introduzir modelos de processo de software
 Descrever uma variedade de modelos de processo e
quando eles podem ser usados
 Descrever esboços de modelos de processo para
engenharia de requisitos, desenvolvimento de
software, teste e evolução
O processo de software
 Um conjunto estruturado de atividades requeridas
para desenvolver um sistema de software
 Especificação
 Projeto
 Validação
 Evolução
 Um modelo de processo de software é uma
representação abstrata de um processo. Apresenta
uma descrição de um processo de alguma
perspectiva particular (visão)
O processo de software
 Processo inclui:
 Todas as principais atividades do processo
 Recursos - está sujeito a um conjunto de restrições (como
um cronograma)
 Produtos intermediários e finais
 Subprocessos, com hierarquia ou organizados de algum
modo
 Critérios de entrada e saída para cada atividade
 Sequência de atividades, de modo que a ordem de
execução de uma para outra seja clara
 Conjunto de diretrizes que explicam os objetivos de cada
atividade
 Restrições e controles para cada atividade, recurso ou
produto
Comunicação – do cliente ao produto
Razões para modelar um processo
 Formar um entendimento comum
 Encontrar inconsistências,
redundâncias e omissões
 Encontrar e avaliar atividades
propostas mais adequadas aos
objetivos
 Fazer um processo geral para
uma situação particular na qual ele
será utilizado
O modelo de processo tradicional
Exemplos de modelos de processo de
software
 O modelo cascata
 Desenvolvimento evolucionário
 Desenvolvimento em fases (iterativo)
 Iterativo incremental
 Modelo em espiral
O modelo cascata (waterfall)
O modelo cascata – atividades em sequência
Requirements
definition
System and
software design
Implementation
and unit testing
Integration and
system testing
Operation and
maintenance
O modelo cascata – atividades em sequência
Problemas do modelo cascata
 Partição inflexível do projeto em diferentes estágios
 Isto faz com que seja difícil responder aos requisitos
mutáveis dos clientes
 Portanto, este modelo só é apropriado quando os
requisitos são bem entendidos
Desenvolvimento evolucionário
 Desenvolvimento exploratório
 O objetivo é trabalhar com clientes e evoluir o sistema
final de um esboço de especificação inicial. Deve
começar com os requisitos que estão bem entendidos
 Preparação de protótipos descartáveis
 Objetivo é entender os requisitos do sistema. Deve
começar com requisitos pobremente entendidos
Desenvolvimento evolucionário
Validation
Final
version
Development
Intermediate
versions
Specification
Initial
version
Outline
description
Concurrent
activities
Desenvolvimento evolucionário
 Problemas
 Falta de visibilidade do processo
 Sistemas são, em geral, pobremente estruturados
 Habilidades especiais (ex. em linguagens para rápida
preparação de protótipos ) podem ser requeridas
 Aplicabilidade
 Para sistemas interativos pequenos ou médios
 Para partes de sistemas grandes (ex. a interface de
usuário, um relatório simples, etc.)
 Para sistemas de curto-prazo
Desenvolvimento em fases (iterativo)
 Requisitos do sistema sempre evoluem (mudam) no
decorrer de um projeto
 A iteração do processo, onde estágios anteriores
são retrabalhados, é sempre parte de um processo
para sistemas maiores
 Iteração pode ser aplicada para qualquer modelo de
processo
 Duas abordagens (relacionadas)
 Desenvolvimento incremental
 Desenvolvimento espiral
Desenvolvimento iterativo e incremental
 Ao invés de entregar o sistema de uma única vez, o
desenvolvimento e a entrega é dividida em
incrementos com cada incremento entregando parte
da funcionalidade requerida
 Os requisitos dos usuários são priorizados e os
requisitos de maior prioridade são incluídos em
incrementos iniciais
 Uma vez que o desenvolvimento de um incremento
é iniciado, os requisitos são congelados embora
requisitos para incrementos posteriores possam
continuar a evoluir
Desenvolvimento iterativo e incremental
Vantagens do desenvolvimento incremental
 O valor agregado ao Cliente está na entrega em
cada incremento de modo que a funcionalidade do
sistema estará disponível mais cedo
 Incrementos iniciais funcionam como protótipos para
ajudar a evocar requisitos para incrementos
posteriores
 Menores riscos de falha no projeto em geral
 Os serviços do sistema de alta prioridade tendem a
receber a maioria dos testes
Desenvolvimento espiral
 Processo é representado como uma espiral ao invés
de uma seqüência de atividades com retorno
 Cada volta na espiral representa uma fase (iteração)
no processo
 Não existe um número de fases fixas – as voltas na
espiral são escolhidas de acordo com o que é
requerido
 Os riscos são explicitamente cotados e resolvidos
durante todo o processo
Modelo espiral do processo de software

03 Modelo de processo de software

  • 1.
    Modelos de Processode Software Modelagem e Ciclo de Vida
  • 2.
  • 3.
    Objetivos de hoje Introduzir modelos de processo de software  Descrever uma variedade de modelos de processo e quando eles podem ser usados  Descrever esboços de modelos de processo para engenharia de requisitos, desenvolvimento de software, teste e evolução
  • 4.
    O processo desoftware  Um conjunto estruturado de atividades requeridas para desenvolver um sistema de software  Especificação  Projeto  Validação  Evolução  Um modelo de processo de software é uma representação abstrata de um processo. Apresenta uma descrição de um processo de alguma perspectiva particular (visão)
  • 5.
    O processo desoftware  Processo inclui:  Todas as principais atividades do processo  Recursos - está sujeito a um conjunto de restrições (como um cronograma)  Produtos intermediários e finais  Subprocessos, com hierarquia ou organizados de algum modo  Critérios de entrada e saída para cada atividade  Sequência de atividades, de modo que a ordem de execução de uma para outra seja clara  Conjunto de diretrizes que explicam os objetivos de cada atividade  Restrições e controles para cada atividade, recurso ou produto
  • 6.
    Comunicação – docliente ao produto
  • 7.
    Razões para modelarum processo  Formar um entendimento comum  Encontrar inconsistências, redundâncias e omissões  Encontrar e avaliar atividades propostas mais adequadas aos objetivos  Fazer um processo geral para uma situação particular na qual ele será utilizado
  • 8.
    O modelo deprocesso tradicional
  • 9.
    Exemplos de modelosde processo de software  O modelo cascata  Desenvolvimento evolucionário  Desenvolvimento em fases (iterativo)  Iterativo incremental  Modelo em espiral
  • 10.
    O modelo cascata(waterfall)
  • 11.
    O modelo cascata– atividades em sequência Requirements definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance
  • 12.
    O modelo cascata– atividades em sequência
  • 13.
    Problemas do modelocascata  Partição inflexível do projeto em diferentes estágios  Isto faz com que seja difícil responder aos requisitos mutáveis dos clientes  Portanto, este modelo só é apropriado quando os requisitos são bem entendidos
  • 14.
    Desenvolvimento evolucionário  Desenvolvimentoexploratório  O objetivo é trabalhar com clientes e evoluir o sistema final de um esboço de especificação inicial. Deve começar com os requisitos que estão bem entendidos  Preparação de protótipos descartáveis  Objetivo é entender os requisitos do sistema. Deve começar com requisitos pobremente entendidos
  • 15.
  • 16.
    Desenvolvimento evolucionário  Problemas Falta de visibilidade do processo  Sistemas são, em geral, pobremente estruturados  Habilidades especiais (ex. em linguagens para rápida preparação de protótipos ) podem ser requeridas  Aplicabilidade  Para sistemas interativos pequenos ou médios  Para partes de sistemas grandes (ex. a interface de usuário, um relatório simples, etc.)  Para sistemas de curto-prazo
  • 17.
    Desenvolvimento em fases(iterativo)  Requisitos do sistema sempre evoluem (mudam) no decorrer de um projeto  A iteração do processo, onde estágios anteriores são retrabalhados, é sempre parte de um processo para sistemas maiores  Iteração pode ser aplicada para qualquer modelo de processo  Duas abordagens (relacionadas)  Desenvolvimento incremental  Desenvolvimento espiral
  • 18.
    Desenvolvimento iterativo eincremental  Ao invés de entregar o sistema de uma única vez, o desenvolvimento e a entrega é dividida em incrementos com cada incremento entregando parte da funcionalidade requerida  Os requisitos dos usuários são priorizados e os requisitos de maior prioridade são incluídos em incrementos iniciais  Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são congelados embora requisitos para incrementos posteriores possam continuar a evoluir
  • 19.
  • 20.
    Vantagens do desenvolvimentoincremental  O valor agregado ao Cliente está na entrega em cada incremento de modo que a funcionalidade do sistema estará disponível mais cedo  Incrementos iniciais funcionam como protótipos para ajudar a evocar requisitos para incrementos posteriores  Menores riscos de falha no projeto em geral  Os serviços do sistema de alta prioridade tendem a receber a maioria dos testes
  • 21.
    Desenvolvimento espiral  Processoé representado como uma espiral ao invés de uma seqüência de atividades com retorno  Cada volta na espiral representa uma fase (iteração) no processo  Não existe um número de fases fixas – as voltas na espiral são escolhidas de acordo com o que é requerido  Os riscos são explicitamente cotados e resolvidos durante todo o processo
  • 22.
    Modelo espiral doprocesso de software