こんなような話は、何回も書いているけど、
最近、ソフトウェア工学ネタで、見てくれる人が多くなった。
なので、もしかすると、見てない人がいるかもしれないので、
また、取り上げてみる。
■全体の流れと、今日の説明範囲
そもそもUMLだと、「詳細設計書」は、書かなくないか?
http://blog.goo.ne.jp/xmldtp/e/147b230c186e8b5a3d5092cb0c50ecf9
に書いた。
(以下太字が書いたところ。なお、今回は、番号を振っている)
いい、いくよ!付いてきてね!!
(1)ユースケースに対して、そのアクティビティを書いて、
要求を明示するよねえ
→ユースケース図、アクティビティ図
(2)そのアクティビティに対し、入出力を明示し
(ここが入出力設計、UI)
(3)その入出力を元に(正規化とか)、クラスをつくるよねえ
→クラス図(ER図に相当する)
(4)その後、MVCアーキテクチャを採用したとすると、
なんかのフレームワークを決めて、
(5)アクティビティ図の入出力に対する部分がViewとなり、
クラス図(ER図に相当する)ところが、モデル(DAO)になり
アクティビティは、Viewを受ける部分にあたるので、コントローラーとなる。
→コントローラーが
クラスとなるか(Struts,Actionクラス)
メソッドとなるか(CakePHP,Zendなど)
は、フレームワークやアーキテクチャによる
これで、アーキテクチャに基づいたクラス、メソッド割がきまる。
(6)そして、クラスから、何を呼び出すかという、呼び出し関係と
メッセージ(引数)を、シーケンス図に描き、
(7)状態遷移は、遷移図(ステートマシン図)に書ける
これを、Astahでやると、どうなるかについて書く。
また、詳細設計に相当するところはどこに書いて、
どの後どうするかについても、書いてみたい・・・
が、長くなるので今日は、(1)、(2)くらいまで
■御題。
アンケートサイトを作り、集計するとする。
アンケートの内容は、以下のとおり
結果は、以下のように表示する
問1~問4まで:円グラフ
問5:棒グラフ
さらに、問3、問4については、思う、思わないをクロス集計
■まず、このシステムでしたいことと、それに関する人物
(ステークホルダー)をユースケースで書く
このシステム(アンケート)は、アンケートに回答してもらって、
集計する。当然回答する人と、集計する人がいる。
それを、ユースケースに書く。
なかんじ
■そのユースケースごとに、アクティビティを書く
ユースケースは、2つ上がった
ユースケース回答、
ユースケース集計
このユースケースごとに、ステークホルダーである登場人物が、どんな手順で
なにをするかを、アクティビティ図に描く。
ステークホルダー(集計する人、回答する人)は、それぞれ、レーンになる。
また、後作業のため、システムも入れておこう。
こんなかんじ。
<<アンケート回答>>
<<アンケート集計>>
■そのアクティビティ図に入出力画面とかを入れる
アクティビティ図に入出力画面やDBのデータ、帳票などを入れる。
入れ方だが、
ステークホルダーから、システムにいくには、
何らかのイベントを起こすはずである=ボタンなど
多くの場合、データを保存する
システムからステークホルダーに行くときは、
画面表示、帳票表示など、何らかのデバイスへの出力をするのが普通
出力するため、データを入力することが多い
これをもとに、オブジェクトノードを追加する。
<<アンケート回答>>
<<アンケート集計>>
■次回は・・・
このオブジェクトノードをクラスにしていく。
最近、ソフトウェア工学ネタで、見てくれる人が多くなった。
なので、もしかすると、見てない人がいるかもしれないので、
また、取り上げてみる。
■全体の流れと、今日の説明範囲
そもそもUMLだと、「詳細設計書」は、書かなくないか?
http://blog.goo.ne.jp/xmldtp/e/147b230c186e8b5a3d5092cb0c50ecf9
に書いた。
(以下太字が書いたところ。なお、今回は、番号を振っている)
いい、いくよ!付いてきてね!!
(1)ユースケースに対して、そのアクティビティを書いて、
要求を明示するよねえ
→ユースケース図、アクティビティ図
(2)そのアクティビティに対し、入出力を明示し
(ここが入出力設計、UI)
(3)その入出力を元に(正規化とか)、クラスをつくるよねえ
→クラス図(ER図に相当する)
(4)その後、MVCアーキテクチャを採用したとすると、
なんかのフレームワークを決めて、
(5)アクティビティ図の入出力に対する部分がViewとなり、
クラス図(ER図に相当する)ところが、モデル(DAO)になり
アクティビティは、Viewを受ける部分にあたるので、コントローラーとなる。
→コントローラーが
クラスとなるか(Struts,Actionクラス)
メソッドとなるか(CakePHP,Zendなど)
は、フレームワークやアーキテクチャによる
これで、アーキテクチャに基づいたクラス、メソッド割がきまる。
(6)そして、クラスから、何を呼び出すかという、呼び出し関係と
メッセージ(引数)を、シーケンス図に描き、
(7)状態遷移は、遷移図(ステートマシン図)に書ける
これを、Astahでやると、どうなるかについて書く。
また、詳細設計に相当するところはどこに書いて、
どの後どうするかについても、書いてみたい・・・
が、長くなるので今日は、(1)、(2)くらいまで
■御題。
アンケートサイトを作り、集計するとする。
アンケートの内容は、以下のとおり
・緊急アンケート ・問1 あなたは、卵かけご飯を食べたことがありますか A:ある B:ない → 問4へ、進んでください ・問2 あなたは、卵かけご飯は、危険な食べ物だと思いますか? A:思う B:思わない ・問3 以下の記事を読んでください 日本の「卵かけ御飯」が「絶対に危険な食べ物」に選ばれる…中国 http://blog.livedoor.jp/dqnplus/archives/1758248.html あなたは、卵かけご飯は、危険な食べ物だと思いますか? A:思う B:思わない ・問4 あなたの性別について答えてください A:男 B:女 C:その他 ・問5 あなたの年齢層について答えてください A:10歳未満 B:10代 C:20代 D:30代 E:40代 F:50代 G:60代 H:70歳以上 |
結果は、以下のように表示する
問1~問4まで:円グラフ
問5:棒グラフ
さらに、問3、問4については、思う、思わないをクロス集計
■まず、このシステムでしたいことと、それに関する人物
(ステークホルダー)をユースケースで書く
このシステム(アンケート)は、アンケートに回答してもらって、
集計する。当然回答する人と、集計する人がいる。
それを、ユースケースに書く。
なかんじ
■そのユースケースごとに、アクティビティを書く
ユースケースは、2つ上がった
ユースケース回答、
ユースケース集計
このユースケースごとに、ステークホルダーである登場人物が、どんな手順で
なにをするかを、アクティビティ図に描く。
ステークホルダー(集計する人、回答する人)は、それぞれ、レーンになる。
また、後作業のため、システムも入れておこう。
こんなかんじ。
<<アンケート回答>>
<<アンケート集計>>
■そのアクティビティ図に入出力画面とかを入れる
アクティビティ図に入出力画面やDBのデータ、帳票などを入れる。
入れ方だが、
ステークホルダーから、システムにいくには、
何らかのイベントを起こすはずである=ボタンなど
多くの場合、データを保存する
システムからステークホルダーに行くときは、
画面表示、帳票表示など、何らかのデバイスへの出力をするのが普通
出力するため、データを入力することが多い
これをもとに、オブジェクトノードを追加する。
<<アンケート回答>>
<<アンケート集計>>
■次回は・・・
このオブジェクトノードをクラスにしていく。