테마
설계 원칙과 디자인 패턴
소프트웨어 설계는 요구사항을 실제로 만들 수 있는 구조로 바꾸는 단계다. 좋은 설계는 기능을 모듈로 나누고, 모듈끼리는 느슨하게 묶고, 자주 만나는 문제는 검증된 해법(패턴)으로 푼다. 실기 시험에서는 결합도(coupling)·응집도(cohesion)의 종류와 강도 순서, SOLID(SRP, OCP, LSP, ISP, DIP, 객체지향 설계 5원칙), GoF(Gang of Four, 4인방) 디자인 패턴(design pattern)의 이름과 분류가 단답형으로 꾸준히 나온다.
학습 순서
- 모듈화와 설계 개념 — 모듈화(modularity)·추상화·정보 은닉(information hiding)·협약에 의한 설계(design by contract)·팬인(fan-in)/팬아웃(fan-out) (출제 빈도: 보통)
- 결합도와 응집도 — 결합도 6종·응집도 7종의 이름과 강도 순서 (출제 빈도: 높음)
- 객체지향 개념과 분석 — 클래스·메시지·캡슐화(encapsulation)·상속·다형성(polymorphism)과 럼바우의 세 모델링 (출제 빈도: 보통)
- SOLID 원칙과 재사용 — 객체지향 설계 5원칙과 재사용 규모별 분류 (출제 빈도: 높음)
- 아키텍처 패턴 — 레이어(layer)·파이프-필터·MVC(Model-View-Controller, 모델-뷰-컨트롤러)·브로커(broker) 등 시스템 전체 구조의 틀 (출제 빈도: 보통)
- 디자인 패턴: 생성·구조 — GoF 23개 중 생성 5개·구조 7개 (출제 빈도: 높음)
- 디자인 패턴: 행위 — GoF 행위 패턴(behavioral pattern) 11개 (출제 빈도: 높음)
- 코드 설계와 N-S 차트 — 코드의 종류와 구조적 순서도 (출제 빈도: 보통)
