既存システムやプログラムへの影響を洗い出したら,変更個所をドキュメントにまとめていく。決まったフォーマットは無いが,「変更個所に漏れがないか一覧できる」ことが目標である。ソフトウエア開発プロセスのコンサルタントである,システムクリエイツの清水吉男氏が考案した手法で,改造計画のまとめ方のコツを見ていこう。 清水氏は改造作業に対して,「何を変更するのか(What)」「その変更はどこにあるのか(Where)」「どのように変更するのか(How)」を表現する三つのドキュメントを作成することを勧めている(図1)。まず,変更要求や変更仕様を洗い出し「変更要求仕様書」にまとめる。ロジックの変更点だけでなく,メモリーの使用量が増えるといった,改造による変化を漏らさず書き出す。「改造にはソースコードを変えない“変更”もあり得る。変更要求仕様書には,そういったものも表現しておく」(清水氏)。
次に,それぞれの変更要求に影響を受ける,変更対象となるソースコードなどの名前を「トレーサビリティ・マトリクス」と呼ぶ表形式のドキュメントでマッピングする。変更対象の洗い出しは,UNIXのgrepコマンドなどを使い,クラス名やテーブル名でパターン検索するのが一般的だ。ただし,見つけ足りない,あるいは見つけ過ぎることがあるので,検索結果には注意したい。 清水氏の場合,トレーサビリティ・マトリクスが完成したら,それに基づいてソースコードを変更するための工数を見積もる。「どれぐらい直せばいいか全体量が見えないから,見つけたところから直したくなる。ここでしっかり見積もっておけば,後で時間が不足するようなことはない」(同氏)。 最後に,変更対象についてそれぞれ「変更設計書」を作り,具体的な変更方法をまとめる。変更設計書はソースコード上に表すのではなく,言葉で書くことがルールだ。清水氏によれば,「言葉で書けないときは,変更個所が間違っている可能性がある」という。 こうした一連の作業を,清水氏は顧客と一緒に進める。成果物である三つのドキュメントは,すべてレビュー対象である。清水氏は「処理の中でデータの名前が変わっているようなケースは,レビューで見つけてほしい。うまく見つけてもらえるように,自分が気づいたことを分かりやすく表現することが大切」と,ドキュメント作りのポイントを挙げる。 レビューの改善でバグが1/10にレビューの重要性はいまさら言うまでもないだろう。他者の目でチェックすることで,影響調査の広さ,深さの不足が補える。 住友電気工業では,実施すると決めた案件に対して,担当者が改造のための設計書を作成してレビューにかける(図2)。レビューは,「仕様」や「設計内容」から,「実装方法」「単体テスト項目」までを一気に行う。これら資料をプロジェクターで投影し,ソースコードの変更方法まで開発メンバーがレビューする。「権限管理の部分など,担当者1人では影響を見切れないところが,レビューにより明らかになってくる」(中村氏)という。
以前は,こうした形のレビューは行っていなかった。案件を振り分けられた担当者が,変更点をメモ書きする程度の準備で,ソースコードの変更に取り掛かっていた。このやり方ではバグが多かったことから,今のレビュー形式に変更。2005年,このレビュー形式を取り入れた社内申請システムは,改造案件に対するバグの発生量が従来の10分の1に減ったという。「レビューで皆に設計を見られるので,担当者は下手なものが出せない」(同氏)と,心理的効果も大きいようだ。 日本IBMの大和研究所には,改造作業自体のリスクをレビューする仕組みがある。改造に取り掛かる前に,「リスク・スコアリング」カードを使い,プログラムのサイズ(新規/追加)や複雑度といったリスク要因を4段階で評価する(図3)。
この評価作業は,担当者/プロジェクト・マネージャ/品質担当者のように,立場の異なる3人が同時に行う。「三者三様の評価を持ち寄り,その中で最もリスクが高いスコアを選ぶ。このスコアに基づいて,必要なドキュメントの分量や,テスト・スケジュールなどを決める」(日本IBM の松本氏)。 次”の改造に備える一つの改造を無事にこなしても,改造案件は次々とやってくる。次の改造に備え,改造作業のトレーサビリティ(追跡管理)を高めようという取り組みが増えてきた。 野村総合研究所では,「過去のテーマ対応結果」というドキュメントを作成し,改造作業のノウハウ共有を図っている。改造は類似するテーマが発生する可能性が高いため,同様の改造作業を効率的に進められるように備えているのである。 設計書とプログラムをリンクさせ,改造の履歴をトレースする試みもある。ジャステックは,要件定義書―設計書―プログラムを双方向でリンクする試みを始めた。住友電気工業も同様に,外部仕様書―プログラム仕様書―プログラムが,同じIDで自動的にリンクされる仕組みを整えた(図4)。外部仕様書は,ページごとに分割するツールを作り,それで管理している。
改造作業を追跡することは,次の改造作業を効率化するだけでなく,次のシステムの設計を下支えすることにつながる。積水化学工業で販売管理システムの構築などに携わってきた小笹淳二氏(経営戦略部 情報システムグループ 参事)は,「システムを5年も動かしていると,何で変えたのか理由が分からなくなってくる。稼働開始後に,どんな理由でどれだけ変えているのかをトレースして,次のシステム設計に生かすべきだ」と,トレーサビリティの必要性を語る。
|
ソフトウエア改造力 >