ソフトウェア品質シンポジューム2023【A2-2】

もう一段上の品質を目指して
1～テスト偏重主義からの脱却のカギは内部品質と職場環境にあり～
2023.09.07

株式会社アシスト 開発技術本部 データ活用開発部
高山 隆一 ttakayama@ashisuto.co.jp© K.K. Ashisuto要旨
不十分な設計のまま製造工程に入り、テストで品質を上げようとしても手戻りが発生するため、なかなか品質が上がらない。その結果リリース後にも不具合を起こして、多大な損害を発生してしまうプロジェクトも多く見かける。
このような状況に対して問題を提起する。テストに対する考え方を改め、「内部品質」に着目して「テスト開始時の品質」の向上を図る。それによって、手戻りなどの無駄を省いてテストの効率化を行うことで、「テスト偏重主義」からの脱却を図る。
また、品質は要員の高い意識に支えられるため、人材の育成と職場環境の改善の取り組みについても事例を加えて提言する。

ソフトウェア品質シンポジューム2023

2© K.K. Ashisuto目次
1. 問題の背景と課題認識

2. 優良事例の検証
3. テスト偏重主義から「内部品質」重視へ

4. テストに対する考え方を改める
5. 職場環境の改善

6. まとめソフトウェア品質シンポジューム2023

3© K.K. Ashisutoソフトウェア品質シンポジューム2023

1. 問題の背景と課題認識

4© K.K. Ashisutoしわ寄せによるテスト工数の増大⚫ 某プロジェクトの状況（工程別工数配分比）
概要
設計

詳細
設計

1 サンプル-１

10%

14%

4%

2 サンプル-２

10%

9%

6%

No

プロジェクト

プログラム
製造/
設計
単体テスト

結合テスト

総合テスト

受入
テスト

11%

30%

14%

7%

－16%

25%

18%

13%

2%

S後

◼ 要件を詰め切れず、ずるずるとスケジュールが遅れるのをテストで取り返えそうと考えた◼ その結果、設計工程で詰め切れないうちに、製造に入ってしまった◼ 品質を評価するための目標、指標も決めずにバグを潰すためのテストを行っていた

テスト工程の手戻りで、完了間際まで相当混乱した。他部門から支援を受けながら何とかサービスインまでこぎ着けたが、サービスイン後も不具合の発生は続いた。
ソフトウェア品質シンポジューム2023

5© K.K. Ashisutoテスト開始時の品質⚫ クオリティマトリックス
テスト開始時点におけるソフトウェアの品質

運用開始時点におけるソフトウェアの品質

貧弱

貧弱（まったくみるに耐えないということはないだろうが…）

より良質

良質（おそらく著しく改善）
出典： System Testing with an Attitude by Nathan Petschenik

ソフトウェアの品質を確保するには、「テスト開始時の品質」の確保が重要
ソフトウェア品質シンポジューム2023

6© K.K. Ashisuto課題の認識と改善施策⚫ テスト(テストという名のデバッグ)で品質を確保しようとするのか？
テストに対する考え方、取り組み方が間違っている。
◼ 設計を手抜きし、テスト工程という名のデバッグ作業にどんなに汗水を流しても、うまくいくはずがない。なぜならデバッグとは手戻り作業だから。
◼ 慢性的な長時間残業とモラルの低い職場から良い製品は生まれない。
◼

改善施策

上流工程に対する意識改善を図り、「テスト開始時の品質」を向上させる◼ 「テスト開始時の品質」を向上させることで、手戻りの無駄を省いて、テストの効率化を図り、上流工程へ振り向ける◼ 高い意識と正しい方針に基づく、充実した、やりがいのある、楽しい職場を目指す◼

ソフトウェア品質シンポジューム2023

7© K.K. Ashisutoソフトウェア品質シンポジューム2023

2. 優良事例の検証

8© K.K. Ashisuto某通信系システムのプロジェクト⚫課題
対象となったサブシステムは、基本設計時の中間レビューでの品質が悪く、このままの状況では大幅な遅延が発生して、他のサブシステムとの連携が行えずに、システム全体の進捗に影響を及ぼす恐れが出ていた。

