1.3.3. その他の要件

1. 概要

 システム開発において、要件定義は非常に重要なプロセスです。特に「その他の要件」は、機能要件以外の様々な要素を定義する部分であり、システムの全体的な品質や成功に大きく影響します。応用情報処理技術者試験のシラバスでは、システム要件定義の中でこの「その他の要件」について理解することが求められています。これには、システム構成要件、設計及び実装の制約条件、適格性確認要件の定義、そして開発環境の検討などが含まれます。

 「その他の要件」は、システムが機能面だけでなく、品質や性能、運用面などの非機能要件を満たすために不可欠な要素です。これらを適切に定義することで、開発するシステムが真に利用者のニーズを満たし、長期的に価値を提供できるものとなります。

flowchart TD
    A["その他の要件"] --> B["システム構成要件"]
    A --> C["設計及び実装の制約条件"]
    A --> D["適格性確認要件"]
    A --> E["開発環境の検討"]
    
    B --> B1["実行環境要件"]
    B --> B2["周辺インタフェース要件"]
    
    C --> C1["使用技術・ツールの制約"]
    C --> C2["セキュリティ制約"]
    C --> C3["法令遵守要件"]
    C --> C4["互換性要件"]
    
    D --> D1["品質要件"]
    D1 --> D11["機能要件"]
    D1 --> D12["非機能要件"]
    D12 --> D121["パフォーマンス要件"]
    D121 --> D1211["達成する遂行能力・性能・運用時の実績に対する要件"]
    
    E --> E1["開発ツール・環境"]
    E --> E2["テスト環境"]
    E --> E3["開発プロセス・メソドロジー"]
    E --> E4["イネーブリングシステム"]
    
    classDef highlight fill:#f9f,stroke:#333,stroke-width:2px;
    class B1,B2,C1,C2,C3,C4,D11,D121,E4 highlight;

図1: 「その他の要件」の全体構造

2. 詳細説明

2.1. システム構成要件

 システム構成要件とは、開発するシステムのハードウェア、ソフトウェア、ネットワークなどの物理的・論理的な構成に関する要件です。ここでは特に、実行環境要件に注目する必要があります。実行環境要件とは、システムが動作する環境に関する要件であり、以下の要素が含まれます:

  • サーバー、クライアントなどのハードウェア要件
  • オペレーティングシステム、ミドルウェアなどのソフトウェア要件
  • ネットワーク構成やプロトコルに関する要件
  • ストレージ要件(容量、種類、アクセス方法など)

 また、周辺インタフェース要件も重要です。これは、外部システムや周辺機器との接続方法や通信プロトコルなどを定義するものです。APIの仕様、データ交換形式、通信タイミングなどがここに含まれます。

2.2. 設計及び実装の制約条件

 設計及び実装の制約条件とは、システム開発における様々な制限や条件を定義するものです。これには以下のような要素が含まれます:

  • 使用すべき(または避けるべき)技術やツール
  • コーディング規約やデザインパターン
  • セキュリティに関する制約
  • 法令遵守に関する制約
  • 既存システムとの互換性要件

 これらの制約条件は、開発チームがシステムを設計・実装する際の指針となり、一貫性のある品質の高いシステムを構築するために重要です。

2.3. 適格性確認要件

 適格性確認要件とは、開発したシステムが利用可能な品質であることを確認するための基準です。これは、品質要件の一部として捉えることができます。品質要件には、機能要件(システムが提供すべき機能に関する要件)と非機能要件(機能以外の品質特性に関する要件)の両方が含まれます。

 特に重要なのは、非機能要件の中でもパフォーマンス要件です。これは、達成する遂行能力・性能・運用時の実績に対する要件であり、以下のような要素が含まれます:

  • レスポンス時間
  • スループット
  • 処理能力
  • リソース使用率
  • スケーラビリティ

 これらの要件を明確に定義することで、システムが期待通りのパフォーマンスを発揮することを確認できます。

