과목별 요약 › 정보처리기사 › 소프트웨어 개발
정보처리기사 소프트웨어 개발 핵심 요약 정리
정보처리기사 필기 소프트웨어 개발의 시험에 자주 나오는 쟁점을 요약 카드 25개로 정리했어요. 형광펜 은 시험에 나오는 핵심 낱말이에요. 자료구조의 분류, 스택과 큐, 트리와 이진 트리 순회, 수식 표기법 변환 (전위·중위·후위), 그래프와 탐색, 정렬 알고리즘과 시간 복잡도 등.
소프트웨어 개발 요약을 빈칸 암기 로 외우고, OX·객관식 문제 와 실전 모의고사 로 확인해 보세요. 틀린 문제는 1·3·7·14·30일 간격으로 다시 나와요. 회원가입 없이 무료예요.
자격공부노트에서 정보처리기사 공부하기
자료구조
자료구조의 분류 ★ 빈출
선형 구조 : 데이터가 한 줄로 이어짐배열 : 같은 자료형을 연속된 공간에 저장. 인덱스로 바로 접근선형 리스트 : 연속 리스트(배열처럼 연속 저장, 삽입·삭제 때 자료 이동 필요), 연결 리스트 (포인터로 연결, 삽입·삭제 쉬움, 포인터 공간 필요, 접근 속도 느림)스택 , 큐 , 데크 비선형 구조 : 트리 , 그래프 데크(Deque): 양쪽 끝 에서 삽입·삭제 가능. 입력 제한 데크(Scroll), 출력 제한 데크(Shelf)
스택과 큐 ★ 빈출
스택 (Stack): 한쪽 끝(Top)에서만 삽입(Push)·삭제(Pop). LIFO (후입선출)쓰임: 서브루틴 호출·복귀 주소 저장, 인터럽트 처리, 재귀 호출 , 후위 표기식 계산, 깊이 우선 탐색(DFS) 포인터는 Top 하나뿐 (Front·Rear 두 포인터를 쓰는 것은 큐) Top이 꽉 찬 상태에서 Push → 오버플로 / 빈 상태에서 Pop → 언더플로 예: A, B, C, D를 push, push, pop, push, push, pop, pop, pop → 출력 B, D, C, A 큐 (Queue): 한쪽(Rear)에서 삽입, 다른 쪽(Front)에서 삭제. FIFO (선입선출)쓰임: 운영체제의 작업 스케줄링, 프린터 대기열, 너비 우선 탐색(BFS) 스택 출력 순서 문제: 입력 순서 A, B, C, D일 때 중간에 Pop을 섞어도 나올 수 없는 순서를 찾음 (예: C가 먼저 나오면 A는 B보다 먼저 나올 수 없음)
트리와 이진 트리 순회 ★ 빈출
트리 용어 근 노드 (Root): 맨 위 노드 / 단말 노드 (Leaf): 자식이 없는 노드(차수 0)노드의 차수 (Degree): 그 노드의 자식 수 / 트리의 차수: 노드 차수 중 가장 큰 값 레벨: 근 노드가 1 / 깊이(Depth): 트리의 최대 레벨 이진 트리 : 차수가 2 이하레벨 i의 최대 노드 수 2^(i−1) / 깊이 k인 이진 트리의 최대 노드 수 2^k − 1 이진 탐색 트리 는 한쪽으로 치우치면 최악의 경우 검색 효율이 가장 나쁨 → 균형 트리(AVL, 2-3, 레드-블랙)로 보완순회 방법 전위 (Preorder): Root → Left → Right중위 (Inorder): Left → Root → Right후위 (Postorder): Left → Right → Root 깊이 k 이진 트리 최대 노드 2^k − 1 레벨 i 최대 노드 2^(i−1)
수식 표기법 변환 (전위·중위·후위) ★ 빈출
중위 표기(Infix): 연산자가 피연산자 가운데 — A + B전위 표기(Prefix): 연산자가 앞 — + A B후위 표기(Postfix): 연산자가 뒤 — A B +중위 → 후위 변환 방법 : 연산 우선순위대로 괄호로 묶고 → 연산자를 해당 괄호의 뒤 로 옮긴 뒤 → 괄호를 지움예: A + B * C → (A + (B * C)) → A B C * + 예: (A + B) * C → A B + C * 중위 → 전위 : 연산자를 괄호의 앞 으로 옮김. A + B * C → + A * B C후위 표기식은 스택 으로 계산: 피연산자는 Push, 연산자를 만나면 두 개를 Pop해 계산 후 Push
그래프와 탐색
그래프 G = (V, E): 정점(Vertex)과 간선(Edge)의 집합 정점이 n개인 무방향 완전 그래프의 간선 수: n(n−1)/2 / 방향 완전 그래프: n(n−1) 표현: 인접 행렬, 인접 리스트 탐색 깊이 우선 탐색 (DFS): 한 방향으로 끝까지 간 뒤 되돌아옴. 스택 사용너비 우선 탐색 (BFS): 가까운 정점부터 차례로 방문. 큐 사용신장 트리 : 모든 정점을 사이클 없이 연결한 트리. 간선 수 = 정점 수 − 1최소 비용 신장 트리 : 간선 가중치 합이 가장 작은 신장 트리 — 크루스칼 (간선 중심), 프림 (정점 중심) 알고리즘무방향 완전 그래프 간선 n(n−1)/2 방향 완전 그래프 간선 n(n−1)
정렬 알고리즘과 시간 복잡도 ★ 빈출
삽입 정렬: 이미 정렬된 부분에 새 값을 알맞은 자리에 끼워 넣음 — 평균·최악 O(n²)선택 정렬: 남은 값 중 가장 작은 값을 골라 맨 앞과 교환 — O(n²)버블 정렬: 이웃한 두 값을 비교해 교환. 한 회전마다 가장 큰 값이 맨 뒤로 — O(n²)퀵 정렬: 피벗(기준값)을 중심으로 나눠 정렬(분할 정복) — 평균 O(n log n) , 최악 O(n²) 힙 정렬: 완전 이진 트리(힙) 이용 — O(n log n) 합병 (병합) 정렬: 나눈 뒤 합치면서 정렬 — O(n log n) 셸 정렬: 삽입 정렬을 개선(간격을 두고 삽입) / 기수 정렬: 자릿수별로 큐를 이용해 분배 예) 8, 3, 4, 9, 7을 선택 정렬하면 1회전 후 3, 8, 4, 9, 7 예) 같은 자료를 선택 정렬하면 3회전 후 3, 4, 7, 9, 8 예) 같은 자료를 삽입 정렬하면 1회전 후 3, 8, 4, 9, 7 (두 번째 값 3을 앞에 끼워 넣음) 예) 같은 자료를 버블 정렬하면 1회전 후 3, 4, 8, 7, 9 예) 9, 6, 7, 3, 5를 버블 정렬하면 1회전 후 6, 7, 3, 5, 9 → 2회전 후 6, 3, 5, 7, 9 → 3회전 후 3, 5, 6, 7, 9 퀵 정렬: 하나의 파일을 부분적으로 나누어 가며 정렬(분할 정복), 최악의 경우 비교 횟수 n(n−1)/2
검색과 해싱 ★ 빈출
이분 (이진) 검색: 자료가 정렬 되어 있어야 함. 가운데 값과 비교해 범위를 반씩 줄임 — O(log n)중간 위치 = (First + Last) / 2 예: 1~15에서 14를 찾으면 8 → 12 → 14로 3번 비교 순차(선형) 검색은 정렬되어 있지 않아도 됨 순차 검색: 처음부터 차례로 비교 — O(n) 해싱 : 해시 함수로 저장 위치(주소)를 계산해 바로 접근해시 함수 기법: 제산법 (나머지), 제곱법 , 폴딩법 (부분을 더하거나 XOR), 기수 변환법 , 숫자 분석법, 무작위법 충돌 (Collision): 서로 다른 키가 같은 주소로 가는 현상 / 시노님 (Synonym): 같은 주소를 갖는 키들충돌 해결: 개방 주소법(선형 탐사 등), 체이닝(연결 리스트)
시간 복잡도 (빅오 표기법)
빅오(Big-O): 알고리즘 실행 시간의 최악 의 경우를 나타냄 효율 좋은 순서: O(1) < O(log₂n) < O(n) < O(n log₂n) < O(n²) < O(n³) < O(2ⁿ) O(1): 입력 데이터 수와 관계없이 수행 시간이 일정 알고리즘 설계 기법 : 분할 정복 (Divide and Conquer), 탐욕 (Greedy), 동적 계획법 , 백트래킹 (Backtracking)예 O(1): 해시 테이블 접근, 배열 인덱스 접근 O(log₂n): 이분 검색 O(n): 순차 검색 O(n log₂n): 퀵 정렬(평균), 힙·합병 정렬 O(n²): 버블·선택·삽입 정렬
데이터 입출력 구현
데이터 조작 프로시저 작성과 최적화
데이터 조작 프로시저: 데이터를 삽입·수정·삭제·조회하는 SQL을 프로시저 (PL/SQL 등)로 묶어 작성 구성: DECLARE(선언) → BEGIN/END(실행) → CONTROL(조건·반복) → SQL → EXCEPTION(예외 처리) → TRANSACTION(COMMIT/ROLLBACK) 쿼리 성능 최적화 옵티마이저 : SQL을 가장 효율적으로 실행할 방법(실행 계획)을 찾음 — 규칙 기반(RBO), 비용 기반 (CBO)힌트 (Hint): 옵티마이저에게 실행 방법을 지시인덱스 를 활용하고, 불필요한 전체 테이블 스캔을 줄임APM(Application Performance Management)으로 쿼리 성능을 모니터링 ORM(객체-관계 매핑): 객체와 관계형 DB의 데이터를 자동으로 연결 (JPA, Hibernate 등)
통합 구현
통합 구현과 개발 도구
통합 구현 : 단위 모듈을 연계해 하나의 시스템으로 만드는 것. 송신 시스템 → 중계 시스템 → 수신 시스템, 연계 데이터, 네트워크로 구성IDE (통합 개발 환경): 코딩·컴파일·디버깅·배포를 한 곳에서 (Eclipse, IntelliJ, Visual Studio)빌드 도구 : 소스 코드를 실행 가능한 형태로 만드는 과정을 자동화Ant : 아파치, XML 기반 / Maven : 아파치, 프로젝트 의존성(라이브러리) 관리, pom.xml / Gradle : Groovy 기반, 안드로이드 기본 빌드 도구 / Jenkins : Java 기반 지속적 통합(CI) 도구단위 모듈: 하나의 기능을 수행하는 작은 프로그램 단위. 단위 기능 명세서 작성 → 입출력 기능 구현 → 알고리즘 구현
형상 관리와 버전 관리 ★ 빈출
형상 관리 (SCM): 소프트웨어 개발 과정에서 생기는 변경 사항을 관리. 개발 전 단계에 걸쳐 적용절차 : 형상 식별 → 형상 통제 → 형상 감사 → 형상 기록 (보고)식별: 관리할 대상을 정하고 이름·번호를 붙임 통제: 변경 요구를 검토해 반영 (형상 통제 위원회 CCB) 감사: 변경이 제대로 됐는지 확인 기록: 처리 과정과 결과를 기록·보고 버전 관리 도구 공유 폴더 방식: RCS, SCCS 클라이언트/서버 방식: CVS , SVN (Subversion) — 중앙 저장소 분산 저장소 방식: Git , Bitkeeper — 로컬 저장소에 먼저 커밋한 뒤 원격 저장소에 반영(push)용어: 저장소(Repository), 체크아웃(내려받기), 체크인 (저장소에 새 버전으로 갱신)·커밋(변경 반영), 동기화(Update) RCS : 동시에 소스를 수정하지 못하게 잠그고 변경 내용을 추적하는 버전 관리 도구관리 항목: 요구 분석서, 설계서, 소스 코드, 테스트 케이스, 운영·설치 지침서 등 (개발 비용은 관리 항목이 아님) 형상 관리 도구 ≠ 빌드 도구 (Ant, Maven, Gradle은 빌드 도구) 형상 통제에서 변경 요구는 즉시 반영하지 않고 검토·승인을 거침
구현의 기본: 모듈화와 NS 차트
모듈 : 독립적인 기능을 갖는 단위. 논리적 기능을 수행하는 명령어들의 집합으로, 모여서 하나의 프로그램이 됨모듈화의 장점 : 오류의 파급 효과 최소화 , 재사용으로 개발·유지보수 쉬움, 효율적인 관리, 기능 분리로 인터페이스가 단순 해짐구현 단계 작업 순서 : 코딩 계획 → 코딩 → 컴파일 → 테스트NS 차트 (Nassi-Shneiderman): 논리 구조를 도형으로 표현. 연속 ·선택 ·반복 구조를 표현하며 GOTO·화살표를 쓰지 않음 . 이해하기 쉽고 코드 변환이 쉬움프로그래밍 언어 선택 시 고려: 개발 정보시스템의 특성, 사용자 요구사항, 컴파일러의 가용성, 개발자의 경험·지식 소프트웨어 공학의 기본 원칙: 품질 높은 소프트웨어 개발, 지속적인 검증, 결과에 대한 명확한 기록 유지 IDE의 컴파일: 고급 언어 프로그램을 저급 언어 (기계어)로 변환
소프트웨어 재사용과 재공학
재사용 : 이미 개발된 소프트웨어(모듈, 컴포넌트, 문서 등)를 다시 사용이점: 생산성 증가, 품질 향상, 개발 기간·비용 감소, 프로젝트 문서 공유 (새 개발 방법론 도입이 쉬워지는 것은 아님) 재공학 (Re-Engineering): 기존 시스템을 이용해 더 나은 시스템을 만들거나 새 기능을 추가 (유지보수 생산성 향상)주요 활동: 분석 (Analysis) → 재구성 (Restructuring) → 역공학 (Reverse Engineering) → 이식 (Migration) 이식 (Migration): 기존 소프트웨어를 다른 운영체제·하드웨어 환경에서 쓸 수 있게 변환역공학 : 기존 소프트웨어를 분석해 설계 정보 등을 다시 만들어 냄재개발보다 나은 점: 위험 부담 감소 , 비용 절감 , 개발 시간 단축, 시스템 명세 오류 억제
제품소프트웨어 패키징
패키징과 DRM ★ 빈출
패키징: 개발한 소프트웨어를 배포할 수 있게 묶음. 사용자 중심 으로 진행, 신규·변경 소스를 식별해 모듈화, 범용 환경 에서 쓸 수 있게 일반적인 배포 형태로, 매뉴얼·버전 관리를 지속 패키징 도구 활용 시 고려 사항 : 내부 콘텐츠의 암호화 ·보안 고려, 이기종 연동 고려, 사용자 편의성을 위한 복잡성·비효율성 문제 고려, 제품 종류에 맞는 암호화 알고리즘 적용DRM (디지털 저작권 관리): 디지털 콘텐츠의 저작권을 보호하고 사용을 제어DRM 구성 요소 클리어링 하우스 : 키 관리, 라이선스 발급, 사용 권한·결제 관리콘텐츠 제공자: 저작권자 / 콘텐츠 분배자: 쇼핑몰 등 유통 / 콘텐츠 소비자: 구매·이용자 패키저 : 콘텐츠를 메타데이터와 함께 배포 가능한 형태로 묶어 암호화DRM 컨트롤러: 콘텐츠 이용 권한을 통제 / 보안 컨테이너: 원본을 안전하게 유통하는 전자적 보안 장치 DRM 기술 : 암호화, 키 관리, 암호화 파일 생성, 식별 기술, 저작권 표현, 정책 관리, 크랙 방지 (Tamper Resistance), 인증 (방화벽, 콘텐츠 오류 감지·복구는 DRM 기술이 아님)
매뉴얼 작성과 소프트웨어 품질 표준 ★ 빈출
설치 매뉴얼 : 사용자 기준 으로 설치 시작부터 완료까지 순서대로 설명. 예외 상황은 따로 구분 (목차, 개요, 기본 사항, 설치 관련 파일, 설치 절차, 프로그램 삭제 등)사용자 매뉴얼 : 사용자가 기능을 쉽게 쓰도록 설명 (사용 환경, 기능 설명, 주의 사항, 오류 대처)작성 절차: 작성 지침 정의 → 구성 요소 정의 → 구성 요소별 내용 작성 → 사용 설명서 검토 소프트웨어 품질 국제 표준 ISO/IEC 9126 : 품질 특성 — 기능성 , 신뢰성 , 사용성 , 효율성 , 유지보수성 , 이식성 ISO/IEC 14598 : 소프트웨어 품질 평가 절차 ISO/IEC 12119 : 패키지 소프트웨어의 품질 요구사항과 테스트ISO/IEC 9126 기능성의 하위 특성: 적합성 , 정확성 , 상호 운용성, 보안성 , 준수성 (학습성은 사용성의 하위 특성) ISO/IEC 25000 (SQuaRE): 9126·14598·12119를 통합한 품질 평가 통합 모델 — 2500n 품질 관리, 2501n 품질 모델 , 2502n 품질 측정, 2503n 품질 요구, 2504n 품질 평가품질 목표: 신뢰성 (주어진 시간 동안 기능을 오류 없이 수행), 사용성(쉽게 배우고 사용), 이식성 (다른 환경에서도 쉽게 수정해 운용), 재사용성(일부를 다른 시스템에서 사용), 정확성, 무결성, 효율성 ISO/IEC 25010: 9126을 개선 — 기능 적합성, 성능 효율성, 호환성, 사용성, 신뢰성, 보안성, 유지보수성, 이식성
애플리케이션 테스트
테스트의 기본 원리 ★ 빈출
검증 (Verification): 제품이 명세서대로 올바르게 만들어졌는지 (개발자 관점, "Are we building the product right?")확인 (Validation): 사용자의 요구를 만족하는 올바른 제품 인지 (사용자 관점, "Are we building the right product?")테스트 원리 테스트는 결함이 존재함 을 밝히는 것 (결함이 없음을 증명하지는 못함) 완벽한 테스트는 불가능 초기에 집중할수록 비용이 줄어듦 결함 집중 : 결함의 대부분은 소수의 모듈에 몰려 있음 — 파레토 법칙 (80:20)살충제 패러독스 : 같은 테스트를 반복하면 새 결함을 찾지 못함 → 테스트 케이스를 계속 개선정황(상황) 의존: 소프트웨어 성격에 맞게 테스트 오류-부재의 궤변 : 결함을 다 고쳐도 사용자 요구를 만족하지 못하면 품질이 높다고 할 수 없음
블랙박스 테스트와 화이트박스 테스트 ★ 빈출 · 헷갈림
블랙박스 테스트(명세 기반): 내부 구조를 보지 않고 기능 이 명세대로 동작하는지 확인동치 분할 : 입력을 유효·무효 그룹으로 나눠 대표값으로 테스트경계값 분석 : 입력 범위의 경계 에서 오류가 많다는 점을 이용원인-효과 그래프 : 입력과 출력의 관계를 그래프로 분석오류 예측 : 경험으로 오류를 예측 / 비교 검사: 여러 버전에 같은 입력을 넣어 비교화이트박스 테스트(구조 기반): 소스 코드의 논리 흐름 을 보며 확인기초 경로 검사(McCabe의 순환 복잡도 이용), 제어 구조 검사(조건 검사, 루프 검사, 데이터 흐름 검사)커버리지 (화이트박스): 구문 (문장) 커버리지 — 모든 문장을 한 번 이상 / 결정 (분기) 커버리지 — 각 분기의 참·거짓을 한 번 이상 / 조건 커버리지 — 각 개별 조건의 참·거짓을 한 번 이상 / 조건·결정, MC/DC, 다중 조건 커버리지
맥케이브 순환 복잡도
순환 복잡도 (Cyclomatic Complexity): 프로그램 논리의 복잡도를 재는 척도. 기초 경로 (독립 경로)의 수계산 방법 V(G) = E − N + 2 (E: 간선 수, N: 노드 수) V(G) = 제어 흐름 그래프에서 닫힌 영역의 수 + 1 V(G) = 조건(분기) 수 + 1 예: 간선 9개, 노드 7개 → 9 − 7 + 2 = 4 순환 복잡도가 크면 테스트해야 할 경로가 많고 유지보수가 어려움
테스트 레벨과 V 모델 ★ 빈출
테스트 레벨 순서: 단위 → 통합 → 시스템 → 인수 테스트 단위: 모듈 하나를 테스트 (주로 화이트박스). 알고리즘 오류, 무한 반복, 계산식 오류 등을 발견 (모듈 사이의 상호작용 오류는 통합 테스트에서) 통합: 모듈을 결합하며 인터페이스를 테스트 시스템: 전체 시스템이 요구사항(기능·비기능)을 만족하는지 인수: 사용자 요구사항을 충족하는지 사용자가 확인 V 모델 대응: 요구사항 분석 ↔ 인수 테스트 / 분석·기본 설계 ↔ 시스템 테스트 / 상세 설계 ↔ 통합 테스트 / 코딩 ↔ 단위 테스트인수 테스트 종류 알파 테스트: 개발자의 장소 에서 사용자가 개발자 앞에서 테스트 (통제된 환경)베타 테스트: 사용자의 장소 에서 개발자 없이 실제 환경에서 테스트, 문제를 기록해 개발자에게 알림사용자 인수, 운영상 인수, 계약 인수, 규정 인수
목적별 테스트와 정적 테스트(검토) ★ 빈출
목적에 따른 테스트 회복 (Recovery): 고의로 실패를 유도해 정상적으로 복귀 하는지안전 (Security): 불법적인 침입을 시도해 보안 시스템이 잘 막는지강도 (Stress): 과부하 를 주어도 정상적으로 작동하는지성능 (Performance): 응답 시간, 처리량, 반응 속도 등을 측정구조(Structure), 회귀 (Regression), 병행(Parallel: 같은 입력을 기존·새 시스템에 넣어 비교) 정적 테스트: 프로그램을 실행하지 않고 명세서·코드를 검토 — 워크스루, 인스펙션 , 동료 검토, 정적 분석동적 테스트: 프로그램을 실행하며 오류를 찾음 — 블랙박스, 화이트박스 테스트인스펙션 : 코드를 읽고 눈으로 확인하는 공식 검토 (동적 테스트가 아님). 과정: 계획 → 사전 교육 → 준비 → 인스펙션 회의 → 수정 → 후속 조치워크스루와 인스펙션은 다름 (워크스루는 비공식적, 사례를 따라 수작업으로 실행해 봄) 정형 기술 검토(FTR) 지침: 의제 제한, 논쟁·반박 제한, 문제 영역 명확히, 참가자 수 제한 , 사전 준비 강요 오류(Error)·결함(Fault)·고장(Failure): 사람의 실수가 결함을 만들고, 결함이 실행되면 고장이 남 테스트는 오류를 찾는 작업, 디버깅은 오류를 수정 하는 작업
통합 테스트와 테스트 도구 ★ 빈출 · 헷갈림
하향식 통합: 상위 모듈부터 아래로 통합. 하위 모듈 대신 스텁 (Stub)이 필요. 깊이 우선 또는 너비 우선상향식 통합: 하위 모듈부터 위로 통합. 상위 모듈 대신 드라이버 (Driver)가 필요. 하위 모듈을 클러스터 로 묶음빅뱅 통합: 모든 모듈을 한꺼번에 통합 / 샌드위치 통합: 상위는 하향식, 하위는 상향식 회귀 테스트: 수정한 뒤 새로운 오류 가 생기지 않았는지 다시 테스트테스트 하네스 도구 테스트 드라이버 : 하위 모듈을 호출하고 결과를 확인하는 임시 상위 모듈테스트 스텁 : 아직 없는 하위 모듈을 대신하는 임시 하위 모듈테스트 슈트(케이스 묶음), 테스트 케이스, 테스트 스크립트, 목 오브젝트 (미리 정한 행동을 하는 객체)
테스트 케이스와 테스트 오라클
테스트 케이스 : 테스트를 위한 입력값, 실행 조건, 예상 결과 의 집합구성: 식별자, 테스트 항목, 입력 명세, 출력 명세, 환경 설정, 특수 절차 요구, 의존성 기술 테스트 시나리오 : 테스트 케이스를 실행 순서에 따라 묶은 것테스트 오라클 : 테스트 결과가 참인지 판단하려고 미리 정해 둔 참값 을 대입·비교하는 기법참 오라클: 모든 입력값에 대해 기대 결과를 제공 (전수 테스트)샘플링 오라클: 특정 몇몇 입력값에 대해서만 기대 결과 제공추정 (휴리스틱) 오라클: 특정 입력값은 기대 결과를 주고, 나머지는 추정일관성 검사 오라클: 변경 전후의 결과가 같은지 확인
성능 개선과 클린 코드 ★ 빈출
성능 측정 지표 : 처리량 (Throughput, 일정 시간 동안 처리한 일의 양), 응답 시간 (Response Time, 요청 후 응답이 오기 시작할 때까지), 경과 시간 (Turnaround Time, 요청부터 처리 완료까지), 자원 사용률 성능 테스트 도구: JMeter, LoadUI, OpenSTA / 시스템 모니터링: Nagios, Zenoss 클린 코드 원칙 : 가독성 (누구나 읽기 쉽게), 단순성 (한 번에 한 가지 처리, 최소 단위로 분리), 의존성 배제 (다른 모듈에 미치는 영향 최소화), 중복성 최소화 , 추상화 (상위 클래스·메서드에서 간략하게, 상세 내용은 하위 에서 구현)코드 간결성 지침: 공백·빈 줄로 구분, 괄호와 들여쓰기로 명확히, 한 줄에 한 문장 리팩토링 : 외부 동작은 그대로 두고 내부 구조를 개선. 나쁜 코드(코드 스멜)를 정리외계인 코드(Alien Code): 아주 오래되었거나 참고 문서·개발자가 없어 유지보수가 어려운 코드 소스 코드 품질 분석 도구 정적 분석(실행하지 않고 분석): pmd, cppcheck, SonarQube, checkstyle동적 분석(실행하며 분석): Avalanche, Valgrind
인터페이스 구현
인터페이스 구현과 보안
인터페이스 구현 방법 데이터 통신 을 이용: 애플리케이션 영역에서 인터페이스 형식에 맞춘 데이터를 JSON , XML 등으로 주고받음인터페이스 엔티티 를 이용: 송·수신 시스템 사이에 별도의 인터페이스 테이블을 두고 데이터를 주고받음AJAX : JavaScript로 서버와 비동기 통신해 페이지 전체를 새로 고치지 않고 일부만 갱신인터페이스 데이터 형식: JSON , XML , YAML 인터페이스 보안 네트워크 영역: IPSec , SSL/TLS , S-HTTP로 통신 구간 암호화 애플리케이션 영역: 시큐어 코딩 가이드 적용 데이터베이스 영역: 중요 데이터 암호화 , 접근 권한 제어 데이터 무결성 검사 도구: Tripwire, AIDE, Samhain 등 (파일 변경 여부 확인)
인터페이스 구현 검증·감시 도구
인터페이스 구현 검증 도구 xUnit : 다양한 언어를 지원하는 단위 테스트 프레임워크 (JUnit, CppUnit, NUnit, HttpUnit 등)STAF : 서비스 호출·컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크. 각 테스트 대상 분산 환경에 데몬을 둠FitNesse : 웹 기반 테스트 케이스 설계·실행·결과 확인NTAF: FitNesse와 STAF를 통합한 NHN의 테스트 자동화 프레임워크 Selenium : 다양한 브라우저·개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크watir: Ruby를 사용하는 애플리케이션 테스트 프레임워크 인터페이스 구현 감시 도구 : APM (애플리케이션 성능 관리) — 스카우터(Scouter), 제니퍼(Jennifer)검증 시 확인: 송신 시스템의 데이터 추출·전송, 수신 시스템의 수신·반영이 정상인지
소프트웨어 개발 OX 예시 문제 눌러서 정답과 해설을 확인하세요. 앱에는 소프트웨어 개발 연습문제가 134개 있어요.
연결 리스트는 노드의 삽입과 삭제가 쉽지만, 포인터를 위한 추가 공간이 필요하다. 정답 O · 포인터만 바꾸면 돼서 삽입·삭제가 쉬워요. 대신 포인터 공간이 필요하고 특정 노드 접근은 느려요.
연속 리스트(배열)는 중간에 데이터를 삽입하거나 삭제할 때 자료의 이동이 필요 없다. 정답 X · 연속 리스트는 중간 삽입·삭제 시 뒤의 자료를 이동해야 해요.
큐는 가장 나중에 들어온 자료가 가장 먼저 나가는 LIFO 구조이다. 정답 X · 큐는 FIFO(선입선출), 스택이 LIFO(후입선출)예요.
스택이 비어 있는 상태에서 삭제(Pop)를 시도하면 언더플로가 발생한다. 정답 O · 꽉 찬 상태에서 Push하면 오버플로예요.
트리의 차수는 트리에 있는 노드들의 차수 중 가장 큰 값이다. 정답 O · 노드의 차수는 자식 수이고, 트리의 차수는 그 최댓값이에요.
중위 표기식 A + B * C를 전위 표기식으로 바꾸면 + A * B C이다. 정답 O · 연산자를 각 괄호 앞으로 옮기면 + A * B C예요.
너비 우선 탐색(BFS)은 스택을, 깊이 우선 탐색(DFS)은 큐를 이용한다. 정답 X · 반대예요. BFS는 큐, DFS는 스택을 써요.
크루스칼 알고리즘과 프림 알고리즘은 최소 비용 신장 트리를 구하는 알고리즘이다. 정답 O · 둘 다 최소 비용 신장 트리를 구해요.
힙 정렬과 합병 정렬의 시간 복잡도는 O(n log n)이다. 정답 O · 최악의 경우에도 O(n log n)이에요.
삽입 정렬의 평균 시간 복잡도는 O(n log n)이다. 정답 X · 삽입·선택·버블 정렬은 O(n²)이에요.
소프트웨어 개발 요약을 빈칸 암기 로 외우고, OX·객관식 문제 와 실전 모의고사 로 확인해 보세요. 틀린 문제는 1·3·7·14·30일 간격으로 다시 나와요. 회원가입 없이 무료예요.
자격공부노트에서 정보처리기사 공부하기
정보처리기사 다른 과목