本文へスキップします。

ページタイトル

COLUMNコラム

COLUMN

システム開発でよくある課題とその要因は?
システム開発を効率化する「テスト自動化」等の改善策をご紹介


システム開発に時間やコストがかかりすぎるという課題に直面する企業は少なくありません。この記事では、システム開発の生産性を低下させるさまざまな要因を解説しつつ、テスト自動化を中心に生産性向上につなげるためのポイントを紹介します。

                                                
             
                                                打ち合わせイメージ

ビジネスの拡大・成長のためには、社内でのシステム開発が不可欠であるものの、開発に時間やコストがかかりすぎるという課題に直面する企業は少なくありません。また、現行システムの保守運用に手一杯で、新規開発が後回しになってしまうこともあるでしょう。
本記事では、システム開発でよく見られる課題や、効率を悪化させる要因を解説し、それらの改善策を紹介します。

システム開発でよくある3つの課題

システム開発を効率化するには、現状の課題を明らかにして、適切な改善策を実行していくことが重要です。ここでは、どの現場でも発生しうる代表的な課題を3つ紹介します

[課題1]開発コストがかかりすぎる

システム開発費用は、システム規模や開発機能、採用技術などの要因によって大きく変動します。なかでも大きく影響をおよぼす要因が、システム開発費用の大半を占める人件費です。開発規模が大きくなるほど多数のエンジニアが必要になり、開発期間も長期化するため人件費がかさみます。コストを抑えるためには、無駄のない人員・期間で開発をする必要があり、「効率化」が求められます。

[課題2]短期間で開発ができない

日々変化する顧客・市場ニーズに応えるためには、スピード感のあるサービス提供・改善が不可欠です。そのため、サービス提供・改善を支えるシステムも短期間での開発・リリースが求められます。しかしシステムを短期間で開発・リリースすることは、品質低下を招く恐れもあり容易ではありません。

[課題3]スキルのある開発エンジニアの確保ができない

2019年に経済産業省・みずほ情報総研株式会社が報告した「- IT 人材需給に関する調査 -調査報告書」によると、IT人材需要に対して2025年時点で約36万人、2030年時点で約45万人ものエンジニア供給が不足すると予測されています。すでにエンジニアの確保に苦戦する企業が多いなか、今後さらに状況は悪化しそうです。
システム開発を効率化することで、少ないエンジニアで多くのアウトプットが出せるような仕組みづくりが重要です。

                                                                                  

システム開発の効率が悪化する3つの要因

IPA(独立行政法人情報処理推進機構)は、ソフトウェア開発における工数、規模、生産性、信頼性などを中心に分析したデータ集を、2005年より適宜公開しています。
2022年9月26日に公開された「ソフトウェア開発分析データ集2022」によると、ソフトウェア開発の生産性は、2014 年度~2019 年度のデータとの比較で「低下傾向は弱いながらも継続している」としています。
ここでは、システム開発の効率が悪化し、生産性が低下してしまう原因として考えられる主な要因を3つ紹介します。

[要因1]開発工程・作業内容にムダが存在する

開発工程や作業内容にムダがあり、生産性を下げている場合があります。例えば、以下のようなケースが考えられます。
・同じ工程を手動で繰り返すことで集中力が途切れ、ヒューマンエラーが発生する。主にテスト工程で見られる
・開発工程ごとに担当者が分かれているため、勘違いや情報のもれなどの共有・引継ぎミスが発生する
・要件定義、設計、プログラミング、テストといった各工程で実施すべき作業や成果物が標準化されていない
・社内承認フローが複雑で意思決定に時間がかかる
・過去のシステム開発プロジェクトで培ったナレッジ・ノウハウが共有されていない
システム開発工程や作業内容が最適化されていないことで、予算超過やスケジュール遅延などの問題につながります。
特にテスト工程は、システム開発全体のなかでも多くの時間・作業を必要とする工程であり、ムダな手作業によって生産性が悪化しやすい工程です。

[要因2]開発スキル不足

エンジニアの開発スキルが不足している場合、生産性は低下します。例えば、「設計・プログラムにムダや抜けもれがあり手戻りが発生する」、「仕様書・設計書の内容が理解できず作業に時間がかかる」、「テストでエラーや不具合を見逃しリリース後にトラブル対応に追われる」などが挙げられるでしょう。
近年は、テスト自動化ツールのように、スキルや人手不足を補い、システム開発の効率化に役立つツールが登場しています。しかし、こうしたツールを導入していない、または使いこなせていないケースもあります。「日々の業務が忙しくて手が回らない」「エンジニアとしての能力強化・開発生産性向上に関心がない」などの理由から、製品の選定・導入・利活用ができていないことも、生産性悪化の一要因です。

[要因3]テスト工程などの属人化

特定の担当者しか作業内容や進め方を把握していない「属人化」も、システム開発の効率化を阻む要因です。属人化が進んでいる場合、担当者の不在時に問題が起きると業務を進められない、システム関連の問合せに応じられないといった状況に陥り、生産性が悪化します。また、より良い方法があったとしても既存のやり方にこだわり、新しい技術・スキルの採用や業務改善を実現しにくいといった問題もあるでしょう。
特にテスト工程は、属人化が発生しやすい工程のひとつです。例えば、テスト担当者の得意・不得意によってテストケースの抽出もれが発生する、網羅性を担保するために必要以上にテストパターンを洗い出す、などの影響が考えられます。
テストの実施方法や観点、確認項目が各担当者任せになっていると、生産性の悪化やシステム品質のバラつきが発生しかねません。

                                                                                   

