← 최신 논문
💻 computer science

Promptware Engineering: Software Engineering for Prompt-Enabled Systems

이 논문은 프롬프트 기반 시스템 개발의 임시방편적이고 시행착오적인 특성을 해결하기 위해 확립된 소프트웨어 공학 원칙을 적용하여, 프롬프트 기반 소프트웨어의 전체 생애주기를 위한 체계적인 프레임워크를 제공하는 새로운 방법론인 "프롬프트웨어 엔지니어링(promptware engineering)"을 제안한다.

원저자: Zhenpeng Chen, Chong Wang, Weisong Sun, Xuanzhe Liu, Jie M. Zhang, Yang Liu

게시일 2026-01-28
📖 5 분 읽기🧠 심층 분석

원저자: Zhenpeng Chen, Chong Wang, Weisong Sun, Xuanzhe Liu, Jie M. Zhang, Yang Liu

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

핵심 아이디어: "서부 개척 시대"에서 "문명화된 도시"로

소프트웨어 개발이 엄격한 설계도에 따라 집을 짓는 것과 같았던 시절을 상상해 보세요. 당신에게는 정밀한 언어(코드)가 있었고, 예측 가능한 건축가(컴퓨터)가 있었습니다. 만약 실수를 하면, 건축가는 멈춰 서서 "에러! 못 하나를 빠뜨렸습니다!"라고 외쳤을 것입니다.

이제 우리는 **거대 언어 모델(LLM)**을 사용하여 새로운 종류의 집을 짓고 있습니다. 설계도 대신, 우리는 건축가에게 무엇을 할지 알려주기 위해 프롬프트(자연어 지시문)를 사용합니다. 문제는 무엇일까요? 이 건축가는 매우 재능 있지만 예측 불가능한 예술가와 비슷하다는 점입니다. 그들은 "컴퓨터 코드"를 말하지 않습니다. 그들은 뉘앙스, 모호함, 기분 변화가 가득한 "인간의 언어"를 말합니다.

이 논문의 저자들은 이러한 새로운 방식의 구축을 **"프롬프트웨어(Promptware)"**라고 부릅니다. 그들은 현재 프롬프트로 무언가를 만드는 과정이 마치 서부 개척 시대와 같다고 주장합니다. 개발자들은 그저 이것저로 해보고, 작동하기를 바라며, 고장 나면 고치는 식의 추측만 하고 있습니다. 그들은 이를 **"프롬프트웨어 위기(Promptware Crisis)"**라고 부릅니다.

이를 해결하기 위해 그들은 **"프롬프트웨어 엔지니어링(Promptware Engineering)"**을 제안합니다. 이는 전통적인 소프트웨어 엔지니어링의 엄격하고 조직적인 규칙을 이 새롭고 혼란스러운 프롬프트의 세계에 도입해야 한다는 생각입니다. 우리는 프롬프트를 단순한 메모처럼 취급하는 것을 멈추고, 진지하고 구조화된 소프트웨어 산출물로 취급하기 시작해야 합니다.


왜 이렇게 다른가요? (10가지 차이점)

이 논문은 전통적인 소프트웨어와 이 새로운 "프롬프트웨어"를 비교하며 10가지 주요 차이점을 강조합니다. 여기 그 비유가 있습니다:

  1. 구조 vs. 혼돈: 전통적인 코드는 모든 조각이 정확히 들어맞는 딱딱한 레고 세트와 같습니다. 프롬프트는 찰흙 주머니와 같습니다. 원하는 모양으로 어떻게든 빚을 수 있지만, 매번 특정 모양에 완벽하게 맞추기는 어렵습니다.
  2. 확실성 vs. 추측: 전통적인 프로그램을 두 번 실행하면 똑같은 결과가 나옵니다. 하지만 LLM에게 같은 질문을 두 번 던지면, 확률적 특성(주사위 던지기와 같은) 때문에 약간씩 다른 답변을 내놓을 수 있습니다.
  3. 정답 vs. "적당히 괜찮음": 코드에서 세미콜론 하나가 빠지는 것은 치명적인 오류입니다. 프롬프트에서는 오타가 발생해도 답변이 조금 이상해질 뿐일 수도 있고, 혹은 AI가 가짜 사실을 지어내는 환각 현상을 일으킬 수도 있습니다. 단 하나의 "정답"이란 존재하지 않습니다.
  4. 블랙박스: 전통적인 프로그램이 충돌하면 어디서 고장이 났는지 상세한 지도를 얻을 수 있습니다. 하지만 LLM이 실패하면, 왜 그런 결과가 나왔는지 설명 없이 그냥 틀린 답만 내놓습니다. 이는 마술사가 모자에서 토끼를 꺼내는 것과 같습니다. 토끼는 보이지만, 토끼가 어떻게 그 안으로 들어갔는지는 알 수 없습니다.
  5. 인간적인 특성: 전통적인 컴퓨터는 로봇입니다. 감정이 없습니다. 하지만 LLM은 인간처럼 행동합니다. 편향되거나, 감정적이거나, 예의 바를 수 있습니다. 이는 대화에는 좋지만, 예측 가능한 엔지니어링에는 최악입니다.
  6. 기억력 문제: 전통적인 프로그램은 당신이 잊으라고 말하기 전까지 모든 것을 기억합니다. LLM은 주의 집중 시간이 짧습니다. 계속 상기시켜 주지 않으면 긴 대화의 앞부분을 잊어버립니다(금붕아처럼 말이죠).
  7. 보안: 전통적인 소프트웨어에는 잠긴 문과 경비원이 있습니다. LLM은 개방된 집과 같습니다. 누군가 속임수를 써서 비밀을 알아내거나 해서는 안 될 행동을 하게 만들기 쉽습니다(이를 "프롬프트 인젝션"이라고 합니다).

