コラム

システム開発の基本プロセスは? 発注側が知っておくべきポイントを解説。

2021年08月31日
システム導入

近年、業務効率化や生産性向上を目的に、デジタル化(システム導入)を検討する企業が増えています。

また2018年以降はDX推進を背景に、時代遅れとなった既存システムの刷新を求められている企業も多いでしょう。

そうした時代の流れにより、今やシステム導入はとても身近なものとなってきました。

では実際システムを導入するとなった際、発注側として知っておくべきことはあるのでしょうか。

「システム開発する人はプロなんだから、任せておけばいいんじゃないの?」

と思う方もいるかもしれません。

しかしシステム導入・開発を成功させるためには、発注側が開発の進め方や状況を把握していることが重要です。

事前準備や確認をおろそかにすると「想定外のシステムができあがってしまった」なんてことにもなりかねません。

本コラムでは、システム開発の流れや注意点、発注側が知っておくべき内容を解説していきます。

システム開発の一般的な流れ

まずはシステム開発における全体の流れを見てみましょう。

  • 提案依頼書(RFP)の作成
  • オリエンテーション
  • 要件定義
  • 設計
  • プログラミング、コーディング
  • テスト
  • 納品
  • 稼働
  • 運用、保守

では次に一つひとつの工程について、システム開発を外注するケースを例に説明します。

◇提案依頼書(RFP)の作成

提案依頼書はRFP(Request for Proposal)と呼ばれます。

RFPはシステムの概要や目的、実現したいこと(現状の課題とあるべき姿)などを書面で伝えるものです。

口頭で曖昧な依頼をするとシステム要件が開発者に正しく伝わらないことも多く、誤った視点から提案を受ける可能性が生じます。

開発者の選定を正確に行うためにも、RFPを作成しましょう。

◇オリエンテーション

オリエンテーションはRFPを開発者に説明するプロセスです。

相見積もりをとる場合は各社共通してRFPを用いて説明することで、打ち合わせの内容にばらつきが出るのを防げます。

開発者を選ぶ際は、単に見積もりの金額だけではなく、RFPに対する提案内容も比較検討するようにしましょう。

◇要件定義

要件定義では、まず発注者がRFPの内容をさらにかみ砕いて開発者に伝えます。

その内容をもとに開発者はシステムに盛り込むべき要素・運用方法・予算・人員・開発期間といった、開発に必要な要件を定めていきます。

この要件定義をもとに実際の開発が進んでいくため、もっとも重要な工程と言えるでしょう。

◇設計

設計とは、要件定義に基づきどうすればシステムを作成できるのかを計画することです。

設計には外部設計と内部設計があります。

・外部設計(基本設計)

外部設計は操作画面や操作方法・データの出力画面といった、ユーザーに向けた仕様(ユーザーインターフェース)を設計します。

外部設計は基本設計とも呼ばれ、システムの使いやすさに関わる部分をまとめていきます。

・内部設計(詳細設計)

内部設計ではシステム内部の機能やデータの詳細を設計します。

外部設計がユーザーに見える部分だったのに対し、内部設計は次工程にあるプログラミングのしやすさや、稼働後のメンテナンスのしやすさといったエンジニアに関わる部分です。

◇プログラミング、コーディング

内部設計に基づき、いよいよ実際にプログラミングとコーディングを進めます。

一つのシステムを開発するのに、作るプログラミングは一つとは限りません。

システムを構築するパーツを分割し、一つずつプログラミング・コーディングしていきます。

◇テスト

プログラミング・コーディングの工程が終了したら、それらが要件定義通りの動きをするか、段階的に確認します。

・単体テスト

最初に行うのが単体テストです。

分割して作成した一つひとつのプログラムが正しく動くかを確認します。

・結合テスト

次は結合テストです。

分割してプログラミングした複数のプログラムを組み合わせ、それらが正しく機能するかを確認します。

・総合テスト

単体テストと結合テストが終わったら、すべてのプログラムが要件定義通りに動くかを確認します。

・運用テスト

最後に行うのが運用テストです。

実際にシステムを運用する環境下でプログラムに不具合が起きないかを確認します。

◇納品

システムが納品されます。

スムーズな稼働開始に向け、社内での導入体制などを整えておきましょう。

◇稼働

稼働は現場で実際にシステムが使われていることを指します。

もしこの段階で問題が判明した場合は、すぐに開発者に報告しましょう。

時間が経過してからだと明らかに開発側のミスであっても、有償での対応となるケースがあります。

◇運用、保守

開発したシステムを継続的に活用するためには、常にシステムを監視しなければなりません。

またより良い状態で活用していけるよう、定期的にアップデートなども行います。

運用、保守も外注する場合はもちろん有償となりますので、契約の段階で確認が必要です。

システム開発において発注者が気を付けるべきこと

設計やプログラミング、テストを行うのは開発者です。

だからといって任せきりにするのではなく、発注者も事前準備などをしっかり行う必要があります。

発注側が気をつけるべきことを紹介します。

◇作りたいシステムを明確にする

どうしてシステムが必要なのか、システムを導入することで実現したいこと(ゴール)は何なのかを発注側が明確にできなければ、開発側も何を求められているのかが分からずプロジェクトが効率的に進みません。

専門的な言葉で語れる必要はありませんが、どんなシステムをつくってほしいかをRFP・要件定義の段階で正しく説明できるように準備しておきましょう。

◇技術に関する基礎知識を身につけておく

知識がまったくない状態だと開発者と話しにくいため、基礎知識を身につけておくと良いでしょう。

社内のシステム担当の方にフォローしてもらうのはもちろん、顧問やコンサルタントといった外部のリソースを活用し学びを得ることも有効的です。

またエンジニアの多くは開発用語を略して使うことも多いため、一部ご紹介します。

  • SP(System Planning)…企画
  • RD(Requirements Definition)…要件定義
  • ED(External Design)…外部設計
  • BD(Basic Design)…基本設計
  • ID(Internal Design)…内部設計
  • DD(Detail Design):詳細設計
  • PG(Programing)…プログラミング
  • CD(Cording)…コーディング
  • UT(Unit Test)…単体テスト
  • IT(Integration Test)…結合テスト
  • PT(Product Test)…総合テスト
  • OT(Operation Test):運用テスト

◇開発手法のトレンドを理解しておく

システム開発の一般的な流れは先述の通りですが、開発の手順や手法にはいくつかのモデルがあり、トレンドが移り変わっています。

開発モデルによってそれぞれメリットデメリットがあるため注意が必要です。

ここでは広く世界中で利用されているウォーターフォールモデルと、近年のトレンドであるアジャイルモデルについて説明します。

・ウォーターフォールモデル

ウォーターフォールは「滝」という意味。

滝のように上流から下流に向かって開発手順を順番に行う手法です。

一つの工程が終わってから次の工程に着手するため進捗管理がしやすいこと、また各工程の終わりに検証を行うため、次の工程にバグを持ち込みにくいといったメリットがあります。

その反面、後戻りのできない一方通行の開発モデルのため、下流工程で上流工程のミスが見つかったときは大きなコストがかかるデメリットがあります。

image3

・アジャイルモデル

アジャイルは「素早い」という意味。

その言葉通り、スピードが求められるプロジェクトで選択されることが多い開発モデルです。

ウォーターフォールモデルとは反対に後戻りを前提としており、設計段階では大まかな仕様決定に留め、小単位で実装とテストを繰り返し開発していきます。

先述の通り開発スピードが速いのが最大のメリット。

また後戻り前提のため不具合発生時のコストが小さく、途中の仕様変更にも柔軟に対応できます。

一方で、大まかな仕様決定でスタートするため開発の方向性がぶれる危険性があること、また細かく改善を繰り返すことでスケジュールや進捗が管理しにくいというデメリットがあります。

システム開発をする際の人材の選び方

ここまでシステム開発における基本プロセスなどを中心に説明してきました。

発注者側の知識レベルを上げる大切さはもちろんのこと、やはり満足いくシステムをつくるためには「誰に開発してもらうか」という人材選びが大きな鍵を握ります。

システムを開発する際には、自社開発のほか外注するという方法があります。

一口に外注といっても、開発会社には中小企業から大企業までさまざまあり、また近年では個人事業主を含めたフリーランスエンジニアに依頼するという事例も増えてきました。

開発するシステムの規模などによって、開発者を正しく選択していく必要があるでしょう。

たとえば、デジタル化に向けてまずは小規模なシステム開発からスタートさせたいという場合や、大中規模システム開発であっても社内人材をメインに活用しながら必要なスキルだけを補いたいという場合においては、即戦力となるフリーランスエンジニアの活用が有効的です。

フリーランスエンジニアを活用する際は、居住地や営業時間といった基本情報はもちろん、対応可能なOSやプログラミング言語、経験した開発事例の概要やプロジェクトでの立ち位置、担当フェーズなどもヒアリングしておくと良いでしょう。

フリーランスITエンジニア専門エージェント「i-common tech」では、さまざまな開発言語スキルと職種経験を有するITフリーランサーが活躍中です。

 icommontech-engineer-graph

(出典):フリーランスITエンジニア専門エージェント「i-common tech」/パーソルキャリア株式会社

専任のコンサルタントが求めるスキルや人物像の整理からサポートに入り、貴社にマッチした人材をご紹介。

満足いくシステム開発をサポートします。

システム開発を控えている際は、ぜひ一度ご検討ください。

また「i-common tech」を運営するパーソルキャリア株式会社では、外部人材活用による事業支援サービス「i-common」を展開しています。

システム開発を発注する前段階で「技術に関する知識をつけたい」「RFP作成が上手くいかない」といった課題を抱えている際には、ぜひこちらもご検討ください。

0120-929-732
受付時間 平日9:00〜18:00まで