Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
試験では何が必要かを見極め、短時間で消化出来る方法を模索せよ
ITA情報処理システム障害事例集
~ITA各社における情報処理システムの
障害事例とそこから導かれる教訓~
障害再発防止策研究会
2014年12月24日 1.0版
事例№12345678910111213141516171819202122232425262728293031323334353637383940
安全と効率 - 流れ作業の良い面悪い面行方不明なステークスホルダー - 追加仕様が青天井に増えて
ゼロ件データチェックは、未登録状態だけでなく全削除状態でも確認すべし業務精通者のレビューは必須と心得よ。※事例19と同じ
タイトル品質作りこみのために、暗黙知や職人芸は期待しない過信は怪我の元 ① - 手順書に見えない部分あり過信は怪我の元 ② - 連携先の怪我も事前手当
負荷テストのマシンスペックは推奨環境の最低レベルで確認すべし
マニュアル作成では、細かな作業まで反映されていることを必ず確認すべし
過信は怪我の元 ③ - 記憶は不確か明記は絶対過信は怪我の元 ④ - 自己満足に陥らない。周囲の意見を大切にレビューに勝る品質向上策なし同じ構文でも環境が変われば結果は異なる機能変更は過去データへの影響を配慮せよ設計はシンプルに!過剰な品質管理は品質劣化を招くユーザ検証時の仕様変更は当たり前
ポカヨケ -ミスを誘発しない手順を、担当者の経験を考慮して文書化するオペミス撲滅 - 詳細な手順・チェックリスト、ペア作業密なコミュニケーション - 顧客満足度の高いシステム構築への鍵
遅れ始めたプロジェクトに人を投入しても遅れを拡大させるだけ自分で考える - 顧客やプライムSIerの言うことを鵜呑みしないスコープ増大 -現場当事者では気づかない場合あり。上層部の監視も重要チェックリスト - 過去に痛い目にあった経験を共有する手段
業務精通者のレビューは必須と心得よシステム運用設計は現実の業務量を想定してシミュレーションすること
試験では何が必要かを見極め、短時間で消化出来る方法を模索せよ
管理工数の十分な確保標準化は早期着手オフショア開発の注意点コスト圧迫の要因パッケージ開発の注意点体制、スキルの注意点
2重チェック、手順を駆使して作業ミスを起こさない意識を徹底すべし成果物はレビューしないと意味がない複数人の目で作業ミスを撲滅せよ安易にデータをマスクするな。本番と同等のデータを使用せよ
テストケース作成者は具体的なデータイメージを作成せよ可能な限り、本番環境と同等の環境を構築し、試験せよ
暗黙のルール - 「以前からこうだった」になっていないか
2
事例№ フェーズ1 ○ ○ ○ ○ ○ ○ ○2 ○ ○3 ○ ○4 ○ ○5 ○ ○6 本稼動 ○ ○7 開発 ○8 設計 ○9 設計 ○10 設計 ○11 設計 ○12 開発13 ○ ○ ○ ○ ○ ○14 ○ ○ ○ ○ ○15 ○ ○ ○16 ○ ○17 ○ ○ ○ ○ ○18 ○ ○ ○19 ○ ○ ○ ○ ○ ○20 ○ ○ ○ ○ ○21 ○ ○ ○ ○ ○ ○22 ○ ○ ○ ○23 ○ ○ ○ ○ ○ ○ ○ ○24 ○ ○ ○ ○ ○ ○25 運用 ○ ○ ○ ○26 運用 ○ ○ ○ ○ ○27 設計・開発 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○28 ○ ○ ○ ○ ○ ○29 ○ ○ ○ ○30 ○ ○ ○ ○ ○ ○31 ○ ○ ○ ○32 ○ ○ ○ ○ ○33 ○ ○ ○ ○ ○ ○34 ○ ○ ○35 ○ ○36 ○ ○ ○37 ○ ○ ○38 ○39 ○ ○40 ○ ○
試験時間
試験範囲
過重労働
残業
体制
オフショア開発
ネゴシエー
ション
パッケー
ジ
手作業
テストデー
タ
二重チ
ェック
クロスチ
ェック
テストケー
ス
デー
タイメー
ジ
本番環境
入力ミス
単純ミス
顧客要求
タイトル
本番デー
タ
マスクデー
タ
セルフチ
ェック
ルー
ル
作業手順
リスク分析
思い込み
流れ作業
記述漏れ
曖昧
シンプルな設計
作業員大量投入
チ
ェックリスト
ポカヨケ
ペア作業
ステー
クホルダー
管理
エンドユー
ザー
の関与
品質管理
明確化
レビ
ュー
テスト漏れ
計算精度
影響調査
指揮命令系統
役割と責任の定義
コミ
ュニケー
ション計画
エスカレー
ション
リスク管理
コミ
ュニケー
シ
ョンパス
コスト圧迫の要因パッケージ開発の注意点体制、スキルの注意点テストケース作成者は具体的なデータイメージを作成せよ
暗黙のルール - 「以前からこうだった」になっていないか
ポカヨケ -ミスを誘発しない手順を、担当者の経験を考慮して文書化する
オペミス撲滅 - 詳細な手順・チェックリスト、ペア作業密なコミュニケーション - 顧客満足度の高いシステム構築への鍵
業務精通者のレビューは必須と心得よシステム運用設計は現実の業務量を想定してシミュレーションすること
マニュアル作成では、細かな作業まで反映されていることを必ず確認すべし
ゼロ件データチェックは、未登録状態だけでなく全削除状態でも確認すべし
業務精通者のレビューは必須と心得よ。※事例19と同じ
成果物はレビューしないと意味がない複数人の目で作業ミスを撲滅せよ安易にデータをマスクするな。本番と同等のデータを使用せよ試験では何が必要かを見極め、短時間で消化出来る方法を模索せよ
前工程成果物の品質
可能な限り、本番環境と同等の環境を構築し、試験せよ2重チェック、手順を駆使して作業ミスを起こさない意識を徹底すべし
安全と効率 - 流れ作業の良い面悪い面行方不明なステークスホルダー - 追加仕様が青天井に増えて管理工数の十分な確保標準化は早期着手オフショア開発の注意点
負荷テストのマシンスペックは推奨環境の最低レベルで確認すべし
自分で考える - 顧客やプライムSIerの言うことを鵜呑みしないスコープ増大 -現場当事者では気づかない場合あり。上層部の監視も重要
チェックリスト - 過去に痛い目にあった経験を共有する手段
キーワード
遅れ始めたプロジェクトに人を投入しても遅れを拡大させるだけ
品質作りこみのために、暗黙知や職人芸は期待しない過信は怪我の元 ① - 手順書に見えない部分あり過信は怪我の元 ② - 連携先の怪我も事前手当過信は怪我の元 ③ - 記憶は不確か明記は絶対過信は怪我の元 ④ - 自己満足に陥らない。周囲の意見を大切に
レビューに勝る品質向上策なし同じ構文でも環境が変われば結果は異なる機能変更は過去データへの影響を配慮せよ設計はシンプルに!過剰な品質管理は品質劣化を招くユーザ検証時の仕様変更は当たり前
教訓の共有
成果物合意
スコー
プ管理
3
障害再発防止策研究会
システム保守で1月に1,2個の障害が出る。障害を出すメンバがある程度偏っている。
障害原因を分析してみたところ以下の2パターンとなった。①影響調査不足②設計書の精度不足(記述漏れ、曖昧)
①影響調査不足 ・要件対象の機能だけ対応後、そのままリリースしてしまい依存関係がある機能の 再コンパイルがされていないことでシステムエラーとなる。 ・改修対応中(対応期間は数カ月)に改修対象の機能で本番障害が起き、対応版 をリリースして障害は解決するが、数ヵ月後のリリース時に障害対応したものが 含まれておらず、同じ障害を発生させてしまう。 ・要件対応に乗じて同じ機能に対して軽微な改修の依頼を安易に受けてしまい データフロー上の下位の機能で障害が発生。
②設計書の精度不足 ・改ページ条件項目が曖昧な記述であったため、同一フォーマットのまま次ページが 出力されてしまう。例えば、「グループ値引き行数が10件を超えると改ページフラグ を立てる」という設計書の記述があり、製造担当はグループ値引き名でカウントを とるプログラムを作成したため、グループ値引き名を入れずにグループ値引き金額 だけ入った行がカウントされず、本来別フォーマットに切り替わるべきところが切り 替わらなかった。記述としては、必須項目であるグループ値引き金額を用いて、「グ ループ値引き金額入力行が10行を超えたら」という条件で書くべきであった。
障害をよく出す担当は、当たり前の調査ができてなかったり、成果物だけでレビューしたりして、レビューの質(指摘の内容が品質の作りこみにつながってない)が低かった。成果物のレベルを一定にするため、下記の対策を講じた。
①影響調査不足への対策 最低限の調査手順を作成し、設計レビュー時のチェックリストに追加した。 レビュー時に調査結果のないものはNGとするよう徹底した。 最低限の調査:DBオブジェクトの依存関係の調査 キーワードによる、全ソース・設計書のGREP確認 SQLの実行計画の確認
②設計書の精度不足への対策 設計レビュー時のチェック項目として、曖昧さの排除を追加した。条件分岐に使用 する項目については、特に注意するように徹底した。 条件分岐が多くなりそうなときは、マトリクス化を必須とし、パターンを明確にした。 レビューで漏れた時のことを考慮し、影響の大きい特定機能については、改修時 の必須テスト項目を作成し、実施させるようにした。 それまで別々に行っていた設計とテスト仕様書のレビューを同時に行うようにした。
上記対策をやり始めて3カ月後から、新規リリース時の障害がほぼ発生しなくなった。
事例 1
品質作りこみのために、暗黙知や職人芸は期待しない。
問題
原因
対策
4
障害再発防止策研究会
品質作りこみのために、暗黙知や職人芸は期待しない。やるべきことを明確化し、着実に実施させるべし。
教訓
5
障害再発防止策研究会
本番リース前に、確認したが誤ったバージョンの資材をリリースしようとした。本番リリース直前に再度リリース手順に沿って確認した結果、リリースするバージョンが誤っている事を発見し最新バージョンをリリースする事が出来た。
以下の要因により、バージョン誤りが発生している。・リリース準備時最新バージョンの見落とし。・持ち出し資材の確認漏れ。・持ち出し資材のバージョン確認を1人で実施。
本来リリース前に不備な部分は発覚可能な手順書となっているが、持ち出し資材の確認はダブルチェックする。対象バージョンの保管場所から最新バージョンを確認して確実にパッケージ化する。
チェックは一人で実施せずダブルチェックまたは、第三者チェックにて実施する。
問題
事例 2
過信は怪我の元 ① - 手順書に見えない部分あり。
原因
対策
教訓
6
障害再発防止策研究会
変更対象外機能の外部インターフェース項目で連携先システムが異常終了。
外部接続のインターフェイスは各機能で共通フォーマットを採用しているが、共通フォーマットを意識せず連携先で改修を行ったため発生。
※共通項目を1つの機能では全角項目、またその他の機能では半角項目の スペースとして判断していたことから発生。
1.外部接続テストのテストケース打ち合わせ時に改修対象外の機能も 異常がないかチェックする。
2.連携先システムで誤った改修がおこなわれない様、相互間での仕様確認時に共通認識をもつ。
3.原因確認の元、恒久対応の前に暫定対応など検討しシステムを稼働させる。
※注意点として連携先のシステム側でテストケースを作成している場合、 相手が作っている為、大丈夫と思い、テストケース漏れに気が付かない。
改修対象外機能でも、その旨を連携し連携先システムに問題ないか確認を実施。「・・・だろう」、「・・・はずだ」の思い込みは排除して相互の認識を合わせる。
問題
事例 3
過信は怪我の元 ② - 連携先の怪我も事前手当。
原因
対策
教訓
7
障害再発防止策研究会
事前準備したマスタ初期設定用の設定情報(適用開始日)が未来日となったまま本番環境に設定していた。しかし、本番環境で稼働する前、再チェックを実施した際、適用開始日の不備を発見し再設定を実施。
リリース日が延期になり、マスタの適用開始日が決まっていなかったため、リリース確定後設定する予定だったが、リリース日が確定されても設定情報を確認することなく、そのままとなっていた。
※事前準備したマスタ設定情報は、テストで使用した設定情報を設定したままになっていた。
従来の手順書に沿って準備はされているが、本番環境設定前に実施する必要がある場合は、漏れがない様、特記事項等の申し送り事項も明記するルールを新たに追加した。
チェックは一人で実施せずダブルチェックまたは、第三者チェックにて実施する。
問題
事例 4
過信は怪我の元 ③ - 記憶は不確か明記は絶対。
原因
対策
教訓
8
障害再発防止策研究会
オンライン画面で名称表示の要件が反映されていない事象が発生。
変更対象の調査において影響調査が不十分であった。
影響調査に当たり、変更対象を洗い出す時の検索キーワードが不足していた。洗い出した複数の検索キーワードを元に検索を行ったが、その検索キーワードから外れるものがあった。
有識者による検索キーワードの洗い出しを徹底的に実施。情報取得の為、過去発生した時の情報を累積していく。
検索キーワードの妥当性をどのように判断するかを明確にする。チェックは一人で実施せずダブルチェックまたは、第三者チェックにて実施する。
問題
事例 5
過信は怪我の元 ④ - 自己満足に陥らない。周囲の意見を大切に。
原因
対策
教訓
9
障害再発防止策研究会
金融系のWebシステムにおいて、集計用データの保存に失敗して、約2千人分(2ヶ月分)の一部のデータが消失。データ復旧の為、ユーザ(約2千人)は2ヶ月分の入力作業を再実施する事となった。
障害を発生させた要因として下記の2点が人的ミスがあとしてあげられる。 ①テスト範囲の確認を怠ったことによるテスト項目の漏れ ②日常的なカスタマイズ作業対する業務への慣れ
カスタマイズ対象箇所の機能テストを優先的、且つ重点的に行っていた事で、従来の集計機能(今回の不具合発生箇所:カスタマイズ対象外)に対するテスト作業が十分に行なわれずデグレートを発生させてしまった。また、集計機能に対してテスト作業が行われておらず、不具合が潜在していることを顧客も気が付かないまま本番運用に移行してしった。
カスタマイズ作業が短納期だった事と年1回の年次業務だった事で、開発側は前年実施したテスト仕様書をそのまま流用しテストを実施したことが障害発生に繋がった。本来、顧客側のテストとして本番に向けた運用テストが独自に実施されるはずであったが、顧客も開発側が作成したテスト仕様書を流用したことで不良箇所を発見する事が出来なかった。
今回の発生原因を踏まえ以下の対策を再発防止策として実施した。 ①フェーズ毎のレビュー実施の徹底を図った。 ②改修対象に伴い、影響範囲に対するレビューの実施を徹底した。 ③製造と単体テストは別の担当者が実施する事とした。
本カスタマイズ以外にも短納期の作業が頻発する事から、テスト作業に十分な時間を割くことが出来ない(工数をかけられない。)との意識が働き、結果的に品質の低下を招いた。
問題
事例 6
レビューに勝る品質向上策なし
原因
対策
成功 成功 失敗
一部の
データが消
10
障害再発防止策研究会
不具合発生に至った経緯を再認識することにより、事前に十分なレビューを実施することで、顧客に対する品質保証の重要性を再認識させることとした。また、製造担当者と単体テスト担当者を分けて、少なくとも1つのプログラムを2人以上の担当者が評価する機会を増やす事とした。
但し、本対策③実施の条件として、製造担当者と単体テスト担当者が、業務及び技術に対して同等のレベルを持つ必要があることも付け加える。
低予算・短納期であっても、品質保障を維持する為には意識改革とレビューは必須。
教訓
11
障害再発防止策研究会
物流系販売管理システムのコンバージョンにおいて、売上伝票の金額計算において小数点を含む計算がある場合、合計金額に誤差が発生する。
コンバージョン作業において金額計算用の変数型の使用誤りが原因。 計算に使用していたDouble型(浮動小数点数型)の精度が開発環境「Visual Basic 6.0 と Visual studio 2010」により異なる事が判明。
以下の対策を実施した。 ①誤差の許されない計算は、Double型(浮動小数点数型)を「Decimal利用」に修正。 ②移行対象の全ソースから、Double型、Single型、Double型変換のCDbl関数、 Single型変換のCSng関数を使用しているモジュールを調査し、①の対策を実施 した。
また、再発防止策として、移行手順書に本対策を追記し、周知・徹底を図った。
同じ構文であっても、開発環境により計算精度が異なる場合がある。
問題
事例 7
同じ構文でも環境が変われば結果は異なる
原因
対策
教訓
コンバージョン
旧システム Visual Basic 6.0
<売上伝票> (A*c)+(B*c)
合計金額
新システム Visual Basic .NET
合計金額に
差異が発生
<売上伝票> (A*c)+(B*c)
合計金額
12
障害再発防止策研究会
官庁系の調査システムにおいて、調査データ登録時に正しい品目データであるにもかかわらず、登録済みエラーとなり、入力できない不具合が発生した。
改修内容の精査不足が原因。 改修後の新システムでは、品目=AとBはペアで登録する仕様に変更となり、両品目がペアで存在する事を前提にプログラムを作成した。 本改修により、過去分データ(ペア登録されていないデータ)への登録処理において不整合が発生して、「登録済みエラー」となった。
機能変更時の影響範囲調査の重要性に関する再教育と他事業部への情報共有を実施した。
設計担当者は事前に改修内容が与える全ての影響を考慮する必要がある。
問題
事例 8
機能変更は過去データへの影響を配慮せよ
原因
対策
教訓
旧システム
品目A
品目B
品目A
品目B
仕様変更後
品目A
品目B
品目A
品目B
仕様変品目B
品目A
追加
できない
13
障害再発防止策研究会
顧客の要望により、汎用性を保ちつつ、個別の特殊な要件にも対応できるように設計した為、非常に複雑な仕様となり、設計のみならず、製造・テストも工数超過(赤字)が発生。
①仕様(基本設計・詳細設計)が非常に複雑で製造担当者が容易に理解できなかった。②仕様が複雑、かつ複雑なまま整合性を保てる賢い設計ができる者がいた。
再発防止策として、複雑な設計が及ぼす影響事例として社内展開した。
仕様はシンプルに設計する。シンプルにできなければ「汎用性・将来性」は捨てる事。
【設計担当】 【製造担当】
【設計担当】 【製造担当】
問題
事例 9
設計はシンプルに!
原因
対策
教訓
仕様書
機
機
機
機
機
機
機
機
機
仕様書
機
仕様書
機
仕様書
機
14
障害再発防止策研究会
詳細設計(クラス図・シーケンス図)のレビュー実施回数及びレビュー指摘対応工数が膨大となり、工数超過(赤字)が発生。更に、テストフェーズに十分な時間が掛けられず品質が劣化し、納期遅れに繋がった。
①1つの成果物に対するレビューが複数回(内部、中請、元請の3回)にわたった、 また、各レビューア毎に相反する指摘も多く、修正後、元に戻すという手戻り作業 (無駄)が多く発生した。②受注時の作業条件の確認が十分でなかった。
再発防止策として、以下の運用を社内展開した。 ①品質確保の為、時間と予算がない場合はレビューよりもテスト優先する事とする。 ②同一成果物に対するレビュー回数は、できるだけ減らす。 できれば1回以下が望ましい。 ③汎用的な指摘は規約として周知する。またレビュー対象も効果的に減らす。 ④作業条件を事前に確認した上で見積りを作成し、受注する。
社内として、再発防止策は決めたものの、顧客優先の立場で本対策を実施することは非常に困難であるのが現状。
必要以上の品質管理は品質劣化を招く。
問題
事例 10
過剰な品質管理は品質劣化を招く
原因
対策
教訓
元請先
中請先 内部
相反する指摘事項が多く
手戻り作業が増大。
テストフェーズに十分
15
障害再発防止策研究会
ユーザ検証時に大量の仕様変更が発生して、工数超過(赤字)が発生。事前「要件定義レビュー」や「基本設計レビュー」で承認を頂いていたが、ユーザ検証時に大量の仕様変更が発生。
①ユーザ検証時に仕様変更(手戻り作業)が大量に発生。 ②結局の所、エンドユーザは実際に触ってみなければわからない。 設計時の認識合わせ不足との指摘もあるが… ③ユーザ教育も仕事のうち。 ④ユーザが理解可能なドキュメントの作り方を検討する必要がある。
ユーザの理解不足が疑われる場合は、ユーザ検証を結合テストフェーズの途中に組み入れ、ユーザ検証後の手直し工数もある程度確保(スケジュール)する事。
ユーザ検証時に仕様変更が発生する事は「当たり前」の事と認識して予定を決める事。予定がタイトな場合は、他の作業を多少省く事も検討する事。
問題
事例 11
ユーザ検証時の仕様変更は当たり前
原因
対策
教訓
要件定義レ
基本設計レ
ユーザ検証
○ユーザ承認済
○ユーザ承認済
×検証NG
大量の手戻り作業が発生
16
障害再発防止策研究会
短納期・低予算の為、大量の開発要員(新人)を投入したが、結局納期遅れが発生。
①初心者大量投入により、初心者ロス×人数が発生して、作業に慣れる前に プロジェクトが終わる。 ②コミュニケーションミスやロスが大量発生。 ③初めての業務で、参照可能なサンプル(プロトタイプ)もなく、重複作業が多かった。
機能に比して短納期の商談は断る事も勇気も必要。
遅れ始めたプロジェクトに人を投入しても遅れを拡大させるだけである。(ブルックスの法則)
問題
事例 12
遅れ始めたプロジェクトに人を投入しても遅れを拡大させるだけ
原因
対策
教訓
短納期・低予算のプロジェクト
新人
新人
新人
新人
新人 新人
新人
新人
新人
新人
初心者ロス及びコミュニ
17
障害再発防止策研究会
当社は外部設計から統合テストまでを請け負ったが、想定外の作業が大量に発生。顧客からは増大した工数分の追加費用をもらうことができず、結果として予定していた利益率を大幅に下回ってしまった。
3つの原因が特定された。
1.要件定義は顧客側で終わっているという話を信じて開始したが、実際は不十分 であった。 十分な調査をしないままに見積を実施し、プロジェクトを開始してしまったことが問題。
2.見積時に成果物イメージを顧客と明確に合意できていなかったため、想定以上の 作業が発生した。
3.顧客からの要求が担当者に直接来てしまい、作業範囲や量をPMがコントロール できなかった。つまりスコープ管理と要員キャパシティ管理がうまくいかなかった。
上記原因に対して、以下の対策を行った。
1. 外部設計時に要件の確認作業を並行して行った。(結果) 要件は明確になったが、コストは回収できず、当社の利益は減少した。
2. 顧客と成果物イメージをすり合わせ、成果物を再作成した。 また成果物の顧客レビューを徹底した。(結果) 顧客の求める成果物は作成できたが、追加となったコストは回収できず、 利益は減少した。
3. 顧客に対して、当社担当者に直接に要求するのではなく、チームリーダーを 経由するように交渉した。(結果) 顧客は概ね要求に従ってくれたが、一部の顧客は、当社担当者に 直接依頼していた。
再発防止に向けて、更に以下の対策を行った。
1,2: 開始基準の充足度を測定するチェックリストを作成し、以後のプロジェクトで 展開した。(効果) 以後のプロジェクトから、準備状況が可視化され、問題やリスクを早期に発見し、 対応できるようになった。
事例 13
自分で考える - 顧客やプライムSIerの言うことを鵜呑みしない
問題
原因
対策
18
障害再発防止策研究会
3: 体制定義やコミュニケーション計画作成に関する再教育と、それらの計画を 上層部でレビューすることを徹底した。(効果) 以後のプロジェクトから、PMがコミュニケーションパスの重要性を認識し、 計画をきちんと立てるようになった。
顧客やプライムSIerの言うことを鵜呑みにせず、現物を確認し、自分達の頭で考えることが重要。
自分達の頭で考えるための仕組みとして、この会社では社員に対し、以下のようなガイドの提供と教育を行った。 ・自分達でプロセスを組み立て、Sierに不足事項を伝えるようことができるように、 開発の標準的な進め方(プロセス)とそれに基づいた標準WBSの提供 ・品質や進捗の問題を自分達で考えて分析できるように、標準的な 指標(下限、平均、上限)を提供した。
教訓
19
障害再発防止策研究会
移行フェーズにおいて必要なタスクの洗い出し、およびタスクの管理が行われず、移行後に数々の問題が起きた。そのリカバリー作業のために多くの作業が発生したが、顧客からは増大した工数分の追加費用をもらうことができず、結果として予定していた利益率を大幅に下回った。
3つの原因が特定された。
1.契約時では当社の作業スコープに移行作業が含まれていなかったが、顧客と 当社を含めた現場担当者は当社が担当すると思い込んでいて、実際に作業を 開始してしまっていた。契約上のスコープ定義が曖昧かつ現場へ徹底していな かったため、現場がスコープ変更であることを認識できなかったことが原因。
2.現場では移行に関する計画をきちんと立てないままに進めた。結果、顧客との役割 分担が不明確、コミュニケーション計画未定義、要員計画未作成による移行スキル 保有要員不足といった問題が発生した。
3.現場のメンバーの中にはリスクを認識していたものがいたが、その話は上層部 まで伝わっていなかった。
上記原因に対して、以下の対策を行った。
1.2.3 担当部長が指揮をとり、移行計画の作成と、管理を行った。(結果) 移行フェーズの終了は計画より遅れたが、顧客のサービスインには何とか 間に合った。
再発防止に向けて、更に以下の対策を行った。
1: PMへ、契約時のスコープ定義の明確化と、メンバーへの展開の必要性、 契約変更の重要性を周知した。2: スコープ変更時には、既存のプロジェクト計画を改定するか、新たなプロジェクトを 立ち上げることが必要であることをPMに周知した。 特に役割・責任、コミュニケーション計画、必要スキル計画については重点的に 説明した。3. リスク管理と監視のプロセスについて周知した。4. 役員やプロジェクト担当部長が参加するレビューの中で、作業スコープが計画通り であるか確認するようにした。
(効果)以後のプロジェクトから、大きなスコープ変更に関して上層部の承認なしに進むようなことは無くなった。
事例 14
スコープ増大 -現場当事者では気づかない場合あり。上層部の監視も
問題
原因
対策
20
障害再発防止策研究会
スコープの増大は当事者であるPMが気づかない場合もあるので、上層部はプロジェクトが契約のスコープを逸脱していないか監視することが大切。
スコープの増大を把握するために工程終了時に上層部も含めて以下のことを実施した。 ・その時点で想定される最終成果物のサイズ(プログラムステップ、 ファンクションポイントなど)と、当初の見積りで前提としていたサイズを比較する。 ・WBSのレベル1-3程度の内容と、契約書での自社の作業範囲を比較する。
教訓
21
障害再発防止策研究会
管理者向けの帳票出力時に警告が発生した。帳票自体に問題は無かったが、警告が発生したことに対し、顧客から問題視された。
警告を出す条件をテストするテストケースに漏れがあった
上記原因に対して、以下の対策を行った。
プログラムとテストケースを修正した。(結果) 当問題に関しては再発することは無くなった。
同様な問題の再発防止に向けて、更に以下の対策を行った。
テストケースのレビューを徹底するようにした。合わせて、レビューを実施する前に、レビューでの確認ポイントをチェックリスト化しておくことを徹底した。(効果) 障害発生率が全体に低下し、3か月後にはSLAを満たせるようになった。
過去に痛い目にあった経験はチェックリストに追加し、プロジェクトメンバー内で共有することが重要。
事例 15
チェックリスト - 過去に痛い目にあった経験を共有する手段
問題
原因
対策
教訓
22
障害再発防止策研究会
銀行へ送信予定だったファイルが送信されず、取引先への支払処理が一日遅れた。
2つの原因が特定された。
1.運用担当者の経験が浅かったため、ジョブスケジュール変更手順の理解が不足 していた。
2. 変更手順書の記述に不足があった。
上記原因に対して、以下の対策を行った。
1,2 昼間にジョブがリランできなかっため翌日のジョブでまとめて処理した。 ジョブスケジュールは正しい内容に修正した。(結果) 当問題に関しては再発することは無くなった。
再発防止に向けて、更に以下の対策を行った。
1. 運用担当者への再教育2. 手順書の見直し
(効果) 同様なミスは無くなった。
・ミスを誘発しない手順を考え、分かり易い手順書を作成することが重要(ポカヨケ)・経験者には当たり前なことも、初心者には分からないことがある。担当者のスキル 経験に合わせた手順書が必要。
事例 16
ポカヨケ -ミスを誘発しない手順を、担当者の経験を考慮して文書化す
問題
原因
対策
教訓
23
障害再発防止策研究会
マスターデータを更新する四半期処理の夜間バッチ処理が初めて動いたときに、作成されるべきファイルの一つが作成されなかった。しかしジョブは正常終了してしまいエラーが検知されなかった。(翌日システムオーナーがデータの誤りを見つけ、早い段階でオンラインを停止したので、影響を受けたトランザクションは3件のみで済んだ。)
2つの原因が特定された。
1. ファイルが作成されなかったのは、環境ファイルで示した出力ディレクトリーが システムテスト環境のディレクトリーのままで、本番環境用に変更されて いなかったため。
2. ジョブが正常終了してしまったのは、バッチプログラムのエラーリターンコードを シェルスクリプト側でハンドリンクしていなかったため。 これをテストするテストケースも抜けていた。
上記原因に対して、以下の対策を行った。
1. トランザクションデータと環境ファイルを修正後、該当ジョブをリランした。(結果) 正しいデータをマスターに反映し、午後にはオンラインを開放できた。 100人程度のエンドユーザーに影響が出たと思われる。
2. シェルスクリプトを修正した(結果) 当問題に関しては再発することは無くなった。
再発防止に向けて、更に以下の対策を行った。
1. 本番環境への導入手順書に、環境ファイルに対して何をチェックすべきか詳細に 記述した。また、本番環境へのリリース時には実施者とチェック者の二名の担当者 をアサインするようにした。(効果) 環境の違いに起因する障害はその後は起きていない。
事例 17
オペミス撲滅 - 詳細な手順・チェックリスト、ペア作業
問題
原因
対策
24
障害再発防止策研究会
2. シェルスクリプトに対するソースレビューやテストケースのレビューが、プログラム に対してのレビューと比較して不十分 であった。シェルスクリプトもプログラムと 同等のレビューを行うようにし、かつ、レビューの際のチェックリストには、異常系の 全ケースがハンドリングできているかの確認項目を追加した。(効果) 類似障害(プログラムのエラーが検知されない)はその後起きていない。
重要な運用作業は、手順やチェックリストを詳細化した上で、ペアで行うことでオペミスを無くす。
教訓
25
障害再発防止策研究会
当社は大手SIerの下、外部設計~結合試験までを請け負った。当社の請負作業は問題なく終了したが、その後の総合試験やUATにてエンドユーザーからの指摘事項を多数受け修正せざるを得なくなった。総合試験とUATは当社はSES契約で参加していたので追加費用はもらえたが、一部は当社の請負範囲の作業での不備とされ、その分のコストはリカバリーできず、利益が減少した。
2つの原因が特定された。
1. 当社に仕事を依頼したプライムSIerは、顧客の情報子会社とは密に仕様を 確認していたが、エンドユーザーとの仕様確認の頻度は少なかった。 つまりエンドユーザーの巻き込みが不足していた。
2. 当社に渡された要件は固まっており、変更も少なかったので、Sierは途中で 設計書のレビューの手を抜いた。しかしながら手を抜いてレビューした部分も 含め、当社の責任とされた。 (SIerのレビューは通っていたので、本来はSIerの責任のはずだが、品質が 低い設計書もあったので、当社としてはあまり強く主張できなかった。)
上記原因に対して、以下の対策を行った。
1,2 指摘された修正を行った(結果) アーキテクチャー上どうしても修正できない部分が残ったので、エンドユーザーの 不満は残った。顧客が要件変更と認めない部分については当社とSierがコスト 負担することになった。これらの交渉にも工数を要した。
再発防止に向けて、更に以下の対策を行った。
1. 当社がプライムで参加していない場合も、エンドユーザーが誰で、プライムSIerは どの程度エンドユーザーと要件を握れているかを把握しておくべきであった。 この件以後当社では、コミュニケーション計画のレビュー時に、エンドユーザーの 巻き込み度合いを報告させ、不足している場合は顧客と相談しコミュニケーションを 密にする(SIerの下の場合は、SIerに警告を発する)などの対応を促すようにした。 (効果は測定中)
2. PMに対して、プライムSIerのレビューに頼らずに当社で品質を担保するように 周知した。(効果は測定中)
事例 18
密なコミュニケーション - 顧客満足度の高いシステム構築への鍵
問題
原因
対策
26
障害再発防止策研究会
・エンドユーザーとコミュニケーションが密なほど、満足度の高いシステムが作られる・顧客やプライムSIerの言うことを鵜呑みにせず、現物を確認し、自分達の頭で 考えることが重要 。 (事例13と同じ)
教訓
27
障害再発防止策研究会
小売卸業の販売管理システムで、今まで基幹システムと別システムだった販売報奨金システムを基幹システムに組み込むことになった際に発生した問題。
組み込まれた販売報奨金システムで算出された販売報奨金の金額が、基幹の顧客管理システムの値と異なる場合がある。(必ずではない)
受注→売上、元売上→売上訂正、売上→返品等の商品状態遷移の間に、商品の価格改定があった場合に採用すべき金額が誤っていたことが原因。
・顧客システム担当者より仕様を精査頂き、状態遷移パターン毎に採用すべき 金額の仕様を確認し、その確認結果に基づいてプログラムを修正した。
・プログラム修正後、金額差異データを検出するSQLを作成し、定期的(最初は 4回/日、最終的には日次)で実行し、上記精査で漏れたパターンが無いか 監視を行った。
その結果、・販売報奨金の金額差異が無くなり、問題の現象は発生しなくなった。・金額差異の把握がユーザー指摘からシステム主導で網羅的に行えるように なった。
テスト設計書のレビューにおいてテストパターンの洗い出しが不十分であったことから、再発防止のため、その後の案件においてテスト仕様書の外部レビュー時やテストパターンの確認にはユーザー側の業務精通者に参画してもらうように依頼し、ユーザーに了承していただいた。
様々なパターン処理においてエンドユーザー担当者が全て把握できていないこともある。異なるシステムを統合する場合、双方のシステムを熟知している人間の有無を確認し、その状況に応じたレビュー、テストの体制を構築すべきである。
問題
事例 19
業務精通者のレビューは必須と心得よ。
原因
対策
教訓
28
障害再発防止策研究会
小売卸業の販売管理システムで、今まで基幹システムと別システムだった販売報奨金システムを基幹システムに組み込むことになった際に発生した問題。
販売報奨金管理の「金額確認→締処理」の業務が対象件数増大により、金額確認の作業時間が大幅に延び、締日期間内で終わらない状態になった。
新システムへの移行にあたり、営業活動で計上した販売報奨金の内容を、販売推進部門が”全て”画面で承認するという新運用を取り入れたことで、担当者の業務量が増大したたことが原因。
・販売推進部門が画面で承認する販売報奨金の種類を重要度に応じて限定し、 それ以外はシステムで自動承認することで、担当者の業務量を減らした。 (運用の変更)
・その結果、販売報奨金管理の締業務が締日期間内で終了できるようになり、 正常な業務運用状態になった。
・再発防止のため、運用仕様検討時はデータ量・業務量面から、実用可能か 否かの視点で問題ないかユーザーと確認合意するというチェック項目をレビュー チェックリストに加えることとした。
運用が現実の業務量に沿うものか否かを見極め、顧客内で妥当性や実現性の考慮が欠けていた要求であるならば、設計段階で歯止め・見直しを提案することが大事である。
問題
事例 20
システム運用設計は現実の業務量を想定してシミュレーションすること。
原因
対策
教訓
29
障害再発防止策研究会
医薬業の施設管理システムのあるサブシステムで使用している照会業務で、ある日突然、データベースを参照できないというエラー表示が出て、照会業務が出来なくなった。
他サブシステムとのI/Fに使用しているOracleDBのパスワード有効期限が切れたため、DBに接続できなくなったことが原因。
運用マニュアルに定期的なパスワード更新の作業の記載がなかったことで、運用担当者もパスワードの更新作業を失念していた。
・環境設定で新たなパスワードを設定し、DB接続、データ参照できるようにした。
・また、運用マニュアルにパスワード更新説明を追加し、関係者への周知も行った。
・再発防止のため、運用マニュアルは運用担当者と一緒に細かな作業も含め 全ての作業が網羅されているかを実施レベルでレビューすることを徹底するよう にした。
ルーチン作業については日次、週次、月次、年次それぞれに細かな作業まで洗い出してマニュアル化を図り、運用と照らし合わせてのレビュー、実地確認が必要である。
問題
事例 21
マニュアル作成では、細かな作業まで反映されていることを必ず確認すべ
原因
対策
教訓
30
障害再発防止策研究会
医薬業の施設管理システムのあるサブシステムで特定の帳票をWebで出力しようとすると、「データがありません」ではなく、スクリプトエラーになる。
実際には出力対象となるデータが存在しないため実害はなかった。
プログラムの解析を行ったところ、最初からデータが何もない場合は正常な動きで「データがありません」と表示されるものの、一度データが登録された後にそのデータを全て削除してしまった場合のみ発生する現象であることが判明した。
・ユーザーと相談した結果、滅多に使用しない帳票で有り、また発生する条件も 非常にレアであることから、今回は事象が発生したことを記録するのみとした。
・再発防止のため、今回の障害事例を社内の開発者に横展開し、このような障 害が起きないような設計、コーディングを啓蒙することとした。
データなしのチェックにおいて、最初からデータがない場合だけでなく、全て削除された場合での動作確認もすべきであった。
問題
事例 22
ゼロ件データチェックは、未登録状態だけでなく全削除状態でも確認すべ
原因
対策
教訓
31
障害再発防止策研究会
医薬業の施設管理システムのあるサブシステム一部の業務で、照会できないデータが発生したり、帳票出力されないデータが発生したりする現象がある。
プログラム及びデータの解析を行ったところ、参照している基幹システムの社員マスタで、退職した社員が物理削除されている場合に障害が発生していることが判明した。
基幹システムの社員マスタテーブル設計書には削除フラグが定義されており、そのことから社員マスタは物理削除ではなく論理削除されるデータだと認識してプログラミングされていたため当該障害が発生した。
基幹システムの職員マスタを参照しているプログラムに対し、プログラム修正を行って対応した。
再発防止のため、既存データ仕様の確認は設計書だけでなく現実のデータも確認するように開発メンバーへ事例紹介とともに周知した。
他システムとの連携がある場合は、概要設計時に連携先のシステム担当者と掘り下げたレビューを実施すべきである。
問題
事例 23
業務精通者のレビューは必須と心得よ。※事例1と同じ
原因
対策
教訓
32
障害再発防止策研究会
損保系の保険料集金管理業務での障害事例。複数個所で独自に運用しているスタンドアロンシステムで、ある箇所のユーザーで月次バッチ処理がタイムアウトのエラーとなり、業務が止まってしまった。
障害発生箇所よりデータ量の多い他の箇所では発生しておらず、それぞれの使用しているマシンスペックを確認したところ、障害発生箇所のスペックはシステム運用推奨スペック最低限のものであり、'スペックの低いPCでトランザクションのデータ量が増えたことによりタイムアウトとなっていた。
・環境設定でデータベースのタイムアウト時間を延長し、インデックスの再編成も 行い、再度処理を実行して正常終了することを確認した。
・再発防止のため、負荷テストは推奨最低スペックでの確認を行う必要があるこ とを、今回の事例紹介とともに社内に周知した。
負荷テストは、推奨環境の最低レベルでの確認が必要である。
問題
事例 24
負荷テストのマシンスペックは推奨環境の最低レベルで確認すべし。
原因
対策
教訓
33
障害再発防止策研究会
残高照会等の顧客個人情報が行員端末から閲覧出来ない状況が発生。環境を復旧するまで2時間、手作業による窓口業務が発生した。
前日分バッチ処理において、該当処理が途中で異常終了しているにも関わらず異常終了メッセージを正常と誤認して後続処理を実行した為、中途半端なデータが本番に反映されてしまった。 メッセージを誤認した原因を分析した所、当該処理は手書き修正の形で当日急遽差し込まれており、内容も誤っていた。処理手順の変更は承認部署へ通すルールとなっていたが、有名無実化しており、手順書の誤記を作業者の経験により補足するなどの対応が常態化していた。
関係者へのヒアリ・ハットを実施して類似ケースを洗出し、挙がった類似ケースと併せて手順書発行ルールの見直しを行った上、運用管理者と作業者双方に対してルール尊守すべく再教育を行った。
「顧客の言う事だから」、「以前からこうだった」という安易な思い込みや作業環境になっていないかチェック。暗黙のルールを許すな。
運用管理 承認部署 作業者
承認・差戻し 作業依頼
正規ルール
直接依頼
問題①
ルール違反
問題②
誤記は作業者の
判断で実行
問題
事例 25
暗黙のルール - 「以前からこうだった」になっていないか
原因
対策
教訓
34
障害再発防止策研究会
誤って違うデータファイルを転送して後続の本番反映処理を実行してしまった。データ復旧の為、オンライン一時停止となる。
作業手順として下記2点のミスがあった。 ①ファイル名の入力ミス ②バッチ処理実行前の確認漏れ(ファイル名、バイト数)
当該作業では規定コマンド一覧をデスクトップ上に用意し、その中から任意のコマンドをカット&ペーストして処理を実行していたが、誤って別のコマンドを選択して実行していた。 キータッチミスなどの入力間違い防止や作業効率向上のため、利用頻度の高いコマンドをカット&ペーストするだけで良いように手順を組んでいたが、作業者が処理内容を理解しなくても出来てしまう事から、明らかにおかしいファイル名やデータであっても誤りに気付けない状況を生んでしまっていた。
作業者に対して取り扱う全ての処理内容や手順について教育を実施。規定コマンド一覧に内容説明のコメントを追記。
安全と効率のバランスには十分な分析を行い、定期的チェックをする事。
問題
事例 26
安全と効率 - 流れ作業の良い面悪い面
原因
対策
教訓
35
障害再発防止策研究会
A社の次期販管システム開発案件において、度重なる納期遅延が発生。人員を大量投入するなどの原価大幅増により採算悪化。 更にC/O後も受発注の数値が実データと合致しない不具合が起こるなど、数々の品質問題が顕在化し、瑕疵責任を問われる事となった。
原因分析の結果、開発途中で以下3つの問題が起こっていた。 ①受注当初から顧客側情報システム部門の一部窓口担当としか話を詰めておらず、 ある程度出来上がった段階でテスト環境を解放した所、見直し要求が多発。 機能から画面まで全般に渡って見直しを迫られた。 ②開発途中に顧客担当者が人事異動となり、それまでの経緯記録が不十分で あった事と顧客担当者が曖昧のまま推移した為、ユーザーへのテスト環境解放後、 見直し要求が複数部署から開発部門へ直接流れ、コントロール不全に陥っていた。 ③度重なる納期遅延から納期最優先な状況が生まれ、テストが疎かになった。
日々のデータ不整合については、別途に修正処理を設ける事で暫定対応とした。開発第2フェーズの機能拡張時に本対応を行う事となる。
ステークスホルダーをきちんと見定めておくこと。顧客からの要求と仕様事項は必ず明確化して、フェース毎に関係者とチェックする事。
エンドユー
旧顧客担当
A社
情報システム部門
問題
原因
対策
教訓
事例 27
行方不明なステークスホルダー - 追加仕様が青天井に増えて
顧客担当
開発ベンダ
瑕疵責任追及
仕様確認
要件・要求
不十分なサービ
あの機能もこの
機能も必要だ!! 要件が増えて対
応しきれない!!
状況が判らない!!
異動
機能
要求
システム利用
使えない!!
納期厳守
間に合わない!!
テスト出来てない?!
納期は遅らせら
れない
発注出来ない!!
追加要求
36
障害再発防止策研究会
内部設計以降、慢性的な過重労働や、メンバーの残業が常態化した。
外部設計までは、体制も小さく、有識者が内部レビューを実施することで、品質がある程度確保できていた。 内部設計に工程が移り、新メンバーがプロジェクト構成員の大半を占めた体制で以下の状況が発生した。 ① 新メンバーの仕様や開発ルールの理解不足及び、スキル不足 ② ケアレスミスによる手戻りの多発 ③ PLが兼任している他のプロジェクトでも問題が発生 ④ 新機能に対する見積りの甘さ ⑤ 管理者や統合ベンダーとしての管理工数の見積り漏れ など
作業範囲を切り分け、仕様変更を含んで、増員後、別体制を構築し管理者を増やして対応した。コストは増えたが、残業が増えないように調整を行い、プロジェクトを運営した。又、今後の再発防止として、レビューも大事なファクターなので、次工程のメンバー増員数を考慮して、前工程の人員を配置して対応した方が望ましい。
統括ベンダー作業、突発的に発生する会議を考慮し、管理工数の割合を見直す
外部設計の工程では、要件定義の内容を理解している人が必須。その後の体制を考えて、要件定義をする人を配置
事例 28
管理工数の十分な確保
問題
原因
対策
教訓
37
障害再発防止策研究会
外部設計書のレビューは、作成者の自己チェックとリーダーによるドキュメントレビューを行った。 ドキュメントレビューに対しては、主に要件定義から参加しているメンバー(PM)が実施した為、チェックの粒度が高く、人数が少ない為、レビュー待ちによる遅延が発生した。 また、類似機能でも、記述の仕方が違うといったような指摘が多く見られた。
ドキュメントレビューは、画面レイアウトに関する指摘が、全指摘の半数以上を占めた。これは初回のユーザーレビュー時に、細かい指摘が多発し、以降も同様のレベルでのレビューが実施されたことによる。また、IE6~10を許容したが、IE10をベースに作成したため、IE6でのみ発生する画面の崩れ等が散見された。 類似機能であっても、時間の都合上、複数のメンバーが同時並行的に作業を行ってしまったことに起因した。これにより、内部設計やプログラムも違った様に作成されてしまうことが発生した。
規模が大きなプロジェクトでは、標準化が大事になってくる。その作成粒度が、まちまちかもしれないが、まず作成と客先との合意が必要になってくる。今回の画面レイアウトや類似機能の統一もこの標準化の一部で、画面レイアウトに関しては、画面仕様を標準化する資料(画面レイアウト共通仕様)の実施、及び類似機能は、1本ベースとなる設計書を作成し、それを基に他の類似機能の設計を進められるようにすれば細かいレベルの指摘が少なかったように思える。それを見越しての、要員・スケジュール調整が必要である。
規模やプロジェクトの粒度に合せて、標準化を要件定義をする段階で実施する
外部設計の工程では、要件定義の内容を理解している人が必須。その後の体制を考えて、要件定義をする人を配置
事例 29
標準化は早期着手
問題
原因
対策
教訓
38
障害再発防止策研究会
外部設計を弊社で、内部設計から結合テストをオフショアで開発を行うプロジェクトで、弊社で受入れテスト後、ユーザー受入れテストを行った。しかし、ユーザー受入テスト序盤には、外部設計不備による障害、終盤はプログラムミスによる障害が多く検出された。特に、イレギュラーケースやレアケース、実運用を想定したシナリオ等で障害が多く発生し、障害対応が回らなくなってきた。
また、結合テストフェーズで発生した障害より、ユーザー受入検証で発生した障害(要望も含まれるが)の方が多いということが、発覚した。
ユーザー受入れテストの段階で多くの不具合が発生した原因は、弊社で行った単体テストフェーズでのケース漏れや全体的にその量が少ないことにあった。また外部設計も遅延し、Fix前の外部設計を基に内部設計に着手したことも、後に仕様変更に関する指摘も多く発生する原因となった。
また、今回結合テストのテスト計画とテストパターンの洗い出しを弊社にて行いそれを基に、オフショアに結合テストケースを作成してもらったが、その結合テストのシナリオ作成にも問題があった。
序盤、ユーザー受入れテストの障害が多かったことから、要機能を結合テスト実施中に仮リリースし、ユーザー受入検証前に打鍵してもらうことにした。これにより、早い段階で指摘を上げてもらい、オフショアとの契約が残っている間に修正依頼を出すことができ、プログラミング要員がいない弊社の工数を軽減した。 また、今回結合テス仕様書作成にあたっては、要件定義・外部設計から参画している要員にて、要件定義レベルでのレビュー実施とケース作成フォロー、ポイント説明の必要性を感じた。
早い段階で実際にユーザーに現物を見てもらうことが、品質や使用性向上のためにも非常に有効
オフショアに結合テストケースを作成してもらう場合は、要件定義・外部設計から参画している要員にて、要件定義書レベルでのレビュー実施とケース作成フォロー、ポイント説明の必要
事例 30
オフショア開発の注意点
問題
原因
対策
教訓
39
障害再発防止策研究会
人の運用とシステムの係わりに関する設計の粗さから、業務運用とシステムのGAPが多く発生した。その為、運用回避可能な点については対策を依頼、運用時の手間やミスが発生しそうな内容についてはシステムにて対応とシステム側での対応が多発した。走りながら考える顧客であるため、その切り分け作業や改善作業で、コスト流失が増えていた。
開発者側の業務に関する知識が乏しく、かつその業務知識をカバーする顧客からのシステム要求が提示されませんでした。 また、顧客の業務要求の洗い出しが不十分であったことから、本番稼働までの期間が短く、納期が迫っていたため、大枠での完成を優先し、細かな要求については運用が明確になった時点で保守対応することで、客先担当者と合意しました。 このとき、担当者間では認識があっていたので、議事録など作成せず、なおかつ重要なステークフォルダーへのネゴをとっていなかった為、開発プロジェクトの範疇で対応することになり、コストが増大しました。 これも、長く付き合いのある顧客だったということと、顧客のコストの厳しさに対する意識欠如、担当者間の認識が合っていた為の詰めの甘さが原因でした。
今後、同じようなプロジェクトを未然に防ぐために、次のような再発防止策を考えました。① 顧客がするべきところと思っていたところが、していただけてなかったので、要件定義 の前に、業務定義から行う。② 見積段階で顧客の役割分担や関与具合を見極めたうえで、必要な体制、コスト算出を 行うこと。③ 担当者では金額に対する決定権がないため、決済権限のあるステークホルダーと十分な ネゴシエーションを取ること。(ゴールの明確化と対応金額の認識併せおよび記録と承認)④ システムに関与するステークホルダーがシステムに求める内容を要件として洗い出す⑤ 問題は、後になればなるほど、是正に労力がかかる。
要件定義の前に、業務定義を行う
要件定義に関わることは、決裁権限のあるステークホルダーと十分なネゴシエーションと記録・承認を行う
事例 31
コスト圧迫の要因
問題
原因
対策
教訓
40
障害再発防止策研究会
プログラム/仕様書品質が悪く、成果物が要望と異なるケースが多発。
パッケージの導入のプロジェクトで、安心感から設計開発期間が短いため、期間を優先してベンダーサイドではそのカスタマイズ作業を簡素化し行っていた。 また、現場の要員は本番稼働準備、運用支援やリハーサル立会いなどを行い、そこで発生した障害対応が中心となっていた。そのような状況からパッケージはプログラム検証のみを優先し、品質に対してはベンダーサイド任せになってしまった。
今後、同じようなプロジェクトを未然に防ぐために、次のような再発防止策を考えました。① パッケージ選定条件に、体制、品質管理基準の評価を追加する。② パッケージベンダーへのカスタマイズ要件の管理方法の徹底。
委託先の体力測定(短期対応が可能であるか、短納期となる懸念があるかなど)を実施する。
パッケージベンダーへのカスタマイズ依頼は、その管理方法を徹底すること
事例 32
パッケージ開発の注意点
問題
原因
対策
教訓
41
障害再発防止策研究会
有識者の不足、設計スキルの不足、体制デザインの失敗により、基本設計の低品質、未収束が発生。
要件定義開始時の体制上、原価管理精通者が2名しかおらず、それが業務理解の不十分が仕様・深堀りの浅さに繋がった。また、客先マネジメント体制に見合う弊社のマネジメントが不足していた。 オフショア側に対しては、弊社による技術者精査が未実施、オフショア側でのアーキテクチャーに対応できる技術者の不足、生産性の高い技術者の不足も重なった。
今後、同じようなプロジェクトを未然に防ぐために、次のような再発防止策を考えました。① ノウハウを持つ業務精通者以外のSEをプロジェクト期間中にどのような配置で どう育成していくのが近道かの検討と計画を定義し、前工程で実行する。② 次工程以降の一括請負を実施する場合、前工程の準委任のプロジェクトでも 内部レビューを実施し、体制に関するレビューを徹底する。③ マネジメントの役割を細分化し、提案時にレビューをする。④ オフショアに対しては、全要員体制のキャリアと経験年数などから、通常客先から 求められている内容や言語レベルまでも確認する。
メンバーの育成と役割の細分化は、それが必要になる前工程で実施すること
次工程以降で請負契約が発生する場合、ステコミは請負契約前の工程から参加が必要
事例 33
体制、スキルの注意点
問題
原因
対策
教訓
42
障害再発防止策研究会
とある金融システムのテスト中に入力された売上金額がデータに正しく登録されなかった。
入力状態の組み合わせで、入力項目が異なるパターンがあるが、条件の判定方法が誤っており、どんな組み合わせでも一方の項目のみでデータ登録されてしまった。
【試験で見つからなかった理由】■ テストデータ作成ミス 入力状態が異なるケースをあげているが、試験実施の際に、本番データでは有りえない値(単純なデータパッチ)で試験しており、組み合わせパターンの認識不足。
⇒テストケース作成者(有識者)と、テスト実施者(若手)が異なり、本来のテストケースの意図が伝わっていない。
上記の問題に対して以下の対策を実施した。テストケース作成者と、テスト実施者の認識が異なることを考慮し、テストケース作成者は、具体的なデータイメージ(マトリックス)を添付資料に追加した。
⇒実施者と作成者の認識ずれが減少した。
再発防止として更に以下の対策を実施した。第三者がみても誤解のないテストケースを上げることで、試験データパターンの作成漏れを防ぐこと。
テストケース作成では、自分のみ分かる表現で終わらせるのでなく、第三者がみても誤解のない記載(バリエーション)を提示する。
事例 34
テストケース作成者は具体的なデータイメージを作成せよ
問題
原因
対策
教訓詳細
43
障害再発防止策研究会
従業員就業データ取込みに想定より大幅に時間がかかってしまった。
1.性能試験時のテストデータ数と本番時のデータ数が異なっていた。
2.開発環境と本番環境で以下の点について異なっていた。 ・DBのINDEX項目
上記の問題に対して以下の対策を実施した。できるだけ本番時と同じ環境及び状況下で試験を行った。(データ数,設定値等,時間、サイクル,適用モジュール)
⇒本番を意識することで性能面の確認、及び運用することによって、発見される潜在バグの早期発見を行うことができた。
再発防止として更に以下の対策を実施した。
本番を意識しないと見落としてしまうことがあるので、本番の運用を想定した開発及びテストをする必要がある。
事例 35
可能な限り、本番環境と同等の環境を構築し、試験せよ
問題
原因
対策
詳細
44
障害再発防止策研究会
経歴処理取得手順にてデータが一部作成されなかった。
「dbuser」権限で実行しなければならない所を「root」権限で実行したため。
上記の問題に対して、以下の対策を実施本番環境と同等の環境を用意し、テストについても本番と同じデータを使用し、確認するよう徹底した
⇒同様のミスが減った
再発防止として更に以下の対策を実施した。1.手順の確認漏れを防ぐ為、チェック項目が追加された新フォーマットの 手順書を印刷して使用する。 また、使用時には実施項目ごとにチェックを入れる。
2.作業実施の限界時間に余裕があるため、後続開始時間を タスク管理表に明記した上でその時間内に必ず二重チェック者 と作業を実施する。
3.週次・月次・依頼作業と同等の意識を持って日時作業に取り組むよう 注意喚起を行う。
チェック確認時の意識の持ち方を改めて考える機会であり、再発防止については継続的な啓蒙活動が必要である。
事例 36
2重チェック、手順を駆使して作業ミスを起こさない意識を徹底すべし
問題
原因
対策
教訓詳細
45
障害再発防止策研究会
NWの通らない箇所を発見。
Comfig内容に誤りがあった。詳細設計よりConfigファイル作成時に誤入力であることが判明。
上記の問題に対して、以下の対策を実施Configのレビューが不足していたため、セルフチェック、クロスチェックを必ず実施することを明確化した。 ⇒バグ件数の減少につながった
再発防止として更に以下の対策を実施した。レビューは複数人の目を通して確認することを徹底した。
人為的なミスを回避するために運用ルールに乗せることも検討が必要。
事例 37
成果物はレビューしないと意味がない
問題
原因
対策
詳細
46
障害再発防止策研究会
ファイル登録時に必要な入力情報がなかったため、異常終了した。
直接原因バックアップファイル側のファイルは更新していたが、走行用ファイルは更新されていなかった。
真の原因作業者が行った作業の検証者がいなかったため、ファイルの更新作業は行っていてもチェックが行き渡っていなかった。
上記の問題に対して、以下の対策を実施した。バックアップ側にあったファイルを走行用ファイルにコピーし、再走行した。⇒正常終了を確認した
再発防止として更に以下の対策も実施した。1.作業者と検証者でそれぞれ確認し、作業者だけではなく、 検証者の確認も行う。
2.単純なコピー作業でも手順書を作成し、手順に沿った作業を実施する。
3.想定外の結果になった場合は上司にエスカレーションする。
⇒検証者の視点も増えたことにより、作業者だけの判断で 作業を進めることが減ったため、作業ミスの軽減につながった。
単純コピー作業においても人が実施していることを想定し、作業をチェックするよう作業者と検証者を設けること。
事例 38
複数人の目で作業ミスを撲滅せよ
問題
原因
対策
詳細
47
障害再発防止策研究会
ある公共団体のシステムである。該当者のキー情報+氏名で記録を1件に特定し、付随情報を取得するはずが複数件ヒットしてしまい、処理できずに移行ツールが異常終了してしまった。※該当者のキー情報は該当者の異動等に伴って複数レコードが存在した。
直接原因本来、キー情報の異動前後では同じ氏名が登録されるはずだが、登録する際の漢字が誤って登録されていたため、別ユーザーとして認識された。(ユーザの登録ミス)
真の原因テスト環境では本番データをユーザより借用して試験を行ったが、個人情報保護のために氏名の苗字部分をマスクしていたため検知できなかった。
上記の問題に対して、以下の対策を実施した。登録済みの氏名を正しい漢字に修正を行い、移行ツールを再走行した。
⇒移行作業ではデータ起因のトラブルがほぼなくなった。
再発防止として更に以下の対策を実施した。1.マスクデータの試験ではなく、本番データを使用した試験を行う。2.個人情報に関する問題はテスト環境の構築場所をユーザの居室内、 厳格な入退室管理にて対応。
試験に使用するデータは安易にマスクするべきではない。マスクすることがわかっていても、実際のデータを使用しての試験も行う必要がないかは確認すること。
事例 39
安易にデータをマスクするな。本番と同等のデータを使用せよ
問題
原因
対策
詳細
48
障害再発防止策研究会
プログラムから作成するCSVデータに本来は整数値で出力すべきところ小数点が含まれていた。
直接原因DBより取得したデータを格納する変数を数値型(整数)から文字列型に変更した際の考慮漏れ。(試験中のオーバーフローによるバグに対応するための修正。数値型(整数)の変数の場合は暗黙的に変換されていた。)
真の原因リリース直前で試験に避ける時間が限られていたため。※上記のオーバーフローに伴うバグ修正後の試験としてオーバーフローしない ことしか確認していなかった。
上記の問題に対して以下の対策を実施した。機械的な試験の割合を増やした。
⇒試験時間の減少、バグの検知率が上昇した。
再発防止として更に以下の対策を実施した。修正内容の確認は修正内容の確認だけでなく、バリエーションで確認する。
時間がないからといって安易に試験範囲を絞るべきではない。実施すべき試験範囲をどうすれば短時間で消化できるかを考えるべき。試験を行うには、どのように作業を行ったら良いか、最短ルートを見極め、テスト計画を立てるようにすること。
事例 40
試験では何が必要かを見極め、短時間で消化出来る方法を模索せよ
問題
対策
原因
詳細
49