システム開発の流れを解説!発注先に失敗しないために
2021.04.30
社内システムを開発するときは、しっかりと開発の流れを分かっていないと、予期せぬトラブルを招いてしまいます。では、流れを知った上で失敗を防ぐためには、どのような点に注意すれば良いのでしょうか。この記事では、システム開発の流れやポイントについて紹介します。
システムの開発工程
1つ目は「ウォーターフォールモデル」です。
ウォーターフォール(waterfall)という言葉のとおり、滝のように上流から下流に向かって工程が進む手法です。先の工程に進んだら、前の工程には戻らないのが前提です。スケジュールを組みやすく、進捗状況が分かりやすいというメリットがあります。
一方で、欠陥があったり変更が生じたりすると、遡ってやり直さなければいけないため、スケジュールが大幅に遅れる点がデメリットです。
ウォーターフォールは納期まで余裕があり、大規模なシステムを開発する場合に適しています。逆に、遅れが生じたときのリスクが大きく、柔軟な変更に対応するのも難しいため、途中で仕様変更が予想される場合には適していません。
2つ目が「アジャイルモデル」です。
アジャイル(agile)という言葉には、敏捷(びんしょう)や素早いという意味があります。
アジャイルモデルの基本となるのが「イテレーション(iteration)」です。反復や繰り返しを意味する言葉で、ひとつの工程の中で「設計」→「開発」→「テスト」→「実装」を何度も繰り返します。実装して問題があれば、再び設計に戻り、同じ工程を繰り返すという流れです。問題が無ければ次の工程に進みます。
「重要な機能から先に実装できる」「欠陥や変更に対して柔軟に対応できる」などがメリットです。アジャイルモデルは、仕様の追加や変更が予想されるときに向いています。
素早く柔軟な反面、いつ次の工程に進めるのか分からないため、大規模なシステム開発のように、厳密なスケジュールを組むのは難しいでしょう。また、アジャイルモデルを採用している開発会社は、それほど多くありません。
ウォーターフォールモデルの開発工程
ウォーターフォールモデルでは、以下の10の工程を経て、システムが開発されます。
1.要件定義
最初に発注元と開発会社が話し合い、どのようなシステムにするのかを決定するのが要件定義です。発注元からシステムに盛り込みたい機能や運用方法、予算をヒアリングした上で、開発会社が必要な人員や期間を割り出します。
こうした発注元の要求は、「提案依頼書(RFP)」にまとめられているのが一般的です。システム開発に不慣れで、漠然とした要件定義しかできなくても、開発会社のほうで提案してくれる場合もあります。
開発会社が提示する金額や納期などに発注元が合意すれば、基本契約書を取り交わし、さらに細部まで詰めて開発のスタートです。
2.外部設計
要件定義の次は外部設計を行います。ここでいう外部とは、実際にシステムを操作するときにクリックしたり、入力したり、出力したり、画面を移動したりする「ユーザーインターフェース」のことです。
ユーザーインターフェースに問題があると、使い勝手が悪くなり、作業効率が落ちる だけでなく、システム自体が 使われなくなるおそれ もあります。
開発会社側に社内の業務を理解してもらうのはもちろん、社内でも開発会社の設計書を見てシミュレーションするのが望ましいでしょう。
3.内部設計
ユーザーインターフェースに対する内部の反応を、開発会社が設計する工程です。これを実現するのがプログラムです。
この内部設計から7番目のシステムテストまでは、基本的に開発会社の主導で進められるため、発注元が直接関わることはありません。
4.プログラミング
内部設計に基づいてプログラマーがプログラミングを行い、システムを構築します。システムは「モジュール」という単位で区分され、複数人でそれぞれ役割分担しながらプログラミングが行われます。
5.単体テスト
ひとつの機能を持たせたプログラムが完成したら、単体でテストを行います。テストには、プログラマーとは別に専門の人員が必要です。
6.結合テスト
システム内では複数のプログラムが連携して動作します。そのため、単体では問題なかったとしても、複数のプログラムが正しく作動できるかどうかを結合テストで確認する必要があります。
このような小さい範囲のテストを重ねて、大きな範囲のテストへ移行します。
7.システムテスト
結合テストがクリアできたら、システム全体のテストです。正しく動作することはもちろん、要求したとおり に操作できなければいけません。速度や処理能力、複数のアクセスに対する耐久度も、このタイミングで確認されます。
8.運用テスト
開発会社のシステムテストをクリアできたとしても、自社の端末で正しく動作するとは限りません。そのため、実際に自社の端末で運用テストを行い、要件定義どおりか確認します。
9.システム移行
運用テストでも問題がなければ、本格的にシステムを導入します。既存のシステムから切り替えるのであれば、データの移行も必要です。
一度に切り替える方法もあれば、2つのシステムを並行して使いながら徐々に切り替える方法もあります。
10.運用・保守
システムを無事に導入できたとしても、それで終わりではありません。運用している最中に、予期せぬエラーが発生する場合もあります。
自社で対応ができなければ、引き続き開発会社に保守を依頼しなければいけません。運用・保守は、システムを継続して活用するためにも必要です。
アジャイルモデルの開発工程
アジャイルモデルも、最初に要件定義をするところから始まりますが、ウォーターフォールモデルと違って細部までは詰めません。
要件定義の後は、工程を1~4週間で実行できる範囲で分割し、優先度の高い順から着手します。先述したとおり、ひとつの工程で「設計」→「開発」→「テスト」→「実装」を行い、問題がなければ先に進めますが、問題があれば設計からやり直しです。
ウォーターフォールでいえば、3番~8番までを工程ごとに繰り返します。一度にシステムが完成するのではなく、徐々に完成度を高めていく開発手法です。
社内にSEやプログラマーがいない
社内にSEやプログラマーがいなければ、システム開発のために人材を募集する必要があります。しかしこの場合、採用に手間や費用がかかるだけでなく、開発が継続的でなければシステム完成後に開発者の仕事がなくなってしまうでしょう。
専門会社への依頼 は自社開発よりも費用がかかりますが、必要なときだけ人員を確保できる点は大きなメリットです。さらに本職のSEやプログラマーであれば、専門的な知識や経験も豊富です。長い目で見ると、総費用を抑えることにつながるでしょう。
導入したいシステムが小規模
開発するシステムの規模が小さければ、外部に発注するほうが費用を安く済ませられることがあります。
反対に、システムの規模が大きく、開発も長期におよぶ場合は、社内で人員を確保して、プロジェクトを立ち上げるほうが良いでしょう。開発が終わった後も、保守や改良で稼働できるからです。
依頼する会社の見極めは慎重に
システム開発会社はそれぞれに得意不得意があります。不得意な分野を任せてしまったために、要件定義とは大きく異なったシステムが開発されるケースも少なくありません。
また、たとえ得意な分野であったとしても、自社と開発会社の認識が一致していなければ、やはり要件定義と大きく異なったシステムになる可能性が高くなるでしょう。
トラブルを防ぐためにも、開発会社に依頼するときはしっかりと話し合いをし、認識を一致させることが大切です。
複数の開発会社に声をかけ、作成したいシステムに応じたスキルや実績があり、要件定義を実現できるところを選ぶようにしましょう。
システム開発会社選びならReady Crew(レディクル)におまかせ
システム開発に詳しくなければ、依頼する開発会社の見極めや、要件定義を正確に伝えることも困難となります。
発注先選びが難しい場合は、業界に詳しい専門家への相談がおすすめです。
発注先でお悩みなら、Ready Crew(レディクル)にもご相談ください。
Ready Crewは無料でご利用いただけるビジネスマッチングサービスです。お客様から直接お話を伺い、パートナー企業(開発会社)の中から、最適なところを紹介します。ニーズはもちろん相性まで見極めて紹介しますので、いつでもお気軽にご連絡ください。
システム開発では、ウォーターフォールモデルとアジャイルモデルという流れがあります。どちらの手法でも、社内の人員やシステムの規模によっては、外部の開発会社に依頼するほうが良い場合があります。
アウトソーシング をする際は、どのような流れで開発を進めていくのか、開発会社としっかり話し合って認識を一致させましょう。