システム開発を効率化するための3つの改善策

システム開発の効率が悪化する要因を踏まえ、考えられる改善策を3つ紹介します。

[改善策1]テスト工程の自動化

テスト工程では、テスト計画、テストケースの設計、環境構築、テストコード作成、テスト実施、検証と多くの作業が発生します。
ソフトウェア開発分析データ集2022 」のデータでは、開発5工程(基本設計、詳細設計、製作、結合テスト、総合テスト)におけるテスト工程の占める割合(中央値)は、新規開発で約32%、改良開発で約34%にもなっており、テスト工程をいかに効率化できるかが、システム開発全体の生産性向上を実現する重要な要素だとわかります。
テスト工程を効率化するには、テスト自動化ツールの活用が効果的です。
テスト自動化ツールは、アプリケーションのテスト作業を効率化するためのツールで、テストコードの自動作成・実行などの機能を備えています。システム開発のたびにテスト仕様書・コードを書いているとエンジニアの負担は増加します。テスト自動化ツールを導入することで煩雑なテスト工程を自動化し、手作業による作業ミスを抑止することで、開発期間短縮・コスト圧縮の効果が期待できるでしょう。
また、テスト自動化ツールはテスト工程のなかでも、同じテスト内容を何度も繰り返し実行する特性を持つ「リグレッションテスト」との相性が良く、一度テストコードを作成すれば、ミスなく何度でもテストを実施できます。
機能追加や改修が頻繁に発生する場合にはリグレッションテストの必要性が大きく、テスト自動化ツールはシステム品質を担保しつつ効率化を進められる有効な開発ツールといえます。
リグレッションテストについて詳しくは、「リグレッションテストとは?目的や重要性、実施の際の3つのポイント」をご参照ください。

[改善策2]共通化・標準化を進める

システム開発の進め方、成果物を共通化・標準化することで、エンジニア同士が共通認識をもって作業を進め、ムダな作業を軽減できる効果が期待できます。具体的には、以下のような取り組みが挙げられるでしょう。
・IPAが定義している「共通フレーム」に沿って、自社のシステム開発で実施すべき作業内容を定義
・ツール・環境・用語・ルールなどを規定したガイドラインの策定
・標準成果物の定義や成果物の標準フォーマットを作成
また、共通化・標準化を進める際は、過去のシステム開発プロジェクトで培ったベストプラクティスおよび反省点を、ガイドラインやフォーマットとして組み込むことが重要です。過去のナレッジを有効に活用することで、新規システム開発プロジェクトを円滑に進められます。

[改善策3]ユーザー部門との協力体制を強化する

システム開発を円滑に進めるためには、エンジニアだけでなく、システム開発にかかわるすべてのステークホルダーの協力を得ることが重要です。
特に、システムを実際に利用して利益を生み出すユーザー部門との関係強化は欠かせません。システム開発の初期段階から、影響がおよぶ範囲のユーザー部門を特定し、密にコミュニケーションを図ることが大切です。
協力体制が適切に構築できていれば、ユーザー部門の意向がシステムに反映されやすく、要件・システム仕様の認識齟齬(そご)が双方向で起こりにくくなります。そのため、システム開発中の仕様変更・手戻りといったトラブルを未然に防ぐことが可能です。

                                                                                   

テスト自動化ツールなどで課題解決しシステム開発を効率化しよう

システム開発の生産性を悪化させる「開発工程・作業内容のムダ」「開発スキル不足」「属人化」などの課題は、社内体制の見直し、ツールの有効活用などで改善が望めます。
テスト自動化ツールといった、開発を支援するツールの導入も有効です。自社に合った製品を選定すれば、早い段階から効率化の効果を感じることができるでしょう。ぜひ適切なツールを選定して柔軟でスピーディーなシステム開発を実現し、利益につなげてください。
なお、テスト自動化ツールは数多く存在しますが、ツールを操作できる人材の不足やメンテナンスの手間などから、導入したものの活用できていないケースも見られます。「使い勝手」や「将来的なメンテナンス性の高さ」に注目して選ぶこともポイントです。
SRAが提供する「Testablish」は、誰にでもわかりやすい簡単な操作で、ノンプログラミングでテストコードを作成できるため、専門的な知識・スキルがなくても運用することができます。
まずはお気軽に、無料試用版で実際の操作感をご体験ください。

Web・GUIアプリのテスト自動化ツールなら「Testablish」

参考:
ITシステムに関するテストについては|Sqripts
システム開発を効率化するには|magicsoftware
システム開発のコスト削減方法とは|magicsoftware
社内システムの開発を効率化するには|magicsoftware
システム開発を効率化させる方法とは?失敗する原因もあわせて紹介!|ITトレンド
ITエンジニア不足の現状と対応策、企業が行うべきことは?|マンパワーグループ
システム開発の現場でよく発生する3つの課題と対応策|emeao業者選定ガイド
システム開発の課題と対応策とは?|クラウド実践チャンネル
ソフトウェア開発において生産性と信頼性を両立するには!?|VES

一覧に戻る