エンジニアをしていると、プロジェクトという言葉は日常的に使われます。プロジェクトという言葉は様々な分野・業界で使われているとても利便性の高いものです。逆に言えば、「プロジェクトという言葉は様々な意味があるため、正しく使い分けられるか否かは、エンジニアとして重要である」ということなのです。
プロジェクトとは?
本来の組織とは別に、目的を達成するために臨時で構成される組織やその業務のこと。コンピューターシステムの開発において、大規模な開発では、プロジェクトを組む場合が多い。 引用元:ASCII.jpデジタル用語辞典
つまり、ソフトウェア開発におけるプロジェクトとは、自身が所属する組織、または外部のエンジニア等複数人で構成され、特定の目的を達成するための業務を指します。
通常、内部or外部を問わずエンジニアとしてプロジェクトに参画する場合、既に計画立案済みの作業を割り当てられることになります。この割り当てられた作業を「タスク」と呼びます。
タスクとは?
プロジェクトに含まれる「タスク(Task)」とは、プロジェクトを推進する上で行われるべき「作業」を意味しています。「プロジェクトという、全体的な業務を成すために、複数の部分的なタスクがある」わけです。
昨今は、システムの高機能化(複雑化)に合わせて、作業タスクの量も膨大に膨れ上がる傾向にあります。そのため、ある一定タスクの集団を「作業フェーズ(工程)」という範囲で区分けすることが一般的になってきました。
実際の開発現場で例えると下記の関係になります。
プロジェクトとタスクの関係
- 〇〇システム開発プロジェクト
- 上流工程
- Ph.0:戦略策定
- タスク・・各フェーズ配下にも様々な「タスク」がある
- Ph.1:システム化計画
- Ph.2:要件定義
- Ph.3:基本設計
- Ph.0:戦略策定
- 下流工程
- Ph.4:詳細設計
- Ph.5:プログラミング・テスト
- Ph.6:結合テスト
- Ph.7:システムテスト
- Ph.8:業務運用
- Ph.9:総括
- 上流工程
少し紛らわしいのですが、各フェーズは「上流工程」と「下流工程」から成っています。
上流工程とは
「上流工程」とは、下記の工程までを指しています。
上流工程
- Ph.0:戦略策定
ユーザーの意思と環境認識に基づく重要なリソースの傾斜配分方法の決定 - Ph.1:システム化計画
経営戦略に基づく方向性の検討、事業戦略の検討、ITインフラの検討、計画立案 - Ph.2:要件定義
業務の分割と分担の確認、業務内容の確認、実施方法のイメージ確認 - Ph.3:基本設計
事務手順の設計、人と機械の分担検討、外部使用の検討
「下流工程」との違いは、成果物の内容が「発注者側(指示者)」の目線であるか否かの違いです。つまり「上流工程」における成果物は「発注者側」の意見を元に、仕様を書面化したものとなります。
下流工程とは
「下流工程」は、上流工程の逆で「受注者側(制作者)」目線で進めていく工程になります。
下流工程
- Ph.4:詳細設計
内部仕様の検討、危機感の分担の検討 - Ph.5:プログラミング・テスト
プログラム開発と単体テストの実施 - Ph.6:結合テスト
プログラム間(機器間)連携を検証するテストの実施 - Ph.7:システムテスト
本番環境での稼働テスト、拠点への展開、業務移行 - Ph.8:業務運用
システム及び、プロジェクトの評価、次期投資の検討
「上流工程」で作成された仕様書をインプットとして、設計書を作成していきます。「下流工程」からは「発注者側(指示者)」の意見は入りません。この段階で「発注者側(指示者)」の意見が入る様では、いつまでたっても仕様が固まらずプロジェクトは崩壊します。
プロジェクト管理
プロジェクトを成功させるためには、多くのリソースを計画的に管理し、推進する必要があります。そしてこの役割を担うのが「プロジェクトマネージャー(PM)」です。
プロジェクトの「構成要素」は、一般に「リソース」と呼ばれる「ヒト・モノ・カネ」が中心です。PMはプロジェクトにおける「構成要素(ヒト・カネ・モノ)」を全体的に管理します。
プロジェクトの規模に応じて、「PMの配下にプロジェクトリーダー(PL)」を配置し、さらにその配下へ「サブリーダー(SL)」配置することもあります。