システム開発ではよくWBSというものを作成します。このWBSは開発作業において役立つものですが、実際にどのような用途で作成されるものなのか詳しく知らない人もいると思います。
WBSの他にガントチャートというものもあり、こちらと意味を混同して使われる場合もあります。正確にはWBSとガントチャートは違うものですが、そこにはどのような違いがあるのでしょうか。
WBSの定義とどのような用途があるかを説明していきます。
WBSとはシステム開発全体の作業を理解できる大きさまで分解したもの
WBSはWrok Breakdown Structureを略した語であり、直訳すると「作業を分解して構造化する」という意味です。
システム開発の最初の段階ではどのような作業をすればいいか、どのくらい時間がかかるかということはつかめていない状態です。システムに対する発注者の要望を満たすために必要となる作業を全て洗い出していく必要があります。
思いつくまま作業を挙げていくだけでは、作業に抜け漏れが発生して全体像は把握しづらくなります。WBSではまず大きな作業をあげてから段階的に小さな作業に細分化していきます。以下のような感じです。
まず、「プレゼンをする」という目的に対するWBSの作成を例にします。目的に対して大まかに必要となる作業として「資料作成」「発表練習」「発表準備」を挙げていきます。
大まかな作業項目を挙げたら、それらをさらに細かい作業に分解していきます。「資料作成」を完了するために必要となる「アイデアを書き出す」「構成を組み立てる」「スライドを作成する」といった作業内容を挙げていきます。最終的に数時間から数日くらいの作業単位まで分解していきます。
分解した作業は時系列順に並べてひとまとまりにしていきます。大きな作業の下に分解した作業がくるように配置していくことで、大きな作業から小さな作業に枝分かれしていく図になります。
最終目的に対して大まかな作業から細かい作業に分解していくことで、目的を達成するために必要な作業を具体的にできます。このように、WBSはシステム開発で必要になる全ての作業を理解できる大きさまで分解した図になります。
WBSの目的は全ての作業を抜け漏れなく洗い出して全体像を把握すること
WBSはシステム開発の全ての作業を細かく分解して整理した図になります。では、このWBSを作成する目的はどういったものでしょうか。
システム開発では様々な作業を実施していくことになります。多くの作業があるなかでやり忘れた作業があると後の工程で大きな手戻りが発生します。全ての作業を終わらせるまでに予定していた納期以上に時間がかかることになってしまいます。
このような問題を防ぐためには、実施する作業の全てを把握して管理する必要があります。WBSを作成することでシステム開発の全ての作業を把握することができます。
では、実際にWBSを作成することでなぜ抜け漏れなく洗い出して、作業の全体像を把握することができるのか説明していきます。
段階的に細分化することで作業の抜け漏れを防ぎやすい
WBSはシステム開発に必要な全ての作業を挙げたものです。WBSを作成する場合、主に2通りの方法があります。作業を中心に分解していくか、成果物を中心に分解していくかです。
作業中心に分解する例は図1に示したものになります。まず大きな粒度の作業として「資料作成」「発表練習」「発表準備」列挙していきます。その作業を完了するために必要な作業は何かを考えて列挙していきます。
ある作業をさらに細かい作業に分解した場合、元の作業を親、分解した作業を子という関係で呼びます。子作業を全て合わせることで親作業になります。
成果物中心の場合、最初にシステム開発で作成されるべき成果物を全て列挙します。その成果物を作成するのに必要な作業を洗い出していきます。
ある作業を実施するのに何かしらの入力が必要な場合は、その入力を作成する作業も挙げていきます。このように成果物から、実際に実施する作業順とは逆にさかのぼりながら作業を洗い出していきます。
作業中心の方法も成果物中心の方法も、どちらも成果物や親作業を達成するために必要な作業は何かということを考えて洗い出していきます。このような形で洗い出していくことで、ただ思いつくままに列挙する場合に比べて抜け漏れが発生しづらくなります。
また、洗い出した作業を親と子の関係になるように分類して時系列順に並べることで、作業の前後関係や依存関係を把握しやすくなります。
1タスク1担当者にすることで誰がやるか明確になる
システム開発は多くの人が協力しながら作業を進めていくことになります。作業を順調に進めるためには、誰がどの作業をやるのかということが明確になっている必要があります。
WBSでは作業を数時間から数日までの細かい作業に分解します。細かい単位まで作業を分解したことで、1人の担当者に作業を割り当てやすくなります。
作業を担当者に割り当てることで責任の所在が明確になります。責任の所在が不明確な場合、「誰かがやるだろうと放置された結果、誰もやっていなかった」という事態が発生する可能性があります。
担当者を割り当てるさいに注意する点があります。それは、1作業につき担当者は1人にすることです。複数人を担当者にすると、最終的に責任をもって作業を完了させるのが誰かが分からなくなります。
なお、担当者を1人にするというのは、必ず1人で作業をしなければならないということではありません。責任をもって作業を完了させる1人を決めるということです。例えば、打ち合わせは複数人で行いますが、そのような作業の場合は代表者をその作業の担当者とします。
WBSによって個人で実施する具体的な作業まで作業内容を分解していくことで、誰が責任をもって作業を完了するかを明確に決めやすくなります。各作業の責任者を明確にしておくことで作業のやり忘れを防ぐことができます。
作業を細分化することで必要な時間が見積もりやすくなる
システム開発では、全体の作業量や所要時間を見積もる必要があります。それらの見積もりをもとにシステム開発にかかる費用やいつまでに開発を完了するかという納期を決めるからです。
費用や期間の見積もりは発注者に提示するものなので、可能な限り正確に出すことが望ましいです。しかし、システム開発の初期の段階で全体の作業量や所要時間を正確に見積もるのは困難になります。
分析や設計、開発などの大まかな工程の段階では、作業が具体的になっていないので誰がどの作業をやるかも明確にできません。作業を担当する人によって作業速度に差があります。正確に作業量や時間を見積もるためには、具体的な作業内容と誰が担当するかが明確になっている必要があります。
WBSでは作業を細かい単位に分解していくことで、最小の粒度の作業単位では作業内容が具体的になってきます。作業内容が具体的になると、必要な作業量や作業にかかる所要時間が予想しやすくなります。
一つ一つの作業に担当者も割り当てられるため、担当者が作業にどのくらいの時間がかかるかを予想することで、より正確な作業時間を見積もることができます。
細かい作業一つ一つの作業時間を見積もることができれば、あとはそれを積み上げていくことで大きな工程や全体に対する作業時間の見積もりを出すことができます。
また、開発者が依頼者に対して作業時間の見積もりを提示するさい、WBSを見積もりの根拠にすることができます。大まかな工程に対する作業時間よりも、細かい作業に対する作業時間の見積もりの方が妥当かどうか判断しやすいためです。
WBSを基にして進捗管理に役立つものを作成できる
WBSの目的はシステム開発全体の作業を洗い出して全体像を把握することです。WBSは作業を関連する範囲でまとめて一覧にしたもので、それだけではスケジュールや進捗の管理はしづらいです。
システム開発では、スケジュールや進捗を管理するためにガントチャートというものを作成します。WBSを作成したからこそ、ガントチャートを作成することができます。
WBSはそれ自体も作業を洗い出して把握するという目的があります。それだけではなく、WBSにより作業を洗い出すことでシステム開発の進捗管理に役立つものを作成できるようになります。
全体の納期に影響を与えるクリティカルパス
WBSは作業を洗い出すだけではなく、前後関係や依存関係を考慮しながら時系列順に並べていきます。依存関係とは以下のようなものになります。
- Aの作業が終わらないとBの作業に進めない
- CとDの作業は並行して進められる
このような依存関係を考慮して前後関係にある作業を繋げていくと作業群ができます。この作業群で開始から終了までもっとも時間のかかりそうなものはクリティカルパスと呼ばれます。
上の図の作業間をつなぐ矢印は作業の依存関係を表しています。作業Aが終わらなければ作業B、C、Dは始めることができません。この図の作業A→B→Fの作業群がクリティカルパスになります。作業群A→DやA→C→Eが早めに終わったとしても作業群A→Bが終わらなければ最後の作業Fを終えることはできません。
このクリティカルパスの作業が遅延すると、システム開発のプロジェクト全体が遅延することになります。他の作業をいくら早く進めたとしてもこのクリティカルパスの作業時間以上に納期を早くすることはできません。
他の作業全てが問題なく予定通りに進んだとしても、クリティカルパスで遅れが発生したらプロジェクトは遅延するという結果になります。
特に、クリティカルパスの中に「依頼者からデータを受け取らないと作業が進められない」といった第三者からの影響を受ける作業がある場合などは注意が必要です。第三者の影響を受けるクリティカルパスの作業は早めに対応しないと納期の遅延に繋がります。
このようにクリティカルパスの作業の進捗は、プロジェクト全体の納期に影響を与えるので明確にしておくべきです。このクリティカルパスを発見することはWBSの目的の一つともいえます。
スケジュールや進捗を視覚的に管理できるガントチャート
ガントチャートはWBSと混同されることがよくあります。実際はガントチャートはWBSをもとに作成されたものになります。
ガントチャートは横軸に日程、縦軸に作業内容や担当者を書き込み棒グラフでスケジュールや進捗を視覚的にわかるようにした図になります。以下の図は図1のプレゼンのWBSをガントチャートで示した例になります。
一目見ただけで直感的に全体像を把握できます。スケジュールや進捗を他者に説明するときにガントチャートを使用すれば説明しやすくなります。
スケジュールを管理するさいに使用することで、自分の担当する作業がどのくらいの期間ですべきかが直感的にわかります。ある期間に自分の担当する作業が複数ある場合も気づきやすいので、無理なくスケジュールを立てることができます。
作業の進捗管理に使用する場合は、作業をした期間を塗りつぶすことで、実際に作業にかけた時間を把握することができます。スケジュールと比べて遅れているかどうかも一目でわかるので早めにフォローすることができます。
ガントチャートは専門的な知識がなくても、どの作業が遅れているかということを直感的に把握しやすいので、開発者と依頼者との打ち合わせでも使用できます。
ガントチャートを確認するさいはバッファ(余裕)がどのくらい取られているかも気にするとよいでしょう。一つ一つの作業にバッファをつけていると全体が過剰な見積もりになります。
バッファは全体で確保しておき問題が発生したときに切り崩すようにします。もし、プロジェクト全体にバッファがない場合は個別の作業ごとにつけられていないか確認すべきです。
スケジュールの練り直しを検討する節目となるマイルストーン(中間目標)
ガントチャートには作業や担当者といった情報がありますが、特に意識すべきはマイルストーンと呼ばれるものです。マイルストーンとは中間目標のことで、このタイミングで成果物を確認したり、テストや検証を行ったりすることになります。
システム開発の完了するために重要なタイミングとして、大きな作業の区切りに設置されることが多いです。マイルストーンを設置するタイミングを把握するために、WBSで段階的に作業を洗い出しておく必要があります。
クリティカルパスの作業はプロジェクト全体の遅延に影響するので、マイルストーンを意識して設置する必要があります。
マイルストーンごとに成果物の確認やテストを行い遅延が発生している場合は、スケジュールの見直しやリソースの集中などの対応をしていきます。
ガントチャートを見る際はマイルストーンがどこに設置されているかを確認しましょう。重要な作業工程や遅延すると影響が大きい部分がどこかを把握することができます。
まとめ
WBSはシステム開発の全ての作業を洗い出してシステムの全体像を把握するために作成されます。WBS自体は開発者のために作成するものであり、依頼者が確認することはあまりないでしょう。
ただ、WBSを作成する過程で全ての作業を構造化して洗い出すことで、システム開発の進捗管理に役立つクリティカルパスやガントチャート、マイルストーンを作成することができます。依頼者はWBSをもとに作成されるこれらに注意を払うべきです。
ガントチャートは直感的にスケジュールや進捗を把握しやすいので開発者から進捗報告を受けるさいに目にする機会があるでしょう。そのさいは各作業の責任者が割り当てられているか、またプロジェクト全体でバッファがきちんと取られているかを確認するとよいでしょう。
他には、クリティカルパスやマイルストーンに関する資料が作成されている場合は、システム開発全体の進捗に影響を与える部分ですので注意して確認しておくようにしましょう。スケジュールの再検討や納期の延長をするかどうか判断するタイミングになる可能性があります。
コメント