中野 雅俊
こんにちは。事業開発を担当している成清です。
前職のソフト会社でのエンジニア経験を元に、ソフトウェア開発工程とテストの心得についてご紹介します。
製造業でデジタル化を推進している方に、ソフトウェア開発について少しでも知っていただければ幸いです。
基礎的な内容が多いので、「これからデジタル化を推進する」「最近デジタル化を始めた」という方におすすめの記事です。
まずはソフトウェア開発の工程について解説します。
ソフトウェア開発の工程を大きく分けると、「企画 → 要件定義 → 設計 → 開発 → テスト → 運用 → 保守」に分けることができます。(参考:キタミ式イラストIT塾応用情報技術者2018年)
ウォーターフォールモデル(*1)、アジャイルモデル(*2)など様々な開発手法(*3)がありますが、それぞれの手法を構成する要素は変わりません。
開発工程の期間や、回数などが異なっているだけなので、まずは、複雑な開発手法の前に開発工程をしっかりと理解することを推奨します。
それぞれの開発手法のメリット・デメリットは、また別の記事でご紹介します。
テストの心得についてお話する前に、なぜテストが重要なのかを少し触れておきます。
理由は2つあります。
1つ目は、テスト工程は、ソフトウェアの品質・コンセプト・利用しやすさをコントロールする工程だからです。
ユーザが利用する前の最後の工程であるため、最終的なソフトウェアの質を左右する重要な役割を担います。最後の砦をイメージしてもらえると分かりやすいと思います。
しかし残念なことに、ただの確認作業であるという印象が強く、軽視してしまう人も多いようです。大切な工程であるにも関わらず、テストについて触れられている記事は少ない印象があります。
2つ目は、ソフトウェアをIT企業に外注した場合でも、事業会社(発注元)が、検収作業(*4)として実施することがあるためです。
発注している身としては、IT企業に全て任せきりの状態になるのは防ぎたいですよね。
テストにおいて最も大切なことは、テスト開始前にテスト条件と項目を正確に決めている、かつ、ステイクホルダーがその条件と項目に合意していることです。
テストでは、ソフトウェアが完璧であることを証明できません。なぜなら、ユーザーの利用条件と操作パターン全てを確認するためには、膨大な時間が必要となり、現実的に不可能だからです。
テストをして証明できることは、ソフトウェアが不具合なく完璧であることではなく、「事前に決めたテストの条件と項目を問題なく実施できること」です。つまり、条件と項目の内容で良し悪しが決まります。
とあるソフトウェア開発で、事前に合意の上、利用頻度が高い機能のテスト項目を多くしたという例があります。
また、新規事業の場合、コンセプトを立証する段階では条件を緩くテストして、製品化するときに厳しくテストをするということも行われます。
このように意図的に条件と項目を制限したり強化したりすることで、ソフトウェアの開発スピード・品質・コンセプト・利用しやすさをコントロールすることが可能です。
みなさんも、IT企業にソフトウェア開発を依頼する際には、事前にテスト条件と項目を吟味するように心がけてみてはいかがでしょうか。
最後に、ソフトウェア開発をする際に考慮すべき点をお伝えします。
この記事の冒頭で説明した通り、1つのシステムを作るだけでもこれだけの工程が必要です。ソフトウェア開発期間は、規模にもよりますが、数か月~1年ほどかかることが多いです。
安易にソフトウェア開発ができるわけではないので、自社オリジナルのシステムを作ってデジタル化推進を検討する場合は、そのソフトウェアで何を実現したいのか、本当にそれがオリジナルのシステムでなければならないのか、既存のシステムを活用することができないのか、などを慎重に考えることが大切です。
デジタル化のためにソフトウェアを開発する必要が出てきた際に、この記事の内容を少しでも思い出していただけると幸いです。
( *1 ) ウォーターフォール開発:1970年に提唱されたソフトウェア開発手法。開発作業を複数の工程に分け、各工程の成果をドキュメントにまとめながら、次の工程へ進み、ソフトウェア開発の品質を確保する。上流から下流へ水が流れ落ちるようにソフトウェア開発を行うことに由来する。(大塚紹介 IT用語辞典より)
( *2 ) アジャイル開発:システムやソフトウェアの開発手法の1つ。アジャイル(agile)は英語で「機敏な」「素早い」という意味。これまでの開発手法と比較し、開発期間が大幅に短縮されるのが特長である。(大塚紹介 IT用語辞典より)
( *3 ) 開発手法:開発の進め方
( *4 ) 検収作業:一般的には、納入品が発注の通りの内容であるかを確認して受け取ること。システム開発においては、システムが仕様に合致しているかを確認する検査を指す。検収は受注者から発注者へと責任が移る分岐点であるため、発注者は念入りに実施することが重要だ。(大塚紹介 IT用語辞典より)