⚫対応方針
要求機能の構造化による機能分割

手戻りさせない論理構造と物理構造を同じにする

無駄を極力省く

制御情報を管理テーブルに一元化

並行作業が出来る管理情報を外部から設定可能にする

理解性(属人化の排除)

設計書をレビュー実施できるレベルで絶対作成

テストのしやすさ

レビューは出来栄え無視で内容重視
コーディング規約や命名規約でコードの標準化

保守性の向上

コードインスペクションやウォークスルーの実施

生産性の維持/向上
ソフトウェア品質シンポジューム2023

チーム内の情報共有/コミュニケーション向上
9© K.K. Ashisuto某通信系のシステムのプロジェクト⚫実施結果

顧客や工程管理部門からのプレッシャーはあったものの、設計工程からアプリの構造を意識して、品質を作り込んでいくことが、手戻りを最小に抑え、生産性および品質向上につながり、好結果を生みだした。
ソフトウェア品質シンポジューム2023

10© K.K. Ashisuto某法人の経理システム⚫課題
高い保守性、運用性への要求⚫ 複雑な組織階層や会計ルールが存在する⚫ 組織の統廃合や勘定科目、配賦率など様々なルール変更は頻繁に発生⚫対応方針⚫ 構造化設計の技法を用いて機能の分割および各機能間の疎結合を徹底化⚫ 全てのルールをデシジョンテーブルに格納、ルールはパラメータで外部から変更可⚫ 全ての機能はデシジョンテーブルを参照して制御、運用性や保守性を重視した設計⚫ 検証用に集計前後のメモリ上のデータテーブルをスナップショットする等の機能⚫実施結果
運用工程に入ってからも、毎期のように発生する拠点の統廃合や勘定科目、配賦ルール等の様々な変更に際しては、アプリケーションの変更を行うことなく運用してきた。（16年間で帳票の日本語プリンタ対応のみ）
ソフトウェア品質シンポジューム2023

11© K.K. Ashisutoソフトウェア品質シンポジューム2023

3. テスト偏重主義から「内部品質」重視へ

12© K.K. Ashisuto

「内部品質」に着目する⚫ 「ライフサイクル」視点での品質◼
◼

「利用時の品質」に直接影響するものが「外部品質」であり、ほとんどの人が「品質」として認識するのはこれである「外部品質」に直接影響するものが「内部品質」であり、ソースコードのみならず、構造の良し悪しだとか、理解性、保守性などの仕様の良し悪しなども対象

内部品質に着目することにした
ソフトウェア品質シンポジューム2023

13© K.K. Ashisuto構造化がもたらす効果⚫ 構造の良し悪しどの構造が理解しやすい？ 管理しやすい？
構造の良し悪しは、理解のしやすさや管理の容易性以外にも、保守性の向上や誤りの気付きやすさ、テストのしやすさといった効果がある。
ソフトウェア品質シンポジューム2023

14© K.K. Ashisuto文書化（ドキュメント）がもたらす効果⚫ ドキュメントの目的
ドキュメントは検討（設計）した結果であり、ドキュメントを作ることが設計でない。
効果⚫ 厳密に定義/文書化するからレビュー等が行え、誤りの早期発見が可能になる⚫ 文書化することで、他人への理解が深まり、引継や保守工程を容易にする（属人化・硬直化の回避）⚫ テスト項目やテストの観点を抽出しやすい⚫ テストの不具合を設計レベルで気付きやすい
ソフトウェア品質シンポジューム2023

15© K.K. Ashisuto保守性向上への考慮⚫ ソフトウェアはリリースして終わりではない
エンタープライズシステムの「大規模で複雑」な要件と、ビジネスが求める「変更容易性」という要件は相容れない？

設計時点で変更が入りやすい箇所を特定し、そこを変更を受け入れやすいアーキテクチャにしておく- 定数の外部化- デシジョンテーブルやRBMSの採用- プログラミング言語やプラットフォームの変更- オブジェクト指向（継承や多相性の実装）

