機能要件・非機能要件
**機能要件(Functional Requirements, FR)と非機能要件(Non-Functional Requirements, NFR)**との違いは、システムが「何をするか」と「どのようにあるべきか」の違いとして整理できます。
機能要件(Functional Requirements)
「システムが何をするのか?」
- システムが提供する機能や動作を定義する要件。
- 入力と出力、処理の流れが明確になる。
例
- ユーザーがログインできる
- 商品を検索できる
- 決済処理を行う
- データを保存・更新・削除できる
非機能要件(Non-Functional Requirements)
「システムがどのようにあるべきか?」
- システムの品質や制約に関する要件。
- ユーザーにとっての使いやすさや、システムの安全性、速度などに影響。
代表的な非機能要件
| 分類 | 例 |
|---|---|
| 性能(Performance) | 1秒以内に検索結果を表示 |
| 信頼性(Reliability) | システムの稼働率99.99%を保証 |
| 可用性(Availability) | 24時間365日稼働 |
| 拡張性(Scalability) | 1万人以上の同時接続に対応 |
| セキュリティ(Security) | ユーザー情報は暗号化して保存 |
| 保守性(Maintainability) | コードの変更が容易であること |
| 互換性(Compatibility) | 主要なブラウザで正常動作する |
まとめ
| 機能要件 | 非機能要件 | |
|---|---|---|
| 何を決める? | システムの「動作・機能」 | システムの「品質・特性」 |
| 例 | ユーザーがログインできる | 応答時間1秒以内 |
| 評価方法 | 機能が実装されているか | パフォーマンステスト、負荷試験 |
関係性
非機能要件は、機能要件をどのように実装するかを制約する形で影響します。たとえば、
- 機能要件:「ユ ーザーがログインできる」
- 非機能要件:「パスワードは暗号化し、2要素認証を導入する」
という形で、システムの設計に制約を加えることになります。
開発の現場では、非機能要件の見落としがトラブルの原因になりやすいので、要件定義の段階でしっかり整理することが重要です。