情報技術の高度化・複雑化がますます進み、最近では自社で利用するシステムの開発を外部に委託する企業も増えてきました。外部委託によるシステム開発を成功させるためには、開発を社外に丸投げするのではなく、依頼者側も開発の流れをきちんと把握しておくことが大切です。
そこで今回の記事では、システム開発がどのような手順で進められるのか、各工程の内容をわかりやすく解説します。委託先に対して適切に自社の希望を伝えるためにも、システム開発全体の流れをしっかり把握しておきましょう。
システム開発の手順に関する基礎知識
まずは、システム開発の流れを理解するうえで前提となる、基礎的な知識を確認します。
システム開発は手順を守って進めることが大切!
どのような開発にも、共通する前提知識として「システム開発は決められた手順・工程に沿って進めないとうまくいかない」ということを知っておきましょう。
システム開発の工程は、料理やお菓子づくりでいうレシピのようなものです。レシピ通りに作ることでおいしい料理やお菓子ができあがるのと同様に、開発では手順を守ることで成功につながります。
開発を成功させるためには、これまでに確立されてきたシステム開発の手順を知ることが必要です。システム開発の手順にはいくつかの種類がありますが、本記事では特に代表的な手順である「ウォーターフォールモデル」と「アジャイルモデル」について紹介します。
システム開発手順1:ウォーターフォールモデル
ウォーターフォールモデルは、水を流すように上流工程から下流工程に向かって作業を進めていくシステム開発手順で、現在世界中で主流となっているモデルです。
ウォーターフォールモデルは決められた順番で開発の工程を進めていくので、進捗状況の把握がしやすく、計画的に開発を進めることが可能です。前の工程が完了しなければ次の工程に進めないため、ある程度の時間はかかってしまいますが、その分品質を担保しやすいのが特徴といえます。
ウォーターフォールモデルの具体的な工程については、のちほど説明します。
システム開発手順2:アジャイルモデル
アジャイル(agile)は「すばやい、機敏な」という意味を持つ言葉で、アジャイルモデルはスピードを何よりも重視する開発手順です。
アジャイルモデルは、ウォーターフォールモデルのように決まった順番で開発を行なうモデルではありません。システム全体の実装とテストを繰り返し、修正しながら開発を進めていきます。
アジャイルモデルはスピーディーな開発が必要な場合や、どのようなシステムを作りたいかが明確でなく、とりあえず作ってみてからニーズに合わせて臨機応変に修正したい場合に向いています。
ウォーターフォールモデルとアジャイルモデルのメリット・デメリットについて、さらに詳しく知りたい方は、こちらの記事も参考にしてください。
関連記事:オフショア開発の進め方:アジャイル型か?ウォーターフォール型か?
【システム開発】ウォーターフォールモデルの手順と工程
ウォーターフォールモデルの工程を詳しく見ていきましょう。
ウォーターフォールモデルでは最初から最後の工程まで、決まった順番で開発を進めていきます。途中の工程を飛ばすことも、前の工程に戻ることもありません。
要件定義(要求定義)
要件定義は、開発するシステムにどういった要素を盛り込みたいかを明確にしたうえで、実際の予算や人員、期間を決めていく工程です。
ウォーターフォールモデルは、開発が先に進んでしまうと前の工程に戻れません。そのため、要件定義の工程で認識の相違が生じると、最終的にできあがるシステムも想定と異なるものになってしまいます。認識の相違を生じさせないためにも、最初の段階で開発会社と十分な打ち合わせを行ない、ゴールを明確化させることがポイントです。
外部設計
要件定義の内容をもとに、ユーザーから見える外側の部分とユーザーインターフェースを設計していきます。
システム開発において、ユーザーが使いやすいというポイントはきわめて重要です。画面の見やすさや操作のしやすさは、システムをうまく活用できるかどうかに直接関わってきます。打ち合わせの際にはしっかりと希望を伝え、妥協せずに内容を詰めていきましょう。
内部設計
外部設計が決まったら、ユーザーからは見えない内部であるプログラムの設計に移ります。
内部設計ではユーザー視点ではなく、開発者側の視点でコンピュータでの実装を想定した詳細なシステム設計を行ないます。外部設計ではクライアントと開発者側がともにレビューを行ないますが、内部設計では開発者内でのレビューのみにとどまるのが一般的です。
プログラミング
ここまでの工程で決定した内容に基づいて、プログラムを作成します。
システム開発を建築に例えるなら、プログラミングは設計図を見ながら実際に家を建てていく工程にあたります。イメージ通りの家を建ててもらうためには、ここに至るまでの打ち合わせが重要になってくるのです。
単体テスト
単体テストは、構築したプログラムが最初の要件定義通りに動くかどうか、1本ずつ個別に動作のテストを行なう工程です。
システム開発においては、小さな単位のテストである「単体テスト」から、「結合テスト」「システム(総合)テスト」といった大きな単位でのテストへ、順番にプログラムを検証していきます。単体テストはテストのなかでも最初の工程となり、プログラミングの対象単位ごとにテストを行ないます。
結合テスト
一つひとつのモジュールがうまく作動することがわかったら、次はモジュール同士を結合した状態でも、きちんと機能するかをテストします。
システム(総合)テスト
単体テストも結合テストもクリアしたら、それらすべてを含めた総合的な検証へ移ります。構築したシステム全体を通して、要件定義の基準通りに動くかどうかのチェックです。大量のアクセスがあった場合の耐久性や処理速度なども、このタイミングでテストします。
運用テスト
システム(総合)テストを無事にクリアできたら、次はクライアントがシステムの検証を行ないます。開発者側の環境で問題なく作動していても、実際にシステムを使う環境でうまく機能しなければ意味がありません。
運用テストの工程では、実際にシステムを運用する環境において不具合が発生しないか、要件定義通りに機能しているかどうかをチェックします。
システム移行(リリース)
システム移行は、構築したシステムが実際に使えるように、既存のシステムを新しいシステムへと切り替える工程です。システム移行の方法には、一気にシステム全体を切り替える「一斉移行」と、徐々に切り替えていく「順次移行」があります。
運用・保守
運用・保守はシステム移行(リリース)後、問題なく運用できるようにシステムを監視する工程です。この工程にはメモリ利用状況の確認や、より理想的な状態でシステムを利用できるように随時行なうアップデートなどが含まれます。
【システム開発】アジャイルモデルの手順と工程
アジャイルモデルは、実装とテストを繰り返して修正しながらシステムの完成を目指すモデルで、臨機応変な対応が可能です。ウォーターフォールモデルとは違い、アジャイルモデルに特定の手順や型などは原則として存在しません。
ここでは「アジャイルモデルはどうやって進行するのか」「ウォーターフォールモデルとの具体的な違いは何なのか」といった、アジャイルモデルの一般的な流れを紹介します。アジャイルモデルの大まかなイメージをつかんでおきたいという方は、ここで確認しておきましょう。
計画の策定
まずは、システムの大まかな仕様と要求のみを決定させます。ウォーターフォールモデルでは、この段階で最終的な完成イメージを細かく決めていきますが、アジャイルモデルでは細部までの決定は行ないません。
細かい部分を決めてしまわないことによって、工程の途中で生じる仕様変更に対して臨機応変に対応することが可能です。
計画を分割したうえで開発を進める
続いて、システムの開発工程を分割します。1~4週間程度で開発できる機能に分割したあと、各機能の重要度に基づいて着手する順番を決めていきます。
ウォーターフォールモデルでは、システム全体の開発を終えてからテストへと進みます。それに対し、アジャイルモデルでは機能単位で「要求定義」→「設計」→「テスト」→「実装・リリース」を繰り返していくのが特徴です。
重要な機能から順番に上記のサイクルを回し、その繰り返しによってシステム全体の完成を目指します。
リリース
ウォーターフォールモデルのように全体が完成してからリリースするのではなく、アジャイルモデルではテストを通過した機能から順次リリースします。機能が十分そろったとして開発を終了するのか、まだ機能が足りないと判断して開発を継続するかどうかは、クライアント側が決定します。
まとめ
レシピに従って料理やお菓子を作るのと同様に、システム開発では決まった手順を守って進めていくことが重要です。
システム開発手順の代表的なものとして、今回はウォーターフォールモデルとアジャイルモデルの2種類を紹介しました。ウォーターフォールモデルは、水が上流から下流に向かって流れるように順を追って開発を進める開発方法で、品質を担保しやすいのが特長です。
対して、アジャイルモデルは実装とテストを繰り返して重要な機能からリリースしていくという、スピードを重視した開発方法です。システム開発を進める際は、自社のニーズに適した開発手順を選びましょう。
システム開発の外部委託を検討中なら、海外のIT技術者に開発を委託するオフショア開発という選択肢もあります。オフショア開発なら、日本のシステム開発会社に依頼するよりも大幅にコストカットできるケースも多いです。
ベトナムのオフショア開発会社「レリパ」には、経験豊かな日本人管理者や日本語堪能な開発スタッフが多く在籍しています。そのため、「初めてのオフショア開発で不安だ」「コミュニケーションの面が心配だ」という方でも安心です。システム開発の外部委託を検討されている方は、ぜひお気軽にレリパまでお問合せください。