システム開発は、あらかじめ決められた工程に沿って行われることがほとんどです。システム開発を依頼する側も、基本的な開発工程を知っておくことで、各工程で介入しやすくなるメリットがあります。本記事ではシステム開発の基本工程、工程モデル、その他開発を依頼する際の注意点について解説していきます。
なぜシステム開発は工程に沿って行われるのか?
システム開発において工程に沿って行う理由は、開発のやり直しを防ぐためです。
システム開発では、まずシステムの設計を行いその後開発へと進みます。もし設計と開発を同時に行えば、設計を変更するたびに開発箇所の修正が必要となり、同じ作業を繰り返し、効率が悪くなってしまいます。
そのため、システム開発ではまずは設計を固め、それから開発作業に進むようにしています。
※関連記事
ソフトウェア開発とは?開発の種類や必要とされる職種について解説
システム開発の基本工程(上流)
システム開発は、上流工程と下流工程に大きく分かれます。まずは上流工程について詳しく解説します。上流工程は次の流れに沿って行われることが多いです。
-
- 企画
- 要件定義
- 外部設計
- 内部設計
1つ1つの流れについて詳しく解説していきます。
1.企画
システム開発を行う場合、まずは企画を立てます。企画の立て方は自社開発か受託開発かによって異なります。
自社開発の場合、社内でどのようなサービスを開発したいか、打ち合わせを行います。そして企画書をまとめて、上層部からの許可を取った後に開発を行っていきます。
受託開発の場合、顧客から「このようなシステムが欲しい」と相談を受けます。どのようなシステムが必要なのか話を聞き、開発期間や予算などの見積もりを立てます。その後、顧客と契約を交わし、プロジェクトがスタートします。
2.要件定義
受託でシステムを開発する場合、続いて要件定義を行います。要件定義では顧客の要望を詳しくヒアリングします。
「どのような機能が欲しいのか」「その機能はどの程度の性能にすべきか」など顧客が欲しいシステムの要件を洗い出し、要件定義書を作成していきます。
また、顧客がどのようなシステムが欲しいのかあまりイメージできていない場合は、「こういったシステムはどうでしょう?」と開発企業側から提案も行うこともあります。
3.外部設計
要件定義書の内容を元にシステムの設計を行います。システム開発はよく住宅の建築にたとえられます。最初に家の設計書を書くのと同じように、システムの設計書を作成します。
設計は外部設計と内部設計に大きく分かれます。外部設計ではユーザーが直接触る部分の設計を行います。たとえば、Webサイトの各ページの配置やコンテンツ内容、業務システムの操作画面から使える機能、などを設計書にまとめていきます。
外部設計では、ユーザーにとって使いやすいシステムにするにはどうすべきか、考えながら設計する必要があります。設計担当者にはUI/UXの知識なども求められるでしょう。
4.内部設計
続いて内部設計を行います。
内部設計では、プログラムの内部処理をどうするのか決めていきます。たとえば、データベースに格納するデータの種類や、プログラム間のデータの受け渡し、各プログラムの具体的な処理内容を決めていきます。
内部設計は、プログラマーが迷いなくプログラミングできるレベルまで細かく行う必要があります。
以上で、システム開発の上流工程は完了となります。なお、上流工程はシステムエンジニアという職種のエンジニアが担当することが一般的です。
システム開発の基本工程(下流)
続いて、システム開発の下流工程の流れについて解説します。下流工程は次の6つの流れに沿って行われることがほとんどです。
-
- プログラミング(開発)
- 単体テスト
- 結合テスト
- 統合テスト
- リリース
上流工程はシステムエンジニアが担当しますが、下流工程はプログラマーやテストエンジニアがメインに担当していきます。1つ1つの工程について詳しく解説していきます。
1.プログラミング(開発)
外部設計・内部設計が完了すれば、設計書の内容を元にプログラミングを行っていきます。プログラミングとは、プログラミング言語を使って、コンピュータへの命令文を記述する作業のことです。
開発で扱うプログラミング言語は開発の種類などによって異なります。たとえば、Webアプリ開発を行う場合はPHPやPython、Rubyといった言語が使われることが多いでしょう。
開発作業では、単にプログラムを設計書通りに動かすだけでなく、処理効率や運用・保守のしやすさなども考慮する必要があります。
2.単体テスト
一通りプログラムが完成したら、各プログラムを1つずつテストしていきます。単体テストでは、1つのプログラムやモジュールだけを取り出して動作確認を行います。
たとえば、テストデータを入力し正しい値が返ってくるか、特殊なデータを入力しても問題なくプログラムが稼働し続けるか、などを確認するのです。
単体テストは、プログラムを開発したプログラマー自身が行うことが多く、テストケースを作成し、それに従って順番に確認していきます。
※関連記事
テストケースとは?その種類や目的、作成方法を徹底解説
3.結合テスト
単体でテストして問題なければ、複数のプログラムを組み合わせた状態でテストを行います。
たとえば、プログラム同士で上手く連携ができているか、データの受け渡しや通信処理が正しく行われているか、などを確認します。
4.統合テスト
単体テスト・結合テストを行い問題がないようなら、結合テストを行います。結合テストではすべてのシステムを統合してチェックを行います。
実際にユーザーが使う場面を想定しながら、システムの各機能を使い、すべてが問題なく動くことも確認します。問題が見つかれば速やかに修正を行い再度テストします。
また、システムがどのような状況でも安定稼働できるように、負荷テストなども行い、問題がないことを確かめます。
5.リリース
結合テストを行い問題がなければシステムのリリースを行います。
リリース時に他のシステムに問題を起こしてしまう可能性もあるため、リリースは慎重に行わなくてはいけません。リリース手順書を事前に作成し、それに沿って作業していきます。
また、リリース時に問題が発生した場合は、すぐにシステムを元の状態に戻せるようにしておきます。リリース後にテストして問題がなければ開発完了となります。
システム開発後は運用保守を行う
システム開発した後はシステムの運用・保守を行う必要があります。運用・保守とはシステムが安定稼働するように、監視したり問題箇所を修正したりする作業のことです。
具体的には、OSやミドルウェアのアップデート、各ログの監視や不正アクセスのチェック、定期メンテナンスなどを行います。
システム開発企業は運用・保守サービスを同時に行っていることが多く、両方依頼することが可能です。ただ、運用・保守を専門に行う企業も存在し、そちらに依頼する選択肢もあります。
※関連記事
システムの運用保守とは?外注する際のポイントについても解説
システム保守とは?必要なスキルや外注する際のポイントを解説
システム開発の2つの工程モデル
システム開発には2つの工程モデルがあります。
-
- ウォーターフォール
- アジャイル
これら2つの工程モデルは考え方や手順がまったく異なります。そのため、システム開発を依頼する側も2つの工程モデルについて知っておく必要があるでしょう。1つ1つの工程モデルについて詳しく解説していきます。
※関連記事
システムやアプリの開発手法とは?メリット・デメリットを解説!
1.ウォーターフォール
ウォーターフォールとは上記で解説したシステム開発の工程(要件定義→設計→開発→リリース)を上から順番に行っていくモデルのことです。
システム開発の最も基本的な手法であり、多くの企業がウォーターフォールモデルを採用しています。
ウォーターフォールでは、各工程を終えた後問題ないことを入念に確認した後、次の工程に進みます。そのため開発スピードはどうしても遅くなってしまいます。
反面、各工程を堅実に進めることができ、トラブルが起きにくいのがメリットです。また、各工程にどの程度の期間がかかるのか、最初の段階で見積もりを立てやすいです。
2.アジャイル
アジャイルとは要件定義からリリースまで何度も繰り返すモデルのことです。ウォーターフォールと並び代表的なシステム開発の手法です。
リリースまで完了したら、顧客にシステムを見せて改善点をフィードバックしてもらいます。フィードバック内容を元に、要件定義から再度行い、システムの完成度を高めていきます。
アジャイルは仕様変更を前提とした開発モデルと言えるでしょう。Webアプリ開発など仕様変更が頻繁に発生するシステムの開発に向いていると言えます。
システム開発の工程以外に発注側が確認したいこと
最後に、システム開発の工程以外に発注側が確認したいことを解説します。開発企業には工程以外に次の3つを確認しておいた方が、後々揉める原因を作らずに済みます。
-
- 開発会社の技術力・実績
- 窓口担当者と認識のズレが起きていないか
- 契約内容
1つ1つ確認したいことについて詳しく解説していきます。
1.開発会社の技術力・実績
1つ目は開発会社の技術力・実績です。
開発会社によってどの分野の開発が得意か、こちらの要望をどこまで反映してくれるかは異なります。特にスクラッチ開発の場合、1からシステムを開発する分、開発企業の実力が顕著にでるため、開発企業の技術力や実績を確認することが大事です。
開発企業の技術力や実績はホームページなどで確認したり、担当者に詳しく質問してみたり、実際の開発を依頼した企業の口コミを聞いたりなどして調べるのが良いでしょう。
※関連記事
スクラッチ開発とは?メリット・デメリット、開発の流れについて解説
2.窓口担当者と認識のズレが起きていないか
2つ目は開発会社の窓口担当者と認識にズレがないか確認することです。
システム開発を依頼する場合、どのようなシステムを開発するか、窓口担当者と何度も打ち合わせを行います。窓口担当者は顧客とエンジニアの橋渡しを行う存在です。
窓口担当者のコミュニケーション能力が低いと、こちらの要望が上手くエンジニアに伝わらない可能性があります。そうすると、要望とは異なるシステムが作られてしまい、開発のやり直しが発生したり、納期に間に合わなくなってしまったりする可能性もあります。
そのため、担当者のコミュニケーション能力に問題がある場合、他のシステム開発に依頼するのも選択肢の1つです。
3.契約内容
3つ目は契約内容です。
契約書の内容に疑問点や不満のある点があれば、担当者に質問するようにしましょう。契約内容に関して担当者と顧客の間でズレが生じていると、後々揉める原因になってしまいます。
開発期間・予算やシステム運用・保守の対応期間はもちろんのこと、運用・保守の対応範囲や仕様変更があった際の追加料金のシステム、なども確認しておくようにしましょう。
最後に
この記事で説明してきた内容をまとめると以下のとおりです。
-
- システム開発の基本工程(上流):企画⇒要件定義⇒外部設計⇒内部設計
- システム開発の基本工程(下流):プログラミング(開発)⇒単体テスト⇒結合テスト⇒統合テスト⇒リリース
- システム開発の工程以外に発注側が確認したいこと:開発会社の技術力・実績/窓口担当者と認識のズレが起きていないか/契約内容
システム開発の工程を知っておくことで、顧客側もシステム開発に介入しやすくなり、より自分の意見を反映させたシステム開発が実現します。
また、システム開発を外注する場合は開発会社を入念に選定することが大切です。開発会社の技術力や実績、コミュニケーション力などを総合的にふまえて判断する必要があるでしょう。
開発会社の選定に困っている場合は、株式会社エイチビーラボにご相談ください。
株式会社エイチビーラボでは、ベトナムに特化したオフショア開発サービスを提供しております。お客様のご要望に合わせてWebシステムやスマホアプリ、AIデータ作成などさまざまなシステムを提供することが可能です。システムの開発でお困りの方は、ぜひお気軽にお問い合わせください。ご相談から、開発、運用まで親身にサポートいたします。