こちらの記事はトラストバンク Advent Calendar 2023の8日目の記事です。
こんにちは。普段QA業務を担当しているkotsutaです。
さて、秋頃からQA組織を今後どうしていくかを話す場がありまして、「非機能要件」なるこれまで遭遇してこなかった単語が度々社内で飛び交っており、不勉強ながら良い機会なので非機能要件がどのようなものなのかをまとめてみました。
「機能要件」と「非機能要件」の違い
- 機能要件:実現したいシステムの機能や動作を定義するもの。
- 非機能要件:システムの信頼性やUX観点で満たしておく必要のある要件。
「非機能要件は機能要件以外の要件」として位置づけられてます。
非機能要件の観点は案件オーナーからは要件定義時に出てきづらいものなので、
担当開発者や関わるQAが汲んで挙げていくしか無いのですが
インフラまわりやセキュリティ、作られる機能に対しての専門知識が必要となります。
「非機能要求グレード」
機能要件の背景に潜む「それ以外」を読み解けというわけでもなく、それを行うのにやたらに広域な知識が必要かというとそうでもなくて、非機能要件にはちゃんとした定義があります。
独立行政法人 情報処理推進機構(IPA)が定めた「非機能要求グレード」として、次の6項目に大きく分類されるそうです。
・可用性
そのシステムを安定的に継続稼働させるための要件や、万が一障害が発生した際の復旧方法の要件、
またバックアップ体制などの対策方法などは「可用性」に分類されます。
・性能・拡張性
システムの情報処理性能や、ピーク時の負荷対策などの定義、
今後リソース増強のための機能拡張が可能かについても「性能・拡張性」に分類されます。
・運用・保守性
リリースされた機能が実際に運用フェーズに移った際に必要となる運用マニュアルが整備されているか、
また、システムの監視体制があるかなどが「運用・保守性」に分類されます。
・移行性
現行システムから新システムへ移行する際に検討すべきこと、
移行スケジュールの調整や、リハーサルの実施などが「移行性」に分類されます。
・セキュリティ
システムの安全保証のため、ユーザーごとに権限を設け利用できる機能にアクセス制限をかけたり、
不正なアクセスや操作が行なわた場合に監視・追跡機能を設けるなどの要件が「セキュリティ」に分類されます。
・環境・エコロジー
システムの消費エネルギーや、たとえばサーバーなどの機器の設置箇所の安全性などの要求がこちらに分類されるらしい
(参考サイトや資料を読んでもあまり落ちなかった。WEBサービス以外では重要視する必要あるのかも?)
「非機能要求グレード」の項目を理解した上で思い返してみると…あるある
表面上の機能要件を満たしていれば目的のものは作られるが、要件定義時に非機能要件への考慮が漏れていたばかりに、
考慮漏れ不具合が出たり、リリースできなかったりなど、これまでにも思い当たることがいくつかあります。
たとえば、
データ内の特定の単語をチェックする機能で、リリース時にはチェック対象が少なかったので問題がなかったが、実際に使用して年々チェック対象のデータ量が増加した場合に負荷に耐えられずスロークエリ出てしまった機能とか(…性能・拡張性の考慮不足)
ある機能を操作する際にアカウントのアクセス制限機能が設けられていなかったため、不特定多数が利用できる状態になっており、そのままリリースされてた場合、今後問題になる可能性があるとリリース直前の指摘で取り下げられた機能とか(…セキュリティ面の考慮不足)
嬉しいことに新規開発案件の仕様検討段階でお声掛けされることが多々あるのですが、要件定義時にはオモテで見えている機能要件ばかり目が行ってしまいがちになっています。今後は非機能要件も指摘できるよう心がけて行きたいと思います。
エンジニア募集中です
トラストバンクでは一緒に働くなかまを募集しています(QAエンジニアの方もぜひ!!!!!)