Skip to content

非機能要件とは

非機能要件は、システムが「どのように動作するか」を定義する要件です。機能要件が「何をするか」を定義するのに対し、非機能要件は「どの程度の品質で動作するか」を定義します。

⚖️ 機能要件と非機能要件の違い

Section titled “⚖️ 機能要件と非機能要件の違い”

定義:

  • システムが「何をするか」を定義
  • 具体的な機能や動作を記述

例:

  • ✅ ユーザーがログインできる
  • ✅ 商品を検索できる
  • ✅ 注文を完了できる

定義:

  • システムが「どのように動作するか」を定義
  • 品質特性や制約を記述

例:

  • ⏰ ページの読み込み時間が3秒以内
  • 👥 同時1000ユーザーまで対応可能
  • ✅ 99.9%の可用性を保証

🎯 なぜ非機能要件が重要なのか

Section titled “🎯 なぜ非機能要件が重要なのか”

❌ 問題のある非機能要件の定義

Section titled “❌ 問題のある非機能要件の定義”

問題のある状況:

  • 非機能要件が定義されていない
  • パフォーマンス要件が不明確
  • セキュリティ要件が曖昧
  • スケーラビリティの考慮がない
  • 運用要件が不明確

影響:

  • ⚠️ パフォーマンスの問題が発生する
  • 🔒 セキュリティホールが発生する
  • スケールアウトが困難になる
  • 💸 運用コストが増える
  • 📉 ユーザー体験が悪化する
  • レスポンスタイム: リクエストからレスポンスまでの時間
  • 📈 スループット: 単位時間あたりの処理件数
  • 💻 リソース使用率: CPUメモリディスクの使用率
  • 🔐 認証・認可: ユーザーの認証権限管理
  • 🛡️ データ保護: 機密情報の保護
  • ⚠️ 脆弱性対策: セキュリティホールの対策
  • 📊 稼働率: システムが利用可能な時間の割合
  • 🔧 障害復旧時間: 障害発生から復旧までの時間
  • 💾 バックアップ: データバックアップリストア
  • 水平スケーリング: サーバーを追加してスケール
  • ⬆️ 垂直スケーリング: サーバーのスペックを上げてスケール
  • ⚖️ 負荷分散: リクエストを複数のサーバーに分散
  • 📖 コードの可読性: コードが読みやすい
  • 🧪 テスト容易性: テストが書きやすい
  • 📚 ドキュメント: 適切なドキュメントがある
  • 👀 監視: システムの状態を監視
  • 📝 ログ: 適切なログを記録
  • 🔔 アラート: 異常時に通知
  • 📊 定量的な目標: 数値で測定可能な目標を設定
  • 🔍 測定方法: どのように測定するかを定義
  • 成功基準: どの程度で成功とみなすかを定義
  • 🔴 必須要件: 必ず満たす必要がある要件
  • 🟡 推奨要件: 可能であれば満たしたい要件
  • 🟢 将来要件: 将来的に満たしたい要件
  • コスト: 要件を満たすためのコスト
  • リスク: 要件を満たさない場合のリスク
  • 優先順位: どの要件を優先するか

非機能要件とは:

  • 定義: システムが「どのように動作するか」を定義する要件
  • 重要性: パフォーマンス、セキュリティ、可用性などに影響
  • 分類: パフォーマンス、セキュリティ、可用性、スケーラビリティ、保守性、運用
  • 定義方法: 要件の明確化、優先順位の設定、トレードオフの理解

適切な非機能要件を定義することで、高品質なシステムを構築できます。