コーディングの知恵を要件定義で利用するThe Rational Edge(2/4 ページ)

» 2005年02月23日 12時00分 公開
[Jim Heumann(IBM Rational's requirements management evangelist),@IT]

◆ コメントによる詳細説明

 うまく書かれたプログラムには、処理の内容や記述方法に関する説明などの追加情報をコードに含めるためのコメントが書かれている。優れたコメントとは、コードが何かを処理するときの方法(これはコードを見れば一目瞭然であるはず)ではなく、ユーザー、保守担当者、そして審査担当者がコードの処理内容と品質保証を理解するのに役立つ知識を提供するものだ。同様に、要件にも属性という、要件を理解しやすく、あるいは使いやすくする情報がある。要件を引き出すときは、属性情報も見つけ出す必要がある。重要な属性の一例が、要件がどこから出てきたのかという出所情報だ。情報の出所を把握しておけば、詳しい情報が必要になったときに大幅な時間の節約につながる。もう1つの属性がユーザーの優先事項だ。ユーザーが50件の要件を出してくる場合は、各項目の優先度も伝えてくるはずだ。そうすれば、プロジェクトのスケジュールが進み、すべての要件を満たすには時間が不足することが分かったときに、最低でもどれが最も重要かは分かるようになる。

 自分が書くコードに入れるコメントの書き方に規則がないのと同じように、世界共通の「適切な」属性もない。出所や優先事項はほとんどのケースで有益だが、ほかにも自分のプロジェクトに適したものを明確にすべきだ。要件を収集するときは、システム開発を開始してコードを書き始めたときにチームにとって必要になるかもしれない情報も事前に予想するようにしたい。

◆ 言語の知識

 開発者には、Java、COBOL、C++、C、Visual Basic、Fortran等々、開発に使う言語の知識が必要なことは明らかだ。優れたコードを書くには、言語のニュアンスを理解する必要がある。基本的なプログラミングの概念はどの言語も同じだが、具体的な操作についてはアプローチが異なる。例えば、Javaはループ構造に「for」、Fortranは「DO」を使う。Cでは名前を参照してパラメータ付きでサブルーチンをコールするが、FortranではCALL文を使う。

 要件をうまく書くためには、言語に関する知識も必要になる。大半の要件は自然言語(フランス語や英語など)で書かれている。自然言語はかなり強力だが、同時にかなり複雑でもある。作文能力に関する教育を受けていない開発者だと、複雑な概念を文章で伝えるときに問題が発生する場合がある。本稿では本格的な文章作成技術を語るスペースがないが、以下のようなガイドラインが役立つかもしれない。

 まず、宣言要件(「〜すること」などの構造で書かれたもの)には完全な文を用いる。どの文も主語と述語をチェックする。

 次に、従属節のない単文を使う。概念を1つだけ伝える主節だけで構成された文の方が理解しやすく、検証もテストもしやすい。単文で表記するには要件があまりに複雑な場合は、これを定義しやすい小さい要件に分割するよう試みる。複数を組み合わせた複雑な文には従属(分岐)の発生する可能性がある。いい換えれば、特定の行為に依存して変化する記述になる。その結果、テストを困難にする不必要に複雑な要件が出来上がるケースが多い。

  • 単文:本システムは、車がサーキットを1周するときの所要時間を表示するものとする
  • 重文:本システムは、車がサーキットを1周するときの所要時間を表示するものとし、時間の表示フォーマットはhh:mm:ssとする(ここには、システムの処理内容を明記する機能要件と、時間のフォーマットを明記するユーザーインターフェイス要件の2つの要件がある)
  • 複文:本システムは車がサーキットを1周するときの所要時間を周回後5秒以内に表示するものとする(ここにも機能要件とパフォーマンス要件の2つの要件がある)

 重文もしくは複文の例に基づいて適切なテストを記述するには、それぞれに含まれる2つの要件を分類する必要がある。とにかく、簡単にしてから作業に取り掛かった方がよいのではないだろうか? 上の複文を単文に変換する方法を以下に1つ示す。

  • 本システムは、車がサーキットを1周するときの所要時間を表示するものとする
  • 所要時間の表示フォーマットはhh:mm:ssとする
  • 所要時間は周回終了後5秒以内に表示するものとする

 これらの要件の方がテストしやすく、読みやすくなっていることに注目したい。

 優れた要件を書くときのコツはもう1つある。首尾一貫したフォーマットを使うことだ。コードを書くときのフォーマットやテンプレートがすでにあるはずだ。要件を書くときもそれを使いたい。一貫性がカギになる。仕様書は、どれも同じ見出し、フォント、インデントなどを使うべきだ。それにはテンプレートが役立つ。実際、これがチェックリストの役割を担う。要件を書く開発者は、優れた仕様書を作成するのにゼロからスタートすることも、一からやり直すこともない。テンプレートのサンプルが必要なら、RUPのものが多数ある。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