土日ではなくなってしまいましたが(^^;)
土日シリーズ「標準ソフトウエア工学教科書」を作ってみたいと思います
今回は、外部設計です。
■3.3 外部設計
前回、要求分析で要求をだしたので、次に、この要求を満たすシステムを設計していきます。
設計については、ここで、2つに分けて考えます。
1.ユーザーや外部システム等(ユースケースのアクター)で見える部分。
→インターフェース、特にユーザーインターフェース(UI)
2.ユーザーや外部システム等(ユースケースのアクター)で見えない部分
1は外部に見えるところなので、外部設計、2は、内部部分なので、内部設計となります。
今回は、このうち、外部設計について行います。
------
外部設計に関して、一番大きな部分は、
1.ユーザーとのインターフェースを決める、ユーザーインターフェース
2.他システムがアクセスするDB、ファイル部分
3.Webサービス等の場合、通信部分のインターフェース(引数と返り)
4.2.3の基本となるコード化
画面メッセージを分ける場合もありますけど、それは、1に含まれると、ここでは考えましょう。
2に関して、先ほどの説明だと、他に見えるところだけでもいいのでは?と思うかもしれませんが、このテーブルは見えて、あのテーブルは外部に出さないので、設計しないとなると、検証できなくなってくるので、この場合、外に見えるか否かにかかわらず、全体を設計します。
なお、ユーザーインターフェースとの矛盾をチェックするために、仮に他システムがDB、ファイルにアクセスしないとしても、外部設計でDB、ファイル設計するのが普通だと思います。
なお、4のコード化設計は行うのですが、1、2をしているときに自動的に出来てしまうので、意識して行うのは、1のUI、2のDB,ファイル定義で、最近のWebサービスにおいて、3を考えるという形です。
なお、以降面倒なので、DB,ファイル設計と書かずに、DB設計としてしまいます。
--------------
では、UI,DBをどのように設計していくかですが、まず、前提について、確認してみます。
前提として、要求仕様では、こんなことをしているのでした。
(1)プロジェクトの目的と、プロジェクトマネージャーは決まっている状態で、
(2)えらい人からえらくない人へ、仕事を分割していく
→その仕事の範囲をざっくりと図や文にまとめる
(3)最終的に、仕事を受け持つ担当者に行き着く
担当者のやるべきことを、入力と出力に着目して、記述する
→機能要求
(4)機能要求以外(非機能要求)を何らかの方法で、えいやときめる(^^;)
(5)機能要求、非機能要求を要求仕様書という形でまとめる
つまり、(3)の段階で、入力と出力は、決まっているはずです。
なので、この入出力を検討します。
(あ)(3)の入出力を、画面、帳票、DBなど、メディアごとに分ける。
(い)画面について
(い-1)画面全体のルックアンドフィールを決める
→全体的な画面イメージ
(背景、大きなレイアウト、ナビゲーション等)
(いー2)(あ)で抽出した画面を、1画面にするか、複数のものを
まとめるかなど考慮して、画面割りをきめる。
(い-3)画面をどのように遷移させていくか、画面遷移をきめる
→追加する画面が出てくるかも
(い-4)各画面の画面レイアウトを決める
(い-5)い-3、い-4をまとめて、画面定義書とする
つまり、画面定義書は、画面遷移図と画面レイアウトからなる
(い-6)お客さんにチェックしてもらって、承認を得る
(う)DBについて
(う-1)どのようなテーブルがいるか決める
→正規化したりして
(う-2)テーブルの項目などを決める
(うー3)テーブルの妥当性を確認する
・入力したデータで、必要なものは保存されているか
・容量などの見積もりで、無茶はないか?
帳票に関しては(い)の画面を帳票にかえて読み替えてください。ただし帳票遷移はありえないので、そこは無視します(い-3はない)
Webサービスに関しては、(う)のテーブルをサービスに読み替えてください。
(え:成果物)結果として、画面定義書、DB定義書、帳票定義書、サービス定義書ができます。
------------
Webアプリケーションの場合、画面をHTMLで記述しておくと、レイアウトは画面イメージを貼るだけだし、お客さんと確認するとき、ブラウザを使ってプレゼンできます(=プロトタイプになる)。
このHTMLで画面をつくるということが、後工程でとても楽になることなのですが、
それは、後工程の話としておいておきます。
上記のやり方だと、画面・帳票のレイアウト、遷移に関しては、この外部設計の段階で確定し、DBはおおよそ決まります(内部設計や実装で変更もありえる)。
ただし、画面設計はそこまでやらないという考えもあります。
項目をこの段階では確定させない(確定できない)という考え方で、その場合、画面定義書は、内部設計でつくられます。
が、この方法の場合、お客さんに見せるのがもっと後になり、画面が内部設計中に動くので、内部設計にダイナミックな修正が入ります。これを嫌う場合、ここ(=外部設計)で大まかに確定してしまいます。
土日シリーズ「標準ソフトウエア工学教科書」を作ってみたいと思います
今回は、外部設計です。
■3.3 外部設計
前回、要求分析で要求をだしたので、次に、この要求を満たすシステムを設計していきます。
設計については、ここで、2つに分けて考えます。
1.ユーザーや外部システム等(ユースケースのアクター)で見える部分。
→インターフェース、特にユーザーインターフェース(UI)
2.ユーザーや外部システム等(ユースケースのアクター)で見えない部分
1は外部に見えるところなので、外部設計、2は、内部部分なので、内部設計となります。
今回は、このうち、外部設計について行います。
------
外部設計に関して、一番大きな部分は、
1.ユーザーとのインターフェースを決める、ユーザーインターフェース
2.他システムがアクセスするDB、ファイル部分
3.Webサービス等の場合、通信部分のインターフェース(引数と返り)
4.2.3の基本となるコード化
画面メッセージを分ける場合もありますけど、それは、1に含まれると、ここでは考えましょう。
2に関して、先ほどの説明だと、他に見えるところだけでもいいのでは?と思うかもしれませんが、このテーブルは見えて、あのテーブルは外部に出さないので、設計しないとなると、検証できなくなってくるので、この場合、外に見えるか否かにかかわらず、全体を設計します。
なお、ユーザーインターフェースとの矛盾をチェックするために、仮に他システムがDB、ファイルにアクセスしないとしても、外部設計でDB、ファイル設計するのが普通だと思います。
なお、4のコード化設計は行うのですが、1、2をしているときに自動的に出来てしまうので、意識して行うのは、1のUI、2のDB,ファイル定義で、最近のWebサービスにおいて、3を考えるという形です。
なお、以降面倒なので、DB,ファイル設計と書かずに、DB設計としてしまいます。
--------------
では、UI,DBをどのように設計していくかですが、まず、前提について、確認してみます。
前提として、要求仕様では、こんなことをしているのでした。
(1)プロジェクトの目的と、プロジェクトマネージャーは決まっている状態で、
(2)えらい人からえらくない人へ、仕事を分割していく
→その仕事の範囲をざっくりと図や文にまとめる
(3)最終的に、仕事を受け持つ担当者に行き着く
担当者のやるべきことを、入力と出力に着目して、記述する
→機能要求
(4)機能要求以外(非機能要求)を何らかの方法で、えいやときめる(^^;)
(5)機能要求、非機能要求を要求仕様書という形でまとめる
つまり、(3)の段階で、入力と出力は、決まっているはずです。
なので、この入出力を検討します。
(あ)(3)の入出力を、画面、帳票、DBなど、メディアごとに分ける。
(い)画面について
(い-1)画面全体のルックアンドフィールを決める
→全体的な画面イメージ
(背景、大きなレイアウト、ナビゲーション等)
(いー2)(あ)で抽出した画面を、1画面にするか、複数のものを
まとめるかなど考慮して、画面割りをきめる。
(い-3)画面をどのように遷移させていくか、画面遷移をきめる
→追加する画面が出てくるかも
(い-4)各画面の画面レイアウトを決める
(い-5)い-3、い-4をまとめて、画面定義書とする
つまり、画面定義書は、画面遷移図と画面レイアウトからなる
(い-6)お客さんにチェックしてもらって、承認を得る
(う)DBについて
(う-1)どのようなテーブルがいるか決める
→正規化したりして
(う-2)テーブルの項目などを決める
(うー3)テーブルの妥当性を確認する
・入力したデータで、必要なものは保存されているか
・容量などの見積もりで、無茶はないか?
帳票に関しては(い)の画面を帳票にかえて読み替えてください。ただし帳票遷移はありえないので、そこは無視します(い-3はない)
Webサービスに関しては、(う)のテーブルをサービスに読み替えてください。
(え:成果物)結果として、画面定義書、DB定義書、帳票定義書、サービス定義書ができます。
------------
Webアプリケーションの場合、画面をHTMLで記述しておくと、レイアウトは画面イメージを貼るだけだし、お客さんと確認するとき、ブラウザを使ってプレゼンできます(=プロトタイプになる)。
このHTMLで画面をつくるということが、後工程でとても楽になることなのですが、
それは、後工程の話としておいておきます。
上記のやり方だと、画面・帳票のレイアウト、遷移に関しては、この外部設計の段階で確定し、DBはおおよそ決まります(内部設計や実装で変更もありえる)。
ただし、画面設計はそこまでやらないという考えもあります。
項目をこの段階では確定させない(確定できない)という考え方で、その場合、画面定義書は、内部設計でつくられます。
が、この方法の場合、お客さんに見せるのがもっと後になり、画面が内部設計中に動くので、内部設計にダイナミックな修正が入ります。これを嫌う場合、ここ(=外部設計)で大まかに確定してしまいます。