Caso de Uso – Fluxo Alternativo

Compartilhe este conteúdo!

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í.
Engenharia de Software e UML - Unified Modeling Language - Curso Online
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.
Engenharia de Software e UML - Unified Modeling Language - Curso Online
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.

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!