TRACERY Lab.(トレラボ)

TRACERY開発チームが、要件定義を中心として、システム開発で役立つ考え方や手法を紹介します。

V字モデルを使って開発プロセスを組み立てよう〜システム開発で迷子にならないために

TRACERYプロダクトマネージャーの haru です。

システム開発におけるシステムとは何か - TRACERY Lab.(トレラボ)では、システムの定義について説明しました。

この記事では、V字モデルを使ってシステム開発の進め方を組み立てる考え方について説明します。

システム開発は迷路のようなもの

まずは質問です。迷路をうまく抜けるコツはなんでしょうか。

迷路をうまく抜けるコツは?

答えは迷路を上からみることです。迷路を上から俯瞰することで、複雑な迷路もゴールが見えて、進むべき方向が見えてきます。

迷路を上から俯瞰する

システム開発プロジェクトも迷路のようなものです。

できそうなことから手当たり次第に進んでも、ゴールにたどり着くことはできません。全体像が見えないまま進めると、無駄な作業や手戻り工数が発生しやすくなり、プロジェクトが混乱状態となるリスクが高まります。

システム開発でやるべきことはさまざま

システム開発プロジェクトで迷走しないためには

システム開発プロジェクトで迷走しないための第一歩は、システム開発全体を俯瞰することです。

迷路と同じく、全体を俯瞰することで、進む方向や打ち手を検討できます。

システム開発を俯瞰するにはV字モデルが有用

システム開発を俯瞰するにはどうしたらよいでしょうか。それにはV字モデルが有用です。

システム開発を俯瞰するには、V字モデルが有用

V字モデルは、システム開発での活動をV字上に配置したものです。

このシステム開発の活動のことを「プロセス*1」といいます。

V字モデルは、各プロセス間の関係が明確に対応付けられています(後述の「V字モデルの構造」で説明)。

これによりシステム開発全体を見通すことができ、各プロセスの目的と作業内容を明確化しやすくなるので、無駄な作業や手戻り工数を減らすことができます。

V字モデルの構造

V字モデルは、大きく3つの内容から構成されます。

V字モデルの構造

  1. つくるプロセス(左辺)

    • システムの企画、要件定義、設計、プログラミングといったシステムやソフトウェアをつくり込んでいくプロセスです。
  2. 品質保証のプロセス(右辺)

    • 左辺の各開発プロセスに対応するテストプロセス。具体的には、単体テスト、結合テスト、システムテスト、運用テスト(受入テスト)が含まれ、システムの品質を確保します。
  3. 成果を検証する(つくるプロセスと品質保証のプロセスの対応)

    • 左辺の各開発プロセスに対して、右辺の対応するテストプロセスが存在します。例えば、業務要件定義に対する運用テスト、システム要件定義に対するシステムテスト、基本設計に対する結合テスト、詳細設計に対する単体テスト、プログラミングに対するコードレビューなどです。これにより、各プロセスでの作業が適切に検証され、品質が保証されます。

俯瞰したうえで、開発の進め方を検討する

システム開発の全体像を俯瞰できたら、開発を具体的にどのように進めていくかを検討します。

「治療より予防が大切」とよく言われるように、健康を維持するためには予防が最も重要です。

これは、身体の病気が発生してから治療するよりも、日々の予防や健康づくりのための活動が大事であるということを意味します。

システム開発も同じです。

発生した不具合を直す以前に、不具合が発生しないように日々のプロセスの品質を高め、優れたプロダクトを生み出すための基盤を作ることが重要です。

以下では、システム開発のプロセスを組み立てるためにV字モデルを活用する方法について説明します。

V字モデルをシステム開発の「型」として、現場に適用する

V字モデルを見て、「ウォーターフォールモデル*2」を思い浮かべる方もいらっしゃるのではないでしょうか。

V字モデルのままに、左辺から右辺へと順にシステム開発を進めるなら、その通りです。

しかし、これはV字モデルの開発への適用例の一つに過ぎません。

V字モデルを基に、開発プロジェクトやチームごとの事情や状況に応じた「開発モデル*3」へと適用し、プロセスをカスタマイズできます。

V字モデルをシステム開発の「型」として、現場に適用する

標準的な開発プロセスや手法を、プロジェクトの特定の要件や条件に応じてカスタマイズすることをテーラリング(Tailoring)といいます。

