Caso de Uso – Fluxo Alternativo

Compartilhe!

Caso de Uso - Fluxo Alternativo

Alternativo, Principal ou Exceção?

Fluxo Alternativo, tem a ver com Alternativa?

Durante a modelagem de casos de uso, sem dúvida alguma, todos os analistas já ficaram na dúvida na hora de classificar um fluxo. Alguns colegas pensam que quando se define o Fluxo Principal fica mais fácil, pois todo o resto “vira Fluxo Alternativo”.

Não pode ser por aí.

Como no contexto dos Fluxos de Exceção (veja aqui nosso post sobre isso), os Fluxos Alternativos em casos de uso geram muitas dúvidas sobre o que realmente são, para que servem, e como devem ser especificados.

Estas dúvidas são pertinentes. Inclusive, até mesmo na literatura especializada encontra-se definições equivocadas, confusas, a respeito do assunto. Acredito isso não se dá por incapacidade dos autores, obviamente.

Acho que é um problema cultural, relacionado ao Efeito Manada, que é muito comum na área de produção de software (muito profissional carrega um conceito errado durante toda a sua carreira, por não ter parado em algum momento para refletir sobre o assunto).

/* Hoje mesmo estava estudando e vi num livro de agilidade (não citarei o título por respeito aos autores) a seguinte descrição sobre fluxo alternativo: “(…) Cursos Alternativos – Alguns desses estarão relacionados a fatores que podem dar errado. Durante as conversas com os interessados, discuta sobre cenários de falha.(…)”. Obs.: neste caso trata-se de “cursos” de exceção. */

Caso queira entender melhor o que é um caso de uso, veja o que é Caso de Uso.

Alternativas de verdade

Quando falamos em alternativas, mentalmente pensamos em escolhas, em opções.

Quando pensamos em fluxos alternativos, estamos falando realmente de escolhas que o usuário poderá fazer na execução de uma funcionalidade, escolhas que alterarão o comportamento da funcionalidade.

No post sobre fluxo de exceção dei um exemplo sobre uma situação de “alguém escolhendo um caminho a seguir”.

O “caminho principal” era seguir reto, e como “caminhos alternativos” haviam as opções de seguir à direita e seguir à esquerda, e como “exceção” havia a possibilidade de a pessoa, ao andar por algum caminho, cair no buraco.

Por “default” a pessoa que está andando seguiria reto, mas poderia optar por desviar para direita ou para a esquerda. Optando por desviar está fazendo uma escolha, optando por uma alternativa.

Cair no buraco é um risco previsto, mas é exceção à regra; não é uma questão de opção, não é algo escolhido pelo usuário.

 

Fluxos alternativos são fluxos que podem ser executados numa funcionalidade a partir da escolha do usuário, e não a partir de erros ou exceções do sistema.

Exemplificando

Vejamos um diagrama de casos de uso, com um cenário de realização de pagamentos:

Caso de Uso - Fluxo Alternativo - Diagrama de Caso de Uso

O UC003 é caso de uso acionado diretamente pelo usuário.

O UC003 inclui o UC004 e estende os seguintes: UC005 e o UC006.

Obs.: mesmo sem ler a especificação (descrição dos fluxos) de um caso de uso, a partir de um diagrama onde os relacionamentos estejam corretos já podemos ter uma boa noção sobre quais são os fluxos alternativo, principal e de exceção.

Por exemplo, <<extends>> nunca refere-se à uma chamada realizada a partir de um Fluxo Principal, da mesma forma que <<include>> sempre refere-se a uma chamada feita a partir de um Fluxo Principal.

Para entender melhor os tipos de relacionamento entre casos de uso, veja Caso de Uso – Include, Extend e Generalização.

Vejamos o fluxo principal do UC003:

Caso de Uso - Fluxo Alternativo - passos do fluxo

No fluxo principal está definido que a forma de pagamento “default” é Cartão de Crédito.

Porém, como destacado em vermelho, o usuário poderá optar por três outras formas de pagamento: Cartão de Débito, Débito em Conta e Boleto bancário. Em função de serem situações previstas pelo negócio e alternativas à forma padrão de se realizar o pagamento, são fluxos alternativos.

curso casos de uso na real

Concluindo

Toda escolha que o usuário pode fazer ao utilizar uma funcionalidade do sistema, que alterará o comportamento e desviar o fluxo de execução da funcionalidade, será um fluxo alternativo.

Para entender melhor o que é um fluxo principal veja Caso de Uso – Fluxo Principal.

