状態図、または状態機械図は、統一モデリング言語(UML)は、システムの動的動作をモデル化するために使用されます。イベントに応じてオブジェクトやシステムが異なる状態間をどのように遷移するかを示すため、銀行自動契約機(ATM)のような反応型システムに最適です。この事例研究では、状態図がATMの動作をどのように表現できるかを検討します。ATMは、明確な状態とイベント駆動の遷移を持つ身近な現実世界のシステムです。ATMのライフサイクルを検討することで、状態、遷移、アクション、複合状態、トリガーなし遷移といった主要な状態図の概念を強調します。また、この事例研究では、Visual Paradigmといったツールが、このような図の作成を簡素化できることを示します。
以下は、Visual Paradigmの状態機械図モデリングエディタを使用して作成された状態機械図です:

状態図は、以下の要素を定義することで、システムの動作を捉えます:
状態:システムのライフサイクル中の特定の状態や状況(例:「アイドル」または「顧客サービス中」)
遷移:イベントによって引き起こされる状態間の移動(例:カード挿入)
アクション:状態への進入、退出、または状態間の遷移時に実行される活動(例:カード読み取り)
複合状態:階層的モデリングのためにサブ状態を含む状態(例:「顧客サービス中」には「顧客認証」などのサブ状態を含む)
初期状態と終了状態:システム動作の開始点および可能性のある終了点
トリガーなし遷移:明示的なイベントなしで自動的に発生する遷移(例:自己診断からアイドル状態への移行)
これらの概念は、現在の状態や外部の刺激に依存するシステム、たとえばATMのようなシステムのモデリングにおいて重要です。
銀行ATMは、現金の引き出し、預け入れ、残高照会などの顧客取引を支援します。その動作はイベント駆動であり、ユーザーの操作(例:カード挿入、PIN入力)やシステム状態(例:自己診断の通過)に基づいて明確な状態が変化します。状態図は、ATMの状態、遷移、アクションを明確に定義するため、設計、実装、保守のための構造的表現を確保する効果的なツールです。
ATMは以下の状態で動作します:
電源オフ
説明: ATMは電源がオフでユーザーとのやり取りができません。システムが起動される前の初期状態です。
主な特徴: ATMが電源投入されるまで、いかなる操作もできません。
自己診断
説明: 電源投入時に、ATMはこの状態に入り、カードリーダー、キーパッド、現金出金装置などの部品をチェックする診断テストを実行します。
結果:
合格: ATMは「アイドル」状態に移行します。
不合格: ATMは「サービス停止」状態に移行します。
主な特徴: この状態では、顧客にサービスを提供する前にATMが正常に動作することを保証します。
サービス停止
説明: 自己診断に失敗した場合、または重大なエラーが発生した場合(例:現金出金装置の故障)にこの状態に入ります。ATMは動作不能となり、保守が必要です。
主な特徴: 修理またはリセットされるまで、最終状態として機能します。
アイドル
説明: ATMは電源がオンで動作中であり、顧客が銀行カードまたはクレジットカードを挿入して取引を開始するのを待機しています。
主な特徴: 顧客とのやり取りを待つ主な待機状態です。
顧客対応中
説明: 顧客がカードを挿入したときに進入する複合状態です。認証から取引完了までのすべての顧客のやり取りを含みます。
進入アクション: カード読み取り(ATMがカードの情報を読み取ります)。
終了アクション: カード排出(ATMがカードを放出します)。
サブ状態:
顧客認証
ATMは顧客にPINを入力するよう促し、その有効性を確認します。
PINが誤っている場合、ATMはカードを排出する前に再試行を許可する場合があります(例:最大3回まで)。
取引選択
顧客は取引の種類(例:現金引き出し、預け入れ、残高照会)を選択します。
取引
ATMは選択された取引を処理します(例:現金の払い出し、預け入れの受け付け、残高の表示)。
処理が完了すると、ATMは「アイドル」状態に戻ります。
ATMはイベントや条件に基づいて状態間を遷移します。主な遷移は以下の通りです:
|
遷移 |
元の状態 |
先の状態 |
トリガー |
アクション |
|---|---|---|---|---|
|
電源オン |
電源オフ |
自己診断 |
ATMが電源オン |
起動処理(ハードウェアの初期化) |
|
自己診断成功 |
自己診断 |
アイドル |
なし(トリガーレス) |
なし |
|
自己診断失敗 |
自己診断 |
サービス停止中 |
テスト失敗 |
なし |
|
カード挿入 |
アイドル |
顧客対応中 |
顧客がカードを挿入 |
カード読み取り |
|
認証成功 |
顧客認証 |
取引選択中 |
有効なPINが入力されました |
なし |
|
認証失敗(再試行後) |
顧客認証 |
アイドル |
無効なPIN(再試行回数超過) |
カード排出 |
|
取引選択済み |
取引選択中 |
取引 |
顧客が取引を選択 |
なし |
|
取引完了 |
取引 |
アイドル |
取引が完了する |
カード排出 |
|
キャンセル |
顧客サービス中の任意のサブ状態 |
アイドル |
顧客がキャンセルする |
カード排出 |
この状態図は、状態図のいくつかの核心的な概念を示している:
状態:ATMの動作は、明確に区別された状態(例:電源オフ、アイドル、顧客サービス中)に分けられ、それぞれが特定の状態を表している。
遷移:カード挿入やPIN検証などのイベントが状態の変化を引き起こし、システムのフローを明確に定義する。
アクション:エントリーアクション(例:カード読み取り)およびエグジットアクション(例:カード排出)は、状態変更中の活動を指定する。
複合状態:「顧客サービス中」状態にはサブ状態(顧客認証、取引選択、取引)が含まれており、階層的なモデル化を可能にする。
初期状態と最終状態:「電源オフ」は初期状態であり、「サービス停止」は保守作業が行われるまで最終状態として機能する。
トリガーなしの遷移:テストが成功した場合、「自己診断」から「アイドル」への遷移は明示的なイベントなしで自動的に発生する。
状態図はATMのモデル化に適している理由は以下の通りである:
有限な状態:ATMには明確な状態の集合(例:アイドル、顧客サービス中)があり、それらがその動作を定義している。
イベント駆動型の動作: 遷移はユーザーの操作(例:カード挿入、PIN入力)またはシステム状態(例:自己診断の結果)によって引き起こされます。
階層構造: 「顧客対応中」のような複合状態を使用することで、複雑な相互作用を詳細にモデル化できます。
ステークホルダーへの明確さ: 図は開発者、デザイナー、ステークホルダーが簡単に理解できる視覚的表現を提供し、システム設計および保守を支援します。
Visual Paradigmは、状態図の作成を簡素化する強力なUMLモデリングツールです。その機能には以下が含まれます:
ドラッグアンドドロップインターフェース: 状態、遷移、アクションを簡単に追加できます。
シミュレーションツール: 遷移のテストにより、図の論理を検証できます。
テンプレート: ATMなどのシステム用に事前に作成されたテンプレートを使用して、モデリングを迅速化できます。
コード生成: 図からコードの骨格(例:Java、C++)を生成できます。
共同作業: コラボレーティブプロジェクトにおけるリアルタイムでのチーム編集とコメント機能。
Visual ParadigmでATMの状態図を作成するには:
Visual Paradigmを開き、次を選択します:図 > 新規 > 状態機械図.
ドラッグアンドドロップエディタを使用して、状態(例:電源オフ、自己診断、アイドル)を追加します。
適切なトリガー(例:「電源オン」、「カード挿入」)を使用して遷移を描画します。
アクションを定義します(例:readCard, ejectCard)を、入力、退出、または遷移に設定します。
シミュレーションを使用してフローをテストし、正確性を確認します。
銀行のATM状態図は、UML状態図が現実世界のシステムの動作をどのようにモデル化できるかを効果的に示しています。明確な状態、イベント駆動型の遷移、およびアクションを定義することで、図はATMの動作を構造的に表現しています。このアプローチにより理解が深まり、システム設計が容易になり、実装および保守をサポートします。Visual Paradigmこのような図を作成・テスト・共有しやすくし、システム開発における正確性と協力を確保します。