ソフトウェア開発におけるプロセス品質(業務品質)の重要性

はじめに

私たちの生活はスマートフォンアプリを使用して買い物をすることが日常になり、道路を走る自動車も燃費・排出ガスの最適なコントロールやサポート運転など、ソフトウェアで制御されているものが増えてきました。意識しないと気づかないレベルでソフトウェアが生活に浸透している私たちの日常は、ソフトウェアの品質に左右される生活と言っても過言ではありません。例えば銀行システムで振込ができないなどの不具合が起きた場合、多くの人に影響があることは皆さんもニュースなどで耳にしているかと思います。
今回は私たちの生活を支えるソフトウェアの品質について、プロセス品質という切り口からIT初心者の方にもわかりやすく解説致します。

ソフトウェアの特徴

ソフトウェアの品質について語る前に、まずはソフトウェアの特徴について確認したいと思います。ソフトウェアは、コンピューターや電子機器に搭載されたプログラムのことを指し、実体を持ちません。他にも次のような特徴がありますが、最大の特徴は、「目に見えない」ことであり、そのため品質の管理が困難であると言えます。

特徴1 目に見えない
ソフトウェアはどのように動いているのか一目見ただけではわからない上、制作過程を見ることができないため品質管理が難しく、問題が発生した際も原因の特定が難しい

特徴2 論理の集合である
ソフトウェアは論理の集合であるため正確な設計が難しく、またその信頼性を検証するためのテストを設計することも困難である。

特徴3 自由度が高い
ソフトウェアは発注者の要望に合わせて機能やデザインの変更、追加が行いやすく、アップデートで問題の改善を行うことができる。

特徴4 人への依存度が高い
ソフトウェアは自由度が高いが、そのレベルは開発者のスキルに左右される。人が作るものなので個人のスキルやチーム、環境などに影響を受けやすい。

特徴5 ユーザーのニーズと直結している

ソフトウェアの仕様はユーザーのニーズと直結しているが、開発者が使用条件の正確な把握が困難なため、ニーズへの正確な理解が困難である

   ひ

このようなソフトウェアの特徴を踏まえた上で、このあとのソフトウェア品質について読み進めていきましょう。

プロセス品質とプロダクト品質

ソフトウェア品質管理において品質を的確に把握するためには品質を分解して考えます。品質は大きく「プロセス品質」と「プロダクト品質」と「利用時の品質」に分けられ、プロダクト品質は内部品質と外部品質に分けられます。

プロセス品質(業務品質)

プロセス品質は業務品質とも呼ばれます。プロセス品質は、開発各工程における業務のやり方や手順の品質を指し、各工程の業務実施状況について十分性を評価します。プロセス品質は、各工程で実施すべき業務を確実に実施し、品質を作り込めば、よい品質のものが出来上がるという考え方が基になっています。

プロダクト品質(製品品質)

プロダクト品質とは開発プロセスの成果物である内部品質と外部品質に着目した品質です。そのため、プロダクト品質は製品品質とも呼ばれます。

内部品質と外部品質

内部品質はソフトウェアの仕様書や設計書・ソースコード等、各工程における成果物の出来栄えを指し、外部品質はソフトウェア製品が実行されるときの品質を指します。外部品質はユーザーが実際に製品を利用した時に感じる「利用時の品質」に直接影響するため、リリース前に必ず外部品質の妥当性確認を行い、品質を評価します。一般的には「品質」というと、この外部品質のことを指すことが多いです。

プロセス品質とプロダクト品質の関係

プロセス品質とプロダクト品質、内部品質と外部品質のそれぞれの関係性は下図のように表すことができます。プロセス品質が土台となって、内部品質、外部品質、利用時の品質へとそれぞれ影響し、利用時の品質は外部品質に、外部品質は内部品質に、内部品質はプロセス品質に依存する関係性で繋がっています。つまり、よいプロダクトはよいプロセスから生まれるということを表しており、プロセス品質が最も重要であることがおわかりいただけると思います。

ISO9126-1
ISO9126-1(JIS X 0129-1)から引用

プロセス品質(業務品質)を向上させる方法

ここまで解説したように、ソフトウェア品質を向上させるにはプロセス品質を向上させることが必須です。プロセス品質(業務品質)を向上する方法として次のステップがあります。

1.可視化

プロセス品質を向上させるためにはまず現状のプロセスを可視化します。
そのためには現状の開発プロセスを業務フローとして書き起こし、プロセス全体の流れや問題点・課題点などを目で見てわかるようにします。

2.標準化

つぎに可視化により明確になった、問題や課題に対して改善を施しつつ、開発プロセスを標準化します。もとよりプロセスは人によるバラツキがつきものですが、標準化したプロセスを定着化させることにより、誰でも同じ手順で同じように業務が行うことが可能となり、属人化の解消につながります。標準化は一回実施して終わりではなく、定期的にモニタリングを行い、状況や環境の変化に合わせて常に最適化(更新)することが重要です。

3.定量化

さいごは定量化を目指します。定量化とは各工程のプロセスやプロセスの成果物に対して品質に影響するデータを収集して数値化し、測定・分析を行います。標準化により、誰でも等しく開発業務をこなすことが可能となりますが、「同じ結果につながる業務内容であったか」や、「同じ結果であったか」についてはまた別問題となるため、品質目標を設定し品質を分析・評価できるようにすることが重要です。

品質は各工程で作り込むものであるため、プロセスの可視化、標準化、定量化は、品質改善の糸口でもあり、高品質実現に向けての最善策にもなるのです。

これからのソフトウェア開発ではプロセス品質の重要性が増す

以前は「設計書通りに動く」ことや「バグがない」ことがソフトウェアの品質にとって重要でした。しかし、テクノロジーの発達により高度化、複雑化したデジタル社会において、ソフトウェアへ求められる要求は高まるばかりです。またその対応にもスピードを求められるようになりました。従来型の不具合がないことをゴールとするプロセスでは、高まる一方の要求に対応しきれなくなっています。今後のソフトウェア品質向上はプロセス品質がカギであるという事実は開発手法がウォーターフォールでもアジャイルでも変わりはありません。
開発にスピードを求められる中でも品質を落とすことはできないことはもちろんのこと、顧客満足度を向上させ、企業ブランドを高めるためにもプロセス品質の見直しを行ってみてはいかがでしょうか。

さいごに

弊社、ソフトウェア品質専門コンサルタントQualityCubeは、ソフトウェアを開発されている企業様や、ソフトウェアを提供される企業様、利用される企業様の品質向上を様々な角度からご支援させていただいております。開発プロセスの可視化、標準化、定量化についてもサポートさせていただいておりますのでお気軽にご相談ください。
また、プロセスの定量化については、弊社が独自に開発した品質管理ツール、クオリティゲートのご活用をおすすめしております。クオリティゲートの詳細はこちらをご覧ください。

QualityCubeのソフトウェア品質向上サポートサービス

詳しくはQualityCubeサイトのサービスページプロダクトページにてご確認ください。
また、ご質問や無料相談も常時受け付けておりますので、お気軽にお問い合わせください。

Twitterでフォローしよう

おすすめの記事