Blog

ブログ

【上流工程を目指す方必見】システム開発の流れ・種類と上流工程の職種

ITフリーランス

こんにちは!
株式会社Story’s 代表取締役の佐藤です!

前回は「【全SEが共感!】私がITフリーランスになろうと思った理由」の動画の補足として、「【まとめ】知るべきITフリーランスエンジニアの働き方5選!」を紹介しました。

システムエンジニアとしてフリーランスでの独立を目指す場合は、一般的にはシステム開発企業で基本的なプログラミングスキルを習得した後に、多くのプロジェクトで上流工程の経験を積む必要があります。

今回は、「会社員SEとフリーランスSEの仕事の違いって?」の動画の補足として、「【上流工程を目指す方必見】システム開発の種類と上流工程の職種」について紹介します。

1.システム開発の流れ・種類

(引用元:システム開発の工程・流れをプロが解説!発注者が知っておくべきポイントを紹介

システム開発は下記の①から⑥の流れになります。
①要求定義・②外部設計の工程が主に上流工程で、③内部設計・④開発・⑤テスト・⑥運用の工程が下流工程です。
上流工程の職種につきましては、「2.上流工程の職種」で紹介します。

①要求定義
②設計(外部設計)
③設計(内部設計)
④開発
⑤テスト
⑥運用・保守

システム開発の種類は主として下記の3つの開発があります。

①ウォーターフォール開発

日本で1970年代から活用されているシステム開発手法です。
ウォーターフォール(Waterfall)とは、日本語で「滝、落水」を意味します。

ウォーターフォール開発は、水が上流から下流に流れるように、決められた作業工程(要件定義・外部設計・内部設計といったシステム開発の各工程)を、上流工程(要件定義・設計)を100%完了させてから下流工程(開発・テスト)へ順に行っていく手法です。

具体的にはリリースまでの作業手順を完成させてから進めるので、計画性をもって前進できます。
計画通りに開発が進みやすいので、組み込みソフトウェアや通信システムのように、仕様変更を要しないシステムの開発に向いています。

②アジャイル開発

アメリカで誕生して、2000年代半ばに日本でも取り入れられるようになった開発手法です。
アジャイル(ajile)とは、日本語で「素早い」を意味します。
アジャイル開発はスピード重視のシステム開発に向いている手法です。


要件定義では、おおまかなシステム要件・仕様を作り、2〜3週間程度で実装できる単位に機能を分割します。
システム全体を細かい機能に分割し、優先度の高い機能から構築・リリースを繰り返していきます。

作業は「計画」→「設計」→「実装」→「テスト」の工程を反復していきます。アジャイル型開発は開発工程を小さくまとめることが出来るので、リリースまでの期間を短くすることが出来ます。
そのため、上流の工程と下流の工程の連携が一層重要となってきます。

アジャイル開発とは基本機能のみを開発して、ユーザーに使ってもらいながら改善点や追加すべき点などのレビューを集めて開発とテストを繰り返していきます。

アジャイル開発はイテレーション(一連の工程を短期間で繰り返す開発サイクル)ごとに、レビュー・フィードバックを行うので、発注側の担当者との積極的なコミュニケーションが必須です。
お客様のご要望を取り入れながら作業を反復するので、システムの品質を上げやすい手法です。

ウォーターフォール開発とは反対に、仕様変更が行われることを前提としたWebサービスやゲームのアプリなどのシステム開発に適した開発手法です。

③プロトタイピング開発

プロトタイピング(prototyping)とは、日本語で「試作」を意味します。

まず開発の早い段階で「試作品(プロトタイプ)」を完成させ、お客様のチェックの上で詳細な仕様やプログラムを肉付けする手法です。
制作されたプロトタイプをテスト・レビュー・フィードバックしながら、リリースに向けて完成度を高めていきます。
開発するシステムやプロジェクトの方針に応じて、レビューと修正を何度繰り返すのかは異なってきます。

工程はウォーターフォール型と同様ですが、開発からリリースまでの工程が「試作品の開発」→「テスト・レビュー・フィードバック」→「試作品の修正」→「本開発・リリース」となる点で異なります。

システム開発の経験が少ないお客様の中には、実現させたいシステムはあっても具体的な案が思いつかないケースがありますので、漠然とした全体像を具体的な形にさせるのに役立ちます。

試作品を提供することで可視化しやくすくなり、追加したい仕様が見つかったり漠然としていた全体像から本当に求めていた完成形をイメージしやすくなったりするので、お客様からお客様が求めている開発の完成形を提案しやすくなります。

2.上流工程の職種

上流工程に関わる職種には、主として3種類あります。

①プロジェクトマネージャー

プロジェクト全体を管理する役割を担当。
スケジュール管理や急なトラブルの調整等のプロジェクトに関するリスクをコントロールする。

②プロジェクトリーダー

プロジェクトのスケジュールを立てて計画通りにプロジェクトを進行させ、プロジェクトチームをまとめる役割を担当。
プロジェクトメンバーへの具体的な指示や関係者へのプロジェクト状況の説明等を行う。

③システムエンジニア

主としてお客様のニーズをベースに設計書を作成し、システムを開発や構築をするのに必要な情報を固める役割を担当。システム開発では、システムエンジニアが作成した設計書をベースに、プログラミングを担当するシステムエンジニアやプログラマーがプログラミングする。
また、ネットワークやハードウェア構築の際は、システムエンジニアが作成した設計書をベースに、インフラエンジニアがネットワークやハードウェアを構築する。

3.まとめ

いかがでしたでしょうか。

本記事では「【上流工程を目指す方必見】システム開発の種類と上流工程の職種」について解説しました。

会社員で活躍したい場合やITフリーランスでの独立を目指す場合は、上流工程の経験を積むことで他の方との差別化を図ることが出来るので、上流工程にチャレンジすることをオススメします。

次回は、上流工程を目指す方向けに上流工程で磨くべきスキルについて紹介します。

株式会社Story’sでは、これから上流工程を目指したい方の育成・サポートにも注力しています。
もし上流工程を目指したい方がいらっしゃいましたら、お気軽にコンタクトフォームよりお問い合わせください。

【参考資料】
https://service.shiftinc.jp/column/4898/

https://www.jbcc.co.jp/blog/column/development-upstream-process.html

https://mynavi-job20s.jp/howto/upstream_operations.html

https://tenshoku.mynavi.jp/engineer/z/dictionary/18/

https://www.sejuku.net/blog/121903

https://www.tenshoku-stories.com/se_tenshoku/about-upper-process/

https://www.rstone-jp.com/column/200228no1/

https://hnavi.co.jp/knowledge/blog/system-development-method/

https://system-kanji.com/posts/system-method

【上流工程を目指す方必見】システム開発の流れ・種類と上流工程の職種