Compartir a través de


コラム: 開発者は要求をまとめるのが上手

こんにちは。最近は、米国の SNS にはまっています。多くの旧友に再会できてとても満足です(そんな話は今度日記として書こうかと思います)。

さて、要求をまとめることは非常に難しい、コツがいると言われていますが、実は開発者(開発経験者)は本来、要求をまとめるのも上手なはずです。

要求を要求文書として、自然言語(英語や日本語)で記述するだけだと、内容が重複していたり、要求項目自身と要求の補足説明がごちゃ混ぜになっていたりするわけで、そんな状態ではまとめるのは困難を極めるのは、容易に想像できるわけですね。

これはソースコードでも同じことが言えます。スパゲッティソースや、体系だっていないソースコードはやっぱり把握するのは難しいわけです。そこで、(大雑把に言うと)構造化やクラスなどでわかり易くまとめているわけですが、この発想は、要求を把握し、まとめる上でも同様に行えるのではないでしょうか。共通部分をまとめてること、そして再利用可能なものを明確にすること。これは要求でも同じことができるはずです。

機能に関する要求(機能要求)は、顧客ニーズに大きく依存、特化するものなので、中々共通化、再利用化は、難しいともいえますが、非機能要求は、それが比較的容易にできるのではないでしょうか(余談ですが、FURPS+ の URPS+ が再利用性が高いと言えます。)。

たとえば、「XXX機能は、1秒以内に応答しなければいけない」、「YYY機能は、1秒以内に応答しなければいけない」という記述(実際の要求はこんなに単純でありませんが)があったとしたら、「1秒以内の応答」は、切り出すことができるわけです。そうすると

「XXX機能」、「YYY機能」と「1秒以内の応答」がリンクされていれば、きれいにまとめることができます(しつこいようですが、実際の要求はこんなに単純ではありませんが)。

こうしておくことは、要求に変更があったときにより効果を発揮します。例えば、「1秒以内の応答」が「0.5秒以内の応答」に変更があった場合を考えて見ましょう。機能ごとに記述していた場合は、関連する文章すべてを変更する必要があります。これでは一箇所だけでも変更し忘れたら・・・要求のバグは、改修コストがとんでもなくかかりますので、大変です。まとめておけば、一箇所だけを変更すればいいわけですね。また機能要求とのリンク(トレーサビリティ)があれば、その変更で影響する要求がどれか追跡することもできます。

このように、要求は、文章として記述するだけでなく、整理し、纏め上げることで、顧客、設計/開発者にも理解し易くすることができます。またそのやり方はプログラミングの最適化に通じるものがあるため、開発者は要求をまとめるのも上手であるはずなのです。
# そういう仕事をやりたいかは別ですが、苦手に思っている開発者の方いらっしゃいましたら、ぜひチャレンジしてみてください。

 ながさわ

Comments