2020年11月9日

【システム企画~情報活用力を上げる仕組み作り】

~ウォーターフォールモデル③~

過去2回(2020/7/272020/9/23)、ウォーターフォールモデルに関する初期文献を当たってきました。ロイスの「大規模ソフトウェアシステムの開発マネジメント(※1)」には、ウォーターフォールモデルにも「イテレーション」があることが記されていることに注目しましたが、再度、同論文を読んでみると、もう一つ興味深いことがありました。(※1)Winston W. Royce, 'Managing the Development of Large Software Systems' , 1970, the Proceedings of IEEE WESCON

ソフトウェア開発ライフサイクルの初期段階、システム企画から要件定義(Figure10,①②)に続く位置に「preliminary program design」(プログラム予備設計)と「Preliminary Software Review」(プログラム予備レビュー)というものが入っているのです(Figure10,③)。これは④以降の実際の開発に先立ち、予備設計、分析、プログラム設計、コーディング、テスト、使用を行ってみるというもので、かつてはウォーターフォールモデルにもプロトタイピングという考え方があったことを示しています。

ところが、1988年アメリカ国防総省が作成した文書番号DOD-STD-2167A「国防システムソフトウェア開発標準」(Military Standard, Defense System Software Development)では、「preliminary design」はあるものの、プロトタイプ(=動くソフトウェア)については作成行為も成果物も定義されておらず、「preliminary program design」と「Preliminary Software Review」が削除されたフローとなっており、イテレーションもありません。

前文には「This standard is not intended to specify or discourage the use of any particular software development method. The contractor is responsible for selecting software development methods (for example, rapid prototyping) that best support the achievement of contract requirements.」とあり、プロトタイプを含め、あらゆる方法の使用を指定も排斥もしないとしていますが、国家機関の示した開発標準の図表からプロトタイピングとイテレーションが外れたことの影響は大きく、以降のウォーターフォールモデルではこの考え方が主流となっていきます。

ウォーターフォールモデルが効果的で成功するケースがありましたが、うまくいかないケースもありました。その原因と対策とがいろいろと考えられ、出てきたものの1つがアジャイルです。「Manifesto for Agile Software Development」(アジャイルソフトウェア開発宣言)は、従来型のソフトウェア開発のやり方とは異なる手法を実践していた17名のソフトウェア開発者が、それぞれの主義や手法についての議論を行い、2001年に公開されました。そこには、彼らがソフトウェア開発を行ううえで重視している4つのマインドセットと、その背景である12の原則が記されています。4つのマインドセットは以下のように表されています。

●プロセスやツールよりも個人と対話を

●包括的なドキュメントよりも動くソフトウェアを

●契約交渉よりも顧客との協調を

●計画に従うことよりも変化への対応を価値とする

そしてその後には、「左記のことがらに価値があることを認めながらも、私たちは右記のことがらにより価値をおく」とあり、左側も大事だがそれ以上に右側を重視する価値観が示されていて、従来型の価値観や方法が無効であるというのではなく、もっと大事にしたいことがあるというものです。

ロイスはDOD-STD-2167Aの内容に落胆し、自分の論文「大規模ソフトウェアシステムの開発マネジメント」にあったFigure2を示し「This was crazy」と言ったといわれています。国防総省の2010年の文書「「A New Approach for delivering Information Technology Capabilities in the Department of Defense」には「iteration」とともに「time-box」というスクラムでよく使われる用語が何度も登場し、「適切で統合的なネットワーク/システム/サービスを確保するために、プログラム重視のウォーターフォール型のシステムエンジニアリングプロセスは、より軽量でオープンなモジュール重視の方法に代替されていくことになるだろう」という記述がみられます。(この文書はウォーターフォールモデルを否定するものというわけではありません。また、以前(2020/07/27)に記したようにウォーターフォールモデルが適する場合があります)