比較項目 機能要件 非機能要件
定義 システムが「何を」行うべきかを規定 システムが「どのように」動作すべきかを規定
焦点 ユーザーの業務や目的達成のための機能 品質、性能、制約、運用性など
– ユーザー登録機能
– 検索機能
– レポート出力機能
– データ入力機能
– 応答時間(3秒以内)
– 可用性(99.9%以上)
– セキュリティ要件
– スケーラビリティ
検証方法 機能テスト、ユーザー受入テスト 性能テスト、負荷テスト、セキュリティテスト
定義の難しさ 比較的明確に定義しやすい 定量的な指標の設定が難しい場合がある
優先度の設定 機能の必要性に基づいて設定 リスク分析や運用面から判断
要件収集の方法 ユーザーインタビュー、業務分析 運用担当者へのヒアリング、SLA分析

表1: 非機能要件と機能要件の比較

2.4. 開発環境の検討

 開発環境の検討とは、システム開発を効率的に進めるために必要な環境や体制を整えることです。これには以下の要素が含まれます:

  • 開発ツールや環境(IDE、バージョン管理システムなど)
  • テスト環境
  • CI/CD(継続的インテグレーション/継続的デリバリー)のパイプライン
  • 開発プロセスとメソドロジー(アジャイル、ウォーターフォールなど)
  • イネーブリングシステム(開発を支援するシステムやツール)

 イネーブリングシステムは、主システムの開発、運用、保守などを支援するためのシステムです。例えば、テスト自動化ツール、コード品質チェックツール、ドキュメント管理システムなどがこれに該当します。

flowchart TB
    subgraph "システム開発プロセス"
        A["企画立案"] --> B["要件定義"]
        B --> C["基本設計"]
        C --> D["詳細設計"]
        D --> E["実装・コーディング"]
        E --> F["テスト"]
        F --> G["リリース・展開"]
        G --> H["運用保守"]
    end
    
    subgraph "要件定義フェーズ"
        B1["ステークホルダー分析"] --> B2["機能要件定義"]
        B2 --> B3["その他の要件定義"]
        B3 --> B4["要件の優先順位付け"]
        B4 --> B5["要件定義書作成"]
    end
    
    subgraph "その他の要件定義"
        B31["システム構成要件"] 
        B32["設計及び実装の制約条件"]
        B33["適格性確認要件"]
        B34["開発環境の検討"]
    end
    
    B --- B1
    B3 --- B31
    B3 --- B32
    B3 --- B33
    B3 --- B34
    
    B33 -.- C
    B33 -.- F
    B31 -.- D
    B32 -.- E
    B34 -.- E
    
    classDef current fill:#f96,stroke:#333,stroke-width:2px;
    classDef related fill:#bbf,stroke:#333,stroke-width:1px;
    
    class B3,B31,B32,B33,B34 current;
    class B,B1,B2,B4,B5 related;

図2: 実システム開発における要件定義プロセスと「その他の要件」の位置づけ

3. 応用例

3.1. 企業の業務システム開発における応用例

 ある企業の基幹業務システム開発では、以下のように「その他の要件」が定義されました:

  • システム構成要件:クラウドベースのマイクロサービスアーキテクチャを採用し、AWS上に構築。実行環境要件として、Dockerコンテナを使用し、Kubernetes上で運用。
  • 設計・実装の制約条件:セキュリティ上の理由から、全てのデータは暗号化して保存し、通信は全てHTTPS経由で行う。また、GDPR準拠のためのデータ処理手順を実装する。
  • 適格性確認要件:非機能要件として、99.9%の可用性、平均応答時間200ミリ秒以内というパフォーマンス要件を設定。また、同時接続ユーザー1000人までのスケーラビリティを確保。
  • 開発環境:GitLab CIを使ったCI/CDパイプラインを構築し、イネーブリングシステムとしてJenkinsによる自動テスト環境を整備。

3.2. モバイルアプリケーション開発における応用例

 あるモバイルアプリケーション開発プロジェクトでは、以下のように「その他の要件」が適用されました:

  • システム構成要件:iOS 13以上、Android 9.0以上の実行環境要件を設定。また、周辺インタフェース要件として、RESTful APIを通じたバックエンドサーバーとの通信を定義。
  • 設計・実装の制約条件:AppleのヒューマンインターフェースガイドラインとGoogle Materialデザインに準拠したUI/UXデザイン。オフライン機能の実装も必須。
  • 適格性確認要件:バッテリー消費を最小限に抑えるというパフォーマンス要件。アプリ起動時間3秒以内という品質要件。
  • 開発環境:Flutter/Dartを使用したクロスプラットフォーム開発環境。イネーブリングシステムとして、FirebaseAnalyticsによるユーザー行動分析ツールを導入。

