---
title: "第4部：Altova UModelを用いたレガシーアプリケーションの分析"
date: "2009-05-07"
tags: 
  - "altova"
  - "c"
  - "java"
  - "missionkit"
  - "software-modeling"
  - "uml"
  - "uml-tool"
  - "umodel"
  - "visual-basic"
description: Altova UModelを使用して、既存のATMアプリケーションに手数料徴収機能を実装する方法を解説します。この際、UMLクラス図やシーケンス図の生成についても説明します。
---
Status: #blog

Tags:  #altova #c #java #missionkit #software-modeling #uml #uml-tool #umodel #visual-basic

Categories: [Altova](/blog/ja/category/altova.md) 
# 第4部：Altova UModelを用いたレガシーアプリケーションの分析

このシリーズの[第1部](https://www.altova.com/blog/2009/04/analyzing-legacy-application-with.html)では、ソースコードを[Altova UModel](https://www.altova.com/ja/products/umodel/uml_tool.html)にインポートしてUMLプロジェクトを作成し、既存のATMアプリケーションの[クラス図](https://www.altova.com/ja/features_class_diagram.html)を検証しました。 

その中で、 [第二部](https://www.altova.com/blog/2009/04/part-2-analyzing-legacy-application.html) 私たちは、一連のものを制作しました [UMLユースケース図](https://www.altova.com/ja/features_use_case.html) システムのユーザーインタラクションを記述するために、また、引き出し手数料を導入するためのアプリケーションの機能改善を計画しました。 

[第3部](https://www.altova.com/blog/2009/05/part-3-analyzing-legacy-application.html)では、システムの動作をさらに分析し、ドキュメント化するために、[UMLステートマシン図](https://www.altova.com/ja/features_state_machine_diagram.html)を作成しました。今回の記事では、以前計画していた機能拡張について改めて取り上げます。具体的には、100ドル未満の引き出しに対しては2ドルの手数料、100ドル以上の引き出しに対しては4ドルの手数料を導入することになりました。第2部では、この新しい機能とユーザーがどのようにやり取りするかを示すために、ユースケース図を作成しました 

[![UMLユースケース図](https://lh4.ggpht.com/_REdrfeVqYdU/SgMSvo2m2-I/AAAAAAAAAGU/7htMTzPadB0/image1_thumb%5B1%5D.gif?imgmax=800 "UML use case diagram")](http://lh5.ggpht.com/_REdrfeVqYdU/SgMSvOZJfaI/AAAAAAAAAGQ/SmDT2J9YN80/s1600-h/image1%5B3%5D.gif) 

パート1で分析したオブジェクト指向クラスに基づいて、私たちのシステムには「Withdrawal（引き出し）」クラスが存在しており、このクラスが新しい機能の実装に適した場所であることがわかっています。モデルツリーで「Withdrawal」クラスを選択し、右クリックのコンテキストメニューから「新しい図を作成」を選択することで、このクラスの新しいクラス図を表示できます。

[![UModel モデルツリーのヘルプウィンドウ](https://lh4.ggpht.com/_REdrfeVqYdU/SgMSwAsoM5I/AAAAAAAAAGc/_wjHFGYNizA/image2_thumb%5B1%5D.gif?imgmax=800 "UModel Model Tree helper window")](http://lh5.ggpht.com/_REdrfeVqYdU/SgMSv_Y20sI/AAAAAAAAAGY/ukYEuXjPBFo/s1600-h/image2%5B3%5D.gif)

[![UMLクラス図](https://lh5.ggpht.com/_REdrfeVqYdU/SgMSwSCA44I/AAAAAAAAAGk/xZ_KNAFntzw/image3_thumb%5B2%5D.gif?imgmax=800 "UML class diagram")](http://lh5.ggpht.com/_REdrfeVqYdU/SgMSwRwsa6I/AAAAAAAAAGg/8dHhPHcxS-c/s1600-h/image3%5B6%5D.gif)

私たちは、引き出しクラスのすべてのプロパティ、およびトランザクションクラスから継承されたプロパティも含めて可視化するために、階層図を作成することを選択しました。手数料機能の実装前に、関連する未解決の課題について調査する必要があります。具体的には、現在のコードに、ユーザーが要求した引き出し金額が、現在の口座残高を超えないことを確認するためのテストが含まれているかどうかを確認したいと考えています [UMLシーケンス図](https://www.altova.com/ja/features_sequence_diagram.html) これにより、引き出し処理の実行フローを追跡することができます。UModelは、リバースエンジニアリングされたクラスの操作から、自動的にシーケンス図を生成できます。クラス図で実行操作を選択し、UModelの右クリックメニューから「シーケンス図の生成」を選択することで、必要な図を作成できます。 

[![Altova UModel シーケンス図生成ダイアログ](https://lh6.ggpht.com/_REdrfeVqYdU/SgMSw2ezLGI/AAAAAAAAAGs/QqBzd8FYxHk/image4_thumb%5B1%5D.gif?imgmax=800 "Altova UModel Sequence Diagram Generation dialog")](http://lh5.ggpht.com/_REdrfeVqYdU/SgMSwvRDbYI/AAAAAAAAAGo/99KMNTYLeus/s1600-h/image4%5B3%5D.gif) 

UModelのシーケンス図生成ダイアログには、新機能の実装を支援するいくつかのオプションが用意されています。今回は「自動更新」を選択しました。これは、コードを修正した後で、後から図を更新したいと考えているためです。また、コードを別のレイヤーで表示することで、引き出し処理のロジックに集中しやすくなります。 

[![UMLシーケンス図](https://lh4.ggpht.com/_REdrfeVqYdU/SgMSxnOimQI/AAAAAAAAAG0/ISFoBjX-hXU/image4a_thumb%5B1%5D.gif?imgmax=800 "UML sequence diagram")](http://lh3.ggpht.com/_REdrfeVqYdU/SgMSxnSx5xI/AAAAAAAAAGw/zQeOikuRG4s/s1600-h/image4a%5B3%5D.gif) 

スクロールバーのサイズから判断すると、現在のウィンドウにはシーケンス図の一部分しか表示されていません。ウィンドウに合わせて表示を小さくすることもできますが、テキストが読みにくくなる可能性があります。そこで、UModelの柔軟なユーザーインターフェースを活用して、ダイアグラムツリーとプロパティウィンドウを自動的に非表示にし、代わりに概要表示ヘルパーウィンドウを大きく表示しましょう

[![UModelの概要を表示するナビゲーションウィンドウ](https://lh3.ggpht.com/_REdrfeVqYdU/SgMSyLoDmAI/AAAAAAAAAG8/VSrcxmlUzyo/image5_thumb%5B1%5D.gif?imgmax=800 "UModel Overview navigation window")](http://lh6.ggpht.com/_REdrfeVqYdU/SgMSx7BnhCI/AAAAAAAAAG4/lJ2kDb9YGZs/s1600-h/image5%5B3%5D.gif) 

概要ウィンドウにある赤い四角をドラッグすることで、シーケンス図を探索できます。これにより、引き出し金額と口座残高の比較箇所を素早く特定することができます。

[![UMLシーケンス図](https://lh3.ggpht.com/_REdrfeVqYdU/SgMSyhedGhI/AAAAAAAAAHE/SvFKj234kxs/image6_thumb%5B1%5D.gif?imgmax=800 "UML sequence diagram")](http://lh5.ggpht.com/_REdrfeVqYdU/SgMSyYWsvVI/AAAAAAAAAHA/JuO3ZaULHZg/s1600-h/image6%5B3%5D.gif)

また、ATMに十分な現金がない場合や、口座の残高が不足している場合に表示されるエラーメッセージも確認できます。

[![UMLシーケンス図](https://lh6.ggpht.com/_REdrfeVqYdU/SgMSzJ4GmrI/AAAAAAAAAHM/SgmUgFNzAjc/image7_thumb%5B1%5D.gif?imgmax=800 "UML sequence diagram")](http://lh6.ggpht.com/_REdrfeVqYdU/SgMSy6XzdcI/AAAAAAAAAHI/i7EjoSM3VS8/s1600-h/image7%5B3%5D.gif)

「離脱」クラス図に戻り、そこで「料金」という属性を追加し、そのデフォルト値を設定することができます 

[![UMLクラス図](https://lh3.ggpht.com/_REdrfeVqYdU/SgMSzYpOX5I/AAAAAAAAAHU/vpZ-rn2obmA/image8_thumb%5B1%5D.gif?imgmax=800 "UML class diagram")](http://lh3.ggpht.com/_REdrfeVqYdU/SgMSzMMLe_I/AAAAAAAAAHQ/J0Cxo0Wv_fg/s1600-h/image8%5B3%5D.gif) 

まず、ユーザーがキャンセルするオプションを含めずに、料金計算の機能を実装します。まず、私たちのモデルに基づいてソースコードを更新し、Withdrawalクラスに料金に関するプロパティを追加します。次に、お気に入りのソースコードエディターを使って、Withdrawal.javaファイルに直接料金計算の機能を実装します。再コンパイルしたアプリケーションのテスト結果は以下の通りです 

[![ATMシミュレーション](https://lh4.ggpht.com/_REdrfeVqYdU/SgMSz9cBOHI/AAAAAAAAAHc/z6TwcwHMWvg/image9_thumb%5B1%5D.gif?imgmax=800 "ATM Simulation")](http://lh3.ggpht.com/_REdrfeVqYdU/SgMSzvjZUzI/AAAAAAAAAHY/1PFnBGhRMHw/s1600-h/image9%5B3%5D.gif) 

開始時の残高は147ドルでした。100ドルを引き出した後、新しい残高は43ドルです。手数料は新しいメッセージで表示され、最終的な残高は正しいです。しかし、現在のUMLモデルにおけるシーケンス図は、手数料の機能が含まれていないため、正確ではありません。UMLプロジェクトを修正されたソースコードに基づいて更新することで、シーケンス図を修正できます。UModelのメッセージウィンドウには、Withdrawal.javaファイルへの変更が、シーケンス図の再生成を引き起こしたことが示されています。また、この図を簡単に操作して、引き出し金額に関する新しいテストの位置を特定し、手数料を4ドルに増額する必要があるかどうかを確認できます。 

[![image10a](https://lh4.ggpht.com/_REdrfeVqYdU/SgMS0bn_5EI/AAAAAAAAAHk/BkVoVAWz-tM/image10a_thumb%5B1%5D.gif?imgmax=800 "image10a")](http://lh3.ggpht.com/_REdrfeVqYdU/SgMS0MZLn5I/AAAAAAAAAHg/qbpqaDucnEU/s1600-h/image10a%5B3%5D.gif) 

修正したシーケンス図が、ATMの最新の動作を視覚的に表現しているため、このシリーズの第3部で出会った、慌ただしいドライバーがアイスクリームを買うのに十分な現金を持っていることが確信できます。次回の記事では、UModelの別の機能を活用して、これまでの作業に関する詳細なプロジェクトドキュメントを作成します。これは、UMLモデルとアプリケーションのソースコードを同期させることのもう一つの利点です。 

もし、ご自身のJava、C#、またはVisual Basicで構築された既存のアプリケーションで、Altova UModelをお試しになりたい場合は、[こちらをクリックして、30日間の無料トライアル版をダウンロードしてください](https://www.altova.com/ja/download/umodel/uml_tool_enterprise.html)
