결론 먼저
정처기 필기 1과목(소프트웨어 설계) 20문항 중 절반 이상이 UML·디자인 패턴·요구사항 분석에서 나와요. 이 세 영역의 분류표 3개만 외우면 과락(40점) 방어 + 12–15문제 안정권 확보 가능합니다.
왜 1과목에 투자 효율이 큰가
1과목은 개념 매칭 단답이 대부분. 프로그래밍처럼 코드 추적 필요 없고, DB처럼 쿼리 결과 예측도 없음. 용어-정의 매핑만 정확히 되면 10초 내 답이 나옵니다.
투자 시간 대비 점수 효율이 좋아서 단기 공부자에게 특히 유리. 3–4시간만 투자해도 1과목 과락은 거의 방어됩니다.
UML 다이어그램 7종
UML(Unified Modeling Language)은 시스템을 그림으로 표현하는 표준 언어. 크게 구조 다이어그램과 행위 다이어그램으로 나뉨.
구조 다이어그램 (4종)
시스템의 정적 구조를 표현.
| 이름 | 설명 |
|---|---|
| 클래스 | 클래스 간 관계 (상속·연관·의존) |
| 객체 | 특정 시점의 객체 인스턴스 |
| 컴포넌트 | 시스템 구성 요소 |
| 배치(Deployment) | 하드웨어·소프트웨어 배치 |
행위 다이어그램 (3종)
시스템의 동적 동작을 표현.
| 이름 | 설명 |
|---|---|
| 유스케이스 | 사용자와 시스템 간 상호작용 |
| 시퀀스 | 객체 간 메시지 교환 순서 (시간 흐름) |
| 활동(Activity) | 업무 흐름·프로세스 (플로차트 유사) |
| 상태(State) | 객체의 상태 변화 |
UML 관계 표기
- 일반화 (Generalization): 상속 관계. 화살표 끝이 삼각형
- 연관 (Association): 단순 연결
- 집합 (Aggregation): 부분-전체. 빈 마름모
- 합성 (Composition): 강한 집합 (부분이 전체 없이 존재 불가). 채운 마름모
- 의존 (Dependency): 잠깐 사용. 점선 화살표
디자인 패턴 (GoF) 23종
Gang of Four가 정리한 디자인 패턴. 3가지 카테고리로 분류.
생성 패턴 (Creational) — 5종
객체 생성에 관한 패턴.
| 패턴 | 한 줄 설명 |
|---|---|
| Singleton | 인스턴스 1개만 존재 |
| Factory Method | 객체 생성을 서브클래스에 위임 |
| Abstract Factory | 관련 객체 집합 생성 |
| Builder | 복잡한 객체를 단계적으로 생성 |
| Prototype | 기존 객체 복제 |
구조 패턴 (Structural) — 7종
객체 간 관계·조합.
| 패턴 | 한 줄 설명 |
|---|---|
| Adapter | 호환 안 되는 인터페이스 연결 |
| Bridge | 추상화와 구현 분리 |
| Composite | 부분-전체 계층 표현 (트리) |
| Decorator | 객체에 기능 동적 추가 |
| Facade | 복잡한 서브시스템 단순화 |
| Flyweight | 공유 객체로 메모리 절약 |
| Proxy | 대리 객체로 접근 제어 |
행위 패턴 (Behavioral) — 11종
객체 간 책임·알고리즘.
| 패턴 | 한 줄 설명 |
|---|---|
| Observer | 상태 변화를 구독자에게 알림 |
| Strategy | 알고리즘을 교체 가능하게 캡슐화 |
| Command | 요청을 객체로 캡슐화 |
| Template Method | 알고리즘 골격을 정의, 세부는 서브클래스 |
| Iterator | 컬렉션 요소를 순회 |
| State | 상태에 따라 행위 변경 |
| Chain of Responsibility | 요청을 체인을 따라 전달 |
| Mediator | 객체 간 통신을 중개 |
| Memento | 객체 상태 저장·복원 |
| Visitor | 구조와 연산 분리 |
| Interpreter | 언어 문법 해석 |
시험 빈출 5–6개
- Singleton: 인스턴스 1개
- Factory Method: 생성을 서브클래스가
- Observer: 변화 알림
- Adapter: 호환성
- Proxy: 대리 접근
- Decorator: 기능 추가
요구사항 분석
기능 요구사항 vs 비기능 요구사항
| 구분 | 설명 | 예시 |
|---|---|---|
| 기능 | 시스템이 무엇을 해야 하는가 | "회원가입 기능", "결제 처리" |
| 비기능 | 시스템이 어떻게 동작해야 하는가 | "응답 3초 이내", "99.9% 가용성" |
요구사항 개발 4단계
- 도출(Elicitation): 이해관계자에게서 수집
- 분석(Analysis): 충돌·우선순위 정리
- 명세(Specification): 문서화
- 확인(Validation): 이해관계자 검증
요구사항 수집 기법
- 면담(Interview): 직접 대화
- 브레인스토밍: 아이디어 발산
- 워크숍: 구조화된 토의
- 프로토타이핑: 샘플로 확인
SDLC (소프트웨어 개발 생명주기)
| 모델 | 특징 |
|---|---|
| 폭포수 | 순차적, 변경 어려움 |
| 프로토타입 | 요구사항 명확하지 않을 때 |
| 나선형(Spiral) | 위험 분석 강조, 반복 |
| 애자일 | 반복·점진, 변경 수용 |
애자일 방법론
- 스크럼(Scrum): 스프린트·데일리 스탠드업
- XP: 페어 프로그래밍·테스트 주도 개발
- 칸반(Kanban): 시각적 작업 관리
객체지향 원칙 — SOLID
| 원칙 | 의미 |
|---|---|
| S (Single Responsibility) | 단일 책임 |
| O (Open/Closed) | 개방/폐쇄 |
| L (Liskov Substitution) | 리스코프 치환 |
| I (Interface Segregation) | 인터페이스 분리 |
| D (Dependency Inversion) | 의존성 역전 |
단답형 "SOLID의 S는?" 형태로 자주 출제.
응집도 vs 결합도
응집도 (Cohesion) — 높을수록 좋음
모듈 내부 요소 간 관련성.
| 순서 | 응집도 | 의미 |
|---|---|---|
| 1 (낮음) | 우연적 | 관련 없는 요소 |
| 2 | 논리적 | 유사한 논리 그룹 |
| 3 | 시간적 | 시간에 따라 실행 |
| 4 | 절차적 | 특정 순서로 실행 |
| 5 | 통신적 | 동일 데이터 처리 |
| 6 | 순차적 | 출력이 다음 입력 |
| 7 (높음) | 기능적 | 단일 기능 수행 |
결합도 (Coupling) — 낮을수록 좋음
모듈 간 의존 정도.
| 순서 | 결합도 | 의미 |
|---|---|---|
| 1 (낮음) | 자료 | 파라미터로만 통신 |
| 2 | 스탬프 | 구조체 전달 |
| 3 | 제어 | 제어 플래그 |
| 4 | 외부 | 외부 자원 공유 |
| 5 | 공통 | 공통 데이터 영역 |
| 6 (높음) | 내용 | 다른 모듈 내부 직접 참조 |
자주 하는 실수
1. UML 구조/행위 분류 혼동 시퀀스·활동을 구조로 착각. 행위 다이어그램은 시간·순서·상호작용 표현.
2. 디자인 패턴 23개 다 외우려 함 매회 나오는 5–6개만 집중. 나머지는 이름-한 줄 매칭 수준.
3. 기능 vs 비기능 요구사항 경계 "응답 속도"는 비기능. "로그인 기능"은 기능.
4. 응집도·결합도 방향 반대 응집도는 높게(기능적), 결합도는 낮게(자료). 헷갈리지 말기.
5. SOLID 순서 순서 헷갈림 S-O-L-I-D 순서로 외우기.
시험장에서의 접근법
- 용어 단답은 10초 안에 — 고민하지 말고 암기 기반 결정
- UML 문제는 "구조 vs 행위" 먼저 판단
- 디자인 패턴은 "한 줄 설명-이름" 매칭으로 소거
- 응집도·결합도 순서 문제는 극단(가장 낮은·가장 높은)부터 확인
- 1과목 20문항 중 15분 안에 끝내고 다른 과목에 시간 넘기기
정리
- UML 7종: 구조(클래스·객체·컴포넌트·배치) / 행위(유스케이스·시퀀스·활동·상태)
- 디자인 패턴 23종 중 빈출 5–6개 집중 (Singleton·Factory·Observer·Adapter·Proxy)
- 요구사항 4단계: 도출 → 분석 → 명세 → 확인
- SOLID 5원칙, 응집도 7/결합도 6단계
- 1과목은 매칭 속도가 점수