エンジニアの知識

ソフトウェア開発のプロジェクトとは?

エンジニアをしていると、プロジェクトという言葉は日常的に使われます。プロジェクトという言葉は様々な分野・業界で使われているとても利便性の高いものです。逆に言えば、「プロジェクトという言葉は様々な意味があるため、正しく使い分けられるか否かは、エンジニアとして重要である」ということなのです。

プロジェクトとは?

本来の組織とは別に、目的を達成するために臨時で構成される組織やその業務のこと。コンピューターシステムの開発において、大規模な開発では、プロジェクトを組む場合が多い。 引用元:ASCII.jpデジタル用語辞典

つまり、ソフトウェア開発におけるプロジェクトとは、自身が所属する組織、または外部のエンジニア等複数人で構成され、特定の目的を達成するための業務を指します。

通常、内部or外部を問わずエンジニアとしてプロジェクトに参画する場合、既に計画立案済みの作業を割り当てられることになります。この割り当てられた作業を「タスク」と呼びます。

タスクとは?

プロジェクトに含まれる「タスク(Task)」とは、プロジェクトを推進する上で行われるべき「作業」を意味しています。「プロジェクトという、全体的な業務を成すために、複数の部分的なタスクがある」わけです。

昨今は、システムの高機能化(複雑化)に合わせて、作業タスクの量も膨大に膨れ上がる傾向にあります。そのため、ある一定タスクの集団を「作業フェーズ(工程)」という範囲で区分けすることが一般的になってきました。

実際の開発現場で例えると下記の関係になります。

プロジェクトとタスクの関係

  • 〇〇システム開発プロジェクト
    • 上流工程
      •  Ph.0:戦略策定
        • タスク・・各フェーズ配下にも様々な「タスク」がある
      • Ph.1:システム化計画
      • Ph.2:要件定義
      • Ph.3:基本設計
    • 下流工程
      • Ph.4:詳細設計
      • Ph.5:プログラミング・テスト
      • Ph.6:結合テスト
      • Ph.7:システムテスト
      • Ph.8:業務運用
    • Ph.9:総括
「Ph.」とは、Phase(工程)の略です。各フェーズ配下にも様々な「タスク」が存在するイメージとなります。

少し紛らわしいのですが、各フェーズは「上流工程」と「下流工程」から成っています。

上流工程とは

上流工程」とは、下記の工程までを指しています。

上流工程

  • Ph.0:戦略策定
    ユーザーの意思と環境認識に基づく重要なリソースの傾斜配分方法の決定
  • Ph.1:システム化計画
    経営戦略に基づく方向性の検討、事業戦略の検討、ITインフラの検討、計画立案
  • Ph.2:要件定義
    業務の分割と分担の確認、業務内容の確認、実施方法のイメージ確認
  • Ph.3:基本設計
    事務手順の設計、人と機械の分担検討、外部使用の検討

下流工程」との違いは、成果物の内容が「発注者側(指示者)」の目線であるか否かの違いです。つまり「上流工程」における成果物は「発注者側」の意見を元に、仕様を書面化したものとなります。

下流工程とは

下流工程」は、上流工程の逆で「受注者側(制作者)」目線で進めていく工程になります。

下流工程

  • Ph.4:詳細設計
    内部仕様の検討、危機感の分担の検討
  • Ph.5:プログラミング・テスト
    プログラム開発と単体テストの実施
  • Ph.6:結合テスト
    プログラム間(機器間)連携を検証するテストの実施
  • Ph.7:システムテスト
    本番環境での稼働テスト、拠点への展開、業務移行
  • Ph.8:業務運用
    システム及び、プロジェクトの評価、次期投資の検討

上流工程」で作成された仕様書をインプットとして、設計書を作成していきます。「下流工程」からは「発注者側(指示者)」の意見は入りません。この段階で「発注者側(指示者)」の意見が入る様では、いつまでたっても仕様が固まらずプロジェクトは崩壊します。

プロジェクト管理

プロジェクトを成功させるためには、多くのリソースを計画的に管理し、推進する必要があります。そしてこの役割を担うのが「プロジェクトマネージャー(PM)」です。

プロジェクトの「構成要素」は、一般に「リソース」と呼ばれる「ヒト・モノ・カネ」が中心です。PMはプロジェクトにおける「構成要素(ヒト・カネ・モノ)」を全体的に管理します。

プロジェクトの規模に応じて、「PMの配下にプロジェクトリーダー(PL)」を配置し、さらにその配下へ「サブリーダー(SL)」配置することもあります。

よく読まれている記事

1

Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロンプト画面を開いているとき、常にShellは起動している状態です。 「Shell」とは ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-エンジニアの知識