로드맵: 어떻게 해결할 것인가?

저자들은 프롬프트를 관리하기 위한 전체 라이프사이클을 제안하며, 이는 소프트웨어를 관리하는 방식과 유사합니다. 논문에서 제시하는 구체적인 연구 기회를 바탕으로 설명하겠습니다.

1. 요구사항 (무엇을 할 것인가 - "What")

프롬프트를 작성하기 전에 당신이 정확히 무엇을 원하는지 알아야 합니다. 하지만 LLM은 예측 불가능하므로, 단순히 "완벽하게 만들어줘"라고 말할 수는 없습니다. 당신은 다음을 정의해야 합니다:

  • AI가 무엇을 해야 하는가.
  • AI가 어떻게 행동해야 하는가 (어조, 스타일).
  • 무엇을 피해야 하는가 (편향, 보안 위험).
  • 비유: 단순히 "다리를 건설하라"고 말하는 대신, "현수교 형태를 띠고, 10톤을 견딜 수 있으며, 삐걱거릴 때 해적처럼 들리지 않는 다리를 건설하라"고 말해야 하는 것과 같습니다.

2. 설계 (계획 - "Plan")

우리에게는 **디자인 패턴(Design Patterns)**이 필요합니다. 건축가들이 주방이나 욕실을 만드는 표준적인 방법이 있는 것처럼, 우리에게도 프롬프트를 작성하는 표준적인 방법이 필요합니다.

  • 아이디어: 개발자들이 매번 바퀴를 다시 발명할 필요가 없도록, 일반적인 작업(텍스트 요약이나 코드 작성 등)을 위한 사전 승인되고 테스트된 구조를 담은 "프롬프트 라이브러리"를 만듭니다.

3. 구현 (구축 - "Building")

더 나은 도구가 필요합니다. 현재 프롬프트를 작성하는 것은 마치 오타 교정 기능이 없는 타자기로 글을 쓰는 것과 같습니다.

  • 아이디어: 스마트한 에디터 역할을 하는 프롬프트 IDE(통합 개발 환경)를 구축합니다. 이 도구는 프롬프트의 모호함을 체크하고, 더 나은 표현을 제안하며, 심지어 당신의 엉성한 자연어를 AI가 더 잘 이해할 수 있는 구조화된 형식으로 "컴파일"해 줄 것입니다.

4. 테스트 및 디버깅 (품질 관리 - "Quality Control")

이 부분이 가장 어려운 단계입니다. 매번 변하는 것을 어떻게 테스트할까요?

  • 플래키 테스트(Flaky Tests): 테스트가 한 번은 실패했다가 다음에는 통과한다면, 프롬프트가 고장 난 것일까요, 아니면 AI가 그냥 운이 나빴던 것일까요? 우리는 이러한 무작위성을 고려한 새로운 테스트 방식이 필요합니다.
  • 오라클 문제(The Oracle Problem): 일반적인 소프트웨어에서는 정답을 알고 있습니다. 하지만 AI의 경우, "정답"은 종종 주관적입니다. AI의 답변이 "충분히 좋은지" 판단하기 위한 새로운 방법이 필요합니다.
  • 디버깅: AI의 뇌 내부를 볼 수 없으므로, 디버깅을 탐정 놀이처럼 다뤄야 합니다. 문제를 해결하기 위해 프롬프트의 단어를 하나씩 바꿔가며 실험하고, 모든 변경 사항에 대한 상세한 로그를 남겨야 합니다.

5. 진화 및 배포 (업데이트 - "Updates")

프롬프트는 정체되어 있지 않으며 성장해야 합니다.

  • 버전 관리: 소프트웨어에 버전(v1.0, v1.1)이 있듯이, 프롬프트에도 버전 관리가 필요합니다. AI 업데이트 후에 프롬프트가 제대로 작동하지 않는다면, 즉시 이전 버전으로 되돌릴 수 있어야 합니다.
  • 모니터링: 프롬프트가 라이브 상태가 되면 지속적으로 감시해야 합니다. 점점 더 편향되고 있나요? 비밀을 유출하고 있나요? 속도가 느려지고 있나요? 이러한 문제를 실시간으로 잡아낼 "가드레일(Guardrails)"이 필요합니다.

결론

이 논문은 우리가 프롬프트를 단순한 "편법(Hack)"이나 빠른 해결책으로 계속 취급해서는 안 된다고 주장합니다. 우리가 AI를 더 중요한 시스템(은행, 의료, 고객 서비스 등)에 통합함에 따라, "시행착오(Trial-and-error)" 방식은 너무 위험합니다.

프롬프트웨어 엔지니어링은 이 분야를 전문화하라는 촉구입니다. 이는 자연어의 혼돈에 엔지니어링의 규율을 적용하여, "추측 게임"을 신뢰할 수 있고 안전하며 확장 가능한 소프트웨어 시스템으로 바꾸는 것에 관한 것입니다.

참고: 이 논문은 "비전 논문(Vision Paper)"입니다. 즉, 완성된 제품이나 완전히 테스트된 도구 세트를 제공하는 것이 아니라, 이 분야의 미래가 어떠해야 하는지에 대한 로드맵과 사고방식을 제시합니다.

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

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

Digest 사용해 보기 →