Skip to content

Commit

Permalink
Create 2024-10-13-정보처리기사-실기예상문제-1.md
Browse files Browse the repository at this point in the history
  • Loading branch information
gghwan authored Oct 13, 2024
1 parent bd3faeb commit d415ebb
Showing 1 changed file with 173 additions and 0 deletions.
173 changes: 173 additions & 0 deletions _posts/2024-10-13-정보처리기사-실기예상문제-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
### 1. **소프트웨어 개발 방법론**

**문제 1**
소프트웨어 생명주기 모형(SDLC) 중 폭포수 모형(Waterfall Model)의 주요 단계를 순서대로 나열하고, 각 단계의 특징을 설명하시오.

**해설**
폭포수 모형은 각 단계가 순차적으로 진행되는 소프트웨어 개발 방법론입니다. 각 단계는 다음과 같습니다:
1. **요구사항 분석**: 사용자 요구를 분석하고 명세서를 작성하는 단계.
2. **설계**: 요구사항을 기반으로 시스템과 소프트웨어를 설계하는 단계.
3. **구현**: 설계된 시스템을 코드로 구현하는 단계.
4. **테스트**: 구현된 시스템을 테스트하여 결함을 발견하고 수정하는 단계.
5. **유지보수**: 시스템 운영 중에 발생하는 문제를 해결하는 단계.

---

**문제 2**
애자일(Agile) 개발 방법론의 특징을 설명하고, 폭포수 모형과의 차이점을 설명하시오.

**해설**
애자일 방법론은 유연성과 신속성을 중시하는 개발 방법론입니다.
- **특징**: 짧은 개발 주기(스프린트)를 반복하며, 요구사항 변화에 유연하게 대응. 고객과의 협력을 중시하며, 자주 반복되는 테스트와 피드백을 반영.
- **폭포수 모형과의 차이점**: 폭포수 모형은 순차적인 단계적 진행을 하지만, 애자일은 반복적인 주기와 변경에 대응할 수 있는 유연한 방식입니다.

---

**문제 3**
XP(익스트림 프로그래밍)에서 **페어 프로그래밍(Pair Programming)****테스트 주도 개발(TDD)**을 설명하시오.

**해설**
- **페어 프로그래밍**: 두 명의 개발자가 하나의 컴퓨터를 공유하여 함께 코딩하는 방식. 한 명은 코딩하고, 다른 한 명은 코드를 검토하여 오류를 줄이고 생산성을 높입니다.
- **테스트 주도 개발(TDD)**: 테스트 케이스를 먼저 작성한 후, 이를 통과하기 위한 코드를 개발하는 방식입니다. 이는 결함을 줄이고, 코드 품질을 높이는 데 도움을 줍니다.

---

### 2. **데이터베이스와 SQL**

**문제 4**
데이터베이스에서 **정규화(Normalization)**의 목적을 설명하고, **제1정규형(1NF)**, **제2정규형(2NF)**, **제3정규형(3NF)**을 설명하시오.

**해설**
**정규화**는 중복 데이터를 제거하고 데이터 무결성을 유지하는 데 목적이 있습니다.
- **제1정규형(1NF)**: 모든 속성의 값이 원자값(Atomic Value)으로 구성된 릴레이션.
- **제2정규형(2NF)**: 제1정규형을 만족하고, 부분 함수 종속을 제거한 릴레이션.
- **제3정규형(3NF)**: 제2정규형을 만족하고, 이행적 함수 종속을 제거한 릴레이션.

---

**문제 5**
다음 SQL 쿼리의 결과는 무엇인가?
```sql
SELECT employee_name, department
FROM employees
WHERE salary > 5000
ORDER BY department ASC;
```

**해설**
이 쿼리는 `employees` 테이블에서 **급여(salary)**가 5000보다 큰 직원들의 **이름(employee_name)****부서(department)**를 조회한 후, 부서명 기준으로 오름차순 정렬하여 출력합니다.

---

**문제 6**
SQL의 트랜잭션(transaction)에서 **ACID** 속성을 설명하시오.

**해설**
ACID 속성은 트랜잭션의 신뢰성과 일관성을 보장하는 데 필요한 네 가지 속성입니다.
- **Atomicity(원자성)**: 트랜잭션이 모두 반영되거나, 전혀 반영되지 않아야 한다는 성질.
- **Consistency(일관성)**: 트랜잭션 전후 데이터의 일관성이 유지되어야 한다는 성질.
- **Isolation(고립성)**: 동시에 실행되는 트랜잭션이 서로 간섭하지 않도록 보장해야 한다는 성질.
- **Durability(지속성)**: 트랜잭션이 완료된 후 그 결과는 영구적으로 저장되어야 한다는 성질.

---

### 3. **시스템 분석 및 설계**

**문제 7**
UML 다이어그램에서 **클래스 다이어그램****시퀀스 다이어그램**의 차이점을 설명하시오.

**해설**
- **클래스 다이어그램**: 시스템의 클래스와 클래스 간의 관계(상속, 연관, 의존성 등)를 나타낸 구조적 다이어그램.
- **시퀀스 다이어그램**: 객체 간의 상호작용을 시간 순서에 따라 표현하는 다이어그램. 주로 메시지 교환 및 객체의 호출 순서를 나타냅니다.

