故障モード影響解析(FMEA)とは?

2009年3月19日(木)
山科 隆伸

大規模ソフトウエアの保守・拡張開発で起こる問題

 大規模ソフトウエアの保守・拡張開発で起こる問題の多くは、中小規模の開発でも存在します。しかし、中小規模では目をつむっていられるものでも、規模が大きくなるにつれ、対処できないほどの問題になります。今回取り挙げる問題点は、大規模ソフトウエアを長期間保守・拡張していれば、どの開発でも遭遇するものです。

 保守開発・拡張開発では、既存機能との整合性をとるためのコストが既存機能の規模に比例して大きくなります。簡単な機能拡張であっても、既存機能への影響度合いを設計時点で検討する必要があります。当然のことながら「今回はちょっとした拡張なので、拡張部分しかテストしていません」といってリリースするわけにはいきません。テストに必要な工数は既存機能の規模に依存します。

 また、規模が大きくなると、中小規模ではあまり問題にならなかった開発体制が大きく影響してきます。1人で担当できる機能の数には限界があり、機能が増えるとそれぞれの担当が何をしているかを相互に把握するのが難しくなってきます。また、技術の共有や失敗事例について足並みをそろえて共有することも難しくなってきます。担当が増えると、均質な技術レベルの確保も難しくなってきます。

 規模の増大は、不具合が発見された後の解決にも影響を与えます。例えば、システムテストでみつかった不具合は、複数の機能にまたがって確認をしなければならないことが多くなります。ある不具合の確認が担当の間でそろって優先順位が高ければよいのですが、必ずしもそうはならず後回しにされて解決や確認が遅れることもあります。また、修正の波及範囲を調べる時間も規模の増大とともに長くかかるようになります。

 また、必ずしも規模の問題ではないのですが、長期間にわたって開発を続けていくと、当初の設計時点では想定できていなかった機能追加が起こります。また、保守要員の交代などが起こり、機能に詳しい人が開発メンバの中にいなくなってしまうこともあります。既存機能へのインパクトが推測できないため、既存機能と似て非なる機能追加をせざるを得なくなる場合もあります。極端な場合には、既存機能のコードを修正した場合にテスト工数の増大や品質低下が見込まれる場合には、コードを複写して一部だけ修正するような方法をとらざるを得ない場合もあります。

総合テストで発見される不具合

 総合テストは、最終の品質確認として行われますが、このテストでも不具合が発見されてしまうことがあります。この段階では、単体テストで発見されるような仕様とのミスマッチやコーディングミスといった問題よりも、既存機能との組み合わせによる考慮不足や、データやオペレーションの想定が異なるといった考慮不足による問題がよく発見されてしまいます。

 コーディングミスなどの単純な不具合に関しては、比較的容易に修正することができるのに対し、考慮不足による問題は、要求仕様や論理設計まで後戻りをせざるを得ないこともあり、非常にやっかいな問題となります。このような問題が最後のテスト段階で発見されることは、納期や工数に多大な影響を与えるため避けなければなりません。

 このような保守・拡張開発に対して、品質を保証する開発技法を確立させることはとても重要です。一般的によく利用されているのが図1に示すようなチェックリストです。

 チェックリストは、主に機能ごとにチェックする項目を羅列したもので、要求仕様書からテスト設計書までの各成果物に対し、正当性を確認するために用います。チェックリストは、高品質なソフトウエア作成には、非常に有効なツールです。

 しかし、このチェックリストを大規模なシステムで長期にわたり運用した場合は、維持・管理が難しくなり、形骸(けいがい)化してしまう恐れがあります。一番問題となるのは、システム規模の増加に従い、機能が追加されチェックリストの項目数が増えすぎることです。チェックリストの項目数が増えても、実際の開発で行うレビューの時間は、比例的に増やすことはあまり行われていないため、1つ1つのチェックにかける時間が少なくなり、品質の低下を招きます。

 よって、システムの機能追加に伴い増え続けるチェックリストをどのように管理していくのかが大きな問題点となります。今回は、その増え続けるチェックリストに対し、ハードウエアでよく利用されている故障モード影響解析(FMEA:Failure Mode and Effect Analysis)をソフトウエアに適用することを考えました。

 FMEAは、リスクの高い順から優先度を付けてチェックをすることが可能なため、大規模開発のような多数のチェックを必要とする分野に有効です。また、過去に発生した不具合を分析しておくことで、次の開発時に類似した不具合を防ぐことが可能になります。

 次ページ以降では、このFMEAについて詳しく説明しましょう。

日本ユニシス株式会社
1990年 日本ユニシス(株)入社。CADの開発、適用サポートに従事。2007年奈良先端科学技術大学院大学 博士前期課程入学、コードクローンとソフトウエアレビューの研究中。http://www.unisys.co.jp/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています