소프트웨어 공학 출제 포인트
소프트웨어 공학은 개발 방법론의 특징 비교, 테스트 기법, UML 다이어그램, 디자인 패턴 등 광범위한 개념을 다룹니다. 각 방법론의 핵심 특징과 적합한 상황을 이해하는 것이 중요합니다.
【기출 토픽 1】 소프트웨어 개발 방법론 비교
기출 문제 예시: 소규모 팀이 짧은 반복(스프린트) 주기로 개발하고, 변경 요구사항에 유연하게 대응하는 개발 방법론은?
- ① 폭포수 모델 (Waterfall)
- ② 나선형 모델 (Spiral)
- ③ 애자일 (Agile) ✅
- ④ RAD (Rapid Application Development)
주요 방법론 비교:
- 폭포수: 순차적 단계, 요구사항 변경 어려움, 대규모 프로젝트
- 프로토타입: 시제품 개발 후 피드백 반영
- 나선형: 위험 분석 포함, 대규모·고위험 프로젝트
- 애자일(스크럼/XP): 반복 개발, 고객 협업, 변경 대응, 소규모 팀
【기출 토픽 2】 블랙박스 vs 화이트박스 테스트
기출 문제 예시: 소프트웨어 내부 구조나 코드를 보지 않고, 입력과 출력만으로 기능을 검증하는 테스트 기법은?
- ① 화이트박스 테스트
- ② 블랙박스 테스트 ✅
- ③ 구조 기반 테스트
- ④ 코드 커버리지 테스트
테스트 기법 비교:
- 블랙박스: 내부 구조 무시, 입출력 중심, 동치 분할·경계값 분석·원인-결과 그래프
- 화이트박스: 내부 코드 기반, 구문·분기·경로 커버리지, 기초 경로 테스트
테스트 단계: 단위 → 통합 → 시스템 → 인수 테스트
【기출 토픽 3】 GoF 디자인 패턴 분류
기출 문제 예시: GoF(Gang of Four) 디자인 패턴 중 객체 생성 방식을 다루는 생성 패턴에 해당하지 않는 것은?
- ① 싱글톤 (Singleton)
- ② 팩토리 메서드 (Factory Method)
- ③ 옵저버 (Observer) ✅
- ④ 빌더 (Builder)
GoF 패턴 분류(23가지):
- 생성 패턴(5): 싱글톤, 팩토리 메서드, 추상 팩토리, 빌더, 프로토타입
- 구조 패턴(7): 어댑터, 브리지, 컴포지트, 데코레이터, 파사드, 플라이웨이트, 프록시
- 행위 패턴(11): 옵저버, 전략, 커맨드, 템플릿 메서드, 이터레이터 등
【기출 토픽 4】 응집도와 결합도
기출 문제 예시: 좋은 소프트웨어 설계를 위해 모듈의 응집도와 결합도는 어떻게 해야 하는가?
- ① 응집도 높게, 결합도 높게
- ② 응집도 낮게, 결합도 낮게
- ③ 응집도 높게, 결합도 낮게 ✅
- ④ 응집도 낮게, 결합도 높게
해설: 응집도(Cohesion)는 모듈 내부 요소들이 얼마나 밀접하게 관련됐는지, 결합도(Coupling)는 모듈 간 상호 의존성입니다. 좋은 설계는 높은 응집도 + 낮은 결합도입니다.
응집도 강도(낮음→높음): 우연적 → 논리적 → 시간적 → 절차적 → 통신적 → 순차적 → 기능적
소프트웨어 공학 최종 정리
개발 방법론 특징 비교, 블랙박스/화이트박스 테스트 기법, GoF 패턴 분류, 응집도/결합도 개념을 중심으로 학습하세요. UML 다이어그램(클래스, 시퀀스, 유스케이스)도 자주 출제되므로 각 다이어그램의 용도를 구분하세요.