「ソフトウェア品質のホンネ」連載中!
SQiPポータルサイトでは、SQiP委員のソフトウェア品質へのその想いをコラム的に綴る
「ソフトウェア品質のホンネ」のコーナーを好評連載中です。
肩肘張らずに気軽にお読みいただける内容を掲載していきますので、お仕事の合間などに是非ご覧ください!
※本コーナーに対するご意見、ご感想がありましたら、sqip@juse.or.jpまでお寄せください。
品質管理のおはなし
日本光電工業㈱ 大野 晋
最後に、予告どおりに品質管理の話をして終わりにしようと思います。
ひとつめは「プログラムとしての間違い」です。
プログラミングは厳密な手順の定義作業とも考えられます。このため、コンピュータに与える命令はひとつのミスをすることも許されません。そこで、プログラマがミスをすることでプログラムに起因するバグが埋め込まれることになります。プログラマのミスはいろいろな場面で起きそうにも思えますが、実はミスしやすい作業とミスしにくい作業が存在します。一般的に、間違いやすいプログラム文法、例えばC言語における比較と代入の書き方のような仕様はミスを誘発させます。また、似たような領域名称は長時間のプログラム作業時に名称の混同を引き起こします。これらは例ですが、似たような罠がプログラムという作業の中に多数あるわけです。そこで、次のようなプロセスで間違いを減らすようにします。
ステップ2:プログラムを検証・テストする
ステップ3:検証・テストした結果から間違ったポイントを解析する
ステップ4:解析結果から間違いにくいプログラミングルール(コーディング規約)を作る
ステップ5:間違いやすいポイントについてプログラマを教育する(レビューや勉強会などで)
※たぶん、ステップ1に戻る
通常はこのようにして貯めこまれたノウハウを事前に組織的に間違いやすいポイントとしてまとまっていたりするので、ステップ4のコーディング規約はプログラム作業前に存在することが多いですが、本来は組織的に間違いやすいポイントを潰すために行っているものです。
以上のステップを良くみると、学校教育などで行われている学習の習熟プロセスと良く似ていることに気付くでしょう。実際、同様な学習プロセスがバグの削減においても有効なのです。そこで、このプロセスはPSP(Personal Software Process)の基本モデルとなっています。
ところで、バグに関するノウハウのまとまっていない組織で手っ取り早くステップ5を実施する方法ですが、市販のバグの百科事典のようなものを利用すると良いでしょう。例えば、バイザーの「ソフトウェアテスト技法」やケイナーの「基本から学ぶソフトウェアテスト」の巻末には一般的なバグの一覧がまとまっているので、これらを利用して勉強会を行うことでバグのパターンを事前に身につけることができます。その際、バグの一覧をただ眺めるのではなく、今までに出会った似たようなシチュエーションについて話し合えば効果が高まります。
さて、私自身の今までの経験や他の管理者との会話なども含めて考えると、プログラマのプログラミングエラーに対する学習効果は非常に高く、多くの場合、バグやシンタックスエラーを減らす取り組みを行えば、半年程度でほとんどプログラミング関連のバグやエラーを無くせるものと考えています。また、作りこんでしまった場合でも簡単な見直しで、プログラムミスの修正ができるようになります。
かつて、日本ではプログラミングツールが売れないと海外のツールベンダに嘆かれた時代がありましたが、多くの組織でこのような取り組みがされていましたし、プログラマはプログラミングミスを極限まで減らせて一人前といった風潮がありましたからニーズがなかったという印象があります。また、ほとんどの組織がプログラマ自身がテストまで行うようにしていましたから、テスト結果を自身にフィードバックしやすい環境であったのも確かです。それに、改善活動などで、自らが必要なツールを自分たちのプロセスに作りこんでいたという状況もありました。
さて、もうひとつの仕様に起因するバグについては、プログラム作業への習熟とは違ったアプローチが必要になります。
基本的には、仕様検討、仕様実装の漏れですから、いかにシステムを構成する要素(層)について必要な検討を漏らさないか、が大切になります。実は、このために、システム開発のノウハウを設計ドキュメントのテンプレート(帳票)という形で整備してきているのです。
設計ドキュメントの各項目について検討を行い、その結果を定義することでシステムの全体像を定義する作業を確実化します。
設計ドキュメント自体は過去のドキュメントをコピーして準備しても良いですが、それぞれの項目についての検討は現在構築しようとしているシステムに即して行う必要があるのです。そして、新たに必要となる仕様(システムの層)を追記し、システムの特性に合わせて割愛する仕様について割愛する旨とその理由を書き残します。
よく、ドキュメントが書けないということを聞きますが、実際にはドキュメントに要求されている仕様が理解できず、その必要性の要否判断がつかず、記載すべき内容が見当つかないということが原因となっているようです。これは指示する側にも問題があり、多くの場合、ドキュメントを書けという指示はしますが、書くべき内容や検討を行うべき仕様について作業者に教えていないことが多いからでしょう。むしろ、教える側の管理者がドキュメントの個々の項目について知らなかったり、誤った情報を覚えているといったことも多いように思います。
こうした現状に対して、アジャイル技法として、オンサイト顧客のようなプラクティスが提案されたのだと理解していますが、例え顧客であったとしても全ての仕様について明確に考慮しているとは言えないことから、万能な方法だとは思えませんし、よくひとつの仕様が他の仕様に対して関与しているケースもありますから、仕様検討の中途で実装してしまうことの無駄や危険性も考えながら適用する必要があると考えています。
最近、Wモデルとして、仕様検討時や設計作業時にテスト技術者の視点を組み入れる方法が注目されていますが、そもそも、テスト技術者が持っている視点は、システム全体を俯瞰した視点であったり、利用者、運用者としての視点や個々のプログラマの思考の弱点(よく検討漏れを起こすポイント)であったりしますから、これらが漏れなくできるのなら、別にテスト技術者が必須というわけではないと思います。逆に、テスト技術者がこうした視点を持っていないのなら、例え、独立したテスト部門を作っても、Wモデルを採用したとしても満足な結果は得られないでしょう。
また、設計ドキュメントを書かずにいきなりプログラミングを行うことがありますが、これはプログラム対象に対する習熟と作業者のモデリング能力に結果が左右されるため、ホビープログラムでは許されるかもしれませんが、仕事としてプログラムをするのであれば避けるべきだと思います。
最後に、こうしたQMS(品質管理システム)を構築してきた原動力について考えて終わりにします。
クスマノが「日本のソフトウェア戦略」というレポートや米国議会の公聴会で波紋を巻き起こしたかつての日本のソフトウェアQMSについて、そのエッセンスはハンフリーらがCMMとしてまとめています。しかし、段階的に組織レベルを向上させるとしたこのモデルが当時の日本のソフトウェア開発の現場で行われていたかというと疑問のように思えます。これは前述の保田の「ソフトウェア品質保証の考え方と実際」でもそうですが、必ずしも戦略があって、それに従って構築したというよりも、組織の構成員が自主的に積み上げていった手法の集大成という印象を受けるからです。
これには、当時、行われていたTQC運動(現在のTQM活動)が無縁ではないように思います。
TQC運動の実施下では、作業者自身にプロセスを変化させる権利が与えられています。そして、品質を向上させるという目的を達成するために、科学的に因果関係を解析しながらよりよくなるようにプロセスを作業者自身が変更していくのです。こうした学習を行い、動機付けされたチームは自主的に自らの作業の質を高めるために、より効果のある品質プロセスを追加していきます。そして、対象は自らが見出したプロセスに限らず、他者の考案した効果のありそうなプロセスの採用にまで及びます。
実際にシステムやソフトウェアを開発していくと、対象や環境など様々な要因で開発環境が変化します。変化した環境で硬直したプロセスを実施することは効果がないだけではなく、悪影響を生じることもあるのです。そうした環境変化に対して、常に日本の現場が対応できた背景には、状況に応じて柔軟に変化する現場の対応力があり、その背景にはうまく行かない原因を追求して即座にプロセスを現状に即したように変化させる現場力があったからに違いありません。
今、ソフトウェアやシステムの品質に悩む組織は、そうした現場力の構築に挑戦する必要があるのではないでしょうか?
過去のバックナンバー
- 第61回 2012年度ソフトウェア品質管理研究会(SQiP研究会) 第1回例会ルポ 一般財団法人 日本科学技術連盟 安隨 正巳
- 第60回 電脳軟件製品生産的人間術要諦(全4回の第4回) 菅野文友(法名:徳海院釈究学)
- 第59回 電脳軟件製品生産的人間術要諦(全4回の第3回) 菅野文友(法名:徳海院釈究学)
- 第58回 電脳軟件製品生産的人間術要諦(全4回の第2回) 菅野文友(法名:徳海院釈究学)
- 第57回 電脳軟件製品生産的人間術要諦(全4回の第1回) 菅野文友(法名:徳海院釈究学)
- 第56回 ユーザエクスペリエンス(UX)に取組む体制 ㈱ミツエーリンクス 金山 豊浩
- 第55回 ユーザエクスペリエンス(UX)の質を評価する ㈱ミツエーリンクス 金山 豊浩
- 第54回 ユーザエクスペリエンス(UX)をデザインする ㈱ミツエーリンクス 金山 豊浩
- 第53回 ユーザエクスペリエンス(UX)の時代に向けて ㈱ミツエーリンクス 金山 豊浩
- 第52回 SQiP研究会 成果発表会 ルポ ~Respect & Influence で学ぶ一年間~ 株式会社 小野測器 品質保証部 小田部 健 (第27年度SQiP研究会 書記)
- 第51回 ソフトウェア品質保証の温故知新 ~先達の知恵に学ぶ~ NARAコンサルティング 奈良隆正
- 第50回 品質管理のおはなし 日本光電工業㈱ 大野 晋
- 第49回 ソフトウェア品質というシステム、ソフトウェア品質を作るシステム 日本光電工業㈱ 大野 晋
- 第48回 たぶん、パラダイムのはなし 日本光電工業㈱ 大野 晋
- 第47回 システム思考とシステム工学 日本光電工業㈱ 大野 晋
- 第46回 システムとは 日本光電工業㈱ 大野 晋
- 第45回 プロフェッションとしての自覚 SQiP運営委員長 飯塚 悦功(東京大学)
- 第44回 ソフトウェア品質技術の歴史 その4 (温故知新のススメ) 富士通(株) 辰巳 敬三
- 第43回 ソフトウェア品質技術の歴史 その3 (コミュニティ) 富士通(株) 辰巳 敬三
- 第42回 ソフトウェア品質技術の歴史 その2 (日本のソフトウェア検査) 富士通(株) 辰巳 敬三
- 第41回 ソフトウェア品質技術の歴史 その1 (ソフトウェアテスト) 富士通㈱ 辰巳 敬三
- 臨時号 第5回世界ソフトウェア品質会議 開催ルポ ㈶日本科学技術連盟 安隨 正巳
- 第40回 ソフトウェア・テストエンジニア ”いろは”のおまけ ㈱ベリサーブ 佐々木 方規
- 第39回 ソフトウェア・テストエンジニア ”いろは”の”は” ㈱ベリサーブ 佐々木 方規
- 第38回 ソフトウェア・テストエンジニア ”いろは”の”ろ” ㈱ベリサーブ 佐々木 方規
- 第37回 ソフトウェア・テストエンジニア ”いろは”の”い” ㈱ベリサーブ 佐々木 方規
- 第36回 秘伝?GQMによるメトリクスの系統的定義方法の実践 その3 大阪電気通信大学 福山 峻一
- 第35回 秘伝?GQMによるメトリクスの系統的定義方法の実践 その2 大阪電気通信大学 福山 峻一
- 第34回 秘伝?GQMによるメトリクスの系統的定義手順 その1 大阪電気通信大学 福山 峻一
- 第33回 ソフトウェア品質技術者って何? その4 (株)システムSWAT 香村 求
- 第32回 ソフトウェア品質技術者って何? その3 (株)システムSWAT 香村 求
- 第31回 ソフトウェア品質技術者って何? その2 (株)システムSWAT 香村 求
- 第30回 ソフトウェア品質技術者って何? その1 (株)システムSWAT 香村 求
- 第29回 少数の原理を活用する その4(内外の原理) 富士ゼロックス(株) 秋山 浩一
- 第28回 少数の原理を活用する その3(前後の原理) 富士ゼロックス(株) 秋山 浩一
- 第27回 少数の原理を活用する その2(左右の原理) 富士ゼロックス(株) 秋山 浩一
- 第26回 少数の原理を活用する その1(上下の原理) 富士ゼロックス(株) 秋山 浩一
- 第25回 要求仕様書文章の質 その4 株式会社 プロセスネットワーク 金子龍三
- 第24回 要求仕様書文章の質 その3 株式会社 プロセスネットワーク 金子龍三
- 第23回 要求仕様書文章の質 その2 株式会社 プロセスネットワーク 金子龍三
- 第22回 要求仕様書文章の質 その1 株式会社 プロセスネットワーク 金子龍三
- 第21回 Wモデルに関する悩み相談 その4 TIS(株) 鈴木 三紀夫
- 第20回 Wモデルに関する悩み相談 その3 TIS(株) 鈴木 三紀夫
- 第19回 Wモデルに関する悩み相談 その2 TIS(株) 鈴木 三紀夫
- 第18回 Wモデルに関する悩み相談 その1 TIS(株) 鈴木 三紀夫
- 第17回 ソフトウェアテストにまつわるよくある疑問 その4 日本ヒューレット・パッカード(株) 湯本剛
- 第16回 ソフトウェアテストにまつわるよくある疑問 その3 日本ヒューレット・パッカード(株) 湯本剛
- 第15回 ソフトウェアテストにまつわるよくある疑問 その2 日本ヒューレット・パッカード(株) 湯本剛
- 第14回 ソフトウェアテストにまつわるよくある疑問 その1 日本ヒューレット・パッカード(株) 湯本剛
- 第13回 システムテストの自動化について その2 (株)OSK 小井土 亨
- 第12回 システムテストの自動化について その1 (株)OSK 小井土 亨
- 第11回 QCDのバランスって?? 日本電気(株) 誉田直美
- 第10回 こういうときどうやって分析すればいいのか教えて欲しい 日本電気(株) 誉田直美
- 第9回 データ収集は難しい?! 日本電気(株) 誉田直美
- 第8回 「ソフトウェア品質会計」という本を書きました 日本電気(株) 誉田直美
- 第7回 SQuBOK中国に渡る その4 (株)東芝 小笠原秀人
- 第6回 SQuBOK中国に渡る その3 (株)東芝 小笠原秀人
- 第5回 SQuBOK中国に渡る その2 (株)東芝 小笠原秀人
- 第4回 SQuBOK中国に渡る その1 (株)東芝 小笠原秀人
- 第3回 良いソフトウェアを作ることができる人 東京大学 飯塚悦功 (SQiPステアリング委員会 委員長)
- 第2回 本当のCMM ~故 ワッツ S. ハンフリー博士を偲んで ヤマハ(株) 小池 利和
- 第1回 「上流工程の欠陥除去率」の目標値について考える 東洋大学 野中 誠










