Por que casos de uso não são “funções”

Propaganda
1
UNIVERSIDADE FEDERAL DE SANTA CATARINA
CURSO DE BACHARELADO EM SISTEMAS DE INFORMAÇÃO
DISCIPLINA: PROJETOS I
RESUMO: Por que casos de uso não são “funções”
Retirado de http://www106.ibm.com/developerworks/rational/library/content/RationalEdge/dec00/WhyUseCasesAreNot
FunctionsDec00.pdf
ALUNO: RODISON DOS SANTOS FERREIRA
A maior parte das pessoas pegam o caminho errado quando começam a trabalhar
com casos de uso. Talvez isto aconteça devido à similaridade dos diagramas de casos
de uso e os diagramas de fluxo de dados, os quais conduzem as pessoas a definir
casos de uso que são simplesmente funções ou itens de menu.
Os casos de uso deveriam ser na verdade uma história sobre um meio de um
sistema fazer alguma coisa realmente útil. Quando temos casos de uso como “Adicionar
Ordem de Serviço”, “Excluir Ordem de Serviço”, “Alterar Ordem de Serviço”, “Aprovar
Ordem de Serviço” e “Avaliar Ordem de Serviço”, estes casos de uso não representam
coisas úteis independentes uma das outras. Na verdade, eles representam todas as
coisas que um sistema deve fazer, mas também representam uma única coisa que o
cliente quer fazer, que é “Fazer uma Ordem de Serviço”. Este é um exemplo de erro de
casos de uso baseados em opções de menu ou como funções. Este tipo de erro
também é conhecido como “decomposição funcional”.
Todos estes elementos remanescentes são fluxos alternativos de um único caso
de uso. Há passos que devem ser seguidos quando se estabelece uma ordem de
serviço. Quando há somente uma coisa realmente útil, há somente um único caso de
uso. O exemplo acima é um exemplo de decomposição funcional.
Este é um problema muito comum. Mas o que faz as pessoas caírem nesta
armadilha? No caso da decomposição funcional, nós temos uma tendência natural de
2
quebrar um problema em pequenas partes. Isto devido à crença de que quebrando um
problema em unidades cada vez menores nós estaremos simplificando o problema.
Esta percepção é errada; quando nós decompomos casos de uso nós na verdade
estamos misturando o problema.
Os casos de uso descrevem o que o sistema deve fazer em um nível conceitual
para que nós possamos entender o suficiente sobre o sistema para que possamos
decidir se o sistema fará o que deve fazer da maneira correta ou não. Eles nos
permitem formar um modelo conceitual do sistema.
Analisando melhor o exemplo, é necessário perguntar se o cliente pode querer
avaliar uma ordem de serviço se ninguém ainda fez uma ordem de pedido? Ou como
ele poderia querer alterar uma ordem de serviço se nunca a fez? Estas ações só são
necessárias se eu alguém fez uma ordem de serviço primeiro. No entanto, todas estas
ações são necessárias devido à habilidade do sistema em permitir ao cliente fazer uma
ordem de serviço.
Decompor o sistema em pequenos casos de uso na verdade obscurece o real
propósito do sistema. Ao extremo, pode-se acabar com um monte de pedaços isolados
de comportamento. Como resultado disso, não é possível dizer o que o sistema faz. É
como não ver um carro, mas sim todas as peças que compõem um carro. Se todas as
peças que compõem um carro fossem mostradas em separado, sem nenhum ligação,
ficaria muito mais difícil perceber que todas aquelas peças formam um carro.
Quando se trabalha com casos de uso, é preciso lembrar que os casos de uso são
um meio de pensar sobre todo o sistema e um forma de organizá-lo em pedaços de
funcionalidades gerenciáveis, pedaços que façam alguma coisa útil. Para ter um
conjunto correto de casos de uso, é necessário perguntar: “O que os atores estão
realmente tentando fazer com o sistema?”
3
No caso do exemplo, todos aqueles casos de uso poderiam se resumir a um único
caso de uso chamado “Navegar no Site e Fazer uma Ordem de Serviço”. Isto porque
este caso de uso se foca no que o cliente quer do sistema e não em como subdividir e
estruturar a funcionalidade dentro do sistema. Se você separar todas estas funções em
casos de uso separados, você forçará o cliente (que está pagando o sistema) a
reconstruir os casos de uso decompostos em alguma coisa realmente significante para
ele para que ele possa entender se o que o sistema descreve é aquilo que ele quer.
Grandes quantidades de casos de uso são um problema comum. Um problema
com isso é acabar criando um sistema difícil de se entender e de se usar.
Download