要件定義の進め方

システム開発の大炎上を防ぐために、上流工程(前工程)に位置する「要件定義」について、考えていくブログです。

要件定義書の作り方
PDCAサイクルではなく、PDCサイクルを回そう
あるべきV字モデルについて整理した
スコープを決めてから、QCDの議論をしよう

要件定義における「要件」とは何か?

要件とは?辞書的な意味合い

要件をWikipediaで調べると、

「ソフトウェア要件」とは、あるソフトウェアに必要な機能や性能のこと。「システム要件」とは、あるシステム(情報システム)に必要な機能や性能のこと。

ソフトウェア開発やシステム開発においては、「要件定義」とは、そのソフトウェアやシステムに必要な機能や性能を明らかにしてゆく作業のこと[2]。IT関係の開発では「上流工程」と呼ばれている作業・工程の一部にあたり、実際の具体的な開発作業(プログラミング言語を使ったコーディング作業など)や実装作業を始める前に行う作業のひとつ[2]。

出所:要件 - Wikipedia

という記載がされている。用語の適用対象がソフトウェアやシステムであることを前置きしたうえで、ソフトウェア/システムに必要な機能や性能であるとしている。この表現については概ね同意であるが、少し気になるのは、「機能や性能」と表現した場合、それ以外になにかあるのか?となることである。

これまでの開発経験の中での知見として、機能とも性能とも言えない何かが出てきたのか、開発現場では「機能と非機能」という表現がなされている。この表現ならば、機能とそれ以外に関する要件ということで、要件化する対象の網羅性が担保されることになる。

本ブログにおいても、要件については、機能要件と非機能要件として扱っていきたい。ただし、この「非機能」という表現にも問題があり、機能じゃないものって具体的に何があるのかを詰めていく必要がある点だ。非機能とは何なのかについても今後詰めていく予定ではあるが、今時点で「非機能」という単語に関して具体的なイメージを持ちたいのであれば、IPAのサイトが参考になるので、参照(IPAの資料を盲目的に信じればよいというものでもないが、参考という意味で)いただきたい。

システム構築の上流工程強化(非機能要求グレード):IPA 独立行政法人 情報処理推進機構

 

本ブログにおける「要件」の解釈

本ブログでは、要件に対しては、下記のような解釈をすることとする。

・要件は、システムにおいて、必ず実現されていなければいけないことである

・要件は、機能要件と非機能要件に分けられる

・本ブログで要件といったら、暗黙的にシステムに対する要件を指す

f:id:req-definer:20220116150058j:plain

用語定義:要件

要件とは:システムにおいて、必ず実現されていなければいけないこと。要件は、機能要件と非機能要件に分けられる