第4部:Altova UModelを用いたレガシーアプリケーションの分析

このシリーズの第1部では、ソースコードをAltova UModelにインポートしてUMLプロジェクトを作成し、既存のATMアプリケーションのクラス図を検証しました。

その中で、 第二部 私たちは、一連のものを制作しました UMLユースケース図 システムのユーザーインタラクションを記述するために、また、引き出し手数料を導入するためのアプリケーションの機能改善を計画しました。

第3部では、システムの動作をさらに分析し、ドキュメント化するために、UMLステートマシン図を作成しました。今回の記事では、以前計画していた機能拡張について改めて取り上げます。具体的には、100ドル未満の引き出しに対しては2ドルの手数料、100ドル以上の引き出しに対しては4ドルの手数料を導入することになりました。第2部では、この新しい機能とユーザーがどのようにやり取りするかを示すために、ユースケース図を作成しました

パート1で分析したオブジェクト指向クラスに基づいて、私たちのシステムには「Withdrawal(引き出し)」クラスが存在しており、このクラスが新しい機能の実装に適した場所であることがわかっています。モデルツリーで「Withdrawal」クラスを選択し、右クリックのコンテキストメニューから「新しい図を作成」を選択することで、このクラスの新しいクラス図を表示できます。

私たちは、引き出しクラスのすべてのプロパティ、およびトランザクションクラスから継承されたプロパティも含めて可視化するために、階層図を作成することを選択しました。手数料機能の実装前に、関連する未解決の課題について調査する必要があります。具体的には、現在のコードに、ユーザーが要求した引き出し金額が、現在の口座残高を超えないことを確認するためのテストが含まれているかどうかを確認したいと考えています UMLシーケンス図 これにより、引き出し処理の実行フローを追跡することができます。UModelは、リバースエンジニアリングされたクラスの操作から、自動的にシーケンス図を生成できます。クラス図で実行操作を選択し、UModelの右クリックメニューから「シーケンス図の生成」を選択することで、必要な図を作成できます。

UModelのシーケンス図生成ダイアログには、新機能の実装を支援するいくつかのオプションが用意されています。今回は「自動更新」を選択しました。これは、コードを修正した後で、後から図を更新したいと考えているためです。また、コードを別のレイヤーで表示することで、引き出し処理のロジックに集中しやすくなります。

スクロールバーのサイズから判断すると、現在のウィンドウにはシーケンス図の一部分しか表示されていません。ウィンドウに合わせて表示を小さくすることもできますが、テキストが読みにくくなる可能性があります。そこで、UModelの柔軟なユーザーインターフェースを活用して、ダイアグラムツリーとプロパティウィンドウを自動的に非表示にし、代わりに概要表示ヘルパーウィンドウを大きく表示しましょう

概要ウィンドウにある赤い四角をドラッグすることで、シーケンス図を探索できます。これにより、引き出し金額と口座残高の比較箇所を素早く特定することができます。

また、ATMに十分な現金がない場合や、口座の残高が不足している場合に表示されるエラーメッセージも確認できます。

「離脱」クラス図に戻り、そこで「料金」という属性を追加し、そのデフォルト値を設定することができます

まず、ユーザーがキャンセルするオプションを含めずに、料金計算の機能を実装します。まず、私たちのモデルに基づいてソースコードを更新し、Withdrawalクラスに料金に関するプロパティを追加します。次に、お気に入りのソースコードエディターを使って、Withdrawal.javaファイルに直接料金計算の機能を実装します。再コンパイルしたアプリケーションのテスト結果は以下の通りです

開始時の残高は147ドルでした。100ドルを引き出した後、新しい残高は43ドルです。手数料は新しいメッセージで表示され、最終的な残高は正しいです。しかし、現在のUMLモデルにおけるシーケンス図は、手数料の機能が含まれていないため、正確ではありません。UMLプロジェクトを修正されたソースコードに基づいて更新することで、シーケンス図を修正できます。UModelのメッセージウィンドウには、Withdrawal.javaファイルへの変更が、シーケンス図の再生成を引き起こしたことが示されています。また、この図を簡単に操作して、引き出し金額に関する新しいテストの位置を特定し、手数料を4ドルに増額する必要があるかどうかを確認できます。

修正したシーケンス図が、ATMの最新の動作を視覚的に表現しているため、このシリーズの第3部で出会った、慌ただしいドライバーがアイスクリームを買うのに十分な現金を持っていることが確信できます。次回の記事では、UModelの別の機能を活用して、これまでの作業に関する詳細なプロジェクトドキュメントを作成します。これは、UMLモデルとアプリケーションのソースコードを同期させることのもう一つの利点です。

もし、ご自身のJava、C#、またはVisual Basicで構築された既存のアプリケーションで、Altova UModelをお試しになりたい場合は、こちらをクリックして、30日間の無料トライアル版をダウンロードしてください