정보처리기사 · 소프트웨어 설계·개발
한국어 · 40장
필기 1·2과목 빈출 용어 40개
-
소프트웨어 생명주기(SDLC)
요구 분석→설계→구현→테스트→유지보수로 이어지는 소프트웨어 개발 전 과정을 단계화한 모델.
🔑 분석→설계→구현→테스트→유지보수
-
폭포수 모델
각 단계를 순차적으로 진행하는 고전적 선형 모델. 단계별 산출물이 명확하지만 이전 단계로 되돌아가기 어렵다.
🔑 선형·순차, 회귀 어려움
-
나선형 모델
계획→위험 분석→개발→고객 평가를 반복하며 점진적으로 완성. 위험 분석 단계가 있는 것이 핵심 차별점.
🔑 반복마다 '위험 분석'
-
애자일(Agile)
절차·문서보다 동작하는 소프트웨어와 변화 대응을 중시하는 반복·점진 개발. 고객과의 협력, 개인과 상호작용을 강조.
🔑 계획 준수보다 변화 대응
-
스크럼(Scrum)
2~4주 스프린트 단위로 반복 개발. 제품 백로그에서 스프린트 백로그를 뽑고, 매일 15분 데일리 스크럼으로 진행을 점검.
🔑 스프린트·백로그·데일리 스크럼
-
XP(eXtreme Programming)
5가지 가치(용기·단순성·의사소통·피드백·존중)와 실천법(짝 프로그래밍, TDD, 리팩토링, 소규모 릴리즈)을 강조하는 애자일 방법론.
🔑 가치 5개: 용·단·의·피·존
-
요구공학 프로세스
요구사항을 도출→분석→명세→확인(검증) 순으로 다루는 체계적 활동.
🔑 도출→분석→명세→확인
-
기능 vs 비기능 요구사항
기능 요구사항은 시스템이 수행해야 할 동작, 비기능 요구사항은 성능·보안·품질·제약 등 동작 외의 조건.
🔑 '무엇을' vs '얼마나 잘'
-
UML
객체지향 시스템을 시각화하는 표준 모델링 언어. 사물(Things)·관계(Relationships)·다이어그램(Diagrams)으로 구성.
🔑 구성 3요소: 사물·관계·다이어그램
-
유스케이스 다이어그램의 관계
포함(<<include>>)은 반드시 실행되는 공통 기능, 확장(<<extend>>)은 조건에 따라 선택 실행, 일반화는 상속 관계.
🔑 include=필수, extend=선택
-
시퀀스 다이어그램
객체들이 주고받는 메시지를 시간 순서에 따라 표현하는 행위(동적) 다이어그램.
🔑 시간 순서 + 메시지
-
클래스 다이어그램의 관계
연관, 집합(빈 마름모), 합성(채운 마름모), 일반화(상속, 빈 삼각형 화살표), 의존, 실체화.
🔑 집합=빈 마름모, 합성=채운 마름모
-
구조 vs 행위 다이어그램
구조(정적): 클래스·객체·컴포넌트·배치·패키지. 행위(동적): 유스케이스·시퀀스·활동·상태·통신.
🔑 시퀀스·유스케이스는 행위 쪽
-
객체지향의 특징
캡슐화, 정보 은닉, 상속, 다형성, 추상화.
🔑 캡·은·상·다·추
-
SOLID 원칙
SRP 단일 책임, OCP 개방-폐쇄, LSP 리스코프 치환, ISP 인터페이스 분리, DIP 의존 역전.
🔑 O=확장에 열고 수정에 닫기
-
GoF 디자인 패턴 3분류
생성(Creational) 5개, 구조(Structural) 7개, 행위(Behavioral) 11개 패턴으로 분류.
🔑 생성·구조·행위
-
싱글턴 패턴
클래스의 인스턴스를 하나만 생성하도록 보장하고 전역 접근점을 제공하는 생성 패턴.
🔑 인스턴스 1개 보장
-
팩토리 메서드 패턴
객체 생성 코드를 서브클래스에 위임해, 어떤 클래스의 인스턴스를 만들지 하위에서 결정하게 하는 생성 패턴.
🔑 생성을 서브클래스에 위임
-
옵저버 패턴
객체 상태가 바뀌면 의존하는 객체들에게 자동으로 알려 갱신하는 행위 패턴. 일대다 의존 관계.
🔑 상태 변화 자동 통지
-
어댑터 패턴
호환되지 않는 인터페이스를 변환해 함께 동작하게 하는 구조 패턴.
🔑 인터페이스 변환기
-
전략(Strategy) 패턴
알고리즘 군을 각각 캡슐화해 상호 교체 가능하게 만드는 행위 패턴.
🔑 알고리즘 갈아끼우기
-
MVC 패턴
Model(데이터·비즈니스 로직), View(화면 표시), Controller(입력 처리·흐름 제어)로 분리한 아키텍처 패턴.
🔑 데이터·표시·제어 분리
-
파이프-필터 아키텍처
데이터 스트림을 여러 필터 단계가 순차 처리하며, 각 필터는 독립적으로 재사용 가능.
🔑 단방향 스트림 처리
-
응집도 (강한 순서)
기능적 > 순차적 > 통신적(교환적) > 절차적 > 시간적 > 논리적 > 우연적. 응집도는 높을수록 좋다.
🔑 기순통절시논우 — 높을수록 좋음
-
결합도 (약한 순서)
자료 < 스탬프 < 제어 < 외부 < 공통 < 내용. 결합도는 낮을수록 좋다.
🔑 자스제외공내 — 낮을수록 좋음
-
팬인(Fan-In) / 팬아웃(Fan-Out)
팬인은 해당 모듈을 호출하는 상위 모듈 수, 팬아웃은 해당 모듈이 호출하는 하위 모듈 수.
🔑 In=위에서 들어옴, Out=아래로 나감
-
미들웨어 종류
RPC(원격 프로시저 호출), MOM(메시지 지향), TP 모니터(트랜잭션 처리), ORB(객체 요청 브로커), WAS.
🔑 분산 환경의 소프트웨어 중개층
-
UI 설계 원칙
직관성(쉽게 이해), 유효성(목적 달성), 학습성(쉽게 익힘), 유연성(요구 수용·오류 최소화).
🔑 직·유·학·유
-
CASE 도구
소프트웨어 개발 과정을 자동화 지원하는 도구. 상위 CASE는 분석·설계, 하위 CASE는 구현·테스트 지원.
🔑 상위=분석·설계, 하위=구현·테스트
-
스택 vs 큐
스택은 LIFO(후입선출), 큐는 FIFO(선입선출). 스택 응용: 함수 호출, 인터럽트 처리, 후위 표기 수식 계산.
🔑 스택=LIFO, 큐=FIFO
-
트리 순회
전위(Root→L→R), 중위(L→Root→R), 후위(L→R→Root).
🔑 Root 위치가 이름을 결정
-
정렬 알고리즘 시간 복잡도
버블·선택·삽입 O(n²). 퀵 평균 O(n log n)·최악 O(n²). 힙·병합 항상 O(n log n).
🔑 퀵의 최악은 O(n²)
-
이진 탐색
정렬된 배열에서 중간값과 비교하며 절반씩 줄여 찾는 방법. 시간 복잡도 O(log n).
🔑 전제: 정렬돼 있어야 함
-
블랙박스 테스트 기법
명세 기반 테스트 — 동치 분할, 경계값 분석, 원인-효과 그래프, 오류 예측.
🔑 내부 구조를 안 봄
-
화이트박스 테스트 기법
내부 구조 기반 — 구문(문장) 커버리지, 분기(결정) 커버리지, 조건 커버리지, 경로 커버리지.
🔑 커버리지 = 화이트박스
-
테스트 레벨
단위 → 통합 → 시스템 → 인수 테스트 순. 인수 테스트에는 알파(개발 환경·개발자 참관)와 베타(사용자 환경)가 있다.
🔑 알파=통제된 환경, 베타=실사용 환경
-
테스트 스텁 vs 드라이버
하향식 통합엔 미완성 하위를 대신할 스텁, 상향식 통합엔 상위를 대신할 드라이버가 필요.
🔑 하향식-스텁, 상향식-드라이버
-
형상 관리
개발 산출물의 변경을 통제하는 활동 — 형상 식별, 형상 통제, 형상 감사, 형상 기록. 도구: Git, SVN.
🔑 식별·통제·감사·기록
-
리팩토링
외부 동작은 그대로 유지하면서 내부 구조를 개선하는 작업. 가독성·유지보수성 향상 목적.
🔑 동작 불변 + 구조 개선
-
정적 분석 vs 동적 분석
정적 분석은 실행 없이 소스 코드를 검사(pmd, cppcheck), 동적 분석은 실행하며 결함을 검사(valgrind).
🔑 실행 여부가 기준
비슷한 덱