IPAの非機能要求グレードを使ってみた。

2018年4月25日に更新されて、話題になっていたので。
実は、この非機能要求グレードという資料については私は最近まで全く知りませんでした。

https://www.ipa.go.jp/sec/softwareengineering/reports/20100416.html

非機能要求とは

そもそも頭に"非"が付いている時点で、もやっとしたものであり、"機能"の"要求"ではないという程度です。
要求という言葉は、要件という言葉にも置き換えができるので、非機能要件という言葉で認識している人も多いのではないでしょうか。

Wikipediaによると、
非機能要件(Non-functional requirement)とは、システム設計や情報システム開発上の要求分析において、要件、システム要件といった機能面以外の全般を指す。
https://ja.wikipedia.org/wiki/%E9%9D%9E%E6%A9%9F%E8%83%BD%E8%A6%81%E4%BB%B6


という書き方がされており、結局のところ、ユーザー(=非エンジニア)が実現したいと考えているもの(=機能)ではないが、決めておかないと後々困るものといった程度になるのでしょうか。

非機能要求にて決められるもの

多くのものはサーバーが壊れた場合にどうするべきか(もしくはどれくらい壊れにくくするか)、という話で、ユーザーは基本的にインフラは壊れないものとして想定しがちだけれども、そうではないよーという共通認識を作った上で数字を決めていきましょうという感じになります。
一度システム構築したら10年ぐらいノーメンテナンスで動き続けて当然ぐらいの認識をしている人がいたりもするので、そうではないんですよというのを明示できるのはありがたい。

そして、その共有化すべき認識の一覧が公開されているものをベースとすれば、ユーザーがベンダーを選定する場合にフェアな状態で情報を提供できるというのは公平な比較・検討の材料と出来るので、ものすごいメリットかと。

IPAの非機能要求グレードそのものについての個人的な感想

IPAの非機能要求グレードに対する説明については冒頭のリンクからいけるページに、趣旨から始まり、使いかたまで含めて全部書かれた説明書があるので、そちらを見ていただければよいと思います。なので、自分が見てみての感想を箇条書きにしたいと思います。
全体としては、いろいろと気になるところはあるけれども、全体として漏れがないかという確認には使えるし、粒度が粗いと判断した時点で、別途詳細な要件を決めればいいだけなので、道具としては便利という印象です。
内容としても情報処理技術者試験程度の内容を理解していれば(≠資格を持っていれば)読み解ける程度なので、容易い。

  • 基本的に公官庁のユーザーがベンダーにシステム開発を丸投げにする前提なので、そうでない場合はいくつか合わない項目が存在する。
  • 公官庁の商流(ビジネス上の慣習)を知らない場合はチンプンカンプンだと思われる項目が存在する。
  • ハードウェアに対する要求は細かいが、ソフトウェアに対する要求は粗い。自分たちで保守していくのならもっと詳細にルールを決めるべき。
  • オンプレ前提なので、クラウドの場合は決めなくてよい場所がある。(というより勝手に決まって動かせない)
  • それぞれの数値がコストにどれくらい影響するのかは記載がない。そのため、コスト感覚がない人がこれをベースに考えるとひどいことになる可能性がある。
  • それぞれの項目間の影響度についての記載がない。そのため、レベルの選択具合によっては実現が非常に難しい場合がある。
  • 何をもってこれが非機能だと規定したのかについては疑問がある。例えばユーザー管理とかはどんなアプリケーションでも必要なのだけれども、検討を忘れがちなものでもあるので、非機能に入れた方が良かったのではないか。逆に、セキュリティについては機能要求として、非機能からは外したほうが良いという意見もある。

と、ざっと思いついたところこんな感じ。読んでみてほかにも何かあれば教えてくれるとありがたいです。

今のシステムで非機能要求とか考えたことがなかったよという人は、現状がどうなってるのかを考え直すためにも読んでみるといいのではないでしょうか。