ERP(統合基幹業務システム)、生産管理システム、人事・給与システムなど、製造業の情報システム部門が携わるシステムは多岐にわたります。また、新型コロナウイルスの流行によりBCP(事業継続計画)の重要性が叫ばれる中、もう一度システムを開発し、保守・運用し続ける体制を見直すことが必要ではないでしょうか。
そんな中で改めて押さえていただきたいのが、ウォーターフォール、アジャイル、スパイラルなど、システム開発方式の違いについてです。ウォーターフォール型開発の文化が根強く、各開発方式のメリットとデメリットが理解されているとは言い難い状況です。
本記事では、情報システム部門を中心とした製造業のすべての方に向けて、システム開発方式とその違いを一から解説します。
そもそも、システム開発方式とは何かについて最初に定義しておきましょう。
それは、「企画→設計・開発→テスト→導入→運用・保守」という工程を経て業務システム活用を成功に導くための手法をモデル化したものです。形ある製品を世に送り出す流れとも共通しているため、製造業に従事する方であればITエンジニアでなくとも理解することはたやすいでしょう。
その方式は下記のように多岐にわたります。
開発方式はこれですべてではなく企業独自の手法でカスタマイズされたり、技術の発展やトレンドとともに新たな方式が生まれるものです。
とはいえ、代表的な方式とそのメリット、デメリットについて押さえておくことには意味があります。
ここからはウォーターフォール、アジャイル、スパイラル、プロトタイピングの概要とメリット・デメリットについて見ていきましょう。
ウォーターフォール方式は、基幹システムの開発において長く支配的だった手法です。ウォーターフォール(滝)に水が流れるように、開発の各工程を一つ一つ終わらせ、次に進んでいきます。シンプルで理解しやすく全体の予算感・スケジュール感を把握しやすい一方、要件定義の段階で時間がかかったり、突発的な変更に対応するのが難しかったりするという問題があります。
機械や車両、基幹システムなど、最初に全体像を固める必要のある成果物を作成する場合は、ウォーターフォール型の開発が適しているとされてきました。しかし、ものづくりのサービス化が進み、スピード感が求められるようになったことで、上記のハードウエア・システムにほかの開発方式が導入される流れも生じてきています。
アジャイル開発は、アジャイル(agile:素早い)という言葉を冠する通り、スピード感が特徴的な手法です。企画の段階であえて要件を固めず、おおまかなスケジュールや仕様が決まったら、設計へとコマを進めます。そうして、機能の一部から実際の開発を始めてしまうのです。
そこからは「設計→実装→テスト→修正」を繰り返します。この1セットをイテレーション(反復)といい、何度も繰り返すことで徐々に完成度を高めていきます。
まず手を動かすことで見えてくるものがあり、要件定義にかかる時間を抑制し、変化に柔軟に対応できるというのが大きなメリットです。その一方、いきあたりばったりに進めることで無駄が発生したり、スケジュールが伸びたりすることがあります。
スパイラル開発は、どちらかといえばアジャイル開発と似たシステム開発方式です。計画を詰め過ぎず、「設計→実装→テスト→修正」を繰り返すことで徐々にシステムを完成へと導きます。
それでは、両者の違いはどこにあるのでしょうか。
アジャイルは実現した機能に対しテストを実施することで徐々に要件定義を進めプロジェクトを完成形に近づけることを目的にしています。一方、スパイラルは完成した段階のシステムにフィードバックを受けることでプロトタイプを改良することに重きが置かれる傾向にあります。
絵画に例えれば、まず背景を完成させ、それに合わせて人物、小物などと対象ごとに完成させながらイメージを固めていくのがアジャイル、全体をラフに描き、フィードバックを得ることで完成形に近づけていくのがスパイラルといえます。
スパイラル(螺旋)のように繰り返すことが前提となっているから「スパイラル」と覚えておきましょう。
まずプロトタイプ(試作品)を作り、フィードバックを受けることで何度も改良していく手法です。スパイラルと似ていますが、プロトタイプをつくり、フィードバックを受けて修正し、の単純ながら強力なループにより重きを置いている点が特徴です。プロトタイプをなるべく早く作って見せるという目標に重点を置くことで、最もスピード感を持って進められるのがメリットです。ただし、そもそもの完成像があやふやな状態で、プロトタイプを作っても無駄になってしまう可能性もあります。ある程度ゴールがイメージしやすいシステムの開発に適した手法といえるでしょう。
近年3Dプリンターの発達などにより、ソフトウエアだけでなくハードウエアでもプロトタイピングが用いられる例が現れています。
情報システム部門の基礎知識として押さえておきたい“システム開発方式の違い”について解説しました。
「工程ごとに契約される、契約モデル」といったような、説明した以外のシステム開発方式も存在しますが、現状代表的なのはご紹介した4種でしょう。
自社開発するにせよ、パッケージで導入するにせよ、システム開発がどの方式で進められるかは全体のコストや品質に関わります。
IT導入を進めるのであれば、まずどの手法で進めるべきかを検討事項に含めるべきでしょう。