3.3. 各要件間の関連性と優先順位づけ

 「その他の要件」の各項目は独立しているわけではなく、相互に影響し合います。例えば、高いパフォーマンス要件を満たすためには、それに適したシステム構成要件が必要になります。また、セキュリティに関する制約条件は、周辺インタフェース要件にも影響を与えます。

 要件の優先順位づけにおいては、以下の点を考慮することが重要です:

  1. ビジネス上の重要性(事業継続性への影響度)
  2. 法的・規制上の要件(コンプライアンス)
  3. 技術的な依存関係(他の要件への影響)
  4. 実現の難易度とコスト
  5. ステークホルダーの期待

 例えば、金融システムではセキュリティ関連の制約条件が最優先されることが多く、ECサイトではパフォーマンス要件が高い優先度を持つことがあります。

4. 例題

例題1

 あるECサイトのシステム要件定義において、「その他の要件」に関する以下の記述のうち、最も適切なものを選びなさい。

  1. 非機能要件よりも機能要件を優先して定義し、パフォーマンス要件は運用開始後に必要に応じて追加する。
  2. 実行環境要件は、現状のハードウェア構成に合わせて定義し、将来の拡張性は考慮しない。
  3. 周辺インタフェース要件として、外部決済サービスとの連携APIの仕様を詳細に定義し、セキュリティ要件も含める。
  4. イネーブリングシステムは開発効率に影響しないため、要件定義の段階では考慮しない。

【解答】c.

【解説】ECサイトでは外部決済サービスとの連携が重要であり、そのAPIの仕様やセキュリティ要件を周辺インタフェース要件として詳細に定義することは適切です。a. b. d. はいずれも不適切な考え方です。非機能要件やパフォーマンス要件は事前に定義すべきですし、拡張性も考慮する必要があります。また、イネーブリングシステムは開発効率に大きく影響するため、要件定義の段階から考慮すべきです。

例題2

 ある企業の人事システム開発プロジェクトにおいて、「その他の要件」として以下の項目が挙げられました。これらを適切に分類しなさい。

(1) 従業員データへのアクセスは監査ログを残すこと
(2) システムは1日あたり5000件の処理が可能であること
(3) 社内のActive Directoryと連携すること
(4) Java 11およびSpring Frameworkを使用すること
(5) 開発はDevOpsの手法に従い、自動テストを実施すること

【解答】
(1) 設計及び実装の制約条件(セキュリティに関する制約)
(2) 適格性確認要件(パフォーマンス要件)
(3) システム構成要件(周辺インタフェース要件)
(4) 設計及び実装の制約条件(使用技術に関する制約)
(5) 開発環境の検討

【解説】
(1)はセキュリティに関する制約であり、設計及び実装の制約条件に分類されます。
(2)は達成すべき処理能力に関する要件であり、パフォーマンス要件として適格性確認要件に分類されます。
(3)は外部システム(Active Directory)との連携に関する要件であり、周辺インタフェース要件としてシステム構成要件に分類されます。
(4)は使用すべき技術に関する制約であり、設計及び実装の制約条件に分類されます。
(5)は開発手法やテスト方法に関する検討事項であり、開発環境の検討に分類されます。

例題3

 ある病院の電子カルテシステムの要件定義において、非機能要件を適切に定義する必要があります。以下の要件について、より具体的なパフォーマンス要件として再定義しなさい。また、その要件がシステムのどの側面(可用性、性能、セキュリティなど)に関連するかも述べなさい。

「システムは患者データの安全性を確保しつつ、医師が迅速に患者情報にアクセスできること」

再定義された要件:

  1. 性能面:「医師が患者カルテを要求してから画面表示までの時間は、通常負荷時で1.5秒以内、ピーク負荷時(同時アクセス100人)でも3秒以内であること。」
  2. セキュリティ面:「全ての患者データは保存時および通信時にAES-256暗号化を施し、アクセスは多要素認証を必須とすること。また、全てのデータアクセスログを5年間保持し、不正アクセス検知システムと連携すること。」
  3. 可用性面:「システムの計画外ダウンタイムは月間30分以内とし、災害発生時には15分以内にバックアップサイトで運用を再開できること。」

この要件は、主に以下の側面に関連しています:

  • 性能(Performance):レスポンス時間に関する要件
  • セキュリティ(Security):データ保護とアクセス制御に関する要件
  • 可用性(Availability):システムの稼働率と継続性に関する要件

