본 내용은 인프런의 정보처리기사 자격증 대비 교육(필기) 강의를 요약한 것입니다.
정보처리기사 자격증 대비 교육(필기) 강의 | 국립안동대학교 SW융합교육원 - 인프런
[지금 무료]정보처리기사 자격증 대비 교육(필기) 강의 | 국립안동대학교 SW융합교육원 - 인프런
국립안동대학교 SW융합교육원 | NCS개정 정보처리기사 필기 합격을 위한 핵심요약 특강으로 CBT 필기시험과 필답형 실기시험을 효율적으로 학습 할수 있습니다., 정보처리기사 자격증 대비 교육(
www.inflearn.com
1강_ [1과목] 소프트웨어 설계
- 주로 4 - 5 개 출제
1. 소프트웨어 생명주기 (SDLC: Software Development Life Cycle)
- 소프트웨어 제품이 개념 형성부터 운영/유지보수에 이르기까지 변화의 모든 과정 (개발 순서, 단계를 표현)
- 타당성 검토 → 개발 계획 → (사용자의) 요구사항 분석 → 설계 → 구현(coding) → 테스트 → 운용 → 유지 보수
- 전통적 개발 모형: 폭포수 모형, 나선형 모형, 프로토타입 모형 (자세한 내용 5과목)
- 폭포수 모형: 계획을 순차적으로 이수
- 나선형 모형: 유지보수 단계 없앰
- 프로토타입 모형: 시제품(견본)을 나타냄. 사용자에게 사전 제공해서 피드백 받음.
2. CASE (Computer Aided Software Engineering) (자동화 도구)
- 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정을 컴퓨터와 전용이 소프트웨어 도구를 사용하여 자동화하는 작업
- 소프트웨어 생명주기의 전체 단계를 연결해주고 자동화시켜 주는 통합된 도구를 제공해 주는 기술
- 소프트웨어 시스템의 문서화 및 명세화를 위한 그래픽 기능 제공
- 자료 흐름도 등의 다이어그램을 쉽게 작성해주는 소프트웨어 도구
- 표준화된 개발 환경 구축 및 문서 자동화 기능 제공
- 작업 과정 및 데이터 공유를 통해 작업자 간의 커뮤니케이션 증대
3. 애자일(Agile)
- ‘날렵한, 재빠른’의 사전적 의미와 같이 소프트웨어 개발 중 **설계 변경을 신속히 대응**하여 **요구사항을 수용**
- 절차와 도구보다 개인과의 소통을 중요시하고 **고객과의 피드백을 중요**하게 생각
- 소프트웨어 배포 시차를 최소화
- 특정 방법론이 아닌 소프트웨어를 빠르고 낭비 없이 제작하기 위해 **고객과의 협업에 초점**
- 특징 : 짧은 릴리즈와 반복, 점증적 설계, 사용자 참여, 문서 최소화, 비공식적인 커뮤니케이션 변화(빠른 의사소통 위해)
- Agile 선언문
- 프로세스나 도구보다 개인과의 소통이 중요
- 완벽한 문서보다 실행되는 소프트웨어가 더 중요
- 계약 협상보다 고객과의 협업 더 중요
- 계획을 따르는 것보다 변경에 대한 응답 더 중요
4. 익스트림 프로그래밍 (XP: eXtreme Programming)
- 1999년 Kent Beck이 제안, 개발 단계 중 요구사항이 자주 변할 때 적합한 방법론
- 요구사항을 모두 정의하고 작업 진행하는게 아니라, **요구사항이 변경되는 것을 적용**하는 방식으로 예측성보다는 **적응성에 더 높은 가치를 부여**
- XP 핵심 가치
- 소통 (Connunication)
- 단순성 (Simplicity)
- 피드백 (Feedback)
- 용기 (Courage): 고객 요구사항 변화에 능동적 대응
- 존중 (Respect): 팀원 간의 상호 존중
5. 요구사항 분석
- 요구사항 간 상충되는 것 해결, 소프트웨어 범위 파악
- 모호한 부분 걸러내기
- 시스템 요구사항 정제하여 소프트웨어 요구사항 도출, 개발 범위 파악
- 비용, 일정 제약 설정
- 타당성 조사 수행
- 요구사항 정의 문서화
6. UML의 기본 구성 요소

- 구조적(정적) 다이어그램
→ Class Diagram, Object Diagram, Composite Structure Diagram, Deployment Diagram, Component Diagram, Package Diagram
- 행위(동적) 다이어그램
→ 그외 전부 다
7. 유스케이스(Use Case)의 구성 요소 간의 관계
- 연관 관계(Association): 유스케이스와 액터 간의 상호 작용이 있음을 표현하는 관계
- 포함 관계(Include): 하나의 유스케이스가 다른 유스케이스의 실행을 전제로 할 때
- 확장 관계(Extend): 확장 기능 유스케이스와 확장 대상 유스케이스 사이에 형성
- 일반화 관계(Generalization): 유사한 유스케이스 또는 액터를 모아 추상화한 유스케이스 또는 액터와 연결해 그룹을 만들어 이해도를 높이기 위한 관계
8. 럼바우(Rumbaugh) 객체지향분석 기법
- 객체 모델링: 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체 간의 관계를 규정하여 객체를 다이어그램으로 표시
- 동적 모델링: 제어 흐름, 상호 작용, 동작 순서 등의 상태를 시간 흐름에 다라 상태 다이어그램으로 표시
- 기능 모델링: 자료 흐름도를 이용하여 여러 프로세스 간의 자료 흐름을 표시, 어떤 데이터를 입력하여 어떤 결과를 가져올 수 있을지를 표현
9. UI(사용자 인터페이스) 설계 원칙
- UI 설계 지침
- 사용자 중심, 일관성, 단순성, 가시성, 표준화, 접근성, 결과 예측 가능, 명확성, 오류 해결 가능
- UI 설계에 도움 주는 도구
- 와이어 프레임, 목업, 프로토타입, 스토리보드

2강_[1과목] 소프트웨어 설계
1. 소프트웨어 모델링
- 현실 세계에 존재하는 데이터를 추상화하여 컴퓨터 세계로 옮기는 변환 과정
- 모델링 작업의 결과물은 다른 모델링에 영향을 줌
- 개념적 모델링, 논리적 모델링으로 구분
- 데이터 모델링의 결과물을 ‘데이터 모델’ 이라고 한다.
2. 자료 흐름도 (DFD: Data Flow Diagram)
- 자료는 처리를 거쳐 변환될 때마다 새로운 명칭 부여
- 자료 흐름도의 최하위 처리(Process)는 소단위 명세서를 갖는다.
- 어떤 처리(Process)가 출력 자료를 산출하기 위해서는 필요한 자료가 반드시 입력되어야 함.
- 시스템이나 프로그램 간의 총체적인 데이터 흐름을 표시할 수 있으며, 기본적인 데이터 요소와 그들 사이의 데이터 흐름 형태로 기술
- 다차원적이며 자료 흐름 그래프 또는 버블(Bubble) 차트라 함.
- 구조적 분석 기법에 이용
- 그림 중심의 표현, 하향식 분할 원리 적용
3. 자료 사전 (Data Dictionary)
- 시스템 자신이 필요로 하는 여러 가지 객체(기본 테이블, 뷰, 인덱스, 데이터베이스, 패키지, 접근 권한 등)에 관한 정보를 포함하고 있는 **시스템 데이터베이스**
- 시스템 카탈로그(System Catalog), 메타 데이터(Meta Data)라고 함.
- 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있어 **SQL 문을 이용하여 내용 검색 가능**
- 자료 사전 표기법

4. 효과적인 모듈 설계
1. 응집도 (Cohesion)
- 한 모듈 내에 있는 처리 요소들 사이의 기능적인 연관 정도를 나타낸다.
- (높음)(바람직한) 기능적 응집도 > 순차적 응집도 > 교환적 응집도 > 절차적 응집도 > 시간적 응집도 > 논리적 응집도 > 우연적 응집도 (낮음)
2. 결합도
- 모듈들이 변수를 공유하지 않도록 결합도를 낮추어야 한다.
- (낮음)(바람직한) 데이터 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도 (높음)
3. 효과적인 모듈화 설계 방법
- 응집도는 강하게, 결합도는 약하게 설계
- 복잡도와 중복성을 줄이고 일관성을 유지할 수 있도록 설계
- 유지보수가 용이하도록 설계
- 모듈 크기는 시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 설계
- 모듈 기능은 예측이 가능해야 하며, 지나치게 제한적이면 안됨.
5. 객체지향/캡슐화
1. 객체지향(Object Oriented) 분석
- 현실 세계의 대상체인 개체 (Entity)를 속성(Attribute)과 메소드(Method)로 결합하여 객체(Object) 로 표현(모델링) 한다.
- 소프트웨어 개발의 대상을 기능이 아닌 개체를 대상으로 하며 개체 간의 상호관계를 모델링하는 방식이다.
- 설계 원칙 (SOLID)
2. 캡슐화(Encapsulation)
- 서로 관련성이 높은 데이터(속성)과 그와 관련된 기능(메소드, 함수)를 묶는 기법
- 결합도가 낮아져 소프트웨어 개발에 있어 재사용성이 높아짐
- 정보은닉을 통하여 타 객체와 메시지 교환 시 인터페이스가 단순
6. CBD (Component Based Development)
- 재사용이 가능한 컴포넌트의 개발 또는 사용 컴포넌트들을 조합하여 애플리케이션 개발 생산성과 품질을 높이고, 시스템 유지보수 비용을 최소화할 수 있는 개발 방법
- 컴포넌트 단위의 개발 및 조립을 통하여 정보 시스템의 신속한 구축, 변경, 확장의 용이성과 타 시스템과의 호환성을 달성하고자 하는 소프트웨어 공학 프로세스, 방법론 및 기술의 총체적 개념
7. GoF (Gang of Four) 디자인 패턴
- 구조: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
- 행위: Chain of Responsibility, Iterator, Command, Interpreter, Memento, Observer, State, Strategy, Visitor, Template Method, Mediator
- 생성: Factory Method, Singleton, Prototype, Builder, Abstraction Factory
- 특징
- 자주 사용하는 설계 형태를 정형화하여 유형별로 설계 템플릿을 만들어 두고 소프트웨어 개발 중 나타나는 과제를 해결하기 위한 방법 중 한 가지이므로 개발 프로세스 무시 불가능
8. 요구사항 검토기법
- 프로토타이핑: 시제품인 프로토타입을 제작하여 검증
- 테스트 설계: Test Case를 생성하고, 요구사항이 현실적으로 테스트 가능한지 검토
- CASE (Computer Aid Software Engineering) : 소프트웨어를 개발하는 시점부터 요구분석, 설계, 개발, 유지보수에 이르기까지 소프트웨어 생명주기의 전 단계 연결, 요구사항 변경의 추적과 분석을 통해 요구사항 관리
- **동료 검토, 워크스루, 인스펙션** 검토 방법 존재
- 동료 검토: 명세 작성자가 동료들에게 설명하고 동료들끼리 결함을 찾음
- 워크스루: 명세서 배포 → 짧은 검토 회의 → 결함 발견
- 인스펙션: 명세서 작성자 외 전문가가 명세서의 결함 발견하는 방법
9. 미들웨어
- DB(DataBase): 데이터베이스 벤더에서 제공하는 클라이언트와 데이터베이스를 연결하는 미들웨어, 2-Tier 아키텍처라고 함
- 클라이언트와 서버 간의 통신을 담당하는 시스템 소프트웨어
- 이기종 하드웨어 소프트웨어, 네트워크, 프로토콜, PC 환경, 운영체제 환경 등에서 시스템 간의 표준화된 연결을 도와주는 소프트웨어
- 표준화된 인터페이스를 통해 시스템 간의 데이터 교환에 있어 일관성 제공
- 운영체제와 애플리케이션 사이에서 중간 매개 역할을 하는 다목적 소프트웨어
- 유형
- TP-Monitor(Transaction Processing Moniter): 여러 프로토콜에서 동작하는 세션, 시스템, DB 사이의 **트랜젝션을 감지**하여 일관성 있게 보관 유지하는 역할
- ORD(Object Request Broker): 객체지향 미들웨어로 코바(CORBA) 표준 스펙을 구현한 미들웨어
- RPC(Remote Procedure Call): 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 **마치 로컬 프로시저처럼 호출**하는 방식
- MOM(Message Oriented Middleware): **메시지 기반**의 비동기형 메세지를 전달하는 방식의 미들웨어, 온라인 업무보다 이기종 분산 DB 의 데이터 동기를 위해 사용
- WAS(Web Application Server): 사용자의 요구에 따라 변하는 **동적 콘텐츠 처리**하기 위해 사용되는 미들웨어
10. 인터페이스 보안 기술
- IPSec(IP Security Protocol)
- 보안에 취약한 인터넷상에서 안전한 통신을 실현하는 통신 규약
- SSL(Secure Sockets Layer)
- 웹 브라우저와 웹 서버 간의 데이터를 안전하게 주고받기 위한 업게 표준 프로토콜
- FTP 등 다른 TCP/IP 애플리케이션에 적용할 수 있다.
3강_[2과목] 소프트웨어 개발
1. 선형/비선형 구조
- 선형 구조: 큐, 스택, 데크, 리스트, 연결 리스트
- 비선형 구조: 그래프, 트리, 인접 행렬
- 스택 응용 분야: 인터럽트의 처리, 수식의 계산, 서브루틴의 복귀 번지 저장, 후위 표현의 연산, 깊이 우선 탐색
2. 트리
- 전위 순회: [루트 → 왼쪽 자식 → 오른쪽 자식]
- 중위 순회: [왼쪽 자식 → 루트 → 오른쪽 자식]
- 후위 순회: [왼쪽 자식 → 오른쪽 자식 → 루트]

3. 정렬
- 선택 정렬(Selection Sort)
- n개의 레코드 중에서 최솟값(또는 최댓값)을 찾아 배열의 첫 번째 위치에 놓고, 이를 반복하여 정렬하는 방법
- 버블 정렬(Bubble Sort)
- 인접한 데이터를 비교하면서 그 크기에 따라 데이터의 위치를 바꾸어 정렬하는 방법
- 삽입 정렬(Insertion Sort)
- 정렬된 파일에 새로운 하나의 레코드를 순서에 따라 삽입시켜 정렬하는 방법
4. 검색
- 선형 검색
- 원하는 레코드를 찾을 때까지 **처음부터 끝까지 차례로 하나씩 비교**하면서 검색
- 데이터가 모인 집합(배열, 링크드 리스트(Linked-List) 등)의 처음부터 끝까지 하나씩 순서대로 비교하며 원하는 값을 찾아 내는 알고리즘
- 평균 검색 횟수:(n+1)/2
- 이분 검색 방법
- 탐색 효율이 좋고 탐색 기간이 적게 소요
- 검색할 데이터가 **정렬**되어 있어야 한다.
- 비교 횟수를 거듭할 때마다 **검색 대상이 되는 데이터 수가 절반**으로 줄어듦
5. 해싱 함수의 종류
- 제산 방법(Division Method), 중간 제곱 방법(Mid-Square Method), 중첩 방법(폴딩, Folding Method… 등등
6. 단위 테스트 (Unit Test)
- 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 데스트
- 애플리케이션을 구성하는 하나의 기능이 올바르게 동작하는 지를 독립적으로 테스트하는 것
- 구현 단곙서 각 모듈의 개발을 완료한 후, 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트
- 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 함.
- 지원 도구(xUnit)
- JUnit, NUnit, JMockit, EMMA, PHPUnit, HttpUnit,,,
7. 블랙박스 테스트 vs 화이트박스 테스트
- 블랙박스 테스트 (Black Box Test)
- 소프트웨어가 수행할 특정 기능을 알기 위해 각 기능이 완벽히 작동되는 것을 입증하는 테스트로 기능 테스트라고 함
- 대표적인 명세 기반 기법
- 종류 : 동치 분할 검사, 원인 효과 그래프, 오류 예측 겁사, 비교 검사, 경계값 분석
- 화이트박스 테스트 (White Box Test)
- 모듈의 원시 코드를 오픈시킨 상태에서 코드의 논리적 모든 경로를 테스트하는 방법
- Source Code의 모든 문장을 한 번 이상 수행함으로써 진행
- 화이트박스 테스트의 이해를 위해 논리 흐름도 (Logic-Flow-Diagram)를 이용
- 테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트에 해당
- 종류: 기초 경로 검사, 루프 테스트, 데이터 흐름 테스트, 제어 구조 검사
이상으로 인프런 정보처리기사 자격증 대비 교육(필기) 강의 1~3강 요약본 이었습니다.
다음 블로그는 4-5강 요약본 입니다!
좋은 하루 되세요!!
'Certificate Study' 카테고리의 다른 글
[정보처리기사][필기] 정보 시스템 구축 관리 요약 (인프런) (1) | 2025.01.22 |
---|---|
[정보처리기사][필기] 데이터베이스 구축 및 프로그래밍 언어 요약 (인프런) (3) | 2025.01.21 |
[정보처리기사][필기] 소프트웨어 개발 및 데이터베이스 구축 요약 (인프런) (2) | 2025.01.17 |