PLCの開発 その04 シーケンス図

というわけで前回アプリの共通イメージを構築しました。
さてシーケンス図ですが、

オブジェクト間のメッセージの流れを時系列的に表現することが可能である。
シーケンス図 - Wikipedia

となっています。では、前回のイメージからログインという機能をシーケンス図にしてみます。

時系列ということで、操作の流れを思い描きます。まず、ユーザがメイン画面のログインボタンを押します。次に、メイン画面はユーザをログイン状態にして、ユーザがオンラインに更新された参加者リストが出来上がるので、これをメイン画面の参加者リストに表示させます。

さて、メイン画面はユーザがログインするという情報をPLCに書き込まないといけません。この時、ユーザの操作を受けたり情報を表示したりするメイン画面がログインや参加者リストの表示等の他に、PLC関連の操作も担うと色々な機能がこんがらがることになります。あれもこれも色々な機能を持つと何をやっているものかわからなくなります。様々な機能が1つのところにあると、様々な機能が相互に影響しあって、どれかが駄目になったら他も一緒に駄目になってしまう腐った蜜柑理論で割れ窓理論なものになってしまいます。
ということで、PLC関連の操作を行う、PLC操作部を用意しました。PLC操作部はPLCへの操作の窓口にします。PLC操作部はPLCへの色々な処理を一手に引き受けます。一方、メイン画面はユーザの操作の窓口になります。

以上を整理すると、、、

  1. メイン画面はユーザからログインしたいという処理を受け付けます。
  2. メイン画面はユーザの情報をログインするものとしてPLC操作部に渡します。
  3. PLC操作部は参加者リスト情報を保存する場所にユーザ情報を追加します。
  4. PLC操作部は新しくなった参加者リストを取得しメイン画面に渡します。
  5. メイン画面は受け取った参加者リストを表示します。

できたのが以下です。

メイン画面とPLC操作部という"オブジェクト:矩形"を作りました。

そして初めにユーザがメイン画面のログインボタンを押すという操作を行います。メイン画面がログインを行う"メッセージ:水平線"をPLC操作部に渡します。PLC操作部はこのメッセージを受け取ると更新された参加者リストをメイン画面に"返します"(リターン:水平破線)。


他のシーケンス図も全部貼り付けます。

  • ログイン(他人)


これは、どこかで自分以外の人がログインしたときの処理です。誰かがログインするとPLC上の参加者リストが更新されますので、これをPLC操作部が検知して参加者リストを取得し、メイン画面が表示するようにリストを渡します。

  • 会話開始


ユーザはメイン画面の参加者リストから会話したい人やグループを選択します。メイン画面は会議室を立ち上げます。会話がメイン画面の作業とは切り離せるので、別オブジェクトにしました。会議室画面は立ち上がると、会話グループを作成します。そして、過去ログを要求します。このグループに過去の会話のログがある場合はログを取得し表示します。(会話グループが作られると、参加者リストのグループが更新されるので、新しい参加者リストをメイン画面も受け取って表示しないといけないか。)

  • 呼込み


会議室画面の個人だけの参加者リストから参加させたいユーザを選択します。会議室画面はそのユーザをPLC操作部に渡すと、PLC操作部はこのユーザをグループに追加します。(これもグループが更新されるので新しい参加者リストをメイン画面に表示しないといけないね。)

  • 招待


どこかの会議室から招待されたら会議室画面が開きます。

  • 会話終了


ユーザが会議室画面を閉じようとすることによって退出処理を開始します。PLC操作部はPLCの参加者情報からユーザを削除します。この時、会議室に参加していたグループが1人になった場合は、会話が成立しないのでグループ自体を削除します。これによって、会議室画面が閉じられます。

  • ログアウト


メイン画面のログアウトボタンを押下するとメイン画面はログアウトをPLC操作部にお願いします。PLC操作部はPLCのユーザ情報をオフラインに書き換えます。



次回クラス図を各自考えて来ます。といいつつ、現実世界では既に行っていました。(その日に考えているような感じでしたが)色々意見やら感想が各自ありましたので、1つに纏めるのは大変です。そこで、次回は各自想いを書くということで、遂にOさんTさんの初エントリーが!!乞う御期待!!

ちなみに次々回は、もう一度、分析工程としてのクラス図を考え直します。