ITの発展に伴い、新規プロジェクトにとってシステム開発は今や欠かせないプロセスとなりつつあります。
新規プロジェクトの立ち上げを考える方の多くは、事前にシステム開発の工程を把握しておきたいと考えているのではないでしょうか?
プロジェクトの成功確率を1%でも高めるためには、基本的な開発工程について理解し、開発会社とスムーズなコミュニケーションを図ることが大切です。
今回の記事では、ITの知識が無い方でも理解できるように、図表を用いて分かりやすくシステム開発の工程・流れをご説明します。
そもそもシステムの開発工程ってなに?
システムの開発工程とは、コンピュータを用いた機能(自社サイトやサービスなど)を開発する際に必要なプロセス(流れ)を意味します。
例えば、アプリ開発を開発会社に依頼した際、その会社が順番に取り組むべきことをシステムの開発工程と呼びます。
開発モデル毎に開発工程は異なるものの、開発工程を構成する要素にはある程度の共通点があります。
具体的には、顧客の要望を整理することや、システムの設計・プログラミングなどの要素が、システム開発工程には必要です。
開発モデル毎に異なる開発工程
システム開発のモデル(方法論)には、いくつかの種類があります。
どの方法を採用するかによって、開発工程(流れ)は異なります。
自身でシステム開発する訳でない限り、全ての開発モデルを知る必要は無いでしょう。
今回は代表的な開発モデルである「ウォーターフォールモデル」と「アジャイルモデル」について、モデルの説明とシステム開発の工程(流れ)をご紹介します。
ウォーターフォールモデルの開発工程
ウォーターフォールモデルとは?
ウォーターフォールモデルとは、システム開発に要する工程を順番に進めていく方法です。あらかじめ定めた工程計画を順番にこなすイメージです。
高いところから水が流れ落ちる滝のように、前工程に戻らない点が特徴であり、最もポピュラーな開発モデルです。
ウォーターフォールモデルの開発工程・流れ
ウォーターフォールモデルでは、下記の流れで開発工程を進めていきます。
【1】要件定義(要求定義)
このモデルにおけるシステム開発は、要件定義という工程から始まります。
システム開発を依頼する側と開発する側が打ち合わせを行い、システムの性能・機能や運用方法などの「要件」を決定します。
システム開発を依頼する際、希望の機能や性能があるかと思います。その要求と開発会社側の認識にズレがある場合、結果的に希望とは異なるシステムになる恐れがありますので、認識のすり合わせが非常に重要です。
【2】外部設計
外部設計の工程では、システム使用者(ユーザー)の視点からシステムに必要な機能を洗い出し、それを基に大枠となるシステム設計を行います。
その際システムの仕様などが記された基本設計書を、ユーザー側が確認するケースもあります。
【3】内部設計
次に外部設計で決定した事項を基に、コンピュータでの実装を想定した上で、より詳細にシステムを設計します。
外部設計がユーザー視点からの設計である一方で、内部設計の工程ではコードやプログラムの設計など、開発者側からの視点でシステムを設計します。
【4】プログラミング
内部設計での決定事項を基に、実際にプログラミング言語を用いて、システムを構築する工程になります。
家の建築で例えると、先ほどまでの工程が設計図の作成であった一方で、この工程以降は家を実際に建てる流れになります。
【5】単体テスト
プログラミング工程が完了したら、実際に構築したプログラミングが作動するかをテストします。
システム開発では、小さい単位から大きい単位という流れでテストを行います。単体テストでは、プログラミングの対象単位(モジュール)ごとにテストします。
【6】結合テスト
モジュール単位で問題が無ければ、各モジュール同士を結合してテストを行います。
例えば、データの受け渡しや画面の切り替わりなど、プログラム同士が正常に連携するかをテストします。
【7】システム(総合)テスト
プログラム同士の連携が問題なければ、ユーザーが要求する機能や性能を満たしているかをテストする工程に入ります。
この工程では具体的に、処理速度や大量アクセスへの耐久などをテストします。
【8】運用テスト
システムテストの工程に問題が無ければ、最後に運用テストを実施します。
運用テストでは、実際にシステムを運用する環境下で、開発したシステムに不具合がないかを確認します。
【9】システム移行(リリース)
全てのテストをクリアしたら、完成したシステムをリリースする工程となります。
【10】運用・保守
システムが完了したからといって、全ての工程が完了した訳ではありません。
なぜならシステムを使用し続ける過程で、何かしらの不具合が生じる場合があるからです。システムを効果的に活用し続ける為には、常にシステムを監視し、不具合が生じた際には即座に修正する必要があります。
以上がウォーターフォールモデルにおけるシステム開発工程の流れとなります。
ウォーターフォールモデルのメリット
ウォーターフォールモデルでは工程の後戻りがないので、スケジュール策定や進捗管理を比較的行いやすいです。
また、最もメジャーな開発モデルであるため、経験者であればシステム開発しやすいメリットもあります。
ウォーターフォールモデルのデメリット
原則前工程に戻ることができないため、後工程になって欠陥や変更があった場合に、大幅にシステム開発が遅れる可能性があります。
大幅な納期遅れが生じる結果、市場の変化に対応しにくくなるデメリットも生じます。
実際に「リクルートテクノロジーズ」さんでは、ウォーターフォールモデルをメインに採用していた時は、市場へ上手く対応できない状況が続いていたとの事です。
ウォーターフォールモデルが向いているプロジェクト
プロジェクト管理しやすいメリットがあるため、時間にゆとりがある大規模なプロジェクトには向いていると言えるでしょう。
ウォーターフォールモデルが不向きなプロジェクト
一方でウォーターフォールモデルには時間がかかるデメリットがあるため、スピード感が重要となる新規事業・新規プロジェクトにはあまり向いていません。
アジャイルモデルの開発工程
アジャイルモデルとは
アジャイルモデルとは、素早くシステムを開発する方法の総称です。アジャイルモデルに該当する手法には、「XP」や「スクラム」、「FDD」などがあります。
アジャイル開発の工程では、顧客と開発会社同士の連携や協調、変化への対応を重視します。
アジャイルモデルのシステム開発工程・流れ
【1】リリース計画の策定
まず始めに、システム開発の大まかな計画を決定します。ウォーターフォールモデルとは異なり、この段階では大まかな仕様と要求のみを決定します。
細部まで決定しないことで、工程途中で生じた仕様変更に対して、臨機応変に対応できる訳です。
【2】システム計画の分割
次にシステムの全体的な開発工程を、1~4週間程度で実行できる機能に分割します。その際、各機能の重要度を基に、着手する順番を決定します。
各機能を開発する期間の単位を「イテレーション」と呼び、アジャイルモデルではイテレーションごとにシステム開発を進めていきます。
【3】機能単位での開発
着手する順番を決定したら、具体的に各機能を開発する工程に入ります。1〜4週間の範囲で、開発する各機能の「要求定義」→「設計」→「テスト」→「実装・リリース」を実施します。
【4】イテレーションの繰り返し
ある機能をリリース出来たら、次の機能を同じ流れで開発します。アジャイル開発では、イテレーションの繰り返しによりシステム全体の完成度を高めていきます。
アジャイルモデルにおけるシステム開発の工程(流れ)は、以上になります。
アジャイルモデルのメリット
アジャイルモデル最大のメリットは、システム開発の期間を短縮化できる点です。重要な機能からいち早くリリースできるので、素早い事業展開が可能になります。
またシステムを機能単位で開発するので、不具合や仕様変更にも柔軟かつ迅速に対応できる点もメリットとなります。
顧客と開発者側が密にコミュニケーションを取りながらシステムを開発するので、理想的なシステムを作り上げることが出来るでしょう。
アジャイルモデルのデメリット
アジャイルモデルでは厳密な計画を立てないので、スケジュール管理が難しいです。システム開発全体の管理が難しいので、管理次第では納期が遅れる危険もあります。
またアジャイルモデルは比較的新しい開発モデルなので、対応できる開発会社が少ないです。ですが弊社では、アジャイルモデルに特化しているので、この点については心配ありません。
アジャイルモデルが向いているプロジェクト
アジャイルモデルでは迅速にシステムを開発できるので、スピーディーな事業展開が必要な「新規事業」に最適な開発モデルです。
顧客と開発会社間でのコミュニケーションを重視している点でも、不確実性の高い新規事業への対応に適していると言えます。
アジャイルモデルが不向きなプロジェクト
一方でアジャイルモデルは、計画管理の重要性が高い大規模なプロジェクトには不向きと言えます。
計画管理しにくい開発モデルであるため、段階的にシステムをリリースしたいケースに適用する方が良いでしょう。
最後に
今回は開発モデル毎に、システム開発の工程と流れをご紹介しました。今回ご紹介した情報が、開発会社とのコミュニケーションに役立つと幸いです。
弊社はアジャイル開発に特化しているため、新規事業のスピーディーな展開に最大限貢献できます。
新規事業の立ち上げを検討中の方は、ぜひ気軽にお問い合わせしてください!