38차시. 미니프로젝트 ① 주제 선정과 설계
퀴즈 2 — Definition of Done 판정하기
기능 요구사항 통과 여부 features(예: {"F1": True, ...})와 측정값 measured 를 받아 Definition of Done 을 판정하는 is_done(features, measured) 를 완성해 보세요. 기능이 모두 True 이고 품질 목표 5개 중 4개 이상을 달성하면 완료입니다. P95 응답만 목표 이하일 때 달성으로 봅니다.
빈칸 코드에서 시작합니다.
TARGETS = {
"Correctness": (">=", 0.85),
"Faithfulness": (">=", 0.95),
"Abstention": (">=", 1.0),
"루브릭 총점": (">=", 1.7),
"P95 응답": ("<=", 10.0),
}
def is_done(features, measured):
pass결과 보기 (예시 풀이)
# 38차시 요구사항 정의서의 "6. Definition of Done" 을 코드로 판정합니다.
# 기능 F1~F6 이 모두 동작하고, 품질 목표 5개 중 4개 이상을 달성해야 "완료" 입니다.
# 품질 목표: (비교 방향, 목표값). P95 응답만 작을수록 좋습니다.
TARGETS = {
"Correctness": (">=", 0.85),
"Faithfulness": (">=", 0.95),
"Abstention": (">=", 1.0),
"루브릭 총점": (">=", 1.7),
"P95 응답": ("<=", 10.0),
}
def is_done(features, measured):
# 동작하지 않는 기능 이름을 모읍니다. 하나라도 있으면 완료가 아닙니다.
missing = [name for name, ok in features.items() if not ok]
# 목표를 넘긴 품질 지표를 셉니다. 방향(>=, <=)을 보고 비교합니다.
met = []
for name, (op, goal) in TARGETS.items():
value = measured[name]
ok = value >= goal if op == ">=" else value <= goal
if ok:
met.append(name)
done = not missing and len(met) >= 4
return done, missing, met
def show(title, features, measured):
done, missing, met = is_done(features, measured)
print(f"[{title}] 완료={done} · 품질 달성 {len(met)}/5 · 안 되는 기능 {missing}")
all_ok = {f"F{i}": True for i in range(1, 7)}
# 예시 1: 기능은 다 되지만 Faithfulness, P95 두 개가 미달 → 3/5 라서 완료가 아니어야 합니다.
show("1차", all_ok, {"Correctness": 0.857, "Faithfulness": 0.928, "Abstention": 1.0,
"루브릭 총점": 1.75, "P95 응답": 11.8})
# 예시 2: P95 를 9.5초로 줄였다고 가정 → 4/5 가 되어 완료여야 합니다.
show("2차", all_ok, {"Correctness": 0.857, "Faithfulness": 0.928, "Abstention": 1.0,
"루브릭 총점": 1.75, "P95 응답": 9.5})
# 예시 3: 품질은 좋아도 F5(재작성 재시도)가 안 되면 완료가 아니어야 합니다.
broken = dict(all_ok, F5=False)
show("3차", broken, {"Correctness": 0.9, "Faithfulness": 0.96, "Abstention": 1.0,
"루브릭 총점": 1.8, "P95 응답": 8.0})
실행 결과
[1차] 완료=False · 품질 달성 3/5 · 안 되는 기능 []
[2차] 완료=True · 품질 달성 4/5 · 안 되는 기능 []
[3차] 완료=False · 품질 달성 5/5 · 안 되는 기능 ['F5']채점 기준: 비교 방향을 지표마다 구분하고, 기능이 하나라도 False 이면 품질과 상관없이 완료가 아니라고 판정하면 정답입니다.
관련 교안: 38차시 「4. 실습 ① — 요구사항 정의서」