Para entender melhor o que é um fluxo de exceção veja Caso de Uso – Fluxo de Exceção.

Grande abraço!

fluxo alternativo

  • Pingback: UML – Caso de Uso – Fluxo de Exceção | Até o Momento()

  • Gostei demais do post!

    Acredito que é muito comum esse tipo de confusão e muitas pessoas optam por não fazer a definição de fluxo alternativo de forma correta.

    O post é simples, objetivo, direto! Muito bom!

    • Plínio Ventura

      Obrigado, Dilmar! Realmente há muita confusão acerca do conceito, infelizmente. Que bom que gostou.

      Abraço!

  • Millena

    Excelente!! Mas no post de Fluxo Principal foi mencionado os Fluxo alternativos com propósitos primários e também secundários.

    Acho que aqui também poderia citar outros exemplos de alternativos que sejam com propósitos secundários, pois boa parte dos analistas costumam não menciona-los por ser muito trabalhoso.

    • Plínio Ventura

      Oi Milena! Obrigado!

      Refere-se à, neste post, citar mais exemplos de fluxos alternativos?

      Abraço!
      Plínio Ventura

      • Millena

        Grata pelo retorno.
        Digo citar mais exemplos sim, porém diferenciados. Eu por exemplo, costumo registrar em fluxo alternativo, toda alteração de comportamento na funcionalidade. Estas podem ocorrer mediante uma Regra de Negócio que exibe uma mensagem de alerta ou uma confirmação (veja não é exceção). Se uma regra de negócio não deve descrever um comportamento sistêmico, entendo que é no UC faz a relação de RN com Sistemas. Também podem ocorrer mediante uma RN, novos campos de preenchimento com outras validações e outras mensagens. Alguns descrevem isso como Regras de Interface. Qual sua opinião sobre isso?

        Além disso registramos em Fluxos Alternativos, outras funcionalidades existentes, não necessariamente opcional ao Fluxo Básico, mas complementar. Ex.: Impressão de relatório, Ativar e Desativar um item.

        Sinto falta na web de artigos com exemplos diversificados.

  • Millena

    Grata pelo retorno.
    Digo citar mais exemplos sim, porém diferenciados. Eu por exemplo, costumo registrar em fluxo alternativo, toda alteração de comportamento na funcionalidade. Estas podem ocorrer mediante uma Regra de Negócio que exibe uma mensagem de alerta ou uma confirmação (veja não é exceção). Se uma regra de negócio não deve descrever um comportamento sistêmico, entendo que é no UC faz a relação de RN com Sistemas. Também podem ocorrer mediante uma RN, novos campos de preenchimento com outras validações e outras mensagens. Alguns descrevem isso como Regras de Interface. Qual sua opinião sobre isso?

    Além disso registramos em Fluxos Alternativos, outras funcionalidades existentes, não necessariamente opcional ao Fluxo Básico, mas complementar. Ex.: Impressão de relatório, Ativar e Desativar um item.

    Sinto falta na web de artigos com exemplos diversificados.

  • Pingback: O que é Caso de Uso - Até o Momento()

  • Pingback: Mensagens de Sistema - Até o Momento()

  • Elizabete Reis

    Ótima explicação, tenho pouco experiência e nunca tinha pensado em fluxos alternativos desta forma.

    • Plínio Ventura

      Obrigado Elizabete, que bom que o conteúdo lhe foi útil! 🙂

  • Pingback: Caso de Uso - Fluxo Principal - Até o Momento()

  • Ilmar Gabriel da Silva

    Oi Plínio tudo bem?
    Qual o nome da ferramenta de especificação de caso de uso que aprece no protótipo?

  • Ilmar Gabriel da Silva

    Quando usar subfluxo e fluxo alternativo? Qual a diferença entre um e outro? Você pode citar exemplo também?

    • Plínio Ventura

      Ilmar, bom dia!

      Não há o conceito de sub-fluxo na modelagem de Casos de Uso. Os fluxos (cenários) disponíveis são apenas: Principal, Alternativo e Exceção. Alguns profissionais às vezes interpretam o Fluxo Alternativo como sub-fluxo, o que não se aplica.

      Indico a você nosso curso sobre Modelagem de Casos de Uso – http://www.indtech.com.br/CursoCasosDeUso.aspx – que pode lhe ajudar muito a compreender a parte de conceitos, modelagem, arquitetura e uso de casos de uso para projetar sistemas.

      Abraço!