シリーズ「ZendにおけるMVC(Javaフレームワークとの違い)」の続き
前回Javaとの比較をした。
今回は、このシリーズの最後として、要件定義が決まってから、実装までの流れを
・一般的な設計の流れ
構造化手法
オブジェクト設計
・
ウェブ戦略としての「ユーザーエクスペリエンス」―5つの段階で考えるユーザー中心デザインに基づいた流れの2とおりで紹介する。
■一般的な開発の流れ:構造化手法
-----------Zendに関係ないところ
1.システムが大きすぎる場合、どんな機能が必要か考えて詳細化する
→DMMが使える。もちろんマインドマップでもいい
→この時点でMECEにしようとすると、躓くので、まあ、ざっと挙げる程度でよい
2.DFDを使って詳細化する
一番初め、このシステムの入出力を考え、真ん中に開発するシステムを書き、
入出力をつないでいく→コンテキストダイアグラム
そうしたら、コンテキストダイアグラムの中を埋めていく。DMMを参考にしたり、
う~んと唸りながら?考える。
このとき、
・どんなプロセスがあるか
・入出力は何か(DBないしファイル)
というのを注意して書く。
もちろん、DFDの記法や決まりに則って書く
コンテキストダイアグラムから、いくつかのプロセスをDFDで書いたら
今度はそのプロセスの内部を、(新たなDFDとして)書いていく
そして、
ある画面から入力し、DBやファイル、帳票に書き出すプロセス
(いわゆるアクティビティ)レベルにまで、DFDを落とし込む
3.業務流れ図を書く
上記のDFDのプロセスは、どの順番で動かすかは、書かれていないので、
ある業務において、どんな画面から入力し、どうDBに書き出され、どうなるか
という業務流れ図を書く。
→つまりここで、画面と帳票名はでてくる。ただし、1画面という区切りではなく、
画面群になる。たとえば、受注画面というのは出てくるが、実際は受注画面群であり、
受注画面は
受注検索
受注一覧
受注編集
確認画面
などから構成されるということが多い。
4.画面定義、帳票定義を行う
業務流れ図の中に、画面と帳票が書かれているはずである。
そこで、その画面を元に、ユーザーとどんな画面レイアウトで、どのように画面遷移
するか決める
また、帳票を出す場合、どのような帳票レイアウトにするか決める。
ここで、入出力項目は決定する。
5.入出力項目をもとにテーブル設計を行う
入出力項目がわかったので、それをどのようにテーブルに格納するかきめる。
RDBであれば、正規化手法を使うことによって、テーブルは決められる。
-----------ここからZendに関係
6.画面定義をもとに、viewのスクリプトファイルを作成し、
それをもとにコントローラーを作成、
画面が遷移するかどうかたしかめる。
くわしくは、
ZendにおけるMVC(Javaフレームワークとの違い)その3
http://blog.goo.ne.jp/xmldtp/e/d0d71cc1e7ebe06ece0d2d4c81566aca
7.このコントローラーから呼ばれるアクションに対応するモデル部分の
ビジネスロジックを作成し、ビジネスロジックにダミーデータを入れて、
動くかどうか確認する。
8.テーブル定義をもとにDAOを作成する。
ここまでのモデル作成の流れ、くわしくは
ZendにおけるMVC(Javaフレームワークとの違い)その5
http://blog.goo.ne.jp/xmldtp/e/97742540f6d398d6e15171baf6669496
9.ビジネスロジックから、DAOを呼び、業務ロジックを組み立てていき、実装を
完了させる。
■ウェブ戦略としての「ユーザーエクスペリエンス」の流れ
ここ
Web構築のワークフロー
http://www.doburoku.com/wiki/index.php?Web%B9%BD%C3%DB%A4%CE%A5%EF%A1%BC%A5%AF%A5%D5%A5%ED%A1%BC
を参考に・・・
・戦略
上記の「一般的な開発の流れ:構造化手法」では省略した。
超上流部分。この開発はなぜするかということについてなど。
・要件
上記1.2.3までの作業。
ただし、上記は機能要件だけで、非機能要件や制約(blogにするとかは、本来設計で
決めていいことに対して、縛りを入れることになるので、制約になってくる)も決める
・構造
4.の画面定義における画面遷移・・だと思う。
・骨格
4.の画面設計における画面レイアウトの大まかな部分だと思う
・表層
4.の画面設計がレイアウトまで含めて完成する?
そのあと、5以降を行うことになる。
■一般的な開発の流れ:オブジェクト指向分析
・構造化手法の1.2.に相当する部分を行う
ユースケースを作成する。
アクターは出てくるが、データ関係は出てこない。
DFDのプロセスが、ユースケースとなってくるが、
ユースケースは、アクティビティにいく「前で」止める
・構造化手法の3に相当する部分を行う
アクティビティ図を書く。
アクティビティ図は、原則、あるユースケースに対するアクティビティ図を書く
ことになる(=対応するユースケース図がある)。
ただし、アクティビティ図には、画面やDBを書くところはない。
(オブジェクト指向分析では、この段階では、物理的な層は抽象化されているから)
そこで、オブジェクトノードで画面やDBを書くか、
対応するユースケース図のユースケース記述の中で、画面、DB、帳票など、
入出力を自然言語で書く。
・オブジェクト指向の場合・・・
クラス図を書くのが好きなので(^^;)
ここで、概念クラス図を書いてしまうことが多いと思う。
・構造化手法の4.5を行うのであるが・・・
画面定義書などを作らず、画面をhtmlで記述し、画面遷移をそのhtmlから行う
ことも多い。
こうすると、このhtmlが、実装で再利用できることもある。
・以降の手順は同じ。
→注意:概念クラス図を書いてしまい、画面をhtmlで適当に作ってしまうと、
画面の入出力が、概念クラス図のデータだけで、本当にできるかどうかの
確証がとれていない(っていうか、たいてい足りないはず)
これをウォークスルーで補完するわけだが、アジャイルなどで、五月雨式に
決まっていく場合、どこで確認を取るか、あらかじめ考えていないと、
矛盾だらけになる。
このしりーず、おしまい。