保守性の向上はテストの容易性に直結する- マイクロサービスのように小さい単位に分割
ソフトウェア品質シンポジューム2023

16© K.K. Ashisutoテスト偏重主義からの脱却⚫ 内部品質向上の効果
属人化・硬直化の回避

誤りの気付きやすさ

内部品質の向上• 階層構造• 文書化• 保守性 など

テスト要件の抽出
テストのしやすさ

変更容易性
理解のし易さ早期発見・早期摘出

ソフトウェア品質シンポジューム2023

ビジネスに対するアプリケーションの価値向上

17

テスト開始前の品質向上によるテストの効率および質が向上© K.K. Ashisutoソフトウェア品質シンポジューム2023

4. テストに対する考え方を改める

18© K.K. Ashisutoテストだけでは高い品質は実現できない⚫ テストの位置づけ
ソフトウェアのテストの目的はバグを見つけることであり、バグの見つからないテストは失敗である
G.J. Myers, ほか:ソフトウェア・テストの技法(第2版)
勘違いして伝わっているソフトウェアの確からしさの確信を増すことである
Myersの呪縛からの解放が必要である

玉井哲雄, 松田茂広, 三嶋良武: ソフトウェアのテスト技法

西 康晴: 不具合の分析とフィードバックによるテストの設計, JaSST03予稿集

誤りの発見から品質評価へ

テストは、ソフトウェアの誤りを発見するという観点だけでなく、ソフトウェアの品質について確認・評価し、品質を保証するという役割を持つ
ソフトウェア品質シンポジューム2023

19© K.K. Ashisutoテストの効率化⚫ 「内部品質」への取り組みでテスト作業自体の効率化
高まる
品質への要求

コスト削減

納期短縮

テストの効率化
テスト開始時の品質
ソフトウェア品質シンポジューム2023

ツールの活用20© K.K. Ashisutoソフトウェア品質シンポジューム2023

5. 職場環境の改善

21© K.K. Ashisuto品質は要員の高い意識に支えられている
品質≒顧客満足と考えるなら、慢性的な長時間残業とモラルの低い職場から品質の良い製品は生まれない。

「品質を保証するぞ」という組織としての強い覚悟
JaSST2006 保田 勝通氏（つくば国際大学）⚫人材の育成• プロセスや技法を高めても、それを実施するのは人である• 組織が系統的に人材の育成に力を入れていくべきである⚫環境の改善• 気力を充実させ、作業に集中できる環境を作ること
ソフトウェア品質シンポジューム2023

22© K.K. Ashisuto人材育成と組織の文化⚫ 人材育成の取り組み
プロセスや技法を高めても、それを実施するのは人である。長期的に継続的に品質を高めるには組織が系統的に人材の育成に力を入れていくべきである。
JaSST2006 保田 勝通氏（つくば国際大学）◼習慣化教育ちょっとした不注意を減らすだけでもテストの効率は向上（コーディングルールやコードチェックなど）◼日常業務教育
日常業務として、不具合票の記載、再発防止策の検討から作業手順（標準）の整備/更新など◼技術教育
先輩社員が講師として、プログラミングやプログラム設計の基本を教育。中堅には将来を見据えて、見積りや品質管理、協力会社の対応なども業務を通じて教育。

◼自己研鑽
資格取得の奨励だけでなく、社外セミナーや社外の研究会等への参加を後押しするために、マネージャー陣は計画的な作業の進め方や業務の調整に理解を示すよう心がける。
ソフトウェア品質シンポジューム2023

23© K.K. Ashisuto人材育成と組織の文化⚫ 組織の文化水準
達成感を味わえる、チームワークのよい楽しい職場から、良いソフトウェア
JaSST2006 保田 勝通氏（つくば国際大学）
は生まれる。
◼開示性(Openness)
問題を抱え込まず、早期にチームで共有して、原因究明と解決策の検討にあたるだけでなく、再発防止策まで引き出させる。このことが最終的に生産性の向上につながっていくため、普段から対面で口頭によるミーティングを重視。

