TEF東海勉強会参加レポート:SWKYT(ソフトウェア危険予知トレーニング)ミニワークショップ
先々月になりますが2014年2月、静岡県静岡市でTEF東海勉強会のミニワークショップ「SWKYT(ソフトウェア危険予知トレーニング)」の企画がありましたので、在来線で名古屋から静岡県静岡市まで、鈍行列車を乗り継いて参加しました。
SWKYTとは?
- 交通KYT(危険予知トレーニング)をソフトウェアのトラブル事例に応用したもの。
なお、交通KYTは、企業の安全衛生教育の一環として行われることが多い。
→参照:本田技研工業(株)ホームページ - ヤマハ(株)中村氏が取り組まれた事例をベースにNECアクセステクニカ(株)良知氏が現場で実践された内容です。
SYKYT実施に至った背景
- 市場不具合の再発防止のため、実例を取り挙げたいが内容が生々しく、対策が打ちにくい。
- メンバーの中には、情報開示に消極的なメンバーが多く、失敗から学ぶ機会が少ない。
- 再発防止として、チェックリストを検討し、歯止めをかけるために運用するが、形骸化しやすくなかなか定着しない。
- 開発部署のコンテキストは共有しやすいが、新鮮味がないためマンネリ化しやすい。
SWKYT運営準備
- 実失敗事例を募集する。
- 実失敗事例は、各メンバーが実感する内容が多いため。
- アンチパターンといった、何に注意しますか?というよりは起こりそうなことを題材としたい。
- コンテキストを共有するため、抽象化する。
- 抽象化する理由は、同じミスはもちろんのこと、類似ミスもしないよう、想像力を働かせたいため。
- 類似した開発ドメインだと、状況がわかりやすい。
- メンバー構成
- 仕様検討担当、技術営業、開発者など
SWKYT運営の流れ
- 司会者は、お題を読み「実はこんなことがあったんだよ」と実失敗例を提示する。
もしくは、自分のグループにあった内容、自分が体験した内容に変えても良い。 - 教訓となるスローガンを参加者で考え、発表する。
- スローガンは、印象に残りやすい。
- 3点を持ち点として投票し、優勝チームを表彰と副賞を授与する。
- モチベーション維持のため。
お題(今回実施した内容)
『一部の仕様は「前のデバイス(製品)と同等」という前提で製品開発をしています。その後、起こりそうなことは何ですか? 』
- 【開発の状況等】
- 「今回初めてお付き合いするお客様から、仕事を受注しました。この後起こりそうなことは?」
- 【何が起こりそうか、どのような危険が潜んでいそうか?】
- 実はタイミングが違っていた。
- (ハードウェアの)改訂版が違っていて、ソフトウェアでバージョンチェックしていた 。
- 前開発の仕様書が無い。
- 実は変更部分が○○%であることがわかった。
- 実は、非公開機能を使用していた。
- ミドルウェアと整合がとれなかった。
- 前の製品での仕様は未完成で終結していた。
- 実はコードの○○%は使われていない。
- ○○レジスタの未定義だった部分が(知らないうちに)定義されていた。
- ハードウェア(ASICやFPGAなど)の挙動が異なっていて動作しない。
- 入力クロック信号のマージン不足など。
- コンパイラのオプションで最適化を指定したら、タイミングやメモリマップ配置が変わった。
- 仕様通りに動作するが、劇的に遅い。
- 半導体チップのバグ回避対策が不要になり、副作用として誤動作するようになった。
- 【類似するような経験はあるか、疑似して考えられることは、それはどんなこと?】
- ※2と同時に実施したため、割愛。
- 【どのようにすればよいか、実施できる対策を考えよう!】
- ハードウェア視点で変更があると考える。
- テスト項目を考える。
- テストしないのはダメ。
- 性能比較テストはやる。
- 非機能のテストケースは、表現が難しい。
- 何が良くなっているか?
- 安くしたところはないか?
- 鉛ハンダ→鉛フリーハンダに変わった。
- 材料を変えたところはないか?
- 変更を通知せよと営業に言う。
- 組織構成で言えない。
- ハードウェア設計とソフトウェアが違う。
- 情報の入手元に注意する。
【同様なミスをしないための未然防止のスローガンや心掛けること】
『ハードウェアの コストダウンは 要注意!』 『変わらないはず という思い込みが 命取り!!』 『同じだね 同じじゃないよ 変えるだよ』 『変化なし? ミクロとマクロで 疑ってね』 『双子でも 環境違えば 性格ちがう』 『変わらないのはあなただけ』 『変わらない でも電子君は 変幻自在』 『変化が 見えなければ 同等なの?』
紹介した内容は、ホワイトボードに書きながら進めました。どのような雰囲気だったか参考頂くため、内容の一部を下記画像に示します(※主催者から許諾を得ています)。
所感
参加者層は担当者/リーダ/マネージャと立場が異なっていますが全員組み込み系開発でしたので、コンテキストは共有しやすかったです。同じ時間&同じ場所でみんなと知恵を巡らせ、「問題対我々の構図」と「チームで考える」ということは、自律的かつ賢い組織へ進化するための第一歩と思いました。
また、本稿を書いているときに思い出したのですが、朝のミーティング時にインシデントレポートを紹介してメンバーと共有し、「どのようなテストを実施すれば、このバグは見つかっただろうか?」とメンバーで話し合った結果、メンバーで検出したバグから「○○な機能が怪しい、△△なパターンでテストしていないよね?」と自然に考えるメンバーが増加し、バグを検出する能力が向上していると実感しています。