「テーラリング」という言葉は、もともと「仕立てる」という意味を持つ英語の「tailor」から派生しています。洋服の仕立て屋が個々のお客様に合わせて服をカスタマイズするように、システム開発プロセスにおいてもプロジェクトの特定のニーズや条件に合わせてプロセスや手法を調整することを意味します。

ウォータフォールモデルへの適用

ウォータフォールモデルは、基本的には各プロセスを1度だけ実施します。各プロセスで実施する内容がすべて完了したら、次のプロセスに進みます。

ウォータフォールモデルへの適用

反復型開発への適用

反復型開発とは、システム開発を複数の短い反復*4に分けて進める手法です。各反復ごとに計画、企画、要件定義、設計、実装、テストを行い、フィードバックを反映させながら段階的にシステムを完成させていきます。アジャイル開発も反復型開発のひとつです*5

反復型開発への適用

システム開発の「型」としての共通フレーム2013

V字モデルの例として、共通フレーム2013を紹介します。共通フレーム2013は、ソフトウェアおよびシステム開発のプロセス標準を定めたフレームワークです。国際規格の「ISO/IEC 12207:2008(Systems and software engineering — Software life cycle processes)*6」をベースに、日本の実情に合わせて策定されています。

「型」としての共通フレーム2013のV字モデル

共通フレーム2013はプロセス*7を、開発対象や各組織の事情を考慮して取捨選択することを推奨しています*8

共通フレーム2013ではテーラリングの例として、ウォータフォールモデル、段階的モデル(インクリメンタルモデル*9)、進化的モデル(反復型モデル)、リエンジニアリングモデル*10への適用例を説明しています*11

最後に

本記事では、V字モデルの全体像と開発プロセスの組み立て方について説明しました。

V字モデルでシステム開発全体を俯瞰し、各プロジェクトのニーズや事情に合わせてプロセスを組み立てることで、プロダクトの品質向上の基盤を作ることができます。

また、日々の仕事をする際にV字モデルを意識することで、自分の仕事の位置づけやプロジェクトの現在地を把握しやすくなるでしょう。開発の現場で迷子になったり、迷走することも少なくなります。

その意味で、V字モデルはシステム開発に携わる人にとって地図のようなものであり、必須の知識といえるでしょう。

システム開発に携わる方々には、V字モデルを心に留めて日々の仕事に取り組まれることをおすすめします。

以下の記事では、V字モデルの基本構造を成す各レイヤーについて説明します。

tracery.jp

参考文献

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:インプットをアウトプットに変換する、相互に関連する又は相互に作用する一連の活動[JIS Q 9000:2006]。互いに関連をもった"アクティビティ"の集合で入力を出力に変換するもの[ISO/IEC 12207]

*2:システム開発プロセスの一つで、各フェーズが順序立てて実行されるシーケンシャルなアプローチ。このモデルでは、プロジェクトの進行が水が上から下に流れるように一方向に進むことから「ウォーターフォール」という名前が付けられた

*3:開発プロジェクトを計画し、管理し、進行させるためのプロセスや方法論のこと。開発モデルは、プロジェクトの各フェーズをどのように進めるかを規定し、プロジェクトの成功を支援する。これにより、開発チームが効率的かつ効果的に作業を進めることができる。開発モデルの例としては、ウォーターフォールモデル、ScrumやXP(extreme programming)などのアジャイルモデル、スパイラルモデル(反復型モデル)、RAD(Rapid Application Development)モデル、インクリメンタルモデルなどがある

*4:短い場合には1週間、長くて数か月のことが多い

*5:図の反復は一例であり、企画だけの反復、要件定義だけの反復などさまざまなケースがあり得る

*6:ISO/IEC/IEEE 12207の最新版は、ISO/IEC/IEEE 12207:2017で、2017年版が最新(2024年6月時点)

*7:共通フレームは、「プロセス」をさらに「アクティビティ」「タスク」「注記」の階層構造であらわしています。

*8:P.320 第4部 共通フレームに対する誤解と適用上の注意点を参照のこと

*9:ソフトウェアを段階的に構築するアプローチ。システムを一度に全て作成するのではなく、小さな機能単位(インクリメント)に分割して開発する。各インクリメントは、計画、設計、実装、テストの全プロセスを経てリリースされ、動作する部分的なシステムが提供される

*10:既存のソフトウェアシステムやビジネスプロセスを根本的に再設計・再構築するためのモデル

*11:第4部 2章共通フレームの適用とテーラリング(修整)