WEBサイトなどのシステムの開発を行う際、多くの人達(また複数の会社)が協力して開発を進めることがあります。
それぞれの機能を、それぞれの担当者(会社)が開発を進め、最終的に1つのシステムを作り上げるということです。
わかりやすい例として、WEBサイトを構築する際のことを考えてみましょう。
WEBサイトを構築する作業を以下の3つに分けることとします。
- デザイン及び画面構築
- アプリケーション及びデータベース開発
- サーバ構築及びミドルウェア構築
これらの作業をそれぞれ別の人(会社)が担当をしていくイメージです。
- デザイン及び画面構築:Aさん
- アプリケーション及びデータベース開発:Bさん
- サーバ構築及びミドルウェア構築:Cさん
今回は1つの開発を複数の担当と作業分担しながら進めていくこと。
こちらについてお話をしていきます。
特に仕事であればお金が関係してくるため、この役割がとても重要になります。
当たり前ですが、自分の役割には責任をもって作業に当たらないといけませんが、逆をいうと自分の役割でない作業についてはあまり意識を行いません。
それには責任がないからです。(お金をもらってないからです。)
ただ、最終的にはシステムが1つになる場合、1つでも掛け違いが起こると、システムは動きませんし、それぞれの担当範囲のちょうど間のゾーンの取り決めを確実に行っておかねば、後々(試験フェーズなど)に大変な思いをすることになります。
そうならない為にも、この役割分担についてどのように定めていくかについてお話をしていきましょう。
各作業において役割の分担を明確にすることが重要
様々な作業が発生するシステム開発において、それぞれの作業について、それぞれ別の担当で作業を行う場合に1番気をつけなければならないこと。
それは作業分担について、作業範囲を明確にしておくことです。
この作業範囲が曖昧なまま開発を進めてしまうと、以下のような問題が発生する可能性があります。
- どちらも手を付ける想定でなかった箇所が現れ、システム全体として動作しない
- 作業範囲が曖昧なまま続けると、システムを結合する際にうまく接続できない
- 曖昧な箇所において不具合が発生した時に、どちらの責任なのかの話で揉める
従って、どこの作業が誰の担当かについては、作業開始前にしっかりと全員で合意をしておく必要があります。
特に会社が別であれば尚更です。
会社間で上記のような揉め事が発生した場合には、とても大変なことに発展しかねません。
では、この役割分担について、どのようなやり方をとる事で問題なく整理ができるかを次の項で説明していきましょう。
作業開始前にそれぞれの作業範囲に関して明確にして全員で合意しておくこと。
作業ベースによる役割分担
まずは、作業ベースで役割を決めるという考え方です。
システム開発における作業の洗い出しをおこないます。
この作業についてそれぞれ誰の担当となるかを決めていきます。
そしてこの作業一覧(役割分担付き)について、関係者全員で合意するというやり方です。
では、WEBサイトの構築を例にして確認してみましょう。
- サーバ構築及びミドルウェア構築
- サーバ設計・構築・試験:Aさん
- OSインストール・初期設計・試験:Aさん
- ミドルウェア構築・初期設定・試験:Aさん
- アプリケーション及びデータベース開発
- アプリケーション設計・構築・試験:Bさん
- データベース設計・構築・試験:Bさん
- デザイン及び画面構築
- 画面デザイン設計・作成:Cさん
- 画面モック設計・作成・試験:Cさん
ここでポイントなのは、まず初めは細かい作業で話さないことです。
最初は大枠の考え方が合っているかから確認していきましょう。
その大枠の考え方が合っている事が確認できた後に、更にブレイクダウンして細かい作業についての役割を決めていくという流れになります。
そもそも大枠の考え方がズレていたら、そこからやり直しになりますからね。
システム開発作業前に、作業ベースにてそれぞれの役割を決めて、関係者全員で合意する。
成果物を明確に定義すること
次に、担当範囲の成果物を、他の担当へ渡す場合、成果物の定義をすることです。
ここもWEBサイトの構築を例にお話していきましょう。
「デザイン及び画面構築」の作業の場合、画面デザインを作成して、画面モックの作成までが作業の範囲として考えられています。
そしてこの画面モックができたら、アプリケーション担当へその成果物を渡すという流れです。
では、この画面モック(成果物)はどのようなものになるのでしょうか。
例えば、具体的には以下のように考えます。
HTML、CSS、JS、画像ファイル
(今後の試験にて上記ファイルに問題が合った際には修正を行うこと)
上記のファイルのみでブラウザで確認した場合に全ての画面が表示されること。
ただしデータを扱う動的な箇所は動作しない(アプリケーション担当の範囲)
この様な内容を渡す方、渡される方の双方で事前に合意しておくことが大切です、
そしてこれらのファイルをアプリケーション側が受領して、アプリケーションに組み込んでいくという作業になります。
成果物を明確に定義した上で、それをシステム開発前に関係者全員で合意しておく。
まとめ
このそれぞれの作業範囲や役割分担を定めていくなかで、大切になってくるのは以下のポイントです。
- 関係者全員(特に関連機能に関係する人達)にて開発に入る前の合意
- その明確な役割分担や成果物の定義にについての文書化
これらをしっかり行うことで後々曖昧な箇所をなくしていくということになります。
但し、全て完璧に事前に準備するのは難しい場合もあります。
それは双方の調整にてその場で吸収して対応していくということも多々あります。
(そうしなければ、プロジェクト全体に影響が出て、みんなダメージを受けるからですね)
ただ、その調整や吸収についても、100%は潰すことが難しくとも、できるだけ事前に最小限に抑えておくことが大切です。
そして今回お話した内容にて役割分担を進める場合「作業ベースによる役割分担」「成果物を明確に定義すること」という方法をどちらか片方だけ行うわけではなく、両方共にしっかりと決めておくことが重要です。
今回はシステム開発の役割分担についてお話をしてきました。
内容としては以下でしたね。
どうしてもシステム開発は人とのコミュニケーションが必要です。
作業の役割分担というところにフォーカスしてそれをお話してきました。
それぞれの思わくや考え方は異なるため、しっかりと開発が始まる前に意識をあわせておくことを大切にしていきましょう。
以上です。
コメント