---

**문제 8**
애플리케이션의 **MVC 패턴**을 설명하고, 각 구성 요소의 역할을 기술하시오.

**해설**
MVC(Model-View-Controller) 패턴은 애플리케이션의 구조를 세 가지 주요 요소로 나누어 효율적으로 관리하는 방법입니다.
- **Model(모델)**: 데이터와 비즈니스 로직을 처리하는 부분. 데이터베이스와 상호작용하고 애플리케이션의 상태를 유지합니다.
- **View(뷰)**: 사용자 인터페이스를 담당하는 부분으로, 데이터를 시각적으로 표시합니다.
- **Controller(컨트롤러)**: 사용자 요청을 처리하고, 그에 따라 모델과 뷰를 연결하는 역할을 합니다.

---

**문제 9**
소프트웨어 아키텍처에서 **마이크로서비스(Microservices)**의 개념을 설명하고, 모놀리식(Monolithic) 아키텍처와의 차이점을 기술하시오.

**해설**
- **마이크로서비스**: 각각의 독립적인 서비스들이 모여 하나의 시스템을 구성하는 아키텍처입니다. 각 서비스는 독립적으로 배포되고, 관리될 수 있습니다.
- **모놀리식 아키텍처**와의 차이점: 모놀리식은 모든 기능이 하나의 코드베이스에서 관리되지만, 마이크로서비스는 서비스들이 분리되어 독립적으로 운영됩니다. 마이크로서비스는 유지보수성과 확장성에서 유리합니다.

---

### 4. **네트워크와 보안**

**문제 10**
다음 중 **DDoS 공격**의 특징을 설명하시오.

**해설**
**DDoS(Distributed Denial of Service)** 공격은 여러 곳에 분산된 공격 지점에서 동시에 대량의 트래픽을 특정 서버에 전송하여 서비스가 정상적으로 작동하지 못하게 만드는 공격입니다. 이로 인해 네트워크 자원이 과부하 상태에 이르러 서비스 중단이 발생합니다.

---

**문제 11**
다음 중 **SSL**의 개념과 역할을 설명하시오.

**해설**
**SSL(Secure Sockets Layer)**은 인터넷 상에서 데이터를 안전하게 주고받기 위한 암호화 프로토콜입니다. SSL을 통해 웹사이트와 브라우저 간의 통신을 암호화하여 기밀성과 무결성을 보장할 수 있습니다.

---

**문제 12**
네트워크에서 **IPv4****IPv6**의 차이점을 설명하시오.

**해설**
- **IPv4**: 32비트 주소 체계를 사용하는 인터넷 프로토콜로, 약 43억 개의 주소를 제공. 주소 고갈 문제가 있음.
- **IPv6**: 128비트 주소 체계를 사용하는 차세대 인터넷 프로토콜로, 거의 무한대에 가까운 주소를 제공하며, IPv4의 주소 고갈 문제를 해결.

---

### 5. **소프트웨어 테스트**

**문제 13**
소프트웨어 테스트에서 **화이트박스 테스트****블랙박스 테스트**의 차이를 설명하시오.

**해설**
- **화이트박스 테스트**: 소스 코드 내부 구조와 논리 흐름을 분석하여 테스트하는 방법. 내부 로직에 따라 테스트 케이스를 작성합니다.
- **블랙박스 테스트**: 내부 코드 구조를 알지 않고, 외부 사용자의 요구사항에 맞춰 시스템의 동작을 테스트하는 방법. 주로 입력과 출력만을 기준으로 테스트 케이스를 작성합니다.

---

**문제 14**
소프트웨어 테스트에서 **경계값 분석(Boundary Value Analysis)**의 개념

을 설명하고, 테스트 시나리오를 제시하시오.

**해설**
경계값 분석은 입력 값의 경계(최대값, 최소값, 중간값)에서 오류가 발생할 확률이 높다는 가정 하에 테스트하는 기법입니다. 예를 들어, 허용 값의 범위가 1부터 100까지라면, 1, 100, 0, 101과 같은 경계값을 중심으로 테스트합니다.

---

### 6. **프로젝트 관리**

**문제 15**
프로젝트 관리에서 **PERT****CPM** 기법의 차이점을 설명하시오.

**해설**
- **PERT(Program Evaluation and Review Technique)**: 불확실한 작업 시간을 처리하기 위해 확률적 기법을 사용하여 일정 계획을 수립.
- **CPM(Critical Path Method)**: 작업의 시작과 완료 시간을 확정적으로 관리하며, 중요한 경로를 식별하여 프로젝트 일정 관리를 하는 기법입니다.

---

**문제 16**
소프트웨어 비용 산정 기법 중 **COCOMO 모형**을 설명하시오.

**해설**
**COCOMO(COnstructive COst MOdel)**는 소프트웨어의 규모에 따라 개발 비용을 산정하는 기법입니다. 프로젝트의 규모를 세 가지로 분류하여 비용을 추정합니다.
1. **기본형(Basic)**: 소규모 프로젝트에서 사용.
2. **중간형(Intermediate)**: 중간 규모의 프로젝트에서 사용.
3. **상세형(Detailed)**: 대규모 프로젝트에서 사용.

---

0 comments on commit d415ebb

Please sign in to comment.