ソフトウェアの開発過程が終了し、
ソフトウェアがいちおう完成したにもかかわらず、納品されたソフトウェアに不具合があるという場合、請負契約上の
瑕疵担保責任の有無が問題となります。
ソフトウェア開発契約の多くは請負契約型であると考えられます。仕事の目的物に瑕疵があるか否かを判断するにあたっては、その請負契約において、注文者が期待し、請負人が引き受けた仕事の内容を確定する必要があり、仕事の内容を確定するにあたっては、仕事の目的、種類、契約締結時の事情、当事者双方の立場、請負代金額、当該仕事の目的物に対する法律上の制限等を勘案して、合理的に判断することになります。
ソフトウェアの不具合が「瑕疵」なのかどうかも、契約で予定されていた仕様・性能が何であったかが重要となり、その仕様・性能のとおりに仕上がっていない場合に「瑕疵」と評価されることになります。
約束された仕様・性能がどんなものかは、要件定義書や基本設計書などによって確認することが通常です。もっとも、基本設計書等に示された仕様・性能と現状が厳密には一致していなくても、不一致の程度が軽微で、重要な部分ではなく、ユーザーの業務に支障がない場合には、ユーザーの合理的意思に反しないものとして、瑕疵ではなく、単なる不具合と判断されることあります。
とくに、ソフトウェア開発では初期段階で軽微なバグが発生するのは技術的に不可避であるとも言われており、実務的には、納品後もベンダーがバグ対応をしたり、不具合の手直しをしたりすることで対応するのが一般です。ユーザーからのバグ発生の指摘を受けた後、ベンダーが遅滞なく補修を終え、あるいは代替措置を講じたような場合はソフトウェアの瑕疵にあたらず、補修によってもバグが残存し、システム全体の稼働に支障が生じるような場合には瑕疵に当たるとされます。
ソフトウェアに瑕疵があった場合にユーザーがベンダーに対して何をいつまで請求できるかについては、予めソフトウェア開発契約で定めていることがあり、そのような場合は契約条項に従うことになります。特に契約で定めていない場合は、通常、次のように考えられます。
まず、ソフトウェアに瑕疵がある場合、例外的な場合(瑕疵が重要でなく修補に過分の費用を要する場合)を除いて、ユーザーはベンダーに対して瑕疵の修補を請求することができます。
瑕疵が重大で、ソフトウェア開発契約を締結した目的を達成することが出来ない場合には、ユーザーは、瑕疵を理由にソフトウェア開発契約を解除することができます。この場合、ユーザーはベンダーに対して支払済みの代金の返還を求めることができます。もっとも、解除できるのは、軽微なバグでは当然足りず、システム全体に影響を及ぼすような重大バグに限ります。
バグやシステムエラーによって、業務に支障が出た場合、それが瑕疵に該当すれば、損害賠償請求もできます。
ソフトウェア開発では、多くの場合、損害賠償額に限度を定めています。下記JISAモデル契約においては、損害賠償限度額を委託料を限度としています。
(損害賠償)【代替条項あり】 第53条 甲及び乙は、本契約及び個別契約の履行に関し、相手方の責に帰すべき事由により損害を被った場合、相手方に対して、現実に被った通常かつ直接の損害に限り、第3項で定める範囲内で損害賠償を請求することができる。但し、納入物の瑕疵による損害については、甲は、当該瑕疵が乙の責に帰すべき事由により修正されず、かつ、瑕疵の修正に代わる合理的な代替措置の提供がなされなかったことにより損害を被った場合に限り、乙に対してこれを請求することができる。 2.前項に基づく請求は、当該損害賠償の請求原因となる当該個別契約に定める納入物の検収完了日又は業務の終了確認日から○ヶ月間が経過した後は行うことができない。 3.第1項の損害賠償の累計総額は、債務不履行、法律上の瑕疵担保責任、不当利得、不法行為その他請求原因の如何にかかわらず、甲又は乙の責に帰すべき事由の原因となった個別契約に定める委託料相当額を限度とする。 |