システム開発とは?開発工程や開発に失敗しないためのポイント3選を紹介!
公開日:2023.11.16 最終更新日:2023.11.16
システム開発やその工程について知っていますか。今回は、システム開発の意味からシステム開発の工程や開発に失敗しないためのポイントを紹介します。記事の後半では、システム開発の専門用語についても解説しているのでぜひ最後まで読んでください。
システム開発とは
システム開発とは、企業の業務を改善するシステムのことを指します。これは、業務の効率化をするために行われるものです。例えば、今までの業務を効率よく改善させることの他に、ビジネスの拡大化や新しいビジネスを始めることなどの、企業で抱えている悩みを解決するメカニズムを作る工程のことをいいます。また、システム開発において、企業の業務を改善するには、ITシステムやコンピューターなどのインターネットを通じて行います。
システムの種類
システムの種類は、以下の4つです。ぞれぞれのシステムの種類によって開発にかかるコストや期間が変わってきます。具体的には、基幹システムにおいて生産を管理するシステムや販売を管理するシステムは、多くの人が使用する上に業務がややこしい複雑なシステムです。他のシステムと比べてみても、システムを開発するコストや期間は大きくなっています。自社が開発したいシステムはどのくらいのコストや期間がかかるのか、あらかじめ把握しておきましょう。また、以下の表以外でもWebシステムには、 InstagramやFacebookなどのスマホでダウンロードできるアプリなども含まれています。
システムの種類 | システムの目的 |
基幹システム | 販売管理、生産管理、人事管理、財務会計システム、ERPなどが挙げられる。
基幹システムが止まってしまうと、経営自体が止まってしまう重要な業務を指す。 |
業務支援システム | 顧客管理、顧客管理、顧客管理システムなどが挙げられる。
顧客のデータや営業活動、新しいプロジェクトなどを支援するシステム。
直接顧客に携わる業務に関係するシステムを指す。 |
Webシステム | ネットショップ、予約システム、マッチングシステムなどが挙げられる。
インターネットを通じて情報を処理するシステム。 |
組み込み、制御系システム | コピー機、カーナビ、家庭用ゲーム機、オーディオ機器などが挙げられる。
家電製品や自動車などの輸送機器、医療機器などに特定の機能や制御を組み込むシステム。 |
システム開発の手法
システム開発は、おおまかな流れや工程は同じです。しかし、システム開発の手法としては、主に4つあります。以下の表を参考に、自社が開発するアプリにはどの手法が向いているのか確認しましょう。また、それぞれの手法について詳しく解説していきます。
システム開発の手法 | 特徴 |
ウォーターフォール開発 | 計画した作業を、開発の行程を順を追って1つ1つ丁寧に行う手法 |
アジャイル開発 | システムの開発工程の区切りが多く、1つの工程が終わったら、発注者に使ってもらう。そこから得たフィードバックを元に開発とテストを繰り返す手法 |
プロトタイプ開発 | システムを開発する前に、トライアルできるシステムを作って、あらかじめ発注者に確認しておく手法 |
スパイラル開発 | システムの開発工程を、システムの機能ごとに区切って、重要な機能から開発を始める手法 |
手法①ウォーターフォール型
ウォーターフォール型の開発手法は、4つの開発のうちで、1番オーソドックスな開発手法です。作業行程をあらかじめしっかりと計画しておき、その計画通りに業務を進めていきます。業務を計画の上から下へ、順番通りに進めていくのがウォーターフォール型の開発の特徴です。
またウォーターフォール型の開発のメリットとしては、システムの流れが計画書通りに進んでいくため、スケジュールが合わせやすい点や安心感がある点などが挙げられます。
ウォーターフォール型の開発手法の流れは以下の通りです。
- 要件定義
- 基本設計
- 詳細設計
- 開発
- 単体テスト
- 結合テスト
- 総合テスト
手法②アジャイル型
アジャイル型の開発手法は、開発のスピードを意識した手法です。工程が細かく区切られていて、工程ごとに設計、開発、テストを繰り返していきます。1つの工程が軽いため、すぐに前の工程に戻れます。このことは、修正がしやすかったり、計画を立て直したりなどのメリットに繋がるのです。
手法③プロトタイプ型
プロトタイプ型の開発手法は、工程ごとに区切って開発作業を進めていくのではなく、開発したらプロトタイプを参考にして、修正やテストを重ねていきます。フィードバックを受けながら開発が進められるので、何度も修正しなくて良いことがメリットです。
また、元々は製造業で使われている手法でした。しかし、開発のスピードを上げたり顧客へのニーズを広げていったりすることが、IT業界にも求められてくるようになったため、プロトタイプ型の手法が使われるようになりました。
手法④スパイラル型
スパイラル型の開発手法では、工程が終わるたびにクライアントに試作品として提出します。その後クライアントから受けたフィードバックを元に修正をして、その都度良いものを仕上げていく手法です。工程ごとに試作品を作る負担はかかりますが、クライアント側は試作品を試せるため安心して業務を任せられるようになります。
システム開発の工程
システム開発の工程は、主に7つに分かれています。
- 要件定義
- 基本設計
- 詳細設計
- プログラミング
- テスト
- リリース
- 運用保守
それぞれの工程について、詳しく解説していきます。
工程①要件定義
システム開発における、要件定義とは、システムに搭載する機能や仕様やリリース後の運用方針などを決めることです。まずは、どのようなシステムが必要になるのかをクライアントとシステム開発者とで話し合います。この時点で、お互いの認識がずれてしまうと、思っていたものとは違うシステムができてしまうかもしれません。しっかりとコミュニケーションをとって、内容を擦り合わせていくことが大事になってきます。
工程②基本設計
基本設計は、外部設計とも言われている工程です。基本設計では、ユーザーが実際に使う画面や行う操作などに関する部分の設計を行います。つまり、ユーザーが直接見たり触ったりできる部分の設計を行うので、綿密に設計していく必要があります。
工程③詳細設計
詳細設計は、内部設計とも言われています。内部設計とは、ユーザーが見たり触ったりはできない部分の設計を行う工程です。作業内容としては、プログラミングやコーディングなどが挙げられます。開発者の視点で設計をするため、開発者の質の高い能力が不可欠な工程になっているのです。
工程④プログラミング
設計の工程が終わったら、プログラミングに入ります。設計の工程で決まった設計書を参考にして、プログラマーがコードを書いてシステムを開発していきます。
工程⑤テスト
プログラミングが終わったら、一旦システムが完成します。出来上がったシステムをテストして、修正点がないか確認しましょう。システムが指定した通りに動いているか、クライアントが要求したことはできているか、などをチェックします。また、テストは4段階に分かれています。4つのテスト内容については、以下の表を参考にしてください。
テスト名 | テスト内容 |
単体テスト | モジュールが正しく機能できているかを確認するテストです。コードを作る時から行うテストで、モジュールを結合する前から修正点を確認できるため、後の工程でバグを修正する回数が減ります。 |
結合テスト | データの交換やタイミングなどが正しくできるかどうかをチェックします。クライアントからシステムの仕様を変更したいという要望がくる可能性もあるので、納期が遅れないようにスケジュールには余裕を持ってテストを進めていかなければなりません。 |
総合テスト | クライアントに提出する直前の段階で行われるテストを指します。クライアントの要望通りのシステムが作れているか、計画していた方針とズレていないかなどを確認します。 |
運用テスト | 運用テストは、システムがリリースされた後に行われるテストです。このテストはユーザーが行うことがポイントになってきます。ユーザーの時点でチェックするので、開発者が気づかなかった修正点が出てくることがあります。 |
工程⑥リリース
開発が終わって、総合テストを通過したら、いよいよリリースされます。また、システムをリリースした後は、システムの移行を行います。システムの移行とは、古いシステムから新しいシステムに移行する業務のことです。システムを移行する方法はさまざまあり、システムを一気に移行させる「一斉移行」や順を追って段階的に移行していく「順次移行」などの方法が挙げられます。
工程⑦運用保守
リリース後は、運用と保守を行います。運動とは、システムが正常に作動するかどうかをチェックすることです。不具合が発生しないように、定期的にチェックします。保守とは、システムに不具合が起きた時の、対処や修正などを行うことです。システムのバージョンアップやシステムを変更するときの変更作業も行います。保守では、思ってもいないトラブルや不具合が起こる可能性もあるので、開発に近い作業が必要になる場合もあります。そのため、保守を行う人は、それなりの専門知識を持っていた方が良いでしょう。
システム開発で失敗しないためのポイント
システム開発において、失敗しないためのポイントは3つあります。
- システム開発の目的を明確化する
- 適切な開発手法を選択する
- 複数社を比較検討する
それぞれのポイントについて、詳しく解説していきます。
ポイント①システム開発の目的を明確化する
クライアントと認識を擦り合わせて、システム開発の目的を明確にしておきましょう。システム開発の目的を明確に決めておかないと、不具合の修正やテストなどを繰り返していくうちに徐々に方向性がズレていき、システムが出来上がった時に思っていたものと違うシステムが出来上がってしまう恐れがあります。また、システムの計画を決める段階でクライアントと話し合って認識を合わせておかないと、お互いの認識がズレたまま開発を進めることになってしまいます。そうなると、工程が増えて時間やコストがかかるというデメリットが出てくるで、あらかじめシステムの目的は明確にしておくようにしましょう。例えば、「この期間までにこのくらいのユーザーを取り込みたい」「どのような層のユーザーを狙っているか」など具体的に決めていくことが重要です。また、トラブルを防ぐために、納期や費用についてもあらかじめ話し合っておきましょう。
ポイント②適切な開発手法を選択する
開発の手法にはさまざまな種類があり、それぞれには異なる特徴がありました。そのため、自社が作りたいシステムに合った開発手法を選ぶようにしましょう。先述した通り、システムの目的を明確にしておかないと、開発手法を選ぶ段階でもつまずいてしまいます。明確な目的から逆算して考えることが大切です。明確の目標を軸に、システム開発の手法のそれぞれの特徴と自分の作りたいシステムを照らし合わせながら、適切な開発手法を選んでいきましょう。
ポイント③複数社を比較検討する
システム開発には豊富な経験や専門的な質の高い知識が必要になります。そのため、作りたいシステムによっては、自社だけでは開発が難しい可能性もあるのです。その場合は他の企業に、システムの開発を依頼しましょう。ただし、システムの開発を他の企業にしてもらう場合、システムの開発を成功させるため、企業選びを重視しなければなりません。自社が作りたいシステムの方向性に合わない企業を選んでしまうと、思い通りにシステム開発を進められず、時間や費用などが無駄になってしまいます。そのため、開発を任せる企業を決める際は、1つの企業だけで検討するのではなく、複数の企業に相談して比較しながら検討するようにしましょう。
覚えておきたいシステム開発の用語
システム開発には専門用語が多く見られます。ここでは、そんなシステム開発における専門用語を5つ紹介していきます。
略称
システム開発においては、多くの専門用語や略称が飛び交います。打ち合わせや業務で置いていかれないためにも、しっかりと意味を確認しておきましょう。
略称 | 意味 |
SP(System Planning) | システムを企画することからシステムを導入することまでを指す。要求の分析、要件定義、基本設計や詳細設計、システムの開発、システムのテストという流れになっている。ベンダー側が行うこともあれば、ユーザー側が行う場合もある。 |
SA(System Architectural design、Service Analysis、System Analyze) | 要求分析のことを指す。どのようなユーザーの目的や要望をどのように解決していくのかを分析する。この段階で、ユーザー側の要求がどれだけ理解できているのかが重要になる。 |
RD(Requirements Definition) | 要件定義のことを指す。要件をどのように満たせば良いのかを定義する。 要求定義と間違われがちだが、意味は全く異なる。要求定義はユーザーの要求をまとめたものだが、要件定義は、要求を可能にするための方法をまとめたものである。 |
UI(User Interface) | ユーザーインターフェースのことを指す。ユーザーインターフェースとは、ユーザーとシステムとの接点を意味する。画面の操作の仕方や配置などが挙げられる。 |
BD(Basic Design) | 基本設計のことを指す。基本となる設計を決める工程。入力や出力に関する操作の仕方やシステム開発で使用する機器やソフトウェアなどが挙げられる。 |
SS(System Structure Design) | 構造設計のことを指す。プログラミングできるようにシステムの構成を分解して設計する内容を決定する。詳細設計や内部設計と同じ意味として使われることが多い。 |
FD(Function Design) | 機能設計のことを指すシステムの機能に合わせてを具体的な内容を決定する。具体的に内容を決める工程は、開発者側によって異なるため、内部設計と外部設計のどちらにも入り得る。 |
DD(Detail Design) | 詳細設計のことを指す。機能ごとに分けて、データ処理のされ方や取得方法など、目に見えない部分を設計する。 |
PS(Program Structure Design) | プログラム設計のことを指す。どのような動きをプログラムで行うのか、具体的に決めていく工程である。プログラムごとにシステム構成を分けて、システムの動きの内容や処理のされ方などを決定する。 |
UT(Unit Test) | 単体テストのことを指す。モジュールが正常に動いているかどうかチェックする。システムを分類して、それごとにチェックするため、不具合の発生源が見つかりやすい。この時点で丁寧にテストしておくと、のちのテストで出てくる大きな修正点を事前に防げるようになる。 |
CD(Cording) | コーディングのことを指す。設計したプログラムに沿って、プログラミング言語を入力していく作業。システムによって合う言語はさまざまである。 |
PG(Programing) | プログラミングのことを指す。プログラムの設計にそって、作りたい機能を開発する作業。プログラミングの流れとしては、プログラムの設計、コーディング、テストと不具合の修正作業となっている。 |
IT(Integration Test) | 結合テストのことを指す。機能を2つ以上組み合わせて、それが正常に動くかどうか判断する。組み合わせは、2つから大きな数の組み合わせまで、幅広く対応している。 |
OT(Operation Test) | 運用テストのことを指す。システムのリリース後と同じ環境で行われるテストで、実際にユーザーが使ってチェックする。開発者側が予期していなかった不具合やトラブルが発見できる。 |
ST(System Test) | システムテストのことを指す。要件定義や使用が守れているかチェックする。 |
上流工程・下流工程
システム開発における、上流工程や下流工程について解説していきます。
上流工程
システム開発において、上流工程とは、最初に行う工程のことです。例えば、「要件定義」や「計画立案」、「機能定義」や「構成管理」などが上流工程に含まれています。「要件定義」では、クライアントがどのような内容を求めているかなどの聞いたことをまとめる作業を行い、「計画立案」で、システムの開発に関わるスケジュールを決める作業を行います。また、「機能定義」では具体的な機能として要件を決定して、「構成管理」では決定した機能を共有するシステムの構成管理を行います。また、上流工程の仕上がりや進み具合によって、開発が円滑に進んで早く仕上げられるかどうかが決まります。上流工程は非常に重要な工程段階と言えるのです。
下流工程
下流工程では、上流工程で決定したプログラミング言語やシステムの機能、仕様を使用してシステムの開発を実際に行います。例えば、「導入」や「テスト」、「コーディング」などが下流工程に含まれています。「コーディング」とは、決められたプログラミング言語やシステムの機能を使用して開発を進めていくことです。「テスト」では、支持した通りに機能が動くかどうかチェックする作業を行います。「導入」は、完成したシステムをインターネット上に公開して、ユーザーの環境で問題なくシステムが動くかどうかチェックする作業です。また、下流工程では機能の修正がしにくくなっています。そのため、先述した通り、上流工程は非常に重要な工程になるのです。特に、上流工程でのチェックは怠らないようにしましょう。
SaaS
SaaSとは、サーバー側で動かしているソフトウェアを、インターネットなどを通して、ユーザーが使用することです。また、「ASP」と、同等の意味で使用されています。SaaSを導入すると、導入までの納期が短くなることやコストカットできる点がメリットとして挙げられます。ただし、ソフトウェアをカスタマイズしづらい点がデメリットと言えるでしょう。
SES
SESとは、システム開発の委託契約のことを指します。業務内容としては、システムやソフトウェアの開発や保守、運用などを行います。SESは、技術者の働き具合に対して報酬が出る契約となっているため、納品する義務はないのが特徴です。
オフショア開発
オフショア開発は、海外の会社に、ソフトウェアやシステム開発などの業務を委託することを指します。オフショア開発は主に、日本に進出している外資系企業が委託元でした。しかし、ここ数年では、中小企業が委託するケースも増えてきています。
工程を理解してより良いシステム開発を目指そう
いかがでしたでしょうか。
システム開発は、業務の効率化を促進させるために欠かせない要素です。ぜひ本記事で得た重要な情報を活用して、自社の質をより良いものに向上させていきましょう。
システム開発に悩んだ際にはEMEAO!へのご相談を一度ご検討ください。
この記事を書いた人
編集部員 濵岸
編集部員の濵岸と申します。コンテンツ作成と取材を主に担当しております。身長が低いため学生時代は「お豆」と呼ばれていました!豆らしく、皆様の役に立つ記事を「マメに豆知識を!」の意識で作成します!どうぞよろしくお願いいたします!