◼誠実性(Honesty)
レビューには積極的に参加し、メンバーのスキル状況の把握とともに、必ずコメントをすることでこちらの思いを伝えるようにする。また、褒めることを忘れないよう心がける。

◼進取性(Learning)
新しい技法やツールについては、余裕のある限りチャレンジさせて、その結果をチーム内に共有する。これによってメンバーの向上心やモチベーションの維持（息抜き）を図る。
ソフトウェア品質シンポジューム2023

24© K.K. Ashisutoソフトウェア品質シンポジューム2023

6. まとめ25© K.K. Ashisuto振り返り⚫ 問題意識と対策方針
テストに対する考え方、取り組み方が間違っている。
◼ 設計を手抜きし、テスト工程という名のデバッグ作業にどんなに汗水を流しても、うまくいくはずがない。なぜならデバッグとは手戻り作業だから。
◼ 慢性的な長時間残業とモラルの低い職場から良い製品は生まれない。
◼

「内部品質」に着目、テスト偏重主義から脱却して、「テスト開始時の品質」を向上◼ 「テスト開始時の品質」を向上させることで、手戻りの無駄を省いて、テストの効率化を図り、上流工程へ振り向ける◼ 高い意識と正しい方針に基づく、充実した、やりがいのある、楽しい職場を目指す◼

テスト偏重主義からの脱却のカギは内部品質と職場環境にあり
ソフトウェア品質シンポジューム2023

26© K.K. Ashisutoおわりに⚫ 本論の目指す効果
内部品質の向上
要員のモチベーション

テスト効率向上

一段上の品質ソフトウェア品質シンポジューム2023

27© K.K. Ashisuto※発表者の発言内容は、個人の経験に基づくものであり、必ずしも所属する組織の公式見解ではありません。
ソフトウェア品質シンポジューム2023

28© K.K. Ashisutoソフトウェア品質シンポジューム2023

29© K.K. Ashisutoしわ寄せによるテスト工数の増大⚫ 前フェーズ以前の欠陥がもたらす手戻り除去コスト
前フェーズ以前の手戻りの除去コストが、製造フェーズ以降で爆発的に増えていき、テスト工程以降にしわ寄せが来ている。

出典:日経コンピュータ(1998.9.28)の記事をもとに作成ソフトウェア品質シンポジューム2023

30© K.K. Ashisutoなぜ内部品質なのか⚫ どちらがあるべき姿？
◼内部品質 < 外部品質
ほとんどの欠陥の検出と関連する品質活動は外部的、あるいは機能的品質を中心に組み込まれている。
結果として『テスト偏重主義』の品質活動となっている。

◼内部品質 <> 外部品質
内部品質（構造的品質）問題の発見と是正を最優先することにより、ビジネスに対するアプリケーションの価値を高めることができる。
『ソフトウェア品質の経済的側面』Capers Jones, Olivier Bonsignour著より抄訳

ソフトウェア品質シンポジューム2023

31© K.K. Ashisuto韓国製パッケージの日本語バージョン検証プロジェクト⚫課題α版（不具合多発）β版作成（検証強化を依頼）

β版（状況変わらず）

リリースの目途が立たない

ソフトウェア輸出
メントリング事業⚫対応方針◎コミュニケーションの問題• メールや文書での情報交換◎受入検査の不具合管理フローの見直し• ビデオ会議による対面での判定会議• 情報共有と相互認識の上で対応を決定◎品質に関する考え方の違い◎品質やテストに関するレクチャー◎改善要望の出し方◎平文から図表やデシジョンテーブル• 受入検査の観点を明確に示す

ソフトウェア品質シンポジューム2023

32© K.K. Ashisuto韓国製パッケージの日本語バージョン検証プロジェクト⚫ 実施結果

不具合の原因分析が習慣づけられ、再発防止のため外部品質だけでなく内部品質も重視した、テストプロセスの改善や教育の甲斐もあって製品の品質改善がみられるようになった。その結果、良い製品を出したいというメンバーのモチベーション・アップにつながり、バージョンアップのたびに不良の件数が激減していった。
ソフトウェア品質シンポジューム2023

33© K.K. Ashisuto