システム開発の基本的な工程

システム開発をスムーズに進めるには工程をしっかりと踏むことが重要です。IPA(独立行政法人 情報処理推進機構)では、「ソフトウェア開発の標準プロセス」を定めており、システム開発のプロセスを標準化することで適切に作業を進められるとしています。
【参考】:ソフトウェア開発の標準プロセス IPA
ここでは、システム開発の基本的な工程についてまとめました。システム開発は次の工程に沿って行われるのが基本です。エンジニアを目指す方は、この一連の流れを覚えましょう。

要件定義
まずは要件定義を行います。顧客と打ち合わせを行い、どんなシステムが欲しいかヒアリングをします。顧客から要望を聞き出したら、それをまとめていき要件を定義します。
要件定義はシステム開発の中でも重要な工程です。なぜなら、顧客の要望と違う要件を定義してしまったら、開発がやり直しになる可能性もあるからです。そのため、顧客との打ち合わせは何度も行い、本当にこの要件で問題ないかチェックしたうえで先に進みます。
見積もり
要件定義と同時に行うものが見積もりです。開発にどの程度の予算・期間がかかるか顧客に提示する必要があります。加えて、開発の細かいスケジュールもここで組み立てる必要があります。
設計や開発、テストなど各工程に何日ぐらいかかるかを計算します。プロジェクトマネージャーなどのベテランのエンジニアなら、過去の経験などからおおよその見積もりを出せることが多いです。
外部設計
定義した要件を元に外部設計を行います。外部設計とはWebページの見た目や業務システムの操作画面など、システムの表側の設計のことです。ユーザーによって使いやすいシステムにするために必要な機能や情報は何か考え、設定書にまとめていきます。
内部設計
外部設計と同時に内部設計も行います。内部設計はプログラムの裏側の処理の設計のことです。たとえば、データベースからデータを取り出すプログラムの処理内容や、Webページに表示する情報を作成するプログラムの処理内容を設計書にまとめていきます。
開発
外部設計・内部設計が完了したら、ようやく開発作業に入ります。プログラミング言語を使ってソースコードを記述し、設計書通りにプログラムが動くようにします。これらの工程は主にプログラマーが行います。
また、単に設計書通りに動くだけでなく、処理効率やソースコードの読みやすさなども意識してプログラミングします。
単体テスト
開発が完了したらテストの工程に入ります。まずはプログラムやモジュール単体でテストを行います。設計書通りに問題なくプログラムが動くか確認します。問題のある箇所が見つかったら修正を行い、再度テストを行っていきます。
結合テスト
続いて、複数のプログラムを組み合わせてテストを行います。たとえば、2つのプログラム間で通信処理が正常に行われているか、データの受け渡しに問題がないかなどを確認します。
総合テスト
最後に、総合テストを行います。総合テストではシステム全体を通してテストを行います。実際にユーザーが使う場面を想定してテスト項目を作成し、それに沿ってテストを進めます。
リリース
無事テストが終了したらリリース作業を行います。リリース前にユーザーの環境でもシステムが問題なく動くか確認を行います。問題がなければシステムを一般公開しユーザーが使えるようにします。公開後に再度テストして問題が見つかった場合、すぐに公開を止めて修正を行えるようにしておく必要があります。
リリース後に問題がなければひとまずシステム開発作業は完了です。
運用・保守
システム開発後はシステムの運用・保守を行う必要があります。運用・保守とはシステムが安定稼働するように、メンテナンスやログの監視、OSやミドルウェアのアップデートなどを行うことです。また、障害や不具合が発生した場合に、問題のあるプログラムやサーバを特定し修正を行うのも運用・保守の業務範囲です。
運用・保守に関してはシステムを開発した企業が継続して行う場合が多いです。
システム開発の工程を知るうえで覚えておきたい略語

IT業界ではさまざまな業界用語が使われるため、用語の意味を知らないと話についていけなくなることも多くあります。そこでシステム開発の工程に関連する略語の一覧と意味をまとめました。
- SP(System Planning):企画
- RD(Requirements Definition):要件定義
- BD(Basic Design):基本設計
- DD(Detail Design):詳細設計
- ED(External Design):外部設計
- ID(Internal Design):内部設計
- PG(Programing):プログラミング
- UT(Unit Test):単体テスト
- IT(Integration Test):結合テスト
- ST(System Test):総合テスト
- OT(Operations Test):運用テスト
これらの略語の意味を覚えておくことで、社内研修時に開発工程に関する説明があった際にも話を理解しやすくなるでしょう。
ぜひ『マイナビIT エージェント』をご活用ください!
ウォーターフォール開発とは?

システム開発にはウォーターフォール開発とアジャイル開発の2種類があります。ウォーターフォール開発とは、さきほど解説した要件定義から運用・保守までの工程を上から順にこなしていく、基本的な開発手法のことです。IT企業でもっとも多く使われている開発手法です。ウォーターフォールには次のメリット・デメリットがあります。
メリット1.納期の見通しを立てやすい
ウォーターフォール開発は納期の見通しを立てやすいです。なぜなら各工程を順にこなしていくため、最初の段階で各工程の工数を割り振ることができるからです。そのため、顧客にも何日までにシステムを提出するか提示でき、納期が守れなくなる可能性が低くなります。
メリット2.予算を確保しやすい
ウォーターフォール開発は予算を確保しやすいのも特徴です。各工程の工数を割り振ることができれば、どの程度の人材が必要かどうか自ずと明らかになるからです。エンジニアの数が足りないと分かれば、事前に人材を募集したり下請け企業に開発を依頼したりすることができ、それらにかかる予算も算出できます。
デメリット1.仕様変更への柔軟性が低い
ウォーターフォール開発は仕様変更への柔軟性が低いのが難点です。開発段階で顧客から仕様変更を求められた場合、要件定義から再度やり直さなくてはいけません。ウォーターフォールでは各工程の終了時に、これで問題がないかじっくりと確認するため、仕様変更が起こった際に効率が下がってしまいます。
仕様変更が多い開発とウォーターフォールは相性が良くありません。たとえばWebアプリ開発などはユーザーの要望に基づき何度も改良を重ねる必要があるため、ウォーターフォールでは上手くいかないことも多いでしょう。
デメリット2.開発期間が長くなりやすい
ウォーターフォール開発は開発期間が長くなりやすいのも難点です。1つ1つの工程を丁寧に行うため、開発期間を長めに見積もる必要があります。スピーディーな開発が求められるシステムにもウォーターフォールは適していないと言われています。
アジャイル開発とは?

アジャイル開発とは要件定義から運用・保守までを短いスパンで何度も繰り返す開発手法です。一巡する度にシステムを顧客に確認してもらい、改善点を聞き出した後に再度要件定義から行います。何度も繰り返すことで完成度を高めていくやり方と言えます。アジャイル開発には次のメリット・デメリットがあります。
メリット1.仕様変更に対応しやすい
アジャイル開発の特徴は、仕様変更に対応しやすいことです。要件定義から運用・保守まで一巡するペースが速いため、万が一開発途中で顧客から仕様変更を要求されたとしても、少し前に戻ってやり直すだけで済むことが多いです。
そのため、アジャイル開発の場合顧客の意見をシステムに反映しやすくなり、顧客満足度を上げられるメリットがあります。仕様変更に対応しやすくするというのが、アジャイル開発の主要な目的です。
メリット2.場合によっては開発期間を短くできる
アジャイル開発なら場合によっては開発期間を短くすることが可能です。アジャイル開発では要件定義から運用・保守まで短い期間で行い顧客からチェックをもらいます。
一巡目で顧客からこれで問題ないと言われた場合、ウォーターフォールよりも大幅に開発期間が短くなります。実際は一巡目で終わることはほとんどないですが、状況に応じて開発期間を短くもできるのは大きなメリットと言えます。
デメリット1.納期や予算の見通しが立てにくい
アジャイル開発は納期や予算の見通しを立てにくいのが難点です。必要に応じて何度も開発を繰り返す手法のため、いつシステムをリリースできるか最初の段階では分かりません。また、システム開発にかかる予算も予想することが難しく、場合によっては予算がかかりすぎてしまうこともあります。
デメリット2.システムの方向性が定まらなくなることも
アジャイル開発は何度も修正を繰り返すため、システムの方向性がブレてしまうこともあります。方向性がブレてしまうと予算もかかってしまい、エンジニアの負担も大きくなります。アジャイル開発といえども、極端に修正を繰り返すのは良くない場合が多いでしょう。
エンジニア転職のご相談はぜひ
『マイナビIT エージェント』へ!
システム開発を行うエンジニアとは

