システム開発で大切な非機能要件について

システム開発で大切な非機能要件について ルート・シーのエンジニアが解説

こんにちは、ルート・シー エンジニアの吉田です。
今回は、より良いシステムを作っていく上でとても大切になってくる非機能要件について解説します。
本来、非機能要件はシステム開発をする側が意識しておくべき内容ですが、あなたがもし、システム開発をどこかの会社に依頼することになった場合、発注者として非機能要件について知っておくことでユーザー(システム利用者)の満足度をより高いものにすることができるかもしれません。
なじみの薄い用語も出てきますが、なるべく具体性をもって分かりやすくしてみましたので、ぜひ最後までお付き合いいただければと思います。

  • この記事を読んでもらいたい人
    ・システム開発を外注したいけれど開発ベンダーに要件を伝えきれるか不安
    ・ユーザー満足度の高いシステムを作りたい
    ・開発の段階から運用・保守のことをしっかり考えておきたい
    という方にぜひ読んでいただけたらと思います。
  • この記事のゴール
    非機能要件という概念を知るところまでを目安にして読んでみてください。
    最初から非機能要件についてすべてを理解しようと思うと大変です。
    非機能要件という考え方がある、ということだけでも押さえておけば、今後システム開発に関わった際にとても役に立つと思います。あまり身構えずに読み進めてもらえればと思います。

1. そもそも非機能要件ってなんのこと?

システム開発の要件は「機能要件」と「非機能要件」に分けられます。
「機能要件」は「実現したい具体的な機能」のことを指します。
一方で「非機能要件」は「機能に関すること以外の要件」のことを指します。
この言葉だけではピンとこないかもしれません。webサイトに商品を掲載し、購入してもらうシステム(いわゆるECサイト)を例にして、それぞれの要件について見ていきます。

◇機能要件
まず、機能要件は以下のような機能や要望が該当します。

  • 商品を検索・購入する機能
  • 購入したい商品をカートに入れる機能(複数商品の一括購入)
  • 商品を登録する機能
  • 会員情報の登録・編集機能

上記のようなシステムの根幹となる要素だけでなく、以下のような各機能の具体的な実現要望も機能要件に位置付けられます。

  • 商品ページに掲載する商品情報をどう見せたいか(表示順や表示項目をどうするか)
  • 商品の検索条件にはどういった検索項目を入れたいか
  • おすすめ商品として表示する商品の条件をどうするか

◇非機能要件
対して、非機能要件は以下のような要望が該当します。

  • 24時間稼働しつづけるシステムにしたい
  • 商品検索機能は2秒以内に検索結果を表示させたい
  • 不正なログインを防ぐためにアカウントロック機能やアクセスログの出力機能をつけたい

このように実現したい機能に対する直接的な要望ではなく、システム全体の稼働条件や性能、セキュリティといった、機能以外の要件を非機能要件といいます。

2. 非機能要件の種類

つづいて非機能要件の種類について見ていきます。
IPA(情報処理推進機構)が定めている「非機能要求グレード」では、非機能要件は6つのカテゴリーに分類されています。

  1. 可用性
  2. 性能・拡張性
  3. 運用・保守性
  4. 移行性
  5. セキュリティ
  6. 環境・エコロジー

それぞれの内容について次節以降で説明していきますが、非機能要件は盛り込めば盛り込むほどサーバーの増強や専用ツールの導入、非機能部分に関する作りこみといった費用が必要になります。開発対象のシステムで重視すべき非機能要件のカテゴリーや取り決め項目について事前に検討し、現実的なラインを見定めることをおすすめします。

非機能要件 その1 可用性

「可用性」とは、システムが安定的に稼働し続けられる能力のことです。
システムは定期的なメンテナンスを必要としたり、サーバー機器の故障など予期しないタイミングで停止したりすることがあります。システムの停止時間の許容範囲は、システムの特性によって変わってきます。たとえば、人命に関わるシステムで可能な限りシステムを停止させたくない場合は、サーバー機器を複数台用意しておき、1台が故障で停止しても全体として稼働停止しない構成(冗長化構成と言います)にしておくことで機器の故障を原因としたシステム停止を減らすことができます(完全になくすことはできません)。
このように、システムの特性やシステム停止により受けられなくなるサービスの影響に応じて、システム停止時間や障害時の復旧時間などを取り決めておきます。

取り決め項目の例
定期メンテナンスの日程/時間帯、障害発生から復旧するまでの時間、バックアップの取得頻度

非機能要件その2 性能・拡張性

「性能」とは、利用者数やアクセス数などの利用度合いに応じたシステムの処理性能のことです。
商品販売サイトを例にした場合、商品検索の結果を表示するまでの時間や商品の購入ボタンを押してから完了画面を表示するまでの時間を何秒以内としておくか、時期や時間帯、平時やピーク時などそれぞれの状況でどのくらいの性能が必要になるか、どのくらいの利用負荷に耐えられるかなどを取り決めておきます。
「拡張性」とは、以下の項目のような拡張の容易性のことを指します。

  • システムへの機能追加のしやすさ
  • 他システムとの連携のしやすさ
  • ハードウェアリソース(CPU/メモリー/ハードディスクなど)の増強のしやすさ
  • 利用しているOSやソフトウェアのアップグレードのしやすさ

システム利用者やアクセス数が増えた際、システムの性能を維持するためにハードウェアリソースを容易に増強できるかどうか、OSやミドルウェアのサポート期限切れの際、アップグレードがスムーズに行えるかどうか、それらの拡張対応でシステムの停止時間をどの程度まで許容できるか、などを取り決めておきます。

取り決め項目の例
トップページの表示時間、ダウンロードやアップロードの処理時間、ハードウェアリソース増強の際のシステム停止時間

非機能要件その3 運用・保守性

「運用・保守性」とは、システムに異常があった際の検知する仕組みや問題発生時の対応手順、バックアップの取得方法など、システムの運用や保守に関するサービスのことです。
異常時の対応方法だけでなく、メンテナンス時の稼働レベルや要員、体制なども含めて取り決めておきます。

取り決め項目の例
バックアップの対象や取得頻度・方法、障害時の復旧方法、障害発生時の体制・役割

非機能要件その4 移行性

「移行性」とは、現行システムから新システムへの移行対応に関することです。
本番稼働中のシステムやデータだけでなく、テスト環境やバックアップデータ、システム稼働に必要なツールやソフトなど移行対象となる資産はシステムによって異なります。また、移行資産についてだけではなく、移行の準備期間や実施期間、詳細な移行スケジュール、移行作業中の体制やトラブルへの対応方法なども取り決めておきます。

取り決め項目の例
新システムへの移行対象資産、移行期間や移行方法

非機能要件その5 セキュリティ

「セキュリティ」とは安全性を保障するためにやっておくべき予防策や対応策のことです。
不正アクセスによる情報の漏洩や改ざんなどを防ぐために、システムへのログイン認証方式やアクセス制限、データの暗号化方法、不正アクセスを検知する仕組みについて取り決めておきます。

取り決め項目の例
監視対象(システムのログファイルやデータベース)、監視方法、不正検知の仕組み

非機能要件その6 環境・エコロジー

「環境・エコロジー」とは、サーバー設置場所の耐震や免震、温度や湿度についてなど物理的な設置環境がシステムの安定稼働に影響を及ぼさないか、サーバー・機器類の設置に関して環境負荷(騒音やCO2の排出量など)への配慮ができているかを指します。

取り決め項目の例
耐震・免震、温度・湿度、重量・空間、騒音、CO2排出量

3. まとめ

対象のシステムによって取り決めておきたい非機能要件の内容はさまざまです。
システム開発の案件に携わる際は、非機能要件の各カテゴリーを意識して開発側としっかり協議しておくと、開発がスムーズに進みやすく、費用が大きく膨らむことも抑えられます。
ルート・シーのシステム開発では、「機能要件」はもちろんのこと、「非機能要件」についてもお客様の実現したい内容・方向性をしっかり確認させていただいた上で進めていく手法をとっています。
システム開発の開発ベンダー選びにお困りでしたら、ぜひルート・シーにご相談いただければと思います。

webサイトに関するお悩みや改修、リニューアルのお問い合わせ、無料相談はこちら

< ノウハウのトップへ戻る