システム開発工程のV字モデルとSLCP

システム開発

 システム開発工程に関するV字モデルは、ある設計工程(以下、いわゆる超上流工程はひとまず除きます。)の内容を、これと対応関係にあるテスト工程で確認しなければならない、とするものです。実務でも概ね常識と言えるものとなっており、各種のモデル契約でも工程の定義・考え方はこれが前提とされています。例えば、IPAが出しているガイドブックでは、プログラム設計と単体テスト、詳細設計と統合テスト、基本設計とシステムテストが、それぞれ対応づけて紹介されています。

設計工程とテスト工程での視点のズレ

 もっとも、テスト工程は通常、前工程でテスト済みとなったコンポーネントをより大きいコンポーネントに結合していくという考え方で組まれています。例えば、単体テストではジョブやUI単位、結合テストではサブシステム単位、システムテストではシステム全体(他システムを含む)といった具合です。
 すると、ここで疑問が生じます。詳細設計は内部仕様を対象にしていて必ずしもサブシステムへのコンポーネント結合を設計事項とするものではなく、基本設計は外部仕様を対象としていて必ずしもシステム全体へのコンポーネント結合を設計事項とするわけではないからです。設計工程とテスト工程は対応づけられているにも関わらず、その視点にはズレがあるのです。これは矛盾なのでしょうか。

SLCPと実務の違い

 結論を言えば、若干の矛盾はあります。その理由は、V字モデルの原型を見ると分かります。もともと、V字モデルは、ISOやJISで規格化されたSLCP(Software Life Cycle Process)に由来します。同規格に基づく「共通フレーム2013」の工程を見ると、以下のように、設計工程は、○○要件定義と○○方式設計が、テスト工程は、○○適格性確認テストと○○結合がセットになる形で、細かく工程分けがなされています。

・2.3.2 システム要件定義 - 2.3.6 システム適格性確認テスト
・2.3.3 システム方式設計 - 2.3.5 システム結合
・2.4.2 ソフトウェア要件定義 - 2.4.7 ソフトウェア適格性確認テスト
・2.4.3 ソフトウェア方式設計 - 2.4.6 ソフトウェア結合

 V字モデルとは、要件に関する○○要件定義と○○適格性確認テストを、コンポーネント化とその結合に関する○○方式設計と○○結合を、それぞれ対応づけた(と言うよりそのような対応を前提に工程分けした)ものなのです。しかし、実務では、SLCPのここまで厳密な工程分けには付いて行けるものではありません。そのため、これが基本設計や詳細設計、あるいは結合テストやシステムテストに単純化されると、この2つの視点が混在してしまい、矛盾が生じるわけです。

実務における留意事項

 既に述べたとおり、実務でのテスト工程の設定では、開発チーム分けとの兼ね合いもあり、コンポーネント結合の視点が先行することが多いと思われます。その際に、それだけに留まらず、テストの時点時点において、設計時の要件が漏れなくテストされていることを確認すべきである、V字モデルの実務上の意義はこのようなことになるでしょう。
 また、契約問題を議論する際に、対になる工程間には必ずしも一義的な対応関係があるわけではない、ということも確認されるべきでしょう。