医療システムでは、これら3つの側面のバランスが特に重要であり、患者データのセキュリティを確保しながらも、緊急時に迅速にデータにアクセスできることが生命に関わる問題となる可能性があります。

分類 チェック項目 記述例 確認
システム構成要件 実行環境要件と周辺インタフェース要件を具体的に定義
ハードウェア要件 「サーバーは16コア以上のCPU、64GB以上のメモリ、2TB以上のストレージを備えること」
ソフトウェア要件 「Red Hat Enterprise Linux 8.x以上、Oracle Database 19c以上をサポートすること」
ネットワーク要件 「クライアント-サーバー間の通信は暗号化され、帯域幅は100Mbps以上を確保すること」
周辺インタフェース要件 「外部システムとのデータ連携はRESTful APIで行い、認証にはOAuth 2.0を使用すること」
仮想化/クラウド環境要件 「AWS上でのデプロイを前提とし、Auto Scalingによる負荷分散を実装すること」
設計及び実装の制約条件 技術的・法的・組織的な制約条件を明確に定義
使用技術の制約 「フロントエンドはReact.js、バックエンドはNode.jsを使用し、データベースはPostgreSQLとすること」
セキュリティ制約 「パスワードはbcryptでハッシュ化し、SQLインジェクション対策を実装すること」
法令遵守要件 「個人情報保護法に準拠し、EU市場向けにはGDPRに対応すること」
互換性要件 「既存システムのデータ形式と互換性を持ち、移行時のデータ変換を最小限にすること」
適格性確認要件 システムの品質基準を定量的に定義
パフォーマンス要件 「ピーク時の同時ユーザー1000人に対し、レスポンス時間3秒以内を維持すること」
可用性要件 「システムの年間稼働率は99.9%以上とし、計画外のダウンタイムは月間で30分以内とすること」
信頼性要件 「障害発生時は自動的にバックアップシステムに切り替わり、データ損失は1分以内のトランザクションに限ること」
拡張性要件 「ユーザー数が5年間で10倍になっても、ハードウェアの線形な増強だけで対応できる設計とすること」
保守性要件 「コンポーネントの95%はユニットテストで検証され、テストカバレッジ80%以上を維持すること」
開発環境の検討 効率的な開発を実現するための環境と支援ツールを定義
開発ツール・環境 「開発はGitHub上で行い、プルリクエスト方式での開発フローを採用すること」
テスト環境 「本番と同等の構成のステージング環境を用意し、負荷テストと総合テストを実施すること」
イネーブリングシステム 「CI/CDパイプラインとしてJenkinsを導入し、コード品質チェックにはSonarQubeを使用すること」

表2: システム要件定義における「その他の要件」チェックリスト

5. まとめ

 「その他の要件」は、システム要件定義において機能要件と同様に重要な要素です。これには、システム構成要件(実行環境要件、周辺インタフェース要件など)、設計及び実装の制約条件、適格性確認要件(品質要件、パフォーマンス要件など)、開発環境の検討(イネーブリングシステムなど)が含まれます。

 これらの要件を適切に定義することで、以下のような効果が期待できます:

  • 開発するシステムが真に求められる品質を達成できる
  • 開発プロセスが効率化され、リスクが低減される
  • 利害関係者間での認識の齟齬が減少する
  • システムの運用・保守性が向上する

 要件定義の段階で「その他の要件」を詳細に検討し、明確に文書化することは、プロジェクト成功のための重要な鍵となります。特に非機能要件は、後から変更することが難しく、かつコストがかかることが多いため、初期段階での適切な定義が重要です。

 応用情報処理技術者として、機能要件だけでなく「その他の要件」についても深く理解し、適切に定義できることが重要です。特に非機能要件やパフォーマンス要件は、システムの成功に直結する要素であることを常に意識しておきましょう。また、これらの要件は相互に関連しているため、全体のバランスを考慮した上で定義する必要があります。

 「その他の要件」の定義は、単なるチェックリストの作成ではなく、システムの目的やユーザーのニーズを深く理解した上で行うべき創造的なプロセスです。本記事で紹介したチェックリストや図表を参考に、実際のプロジェクトでこれらの要件を適切に定義し、高品質なシステム開発を実現してください。

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