システム開発の発注は、大きく4つの方法があります。発注側からすると、できるだけコストも抑えて効率よく開発を進めたいというのが本音でしょう。
では、どのようなことを意識してシステム開発を発注すれば、システム開発は成功するのでしょうか。
今回の記事では、システム開発を発注する際に知っておくべきことや発注側の役割についてご紹介していきます。システム開発の発注を考えている企業の方で、発注時に何を意識すれば良いかや発注側の役割など知りたい方は多いと思います。現在困っている方は是非参考にしてみてください。
システム開発を発注する4つの方法
新規でシステム開発を発注する方法はいくつかあります。
- システム開発企業を自身で見つけて発注
- 案件紹介サイトなどに登録し応募してきた企業に発注
- 営業でコネクションのある企業に発注
- フリーランスエンジニアに発注
上記4つは、どれが正解でどれが不正解というものではありません。自社の状況や開発するシステムの規模によって柔軟に発注先を変えるのが賢い選択だといえます。例えば、システム開発を初めて行う企業の場合は、システム開発に定評がある企業のホームページなどから実績を確認し企業を選定、発注する方法がおすすめです。比較的大規模なシステム開発を検討する場合などは、案件紹介サイトを活用するのも手です。
フリーランスエンジニアにシステム開発を発注する場合、コスト的には企業に依頼するよりも安い場合が多いです。しかし、品質やセキュリティの観点を重視する場合は避けた方が無難な場合もあります。確実な正解はないので、まずは、定評のありそうな企業に相談することから始めましょう。
システム開発の発注時に注意すること
次は、システム開発の発注時に注意することをご紹介します。例えば、下記項目などに注意しましょう。
- 発注範囲
- 仕様変更
- 情報漏洩
- 納期
- 品質
それぞれどのようなことに注意する必要があるかを詳細に解説していきます。
発注範囲
発注を検討するとき、事前に発注範囲を明確化しておく必要があります。システム開発には下記の工程があります。
- 要件定義
- 設計
- 開発
- テスト
- 運用 ・ 保守
まずは、開発したいシステムのどこからどこまでを外注するかを検討しましょう。例えば、社内の業務を一番理解しているのは発注側なので、全工程を発注するのではなく、要件定義や設計工程は発注側で行い、開発やテスト工程のみを分割して発注する、などと検討します。
ただし、システム開発の知識を持っている人材が発注元企業にいない場合や、開発したいシステムの規模が大きい場合は、要件定義工程から発注した方が妥当と考えられます。もちろん、この発注範囲が多いほどコストはかかります。発注範囲については、事前に関係者を交えて熟考し明確化しておきましょう。運用 ・保守工程はどの程度の期間面倒を見てもらかなども契約に盛り込む必要があるため、ランニングコストと予算、利益などを考慮して妥当な期間を決定しましょう。
仕様変更
システム開発において、仕様変更に関してはコスト面で非常に注意が必要なポイントです。仕様変更におけるシステム開発の影響範囲は、開発したプログラムや開発途中のプログラム、場合によってはシステムの動作環境などに及びます。プログラムの修正はプログラムを1から作成するよりも難解な場合が多いです。プログラムを修正するための影響範囲や追加テストケースなどを考えた上で修正を行う必要があり、余計な工数がかかります。もちろんこの工数には追加費用が発生します。発注時に仕様変更が発生するかどうかを意識し、できるだけ発生しないように作り込む、またはアジャイル開発手法を採用し、仕様変更に対応できるようなシステム開発の仕組みを考える必要があります。
情報漏洩
システム開発を発注する場合、自社の保有する情報を発注先企業に提供する必要があります。保有する情報の中には自社の取引先企業や、売上に直結する情報、個人情報などが含まれる場合があります。これらの情報を秘匿した状態で、システム開発を行うことはほぼ不可能です。そこで、発注先企業とは秘密保持契約(NDA)と呼ばれる契約を結び、システム開発先の企業が保有する情報を外部に漏らさないという契約を締結した上で、システム開発の発注を行います。
発注する前に、必ず発注先企業の情報セキュリティ体制を確認しておきましょう。
納期
納期に関して意識することは、納期が遅延する可能性の有無です。システム開発を発注する際には、発注先企業と納期を調整した上で、契約を締結する必要があります。このとき、納期を確実に守れる開発体制を整えてもらうことは大前提です。しかし、想定外の事件はしばしば起こるものです。このような事態を想定して、開発バッファを設けたり、開発の進捗をこまめに発注側に確認し、遅延にすぐに対応できるようにしておく必要があります。
品質
システム開発を発注した際、最終納品物の品質に関しても注意が必要です。いざシステムが導入され、ユーザが使用したときに納得のいかないものやバグが多数存在するなど品質が悪いと、社内外からのクレームにも繋がり、発注した側としては非常に困った事態に陥ります。システムの品質は開発を行った発注先企業の開発経験や技術力に依存します。そのため、品質に重きをおくのであれば、コストはかかりますが、フリーランスエンジニアは避けて、できるだけ経験豊富な法人に依頼するようにしましょう。また、発注先企業の選定時にも、品質意識の高さに定評のある企業に依頼をし、契約時に念入りに品質に関する取り決めをかわすようにしましょう。
システム開発における発注側の3つの役割
システム開発を発注する上で、システム開発にはどのような役割があるかを理解しておくとスムーズに開発をスタートできます。細かく分けると他にもたくさんありますが、少なくとも以下3つの役割については、しっかりと理解しておきましょう。
- プロジェクトマネージャー
- プロジェクトリーダー
- 開発者
それぞれの役割ごとに責任範囲やプロジェクトに対して行うことが違いますので、それぞれ詳細に説明していきます。
プロジェクトマネージャーの役割
プロジェクトマネージャーは、プロジェクトの人員配置や進行の管理、なによりプロジェクトを完成に導くことが主な役割です。具体的な業務内容としては、スケジュールに遅れがないか、予算などが計画通りに進んでいるかを適宜確認します。仮に遅れが発生している場合は、必要なリソースを調達するか、スケジュールを見直しスケジュールの組み方を調整する、遅延が発生する旨を客先に連絡し調整する、などの方法を取ります。プロジェクトマネージャーは開発を依頼された側と、発注した側の企業それぞれに配置しておき、定例などを通して進捗や状況の共有を行います。
プロジェクトリーダーの役割
プロジェクトリーダーは、システム開発における現場単位のリーダーです。プロジェクトマネージャーの意向を開発者に伝え、開発チームメンバーを管理しシステムが正しく構築されているかを確認することが主な役割です。具体的な業務内容としては、メンバー単位の進捗管理、プロジェクトを進めていく上でのメンバーが持っている課題や悩みの解消などです。進捗管理に関しては、プロジェクトマネージャはプロジェクト全体の進捗管理を行いますが、プロジェクトリーダーは開発する機能を担当しているメンバーの進捗を管理します。体制としては、開発するシステムの機能ごと、システム基盤やアプリごと、データベースごとの単位などでリーダーをたてる場合もあります。
開発者の役割
開発者は、プロジェクトの設計を行うシステムエンジニアと、設計をもとにプログラミングやテストを行うプログラマーが主な役割です。発注側が開発者とやり取りすることは、細かい仕様決めや受け入れテスト時程度で、普段は大きくは関わることはありません。
システム開発で発注側が注意することまとめ
システム開発を発注する際に押さえておくべきことと注意点をご紹介しました。
- システム開発を発注する4つの方法
- システム開発企業を自身で見つけて発注
- 案件紹介サイトなどに登録し応募してきた企業に発注
- 営業でコネクションのある企業に発注
- フリーランスエンジニアに発注
- システム開発の発注時に注意すること
- 発注範囲
- 仕様変更
- 情報漏洩
- 納期
- 品質
「システムを開発したいがどのように相談すればよいか分からない」「企画段階から一緒に考えてほしい」などのご要望に応じるため、弊社ではDXワンストップソリューションサービスをご用意しております。
本サービスの強みは、ベンダー選定から設計・開発、導入支援、テスト、運用・保守、BPOまで、一貫したサービスを提供しており、どのようなニーズにもお答えすることができることです。
是非、お気軽にご相談ください。