
기타 금전문제 · 노동
A 주식회사가 B 주식회사에 의뢰한 MES 시스템 개발 용역이 합의서상 요구사항 및 테스트 절차를 제대로 이행하지 못하여 완성되지 않았고 이에 따라 A 주식회사가 B 주식회사에 지급한 용역대금의 반환을 청구한 사안입니다. 법원은 B 주식회사가 용역 제공 의무를 다하지 못했다고 판단하여 A 주식회사의 용역대금 반환 청구를 인용하고 B 주식회사의 항소를 기각했습니다.
A 주식회사는 B 주식회사에게 MES 시스템 개발 용역을 의뢰했습니다. 개발 과정에서 시스템 오류와 수정사항이 발생했고 양측은 2020년 12월 합의서를 작성하여 특정 수정사항(138개) 이행 및 테스트 환경 구축, ERP 연동 지원 등에 합의했습니다. 그러나 B 주식회사는 A 주식회사에게 테스트 환경 구축은 자체적으로 해결해야 한다며 테스트 지원 업무를 거부했고 ERP 연동작업을 전혀 수행하지 않았습니다. A 주식회사는 B 주식회사에 재차 합의서 이행을 요구했으나 합의서상 수정사항 중 약 34%가 이행되지 않은 것으로 감정 결과 밝혀졌습니다. 또한 ERP 연동 관련 여러 기술적 문제가 발생했음에도 B 주식회사는 개선 조치를 취하지 않았습니다. 이에 A 주식회사는 B 주식회사의 용역 제공 의무 불이행을 이유로 계약 해지 및 기지급 용역대금 182,089,500원의 반환을 청구하는 소송을 제기했습니다.
MES 시스템 개발 용역의 완성 여부와 관련하여 피고 B 주식회사가 합의서상 수정사항 이행 및 테스트 지원 의무를 다했는지, 테스트 환경 구축 및 ERP 연동에 대한 책임이 누구에게 있는지, 최종 작업 소스 분실 주장의 타당성 여부, 그리고 청구된 약정금의 성격이 위약금에 해당하는지 여부가 주요 쟁점이었습니다.
피고 B 주식회사의 항소를 기각하고 제1심판결을 유지했습니다. 이에 따라 B 주식회사는 원고 A 주식회사에게 182,089,500원과 이에 대한 지연이자를 지급해야 합니다.
재판부는 B 주식회사가 MES 시스템 개발 합의서에 명시된 수정사항 이행 의무를 완전히 다하지 못했고 테스트 지원 업무 및 ERP 연동 작업을 거부하는 등 용역 제공 의무를 충분히 이행했다고 보기 어렵다고 판단했습니다. 특히 테스트 과정에서 오류 수정 및 개선 작업이 통상적으로 함께 이루어지는 점, B 주식회사가 요청한 테스트 시나리오나 ERP 연동을 포함한 테스트 환경 마련 요청을 A 주식회사가 거절한 것이 합당한 이유가 없다는 점, 그리고 A 주식회사가 최종 작업 소스를 분실하여 용역 제공 의무 이행이 불가능해졌다는 B 주식회사의 주장 또한 받아들이지 않았습니다. 또한 청구된 금액은 잔금 반환 약정에 따른 것이므로 위약금으로 볼 수 없다고 판단하여 B 주식회사의 감액 주장을 기각했습니다.
본 사건에서는 '민사소송법 제420조'에 따라 제1심판결의 이유 기재를 그대로 인용하며 항소심이 필요한 부분만을 고쳐 쓰거나 추가했습니다. 이는 항소심이 1심 판결을 인정하며 그 논리적 판단을 따를 때 적용되는 조항입니다. 핵심적인 법리는 채무불이행에 따른 용역대금 반환 청구권 인정 여부와 관련되어 있습니다. 소프트웨어 개발 용역 계약은 일의 완성을 목적으로 하는 도급계약의 성격을 가집니다. 따라서 수급인(B 주식회사)은 약정된 기한 내에 약정된 내용을 갖춘 결과물을 완성하여 인도할 의무를 부담하며 도급인(A 주식회사)은 이에 대한 대금을 지급할 의무를 가집니다. 본 사건에서 법원은 B 주식회사가 ▲합의서상 수정사항의 상당 부분을 이행하지 못했고 ▲테스트 환경 구축 및 ERP 연동 등 테스트 지원 업무를 거부하여 용역 제공 의무를 다하지 못했다고 보았습니다. 또한 ▲테스트 과정에서 오류 수정 및 개선 작업이 통상적으로 함께 이루어지는 것이라는 점을 명시하여 B 주식회사의 개발 이행이 미진했음을 지적했습니다. 용역대금 반환 약정금의 성격과 관련하여 법원은 이 사건 약정금은 잔금반환 약정이지 위약금이 아니라고 보아 피고 B 주식회사의 손해배상액 감액 주장을 배척했습니다. 이는 계약 해지 후 기지급 대금 반환은 통상적인 원상회복 의무로 보아 위약금과는 구별된다는 법리에 기반합니다.
소프트웨어 개발 용역 계약 시에는 단순히 개발 완료 통보가 아닌 실제 시스템 구동을 통해 명확한 검증 기준에 따라 기능 이행 여부를 확인해야 합니다. 개발 과정에서 발생하는 오류 수정과 테스트는 통상적으로 분리되지 않고 함께 진행되는 작업이므로 개발사와 발주사는 이 부분에 대한 협력을 명확히 해야 합니다. 특히 시스템 연동 작업과 같은 핵심 기능은 계약서에 구체적인 이행 범위와 책임 주체를 명시하고 각자의 지원 의무를 명확히 하는 것이 중요합니다. 또한 개발 소스코드의 보관 및 관리에 대한 책임 또한 계약서에 명시하여 분쟁 발생 시 혼란을 줄여야 합니다. 용역대금 반환 약정 시 그 성격(위약금, 잔금반환 등)을 명확히 하여 추후 금액 감액 주장의 가능성을 미리 차단하는 것이 좋습니다.