システム開発では各工程に合わせてさまざまなエンジニアが業務を担当します。ここでは、簡単に各工程にいてどういった職種のエンジニアが担当するのか紹介します。また、システム開発に必要なスキルや年収についてもまとめました。
各工程を担当するエンジニア職
前屈の通りシステム開発では、要件定義から始まって運用・保守までの10の工程を行います。その中で、要件定義→見積もり→設計までの工程を「上流工程」と言い、開発から運用・保守までを「下流工程」と言います。
上流・下流に分けて、どのポジションのエンジニアが担当するのか、以下にまとめました。
「上流工程」 ・システムエンジニア ・プロジェクトリーダー ・プロジェクトマネージャー
「下流工程」 ・開発:プログラマー ・構築:データベースエンジニア、サーバーエンジニア、ネットワークエンジニア ・テスト:テストエンジニア(システムエンジニアが担当することも) ・運用・保守:オペレーションエンジニア
システム開発に必要なスキルや知識
システム開発は上流・下流に分かれているため、それぞれ求められるスキルや知識は異なりますが、共通して必要とされるものがいくつかあります。
◼︎プログラミングスキル 開発工程であるプログラミングをするのはプログラマーの役割ですが、システムの設計などプログラミング以外のフェーズにおいて基本的なプログラミング知識が必要とされるケースがあります。
◼︎コミュニケーション能力 システム開発はさまざまなエンジニアの他、クライアントも密に関わるため、円滑なコミュニケーションが必要です。どの部署においてもコミュニケーション能力は必須となるでしょう。
◼︎問題解決能力 システムを開発する上でトラブルはつきものです。エラーが生じたり急な仕様変更が発生したり、予期せぬ自体が起こることがあります。どうすれば問題を解決できるか、柔軟な対応力が求められます。
システムエンジニアの年収
ここでは、システム開発において中心となるエンジニアであるシステムエンジニアの年収を紹介します。
「マイナビエージェント 職種図鑑」での平均年収は431万円(※2024年11月執筆時点)、経済産業省2017年発表の「IT関連産業の給与等に関する実態調査結果」から近い職種の「SE・プログラマ(ソフトウェア製品の開発・実装)」を参考にすると、平均年収568万円でした。
国税庁2020年発表の「民間給与実態統計調査」における民間企業平均年収は433万円なので、システムエンジニアは平均年収と同等、もしくはそれ以上が期待できます。
基本的に、システム開発では上流工程を担当するエンジニアは年収が高い傾向にあります。まずは下流工程から担当してシステム開発の基礎を学び、さまざまな経験を経て上流工程へキャリアアップしましょう。
【参考】:マイナビエージェント 職種図鑑 ※【平均年収 調査対象者】2020年1月~2020年12月末までの間にマイナビエージェントサービスにご登録頂いた方 【参考】:IT関連産業における給与水準の実態① ~ 職種別(P7) 【参考】:民間給与実態統計調査-国税庁
システム開発の工程を知りエンジニアへの転職を目指そう

本記事ではシステム開発の工程について解説し、どのような流れでシステムが開発されているのかが分かりました。決められた工程に従って開発を進めることで、開発期間中の問題発生を防ぐことができます。
また、システム開発ではさまざまな職種のエンジニアが各工程を担当します。それぞれ求められるスキルや年収は異なり、上流工程になれば高収入を目指しやすくなります。上流工程を目指すにはキャリアアップ転職がおすすめです。
そこでぜひご活用いただきたいのがマイナビIT エージェントです。
マイナビIT エージェントは、IT・Webエンジニア向けの無料の転職⽀援サービスです。
IT・Webエンジニアの転職事情に詳しいキャリアアドバイザーが、あなたのご経験やスキルをお伺いし、転職活動のプランをご提案致します。
アドバイザーは企業側の人事担当者と直接連携を取れますので、求人票に載っていない企業情報も確認することができます。残業時間や給与面など、働き方などをしっかり確認した上で応募企業を選んでいくのが良いでしょう。
・資格やプログラミングの勉強をしているけれど、企業が求めるレベルに達しているのかわからない ・スキルアップをして市場価値を上げていける企業の選び方を知りたい ・数多くあるITエンジニアの職種の中で、自分に向いている仕事は何か知りたい
こうした悩みを抱えている方は、まずは無料登録でキャリアカウンセリングをおすすめ致します。
マイナビエージェントに無料登録して
転職サポートを受ける
その他のシステム開発関連記事
その他、システム開発に関連する内容は、下記の記事でも紹介しています。ぜひ参考にご覧ください。



編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから