« 2007年12月18日

2007年12月19日の投稿

2007年12月20日 »

システムの仕様書はシンプルであるほうが良いのでしょうか。

オッカムの剃刀とは、Wikipediaによれば

「ある事柄を説明するためには、必要以上に多くの実体を仮定するべきでない」( Entities should not be multiplied beyond necessity )という指針

との事です。また、はてなダイアリーでは

直訳すると「必要もなく多数化するな」
もう少し砕いて書くと「同じ事を説明するやり方が2つあるなら、シンプルな方にしとけ」

とのことです。滅多に使う言葉ではありませんが、たまに「同じ事を説明するやり方が2つあるなら、シンプルな方にしとけ」というような意味の格言として思い出すことがあります。タイミングは仕様書作りの時です。

例えば「Aという画面ではBという処理をするためにCというボタンを表示する」という内容があったとします。私の個人的な好みからしたら、

  • Aという画面にはCというボタンを設置する
  • CというボタンはBという処理を起動する

というように2つの文章に表記するほうが好きです。その理由は、仮にBという処理がシステム要件の変更と供にXという処理に変更になった場合、

  • Aという画面にはCというボタンを設置する ⇒ A画面に対する改修は不要
  • CというボタンはBという処理を起動する ⇒ Cボタンに対してB処理をX処理にする改修が必要

という判断がし易いからです。「Aという画面ではBという処理をするためにCというボタンを表示する」とあると、頭の中で分解していかなくてはなりません。ですので、できるだけ1つの文章では1つの事実だけを含むように心がけています。

そのルールからすれば、「Aという画面ではPというプログラムにQというデータを渡すためのBという処理を起動するため、Cというボタンを表示する」という表記は好きではありません。コーディングする側からすれば、『PというプログラムにQというデータを渡すための』という文章は余計です。A画面を作ってCボタンを設置し、押下時にB処理を起動するようにするだけで良いはずだからです。

しかしながらこういった文章のほうが適した場合もあります。それは開発メンバーに業務仕様を理解してもらうように説明するようなケースです。そのような場合、「Aという画面ではPというプログラムにQというデータを渡すためのBという処理をするため、Cというボタンを表示する」というほうがストーリー性があって理解しやすいため、こちらの表現を好むという方もおられると思います。

確かに箇条書き状態になった仕様書からでも、機械的にコーディングしていくことは可能です。むしろテストなどを考えるとそのほうが効率が良いかもしれません。しかしながら自分が書いているプログラムの存在意義が把握しにくくなりますし、機械的にコーディングしていけるほど完璧な仕様書というのを作るにはそれなりのマンパワーが必要です。

そのためついつい『PというプログラムにQというデータを渡すための』というような表現が出てきてしまい、「後々、Pというプログラムに渡すんだから、細かなところは作り手さんの裁量でよろしくお願いね。」というコーディング担当者に甘えた姿勢になることもあり得ます。(もちろん良くないことです。ただしコーディング担当者は自分の裁量が大きいほうがモチベーションが上がる性質があるように思います。)

そのような状況下では、担当者の親切によりドキュメント化されていない”仕様”がソースに反映されてしまいます。もしくはその仕様をドキュメントに反映し直すことが想定されます。そうした後で『PというプログラムがRというデータを渡す』というような変更が発生した場合には、Pというプログラムの仕様書は正しく変更がされるでしょうが、その修正の担当者はA画面の仕様書内にも『PというプログラムにQというデータを渡す』という表記が生まれていた事に気付かないかもしれません。

そのような状態が放置されつつ別の要件でA画面に改修が発生した場合、古い仕様である『Qというデータを渡す』という前提で改修を進めてしまう可能性が考えられるでしょう。これは正規化されていない関係データベースの更新異常にも似た現象です。

このような事態を想定すると恐ろしいものがあります。ここのところはやはり上に書いたとおりに

  • Aという画面にはCというボタンを設置する
  • CというボタンはBという処理を起動する

とだけ表記し、もしA画面内でBという処理をするために何らかの処理を加える必要があるのであれば

  • B処理を起動する前に、状態Sであった場合はB処理を起動しない

というような詳細な仕様までドキュメントに記載するのが良いでしょう。こういった事例を考えると、オッカムの剃刀という言葉のニュアンスを借りてきてそれを心がけにする事は意味があることのように思います。

yohei

« 2007年12月18日

2007年12月19日の投稿

2007年12月20日 »

» このブログのTOP

» オルタナティブ・ブログTOP



プロフィール

山口 陽平

山口 陽平

国内SIerに勤務。現在の担当業務は資金決済法対応を中心とした資金移動業者や前払式支払手段発行者向けの態勢整備コンサルティング。松坂世代。

詳しいプロフィール

Special

- PR -
カレンダー
2013年5月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
yohei
Special オルタナトーク

仕事が嫌になった時、どう立ち直ったのですか?

カテゴリー
エンタープライズ・ピックアップ

news094.gif 顧客に“ワォ!”という体験を提供――ザッポスに学ぶ企業文化の確立
単に商品を届けるだけでなく、サービスを通じて“ワォ!”という驚きの体験を届けることを目指している。ザッポスのWebサイトには、顧客からの感謝と賞賛があふれており、きわめて高い顧客満足を実現している。(12/17)

news094.gif ちょっとした対話が成長を助ける――上司と部下が話すとき互いに学び合う
上司や先輩の背中を見て、仕事を学べ――。このように言う人がいるが、実際どのようにして学べばいいのだろうか。よく分からない人に、3つの事例を紹介しよう。(12/11)

news094.gif 悩んだときの、自己啓発書の触れ方
「自己啓発書は説教臭いから嫌い」という人もいるだろう。でも読めば元気になる本もあるので、一方的に否定するのはもったいない。今回は、悩んだときの自己啓発書の読み方を紹介しよう。(12/5)

news094.gif 考えるべきは得意なものは何かではなく、お客さまが高く評価するものは何か
自社製品と競合製品を比べた場合、自社製品が選ばれるのは価格や機能が主ではない。いかに顧客の価値を向上させることができるかが重要なポイントになる。(11/21)

news094.gif なんて素敵にフェイスブック
夏から秋にかけて行った「誠 ビジネスショートショート大賞」。吉岡編集長賞を受賞した作品が、山口陽平(応募時ペンネーム:修治)さんの「なんて素敵にフェイスブック」です。平安時代、塀に文章を書くことで交流していた貴族。「塀(へい)に嘯(うそぶ)く」ところから、それを「フェイスブック」と呼んだとか。(11/16)

news094.gif 部下を叱る2つのポイント
叱るのは難しい。上司だって人間だ、言いづらいことを言うのには勇気がいるもの。役割だと割り切り、叱ってはみたものの、部下がむっとしたら自分も嫌な気分になる。そんな時に気をつけたいポイントが2つある。(11/14)

news094.gif 第6回 幸せの創造こそ、ビジネスの使命
会社は何のために存在するのでしょうか。私の考えはシンプルです。人間のすべての営みは、幸せになるためのものです――。2012年11月発売予定の斉藤徹氏の新著「BE ソーシャル!」から、「はじめに」および、第1章「そして世界は透明になった」を6回に分けてお送りする。(11/8)

オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。


サイトマップ | 利用規約 | プライバシーポリシー | 広告案内 | お問い合わせ