"DICA" sobre especificações de casos de uso
Mediante algumas circunstâncias, quando estamos pensando em software é melhor pensarmos na melhor maneira de comunicar nossas idéias. Clareza e objetividade são fatores fundamentais para que não haja mal entendidos quando o assunto seja requisitos de software. As necessidades do usuário e as funcionalidades do software são os elementos fundamentais, esses 'que tais' que denominamos requisitos de software devem ser comunicados com precisão absoluta para a equipe de desenvolvimento. Uma especificação de caso de uso é um artefato que deve apresentar com clareza, do ponto de vista do negócio, todas as regras ressaltadas pelo usuário, além de indicar com precisão a navegabilidade que se deseja atribuir ao produto software. Para isso, a especificação, deve evitar termos que não denotem precisão e, sobretudo, evitar repetições desnecessárias - redundâncias. O bom software é aquele que tem, claramente, determinadas as responsabilidades de cada um dos seus casos de uso. Essa determinação será definida no momento em que o Analista de Requisitos define as relações entre seus casos de uso. Nesse momento, o profissional assume, realmente, o seu papel e não deixa a responsabilidade para outros, nesse caso, a equipe de desenvolvimento.
- Generalização - esse tipo de relacionamento deve ser utilizado com cuidado, pois que, representa relacionamentos de polimorfismo que se não forem bem definidos poderão levar a conclusões equivocadas e confusas. O princípio fundamental da generalização consiste em concluir que uma 'idéia' mais particular está contida em uma 'ideía' mais geral. Desta feita, podemos exemplificar usando a seguinte analogia:
Esse tipo de conclusão se aplicada no sentido inverso poderá levá-lo a concluir que todos animais são felinos, o que é uma inverdade. - Inclusão (include) - esse tipo de de relacionamento faz com que um caso de uso encapsule funcionalidades que são complementares a ação de outros casos de uso. Por exemplo, para efetuar uma transação de inclusão ou exclusão, usualmente será necessário, primeiramente, executar-se uma pesquisa a fim de verificar a existência do registro que será alvo da ação. Desta feita, para que não repitamos ações, isolaremos a pesquisa em um caso de uso e faremos com que os casos de uso de inclusão e exclusão o acione como include. A particularidade, com relação ao include está relacionada a obrigatoriedade de execução, ou seja, todas as vezes que os casos de uso de inclusão ou exclusão de registros forem acionados, obrigatoriamente, o include também será executado.
- Extensão (extends) - o relacionamento de extensão muito se assemelha ao de inclusão. Esse relacionamento também visa complementar alguma ação isolada de um caso de uso. Porém a diferença fundamental consiste em que a sua execução será opcional.
Os casos de uso que tem como alvo o mesmo objeto, normalmente são agrupados em um caso de uso que usualmente denominados 'Manter'. Esse tipo de caso de uso que é também conhecido pela sigla na lingua inglêsa 'CRUD', que representa: C - Create; R - Retrieve; U - Update e D - Delete, tem esse agrupamento justificado porquê para as transações de criação, atualização e exclusão dever-se-á ser executada a transação de recuperação ou pesquisa da informação. Na verdade propomos que esse tipo de caso de uso em português seja denominado por 'DICA' - Deleção, Inclusão, Consulta e Atualização. Tenho dito!


