모스코 우선순위 모델
MoSCoW Prioritization
MoSCoW 우선순위 모델은 요구사항을 Must have, Should have, Could have, Won't have 4가지로 분류하여 애자일 스프린트의 개발 범위를 한정하는 프레임워크입니다. 제한된 리소스 내에서 핵심 가치를 빠르게 검증하는 데 효과적입니다.
📖 개념 정의 및 실무 적용
제품 백로그나 마케팅 캠페인 기획 시 모든 기능을 한 번에 구현하려다 보면 일정 지연과 리소스 낭비가 발생합니다. MoSCoW 모델은 이해관계자 간의 의견 차이를 조율하고, 비즈니스 성장에 필수적인 핵심 요소에만 집중하도록 돕는 강력한 커뮤니케이션 도구입니다.
실무에서는 기능 구현의 시급성과 임팩트를 객관화하여 ‘이번 스프린트에 무엇을 반드시 넣어야 하는가’를 명확히 정의함으로써, 일정 압박 속에서도 타협 없는 MVP를 출시할 수 있는 효율성을 제공합니다.
import pandas as pd
def moscow_prioritization(backlog_df):
# Must have (필수), Should have (중요), Could have (가능하면), Won't have (제외)
priority_weights = {'Must': 4, 'Should': 3, 'Could': 2, 'Wont': 1}
backlog_df['Weight'] = backlog_df['MoSCoW'].map(priority_weights)
# 임팩트 대비 공수(Effort)를 고려한 실무형 스코어링
backlog_df['Score'] = (backlog_df['Weight'] * backlog_df['Impact']) / backlog_df['Effort']
# 스코어 기준 정렬 후 상위 항목 우선 배포
sorted_backlog = backlog_df.sort_values(by='Score', ascending=False)
return sorted_backlog
# 예시 데이터
data = {
'Feature': ['Login', 'Dark Mode', 'Export CSV', 'Advanced Analytics'],
'MoSCoW': ['Must', 'Could', 'Should', 'Wont'],
'Impact': [5, 2, 3, 4],
'Effort': [2, 1, 2, 5]
}
df = pd.DataFrame(data)
print(moscow_prioritization(df))
⚡ 5분 만에 적용하는 실행 스텝
모든 요구사항 브레인스토밍: 이해관계자와 함께 구현 가능한 모든 백로그 아이디어를 리스트업합니다.
4가지 카테고리 분류: 각 항목을 Must(없으면 서비스 불가), Should(중요하지만 대체 가능), Could(여유 있으면 구현), Won't(이번에 안 함)로 나눕니다.
리소스 제약 검토: Must have 항목들의 총 개발 공수가 팀의 스프린트 리소스(보통 60% 이하 권장)를 넘지 않는지 확인합니다.
이해관계자 합의 및 락(Lock): 최종 분류표에 대해 PO, 개발 리드, 비즈니스 담당자의 서면 합의를 도출합니다.
🚀 실무자만 아는 한 끗 차이 Pro Tip
⚠️ 흔히 하는 실수 & 주의사항 (삽질 방지)
❓ 자주 묻는 질문 (FAQ)
Must have와 Should have의 명확한 기준은 무엇인가요?
Must have는 해당 기능이 빠지면 제품 출시 자체가 불가능하거나 법적/보안상 치명적인 문제가 발생하는 필수 항목입니다. Should have는 중요하지만, 없어도 우회 방법(Workaround)이 존재하거나 다음 스프린트로 미뤄도 비즈니스에 즉각적인 타격이 없는 기능입니다.
Won't have로 분류된 기능은 완전히 버려지는 것인가요?
아닙니다. Won't have는 '이번 스프린트 또는 이번 프로젝트 범위에서 제외한다'는 의미입니다. 향후 사용자 피드백이나 리소스 상황에 따라 다음 주기 백로그로 재평가되어 올라올 수 있습니다.