ソフトウェア開発とソフトウェア品質向上の考え
ソフトウェア品質に関するトピックスとして、「ソフトウェア品質向上」の重要性を解説。
近年は、スマートフォンやパソコンなどのICT機器の普及とともに、私たちの生活ではソフトウェアが当たり前の様に使われています。さらにIoT技術の発展により、家電製品や生活用品でもソフトウェアが動いています。
企業がITシステムを利用し、システムを通じて顧客に価値を提供する中、ソフトウェア品質の重要度は増しています。そこで注目を集めているのが、ソフトウェアの”品質向上”です。ソフトウェア品質を継続的に向上させる方法として、ソフトウェア開発プロジェクト参加者全員の品質意識を統一することや、仕組みづくりが重要と言えます。今後の施策として、品質の維持・向上をさせるという指標を浸透させなければなりません。
ソフトウェア開発におけるソフトウェア品質向上に必要な取り組みや重要性、そして品質向上のソリューションとして、品質の「見える化」が品質向上に繋がるポイントを解説します。
ソフトウェアの品質向上が求められる理由
ソフトウェアの需要が増加しているのは「IT技術の多様化」が大きな理由です。
現代ではプライベート、ビジネス問わずソフトウェアの利用範囲が拡大し、ソフトウェアの品質が重要視されています。ソフトウェアの品質が悪く動かなくなってしまった場合、関係する企業やシステム利用者に悪影響を与えてしまいかねないです。
システム障害を原因とする機会損失が発生した場合、影響範囲に応じて甚大な損害が発生します。例えば、交通インフラに関するソフトウェアにトラブルが生じた場合、沢山の人に深刻な影響を及ぼす可能性があります。
このように、ソフトウェアが社会に浸透すればするほど、人々が快適な生活を維持するとともに、ソフトウェア品質の維持・向上が求められるのです。
ソフトウェア品質向上への取り組み
レビューの手順
レビューは、ソフトウェア開発工程全般で行われる評価及び確認作業のことです。
プロジェクトの関係者(発注者や開発者)が多角的に検討することで、レビュー計画、実施、記録、実施結果へと最大限の効果を得るようします。
レビューを効果的に行うには、レビューを実施する開発工程、対象となる成果物、レビューアなどをあらかじめ計画し、チーム内で共有しておくことが必要です。事前の準備段階として、工程のレビューチェックリストの整備、対象ソフトウェアの理解を手助けするシステム構成図やアーキテクチャ、基本アルゴリズムを説明したものなどの関連資料の整備も必要です。自然と必要書類が作成されるという効果も生まれます。
レビューを実施するあたり、レビューの計画、実施、記録、及び実施結果の評価で考慮すべき点を下記に挙げています。
レビュー開催時期、対象成果物、レビューア、適用するレビュー方法及びリーディング技法などのレビュー計画を、プロジェクト計画策定時に計画して明確にします。計画では、レビューの完了判断基準を明確にし、計画内容が妥当であるかを確認します。
対象成果物が、当該プロセスのインプットの要求事項を満たすこと、すなわち前のプロセスで示された要求を網羅している記述内容になっていることを確認します。
レビュー実施後、その結果を記録します。一般に言われるレビュー報告書の発行となります。これは品質記録としての意味を持ち、品質保証活動の一環としてのレビューが確実に実施されたことの証拠となります。レビューの結果、特に指摘事項はこの記録をもとに追跡した完結したことをフォローする必要があります。
①対象プロジェクト名
②対象プロセス(工程)
③対象成果物
④実施日時、時間、場所4
➄レビュー参加者(氏名・役割)
⑥レビュー項目、結果、指摘事項、指摘のフォロー結果
レビュー実施結果の評価
レビューには品質保証活動の重要なプロセスの一つであり、その実施結果を評価してレビュープロセス自身の継続的な改善を行うことは、品質の改善にとっても重要です。
(出典:SQuBOK策定部会 ソフトウェア品質知識体系ガイド)
レビュー方法
レビュー方法には、インスペクション、ウォークスルー、ピアレビューなどがあります。
これらのレビューを実施することで、要件定義や設計段階の品質を作り込み、 テスト段階までに持ち越されるエラーを最小限に抑え込むことが可能です。
ソフトウェア開発において、最もポピュラな品質の手段であり、新しい開発環境は益々その重要性が見直されている“ウォークスルー”と “インスペクション”の効果的な技法と”ピアレビューについて、下記で紹介します。
インスペクション
インスペクションは、標準や仕様から外れた例外、文書化された標準からの逸脱や文書化された要求仕様から見た障害などを発見するレビュー方法の一つで、最も公式なレビューです。
他のレビュー方法との重要な違いは参加者の役割が明確になっていること、チェックリストなど形式的な文書に基づいて実施すすること、正式な記録を強調していることに加え、結果を公式に分析、評価し、障害防止に向け開発プロセスを改善することです。
ウォークスルー
ウォークスルーとは、仕様書やソースコードなどの成果物に対し、作成者を含め複数人が内容を確認することで実施するレビューです。
実施手順はインスペクションに近いですが、インスペクションが参加者の役割を明確にして形式的なチェックリストなどを用いて実行するのに対し、ウォークスルーは対象の成果物に対して参加者が質問やコメントする形で実行します。
このため、ウォークスルーは障害発見だけでなく、成果物に対する参加者の理解促進や、問題に対する解決アイデア抽出などにも活用されます。またウォークスルー結果の記録は厳格ではなく、結果分析によるプロセス改善も行いません。
ピアレビュー
ピアレビューとは、同僚を意味するペア(Peer)によるレビュー全般を呼びます。特定のレビュー技術を表わす呼称ではありません。
ピアレビューでは、個人評価の観点は含まず、技術的な問題の指摘に焦点を当てます。CMMI (Capability Maturity Model Integration、 能力成熟度モデル統合)では、ピアレビューは「作業成果物のレビューのことで、除去する障害を特定するために、作業成果物の開発時に同僚によって実施される」(CMMI 2010)と定義しています。
(出典:SQuBOK策定部会 ソフトウェア品質知識体系ガイド)
ソフトウェアテスト
ソフトウェア品質の維持・向上には、ソフトウェアテストが必要不可欠です。
ソフトウェアテストでは単体テストや結合テスト、総合テストの順で行われます。受け入れテスト後に、手戻りが発生した場合のコストを考えると、可能な限り早期のバグや不具合を発見することが必要です。ソフトウェア開発の各工程でテストを実施し、問題点の分析を行うべきです。
ソフトウェアテストの役割は、対象の製品やサービスがプロジェクトのゴールに沿って進んでいるかどうか、テストという手段により検証や妥当性確認、評価をすることです。テストマネジメントはプロジェクトマネジメントの領域と重なる要素が多く、かつテストのアクティビティは開発プロセス全体に影響を与えます。そのため、プロジェクト全体関係者との調整が不可欠と言えます。
近年では要求定義や設計工程にてテスト設計を行い、上流工程から品質の妥当性を確認する傾向にあります。テストのアクティビティを開発工程の初期段階から開始する有効性が認知されつつあります。
要求定義の重要性
レビューやソフトウェアテストのことをご説明してきましたが、実は品質の80%は開発V字モデル「要求定義」「要件定義」「基本設計」等の超上流工程で決まります。
開発の最初の工程である要求定義は、システム発注者の要求を集約するとても重要なものとなります。開発者の視点で要求や作業工程を決める要件定義に対して、要求定義は本来、顧客側(発注者)が作成するものです。
顧客が書いた内容を参考に、開発者は要件定義に活かすことができます。
ソフトウェア開発の上流工程である要求定義に間違いがあると、ソフトウェアは設計通りに動いているが、仕様自体が間違いだったということも起きます。
要求定義は発注者の要求を元に、何を何のためにやるのかを明確にします。実現したいことをただ聞き入れるだけではなく、取捨することも必要です。やる/やらないはQCDバランスを考慮した優先順位づけで決めます。
要求定義の進め方を参考にされたい方は、「要求定義の進め方ガイド」を下記ボタンより、無料ダウンロードが可能です。
要件定義の重要性
ソフトウェアの品質向上の考え方として、精度の高い要件定義を行うことが必須です。要件定義では、要求定義書を精査し、発注者から要望を聞き出した後、要望にたいして実装するべき機能やシステムを整理していきます。この整理した内容を基に、業務フローや業務シナリオを作り、発注者と認識の違いがないことを確認しながら要件定義書の作成を進めていきます。
要件定義について以下のページより、詳しくご紹介していますのでご参照ください。
ソフトウェアの品質をさらに向上させるため
ソフトウェア開発工程の改善
ソフトウェア開発は、複数の担当者(開発者)で構成されています。各工程で共通する項目や機能に関する開発を手掛けることもあります。
その際に、各担当者への認識が異なっていては円滑に作業を進めることはできません。例えば、開発スケジュールや成果物の品質に影響を与えないように、定めたソフトウェア開発工程に則り共通認識のもと、作業を行っていく必要があります。
それにより、各工程の担当者間での認識のずれを防ぐことも可能です。
より良いソフトウェア開発を行うことは、ソフトウェア品質の向上につなげることができると言えるでしょう。
テスト工程を重視
ソフトウェアの品質を維持・向上させる一番の近道は、ソフトウェアテストをこまめに行うことです。
開発工程にソフトウェアテストを並行して行う際、手戻りが発生しても影響範囲を最小限に抑えることができます。修正コストや作業時間も最小限に抑えることができるという考え方です。
この開発モデルをあらわすのがW字モデルです。
W字モデル
W字モデルとは、V字モデルの左側の開発工程の段階から対応するテストアクティビティを開始するプロセスモデルです。
開発プロセスのV字とテストプロセスのV字が並行して実行される様子がWの形になることから、W字モデル(Wモデル)と呼ばれています。V字モデルの表現は、テストアクティビティ(テスト計画や設計などを含め)を実装工程の後に開始するという印象があり、それを解決するモデルです。
(出典:SQuBOK策定部会 ソフトウェア品質知識体系ガイド)
テスト工程を重視することは、開発者全体が品質に関する認識をそろえるために重要となります。開発者間で、品質への考え方が異なることが少なくありません。
プロジェクト全体で品質を維持・向上させる意識が一貫していると、リリース後も自然と品質の維持・向上につながります。
品質向上には見える化が重要
ソフトウェア品質向上ソリューション
サービス紹介:クオリティゲート
弊社サービス、クオリティゲートについてご紹介します。
クオリティゲートとは、工程移行判定する際に品質基準を設け、品質向上を支援し、課題傾向とリスクの見える化や経営分析などの効果があります。
各開発工程の品質を見える化し、「プロセス」「プロダクト」の視点から定量的に数値化するが可能です。
クオリティゲートの特長
- 進行中のプロジェクトの品質状態を定量的に把握
- 品質指標は数値として見える化できるため、社内で共有ができる
- 開発スタイルに合った移行判定基準を設定することができる
※お気軽にご相談くださいませ。
お問い合わせは以下ボタンをクリック↓
まとめ
ソフトウェア開発におけるソフトウェア品質向上に関する取り組み、重要性についてご紹介しました。
ソフトウェア品質向上への取り組みとして、レビューを手順に沿って遵守する、ソフトウェアテストの役割の重要さを再認識して頂いたと存じます。
ソフトウェアの品質向上の考え方として、企画や計画の段階までに精度の高い要件定義を行うことが必要です。
また、更なるソフトウェア品質の向上を目指すには、ソフトウェア開発の改善を行うことで、ソフトウェア品質の向上につなげることができます。
ソフトウェア品質向上のソリューションとして、「見える化」が重要です。
弊社、株式会社QualityCubeのサービス、クオリティゲートは、工程移行判定する際に品質基準を設け、品質向上を支援し、課題傾向とリスクの見える化や経営分析が可能です。お気軽にご相談ください。
次回予告:「ソフトウェア品質管理」とは