소스코드는 있었지만 서비스의 동작을 설명하는 문서는 없었습니다. 아티스트 플랫폼 A사의 화면·API·데이터 구조를 따라 기능을 정리하고 전반적인 검증과 포인트 기능 개발로 이어간 사례입니다.
개발 결과물을 인수할 때 소스코드가 있다는 사실은 중요합니다. 하지만 코드만으로 운영과 다음 개발을 곧바로 시작하지는 못합니다.
이 기능은 왜 이렇게 동작하는지, 어떤 조건에서는 실행되면 안 되는지, 데이터는 어디에서 만들어져 어느 화면에 쓰이는지. 다음 담당자는 코드를 바꾸기 전에 이런 질문부터 만나게 됩니다.
작품을 관리하고 거래하는 아티스트 플랫폼 A사에는 요구사항과 설계를 설명할 문서가 없었습니다. 기존 기능을 이해해야 하는 상황에서 포인트 충전·관리 기능까지 새로 더해야 했습니다. 이 프로젝트는 개발보다 먼저, 무엇 위에 다음 기능을 얹는지 설명할 수 있게 만드는 일에서 시작했습니다.

코드가 있다는 것과 기준이 있다는 것은 달랐습니다
문서가 없는 서비스에서는 현재의 동작과 필요한 동작이 쉽게 섞입니다. 화면에서 어떤 결과가 나왔더라도 의도된 기능인지 수정해야 할 문제인지 판단하기 어려울 수 있습니다.
그렇다고 현재 코드를 그대로 요구사항으로 삼을 수도 없습니다. 기존 구현을 따라가면 서비스가 어떻게 만들어졌는지는 알 수 있지만 그 구현이 사용자에게 필요한 결과까지 보장하지는 않기 때문입니다.
따라서 인수 검증에는 두 가지 작업이 필요합니다. 현재 동작을 설명하고 그 동작을 평가할 기준을 마련하는 일입니다. 문서가 없으면 인수인계가 불편해지고 검증의 출발점도 달라집니다.
화면에서 API와 데이터 구조까지 거슬러 올라갔습니다
프로젝트에서는 코드를 읽고 화면, API, 데이터 구조를 추적해 기능 단위로 내용을 정리했습니다. 구현 결과를 거슬러 올라가 구조와 동작을 파악하는 리버스 엔지니어링 방식입니다.
화면에는 이용자가 보는 결과가 나타납니다. API는 그 동작을 처리하는 경로이고 데이터 구조는 결과가 남는 방식을 정합니다. 이 연결을 함께 살펴야 화면 하나만으로 드러나지 않는 관계를 이해할 수 있습니다.
복원 문서의 가치는 분량보다 질문에 답할 수 있는지에 있습니다. 어떤 기능이 어떤 동작과 연결돼 있는지 찾을 수 있어야 수정 전에 살펴볼 범위도 정할 수 있습니다.
이 단계는 과거 설계자의 의도를 모두 알아냈다는 뜻이 아닙니다. 확인 가능한 구현과 동작을 바탕으로 이후 검증과 개발이 참조할 설명을 만든 작업입니다.

문서로 정리한 내용을 실제 동작과 대조했습니다
정리한 기능을 기준으로 전반적인 기능 검증을 수행했습니다. 발견한 결함에는 심각도를 붙여 기록하고 검증 결과를 문서와 함께 남겼습니다.
문서화와 테스트를 따로 생각하면 문서는 설명 자료로, 테스트는 일회성 점검으로 끝나기 쉽습니다. 두 작업이 연결되면 설명한 기능이 실제로 어떻게 동작했는지 확인할 수 있습니다.
특히 인수 프로젝트에서는 기존 코드가 존재한다는 이유로 그 동작을 정답으로 취급하지 않는 것이 중요합니다. 사용자가 겪는 결과와 기능의 판단 기준이 어긋나는지를 별도로 봐야 합니다.
이 사례에서 검증은 코드를 읽었다는 확인에 그치지 않았습니다. 정리한 내용을 실행으로 확인하고 이후 수정에서 다시 찾아볼 수 있는 기록으로 남겼습니다.
포인트 기능도 기존 거래와 연결해야 했습니다
기존 구조를 파악하고 검증한 뒤에는 포인트 충전·관리 기능을 개발했습니다. 충전, 사용, 잔액의 관계를 정리해 기존 서비스에 연결했습니다.
포인트 기능은 금액처럼 보이는 숫자 하나를 추가하는 일이 아닙니다. 잔액이 변했다면 무엇 때문에 변했는지 설명할 수 있어야 하고 사용 동작은 기존 서비스의 거래와 맞물려야 합니다.
예를 들어 화면에 잔액이 표시되더라도 어떤 사용 내역이 그 결과를 만들었는지 알 수 없다면 운영자는 문의를 처리하기 어렵습니다. 이런 이유로 신규 기능을 기존 구조와 분리해 생각하기 어렵습니다.
A사의 사례에서는 먼저 이해하고 검증한 기반 위에 기능을 더했습니다. 구조를 모르는 상태에서 추가 개발만 서두르는 접근과 다른 점입니다.
다음 담당자에게 코드 외의 자산을 남겼습니다
프로젝트 결과에는 기능을 설명하는 문서, 테스트 자산, 결함 기록이 포함됐습니다. 추가 기능과 함께 다음 담당자가 서비스를 이해하는 데 필요한 자료를 남겼습니다.
이런 자료가 있어도 유지보수 문제가 모두 자동으로 풀리지는 않습니다. 이후 기능이 바뀌면 문서와 검증 기준도 함께 갱신해야 합니다. 다만 다음 작업이 아무 설명도 없는 코드에서 다시 출발하지 않도록 해줍니다.
이 사례에서 중요한 변화는 새로운 문서를 만들었다는 사실보다 인수한 서비스에 대해 질문할 수 있고 그 답을 확인할 수 있게 됐다는 점입니다.

소프트웨어 인수의 끝은 파일을 전달받는 순간이 아닙니다. 무엇을 받았는지 이해하고 바꿀 때 어떤 영향을 확인해야 하는지 설명할 수 있을 때 다음 개발이 시작됩니다.
