システム開発が遅れる主な原因と対策(開発フェーズ編)

システム開発プロジェクトが遅延する原因についてお話します。

開発フェーズでの問題発見は時間が経てば経つほど、リカバリが難しく、リリース時期に大きく影響が出てしまいます。このフェーズでの遅延要因を明確にして、それぞれ事前に対策を講じることが、プロジェクト全体の成功に繋がります。以下に、開発フェーズにおける主要な問題点とその対策を詳述します。

1. 開発体制について

開発フェーズにおける体制は、プロジェクトを進める上での基盤となります。適切なリソース配置されていない場合、次のような問題が発生する可能性があります。

・不十分なリソース計画:プロジェクト開始時に適切なリソース計画が立てられていないと、必要な時に必要なリソースが確保できず、スケジュールが遅れます。そして、開発チームの負荷が高まり生産性の低下につながる等の悪影響が考えられます。

・スキルセットの不一致:開発チームのメンバーがプロジェクトの要求に適したスキルを持っていない場合、効率的な作業が難しくなります。特に経験不足のメンバーが多いと、コードの品質が低下し、バグの発生率が増加します。また開発体制において、プログラムを開発するエンジニアだけを配置すればいいわけではありませんので、ここも注意が必要です。

弊社では開発体制について、プロジェクト計画段階で以下のような対策を行っています。

・余裕を持ったリソース計画:システム開発はコストが大きく掛かるため、配置するエンジニアもギリギリにするプロジェクトもありますが、計画段階から余裕がないと、後々のリカバリ策に影響が出ます。システム開発は遅れが発生しないことの方が少ないので、弊社では発生した際に打てる手を増やすためにも計画段階のリソースは余裕を持っており、調整弁として機能するようにしております。

・適切な開発体制:システム開発は規模にもよりますが、大きな1チームではなく、細かいチームに分かれて開発を行うことがほとんどです。そのため、弊社ではサブチーム毎にリーダを配置し、品質・スケジュールを管理する目的で、細かくレビューを出来るようにしています。これらは開発フェーズ中でもある程度の品質担保が出来ますので、効果が大きいです。

2. ドキュメントについて

開発フェーズにおけるドキュメントは大きな役割を持ちます。システム開発を安価に済ませる為、仕様書や設計書を簡易的に済ませたり、割愛する場合がありますが、その判断は以下のような問題を引き起こす原因となります。

・仕様の認識齟齬の増加:ドキュメントへの記載不足により開発チームへの情報共有が不十分になります。ただでさえ、ビジネス要件をシステムの機能要件に落とす過程で認識齟齬が発生しやすくなります。これにより、作業の重複や無駄が生じ、手戻りが増加する結果となってしまいます。
・問題の早期発見と解決の遅れ:ドキュメントを整備する過程で仕様が不明確な点を洗い出す効果があります。また潜在的な仕様バグもこの段階で見つかるケースがありますので、適切なドキュメントを作らないと課題の発見がギリギリになってしまい、結合テスト時に発生するとプロジェクトの成功に致命的な課題になりえる場合もあります。

ドキュメントについても、弊社での取り組みをご紹介します。

・適切なドキュメントを作成:システムの内容によりますが、機能一覧、業務フロー、システム構成図、画面設計書、API定義書、バッチ設計書など多くのドキュメントを作成することになります。これらはエンジニアにどういう機能を作るか明確に伝達するためのものです。弊社では計画段階で対応するドキュメントを洗い出し、エンジニアに合わせた言語に翻訳してから渡します。昨今では日本語が出来ない人材も多いため、適切な言語も意識して取り組んでいます。

・ドキュメントを最新の状態に保つ:システム開発では開発途中で気付く仕様の漏れやバグが発生します。開発フェーズの後の方になるとスケジュールに余裕もなく、スピード感を持って対応する際に、ドキュメントに反映しないケースが出てきます。そのために、タスクに直接指示を書くのではなく、必ず弊社ではエンジニアの指示はドキュメントを通じて行うルールにしております。

3. コードへのアプローチ

システム開発においては、様々な開発環境や言語、ツールが存在します。その内容によっては、コードが特殊になったり、複雑になったりして、問題の原因となることもあります。

・コードの複雑化と品質低下:慣れていないコードや急いで実装したコードは複雑化しやすく、バグが発生しやすくなります。また、コードの可読性が低下し、メンテナンスが難しくなります。
・リファクタリングの必要性:蓄積された技術的負債を解消するために、リファクタリングが必要となりますが、これには多大な時間とリソースが必要です。リファクタリングが遅れると、問題はさらに深刻化します。開発スケジュールの中にリファクタリングの過程を入れることはそれほど多くないので、注意が必要です。

コードを実装する際には事前に対策を打つことでバグの低下か行うことができます。弊社で行っている対策をこちらでは紹介します。

・テストコードの徹底:テストコードとはコードが正しく動作するかテストするためのものになります。弊社ではテストコードを書いて、コードをコミットする際にチェックできるようにしています。テストコードを書くための工数は必要ですが、自動化する恩恵が大きいため、弊社ではコード記載時のスタンダードにしています。またテストコードを書くことで仕様の理解にも繋がります。仕様を正確に理解するとコードが慣れていなくても、適切な記述に出来るようになります。

・レビューの徹底:体制面でもお話しましたが、コードについてはテストコード以外にもリーダによるレビューを徹底しています。こちらもコードコミット時のフローに組み込むことで常に流れるようにしてあります。前項までのドキュメントの内容が的確だとこのレビュー時のチェックも適切にすることができます。

4.まとめ

いかがでしたでしょうか。開発フェーズとはいえ、プロジェクト計画段階からアプローチしなければいけないことが多くあったと思います。システム開発は大きな予算が掛かるため、安易にリソースや工程を減らしてしまいがちです。しかし、それでは成功も難しくなるため、体制や工程を減らすのではなく、適切な体制と工程は維持しつつ、開発する機能を絞るほうがプロジェクトの成功する確率が高くなります。システム開発に失敗しがちな場合はこの点を意識してスモールスタートしてみましょう。

関連記事

カテゴリー:

ブログ

情シス求人

  1. チームメンバーで作字やってみた#1

ページ上部へ戻る