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>
5.2 KiB
title, tags, source, chapter, updated
| title | tags | source | chapter | updated | ||
|---|---|---|---|---|---|---|
| EOS Ch4 — 개념의 구조 |
|
The Essence of Software, Daniel Jackson (2021) | Ch4 Concept Structure | 2026-04-30 |
EOS Ch4 — 개념의 구조
핵심 아이디어
개념(concept)은 다섯 가지 구성 요소로 정밀하게 정의할 수 있다: 이름(name), 목적(purpose), 상태(state), 행동(actions), 운영 원칙(operational principle). 이 구조는 개념을 서로 독립적으로 이해·설계·구현할 수 있게 하며, 재사용성의 토대가 된다. Jackson은 trash, style, reservation 세 개념을 예시로 구조를 설명한다.
개념 정의의 5요소
| 요소 | 설명 |
|---|---|
| 이름(name) | 개념 이름과 타입 파라미터 (제네릭) |
| 목적(purpose) | 개념이 존재하는 이유를 한 문장으로 |
| 상태(state) | 개념이 기억하는 데이터 구조 |
| 행동(actions) | 상태를 변경하는 동작과 전제 조건 |
| 운영 원칙(operational principle) | 목적이 실제로 달성되는 전형적 사용 시나리오 |
운영 원칙은 가장 단순한 시나리오가 아니라, 목적의 성취를 증명하는 최소 시나리오다.
예시 1: trash 개념
Apple이 1982년 Lisa 컴퓨터를 위해 발명한 trash 개념.
목적: 삭제의 취소(undoing of deletions)를 허용한다.
상태: accessible (접근 가능한 아이템 집합), trashed (삭제됐지만 영구 제거 전 아이템 집합)
주요 행동:
delete(x)— x를 accessible에서 trashed로 이동 (전제: x가 accessible에 있을 것)restore(x)— x를 trashed에서 accessible로 이동empty()— trashed의 모든 항목 제거
운영 원칙:
after delete(x), can restore(x) and then x in accessible
after delete(x), can empty() and then x not in accessible or trashed
"The real innovation… is not that you can move things into the trash, but that you can then move them out."
Trash 개념의 설계 결함과 수정
- 문제 1: macOS에 trash가 하나뿐이라, 외장 드라이브의 파일을 지워도 영구 삭제가 안 됨. OS X El Capitan(2015)에서 "즉시 삭제" 액션으로 해결.
- 문제 2: trash 안 파일을 삭제 날짜순으로 정렬할 수 없었음. OS X Lion(2011)에서 "added date" 정렬로 해결 (folder 개념의 synergy).
예시 2: style 개념
Adobe InDesign, Microsoft Word 등 문서 편집 도구의 style 개념.
목적: 요소들의 일관된 서식(formatting) 적용을 쉽게 한다.
상태:
assigned: Element -> one Style(요소에 할당된 스타일)defined: Style -> one Format(스타일에 정의된 서식)format: Element -> one Format = assigned.defined(파생 상태)
주요 행동:
assign(e, s)— 요소 e에 스타일 s 할당define(s, f)— 스타일 s의 서식을 f로 정의 (생성 또는 업데이트)
운영 원칙: s를 서식 f로 정의하고, e1·e2에 s를 할당한 뒤 s를 f'로 재정의하면, e1과 e2 모두 f'로 변경된다.
Style이 아닌 것들
- Apple color picker: 색상 수정 불가 → 운영 원칙 실패 → style 개념 아님
- Apple TextEdit의 "style": 스타일을 적용해도 단락에 지속적으로 연결되지 않음 → style 개념 아님
예시 3: reservation 개념
소프트웨어 이전부터 존재하는 reservation 개념.
목적: 한정된 자원의 효율적 사용을 관리한다.
상태:
available: set Resourcereservations: User -> set Resource(1:다 매핑)
주요 행동:
reserve(u, r)— r이 available일 때, u에게 r을 예약cancel(u, r)— u의 r 예약 취소, r을 available로 반환use(u, r)— u가 예약한 r 사용
운영 원칙: after reserve(u, r) and not cancel(u,r), can use(u, r)
설계 이슈들
- 자원은 시간대에 종속될 수 있음 (레스토랑 좌석 예약)
- no-show 처리 — 계정 정지 등
- 충돌 예약 방지 (같은 날 밤 두 레스토랑 동시 예약)
- 철도 신호 시스템, 네트워크 RSVP 프로토콜에도 동일 개념 적용
개념의 제네릭성
개념 이름 옆의 타입 파라미터(예: trash [Item])는 개념이 제네릭임을 나타낸다. trash의 Item은 파일 시스템에서는 파일, 이메일 클라이언트에서는 메시지가 된다. 제네릭성은:
- 재사용을 가능하게 한다
- 개념을 본질로 추출하도록 강제한다
핵심 인용
"A concept definition includes its name, purpose, state, actions and operational principle. The operational principle, showing how the behavior fulfills the purpose, is the key to understanding a concept."
"Most concepts in widespread use have undergone extensive development and refinement over time."
"Concepts can be designed and understood independently of one another, simplifying software design by allowing a design to be broken into distinct subproblems."
관련 개념
- EOS-ch5-concept-purposes — 목적(purpose)에 대한 심층 논의
- EOS-ch6-concept-composition — 개념 조합과 동기화
- EOS-part3-principles — 특정성·친숙성·무결성 원칙
- EOS-overview — 전체 개요