Files
softwaredesign/wiki/sources/EOS-ch5-concept-purposes.md
minsung 81a4d0a2fe feat: Essence of Software wiki 컴파일 + raw 원본 추가
raw/book/EssenceOfSoftware_Eng/ — Daniel Jackson (2021) 원본 11개 폴더 추가

wiki/sources/ EOS 챕터별 한국어 페이지 8개:
- EOS-overview: 전체 개요, 설계 3수준, 핵심 원칙
- EOS-part1: Ch1-3 동기 (Backblaze/Dropbox 사례, 개념 역할)
- EOS-ch4: 개념 구조 (5요소: 이름·목적·상태·행동·운영 원칙)
- EOS-ch5: 개념 목적 (좋은 목적 4기준, 미스피트 사례)
- EOS-ch6: 개념 조합 (동기화, 시너지, 과잉/과소 동기화)
- EOS-ch7: 개념 의존 (의존 다이어그램, 제네릭 개념)
- EOS-ch8: 개념 매핑 (다크 패턴, UI 매핑 딜레마)
- EOS-part3: 원칙 Ch9-11 (특정성·친숙성·무결성)

wiki/index.md Sources 섹션 EOS 8개 등록, wiki/log.md 기록

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 15:04:06 +09:00

6.0 KiB

title, tags, source, chapter, updated
title tags source chapter updated
EOS Ch5 — 개념의 목적
source
EOS
The Essence of Software, Daniel Jackson (2021) Ch5 Concept Purposes 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는:

  • favoritelike로 이름 변경 (목적과 일치)
  • 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."

관련 개념