Parte 4 – Análise de uma aplicação legada com o Altova UModel
Na Parte 1 desta série, importámos o código fonte para o Altova UModel para criar um projeto UML e analisámos um diagrama de classes da nossa aplicação ATM existente.
Na Parte 2, criámos uma série de diagramas de casos de utilização UML para descrever as interações dos utilizadores com o sistema, e planearmos uma melhoria da aplicação para implementar uma taxa de levantamento.
Na Parte 3, criámos um diagrama de máquina de estados UML para analisar e documentar mais detalhadamente o funcionamento do nosso sistema. Nesta parte, voltaremos à melhoria que tínhamos planeado. Fomos incumbidos de implementar uma taxa para levantamentos em caixas automáticas: 2 dólares para levantamentos inferiores a 100 dólares e 4 dólares para levantamentos de 100 dólares ou mais. Na Parte 2, elaborámos um diagrama de casos de utilização para mostrar como os utilizadores irão interagir com a nova funcionalidade:
![]()
A partir da nossa análise inicial das classes orientadas a objetos na Parte 1, sabemos que o nosso sistema contém uma classe "Retirada", que é o local lógico para implementar a nossa nova funcionalidade. Podemos exibir um novo diagrama de classes para a classe "Retirada" selecionando-a na árvore de modelos e, a partir do menu de contexto que aparece ao clicar com o botão direito, escolher a opção para criar um novo diagrama.
![]()
![]()
Optámos por criar um diagrama de hierarquia para que todas as propriedades da classe "Retirada" sejam visíveis, incluindo as propriedades herdadas da classe "Transação". Antes de implementar a funcionalidade de taxas, temos uma questão relacionada que precisa de ser investigada. Queríamos verificar se o código atual inclui um teste para garantir que o valor de uma retirada solicitado pelo utilizador não excede o saldo atual da conta. Um diagrama de sequência UML permitirá-nos acompanhar o fluxo de execução de uma retirada. O UModel pode gerar automaticamente diagramas de sequência a partir das operações das classes que foram analisadas. Podemos selecionar a operação "executar" no nosso diagrama de classes e escolher a opção "Gerar Diagrama de Sequência" no menu de contexto do UModel para criar o diagrama que precisamos.
![]()
A caixa de diálogo de geração de diagramas de sequência do UModel oferece várias opções que irão auxiliar na implementação da nova funcionalidade. Selecionámos a opção "Atualizar automaticamente" porque pretendemos atualizar o diagrama posteriormente, após modificarmos o código, e a exibição do código numa camada separada pode ajudar-nos a concentrar-nos na lógica de extração.
![]()
O tamanho das barras de rolagem indica que estamos a visualizar apenas uma pequena parte do diagrama de sequência na janela atual. Podemos reduzir a visualização para que se ajuste à janela, mas o texto provavelmente será ilegível. Em vez disso, vamos aproveitar a interface flexível do UModel para ocultar automaticamente a árvore de diagramas e as janelas de propriedades, o que nos permite ampliar a janela de ajuda "Visão Geral":
![]()
Podemos explorar o diagrama de sequência arrastando o quadrado vermelho na janela de visão geral. Isso permite-nos localizar rapidamente a comparação entre o valor de levantamento e o saldo da conta.
![]()
Também podemos ver as mensagens de erro que aparecem caso o multibanco não tenha dinheiro suficiente ou se o saldo da conta for demasiado baixo.
![]()
Voltando ao diagrama de classes de "Retirada", podemos adicionar a propriedade "taxa" e definir o seu valor padrão:
![]()
Vamos realizar uma primeira fase de implementação da lógica de cálculo das taxas, sem incluir a opção de cancelamento pelo utilizador. A atualização do código fonte, com base no nosso modelo, adiciona a propriedade "taxa" à classe "Withdrawal". Em seguida, vamos utilizar o nosso editor de código fonte preferido para implementar a lógica de cálculo das taxas diretamente no ficheiro "Withdrawal.java". Os testes da nossa aplicação recompilada mostram o seguinte:
![]()
O saldo inicial era de 147 dólares. Após retirar 100 dólares, o novo saldo é de 43 dólares. A taxa é exibida numa nova mensagem, e o saldo final está correto. No entanto, o diagrama de sequência no nosso modelo UML está impreciso porque não inclui a funcionalidade da taxa. Podemos corrigir o diagrama de sequência atualizando o projeto UML a partir do código fonte revisado. A janela "Mensagens" do UModel indica que as alterações no ficheiro Withdrawal.java causaram a regeneração do diagrama de sequência. Além disso, podemos navegar facilmente no diagrama para localizar o nosso novo teste do valor da retirada e verificar se a taxa precisa de ser aumentada para 4 dólares.
![]()
Agora que o nosso diagrama de sequência modificado representa graficamente o funcionamento atualizado do ATM, podemos ter a certeza de que o condutor stressado que conhecemos na terceira parte desta série tem dinheiro suficiente para comprar aquele gelado! Na nossa próxima parte, vamos aproveitar outra funcionalidade do UModel para gerar documentação detalhada do nosso trabalho até agora – mais uma vantagem de manter o nosso modelo UML e o código fonte da aplicação sincronizados.
Se estiver pronto para experimentar o Altova UModel na sua aplicação Java, C# ou Visual Basic existente, clique aqui para descarregar uma versão de avaliação gratuita e totalmente funcional durante 30 dias.