[用語] 非機能要件(ひきのうようけん)

非機能要件(Non-functional requirement)

非機能要件とは、システムがどのように動作するかではなく、システムがどのような品質特性を持つべきかを定義する要件のことです。機能要件が「何ができるか」を定めるのに対し、非機能要件は「どのようにあるべきか」を定めるものです。

例えるなら、機能要件が「料理のレシピ」だとすると、非機能要件は「料理の味、見た目、提供時間、安全性」のようなものです。レシピ通りに作られた料理でも、味が悪かったり、提供に時間がかかったりすれば、良いとは言えませんよね。システムも同様に、機能が満たされていても、使いにくかったり、性能が悪かったりすれば、利用者の満足度は低下してしまいます。

非機能要件は多岐にわたりますが、代表的なものとしては以下のようなものが挙げられます。

  • 性能要件: 応答時間、処理能力、同時接続数など、システムの速度や効率に関する要件。例えば、「画面遷移は3秒以内に完了すること」「1秒あたり100件のトランザクションを処理できること」。
  • 信頼性要件: 障害発生頻度、復旧時間など、システムが安定して稼働し続けられるかに関する要件。例えば、「年間を通してシステムのダウンタイムは1時間以内であること」「障害発生時には5分以内に自動的に切り替わること」。
  • 可用性要件: システムが利用可能な時間帯や割合に関する要件。例えば、「24時間365日システムが利用可能であること」「計画停止を含めても、月間のサービス停止時間は1%未満であること」。
  • 保守性要件: システムの変更や修正のしやすさに関する要件。例えば、「ソースコードには十分なコメントを記述すること」「モジュール化された設計とすること」。
  • 運用性要件: システムの監視、バックアップ、リストアなどの運用に関する要件。例えば、「日次で自動バックアップを実施すること」「障害発生時の手順を明確にすること」。
  • セキュリティ要件: 情報漏洩対策、不正アクセス防止など、システムの安全性に関する要件。例えば、「全ての通信は暗号化すること」「パスワードは複雑なルールを適用し、定期的に変更を求めること」。
  • 拡張性要件: 将来的な機能追加や負荷増加に対応できるかに関する要件。例えば、「将来的にユーザー数が10倍になっても性能を維持できる設計とすること」「新しいAPIを容易に追加できること」。
  • 移植性要件: 異なる環境(OS、ハードウェアなど)へ移行できるかに関する要件。例えば、「特定のOSに依存しない設計とすること」。
  • ユーザビリティ要件: 利用者の使いやすさ、操作性に関する要件。例えば、「直感的なユーザーインターフェースであること」「ヘルプ機能が充実していること」。

これらの非機能要件は、システムの品質を左右する非常に重要な要素であり、システム開発の初期段階で明確に定義しておく必要があります。非機能要件が曖昧なまま開発が進むと、後々になって大きな手戻りが発生したり、利用者の不満につながったりする可能性があります。

コメント

タイトルとURLをコピーしました