H28 技術士(情報工学)ソフトウェア工学 II-1-1:非機能要件


(1)非機能要件の例
非機能要件はITシステムの機能以外の顧客からの要求事項であり、性能面や品質、保守性、拡張性、セキュリティなど様々な項目がある。ここで代表的な2つの例を挙げる。
@拡張性
ITシステムの中には標準となるシステムを開発し、それをベースに顧客毎にカスタマイズを行うことがある。こういったシステムでは標準となるシステムはソースコードの可読性が高いこと、カスタマイズの行いやすさなど拡張性が求められる。
Aセキュリティ
多くのITシステムは個人情報やユーザ企業の機密情報を扱うため、システムの不具合や、不正なアクセスによる情報漏えいが発生しないような高度なセキュリティが求められる。
(2)非機能要件の定義と確認
@拡張性
拡張性についての定義は、拡張性で求められる可読性などが主観的な内容で客観的な数値として出しにくい内容であるため、可読性に関係する数値化しやすいデータとして関数のパス数や確認が容易な外部変数の参照禁止などを条件として定義するのがよい。これらの条件はシステム完成後にツールを使ってデータを取得できるため、ユーザからよい評価を受けやすい。
Aセキュリティ
セキュリティについても、客観的な目標値を出しにくいため、要件定義では守るべき機密情報とそうでないものを分けること、機密情報として分類したデータについてはアクセスする箇所を限定し、不用意にアクセスすることがないようにすること、また、ログや一時データなどに機密情報を残さないようにするなどを決めユーザと合意することが大事である。これらの確認方法は機密情報のアクセス状況をモニタリングしたり、システムの稼動後に一時ファイルやログなどを検査することで確認が可能である。


[Intermission]
非機能要件というと性能や品質などが思い浮かびますが、こういった問題ではこれらの要件は書きづらいと考え、拡張性とセキュリティで書いてみました。
もっと書きやすい要件があるかもしれないので後でもう一回くらいは書いてみようと思います。

以下が、書き直したものです。

(1)非機能要件の例
非機能要件はITシステムの機能以外の顧客からの要求事項であり、性能面や品質、保守性、拡張性、セキュリティなど様々な項目がある。ここで代表的な2つの例を挙げる。
@性能
多くのシステムは処理を行うときの時間に制限のあることが多く、開発時の条件として処理時間を上げてくることがある。特に競合企業の製品と処理時間で差別化するような場合には機能要件と同じように性能面の条件が必須になる。
A品質
多くのITシステムではリリース後に不具合が見つかってもバージョンアップやパッチのリリースが困難なことが多いため、品質面の要件は厳しいことが多い。

(2)非機能要件の定義と確認
@性能
性能についての定義は正常処理を行うのにかかる時間を要件としてあげることがほとんどであるが、それ以外にもいくつかの異常系処理にかかる時間を要件とすることが重要である。特に異常の発生により処理を取り消すような場合の時間はITシステムの全体性能に関わってくるので具体的な数値で要件を定義したほうがよい。
性能についての確認は、実際の運用に近い環境で開発したITシステムを動作させ、処理時間を計ることで確認するのがよい。また、このときには複数回計測を行い、平均値、最高値、最悪値の時間をまとめる。
A品質
品質についての用件として残存バグのように確認できない項目を挙げることがあるが、確認できない内容では意味がないので、要件としては実際に運用で使用するデータでITシステムを一定時間、一定回数動作させ不具合が発生しないという条件をつけるのがよい。
また、ソフトウエアの処理の途中の変数の値をログで出力するようにし、ログの内容を確認して変数の値が期待通りであるかを確認することでも品質の確認を行うことができる。



戻る 一覧へ