ちょっと話す機会があって、
こんなかんじかしら・・・
って、説明したのをシェアシェア!
(1)いちばん、やりたいことの中心のシナリオをまとめる
・人感センサーで、店内の通行量をはかり、30秒おきに、本部に送って結果が見れるようにする
(2)なんについて、何で、何をするか、決める
→「なんについて」をユースケース、「何で」アクターにすると、ユースケース図が書ける
・例「なんについて」:人気スポット集計(いいのか?この名前で)
「何で」人感センサー、本部、
(3)上記(2)で決めたことを実現する為に、必要なものや事前にやっておくことを
考えて、ストーリー(シナリオ)を作る
・例:人が通ったら、人感センサーがON
ONになったら、端末で、人数1UP
端末は、30秒ごとに本部にデータ送信、送信後、カウントを0に
本部は、端末からデータを受け取り、DB登録
本部は30秒ごとに店舗交通量表示画面をリフレッシュ
→ストーリー(上記の例のようなもの)を、ユースケース記述とする
(4)上記(3)で出てきた「もの」を、1レーンとして、ユースケースごとに、業務流れ図を作成する
このとき、入出力を明確にして書く。
入力は、通信・DB以外として、センサーと画面がありえる
出力も、通信・DB以外として、アクチュエーターや画面・帳票・Excel等ファイルがありえる
・例:
人、センサー、端末、本部を各レーンとして、
業務流れ図を書く
※レーンはアクター以外もありえる
(上記だと、アクターにイベントを起こす「人」や、
内部の資源である「端末」も入る)
→業務流れ図がアクティビティ図になる
(5)業務流れ図をもとに、シーケンス図を作成し、
メッセージ交換内容を明確にする
・例:アクティビティ図から、メッセージが発生するのは
人感センサーと端末:GPIO?ならON/OFF
端末と本部:時間+場所+人数、これ以外のメッセージ居る?
→シーケンス図を描きましょう
(6)データ入出力部分の画面や、DBなど、決まっていないものの項目を決める
画面は、画面定義書(=画面遷移図+画面レイアウト・画面項目定義・アクション定義)
DBは、DB定義書(=ER図+DBテーブル(項目)定義)
というかんじで・・
→画面遷移図は、書く気になれば、状態遷移図で表現できる
DB定義書は、クラス図で表現できる
(7)上記(4)で作成した、業務流れ図を、レーンごとにみる。そうすると、
どっかから、「イベントが起こり、一連の処理をして、どっかに飛んでいく」
という流れの繰り返しになる。
このとき、「イベントが起こり、一連の処理をして、どっかに飛んでいく」
を1つの状態とする。
そうすると、1レーンごとに業務流れ図をみると、
・何かの処理をしている状態と、
何もしていない状態の繰り返しになる。
各状態の遷移を、状態遷移図であらわす。
・例:端末のレーンに着目する
「センサーからONが入ってきたら、カウンターを1上げる」という状態と
「30秒ごとに、本部データ送信、カウンターを0に」という状態がある。
上記状態を「センサーON」、下記状態を「本部転送」とする。
ただし、ここで、何もしないという状態が問題になる。
「センサーON」と「本部転送」が独立して起こるなら、何もしない状態は、
「センサーOFF]と「転送まち」状態になるが、
「本部転送」中は「センサーON」処理をしないのであれば、何もしない状態は
「センサーOFF&転送まち」状態の1つとなる。
これは、仕様により判断する。
→状態遷移図は、ステートマシン図です。
(8)上記(7)の業務流れ図には、(4)で入出力を書いた。
なので、(7)で振った、どの状態のときに、どの入出力を行うかわかる。
また、(5)のシーケンス図は、(7)の業務流れ図の状態に対応できるはずなので、
(どちらも同じ(4)の業務流れ図を基に作っているから)
その状態のときに、どのメッセージを投げるかがわかる。
そこで、各状態において、どのような入出力と、メッセージが必要かを、
(4)の業務流れ図と、(5)のシーケンス図をもとに、状態ごとにまとめる。
例:端末
case センサーONのときは、
GPIOから、どこかへ保存
break;
case 端末のときは
保存データを読み込み、(5)で考えたメッセージを作り、本部へ送信
break;
→これは、もう言葉で書くかんじなので、UMLつかわない。
(9)実装する
Arduinoのプログラムで、状態がどのときは。。。とか、コーディングしていく
(10)テストする
がんばれ!
いじょう・・・
こんなかんじかしら・・・
って、説明したのをシェアシェア!
(1)いちばん、やりたいことの中心のシナリオをまとめる
・人感センサーで、店内の通行量をはかり、30秒おきに、本部に送って結果が見れるようにする
(2)なんについて、何で、何をするか、決める
→「なんについて」をユースケース、「何で」アクターにすると、ユースケース図が書ける
・例「なんについて」:人気スポット集計(いいのか?この名前で)
「何で」人感センサー、本部、
(3)上記(2)で決めたことを実現する為に、必要なものや事前にやっておくことを
考えて、ストーリー(シナリオ)を作る
・例:人が通ったら、人感センサーがON
ONになったら、端末で、人数1UP
端末は、30秒ごとに本部にデータ送信、送信後、カウントを0に
本部は、端末からデータを受け取り、DB登録
本部は30秒ごとに店舗交通量表示画面をリフレッシュ
→ストーリー(上記の例のようなもの)を、ユースケース記述とする
(4)上記(3)で出てきた「もの」を、1レーンとして、ユースケースごとに、業務流れ図を作成する
このとき、入出力を明確にして書く。
入力は、通信・DB以外として、センサーと画面がありえる
出力も、通信・DB以外として、アクチュエーターや画面・帳票・Excel等ファイルがありえる
・例:
人、センサー、端末、本部を各レーンとして、
業務流れ図を書く
※レーンはアクター以外もありえる
(上記だと、アクターにイベントを起こす「人」や、
内部の資源である「端末」も入る)
→業務流れ図がアクティビティ図になる
(5)業務流れ図をもとに、シーケンス図を作成し、
メッセージ交換内容を明確にする
・例:アクティビティ図から、メッセージが発生するのは
人感センサーと端末:GPIO?ならON/OFF
端末と本部:時間+場所+人数、これ以外のメッセージ居る?
→シーケンス図を描きましょう
(6)データ入出力部分の画面や、DBなど、決まっていないものの項目を決める
画面は、画面定義書(=画面遷移図+画面レイアウト・画面項目定義・アクション定義)
DBは、DB定義書(=ER図+DBテーブル(項目)定義)
というかんじで・・
→画面遷移図は、書く気になれば、状態遷移図で表現できる
DB定義書は、クラス図で表現できる
(7)上記(4)で作成した、業務流れ図を、レーンごとにみる。そうすると、
どっかから、「イベントが起こり、一連の処理をして、どっかに飛んでいく」
という流れの繰り返しになる。
このとき、「イベントが起こり、一連の処理をして、どっかに飛んでいく」
を1つの状態とする。
そうすると、1レーンごとに業務流れ図をみると、
・何かの処理をしている状態と、
何もしていない状態の繰り返しになる。
各状態の遷移を、状態遷移図であらわす。
・例:端末のレーンに着目する
「センサーからONが入ってきたら、カウンターを1上げる」という状態と
「30秒ごとに、本部データ送信、カウンターを0に」という状態がある。
上記状態を「センサーON」、下記状態を「本部転送」とする。
ただし、ここで、何もしないという状態が問題になる。
「センサーON」と「本部転送」が独立して起こるなら、何もしない状態は、
「センサーOFF]と「転送まち」状態になるが、
「本部転送」中は「センサーON」処理をしないのであれば、何もしない状態は
「センサーOFF&転送まち」状態の1つとなる。
これは、仕様により判断する。
→状態遷移図は、ステートマシン図です。
(8)上記(7)の業務流れ図には、(4)で入出力を書いた。
なので、(7)で振った、どの状態のときに、どの入出力を行うかわかる。
また、(5)のシーケンス図は、(7)の業務流れ図の状態に対応できるはずなので、
(どちらも同じ(4)の業務流れ図を基に作っているから)
その状態のときに、どのメッセージを投げるかがわかる。
そこで、各状態において、どのような入出力と、メッセージが必要かを、
(4)の業務流れ図と、(5)のシーケンス図をもとに、状態ごとにまとめる。
例:端末
case センサーONのときは、
GPIOから、どこかへ保存
break;
case 端末のときは
保存データを読み込み、(5)で考えたメッセージを作り、本部へ送信
break;
→これは、もう言葉で書くかんじなので、UMLつかわない。
(9)実装する
Arduinoのプログラムで、状態がどのときは。。。とか、コーディングしていく
(10)テストする
がんばれ!
いじょう・・・