1. ものづくりとソフトウェア開発の同異点
いま「ものづくり.com」サイト内にある品質工学、品質管理に関するコンテンツは、ものづくり、製造業に関するコンテンツがほとんどです。そこで「ものづくり=ハードウェア」という意味で捉えた時、ハードウェアだけではなくソフトウェアに関する品質管理について、コンテンツをご提供することにしました。
最初に、ものづくりとソフトウェア開発では、何が違うのか整理します。
インターネットで「ものづくり、ソフトウェア開発、ちがい」とワード検索していただくと「ものづくりとソフトウェア開発は同じだ」という意見と「ソフトウェア開発をものづくりと同じと認識することは大間違いだ」という両意見を見つけることができます。ここでは、この議論の正解を見つけることが目的ではなく「ソフトウェア開発の品質をどうすれば向上できるか」について考えていくことが目的です。ですので、品質管理という観点から、ものづくりとソフトウェア開発における同異点を整理してみます。
①作るもの(ゴール)
お客様に役立つものを作る、という意味で同じですね。自動車、飛行機、文房具と、スマートフォンのアプリは、どちらも使う人の役に立ちます。また、自動車や飛行機の中に入っているソフトウェアも、結果的に製品トータルとして使う人の役に立ちます。
②作る工程(プロセス)
大枠でいうと「企画、設計、製造、試験」になるので、同じですね。
③作る人
エンジニア、技術者が作る、という意味では、同じですね。
ただ、例えば建物の設計には建築士の資格が必要ですが、ソフトウェアの設計には資格は不要である、という軸での違いはあります。ですが、建築以外の製品の中で、設計するために必要な資格があるほうが少ない気がします。
④作るためのお金、予算規模
製品にも、1円のものから億単位のものまで色々ありますが、ソフトウェアも同じように、開発規模は大小さまざまです。
⑤設計技法
オブジェクト指向、MVCモデルなどの技法をはじめ、ウォーターフォール型、アジャイル、プロトタイプといった各種プロセス、それをサポートするツールなど多くの技法があります。一方で、ものづくりにも社内、業界内に多くの技法があって日々、新しい技法が出てきています。
⑥品質管理手法
例えば、私が新入社員だったころは、システム開発の現場でも、TQC (Total Quality Control:全社的品質管理)、TQM(Total Quality Management:総合的品質管理)を使っていた時期がありました。QC7つ道具、QCサークル活動にも参加していました。こうした動きは、ものづくりでもソフトウェア開発でも同じですね。その後、PDCAサイクルが導入され、PMBOK(Project Management Body of Knowledge:プロジェクトマネジメント知識体系)などのマネジメント手法が使われるようになってきました。ちょうど同じころ、2004年に情報処理推進機構(IPA)が設立されました。今では、ソフトウェア開発の品質管理に必要な情報は、IPAのサイトで入手できます。
いかがでしょうか。こうした要素を見比べてみると、ものづくりとソフトウェア開発に違いはありません。
2. さまざまな手法で品質を評価
では、なぜWindowsやスマホアプリは、私たちが使っている間にもどんどんバージョンアップされるのでしょうか。これは見方によれば、不完全な製品をリリースしているようにもみえますよね。一つの理由がこれです。「ソフトウェアのテストパターンはほぼ無限にあるため」リリース前に全パターンを網羅した試験は現実的に不可能であるためです。
もう一つの理由が「ソフトウェアは目に見えにくい」という特徴があるためです。例えば、ATMでお金を引き出せますよね。見えているのは「キャッシュカードを入れて暗証番号4桁を押すと指定したお金が出てくる」という部分だけですが、この裏にあるシステムは、何万人月もの技術者が開発した何Mステップというソフトウェアが動いています。
そこで、登場するのがテスト手法です。制御フローテスト、デシジョンテ...