ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

要求仕様書に、Howを書かないという話と、ゴール指向分析のWhyとHow

2010-02-19 16:42:27 | トピックス

Twitterで書いた、
id:9292502058

Howには2種類ある。ユーザーが、どんなふうに操作するかということ(業務=機能要件)と、技術的にどのように行うか(外部設計)。後者は書いてはいけないが(書く場合は制約になる)、前者を書かないと文章が成立しない。

について、もう少し詳しく書きます(これ、たぶん、月曜日に書く話の伏線になる)。




■一般に、要求仕様書には、Howを書かないといわれる。

 これは、そのとおりなんです。どこの本を見ても、たぶん、現在、こうかかれていると思います。
 理由は、実装上の制約になっちゃうから・・・

 ただし、ここで、書かないという内容に関しては、2種類あって

    ・実装する技術を書かない(Apacheでとか、IISでとか、インターネットでとか)
    ・デバイスとかも書かない

 この2つの違いは、前者は、外部設計のフレームワーク以降の技術的要件を書かないという意味。
 後者は、業務におけるデバイスまでも書かないということになります。

 たとえば、前者のほうを採用して、
   画面から入力された受注データを、データベースに出力する

 というのを、後者のほうに書き換えると
   受注データを入力し、出力する

 と、要件がわからないことになります(画面や帳票に出すのと、DBに出力するのでは、要求内容が違う)。

 なので、文章にする場合は、前者にしないと、こまります。

 つまり、ユーザーにとって、業務をどのような形で実現するかのHowは、書き、
 実装する方法論、技術に関するHowは書かないというのが、「普通の」要求仕様書の状態になるとおもいます。

 ただし、前者の書き方は、図にすると業務フローWFAに相当し、後者はDFDやアクティビティ図に相当するのですが、DFDしかない要求仕様ってのも、ないことはない(実際に”こう書け”と書いている本があった気がする)。




■ゴール指向要求分析による、WhyとHow

 ところが、ゴール指向においては、ゴールをどんどん分解していき、要求分析していきます。
 このとき、
 ここ http://kaiya.cs.shinshu-u.ac.jp/2007/ms/gora1.pdfの12ページ目(以下の図)


(http://kaiya.cs.shinshu-u.ac.jp/2007/ms/gora1.pdfの12ページ目より引用)にあるように、
上がWhy、下がHowの関係になると書いてある。

 ゴール指向要求分析で分析するのは、要求仕様にかかれるようなことだから、とすると、Howが書かれてしまうように見える。事実、

   画面から入力された受注データを、データベースに出力する

 っていう時、「画面から入力する」っていうのは、Howだ。
 じゃあ、Howを書いているジャンということになる。これは、どういうことなのか?




■要求部分のところを書くので、Whatになる。

これは、ずーっと延長してみると分かる。

こんな図になる
つまり、超上流から目的が来る。こいつがWhyになる。そして、それを、どのように実現するか(How)を考えて詳細化する。最終的に、こーすれば実装できそうという、外部設計のトップまで考える(図だとCRMサイトを構築)。
 もし、ここで実装方法を考えないと、全く実装不可能な要件が載る可能性がある(結構高い)なので、最低でも、これならできそうという、めどを立てておく。

 このとき、ゴール→サブゴールの連鎖ができ、この連鎖をWhy-Howと表記するが、

 最初のWhyである、超上流からくる目的と
 最後のHowである、外部設計にいく実装方法は

かかない。そして、

 超上流から、要求仕様に入ってきたところあたりのゴールが要求仕様の「目的」となり、
 要求仕様から、外部設計に出て行くあたりのゴールが、要求仕様の「要求」になる。

そー言う意味で、Howはかかない。




■Howが書かれているように見えるわけ。

ところでこの前、

http://twitter.com/xmldtp/status/9176531275

機能要件を書く場合、「何を」、「どうやって」が必須。「いつ」は順序が分かる程度でよい(それ以上は非機能要件?)「どこで」はあまり重要でない?(=「どこでも」にする)。「だれが」はできれば分かるほうがよい(必須ではない)「なぜ」は、もっと上位の要件(超上流?)・・・たぶん・


とかいた。
「なぜ」を書かないのは、上記に書いたとおり、超上流のWhyは書かないということ。なので、話は通じる。

「どうやって」は、Howなのに、なぜ書くのか?

まず、ここでいう「どうやって」は、「業務をどのような形で実現するかのHow」をさす。「どのように実装するか」のHowではない。

そして、この関係は、
要求仕様

  「業務をどのような形で実現するかのHow」(ゴール)

----------------|-------------
        |
外部設計    |
        ↓
  「どのように実装するか」(サブゴール)




の関係になる。なので、「業務をどのような形で実現するかのHow」がかかれることになる。




■何がWhatなのか?

 いままで、Why-Howという見方をしていたけど、

   Why-What-How

 という見方もある。3組みで連鎖していると考える。

その分類を超上流・要求仕様・外部設計にあてはめると、超上流がWhy,外部設計がHowなので

超上流   Why

-------------------

要求仕様  What

-------------------

外部設計  HOW

となる。これが、要求仕様書はWhatが書かれるといわれたり、Howは書くなというのに、Howっぽいこと(「業務をどのような形で実現するかのHow」)が書かれるゆえんである。




と、今日はここまで。
次回は、要求仕様書とゴール指向分析、アジャイルとの関係を書こうと思う。


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« VS2010のTeam Foundation Ser... | トップ | 最も危険なプログラミングエ... »
最新の画像もっと見る

トピックス」カテゴリの最新記事