[정처기 실기] 4. SW 설계
정보처리기사 실기 — 4. SW 설계
출제 확률: ★(낮음) ~ ★★★★★(매우 높음)
0. SW 설계 과목 한눈에
| 항목 | 내용 |
|---|---|
| 예상 문제 수 | 1~3문제 |
| ★★★★★ | 디자인 패턴 |
| ★★★ | 응집도·결합도, UML 다이어그램, 클래스 다이어그램 관계 |
| ★★ | SOLID, 럼바우 |
1. 디자인 패턴 ★★★★★
행위 패턴 = 객체 간 상호작용을 패턴화한 것
1.1 패턴 분류 — 암기
| 분류 | 암기 | 포함 패턴 |
|---|---|---|
| 생성 패턴 | 싱팩빌프앱 | Singleton, Factory Method, Builder, Prototype, Abstract Factory |
| 구조 패턴 | 어데퍼프 브플컴 | Adapter, Decorator, Facade, Proxy, Bridge, Flyweight, Composite |
| 행위 패턴 | 전옵 중방이상인 매커책템 | Strategy, Observer, Mediator, Visitor, Iterator, State, Interpreter, Memento, Command, Chain of responsibility, Template Method |
1.2 생성 패턴 (Creational)
| 패턴 | 핵심 키워드 |
|---|---|
| 싱글톤 (Singleton) | 객체 하나만 생성, 어디서든 참조 |
| 팩토리 메서드 (Factory Method) | 상위 = 인터페이스 정의 / 하위 = 실제 생성 |
| 빌더 (Builder) | 동일 생성 절차, 다른 표현 결과, 텔레스코핑 문제 해결 |
| 프로토타입 (Prototype) | 인스턴스 복제(복사), 필요한 부분만 수정 |
| 앱스트랙트 팩토리 (Abstract Factory) | 조합을 만드는 인터페이스(API) 제공, Kit |
1.3 구조 패턴 (Structural)
| 패턴 | 핵심 키워드 |
|---|---|
| 어댑터 (Adapter) | 서로 다른 인터페이스 연결 |
| 데코레이터 (Decorator) | 기존 코드 수정 없이 객체를 감싸서 기능 추가·확장 |
| 퍼사드 (Facade) | 단순한 인터페이스 제공, 결합도 낮춤 |
| 프록시 (Proxy) | 객체의 대리자가 대신 처리 |
| 브리지 (Bridge) | 기능 클래스–구현 클래스 연결, 추상 계층 분리 |
| 플라이웨이트 (Flyweight) | 메모리 절약, 클래스 경량화, 가상화 |
| 컴포지트 (Composite) | 트리 구조, 복합·단일 객체 동일하게 다룸 |
1.4 행위 패턴 (Behavioral)
| 패턴 | 핵심 키워드 |
|---|---|
| 전략 (Strategy) | 알고리즘군 정의(캡슐화), 동적 교체 |
| 옵저버 (Observer) | 한 객체 변경 → 의존 객체에 연락·자동 갱신, 발행/수신 |
| 중재자 (Mediator) | 객체 간 통신 중앙 관리, 통신 빈도 낮음 |
| 방문자 (Visitor) | 메서드가 각 클래스를 돌아다님, 새 기능(연산) 추가 시 |
| 이터레이터 (Iterator) | 컬렉션 내 모든 요소 순차 탐색, Cursor |
| 상태 (State) | 내부 상태 변경 시 객체 행동 방식 함께 변경 |
| 인터프리터 (Interpreter) | 특정 언어 문법 정의, 문장 해석 |
| 메멘토 (Memento) | 실행 취소, 객체 내부 상태 외부 노출 X |
| 커맨드 (Command) | 실행 취소, 요청 자체를 객체로 캡슐화 |
| 책임 연쇄 (Chain of Responsibility) | 처리 가능 객체 연결, 요청이 순서대로 전달 |
| 템플릿 메서드 (Template Method) | 상위 = 추상 메서드(골격) / 하위 = 세부 처리 구체화 |
2. 응집도·결합도 ★★★
| 개념 | 정의 |
|---|---|
| 응집도 (Cohesion) | 모듈 내부 요소들이 얼마나 밀접하게 관련되어 있는지 |
| 결합도 (Coupling) | 모듈과 모듈 간 상호 의존 정도 |
응집도는 높을수록 좋고, 결합도는 낮을수록 좋다.
표 순서: 강할수록 위쪽 (응집도·결합도 각각)
2.1 응집도 (강 → 약)
암기: 우논시절통순기 (거꾸로 읽으면 약→강)
| 응집도 | 영어 | 키워드 |
|---|---|---|
| 기능적 | Functional | 모든 기능 단일 목적 위해 수행 |
| 순차적 | Sequential | 이전 출력을 다음 입력으로 사용 |
| 통신적(교환적) | Communicational | 동일한 입력·출력 사용 |
| 절차적 | Procedural | 입출력 연관 X, but 순서에 따라 수행 |
| 시간적 | Temporal | 특정 시간에 처리 |
| 논리적 | Logical | 논리적 유사하지만 실제로는 다른 기능 |
| 우연적 | Accidental | 모듈 내부 요소 연관 없음 |
2.2 결합도 (강 → 약)
암기: 내공외제스자 (거꾸로 읽으면 약→강)
| 결합도 | 영어 | 키워드 |
|---|---|---|
| 내용 | Content | 모듈 내부 변수 |
| 공통 | Common | 전역 변수 참조·갱신 |
| 외부 | External | 외부 데이터 사용 |
| 제어 | Control | **제어 신호(요소)**로 통신 |
| 스탬프 | Stamp | 자료구조(배열, 객체, 구조 등) 전달 |
| 자료 | Data | 파라미터로 전달 |
3. SOLID ★★
소프트웨어 유지보수성·확장성을 높이기 위한 객체 지향 설계 원칙
| 약자 | 영어 | 한글 | 키워드 |
|---|---|---|---|
| SRP | Single Responsibility Principle | 단일 책임 원칙 | 하나의 클래스 = 하나의 책임 |
| OCP | Open-Closed Principle | 개방-폐쇄 원칙 | 확장은 열려, 변경은 닫혀 |
| LSP | Liskov Substitution Principle | 리스코프 치환 원칙 | 서브타입, 기반 타입 간 교체 가능 |
| ISP | Interface Segregation Principle | 인터페이스 분리 원칙 | 사용하지 않는 메서드와 의존 관계 X |
| DIP | Dependency Inversion Principle | 의존성 역전 원칙 | 고수준 모듈은 저수준 모듈에 의존 X |
4. 럼바우 (OMT) ★★
객체 모델링 3가지 유형 — Object Modeling Technique
| 한글 | 영어 | 키워드 |
|---|---|---|
| 객체(정보) 모델링 | Object (Information) Modeling | 객체/ER 다이어그램, 객체 간 관계 |
| 동적 모델링 | Dynamic Modeling | 상태 다이어그램, 시간·제어 흐름 |
| 기능 모델링 | Functional Modeling | 자료 흐름도(DFD), 자료 흐름 |
5. UML 다이어그램 ★★★
5.1 분류 — 암기
| 구분 | 암기 | 다이어그램 |
|---|---|---|
| 정적 | 클객컴배복패 | Class, Object, Component, Deployment, Composite, Package |
| 동적 | 유시커상활타 | Use case, Sequence, Communication, State, Activity, Timing |
추가 암기: 베네딕트 컴배비치 + 시커스톤 (정적·동적 보조)
5.2 정적 다이어그램
| 다이어그램 | 핵심 키워드 |
|---|---|
| 클래스 다이어그램 | 속성·메서드 포함, 클래스 간 관계 표현 |
| 객체 다이어그램 | 객체 모델링, 인스턴스 |
| 컴포넌트 다이어그램 | 구현 단계 인터페이스/의존 관계 |
| 배치 다이어그램 | 물리적 위치 |
| 복합체 다이어그램 | 내부 구조 |
| 패키지 다이어그램 | 폴더 모양, 유스케이스 요소 그룹화 |
5.3 동적 다이어그램
| 다이어그램 | 핵심 키워드 |
|---|---|
| 유스케이스 다이어그램 | 사용자 관점 표현 |
| 시퀀스 다이어그램 | 객체 메시지 + 흐름 |
| 커뮤니케이션 다이어그램 | 객체 메시지 연관 관계 |
| 상태 다이어그램 | 럼바우 동적 모델링 + 상태 변화 |
| 활동 다이어그램 | 어떤 기능 수행 |
| 타이밍 다이어그램 | 시간 제약 명시적 |
6. 클래스 다이어그램 관계 ★★★
암기: 포집 연의 일실 (포함·집합·연관·의존·일반화·실체화)
6.1 강약 마름모 ◆ ◇
| 관계 | 모양 | 키워드 |
|---|---|---|
| 포함(복합) Composition | 강한 마름모 ◆ (속 찬) | 영구적 |
| 집합 Aggregation | 약한 마름모 ◇ (속 빈) | 포함되어 있는 관계 |
6.2 강약 화살표 → ⇢
| 관계 | 모양 | 키워드 |
|---|---|---|
| 연관 Association | 강한 화살표 → (실선) | 서로 관련(연결) |
| 의존 Dependency | 약한 화살표 ⇢ (점선) | 짧은 시간 동안 연관 유지 |
6.3 강약 속 빈 화살표 ─▷
| 관계 | 모양 | 키워드 |
|---|---|---|
| 일반화 Generalization | 강한 속 빈 화살표 ─▷ (실선) | 일반적인지 구체적인지 |
| 실체화 Realization | 약한 속 빈 화살표 - -▷ (점선) | 기능으로 그룹화, 자식 클래스 추상 메서드 |
7. 시험 포인트 체크리스트
- 생성 패턴 — 싱팩빌프앱 (Singleton, Factory, Builder, Prototype, Abstract Factory)
- 구조 패턴 — 어데퍼프 브플컴
- 행위 패턴 — 전옵 중방이상인 매커책템, 상호작용 패턴화
- 싱글톤(하나) / 프록시(대리자) / 어댑터(인터페이스 연결) / 옵저버(발행·수신)
- 응집도 — 우논시절통순기 (기능적이 가장 강함)
- 결합도 — 내공외제스자 (내용이 가장 강함)
- 응집도 ↑ 좋음 / 결합도 ↓ 좋음
- SOLID — SRP(단일 책임), OCP(확장 O·변경 X), DIP(고수준→저수준 의존 X)
- 럼바우 — 객체(ER), 동적(상태), 기능(DFD)
- UML 정적 — 클객컴배복패 / 동적 — 유시커상활타
- 상태 다이어그램 ↔ 럼바우 동적 모델링
- 클래스 관계 — 포집 연의 일실
- Composition(◆ 영구) vs Aggregation(◇ 포함) vs Dependency(점선·짧은 연관)