プロジェクト・マネジメント概要


はじめに

現在勉強しているプロジェクト・マネジメントを自分への忘備録および後学の人のわずかな助けになればと概念をまとめました。

プロジェクトとはなにか

プロジェクトとは固有な生産品やサービスを、主に時間的制約によって決められた期間内の努力によって生み出し、設定された目標を満たし、多くの場合それによって有益な変化をもたらすもの。

特に重要なのは時間的制約です。時間的制約はプロジェクトの開始以前に明確に設定されていなければならず、多くの場合人的資源や資金などの制約よりも設定を優先されます。

プロジェクトマネジメントとは

設定された目標の達成のために発生する日常的、技術的問題を対処するために、
・計画
・組織
・意欲を起こさせること
・資源の管理
・手段
・規約
などを処理し実行することです。

規約による三すくみ

最終的な成果物の品質は時間、機能、経費の三すくみの擦りあいの中心にあり、すべての影響を受けます。それゆえに規約の管理は品質の管理にもつながります。

規約.md
     -機能 -
   /    |   \
 /   -品質-  \
/  /        \  \
時間---------経費

プロジェクト・マネジメントにおける二つのパラダイム

  • ウォーターフォール (計画優先)
  • アジャイル (反復的漸増的)

ウォーターフォール

ウォーターフォールは先ほどの三すくみのうち機能に最も焦点をあてて、最終的なディプロイにいたるまで一方通行の方法です。

プロジェクトの計画→必要条件の画定→分析→設計→コーディング→試験→ディプロイ

この方法において機能は固定のものでその達成のために費用や時間は引っ張られます。
現在ではウォーターフォールはあまり使われないようですが、公的なプロジェクトなどでは、すべての段階が機能達成にむけて満足しうるまで行われるために得られる強いガバナンスを理由にしばしば採用されるようです。

ウォーターフォールにおけるメリットとデメリット

メリット
・プロジェクト開始の時点で仕様が明白に文書化できること
・段階ごとにやらなければならないことが明白であること
・目標と求められる結果が明白であること
・小規模な開発では強力な統率力をもつこと
デメリット
・プロジェクトの最終段階にはいるまで実際のソフトウェアができないこと
・不確定要素やリスクが浮上する可能性が高いこと
・技術、仕様上の変更に弱く対応力に著しく欠けること
・求められる市場などのスコープが途中で変わるとプロジェクトの終焉にもつながること
・ソフトウェアの最終的な統合を一度に行うため作業が膨大になること

プロジェクトが失敗に終わる確率が高いため少なくとも資料に使ったhttps://explore.versionone.comのアンケートに答えた海外の企業ではほとんど使われていません。

アジャイル

アジャイルは時間に最も焦点をあてており、
プロジェクトの計画→必要条件の画定→分析→設計→コーディング→試験→ディプロイの段階を完成まで繰り返します。それぞれの段階において達成される機能は小さくその積み重ねで決められた時間内での最終的なディプロイを目指します。
アジャイルは仕様の変更に強く、問題にも比較的柔軟に対処できるため現在では支配的な手法です。

アジャイルの四大要素

  1. 繰り返し積み重ねて行う手続きと処理
  2. ソフトウェアを動かしながら包括的な文書化を行う
  3. 顧客との共同作業である
  4. 計画に沿ううえでの変更に対応する

アジャイルにおける12の指針

アジャイルを支える指針3つに分類されます。
1. ソフトウェアの定期的な送り出し
2. チームのコミュニケーション
3. デザインの秀逸性

1.1 ソフトウェアを早期から定期的に提供することで顧客を満足させることを優先する
1.2 数週間規模の小さな時間枠で動作するソフトウェアを繰り返し提供する
1.3 プロジェクトの進展度合いを動作するソフトウェアから判断する
1.4 持続的な開発を繰り返すために、依頼主、開発者、ユーザーが足並みをそろえること

2.1 営業関係者と開発者がプロジェクトを通して日々共同すること
2.2 開発チームに必要な情報を最も効率よく効果的に提供する方法は顔を突き合せた会話である
2.3 最良の構造、要望、設計は自己管理されたチームから生まれる
2.4 熱意を持った個人の集まりによってプロジェクトを進めること。彼らが仕事をすすめるために必要な環境とサポートを用意し、信頼すること
2.5 繰り返しのなかでチームはより効率的になり姿勢もまた調和していくこと

3.1 技術やデザイン面での秀逸性へ意識を向けることで対応力を伸ばすこと
3.2 簡素化が最重要、つまり未完了の作業の量を最大化すること
3.3 たとえ開発の後期に入っていても変更の要求を受け入れること。顧客の競争を有利にさせるためにアジャイルは変更を制御すること

まとめ

概要なので本当にそもそもの定義の広いところのみを書いたつもりです。
のちの投稿ではより詳しくスクラム、エクストリームプログラミングなどのアジャイル手法に焦点をあてて紹介するつもりです。