ITシステムを導入するにあたって必ず必要となる工程がシステム開発です。DX時代到来によりその必要性は増加の一途をたどっています。またDXと合わせ開発手法の多様化などによりその内容は高度化・複雑化してきています。
ここでは、企業のDX担当の皆様向けにシステム開発の詳細、工程、そして注意点などについて詳しく解説いたします。これから開発を実施する企業担当者の皆様にはこの記事を是非参考にしていただければ幸いです。
H2. システム開発とは?
そもそも、システム開発とはどのような意味をもっているのでしょうか?システム開発とはその名の通り、ITシステムを設計・構築することを表します。ただこうお話すると目的はシステムを開発することそのものにある、と勘違いされる方がいらっしゃいますがそれは大きな間違いです。
システム開発はあくまでも企業のもつ課題を解決する「手段」であることを忘れてはいけません。
アプリ・システム開発のプロが開発のお悩みを解決します
アプリ・システム開発の6割が失敗すると言われています。クライアントのリピート率100%のリレイスにご相談ください。
\ まずは無料相談!1営業日以内に返信 /
目次
- H3. システム開発の目的は会社のビジネス上課題を解決すること
- H3. ①ウォーターフォール型
- H3. ②アジャイル型
- H3. ③スパイラルモデル
- H3. ④プロトタイピング
- H3. ⑤V字モデル
- H3. ⑥DevOps
- H3. ①要件定義
- H3. ②外部設計
- H3. ③内部設計
- H3. ④プログラミング
- H3. ⑤テスト
- H3. ⑥リリース
- H3. ⑦運用・サポート
- H3. プロジェクトマネージャー(PM)
- H3. システムエンジニア(SE)
- H3. プログラマー(PG)
- H3. 人件費が8割以上を占める
- H3. 人件費以外の費用
- H3. システム開発の目的を明確にする
- H3. 信頼できる会社かどうか確認する
- H3. 要件定義に不備がないようにする
- H3. 開発後にかかる費用も予算に入れて検討する
- H3. 見積もりをとって費用対効果を確認する
- H3. 頻繁なコミュニケーションを心がける
H3. システム開発の目的は会社のビジネス上課題を解決すること
システム開発する目的は企業が抱えるビジネス課題を解決することにあります。例えば業務効率化のためにRPAを導入する、作業時間短縮のため自働化するためのITシステムを導入する、など開発の裏には必ず何らかのビジネス課題の解決が目的としてあるはずなのです。
システム開発はこの「目的」を達成するための方法であることを忘れてはいけません。
H2. システム開発の6つの手法
それではシステム開発はどのような手順で実施されるのでしょうか?かつてはウォーターフォール型が一般的でしたが、VUCA時代の到来、顧客ファーストな考え方が主流化したことで、実に多くの手法が登場してきています。
ここでは手順を説明する前に6つの大きな開発手法について説明します。
H3. ①ウォーターフォール型
ウォーターフォール型は古くから使われている開発手法の1つです。ウォーターフォール=滝から水が下るという意味が表すように上流(要件定義)から下流(テスト)までの一連の工程を順序通りすすめていく開発手法です。
順番に工程を進めるためQCD管理がしやすいメリットがある反面、途中での計画変更に弱い弱点をもっています。要件がしっかりしている比較的規模の大きいプロジェクトに向いている手法と言えるでしょう。
H3. ②アジャイル型
アジャイル(Agile)とは「機敏な」「すばやい」という意味を持つ言葉です。昨今企業に求められている「アジリティ(Agility)」と同じ意味を表しているとおり、スピード感を求められるケースに有効な開発手法です。
ウォータフォールでは仕様を固めたうえで開発を進めるのに対し、アジャイルでは大体の方向性だけ決め開発を進めます。またシステム全体を機能ごとにいくつかの単位に分けて開発します。これにより仕様変更や不測の事態に素早く対応できるメリットがありますが、全体進捗などを把握しづらいといったデメリットがあります。
ウェブサービスなど、顧客の声を聞きながら柔軟な機能追加を繰り返すプロジェクトに適した方式といえます。
H3. ③スパイラルモデル
スパイラルモデルは、機能単位で設計・開発・テスト・評価といった一連の開発手法を繰り返す手法で、これらの繰り返しを「らせん(スパイラル)」とたとえています。ウォータフォールの「計画性」とアジャイルの「小さな単位で開発を繰り返す」双方のメリットを組み合わせた手法といえます。
細かく機能別に区切りながらもある程度計画的な工程で進められることもあり、昨今注目されているマイクロサービスを利用した大規模開発に向いているといえるでしょう。
H3. ④プロトタイピング
プロトタイプ(Prototype)とは試作品のことであり、プロトタイピングとはこの試作品を作成する開発手法です。プロトタイプを使って顧客レビューを受けながら開発を進めていくことから、早期段階で認識のずれなどを解消できるメリットがある一方でプロトタイプの開発に時間がかかるというデメリットがあります。
これらは、新規事業や新製品開発などに向いている手法といえます。
H3. ⑤V字モデル
V字モデルは、ウォータフォール型の進化系ともいえる手法です。ウォータフォールにおける3つの設計要件を開発後に実施する3つのテストの中で正しく実装されているか確認することで引き渡し後の認識ずれや不具合を最小限に抑えられる効果があります。具体的には下記のようにします。
- 要件定義→システム最終テストで確認
- 基本設計→結合テストで確認
- 詳細設計→単体テストで確認
といった形でテストを実施します。これによりテスト内容を明確にできるメリットもでてきます。
H3. ⑥DevOps
DevOppsは「Development(開発者)」と「Operation(運用者)」が共同で開発する手法で、近年比較的新しい開発手法といえます。
開発したシステムはその後運用に引き継がれ、運用されていきますが、開発後に運用できないといった問題が発生することがしばしばあります。DevOppsは開発者、運用者が共同で開発することでこのギャップを埋められ、結果導入システムで最大のメリットを生み出せるメリットがあります。
H2. システム開発の流れ
ここまで開発手法について説明しました。次は具体的なシステム開発の流れについて解説します。具体的にどのような手順ですすめるべきなのか?詳しく解説します。
尚、今回はウォーターフォール手法についての開発手法を元に解説します。
H3. ①要件定義
システム開発において最初の工程はこの「要件定義」となります。実はこの要件定義は、その後の工程内容を大きく左右するシステム開発の中で最も重要な手順となります。
要件定義ではお客様の業務課題を元に解決方法やそれに必要なシステム要件、課題対策をカバーする範囲などを取り決めし、「要件定義書」にまとめます。この要件定義に漏れや認識ずれが発生した場合、この後の工程すべてに対し手戻りが発生しますので、慎重に対応しなくてはなりません。
H3. ②外部設計
外部設計は基本的な構成などを設計・決定していくフェーズで「基本設計」とも呼ばれます。
利用するサーバやクラウドサービス、ネットワーク、セキュリティ、開発言語などハードウェア・ミドルウェア・ソフトウェアレベルで何を使うかといった決め事をしていきます。
また、画面イメージなど人の目に触れる部分も外部設計フェーズで実施します。
H3. ③内部設計
内部設計は外部設計より詳細な設計を行うフェーズで「詳細設計」とも呼ばれます。
サーバー設定や処理方法やデータ構造などといったパラメータに近い設計を実施します。この内部設計の結果を元に各機器の設定やプログラミングが実施されます。
H3. ④プログラミング
内部設計が完了したらそのパラメータを元にプログラムを作成する工程が「プログラミング」となります。別名「コーディング」や「開発」と呼ぶケースもあります。
プログラミングフェーズでは、ソフトウェアのコーディングだけでなく機器側の設定、Config作成なども同時に実施され、最終的に動作可能な環境を構築します。
H3. ⑤テスト
プログラミングが完了したら次はいよいよ「テスト」です。テストには大きく、各機能別の動作を確認する「単体テスト」、すべての機能を結合し動作試験する「結合テスト」、実際のビジネス要件に合わせたシステムになっているか確認する「システム最終テスト」の3段階に分かれています。またこれらの試験をパスすることで初めてお客様に提供できる仕組みとなります。
H3. ⑥リリース
テストまで完了したら、ようやくお客様への引き渡し、すなわちリリースです。リリース前にはお客様に提供するために必要なマニュアルや図書などを整備し提出する必要があります。
またリリースをもって、お客様と一旦「検収」となる、プロジェクトの区切りとなる点にもなります。
H3. ⑦運用・サポート
リリースが終わったからといってすべての開発が終了、というわけではありません。リリース後は運用・サポートを継続して実施します。特に運用開始後は想定しなかった不具合が発生する場合もあるため注意深く監視しておく必要があります。
また、運用サポートすることで利用者の新たなニーズを拾うチャンスともいえるでしょう。
H2. システム開発に必要なメンバー
システム開発の工程についてはご理解いただけたでしょうか?また次に気になることは「開発プロジェクトにはどのようなメンバーが必要なのだろうか?」ではないでしょうか?
次にシステム開発に必要なメンバーについて解説します。
H3. プロジェクトマネージャー(PM)
プロジェクトマネージャー(PM)はプロジェクト全体の統括責任者の位置づけです。QCDを中心としたリソース管理、およびお客様含む関係者との連携業務もPMのミッションとなります。それゆえ、システム開発の経験だけでなく、高いコミュニケーション能力を求められます。
H3. システムエンジニア(SE)
システムエンジニア(SE)は主にシステム設計に関する業務を実行するメンバーとなります。要件定義、設計、開発の取りまとめ業務など技術的な部分全般を担当します。
要件定義するため、単なる開発技術だけでなく業務に関する知見も必要となりますので、プログラマーと比べ広い知識と能力を求められます。
H3. プログラマー(PG)
プログラマーは詳細設計書にしたがって、コーディング作業を実施するメンバーです。コーディングすることから開発言語に対する知識を持っている必要があります。
H2. システム開発の費用相場
多くの人材を使い実施するシステム開発ですが、その費用相場や割合はどのような内容なのでしょうか?一般的なシステム開発の相場観や内容について解説しましょう。
H3. 人件費が8割以上を占める
システム開発費の実に8割は人件費が占めています。なによりシステム開発はエンジニアを含め多くの技術者がかかわるため、人件費が多くなってしまいます。
多くの場合人件費は1人月=20人日で計算されます。その相場観は地域や開発難易度によってもことなりますが、都市部におけるシステムエンジニアの割合が100〜150万円/人月程度、プログラマーが50〜100万円程度と言われています。
H3. 人件費以外の費用
また人件費以外にも必要となるコストがあります。主に設備費で、例えばサーバ本体やソフトウェアにかかる費用です。最近ではクラウドサービスを利用することが増えてきているため、これらクラウドサービス利用料などもあらかじめ想定しておく必要があります。
H2. システム開発を依頼する際に気を付けるポイント
ここまで開発手法などについて詳しく解説しましたが、いかがだったでしょうか?開発のいろはについて説明しましたが、気を付けるポイントが分からない、という方もいらっしゃるのではないでしょうか?ここでシステム開発にあたり注意すべきポイントについて紹介します。
H3. システム開発の目的を明確にする
まず1つ目は目的の明確化です。最初にもお話ししたとおり、システム開発は業務課題の解決が目的です。よってこのシステム開発で何を解決すべきなのかといった目的を明確にしましょう。目的があいまいなまま開発を進めると後々トラブルのもととなりますので、しっかりと定義するようにしましょう。
H3. 信頼できる会社かどうか確認する
2つ目は開発を依頼する会社の信頼性を確認することです。システム開発は自社だけで実施するのはなかなか困難ですので、専門知識のある会社に委託することをお勧めしますが、同時に信頼できる業者を選ぶことも重要となってきます。
会社を選ぶ際はその会社の実績や経営状態などを確認するようにしましょう。また、アサインされるメンバーの経歴や携わってきた案件実績なども確認することをおすすめします。
H3. 要件定義に不備がないようにする
3つ目は要件定義に抜け・漏れがないようにすることです。要件定義書はその後の開発依頼するにあたってまさに「開発条件」となる重要な要素となります。抜け漏れがあれば求めていた機能が盛り込まれないだけでなく後々追加費用を必要とする、といった問題にも発展しかねません。しっかりとチェックし不備がないようにしましょう。
H3. 開発後にかかる費用も予算に入れて検討する
4つ目は開発後にかかる費用を考慮する点です。システム導入は開発だけでなくその後の維持にも費用が必要となります。例えば保守費、運用費、最近ではクラウド利用にかかる月額利用料など多くの費用を必要とします。抜け漏れがあり、後々追加費用を、ということにならないようあらかじめ検討するようにしましょう。
H3. 見積もりをとって費用対効果を確認する
5つ目は費用対効果の確認です。よくありがちなパターンとして、素晴らしいシステムを開発、導入したが結果コストをかけすぎて当初の目的をはたせないといったケースが見受けられます。必ず導入前にかかる費用を元に費用対効果を確認するようにしましょう。
H3. 頻繁なコミュニケーションを心がける
6つ目は関係者とのコミュニケーションです。開発は多くの関係者が連携して実施する業務となりますので密なコミュニケーションをとることが成功のカギといえます。PM中心に関係者と密な連携を心がけましょう。
H2. システム開発を進める上で覚えておきたい単語
システム開発時に注意するポイントとしてコミュニケーションを挙げました。コミュニケーションをとるにあたって共通の言葉で話をする必要がでてきます。ご存じかもしれませんがシステム開発では多くの略語がでてきます。そこで参考までにシステム開発を進めるにあたって覚えておくとよい単語・略語についてご紹介します。
単語 | 意味 |
---|---|
SP(System Plannning) | 企画 |
SA(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) | プログラム構造設計 |
M(Manufacture) | 製造 |
UT(Unit Test) | 単体テスト |
CD(Cording) | コーディング |
PG(Programing) | プログラミング |
IT(Integration Test) | 結合テスト |
ST(System Test) | システムテスト |
OT(Operation Test) | 運用テスト |
H2. まとめ
いかがだったでしょうか?システム開発は多くの手法があり、開発に向け多くのスキルセットや専門知識を必要とします。内部でメンバーをそろえる方法もありますが、より素早く対応するには専門知識をもった会社に委託することもおすすめです。
システム開発の依頼を検討されている担当者の皆様は、 どんな開発手法の種類やシステム開発の手順といったことを事前に知っておくと外部の業者ともスムーズにやりとりができるでしょう。