← 최신 논문
💻 computer science

A Longitudinal Study of Dependency Reclassifications in JavaScript Projects

이 논문은 33,087 개의 자바스크립트 프로젝트를 분석하여 의존성 제거 및 역할 재할당이 79.1% 의 프로젝트에서 빈번하게 발생하며, 이러한 재분류 활동이 장기간에 걸쳐 이루어지는 등 의존성 유지보수의 중요한 측면임을 규명했습니다.

원저자: Yuxin Liu, Cristian Bogdan, Benoit Baudry

게시일 2026-04-13
📖 3 분 읽기☕ 가벼운 읽기

원저자: Yuxin Liu, Cristian Bogdan, Benoit Baudry

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

🏠 비유: "소프트웨어 프로젝트는 계속 리모델링되는 집"

소프트웨어 프로젝트는 한 번 지으면 끝나는 것이 아니라, 시간이 지나며 계속 리모델링을 합니다. 여기서 **'의존성 (Dependency)'**이란 이 집에 필요한 가구나 도구들입니다.

예를 들어, '부엌용 칼 (Core)'은 살 때부터 있어야 하고, '수리용 망치 (Dev)'는 공사할 때만 쓰며, '손님이 가져오는 접시 (Peer)'는 손님이 직접 챙겨와야 합니다.

하지만 개발자들은 처음에 이 도구들을 어디에 두어야 할지 완벽하게 정하지 못합니다. 시간이 지나며 "아, 이 망치는 공사 때만 쓰는 게 아니라 살 때도 써야겠다"거나 "이 칼은 사실 필요 없네"라고 깨닫게 됩니다. 이때 도구들의 위치를 옮기거나 버리는 행위를 **'의존성 재분류 (Reclassification)'**라고 합니다.

이 논문은 3 만 3 천 개 이상의 자바스크립트 프로젝트를 조사하여, 개발자들이 이 도구들을 어떻게 재배치하는지 분석했습니다.


🔍 주요 발견 사항 (3 가지 핵심 이야기)

1. "처음 정한 위치는 절대적이지 않다" (재분류는 매우 흔함)

  • 현상: 연구 결과, 조사된 프로젝트의 **약 80%**에서 개발자들이 도구들의 위치를 다시 정했습니다.
  • 비유: 집을 지을 때 "이건 부엌에 두자"라고 정해뒀던 식탁이, 나중에 "아니, 이건 거실로 옮겨야겠다"거나 "이건 아예 버리자"라고 바뀌는 것과 같습니다.
  • 통계: 프로젝트의 79.1% 에서 적어도 한 번은 이런 재배치 작업이 일어났습니다.

2. "버렸다가 다시 꺼내거나, 위치를 오가는 도구들" (세 가지 패턴)

개발자들은 도구들을 어떻게 처리할까요? 크게 세 가지 패턴이 발견되었습니다.

  • A. 과감한 정리 (삭제):

    • 필요 없는 도구를 통째로 치웁니다. 특히 '공사 도구 (Dev)'나 '부엌 도구 (Core)'는 여러 개를 묶어서 한 번에 치우는 경우가 많습니다.
    • 재미있는 점: 가끔은 "너무 많이 치웠네"라고 생각해서 다시 꺼내기도 합니다. (약 33% 의 프로젝트에서 버렸던 도구를 다시 가져왔습니다.)
  • B. 역할 변경 (이동):

    • "이건 공사 때만 쓰는 게 아니라, 살 때도 써야겠다"며 Dev(공사용) 에서 Core(생존용) 로 옮기거나 그 반대로 옮기는 경우가 많습니다.
    • 특히 **빌드 도구 (Webpack, Babel 등)**들이 자주 위치를 바꿉니다. 처음엔 공사 도구로 썼는데, 나중에 살 때도 필요해서 부엌으로 옮기거나, 반대로 살 때 필요 없으니 공사 도구로 내리는 식입니다.
  • C. 위치 오실레이션 (오래된 고민):

    • 어떤 도구는 Core → Dev → Core처럼 위치를 왔다 갔다 하기도 합니다.
    • 비유: "이건 거실에 둘까? 아니면 부엌에 둘까?" 고민하다가 거실에 뒀다가, "아니야 부엌이 맞네" 하고 옮기다가, 다시 "거실이 더 편한데?" 하며 되돌리는 과정입니다. 이는 개발자가 도구의 정확한 역할을 고민하는 과정입니다.

3. "결정은 하루아침에 나지 않는다" (시간이 걸림)

  • 현상: 도구를 한 번 정했다가 위치를 바꾸는 데는 **평균 1 년 이상 (약 408 일)**이 걸립니다.
  • 비유: "이 가구를 어디에 둘까?" 고민하다가 1 년이 지나서야 "아, 여기가 맞네" 하고 옮기는 것입니다.
  • 의미: 개발자들은 실수를 바로 고치는 것이 아니라, 도구를 오랫동안 써보면서 "아, 이거 원래 용도가 아니었구나"라고 깨닫고 천천히 정리합니다.

💡 이 연구가 우리에게 주는 교훈

이 논문은 개발자들에게 다음과 같은 메시지를 줍니다.

  1. 완벽한 시작은 없다: 처음에 도구를 어디에 두든 나중에 고칠 수 있다는 사실을 인정해야 합니다.
  2. 도구 관리도 중요하다: 단순히 버전을 업데이트하는 것만 중요한 게 아니라, "이 도구가 정말 필요한가?", "어떤 역할로 써야 할까?"를 계속 고민하고 정리하는 과정이 프로젝트 건강에 필수적입니다.
  3. 도구 (소프트웨어) 가 도와야 한다: 현재는 개발자가 실수한 위치를 스스로 찾아내야 하지만, 앞으로는 **"이 도구는 보통 공사용으로 쓰는데, 왜 살 때 쓰는 거야?"**라고 알려주는 스마트한 관리 도구가 필요하다는 것입니다.

📝 한 줄 요약

"소프트웨어 프로젝트는 한 번 정해진 도구 배치가 영원한 것이 아니라, 개발자들이 시간이 지나며 실수를 고치고 역할을 재정의하며 계속 '리모델링'해 나가는 살아있는 집이다."

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →