---
title: "EOS Ch5 — 개념의 목적"
tags: [source, EOS]
source: "The Essence of Software, Daniel Jackson (2021)"
chapter: "Ch5 Concept Purposes"
updated: 2026-04-30
---

# EOS Ch5 — 개념의 목적

## 핵심 아이디어

모든 개념에는 명확한 목적(purpose)이 있어야 한다. 목적은 개념의 설계를 정당화하고, 사용자가 개념을 배울 수 있게 하며, 개념이 제대로 동작하는지 평가하는 기준이 된다. 목적이 불명확하거나 없거나 사용자에게 숨겨진 경우, 개념은 혼란·오용·악용의 원인이 된다. "미스피트(misfit)"는 개념이 맥락에서 목적을 충족하지 못하는 현상이다.

## 좋은 목적의 기준 4가지

| 기준 | 설명 |
|------|------|
| **Cogent (명확)** | 사용자의 이해 가능한 필요를 명확히 표현해야 한다 |
| **Need-focused (필요 중심)** | 행동 자체가 아닌 사용자의 필요를 표현해야 한다 |
| **Specific (구체적)** | 다른 개념과 구별될 만큼 구체적이어야 한다 |
| **Evaluable (평가 가능)** | 운영 원칙이 이 목적을 충족하는지 판단 가능해야 한다 |

**나쁜 예**: bookmark의 목적 = "페이지를 저장하다" (행동 반복)
**좋은 예**: bookmark의 목적 = "나중에 페이지를 쉽게 재방문하기 위해"

## 목적이 설계 퍼즐을 해결한다: 통화 전환

*call forwarding* 개념 설계 문제: A→B, B→C로 전환 설정 시 A에 온 전화는 B에 가는가, C에 가는가?

목적을 분리하면 두 개의 다른 개념임이 드러난다:
- **delegate forwarding**: "다른 사람에게 전화를 위임한다" — A→B→C로 두 단계 전환 (연쇄 적용)
- **follow-me forwarding**: "내가 다른 장소로 이동했다" — A에서 B 위치로만 전환 (단일 전환)

하나의 개념에 두 목적을 섞으면 불합리한 동작이 나온다.

## 목적 없는 개념

### 수도꼭지 비유

구식 혼합 수도꼭지(온수·냉수 별도 손잡이): 각 손잡이에 명확한 목적이 없다. 사용자가 원하는 것은 온도와 수량의 조절인데, 두 손잡이는 그 필요에 직접 대응하지 않는다.

신식 단일 손잡이: 회전 = 온도, 상하 = 수량. 목적과 제어가 1:1 대응한다.

### 에디터 버퍼

*editor buffer* 개념: 메모리에 텍스트를 유지하다가 저장 명령으로 디스크에 씀. 이 개념의 목적은 사용자가 아닌 구현의 필요에서 비롯됐다. Apple은 OS X Lion(2011)에서 이 개념을 제거했다. "저장"은 이제 파일에 이름을 붙이는 것이 됐고, "다른 이름으로 저장"도 사라졌다.

**원칙**: 개념은 내부 구현 메커니즘이 아닌 사용자 필요에서 비롯되어야 한다.

## 목적이 불명확한 개념: Twitter의 favorite

Twitter의 *favorite* 개념 문제: 사용자들이 개념을 "나중에 볼 트윗 저장"으로 잘못 이해했다. 실제 목적은 "공개적으로 승인 표시"(like/upvote에 해당). 2018년 Twitter는:
- *favorite* → *like*로 이름 변경 (목적과 일치)
- *bookmark* 개념 신규 도입 (사적 저장 목적)

## 기만적 목적: Nanny Scam

*available funds* 개념과 *cleared check* 개념이 혼동됨. 은행 앱이 수표 처리 전에 일부 금액을 "사용 가능"으로 표시하는 것은 의회 법령에 따른 것인데, 사용자들은 이를 "수표가 청산됐다"고 오해한다. 사기꾼들은 이 개념 오해를 악용해 먼저 "수표 받기" → "초과분 반환 요청" → 수표 부도로 피해를 입힌다.

## 분명한 목적을 숨기는 설계들

| 앱/개념 | 표명된 목적 | 실제 목적 |
|---------|-----------|-----------|
| Facebook *notification* | 사용자에게 알림 | 사용자 참여(engagement) 증가 |
| Facebook *tag* | 게시물 검색 편의 | 소셜 그래프 확장 |
| Quora 로그인 강제 | "커뮤니티 기여" | 사용자 데이터 수집·광고 타겟팅 |
| Direct flight 개념 | 편의성 | 예약 시스템 검색 우선 노출 |

## 미스피트(Misfits): 목적이 실현되지 않을 때

소프트웨어 설계는 "형태(form)"를 "맥락(context)"에 맞추는 것이다. 미스피트는 이 맞춤이 실패하는 지점이다. 미스피트는 예측하기 어렵다:

1. **설계 결함으로 인한 미스피트**: PLGR GPS 기기 — 배터리 교체 후 재부팅 시 좌표가 기기 자신의 위치로 리셋됨 → 오폭 사고. *battery* 개념과 *target* 개념의 상호작용을 설계 시 고려했다면 방지 가능했다.

2. **맥락 변화로 인한 미스피트**: 팬데믹으로 화상 회의가 일반화되자, *slideshow* 개념의 전체 화면 모드가 화상 회의 앱의 패널을 가리는 문제 발생. Apple Keynote는 "창 모드로 재생" 옵션 추가로 해결.

3. **구버전에서 작동했던 것이 다시 안 됨**: Apple Numbers의 *range* 개념 — 구버전은 범위 마지막 행 아래에 행 추가 시 범위에 포함됐지만, 새 버전에서는 포함되지 않아 실무에 큰 불편. Microsoft Excel도 동일한 결함.

**교훈**: 개념 카탈로그에 설계 통찰을 기록해야 버전 업데이트 시 지식이 유실되지 않는다.

## 핵심 인용

> "Purposes matter in all aspects of life because they help us set direction, explain ourselves to others, and reach consensus in collaborations."

> "In software especially, with its capacity for boundless complexity, it's easy to get mired in details and lose track of the big picture. Thinking about purposes helps you draw back and regain your bearings."

> "Concepts, unlike internal mechanisms, are always user-facing, and must have purposes that make sense not only to the programmer but also to the user."

## 관련 개념

- [[EOS-ch4-concept-structure]] — 개념 구조 (purpose가 5요소 중 하나)
- [[EOS-part3-principles]] — Ch9 특정성: 목적과 개념의 1:1 대응
- [[EOS-ch6-concept-composition]] — 목적 단위로 개념을 분리하면 조합이 쉬워짐
- [[EOS-overview]] — 전체 개요
