- 1. システム開発とは顧客の悩みを解決する一つの手段
- 2. システム開発のフローは5つのフェーズに分けられる
- 3. システム開発のフローを具体的に解説
- 4. システム開発で用いられる2つのモデルを解説
- 5. システム開発を担う職種紹介
- 6. 新規採用者が担当するシステム開発のフローを解説
- 7. システム開発に携わる際の注意点
- 8. まとめ
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
1. システム開発とは顧客の悩みを解決する一つの手段
システム開発とは、企業やクライアント・顧客が抱える不満や悩みに対して、IT技術を駆使して解決に導くための仕組みづくりを指します。
-
・既存システムでは解決できない悩み
・新しい事業を構築するためのサービス開発
・既存事業の業務効率化やコスト削減を目的とするもの
システム開発の目的はさまざまで、言語化できているニーズだけでなく、潜在的なニーズも引き出したうえで、課題を解決できるサービスを提供するのがシステム開発の業務です。
顧客の悩みや不満を解消するにあたって、必ずしも新たなシステムを開発する必要はなく、既存のシステムを改修すればよい場合もあるでしょう。
解決すべき課題を明確にして、顧客の予算や納期なども考慮した最適なシステム開発が求められるのです。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
2. システム開発のフローは5つのフェーズに分けられる
一口にシステム開発といってもフローは複数にわかれ、規模の大小によって開発にかかる期間も異なります。
どのようなシステム開発をするにしても、開発フローは大きく5つのフェーズに分けられます。
-
・要件定義
・設計
・開発
・テスト
・運用・保守
開発フローは川の流れに例えられることが多く、要件定義に近いほど上流工程と呼ばれ、運用・保守に近いほど下流工程という表現をするため覚えておきましょう。
料理のレシピや家の設計図を作成するのと同様、システムを開発するための設計図を作成して完成を目指すものと捉えると、全体像をイメージしやすいはずです。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
3. システム開発のフローを具体的に解説
システム開発のフローを順番に解説します。
先ほどは5つのフェーズに分かれる旨を紹介しましたが、以下では9つのステップで業務内容を解説しています。具体的な業務内容や区分けに関しては、開発するシステムや企業の形態などによっても異なるため、参考程度としてください。
要件定義
システム開発で最初に行うのが要件定義です。要件定義とは「何のためのシステムを作るのか」を明確にする作業といえます。
クライアントが抱える悩みは「既存システムが使いにくいから改修したい」「新たなサービスを提供したい」など、抽象的であることがほとんどです。
方向性が不明瞭なままでは、クライアントのニーズを満たせるシステムの開発はできません。そのため、要件定義によってクライアントが抱える問題を見つけ出し、解決方法を提示するのです。
ただし、予算や開発までの期間を踏まえた最適な落とし所を常に考える必要もあり、条件に折り合いがつかないと、要件定義の段階でプロジェクトが終了するケースもあります。
そのため、要件定義はシステム開発者側にとって最初の関門といえます。
基本設計
要件定義を済ませたら、基本設計の工程に移行します。基本設計では、クライアントにシステムの完成予定図を示すことが目的の一つです。
基本設計をもとに、クライアントと具体的な仕様の詳細を詰めていく作業を行います。
-
・こんな使い方をしたい
・表示させる情報は△△△△としてほしい
・この機能はなくてもよい
基本設計の際、ヒアリングの詰めが甘いと開発段階でクライアントから仕様の不足や設計の誤りを指摘される可能性もあり、システム開発に甚大な影響を及ぼす可能性があります。
基本設計をもとに具体的な仕様を細かくヒアリングして、認識の齟齬が起きないようにすることが大切です。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
詳細設計
基本設計を踏まえて、開発者向けの資料である詳細設計を行います。
家づくりにおける設計図に該当し、プログラミングの方法や実装する機能など、事細かに定義していきます。設計内容に曖昧さが残るとバグが発生する原因になるため、誰が見ても同じ成果物ができあがるような明確な資料作成が欠かせません。
また、詳細設計で作成した資料は、開発後の保守・運用の際にも参照されることが多いため、開発フェーズに限らず長期的に用いられる資料を詳細設計で作成することを覚えておきましょう。
開発
詳細設計をもとに、いよいよ開発フェーズに移行します。
詳細設計に基づいてプログラミングして開発を進めますが、企業の形態によっては開発工程を外注するケースも多いです。
なお、ITやシステム開発業界ならではの特徴として、多重の下請け企業が存在する点が挙げられます。大手システム開発会社が設計を担当し、開発業務を下請け企業に発注し、受注した一次請け企業が開発業務の一部をさらに下請けに発注するケースも多いです。
企業によって設計から開発まで社内で一貫している場合もありますが、就職先を検討する際はメインとなる担当業務が何であるか確認してみてください。
関連記事:新卒でSIerに就職するには?メリット・デメリットや必要な知識を解説
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
単体テスト
開発フェーズと同時進行で行われるのが、単体テストです。単体テストとは、作成したプログラムが詳細設計の仕様通りに動作するかチェックすることです。
開発工程は小さな単位で分割され、各プログラマーが割り当てられた工程を担当します。開発できたプログラムについて、まずは単体でテストして挙動を確認するため、「単体テスト」と呼ばれるのです。
結合テスト
単体テストで挙動を確認できた小さなプログラムを組み合わせ、システムとして動かした時に問題ないかテストするのが結合テストです。
結合テストによって各プログラムに生じたバグ・不具合を発見し、都度修正をかけていきます。
なお、バグは出ないほうがよいと思われがちですが、実際はそうではありません。バグが発生するのはむしろ当たり前で、バグが出ないのはテストが正しく実施されていない可能性があるでしょう。
結合テストの結果は「△△件のテストを実施し、△△件のバグが発生」などと詳細に記録し、クライアントへ報告して進捗を共有していきます。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
運用テスト
結合テストを経てシステムとしての挙動を確認できたら、運用テストに入ります。
運用テストでは現場に開発したシステムを持ち込み、使用予定のサーバーを設置して、実際の運用の流れに沿ってテストを実施します。
2回のテストを経ているため運用テストのフェーズでバグが起きるのは稀ですが、致命的なエラーが発生するケースもあるため注意が必要です。
エラーが発生した際は詳細設計の内容に立ち返り、結合テストとの動作環境に差異がないか、運用環境が正しく整備されているかなどをチェックします。
リリース
運用テストで開発したシステムの正常な挙動を確認できたら、いよいよリリースを迎えます。
Web系のサービスではローンチと呼ばれることもありますが、担当者にとって最も緊張する瞬間の一つがリリースです。
既存システムが動いている場合は、既存システムから新システムへと移行することになります。なお、切り替えた際に万が一の事態が起きても対応できるよう、既存システムに戻す手順も準備しておく必要があります。
新システムへの移行は夜間・深夜に行われるのが通例で、リリースを迎えるとシステム開発はひと段落したといえるでしょう。
運用・保守
システムをリリースできてからも業務は続き、システムが安定して稼働するよう、定期的なメンテナンスも欠かせません。
システムの運用・保守のフェーズでは、新たなシステムを実際に使用するなかで見つかった不具合や使いにくさを改修していきます。
クライアントの細かな不満を吸い上げてシステムの安定的な運用を続けることで、顧客満足度を向上させられるでしょう。その結果、次の仕事につながるのです。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
4. システム開発で用いられる2つのモデルを解説
システム開発の主なフローは先ほど解説した通りですが、現場では主に2つの開発モデルのいずれかを用いることが多いです。
ここでは、2つのシステム開発モデルを詳しく解説します。
ウォーターフォールモデル
ウォーターフォールモデルとは、先ほど解説したシステム開発フローの通りに順を追って機能を実装していくものです。
-
・要件定義
・基本設計
・テスト
・リリース
「ウォーターフォール=滝」のように、システム開発の工程を上流工程から忠実にこなします。
システム開発をする際はウォーターフォールモデルを用いるのが一般的で、新卒で就職した際も、最初はこのモデルの一工程に携わる場合が多いでしょう。
ウォーターフォールモデルのメリット
ウォーターフォールモデルのメリットのメリットは以下の通りです。
-
・各工程に求められる要件や作業がハッキリしている
・進捗状況やスケジュールを管理しやすい
・各工程で品質を担保でき、手戻り作業を最小限にできる
・さまざまな開発案件に対応できる
・人材を確保・調達しやすい
ウォーターフォールモデルは開発フローがシンプルでわかりやすく、抜け漏れが生じるリスクも低いという特徴があります。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
ウォーターフォールモデルのデメリット
ウォーターフォールモデルにはデメリットもあります。
-
・開発期間が延びやすい
・仕様変更に対応しづらく、修正が必要な場合は大きなロスが発生する
・クライアントのレビューやユーザーの意見を反映させづらい
・開発の後半までテストできない
ウォーターフォールモデルは工程が明確に定められている以上、仕様変更に対応しづらく、柔軟性の低さはネックといえるでしょう。
システム開発の途中でクライアントの意見を反映させることは原則できないため、ユーザーが真に求めるシステムを開発できるか不安が残るケースも想定されます。
ウォーターフォールモデルが向いているプロジェクト
ウォーターフォールモデルが向いているプロジェクトは、以下が挙げられます。
-
・作りたいシステムが明確で仕様を詳細に定義できる場合
・定型的な業務を進める業務システムなどのように、変更の可能性が低い場合
・大人数で担当する大規模なシステム開発の場合
ウォーターフォールモデルは仕様を詳細に固めたうえで着実に開発を進めるため、制作物が明確な場合や業務システムなどに向いています。
また、進捗を管理しやすい側面から、開発期間の長い大規模プロジェクトもウォーターフォールモデルを採用することが多いです。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
アジャイルモデル
アジャイルモデルとは、基本的な機能を備えたベータ版をまずはリリースし、市場やユーザーの反応を見ながら仮説検証してシステム開発を重ねる手法です。
少人数で新しいサービスを立ち上げる際に採用されるモデルで、スタートアップ企業におけるサービス開発の多くにアジャイルモデルが用いられます。
-
・開発
・テスト
・リリース
システム開発のフローで上記の小さなサイクルを回していくのが、アジャイルモデルの大きな特徴です。
システム開発にPDCAサイクルを盛り込んで市場にフィットさせていく点で、ウォーターフォールモデルとは異なります。
アジャイルモデルのメリット
アジャイルモデルのメリットは以下の通りです。
-
・開発スピードが早く、リリースまでの期間を短くできる
・仕様の変更や機能追加に対応しやすい
・クライアントの意見やユーザー・市場の反応を取り入れやすい
アジャイルモデルの場合、開発工程を分割してテストを繰り返せるため、修正や機能を追加しやすいというメリットがあります。
ウォーターフォールモデルのように仕様が明確に指定されていないため、柔軟性の高さからアジャイルモデルを採用するケースもあるでしょう。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
アジャイルモデルのデメリット
アジャイルモデルのデメリットとしては、以下が挙げられます。
-
・開発の方向性がブレやすい
・スケジュールや進捗を管理しにくい
アジャイルモデルは大まかな方向性や機能要件はあるものの、クライアントや市場の声を反映させながら開発を進めるため、管理のしにくさは大きなネックになるでしょう。
方向性やスケジュールなど、全体をうまくコントロールしながら開発を進めることが大切です。
アジャイルモデルが向いているプロジェクト
アジャイルモデルが向いているプロジェクトの例は以下が考えられます。
-
・完成のイメージが明確でないプロジェクト
・小規模なプロジェクト
・短期間で開発して市場の反応を見ながら開発を進めたいプロジェクト
アイデアのタネを形にしたいようなケースにおいては、アジャイルモデルが最適です。
なお、新卒採用でアジャイルモデルによるシステム開発に携わる場合は、プログラミングの知識が欠かせません。アジャイルモデルの場合は少人数で開発するケースが大半で、即戦力人材でなければ案件に携わるのは難しいでしょう。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
5. システム開発を担う職種紹介
システム開発のフローは多岐にわたり、それぞれに携わる職種も異なります。
以下、システム開発を担う職種を紹介するので、就職後の働くイメージやキャリアを考える参考にしてみてください。
プロジェクトマネージャー
プロジェクトマネージャー(PM)は、システム開発の総責任者としてプロジェクトの進行管理を行う職種です。
開発するシステムの機能に応じて、予算やスケジュール、開発メンバーなどを決定します。
システム開発における最上位のポジションといえるため、メンバー間とのコミュニケーション能力はもちろん、問題解決スキルやマネジメント能力、ITに関する深い知識も欠かせません。
システム開発の各工程を実際に業務として経験し、豊富な実績を積んだ後のキャリアとしてプロジェクトマネージャーが選択肢に上がるのが一般的です。プロジェクトマネージャーは、プロジェクト全体の責任を負う重要な立場です。
システムエンジニア
システムエンジニア(SE)は、クライアントからヒアリングした要望や課題を設計に落とし込む役割を担い、クライアントとの窓口としてシステムの設計に携わります。
システムエンジニアが基本設計や詳細設計を作成するのが一般的で、システム開発の実質的な舵取りを担う責任のある仕事です。
システムエンジニアが直接プログラミングするケースは基本的にありませんが、プログラマーに適切に指示するには、一定程度の知識が欠かせません。
システム開発の上流工程をメインに扱いつつ、クライアントとのテストにも同席するため、幅広い工程で業務に携わります。
関連記事:新卒でSEになるためにしておくべき準備|仕事内容や必要な資格、求められるスキルまで解説
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
プログラマー
プログラマーは、システムエンジニアが作成した詳細設計をもとに、システムを実際に形にしていく職種です。
具体的には、クライアントへのヒアリングによって作成された詳細設計に対して、開発箇所をチームで分割し、期限までに単体テストを経てプログラムを完成させます。
プログラマーとして活躍するにはプログラミングスキルが欠かせず、新卒者においても基礎レベルの理解が求められます。もちろん、ITシステムの全体的な知識も必須です。
プログラマーとして現場経験を積み、システムエンジニアの上流工程を任されるキャリアに進む人も多い傾向にあります。
関連記事:プログラマーになるには?就職先や求められるスキルを解説!
インフラエンジニア
インフラエンジニアは、開発したシステムのインフラを設計・開発するのが仕事です。
-
・サーバーやストレージなどのハードウェア
・OS・ミドルウェアなどの設計や構築、運用
・ネットワークの設定や管理 など
インフラエンジニアはシステム開発の裏側を支える、縁の下の力持ちといえます。
サーバーやOS、データベースについては専門的な知識が必須で、ITに関する基礎的かつ深い理解が求められます。
テスター
テスターとは、開発されたシステムの挙動を確かめるテストを行う職種です。
プログラマーとは別で、テストを専門で扱う職種を用意するケースもある一方、プログラマーが兼任する場合もあり、実態は企業によって異なります。
テスターが行うのは、テストの実行と結果の報告の主に2つです。
想定される操作はもちろん、あらゆる可能性を踏まえた想定外の操作を通じて、エラーが起きないか徹底的にテストします。テストの内容を正確に記録し、結果を正しく報告する業務も担当し、テスターの報告に基づいてプログラマーが修正を加える流れが一般的です。
関連記事:IT業界の代表的な18の職種を一挙に紹介!仕事内容や年収目安も解説
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
6. 新規採用者が担当するシステム開発のフローを解説
新規採用者がシステム開発フローのどこを担当するかは、結論としては採用企業によって異なります。
入社した企業がメインで扱う領域や方針によっては、上流工程を任されるケースもあるでしょう。一方、要件定義から保守まで自社で完結する企業の場合、保守やテストなどの現場から経験を積んだり、欠員している業務を任されたりします。
求人サイトを見ると応募職種を明示している場合が多いため、携わりたい開発フローが明確な人は、求人情報を細かくチェックして担当業務を判別しましょう。
求人情報に応募職種が記載されていない場合、採用後はプログラマーやテスター、保守運用などの開発現場に配属される傾向にあります。現場で実績を積んだ後、上流工程のシステムエンジニアを任されたり、プログラマーを束ねる業務を担ったりすることもあるでしょう。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
7. システム開発に携わる際の注意点
最後に、システム開発に携わる際の注意点を解説します。
就職後の働くイメージをより具体的に持つためにも、それぞれの内容を参考にしてみてください。
要件定義の完成度がシステムの品質に直結する
システム開発において、要件定義は特に重要です。
ウォーターフォールモデルにおける上流工程は、以後の開発フローの品質を大きく左右します。なかでも、クライアントからニーズを的確に引き出し、システム開発のゴールを定める要件定義では、認識の齟齬があってはなりません。
システム開発の初期段階におけるミスは取り返しがつかないため、要件定義には豊富な知識と経験はもちろん、高い傾聴力やコミュニケーションスキルも求められます。
チーム内で積極的にコミュニケーションをとる
システム開発では、各担当のメンバーとの積極的なコミュニケーションも欠かせません。
クライアントとシステムエンジニアとの円滑なコミュニケーションはもちろん必須ですが、メンバー間で認識の齟齬が生まれないようにするためにも対話が重要です。
「システム開発=パソコンに向かって作業するもの」ではなく、チームで開発を進める一体感も求められます。
スケジュールには余裕を持たせる
システム開発はクライアントに納品する期限が定められるため、スケジュール管理と徹底が欠かせません。
ウォーターフォールモデルの場合、前の工程が終わらない限り次の工程に進めないため、スケジュールの厳守が求められます。
システム開発の全工程を自社で完結させられる場合は調整しやすいものの、工程の一部を外注する場合、スケジュールの遅れはカバーしづらいため注意が必要です。
システムエンジニアやプロジェクトマネージャーといった上流工程を担う担当者には、調整力や俯瞰できる視野の広さも求められます。ある程度のトラブルも見越して、スケジュールには余裕を持たせることがシステム開発においては必須なのです。
\15年超の実績を持つレバテックが運営/
\15年超の実績を持つレバテックが運営/
8. まとめ
システム開発のフローは「要件定義→設計→開発→テスト→運用・保守」の大きく5つに分けられ、企業によって扱う業務やフローの切り分け方はさまざまです。
上記のフローに沿った開発手法をウォーターフォールモデルと呼び、大規模なシステム開発や目的が明確なシステムなどで使用されます。一方、アジャイルモデルは小規模なシステム開発に採用され、クライアントの意見を反映させながら開発を繰り返して完成を目指す場合もあります。
システム開発に携わる職種もさまざまで、新卒採用で任される仕事は求人情報をもとに確認してみましょう。
いずれの職種を担当するにしてもITに関する知識が求められるため、希望する職種がある人は、本記事を参考に知識を深めていきましょう。
ITエンジニアを目指す新卒学生向け就活エージェントならレバテックルーキー
レバテックルーキーは、レバテックが運営するITエンジニア専門の就活エージェントです。多数のITエンジニアのキャリア支援経験のあるアドバイザーが、あなたのスキルと希望に合わせた企業の紹介から、人事目線での面接対策など、就職までを一貫してサポートします。ES添削、面接対策、ポートフォリオ作成サポートなども実施していますので、まずは一度カウンセリングにお越しください。
就活アドバイザーに相談してみる