システム開発の流れ、各工程の役割や発注時の注意点を解説
記事の監修
代表取締役村越 聖人
2006年からエンジニアよりデジタル業界でのキャリアをスタート。
大小様々なWebシステム開発およびシステム運用保守を経験。
フルスタックエンジニアとして上流から下流工程まで一連の業務を担当するとともに、サーバー設計、構築、運用設計などのサーバー管理者業務も兼任。
近年は、顧客折衝を含む提案型営業からDMP絡みのデータ分析業務をはじめ、プロジェクトの全体統括・SEなど業務要件に合わせたポジショニングで顧客ニーズの最大化を図るサービス提案を実施。
新規事業で立ち上げた自社サービスにて、発明者として特許取得。
2019年5月 株式会社glorious future 設立。
2006年からエンジニアよりデジタル業界でのキャリアをスタート。
大小様々なWebシステム開発およびシステム運用保守を経験。
フルスタックエンジニアとして上流から下流工程まで一連の業務を担当するとともに、サーバー設計、構築、運用設計などのサーバー管理者業務も兼任。
近年は、顧客折衝を含む提案型営業からDMP絡みのデータ分析業務をはじめ、プロジェクトの全体統括・SEなど業務要件に合わせたポジショニングで顧客ニーズの最大化を図るサービス提案を実施。
新規事業で立ち上げた自社サービスにて、発明者として特許取得。
2019年5月 株式会社glorious future 設立。
新規サービスを立ち上げたいものの、システム開発がどのような工程で行われるかわからないという方も多いのではないでしょうか。
システム開発を外部に依頼する際は、開発の流れをあらかじめ把握しておくことが重要です。 この記事では、システム開発の工程や、それぞれの開発フェーズで発注者が注意すべきポイントについて解説します。
- システム開発の種類や工程について詳しく知りたい人
- Webサービス開発をスムーズに進めたい人
- 新規サービスを検討している人
システム開発とは?
システム開発とは、プログラミングやUI(ユーザーインターフェース)デザイン、システムテストなどのIT技術を用いて業務の効率化や最適化に繋がる仕組みを作ることです。
システム開発のプロセスには、システムの全体設計を行うシステムエンジニアや、設計に沿って実際にコードを書くプログラマーなど様々な人が関わります。
ビジネスの現場にて代表的なシステムは、社員の出勤状況を管理する勤怠管理システムや、商品を管理する在庫管理システムなどです。
システム開発の流れと役割を解説
システム開発には、どのようなシステムを作るかを決めたり、実装後に不具合を修正したりする様々な工程が含まれます。
システム開発の流れと、各工程の役割は次の通りです。
要件定義:システムの仕様を決定
要件定義では、まず、システムを通じて何を解決したいか、どのようなことを実現したいかを、依頼者から開発者に伝えます。
要件定義は、システムに求める要件を過不足なく明確化するための重要なフェーズです。
この段階で要件が十分に洗い出せていない場合、後の工程で仕様変更が発生するリスクがあります。開発スケジュールの遅れや予定外のコストが発生しないようにするため、要件定義をしっかり固めることが大切です。
外部設計(基本設計):見た目の設計
外部設計では、画面やボタンなどのシステムの見た目や、操作時の動きなどのUIを設計します。配色やデザイン性などの要素だけでなく、ユーザー目線に立って、使いやすさも考慮しながら設計することが重要です。
内部設計(詳細設計):中身の設計
内部設計では、外部設計のフェーズで決めたUIの見た目や機能を、プログラムとしてどのように実装するかを設計します。
内部設計は、システムの裏側で動く仕組みについて開発者目線で考えるフェーズです。
一般的に、要件定義から内部設計までのフェーズが、システム開発における上流工程と呼びます。
開発:プログラミング
開発は、要件定義や設計で決めた仕様をもとに、プログラミングによってシステムを実装するフェーズです。
大規模なシステムの場合、複数のプログラマーが分担してコードを作成することもあります。
一般的に、開発以降のフェーズが下流工程と呼びます。
テスト:不具合の修正
システムが一通り実装されると、次にテストのフェーズへと進みます。仕様通りにプログラムが実装されているか、要件を満たしたシステムになっているかを確認することがテストの目的です。
一般的に、システムのテストは複数の段階に分けて実施されます。システムを構成する各要素の、動作をチェックする単体テストが最初の段階です。その後、複数の要素を組み合わせて行う結合テスト、システム全体を検証する総合テスト、最終的な運用テストの順に行われます。
トラブルが見つかった場合、不具合を修正することもテストの役割です。
リリース(公開)
全てのテストが完了した後、一般のユーザーにシステムをリリースします。開発手法によっては、すべての機能をまとめてリリースするのではなく、段階的に公開する場合もあります。
運用・保守:メンテナンス
運用・保守は、システムのリリース後に発生したトラブルへの対応や、システムの監視などを行うフェーズです。
システムを実際に運用し始めると、設計やテストの段階では、想定していなかった不具合が発生することがよくあります。
場合によっては、システムの改修や追加の開発が必要になります。
システム開発の代表的な手法
システム開発には、工程やリリースのサイクルなどが異なる複数の手法があります。
ここからは代表的な手法とそれぞれの特徴を紹介します。
ウォーターフォール型
ウォーターフォール型は、要件定義から設計、開発、テストと順番にシステム開発を行う手法です。上流工程から下流工程へと、滝のように流れて進んでいくことからウォーターフォールと呼ばれています。
要件定義や設計のフェーズで綿密に仕様を決めるため、後戻りが難しい大規模なシステム開発に適した手法です。
アジャイル型
アジャイル型は、機能ごとにシステムを細かく分割し、それぞれで設計からリリースまでのサイクルを繰り返す開発手法です。アジャイルとは、素早いという意味の言葉で、スピード感をもって開発できることがアジャイル型の特徴となっています。
開発初期に明確な仕様を決めないため、柔軟な仕様変更が可能です。一方、開発コストやスケジュールの管理が難しい側面もあります。
スパイラル型
スパイラル型は、アジャイル型と同様に、機能ごとに設計や開発のサイクルを繰り返す手法です。ただし、機能ごとではなく、システム全体が完成して、発注者からのレビューを受けてからリリースします。
スパイラルとは、螺旋を意味する言葉で、開発とレビューを繰り返しながら、システムの品質を向上させていくことを表しています。
この手法は、手直しが最小限に抑えられる反面、仕様変更を繰り返すことでコストがかさむ可能性があります。
プロトタイプ型
プロトタイプとは、原型や試作品を意味する言葉です。早期段階で試作品を作成し、依頼者側で確認や評価をしながら仕様を決める開発手法がプロトタイプ型と呼ばれています。
確認、評価を細かく行い修正を加えるため、早いタイミングで完成品のイメージを共有でき、後戻りのリスクを低減することが可能です。ただし、検証の回数が多いため開発側の負担も大きく、大規模なシステムの場合は、コストや工数が膨らむことがあります。
DevOps
DevOpsとは、開発(Development)と運用(Operations)を組み合わせた造語です。開発担当者と運用担当者が密に連携し、柔軟かつスピーディーにシステム開発を行う手法がDevOpsと呼ばれています。
開発側と運用側の間の乖離をなくし、双方が協力して開発・運用を円滑に進めることがDevOpsの特徴です。ただし、部署間のコミュニケーションが不十分な場合、開発に失敗するリスクがあります。
システム開発を発注する際の注意点・ポイント
システム開発をスムーズに進めるには、発注する前にいくつかのポイントを押さえておくことが大切です。ここでは、システム開発を発注する際の注意点を紹介します。
システム開発の目的や予算を明確にする
システムを通じて実現したいことや希望の予算、リリースまでの期間が明確でないと、開発者側と発注者側で齟齬が生じてしまいます。
システム開発の目的や予算は、要件定義のフェーズですり合わせ、発注前に明確にしておくことが必須です。
システム開発の目的は、業務工数を何パーセント削減したい、Webサイトへ月間何件のアクセスを集めたいなど具体的な数値を用いると明確に伝わります。
開発途中の仕様変更には多大な時間・コストがかかる
一定以上の規模のシステムを開発する場合、開発途中で仕様を変更すると遅延やコストの増加など想定外のトラブルが発生します。
特に、上流工程で綿密に仕様を決めるウォーターフォール型の開発では、仕様変更に多大な時間やコストがかかることが一般的です。
発注者側の要望が開発者側に正しく伝わっているかを、要件定義における話し合いや設計書の内容で確認する必要があります。
コミュニケーションは密に取る
開発スケジュールの遅延や障害などのトラブルを未然に防ぐため、要件定義や設計の段階から十分にコミュニケーションを取ることが重要です。
リリース後だけでなく、開発中にも様々な問題が発生する場合があります。依頼側と開発者側でコミュニケーションを密に取っておくと、問題が大きくなる前に対処が可能です。情報共有のためのコミュニケーションツールを事前に整えておけば、開発の進捗状況をスムーズに確認できます。
システム開発の流れは、要件定義から設計、開発と段階的に進むことが一般的です。開発手法にはウォーターフォール型やアジャイル型などいくつかの種類があり、それぞれ特徴が異なります。目的や予算などの要望を明確化し、密にコミュニケーションを取ることで、システム開発をスムーズに進めましょう。
まとめ
システム開発を行う際は、あらかじめ開発の流れを把握しておくことが重要です。
また、開発やプロジェクトの規模、リリースまでの納期などに合わせて手法を選択する必要があります。
目的や明確にし、信頼できる開発業者としっかりとコミュニケーションを取りながら、スムーズなシステム開発を目指しましょう。
- システム開発とは、IT技術を用いて業務の効率化や最適化に繋がる仕組みを作ること
- システム開発は基本的に「要件定義→外部設計→内部設計→開発→テスト→公開→運用・保守」の流れで行われる
- システム開発の手法には「ウォーターフォール型、アジャイル型・スパイラル型・プロトタイプ型・DevOps」などがある
- 開発をスムーズに進めるには、目的や要件を明確にし、信頼できる開発業者とコミュニケーションを密に取ること