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:
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:
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!