ITエンジニアが、仕様書に最も書かなければならないことがあります。
先日、QAとして基本仕様書レビューに参加して、全く「これ」が書いてない基本仕様書に出会いました。
「仕様は何ですか?」「仕様書なんですから、まずは仕様を書いてください」などと強めに指摘してまい、反省しています。
皆さんはそのようなことが無いように、仕様書に書かなければならないことを書いてください。
仕様書に最も書かなければならないこと
仕様書に最も書かなければならないこと、それは
仕様
です。
は?
当たり前では?と思われるのであればとても正常な感覚を持っていると思います。
先日、基本仕様書レビューで「仕様」が全く書かれていない仕様書をレビューしました。
何度も「仕様は何ですか?」「方針はどうなっているんですか?」「この製品のメリットは何ですか?」などと、レビューでは普通訊かないことを訊いていました。
途中、言い方も雑に強くなってきていたと思います。反省しています。
仕様とは? 「製品のミッション」です
では、仕様書に書く「仕様」は何でしょうか?
まぁ、仕様書に書いていあること全部が仕様ではあります。
仕様書の目次例は以下です。全てが仕様です。
>>> 【外部仕様書(製品仕様書、基本仕様書)で書くべきこと】
>>> 【内部仕様書(機能仕様書、詳細仕様書)で書くべきこと】
目次例の通りの記述していても、「仕様」が書いていない仕様書は読むに堪えません。
「仕様」は、その製品、そのモジュールが持つミッションです。製品のメリットであり、解決するユーザの課題だったりします。本記事では「ミッションステートメントの仕様」と呼ぶことにします。
仕様書に最も書くべき「ミッションステートメントの仕様」とは、「製品XXXは、XXXXである」というような文章のことを言います。
一言で言うには機能が多すぎるというのであれば、箇条書きにしたり、表にしたりすればよいと思います。
そこから、一番最初に解決すべき要件が見えるし、異常系の設計、UIの設計、性能設計も、根本的な製品仕様から出発して論理的に導かれるとすれば、とても分かりやすくなります。
少し話がそれますが、有名な自己啓発書である「7つの習慣」では、「人生で、あなたのミッションステートメントを決めよ」と言っています。製品開発では、その製品の「ミッションステートメントの仕様」を決めないといけない、と思います。
次からは、架空の製品を例にして、製品のミッションとなる「仕様」を見てみましょう。
例えば「ディスク装置」だったら
例えば「ディスク装置」だったら、どういう「仕様」とするか考えてみます。
皆さんも日常的に目に触れる製品や自分が携わっている製品について、「ミッションステートメントの仕様」を考えてみて下さい。
ディスク装置の仕様 第1弾
製品名を適当に決めます。仮にODS(オレのディスク装置)とします。
まずは「ODSはXXXXである」という文章にしてみましょう。
ODSはデータをディスクに保存する装置である
ITエンジニアにとってこの文章は不完全に見えます。いろいろと付け足したくなりますよね。
まずはどういうインタフェースで受け取るかですが、今回は単純に「SCSI」とします。※最近では、SCSIの亜種であるSASやFCなどや、LAN経由のiSCSIもありますが。今回はSCSIにしておきます。
また、どこに保存するかは、「複数のディスクで組んだRAID」とします。
inのインタフェースがSCSI、outのインタフェースがRAIDディスクです。
ODSはSCSIでデータを受け取り、複数のディスクで組んだRAIDにデータを保存する装置である。
「ミッションステートメントの仕様」は、みなさんの製品の仕様書に書かれていますか?普通書かれているものだろうと思いきや、「こういう風に動くからね」「こういうモジュール構成だよ」ばかりで何をミッションとするかを書いていない仕様書が多くあります。
みなさんが書かれるのでしたら、ぜひ「ミッションステートメントの仕様」を入れてみて下さい。
ディスク装置の仕様 第2弾
ここからは、製品をどう作っていくかに関わります。架空の製品なので、いろいろ想像してみましょう。
SCSIのサポートは規格で決められているので、あまり選択肢はありません。RAIDについてはどうでしょう?
どのRAIDをサポートすることにしますか?
RAID0, RAID1, RAID5, RAID6のサポートにしましょう。また、スペアディスクもあらかじめ用意できるといいですね。また、ホットスワップはできないとディスク装置としてダメじゃないですか?
ということで、以下のような仕様とします。
ODSはSCSIでデータを受け取り、複数のディスクで組んだRAIDにデータを保存する装置である。RAIDはRAID0, RAID1, RAID5, RAID6をサポートする。あらかじめスペアディスクをせっていできるものとし、ディスクのホットスワップを許可する。
とりあえずこのくらいでどうでしょうか?
ここから導かれる仕様をいくつか考えてみます。
ディスク装置の仕様 ユーザインタフェース
大抵の製品はユーザに何らかの設定をしてもらうものです。そのときのユーザインタフェースは何もないところから出てくるよりも、上記のような「ミッションステートメントの仕様」から導かれるとすっきりします。
まず、ディスクをいくつかまとめてRAIDを作るという設定が必要のはずです。また、SCSIを通じて見せる論理的なディスクの作成が必要です。スペアディスクの設定もできるようにします。
ODSは、以下の設定をGUIで持つ。
- 複数のディスクをまとめてRAIDにしRAIDレベルを指定する
- SCSIを通じて見せる論理的なディスクを作成する
- スペアディスクを設定できる
いかがでしょうか?こういうGUIの仕様はいわば普通です。しかし、仕様書に突然出てくるのと、「ミッションステートメントの仕様」から導かれるのでは、説得力が全然違います。
ぜひ、みなさんも「ミッションステートメントの仕様」を作成して、各仕様を有機的に組み立てる努力をしてください。他部署や他社の方に説明するときの説得力が全然違うと思いますよ。
以下にも、「ミッションステートメントの仕様」を中心に考えた外部仕様書の書き方を記事にしました。
>>> 外部仕様書(製品仕様書、基本仕様書)の書き方 ミッションを中心に据えて
まとめ
仕様書に書くべき「仕様」について説明しました。「ミッションステートメントの仕様」を作ってみて仕様書を有機的にしてみませんか?
仕様書の目次例は以下からどうぞ。
コメント