From d415ebbe48060c2e6d4d0dce5fc59f10339a4f0f Mon Sep 17 00:00:00 2001 From: Gim Gyeong Hwan Date: Sun, 13 Oct 2024 20:32:34 +0900 Subject: [PATCH] =?UTF-8?q?Create=202024-10-13-=EC=A0=95=EB=B3=B4=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=EA=B8=B0=EC=82=AC-=EC=8B=A4=EA=B8=B0=EC=98=88?= =?UTF-8?q?=EC=83=81=EB=AC=B8=EC=A0=9C-1.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\203\201\353\254\270\354\240\234-1.md" | 173 ++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 "_posts/2024-10-13-\354\240\225\353\263\264\354\262\230\353\246\254\352\270\260\354\202\254-\354\213\244\352\270\260\354\230\210\354\203\201\353\254\270\354\240\234-1.md" diff --git "a/_posts/2024-10-13-\354\240\225\353\263\264\354\262\230\353\246\254\352\270\260\354\202\254-\354\213\244\352\270\260\354\230\210\354\203\201\353\254\270\354\240\234-1.md" "b/_posts/2024-10-13-\354\240\225\353\263\264\354\262\230\353\246\254\352\270\260\354\202\254-\354\213\244\352\270\260\354\230\210\354\203\201\353\254\270\354\240\234-1.md" new file mode 100644 index 0000000..1c77f9e --- /dev/null +++ "b/_posts/2024-10-13-\354\240\225\353\263\264\354\262\230\353\246\254\352\270\260\354\202\254-\354\213\244\352\270\260\354\230\210\354\203\201\353\254\270\354\240\234-1.md" @@ -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)**: 대규모 프로젝트에서 사용. + +---