<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발새발</title>
    <link>https://his0si.tistory.com/</link>
    <description>학부생 프로그래머의 개발일지</description>
    <language>ko</language>
    <pubDate>Sat, 11 Apr 2026 11:03:30 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>비숑주인</managingEditor>
    <image>
      <title>개발새발</title>
      <url>https://tistory1.daumcdn.net/tistory/5946835/attach/eff7c7df9dd34f3082db142824582ee3</url>
      <link>https://his0si.tistory.com</link>
    </image>
    <item>
      <title>REST API</title>
      <link>https://his0si.tistory.com/304</link>
      <description>&lt;h2 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size26&quot;&gt;1. REST와 REST API의 개념&lt;/h2&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;REST(REpresentational State Transfer) 란 &quot;분산 시스템&quot;을 위한 HTTP 기반 소프트웨어 아키텍처를 의미한다. 쉽게 말해 웹 애플리케이션, 모바일 앱, 서로 다른 언어로 된 서버들이 HTTP라는 공통된 규격 안에서 자유롭게 통신할 수 있도록 도와주는 통역사 역할을 하는 API라고 이해하면 된다. 여기서 분산 시스템이란 독립된 컴퓨터들이 네트워크를 통해 연결되어 하나의 시스템처럼 움직이는 것을 말하는데, 이를 위해 표준화된 통신 방식이 필수적이다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;REST는 크게 &lt;b data-index-in-node=&quot;9&quot; data-path-to-node=&quot;4&quot;&gt;자원, 행위, 메시지&lt;/b&gt;라는 3가지 요소로 구성된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,0,0&quot;&gt;자원(Resource):&lt;/b&gt; 우리가 접근하거나 조작할 대상이다. 예를 들어 &quot;상품&quot;이 자원이 된다. 보통 URI를 통해 고유한 식별자를 부여한다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0&quot;&gt;메서드(Method):&lt;/b&gt; 자원에 대한 행위를 정의한다. HTTP Method인 GET(조회), POST(생성), PUT(수정), DELETE(삭제)를 사용한다. 일반적인 웹에서는 GET과 POST를 주로 쓰지만, REST 환경에서는 자원의 상태를 명확히 관리하기 위해 PUT과 DELETE도 적극적으로 활용한다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,2,0&quot;&gt;메시지(Message):&lt;/b&gt; 행위에 담기는 구체적인 내용이다. 예를 들어 &quot;상품명이 진라면인 상품을 생성한다&quot;는 요청에서 &quot;상품명: 진라면, 가격: 1000원&quot;과 같은 데이터가 메시지에 해당한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size26&quot;&gt;2. REST의 주요 특징과 RESTful의 의미&lt;/h2&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;REST는 HTTP 프로토콜을 기반으로 하기 때문에 웹 표준을 최대한 활용한다는 장점이 있다. 가장 큰 특징 중 하나는 Stateless(무상태성)이다. 서버는 클라이언트의 이전 상태를 따로 저장하지 않고 오직 들어온 요청에만 집중한다. 또한 모든 자원에 고유한 &lt;b data-index-in-node=&quot;151&quot; data-path-to-node=&quot;8&quot;&gt;URI&lt;/b&gt;를 부여하여 관리하는데, 이는 우리가 흔히 아는 URL보다 더 넓은 개념의 식별자이다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;이러한 REST 원칙을 잘 지켜서 설계된 시스템을 두고 우리는 &quot;RESTful 하다&quot; 라고 표현한다. 즉, REST API를 제공하는 웹 서비스 시스템 자체를 지칭하는 용어이다. 실무에서는 다양한 디바이스(모바일, 태블릿 등)나 서로 다른 기술 언어로 구축된 이기종 시스템 간에 정보를 주고받기 위해 필수적으로 사용된다. 애플리케이션의 복잡도가 커질수록 서비스별로 독립적인 구축과 운영이 필요해지는데, REST는 이러한 서비스 간 분리와 통합에 대한 표준화된 방법을 제공해 준다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;3. Node.js 환경에서의 REST API 실전 예제&lt;/h2&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;실제 코드로 REST API 서버를 어떻게 구성하는지 살펴보자. 자바의 SpringBoot와 개념은 같지만, Node.js의 Express 프레임워크를 사용하면 훨씬 간결하게 구현할 수 있다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;3-1. 서버 구성 및 라우팅 (Express 기반)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;서버에서 각 HTTP 메서드에 맞춰 자원을 처리하는 기본적인 구조이다. @RestController와 유사하게 요청을 받아 JSON으로 응답하는 방식이다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;const express = require('express');
const app = express();
app.use(express.json()); // JSON 데이터 파싱을 위한 설정

// 가상의 데이터베이스 (상품 목록)
let products = [
  { id: &quot;1&quot;, name: &quot;진라면&quot;, maker: &quot;오뚜기&quot;, price: 1000 }
];

// GET : 리스트 조회 (getAllProductList)
app.get('/products', (req, res) =&amp;gt; {
  console.log(&quot;Request Method : GET&quot;);
  res.json(products);
});

// GET : 특정 아이디로 조회 (findProductById)
app.get('/products/:id', (req, res) =&amp;gt; {
  const id = req.params.id;
  const product = products.find(p =&amp;gt; p.id === id);
  if (!product) {
    return res.status(404).json({ message: &quot;상품이 존재하지 않습니다&quot; });
  }
  res.status(200).json(product);
});

// POST : 새로운 상품 생성 (registerProduct)
app.post('/products', (req, res) =&amp;gt; {
  const { name, maker, price } = req.body;
  const newProduct = { id: String(products.length + 1), name, maker, price };
  products.push(newProduct);
  res.status(201).json({ message: `${newProduct.name} 상품 등록 완료`, id: newProduct.id });
});

// PUT : 상품 정보 수정 (updateProduct)
app.put('/products/:id', (req, res) =&amp;gt; {
  const id = req.params.id;
  const index = products.findIndex(p =&amp;gt; p.id === id);
  if (index === -1) {
    return res.status(404).json({ message: &quot;수정할 상품이 없습니다&quot; });
  }
  products[index] = { ...products[index], ...req.body };
  res.json({ message: `${id}번 상품 정보 수정 완료` });
});

// DELETE : 상품 삭제 (deleteProduct)
app.delete('/products/:id', (req, res) =&amp;gt; {
  const id = req.params.id;
  const initialLength = products.length;
  products = products.filter(p =&amp;gt; p.id !== id);
  if (products.length === initialLength) {
    return res.status(404).json({ message: &quot;삭제할 상품이 없습니다&quot; });
  }
  res.json({ message: `${id}번 상품 정보 삭제 완료` });
});

app.listen(3000, () =&amp;gt; console.log('REST API 서버가 3000번 포트에서 실행 중이다.'));
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size23&quot;&gt;3-2. 서버 간 통신 (RestTemplate과 유사한 방식)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;Node.js에서는 Spring의 RestTemplate 대신 axios나 fetch 라이브러리를 주로 사용한다. 다른 서버(예: 포트 7777이나 8888 서버)와 연동할 때 아래와 같은 패턴으로 통신한다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;const axios = require('axios');

// 서버 간 연동 예제 (External API Call)
async function fetchOtherServerData(productId) {
  try {
    const response = await axios.get(`http://localhost:8888/items/${productId}`);
    console.log(&quot;서버 응답 데이터:&quot;, response.data);
  } catch (error) {
    console.error(&quot;통신 에러 발생:&quot;, error.response.status);
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size26&quot;&gt;4. 마무리 및 정리&lt;/h2&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;REST API는 현대 웹 개발에서 떼려야 뗄 수 없는 핵심 기술이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;22&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,0,0&quot;&gt;URL&lt;/b&gt;은 자원의 위치를 나타내고,&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,1,0&quot;&gt;HTTP 메서드&lt;/b&gt;는 그 자원을 어떻게 요리할지 결정하며,&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,2,0&quot;&gt;JSON&lt;/b&gt;은 그 요리의 실제 내용물이 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;SpringBoot든 Node.js든 프레임워크는 도구일 뿐, 중요한 건 REST의 원칙을 이해하고 이를 적절하게 적용하는 설계 능력이다. 처음에는 익숙하지 않겠지만, 직접 API 서버를 띄워보고 Postman이나 curl로 요청을 날려보면서 응답 결과를 확인하다 보면 금방 감이 올 것이다.&lt;/p&gt;</description>
      <category>WEB-STUDY</category>
      <author>비숑주인</author>
      <guid isPermaLink="true">https://his0si.tistory.com/304</guid>
      <comments>https://his0si.tistory.com/304#entry304comment</comments>
      <pubDate>Thu, 19 Mar 2026 14:18:47 +0900</pubDate>
    </item>
    <item>
      <title>EKS 내부 DB 접속하기: kubectl port-forward로 PostgreSQL 로컬 연결</title>
      <link>https://his0si.tistory.com/302</link>
      <description>&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;보통 운영 환경(Production)의 DB는 해킹 위험 때문에 외부 인터넷에서 접속할 수 있는 공인 IP(Public IP)를 아예 할당하지 않는다. 내가 회사 데이터베이스에 일반적인 방식으로 DBeaver에서 바로 접속이 거부당했던 것도 이 이유 때문이었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;포트 포워딩은&amp;nbsp;내가 이미 AWS 권한(aws configure)을 가지고 있으니, 쿠버네티스라는 '관리자 통로'를 타고 들어가서 DB를 로컬로 끌어오는 것이다. 별도의 복잡한 방화벽 설정 없이도 안전하게 접속할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 EKS(Amazon Elastic Kubernetes Service) 환경에 있는 PostgreSQL 데이터베이스를 로컬 PC에서 접속할 수 있도록 연결하는 방법이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5&quot;&gt;A. AWS CLI 설치 여부 확인&lt;/b&gt; 먼저 아래 명령어를 입력해서 설치가 되어 있는지 확인&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;aws --version
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;command not found가 뜬다면 아래 설치 과정을 진행해야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8&quot;&gt;B. AWS CLI 설치 (Mac 기준)&lt;/b&gt; 터미널에 다음 명령어를 복사해서 붙여넣기 (또는 &lt;a href=&quot;https://aws.amazon.com/ko/cli/&quot;&gt;AWS 공식 홈페이지&lt;/a&gt;에서 GUI 설치 파일을 받기).&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;curl &quot;https://awscli.amazonaws.com/AWSCLIV2.pkg&quot; -o &quot;AWSCLIV2.pkg&quot;
sudo installer -pkg AWSCLIV2.pkg -target /&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;설치가 완료되었다면 터미널을 완전히 껐다가 다시 키고, 아래 단계 진행하기&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;aws configure (액세스 키와 비밀번호 입력 단계)&lt;/li&gt;
&lt;li&gt;aws eks update-kubeconfig ... (클러스터 연결 단계)&lt;/li&gt;
&lt;li&gt;kubectl port-forward ... (포트 포워딩 단계)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;이 때 kubectl 명령어도 설치되어 있어야 한다! 만약 aws configure는 성공했는데 kubectl에서 다시 command not found가 뜬다면, 아래 명령어로 설치하자.&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;brew install kubernetes-cli&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;aws configure는 내 컴퓨터에 &quot;나는 이 계정의 주인이니 AWS 리소스에 접근하게 해줘&quot; 라고 신분증을 등록하는 과정이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;이 작업을 하려면 먼저 &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;1&quot;&gt;IAM User의 Access Key&lt;/b&gt;가 있어야 한다. (회사 관리자에게 받았거나, AWS 콘솔에서 직접 생성해야 함.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size23&quot;&gt;1. aws configure 입력 및 정보 기입&lt;/h3&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;터미널에 aws configure를 입력하면 총 4가지를 물어본다. 하나씩 입력하고 엔터를 치면 된다.&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;$ aws configure
AWS Access Key ID [None]: (여기에 Access Key ID 입력)
AWS Secret Access Key [None]: (여기에 Secret Access Key 입력)
Default region name [None]: ap-northeast-2
Default output format [None]: json
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;Access Key ID&lt;/b&gt;: 보통 AKIA...로 시작하는 긴 문자열&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;Secret Access Key&lt;/b&gt;: 아주 긴 비밀번호 같은 문자열 (입력 시 화면에 안 보일 수 있으니 복사 붙여넣기 후 엔터 치기.)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0&quot;&gt;Default region name&lt;/b&gt;: 서울 리전인 ap-northeast-2 입력&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,0&quot;&gt;Default output format&lt;/b&gt;: 보통 json&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2단계:&amp;nbsp;EKS&amp;nbsp;클러스터&amp;nbsp;연결&amp;nbsp;&lt;/h3&gt;
&lt;pre id=&quot;code_1773724558662&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;aws eks update-kubeconfig --region ap-northeast-2 --name [클러스터_이름]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성공하면 Added new context ... 메시지가 나온다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbqzXV/dJMcaakgQe9/HWKBFg9yaNbvwlVE17PTG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbqzXV/dJMcaakgQe9/HWKBFg9yaNbvwlVE17PTG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbqzXV/dJMcaakgQe9/HWKBFg9yaNbvwlVE17PTG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbqzXV%2FdJMcaakgQe9%2FHWKBFg9yaNbvwlVE17PTG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1446&quot; height=&quot;152&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3단계: PostgreSQL 서비스 확인&amp;nbsp;&lt;/h4&gt;
&lt;pre id=&quot;code_1773724800721&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubectl get svc -n [네임스페이스]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리 데이터베이스인 postgres 서비스가 목록에 보이는 걸 확인했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUgSWK/dJMcadBfcGC/4dHPAU5ukhCiU3YicKuhiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUgSWK/dJMcadBfcGC/4dHPAU5ukhCiU3YicKuhiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUgSWK/dJMcadBfcGC/4dHPAU5ukhCiU3YicKuhiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUgSWK%2FdJMcadBfcGC%2F4dHPAU5ukhCiU3YicKuhiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1058&quot; height=&quot;214&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size23&quot;&gt;4단계: Port Forward&lt;/h3&gt;
&lt;pre id=&quot;code_1773724772227&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubectl port-forward svc/postgres 5432:5432 -n oracle&lt;/code&gt;&lt;/pre&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;원격 서버의 포트를 내 로컬 포트로 끌어오는 단계이다. Forwarding from 127.0.0.1:5432 -&amp;gt; 5432 메시지가 나오면 성공이다. 디비버를 사용하는 동안 이 창은 계속 켜두어야 연결이 유지된다.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;왼쪽 5432:&lt;/b&gt; 내 컴퓨터(Local)에서 사용할 포트&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0&quot;&gt;오른쪽 5432:&lt;/b&gt; EKS 내부 DB 서버의 포트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 터미널은 닫으면 연결이 끊긴다!!!! 절대 닫지 말자!!!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yAT5O/dJMcahjqiyE/FiPzbBg2PeIEKe0MtWwcQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yAT5O/dJMcahjqiyE/FiPzbBg2PeIEKe0MtWwcQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yAT5O/dJMcahjqiyE/FiPzbBg2PeIEKe0MtWwcQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyAT5O%2FdJMcahjqiyE%2FFiPzbBg2PeIEKe0MtWwcQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1306&quot; height=&quot;130&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;다시 연결하고 싶을 때는 전부 다 반복할 필요는 없다. aws configure와 eks update-kubeconfig는 한 번만 하면 설정이 저장되기 때문에 터미널을 닫았다가 다시 연결할 때는 맨 마지막 명령어만 다시 실행하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1773724860256&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kubectl port-forward svc/postgres 5432:5432 -n oracle&lt;/code&gt;&lt;/pre&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;입력이 끝났다면 아래 명령어를 쳐서 내 정보가 잘 나오는지 확인하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;dsconfig&quot;&gt;&lt;code&gt;aws sts get-caller-identity
&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;212&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JELoI/dJMcafslsjq/kjxWUPyOaVvibicgMFyYx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JELoI/dJMcafslsjq/kjxWUPyOaVvibicgMFyYx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JELoI/dJMcafslsjq/kjxWUPyOaVvibicgMFyYx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJELoI%2FdJMcafslsjq%2FkjxWUPyOaVvibicgMFyYx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;212&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;212&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 내 계정 번호(Account)가 포함된 결과가 나오면 성공이다!! DBeaver 설정 시 Host는 localhost 또는 127.0.0.1로, Port는 5432로 설정하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size23&quot;&gt;5단계: DBeaver에서 연결하기&lt;/h3&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;포트 포워딩 터미널을 띄워둔 상태에서 DBeaver를 켜고 아래와 같이 설정하면 된다&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;5&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,0,0&quot;&gt;Host:&lt;/b&gt; localhost 또는 127.0.0.1 (중요: RDS 주소가 아닌 로컬 주소를 넣어야 한다!)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0&quot;&gt;Port:&lt;/b&gt; 5432 (포트 포워딩 명령어에서 앞에 적은 숫자와 일치해야 함)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,2,0&quot;&gt;Database:&lt;/b&gt; 접속하려는 DB 이름 (예: postgres)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,3,0&quot;&gt;Username / Password:&lt;/b&gt; DB 계정 정보 입력&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1396&quot; data-origin-height=&quot;1114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LxjRm/dJMcabQ0YaS/MRdDYOWlxpSLKY4h4toQRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LxjRm/dJMcabQ0YaS/MRdDYOWlxpSLKY4h4toQRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LxjRm/dJMcabQ0YaS/MRdDYOWlxpSLKY4h4toQRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLxjRm%2FdJMcabQ0YaS%2FMRdDYOWlxpSLKY4h4toQRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1396&quot; height=&quot;1114&quot; data-origin-width=&quot;1396&quot; data-origin-height=&quot;1114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>기타</category>
      <author>비숑주인</author>
      <guid isPermaLink="true">https://his0si.tistory.com/302</guid>
      <comments>https://his0si.tistory.com/302#entry302comment</comments>
      <pubDate>Tue, 17 Mar 2026 10:00:48 +0900</pubDate>
    </item>
    <item>
      <title>conda 내보내기</title>
      <link>https://his0si.tistory.com/297</link>
      <description>&lt;div id=&quot;model-response-message-contentr_eaae2edb56893d51&quot;&gt;
&lt;h3 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size23&quot;&gt;1. .yml 파일로 환경 복원하기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;conda env create -f environment.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;-f&lt;/b&gt;: 파일(file)을 지정한다는 의미&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이 명령어는 파일 안에 적힌 name 항목을 읽어 자동으로 환경 이름을 설정하고 필요한 패키지들을 설치한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;2. 다른 이름으로 환경 생성하기&lt;/h3&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;만약 파일에 적힌 이름 말고 다른 이름으로 환경을 만들고 싶다면 -n 옵션을 추가하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;conda env create -f environment.yml -n 새로운환경이름
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;3. 기존 환경 업데이트하기&lt;/h3&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;이미 만들어진 환경이 있는데, .yml 파일의 최신 내용으로 패키지를 동기화하고 싶을 때 사용한다&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;conda env update -f environment.yml --prune
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;--prune&lt;/b&gt;: 파일에 없는 패키지는 삭제하여 완벽하게 일치시키는 옵션&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>기타</category>
      <author>비숑주인</author>
      <guid isPermaLink="true">https://his0si.tistory.com/297</guid>
      <comments>https://his0si.tistory.com/297#entry297comment</comments>
      <pubDate>Thu, 5 Feb 2026 20:08:53 +0900</pubDate>
    </item>
    <item>
      <title>정보처리기사 4과목 기출 문제 오답 노트</title>
      <link>https://his0si.tistory.com/119</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V7ry2/btsLQECKGfC/k9XYcFkZRg8iBrrNIWarO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V7ry2/btsLQECKGfC/k9XYcFkZRg8iBrrNIWarO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V7ry2/btsLQECKGfC/k9XYcFkZRg8iBrrNIWarO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV7ry2%2FbtsLQECKGfC%2Fk9XYcFkZRg8iBrrNIWarO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;377&quot; height=&quot;287&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1737008385635&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
int main(int argc, char *argv[]) {
    int a = 5, b = 3, c = 12; // 초기화
    int t1, t2, t3;

    t1 = a &amp;amp;&amp;amp; b; // 논리 AND 연산자, 두 피연산자가 모두 참(0이 아닌 값) 일 때 참(1)을 반환
    // t1=1
    t2 = a || b; // 논리 OR 연산자, 두 피연산자 중 하나라도 참이면 참(1) 을 반환
    // t2=1
    t3 = !c; // 논리 NOT 연산자, 피연산자가 참이면 거짓(0), 피연산자가 거짓이면 참(1)을 반환
    // t3=0

    printf(&quot;%d&quot;, t1 + t2 + t3); // 실행 결과 2
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정답: 2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZ5KNs/btsLOZuPVQU/nffROcM7SU6khytnNYePS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZ5KNs/btsLOZuPVQU/nffROcM7SU6khytnNYePS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZ5KNs/btsLOZuPVQU/nffROcM7SU6khytnNYePS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZ5KNs%2FbtsLOZuPVQU%2FnffROcM7SU6khytnNYePS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;388&quot; height=&quot;667&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;667&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1737008790545&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;

// 구조체 정의: 구조체 st는 정수형 변수 a와 정수형 배열 c[10]을 포함
struct st {
    int a;       // 정수 변수 a
    int c[10];   // 크기가 10인 정수형 배열 c
};

int main(int argc, char *argv[]) {
    int i = 0;
    struct st ob1;            // 구조체 st 타입의 변수 ob1 선언
    struct st ob2;            // 구조체 st 타입의 변수 ob2 선언
    ob1.a = 0;                // ob1의 a를 0으로 초기화
    ob2.a = 0;                // ob2의 a를 0으로 초기화

    for (i = 0; i &amp;lt; 10; i++) {
        ob1.c[i] = i;             // ob1.c[i]에 i 값을 저장
        ob2.c[i] = ob1.c[i] + i; // ob2.c[i]에 ob1.c[i] + i 값을 저장
    }

    // 반복문: 짝수 인덱스의 배열 값으로 ob1.a와 ob2.a를 누적합
    for (i = 0; i &amp;lt; 10; i += 2) {
        ob1.a = ob1.a + ob1.c[i]; // ob1.a에 ob1.c[i] 값을 누적
        ob2.a = ob2.a + ob2.c[i]; // ob2.a에 ob2.c[i] 값을 누적
    }

    printf(&quot;%d&quot;, ob1.a + ob2.a); // 20 + 40
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;ob1.c[i]는 i값을 그대로 저장하고, ob2.c[i]는 &lt;br /&gt;ob1.c[i] + i를 저장&lt;br /&gt;&lt;br /&gt;//&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;반복&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;0) &lt;br /&gt;ob1.a&amp;nbsp;=&amp;nbsp;ob1.a&amp;nbsp;+&amp;nbsp;ob1.c[0]&amp;nbsp;=&amp;nbsp;0&amp;nbsp;+&amp;nbsp;0&amp;nbsp;=&amp;nbsp;0; &lt;br /&gt;ob2.a&amp;nbsp;=&amp;nbsp;ob2.a&amp;nbsp;+&amp;nbsp;ob2.c[0]&amp;nbsp;=&amp;nbsp;0&amp;nbsp;+&amp;nbsp;0&amp;nbsp;=&amp;nbsp;0; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;반복&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;2) &lt;br /&gt;ob1.a&amp;nbsp;=&amp;nbsp;ob1.a&amp;nbsp;+&amp;nbsp;ob1.c[2]&amp;nbsp;=&amp;nbsp;0&amp;nbsp;+&amp;nbsp;2&amp;nbsp;=&amp;nbsp;2; &lt;br /&gt;ob2.a&amp;nbsp;=&amp;nbsp;ob2.a&amp;nbsp;+&amp;nbsp;ob2.c[2]&amp;nbsp;=&amp;nbsp;0&amp;nbsp;+&amp;nbsp;4&amp;nbsp;=&amp;nbsp;4; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;세&amp;nbsp;번째&amp;nbsp;반복&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;4) &lt;br /&gt;ob1.a&amp;nbsp;=&amp;nbsp;ob1.a&amp;nbsp;+&amp;nbsp;ob1.c[4]&amp;nbsp;=&amp;nbsp;2&amp;nbsp;+&amp;nbsp;4&amp;nbsp;=&amp;nbsp;6; &lt;br /&gt;ob2.a&amp;nbsp;=&amp;nbsp;ob2.a&amp;nbsp;+&amp;nbsp;ob2.c[4]&amp;nbsp;=&amp;nbsp;4&amp;nbsp;+&amp;nbsp;8&amp;nbsp;=&amp;nbsp;12; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;네&amp;nbsp;번째&amp;nbsp;반복&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;6) &lt;br /&gt;ob1.a&amp;nbsp;=&amp;nbsp;ob1.a&amp;nbsp;+&amp;nbsp;ob1.c[6]&amp;nbsp;=&amp;nbsp;6&amp;nbsp;+&amp;nbsp;6&amp;nbsp;=&amp;nbsp;12; &lt;br /&gt;ob2.a&amp;nbsp;=&amp;nbsp;ob2.a&amp;nbsp;+&amp;nbsp;ob2.c[6]&amp;nbsp;=&amp;nbsp;12&amp;nbsp;+&amp;nbsp;12&amp;nbsp;=&amp;nbsp;24; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;다섯&amp;nbsp;번째&amp;nbsp;반복&amp;nbsp;(i&amp;nbsp;=&amp;nbsp;8) &lt;br /&gt;ob1.a&amp;nbsp;=&amp;nbsp;ob1.a&amp;nbsp;+&amp;nbsp;ob1.c[8]&amp;nbsp;=&amp;nbsp;12&amp;nbsp;+&amp;nbsp;8&amp;nbsp;=&amp;nbsp;20; &lt;br /&gt;ob2.a&amp;nbsp;=&amp;nbsp;ob2.a&amp;nbsp;+&amp;nbsp;ob2.c[8]&amp;nbsp;=&amp;nbsp;24&amp;nbsp;+&amp;nbsp;16&amp;nbsp;=&amp;nbsp;40;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1737008978746&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;int main(int argc, char *argv[]) { // int argc - main() 함수에 전달 되는 데이터의 갯수
//char *argv[] - main() 함수에 전달 되는 실제적인 데이터로 char형 포인터 배열로 구성 됨
	// 중략
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과: 60&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eOg47E/btsLPtoPUnA/WqHgKo5SpbRskoQ8beI3Gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eOg47E/btsLPtoPUnA/WqHgKo5SpbRskoQ8beI3Gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eOg47E/btsLPtoPUnA/WqHgKo5SpbRskoQ8beI3Gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeOg47E%2FbtsLPtoPUnA%2FWqHgKo5SpbRskoQ8beI3Gk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;429&quot; height=&quot;165&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라우팅 프로토콜을 IGP(Interior Gateway Protocol)와 EGP(Exterior Gateway Protocol)로 분류했을 때, &lt;b&gt;RIP는 IGP에 속한다&lt;/b&gt;. EGP는 BGP와 같은 프로토콜을 의미하는데, RIP는 네트워크 내에서의 라우팅을 위한 내부 게이트웨이 프로토콜(IGP)이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;386&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjnTtj/btsLP34cWH9/K6CSr5r07fv5ubRvfk0prk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjnTtj/btsLP34cWH9/K6CSr5r07fv5ubRvfk0prk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjnTtj/btsLP34cWH9/K6CSr5r07fv5ubRvfk0prk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjnTtj%2FbtsLP34cWH9%2FK6CSr5r07fv5ubRvfk0prk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;386&quot; height=&quot;175&quot; data-origin-width=&quot;386&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정답: HRN 스케줄링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQvVaF/btsLP510oxK/vixBA7mKsqmA6xKIMncMkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQvVaF/btsLP510oxK/vixBA7mKsqmA6xKIMncMkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQvVaF/btsLP510oxK/vixBA7mKsqmA6xKIMncMkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQvVaF%2FbtsLP510oxK%2FvixBA7mKsqmA6xKIMncMkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;417&quot; height=&quot;132&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;132&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UNIX는 멀티태스킹과 멀티유저를 모두 지원한다. 즉, 여러 사용자가 동시에 시스템을 사용할 수 있으며, 동시에 여러 작업을 처리할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chidAe/btsLPywO6Ka/J01RwINPXpFG9BAJidc9Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chidAe/btsLPywO6Ka/J01RwINPXpFG9BAJidc9Ak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chidAe/btsLPywO6Ka/J01RwINPXpFG9BAJidc9Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchidAe%2FbtsLPywO6Ka%2FJ01RwINPXpFG9BAJidc9Ak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;398&quot; height=&quot;130&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UDP는 주소 지정과 경로 설정을 하지 않으며, 오직 데이터를 전송하는 역할 한다. 주소 지정과 경로 설정은 네트워크 계층에서 수행 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;UDP는 간단하고 빠르지만 신뢰성 없는 프로토콜로, 실시간 애플리케이션이나 패킷 손실을 감수할 수 있는 서비스&lt;br /&gt;에서 유용하게 사용된다. TCP와 달리 연결을 설정하지 않고 빠른 데이터 전송을 제공하지만, 데이터 전송의 신뢰성&lt;br /&gt;을 보장하지 않으므로 중요한 데이터의 전송에는 적합하지 않는다.&amp;nbsp;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;OSI 모델과 TCP/IP 모델의 비교&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; OSI 모델 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; TCP/IP 모델 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7. 응용 계층&lt;/td&gt;
&lt;td&gt;4. 응용 계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. 표현 계층&lt;/td&gt;
&lt;td&gt;(표현 계층 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. 세션 계층&lt;/td&gt;
&lt;td&gt;(세션 계층 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. 전송 계층&lt;/td&gt;
&lt;td&gt;3. 전송 계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. 네트워크 계층&lt;/td&gt;
&lt;td&gt;2. 인터넷 계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. 데이터 링크 계층&lt;/td&gt;
&lt;td&gt;1. 네트워크 인터페이스 계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1. 물리 계층&lt;/td&gt;
&lt;td&gt;(네트워크 인터페이스 계층에 포함)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dRP25L/btsLQzO7WFX/xOe0obchFyTt1XCyy6RnX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dRP25L/btsLQzO7WFX/xOe0obchFyTt1XCyy6RnX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dRP25L/btsLQzO7WFX/xOe0obchFyTt1XCyy6RnX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRP25L%2FbtsLQzO7WFX%2FxOe0obchFyTt1XCyy6RnX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;372&quot; height=&quot;387&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;781&quot; data-start=&quot;577&quot;&gt;&lt;b&gt;marr() 메서드 실행&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;781&quot; data-start=&quot;603&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;632&quot; data-start=&quot;603&quot;&gt;temp 배열을 생성: new int[4]&lt;/li&gt;
&lt;li data-end=&quot;700&quot; data-start=&quot;636&quot;&gt;Java의 기본값 규칙에 따라, temp 배열의 모든 요소는 0으로 초기화됨: [0, 0, 0, 0]&lt;/li&gt;
&lt;li data-end=&quot;762&quot; data-start=&quot;704&quot;&gt;for 문을 이용해 temp[i] = i를 수행하여 배열을 [0, 1, 2, 3]으로 설정&lt;/li&gt;
&lt;li data-end=&quot;781&quot; data-start=&quot;766&quot;&gt;temp 배열을 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;895&quot; data-start=&quot;783&quot;&gt;&lt;b&gt;main() 메서드 실행&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;895&quot; data-start=&quot;809&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;859&quot; data-start=&quot;809&quot;&gt;iarr는 marr() 메서드에서 반환된 [0, 1, 2, 3] 배열을 참조&lt;/li&gt;
&lt;li data-end=&quot;895&quot; data-start=&quot;863&quot;&gt;for 문을 이용해 배열을 출력: 0 1 2 3&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java의 배열 참조 변수 문제임! (C 언어의 포인터 개념과 유사)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답: 0,1,2,3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;326&quot; data-origin-height=&quot;361&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqiUjH/btsMtswpiUV/twxTPoO5KvsTCyZVgxvtX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqiUjH/btsMtswpiUV/twxTPoO5KvsTCyZVgxvtX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqiUjH/btsMtswpiUV/twxTPoO5KvsTCyZVgxvtX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqiUjH%2FbtsMtswpiUV%2FtwxTPoO5KvsTCyZVgxvtX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;326&quot; height=&quot;361&quot; data-origin-width=&quot;326&quot; data-origin-height=&quot;361&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;삼항 연산자&lt;/b&gt;&lt;br /&gt;변수 = (조건식) ? 참일 때 값 : 거짓일 때 값;&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;661&quot; data-start=&quot;593&quot;&gt;mx = a &amp;lt; b ? b : a;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;661&quot; data-start=&quot;621&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;661&quot; data-start=&quot;621&quot;&gt;1 &amp;lt; 2이므로 b의 값인 2가 선택됨 &amp;rarr; mx = 2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;737&quot; data-start=&quot;663&quot;&gt;if (mx == 1)
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;737&quot; data-start=&quot;684&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;737&quot; data-start=&quot;684&quot;&gt;mx의 값은 2, 2 == 1은 false이므로 &lt;b&gt;else 블록 실행&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;864&quot; data-start=&quot;739&quot;&gt;else 블록 실행:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;864&quot; data-start=&quot;803&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;842&quot; data-start=&quot;803&quot;&gt;b = 2, mx = 2 &amp;rarr; b &amp;lt; mx는 false&lt;/li&gt;
&lt;li data-end=&quot;864&quot; data-start=&quot;846&quot;&gt;따라서 mn = c = 3&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ba5fc0/btsMutaaHoS/6orRKqijEcK5uam4ZBlvo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ba5fc0/btsMutaaHoS/6orRKqijEcK5uam4ZBlvo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ba5fc0/btsMutaaHoS/6orRKqijEcK5uam4ZBlvo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba5fc0%2FbtsMutaaHoS%2F6orRKqijEcK5uam4ZBlvo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;533&quot; height=&quot;164&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응집도(Cohesion)는 &lt;b&gt;모듈 내부 요소들이 서로 관련된 정도&lt;/b&gt;를 나타내는 개념&lt;br /&gt;응집도가 높을수록 모듈이 단일 책임 원칙(SRP)을 잘 따르고, 유지보수성이 좋다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;954&quot; data-start=&quot;267&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.7907%;&quot;&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.8372%;&quot;&gt;&lt;b&gt;응집도&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 58.2558%;&quot;&gt;유형 설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;455&quot; data-start=&quot;362&quot;&gt;
&lt;td style=&quot;width: 7.7907%;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.8372%;&quot;&gt;&lt;b&gt;우연적 응집도 (Coincidental Cohesion)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 58.2558%;&quot;&gt;모듈 내부의 기능들이 아무 연관 없이 우연히 묶여 있음. 응집도가 가장 낮음.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;535&quot; data-start=&quot;456&quot;&gt;
&lt;td style=&quot;width: 7.7907%;&quot;&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.8372%;&quot;&gt;&lt;b&gt;논리적 응집도 (Logical Cohesion)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 58.2558%;&quot;&gt;비슷한 유형의 작업이 같은 모듈에 있지만, 서로 관련이 없음.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;616&quot; data-start=&quot;536&quot;&gt;
&lt;td style=&quot;width: 7.7907%;&quot;&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.8372%;&quot;&gt;&lt;b&gt;시간적 응집도 (Temporal Cohesion)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 58.2558%;&quot;&gt;특정 시점(초기화, 정리 등)에 실행되는 기능들이 모여 있음.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;703&quot; data-start=&quot;617&quot;&gt;
&lt;td style=&quot;width: 7.7907%;&quot;&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.8372%;&quot;&gt;&lt;b&gt;절차적 응집도 (Procedural Cohesion)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 58.2558%;&quot;&gt;순차적으로 실행되지만, 서로 밀접한 관련이 없는 기능들이 묶여 있음.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;778&quot; data-start=&quot;704&quot;&gt;
&lt;td style=&quot;width: 7.7907%;&quot;&gt;&lt;b&gt;5&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.8372%;&quot;&gt;&lt;b&gt;순차적 응집도 (Sequential Cohesion)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 58.2558%;&quot;&gt;한 기능의 출력이 다음 기능의 입력으로 사용됨.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;872&quot; data-start=&quot;779&quot;&gt;
&lt;td style=&quot;width: 7.7907%;&quot;&gt;&lt;b&gt;6&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.8372%;&quot;&gt;&lt;b&gt;통신적 응집도 (Communicational Cohesion)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 58.2558%;&quot;&gt;동일한 데이터를 사용하거나, 같은 입출력을 공유하는 기능들이 묶여 있음.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;954&quot; data-start=&quot;873&quot;&gt;
&lt;td style=&quot;width: 7.7907%;&quot;&gt;&lt;b&gt;7&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.8372%;&quot;&gt;&lt;b&gt;기능적 응집도 (Functional Cohesion)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 58.2558%;&quot;&gt;모듈이 하나의 명확한 기능만 수행하며, 응집도가 가장 높음.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;349&quot; data-origin-height=&quot;361&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bz7XJ4/btsMuIydB0E/EQksh1B3cxwLQwZxDOK2X1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bz7XJ4/btsMuIydB0E/EQksh1B3cxwLQwZxDOK2X1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bz7XJ4/btsMuIydB0E/EQksh1B3cxwLQwZxDOK2X1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbz7XJ4%2FbtsMuIydB0E%2FEQksh1B3cxwLQwZxDOK2X1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;349&quot; height=&quot;361&quot; data-origin-width=&quot;349&quot; data-origin-height=&quot;361&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;530&quot; data-start=&quot;495&quot;&gt;n2 &amp;lt;= 2 &amp;rarr; 2 &amp;lt;= 2 &amp;rarr; true (1)&lt;/li&gt;
&lt;li data-end=&quot;565&quot; data-start=&quot;531&quot;&gt;n3 &amp;gt; 3 &amp;rarr; 3 &amp;gt; 3 &amp;rarr; false (0)&lt;/li&gt;
&lt;li data-end=&quot;600&quot; data-start=&quot;566&quot;&gt;true || false &amp;rarr; 1 || 0 &amp;rarr; 1&lt;/li&gt;
&lt;li data-end=&quot;619&quot; data-start=&quot;601&quot;&gt;&lt;b&gt;결과:&lt;/b&gt; r1 = 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;688&quot; data-start=&quot;663&quot;&gt;n3 = 3이므로 &lt;b&gt;참(true)&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;717&quot; data-start=&quot;689&quot;&gt;!n3 &amp;rarr; !3 &amp;rarr; false (0)&lt;/li&gt;
&lt;li data-end=&quot;736&quot; data-start=&quot;718&quot;&gt;&lt;b&gt;결과:&lt;/b&gt; r2 = 0&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;831&quot; data-start=&quot;797&quot;&gt;n1 &amp;gt; 1 &amp;rarr; 1 &amp;gt; 1 &amp;rarr; false (0)&lt;/li&gt;
&lt;li data-end=&quot;865&quot; data-start=&quot;832&quot;&gt;n2 &amp;lt; 3 &amp;rarr; 2 &amp;lt; 3 &amp;rarr; true (1)&lt;/li&gt;
&lt;li data-end=&quot;900&quot; data-start=&quot;866&quot;&gt;false &amp;amp;&amp;amp; true &amp;rarr; 0 &amp;amp;&amp;amp; 1 &amp;rarr; 0&lt;/li&gt;
&lt;li data-end=&quot;919&quot; data-start=&quot;901&quot;&gt;&lt;b&gt;결과:&lt;/b&gt; r3 = 0&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FqjZO/btsMx1RArfF/kUB3aV865739M1esy6eOgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FqjZO/btsMx1RArfF/kUB3aV865739M1esy6eOgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FqjZO/btsMx1RArfF/kUB3aV865739M1esy6eOgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFqjZO%2FbtsMx1RArfF%2FkUB3aV865739M1esy6eOgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;389&quot; height=&quot;168&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;218&quot; data-start=&quot;57&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;218&quot; data-start=&quot;153&quot;&gt;&lt;b&gt;LRU (Least Recently Used) 알고리즘 사용&lt;/b&gt; &amp;rarr; 가장 오랫동안 사용되지 않은 페이지를 교체&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 결함이 발생하는 조건은 현재 프레임에 해당 페이지가 없을 때. 1,2,3,6,9번째 총 5회 페이지 결함이 발생한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WM4nB/btsMvL3PCg3/2dRPTf3so2sUCaNTDFlEHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WM4nB/btsMvL3PCg3/2dRPTf3so2sUCaNTDFlEHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WM4nB/btsMvL3PCg3/2dRPTf3so2sUCaNTDFlEHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWM4nB%2FbtsMvL3PCg3%2F2dRPTf3so2sUCaNTDFlEHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;390&quot; height=&quot;198&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;339&quot; data-start=&quot;136&quot; data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp; 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기할 필요가 없으므로 시스템 성능을 높일 수 있다.&lt;br /&gt;&amp;rarr; 틀린 이유:&lt;br /&gt;사용자 수준 스레드는 운영체제에 의해 직접 관리되지 않으며, 시스템 호출을 하면 프로세스 전체가 블록(block) 된다. 따라서, 시스템 성능을 높일 수 있는 요소가 아니다.&lt;/p&gt;
&lt;p data-end=&quot;339&quot; data-start=&quot;136&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;559&quot; data-start=&quot;341&quot; data-ke-size=&quot;size16&quot;&gt;2.&amp;nbsp; 동시에 여러 스레드가 커널에 접근할 수 있으므로 여러 스레드가 시스템 호출을 동시에 사용할 수 있다.&lt;br /&gt;&amp;rarr;&amp;nbsp; 틀린 이유:&lt;br /&gt;사용자 수준 스레드는 운영체제가 아닌 사용자 라이브러리에서 관리되므로, 커널이 사용자 수준 스레드를 개별적으로 인식하지 않는다. 즉, 여러 스레드가 동시에 커널에 접근할 수 없다. 이는 오히려 커널 수준 스레드의 장점임&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;559&quot; data-start=&quot;341&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;755&quot; data-start=&quot;561&quot; data-ke-size=&quot;size16&quot;&gt;3.&amp;nbsp; 각 스레드를 개별적으로 관리할 수 있으므로 스레드의 독립적인 스케줄링이 가능하다.&lt;br /&gt;&amp;rarr;&amp;nbsp; 틀린 이유:&lt;br /&gt;사용자 수준 스레드는 운영체제가 아니라 사용자 라이브러리에서 스케줄링을 관리하지만, 한 스레드가 블록되면 전체 프로세스가 블록될 수 있는 문제가 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;755&quot; data-start=&quot;561&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;966&quot; data-start=&quot;757&quot; data-ke-size=&quot;size16&quot;&gt;4.&amp;nbsp; 커널 모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어든다.&lt;br /&gt;&amp;rarr; 정답인 이유:&lt;br /&gt;사용자 수준 스레드는 커널의 개입 없이 사용자 공간에서만 실행되고 관리되므로, 스레드 간 전환(context switch) 시 커널 모드로 전환하는 오버헤드가 발생하지 않는다. 이는 사용자 수준 스레드의 주요 장점 중 하나임.&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;966&quot; data-start=&quot;757&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;169&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l4BSB/btsMv6s9Afd/fHpG8BKxQ53yklevXB6bS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l4BSB/btsMv6s9Afd/fHpG8BKxQ53yklevXB6bS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l4BSB/btsMv6s9Afd/fHpG8BKxQ53yklevXB6bS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl4BSB%2FbtsMv6s9Afd%2FfHpG8BKxQ53yklevXB6bS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;543&quot; height=&quot;169&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;169&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결합도는 모듈 간의 의존성(Dependency)을 나타내는 척도로, 결합도가 낮을수록 좋은 설계라고 평가된다. 결합도는 낮을수록 유지보수성과 확장성이 좋아진다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;227&quot; data-start=&quot;186&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 내용 결합도(Content Coupling) &amp;ndash; 정답&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;512&quot; data-start=&quot;231&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;295&quot; data-start=&quot;231&quot;&gt;한 모듈이 다른 모듈의 &lt;b&gt;내부 데이터나 내부 기능을 직접 참조&lt;/b&gt;할 때 발생하는 가장 강한(나쁜) 결합도.&lt;/li&gt;
&lt;li data-end=&quot;350&quot; data-start=&quot;299&quot;&gt;즉, 다른 모듈의 내부 변수를 직접 변경하거나 특정 내부 로직을 직접 참조하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;555&quot; data-start=&quot;514&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 제어 결합도(Control Coupling) &amp;ndash; 오답&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;749&quot; data-start=&quot;559&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;598&quot; data-start=&quot;559&quot;&gt;한 모듈이 다른 모듈의 수행 흐름을 &lt;b&gt;직접 제어&lt;/b&gt;하는 경우.&lt;/li&gt;
&lt;li data-end=&quot;649&quot; data-start=&quot;602&quot;&gt;즉, 특정 값을 넘겨서 다른 모듈 내부에서 실행 흐름을 변경하도록 하는 방식.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;791&quot; data-start=&quot;751&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 공통 결합도(Common Coupling) &amp;ndash; 오답&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1014&quot; data-start=&quot;795&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;851&quot; data-start=&quot;795&quot;&gt;여러 모듈이 **공통 데이터 영역(Global Variable)**을 공유하여 사용하는 경우.&lt;/li&gt;
&lt;li data-end=&quot;896&quot; data-start=&quot;855&quot;&gt;공통 변수를 수정하면 영향을 받는 모듈이 많아 유지보수가 어려워짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1056&quot; data-start=&quot;1016&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 스탬프 결합도(Stamp Coupling) &amp;ndash; 오답&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1367&quot; data-start=&quot;1060&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1122&quot; data-start=&quot;1060&quot;&gt;한 모듈이 다른 모듈에 &lt;b&gt;필요 이상의 데이터 구조(Record, Object 등)를 전달&lt;/b&gt;하는 경우.&lt;/li&gt;
&lt;li data-end=&quot;1182&quot; data-start=&quot;1126&quot;&gt;즉, 필요한 데이터만 넘겨주는 것이 아니라 &lt;b&gt;불필요한 데이터까지 포함된 구조체&lt;/b&gt;를 넘겨줌.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;262&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJgeQO/btsMwc02bss/c1ocJWuJcqC5wWqfULQJo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJgeQO/btsMwc02bss/c1ocJWuJcqC5wWqfULQJo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJgeQO/btsMwc02bss/c1ocJWuJcqC5wWqfULQJo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJgeQO%2FbtsMwc02bss%2Fc1ocJWuJcqC5wWqfULQJo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;393&quot; height=&quot;262&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;262&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-end=&quot;404&quot; data-start=&quot;391&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;340&quot; data-start=&quot;274&quot;&gt;a[0]의 주소가 &lt;b&gt;10&lt;/b&gt;이라고 가정하고, int형의 크기가 &lt;b&gt;4Byte&lt;/b&gt;라고 주어짐&lt;/li&gt;
&lt;li data-end=&quot;389&quot; data-start=&quot;341&quot;&gt;배열 a는 4개의 정수로 이루어져 있으며, 메모리에서 연속된 주소를 차지한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;568&quot; data-start=&quot;405&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;요소값&lt;/td&gt;
&lt;td&gt;주소&lt;/td&gt;
&lt;td&gt;계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;478&quot; data-start=&quot;452&quot;&gt;
&lt;td&gt;a[0]&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;508&quot; data-start=&quot;479&quot;&gt;
&lt;td&gt;a[1]&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;10 + 4 = 14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;538&quot; data-start=&quot;509&quot;&gt;
&lt;td&gt;a[2]&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;14 + 4 = 18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;568&quot; data-start=&quot;539&quot;&gt;
&lt;td&gt;a[3]&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;18 + 4 = 22&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;179&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9rAok/btsMx3WoeSH/jtrT8VoZCKh4Wmp2Bc8uL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9rAok/btsMx3WoeSH/jtrT8VoZCKh4Wmp2Bc8uL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9rAok/btsMx3WoeSH/jtrT8VoZCKh4Wmp2Bc8uL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9rAok%2FbtsMx3WoeSH%2FjtrT8VoZCKh4Wmp2Bc8uL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;389&quot; height=&quot;179&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;179&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;160&quot; data-start=&quot;91&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;160&quot; data-start=&quot;91&quot; data-ke-size=&quot;size16&quot;&gt;1. &quot;시스템을 모듈로 분할하면 각각의 모듈을 별개로 만들고 수정할 수 있기 때문에 좋은 구조가 된다.&quot;&lt;/p&gt;
&lt;p data-end=&quot;175&quot; data-start=&quot;161&quot; data-ke-size=&quot;size16&quot;&gt;올바른 설명&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;300&quot; data-start=&quot;176&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;229&quot; data-start=&quot;176&quot;&gt;모듈화(Modularity)의 주요 목표 중 하나는 재사용성, 유지보수성 향상&amp;nbsp;&lt;/li&gt;
&lt;li data-end=&quot;300&quot; data-start=&quot;230&quot;&gt;시스템을 독립적인 모듈로 나누면 각 모듈을 독립적으로 개발, 수정, 테스트할 수 있어 소프트웨어 구조가 개선된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;305&quot; data-start=&quot;302&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;359&quot; data-start=&quot;307&quot; data-ke-size=&quot;size16&quot;&gt;2. &quot;응집도는 모듈과 모듈 사이의 상호의존 또는 연결 정도를 의미한다.&quot;&lt;/p&gt;
&lt;p data-end=&quot;378&quot; data-start=&quot;360&quot; data-ke-size=&quot;size16&quot;&gt;틀린 설명 &amp;rarr; 정답&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;641&quot; data-start=&quot;379&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;432&quot; data-start=&quot;379&quot;&gt;응집도(Cohesion)는 모듈 내부 구성 요소 간의 연관성을 의미한다.&amp;nbsp;&lt;/li&gt;
&lt;li data-end=&quot;493&quot; data-start=&quot;433&quot;&gt;하지만, 이 선택지에서는 응집도를 &quot;모듈과 모듈 사이의 상호의존&quot;으로 잘못 설명하고 있다.&lt;/li&gt;
&lt;li data-end=&quot;536&quot; data-start=&quot;494&quot;&gt;모듈 간의 연결 정도는 결합도(Coupling)라고 부른다.&amp;nbsp;&lt;/li&gt;
&lt;li data-end=&quot;641&quot; data-start=&quot;537&quot;&gt;올바른 개념 정리:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;641&quot; data-start=&quot;556&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;597&quot; data-start=&quot;556&quot;&gt;응집도(Cohesion) &amp;rarr; 모듈 내부 요소 간의 연관성&lt;/li&gt;
&lt;li data-end=&quot;641&quot; data-start=&quot;600&quot;&gt;결합도(Coupling) &amp;rarr; 모듈 간의 연결성 (의존성)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;646&quot; data-start=&quot;643&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;695&quot; data-start=&quot;648&quot; data-ke-size=&quot;size16&quot;&gt;3.&amp;nbsp; &quot;모듈 간의 결합도가 약해야 독립적인 모듈이 될 수 있다.&quot;&lt;/p&gt;
&lt;p data-end=&quot;710&quot; data-start=&quot;696&quot; data-ke-size=&quot;size16&quot;&gt;올바른 설명&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;831&quot; data-start=&quot;711&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;771&quot; data-start=&quot;711&quot;&gt;결합도(Coupling)가 낮을수록(Loose Coupling) 모듈 간 독립성이 증가&amp;nbsp;&lt;/li&gt;
&lt;li data-end=&quot;831&quot; data-start=&quot;772&quot;&gt;낮은 결합도는 모듈을 독립적으로 수정, 교체, 테스트할 수 있도록 해 유지보수를 쉽게 만든다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;836&quot; data-start=&quot;833&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;888&quot; data-start=&quot;838&quot; data-ke-size=&quot;size16&quot;&gt;4.&amp;nbsp; &quot;모듈 내 구성 요소 간의 응집도가 강해야 좋은 모듈 설계이다.&quot;&lt;/p&gt;
&lt;p data-end=&quot;903&quot; data-start=&quot;889&quot; data-ke-size=&quot;size16&quot;&gt;올바른 설명&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1050&quot; data-start=&quot;904&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;973&quot; data-start=&quot;904&quot;&gt;응집도가 높을수록(Strong Cohesion) 모듈이 단일 기능을 명확하게 수행하여 유지보수성이 향상됨&amp;nbsp;&lt;/li&gt;
&lt;li data-end=&quot;1050&quot; data-start=&quot;974&quot;&gt;좋은 소프트웨어 설계에서는 높은 응집도(High Cohesion)와 낮은 결합도(Low Coupling)가 중요한 원칙&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>정보처리기사</category>
      <author>비숑주인</author>
      <guid isPermaLink="true">https://his0si.tistory.com/119</guid>
      <comments>https://his0si.tistory.com/119#entry119comment</comments>
      <pubDate>Sat, 24 Jan 2026 03:10:40 +0900</pubDate>
    </item>
    <item>
      <title>정보처리기사 1과목 기출 문제 오답 노트</title>
      <link>https://his0si.tistory.com/120</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGt1KY/btsMv7r6ZXF/dcdEfuJzXsvi3yESnTJ8uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGt1KY/btsMv7r6ZXF/dcdEfuJzXsvi3yESnTJ8uK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGt1KY/btsMv7r6ZXF/dcdEfuJzXsvi3yESnTJ8uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGt1KY%2FbtsMv7r6ZXF%2FdcdEfuJzXsvi3yESnTJ8uK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;399&quot; height=&quot;178&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;142&quot; data-start=&quot;88&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;142&quot; data-start=&quot;88&quot; data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp; &quot;객체 간의 동적 상호작용을 시간 개념을 중심으로 모델링하는 것이다.&quot;&lt;/p&gt;
&lt;p data-end=&quot;157&quot; data-start=&quot;143&quot; data-ke-size=&quot;size16&quot;&gt;올바른 설명&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;287&quot; data-start=&quot;158&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;241&quot; data-start=&quot;158&quot;&gt;순차 다이어그램(Sequence Diagram)은 객체 간의 메시지 교환을 시간의 흐름에 따라 표현하는 UML 다이어그램&lt;/li&gt;
&lt;li data-end=&quot;287&quot; data-start=&quot;242&quot;&gt;즉, 객체 간의 동적인 상호작용을 시각적으로 표현하는 것이 핵심&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;340&quot; data-start=&quot;294&quot; data-ke-size=&quot;size16&quot;&gt;2. &quot;주로 시스템의 정적 측면을 모델링하기 위해 사용한다.&quot;&lt;/p&gt;
&lt;p data-end=&quot;359&quot; data-start=&quot;341&quot; data-ke-size=&quot;size16&quot;&gt;틀린 설명 &amp;rarr; 정답&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;584&quot; data-start=&quot;360&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;438&quot; data-start=&quot;360&quot;&gt;순차 다이어그램은 시간에 따른 동작과 메시지 흐름을 표현하는 것이 목적이므로, 동적인 측면을 모델링하는 데 사용됨&lt;/li&gt;
&lt;li data-end=&quot;525&quot; data-start=&quot;439&quot;&gt;정적 측면(Static Aspect)을 모델링하는 데 사용되는 UML 다이어그램은 클래스 다이어그램(Class Diagram)이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;641&quot; data-start=&quot;591&quot; data-ke-size=&quot;size16&quot;&gt;3. &quot;일반적으로 다이어그램의 수직 방향이 시간의 흐름을 나타낸다.&quot;&lt;/p&gt;
&lt;p data-end=&quot;656&quot; data-start=&quot;642&quot; data-ke-size=&quot;size16&quot;&gt;올바른 설명&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;773&quot; data-start=&quot;657&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;694&quot; data-start=&quot;657&quot;&gt;순차 다이어그램에서는 위에서 아래로 시간이 흐른다.&amp;nbsp;&lt;/li&gt;
&lt;li data-end=&quot;773&quot; data-start=&quot;695&quot;&gt;객체(Actor 또는 Object)는 가로축(수평 방향)에 배치되고, 시간의 흐름에 따라 메시지가 수직 방향(아래 방향)으로 연결된다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;850&quot; data-start=&quot;780&quot; data-ke-size=&quot;size16&quot;&gt;4. &quot;회귀 메시지(Self-Message), 제어블록(Statement block) 등으로 구성된다.&quot;&lt;/p&gt;
&lt;p data-end=&quot;865&quot; data-start=&quot;851&quot; data-ke-size=&quot;size16&quot;&gt;올바른 설명&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1100&quot; data-start=&quot;866&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;955&quot; data-start=&quot;866&quot;&gt;순차 다이어그램은 객체 간 메시지, 회귀 메시지(Self-Message), 제어 구조(Control Structure) 등을 포함할 수 있다.&lt;/li&gt;
&lt;li data-end=&quot;1010&quot; data-start=&quot;956&quot;&gt;회귀 메시지(Self-Message): 객체가 자기 자신에게 메시지를 보내는 경우.&lt;/li&gt;
&lt;li data-end=&quot;1100&quot; data-start=&quot;1011&quot;&gt;제어 블록(Statement Block): 루프(Loop), 조건문(Alternative), 병렬 실행(Parallel) 등의 논리를 표현하는 구조.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9dvDs/dJMcacIGkH6/CijZmg2di8KKuqmAdw9mrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9dvDs/dJMcacIGkH6/CijZmg2di8KKuqmAdw9mrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9dvDs/dJMcacIGkH6/CijZmg2di8KKuqmAdw9mrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9dvDs%2FdJMcacIGkH6%2FCijZmg2di8KKuqmAdw9mrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;685&quot; height=&quot;289&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;289&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;3번) 두 기법 모두 결함을 찾기 위한 '검토(Review)' 기법이라는 점은 같으나 방식이 다르다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,1,0,0&quot;&gt;워크스루(Walkthrough):&lt;/b&gt; 개발자가 주도하여 동료들과 비형식적으로 검토하며 결함을 발견하고 이해를 높이는 것이 목적&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,1,1,0&quot;&gt;인스펙션(Inspection):&lt;/b&gt; 작성자를 제외한 별도의 전문 검토팀(중재자, 기록자 등 역할 분담)이 정해진 절차와 체크리스트에 따라 수행하는 매우 엄격하고 형식적인 검토 과정&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkoh33/dJMcabQwc7q/Fzni7FkKJC6zAmh8RusQBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkoh33/dJMcabQwc7q/Fzni7FkKJC6zAmh8RusQBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkoh33/dJMcabQwc7q/Fzni7FkKJC6zAmh8RusQBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbkoh33%2FdJMcabQwc7q%2FFzni7FkKJC6zAmh8RusQBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;557&quot; height=&quot;120&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번) 애자일 방법론 자체가 아니라, &lt;b data-index-in-node=&quot;31&quot; data-path-to-node=&quot;9,1,0&quot;&gt;나선형(Spiral) 모델&lt;/b&gt;의 4가지 주요 단계(계획 수립 &amp;rarr; 위험 분석 &amp;rarr; &lt;b data-index-in-node=&quot;73&quot; data-path-to-node=&quot;9,1,0&quot;&gt;개발 및 검증&lt;/b&gt; &amp;rarr; 고객 평가)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biJyUn/dJMcadguasc/HhGgunwtJBMCG6Q5OOdTv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biJyUn/dJMcadguasc/HhGgunwtJBMCG6Q5OOdTv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biJyUn/dJMcadguasc/HhGgunwtJBMCG6Q5OOdTv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiJyUn%2FdJMcadguasc%2FHhGgunwtJBMCG6Q5OOdTv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;676&quot; height=&quot;259&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;259&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번) XP는 구조적 방법론이 아니라, 변화에 기민하게 대응하는 &lt;b data-index-in-node=&quot;38&quot; data-path-to-node=&quot;11,1,0&quot;&gt;애자일(Agile) 방법론&lt;/b&gt;의 한 종류&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7zwU4/dJMcaia3lmQ/05p9VozDB37KD96S4WEPuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7zwU4/dJMcaia3lmQ/05p9VozDB37KD96S4WEPuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7zwU4/dJMcaia3lmQ/05p9VozDB37KD96S4WEPuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7zwU4%2FdJMcaia3lmQ%2F05p9VozDB37KD96S4WEPuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;674&quot; height=&quot;174&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,1,0,0&quot;&gt;객체 모델링(Object):&lt;/b&gt; 객체 다이어그램을 통해 객체들 간의 관계를 규정하는 가장 기초적인 단계&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,1,1,0&quot;&gt;동적 모델링(Dynamic):&lt;/b&gt; 상태 다이어그램을 사용하여 시스템의 행위를 기술&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,1,2,0&quot;&gt;기능 모델링(Function):&lt;/b&gt; 자료 흐름도(DFD)를 통해 데이터 처리 과정을 표현&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;325&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpU4ni/dJMcahDbOD3/YgRwSJEvka4v8TRb7bzGo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpU4ni/dJMcahDbOD3/YgRwSJEvka4v8TRb7bzGo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpU4ni/dJMcahDbOD3/YgRwSJEvka4v8TRb7bzGo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpU4ni%2FdJMcahDbOD3%2FYgRwSJEvka4v8TRb7bzGo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;682&quot; height=&quot;325&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;325&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4번) 상향식 설계(Bottom-Up)는 최하위 모듈을 먼저 개발한 후 이를 결합하여 상위 모듈을 만드는 방식. 이 방식은 각 모듈이 이미 완성되어 있어야 하므로, &lt;b data-index-in-node=&quot;100&quot; data-path-to-node=&quot;5,0,0&quot;&gt;인터페이스가 사전에 명확하게 성립되어 있지 않으면&lt;/b&gt; 모듈 간의 결합이나 기능 추가가 매우 어렵다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dz7V8/dJMcahpGwxK/VRiTbtpXsQSF2Lk2ZU9Xx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dz7V8/dJMcahpGwxK/VRiTbtpXsQSF2Lk2ZU9Xx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dz7V8/dJMcahpGwxK/VRiTbtpXsQSF2Lk2ZU9Xx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDz7V8%2FdJMcahpGwxK%2FVRiTbtpXsQSF2Lk2ZU9Xx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;685&quot; height=&quot;232&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4번) 자료 사전(DD)은 &lt;b data-index-in-node=&quot;20&quot; data-path-to-node=&quot;6,0,0&quot;&gt;구조적 분석 기법&lt;/b&gt;에서 데이터 흐름을 정의하는 도구이다. 요구사항 명세 시 구체적인 명세(상세 기능 정의)를 위해 직접적으로 사용되는 표준 도구는 소단위 명세서(Mini-Spec) 입니다.&lt;/p&gt;</description>
      <category>정보처리기사</category>
      <author>비숑주인</author>
      <guid isPermaLink="true">https://his0si.tistory.com/120</guid>
      <comments>https://his0si.tistory.com/120#entry120comment</comments>
      <pubDate>Sat, 24 Jan 2026 03:09:14 +0900</pubDate>
    </item>
    <item>
      <title>5단원 정보시스템 구축 관리 개념 요약</title>
      <link>https://his0si.tistory.com/291</link>
      <description>&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. 정보 보안 및 접근 통제&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정보보안 3대 요소&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;4&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,0,0&quot;&gt;기밀성(Confidentiality):&lt;/b&gt; 인가된 사용자만 접근 가능.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0&quot;&gt;무결성(Integrity):&lt;/b&gt; 인가된 사용자만 수정 가능.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0&quot;&gt;가용성(Availability):&lt;/b&gt; 필요할 때 언제든 자원 사용 가능.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;접근 통제 기술 (Access Control)&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;영문&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;권한 부여 기준&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0,0&quot;&gt;임의 접근 통제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,0&quot;&gt;DAC&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;신원(Identity)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,3,0&quot;&gt;데이터 소유자가 권한 지정 (SQL: GRANT/REVOKE)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0,0&quot;&gt;강제 접근 통제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,1,0&quot;&gt;MAC&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;등급(Label)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,3,0&quot;&gt;관리자가 설정한 보안 등급 비교 (시스템이 결정)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,0,0&quot;&gt;역할 기반 접근 통제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,1,0&quot;&gt;RBAC&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,2,0&quot;&gt;역할(Role)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,3,0&quot;&gt;사용자의 직무나 역할에 따라 권한 부여&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2. 네트워크 구성 및 전송 방식&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;네트워크 토폴로지 (형태)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0,0&quot;&gt;스타형(성형):&lt;/b&gt; 중앙 노드와 1:1 연결. 고장 발견이 쉽지만 중앙 노드 고장 시 전체 마비.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0&quot;&gt;버스형:&lt;/b&gt; 한 개의 회선에 여러 단말 연결. 회선 양끝 종단장치(Terminator) 필요.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0&quot;&gt;링형(환형):&lt;/b&gt; 인접 단말기끼리 연결. 한 노드 고장 시 전체 시스템 마비.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,3,0&quot;&gt;망형(메시형):&lt;/b&gt; 모든 지점 연결. &lt;b data-index-in-node=&quot;19&quot; data-path-to-node=&quot;10,3,0&quot;&gt;응답 속도와 신뢰성 최상&lt;/b&gt;, 비용은 가장 비쌈.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;804&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/canzeC/dJMb99SJjlf/ArynoK0jQxUT1Nq4CeJovk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/canzeC/dJMb99SJjlf/ArynoK0jQxUT1Nq4CeJovk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/canzeC/dJMb99SJjlf/ArynoK0jQxUT1Nq4CeJovk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcanzeC%2FdJMb99SJjlf%2FArynoK0jQxUT1Nq4CeJovk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;804&quot; height=&quot;130&quot; data-origin-width=&quot;804&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;정보 전송 방식&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;단방향(Simplex):&lt;/b&gt; 한쪽으로만 전송 (라디오, TV).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0&quot;&gt;반이중(Half-Duplex):&lt;/b&gt; 양방향 가능하나 동시는 불가 (무전기).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,2,0&quot;&gt;전이중(Full-Duplex):&lt;/b&gt; 동시에 양방향 송수신 가능 (전화기).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. 암호화 알고리즘&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;양방향 암호화&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;16&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;대칭키 (비밀키)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;비대칭키 (공개키)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0,0&quot;&gt;키 관계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,1,0&quot;&gt;암호화키 = 복호화키&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,2,0&quot;&gt;암호화키 != 복호화키&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,2,0,0&quot;&gt;속도&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,1,0&quot;&gt;빠름&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,2,0&quot;&gt;느림&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,3,0,0&quot;&gt;키 개수&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,3,1,0&quot;&gt;&lt;span data-index-in-node=&quot;0&quot; data-math=&quot;n(n-1)/2&quot;&gt;n(n-1)/2&lt;/span&gt;&amp;nbsp;(많음)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,3,2,0&quot;&gt;&lt;span data-index-in-node=&quot;0&quot; data-math=&quot;2n&quot;&gt;2n &lt;/span&gt;(적음)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,4,0,0&quot;&gt;종류&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,4,1,0&quot;&gt;DES, AES, SEED, ARIA&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,4,2,0&quot;&gt;RSA, ECC, Diffie-Hellman&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;단방향 암호화(Hash):&lt;/b&gt; 복호화가 불가능한 함수 (SHA, MD5 등). 고정된 길이의 해시값 출력.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4. 소프트웨어 비용 산정 기법&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;상향식 산정 (수학적 모델)&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0&quot;&gt;LOC (Source Line of Code):&lt;/b&gt; 코드 라인 수 기반 산정.&lt;/li&gt;
&lt;li data-path-to-node=&quot;21,0,1&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,1,0&quot;&gt;예측치 계산법:&lt;/b&gt; (&lt;span data-index-in-node=&quot;9&quot; data-math=&quot;\frac{a + 4c + b}{6}&quot;&gt;a + 4c + b) / 6&lt;/span&gt;&amp;nbsp;(a: 낙관치, b: 비관치, c: 기대치)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0&quot;&gt;COCOMO:&lt;/b&gt; 보헴 제안. 프로젝트 규모(LOC)에 따라 조직형(5만 라인 이하), 반분리형(30만 이하), 내장형(30만 초과) 으로 구분.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,0&quot;&gt;Putnam:&lt;/b&gt; 생명주기 전 과정 노력 분포 기반. &lt;b data-index-in-node=&quot;28&quot; data-path-to-node=&quot;21,2,0&quot;&gt;Rayleigh-Norden 곡선&lt;/b&gt; 활용 (자동화 도구: &lt;b data-index-in-node=&quot;59&quot; data-path-to-node=&quot;21,2,0&quot;&gt;SLIM&lt;/b&gt;).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,3,0&quot;&gt;기능 점수(FP):&lt;/b&gt; 소프트웨어의 기능(입력, 출력, 인터페이스 등) 가중치 합산.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;하향식 산정&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0&quot;&gt;전문가 감정:&lt;/b&gt; 전문가에게 의뢰.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0&quot;&gt;델파이 기법:&lt;/b&gt; 조정자와 여러 전문가의 의견 종합 (주관성 배제 노력).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;5. 보안 시스템 및 솔루션&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;침입 탐지 시스템(IDS):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,1,0,0&quot;&gt;오용 탐지:&lt;/b&gt; 알려진 공격 패턴 기반.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,1,1,0&quot;&gt;이상 탐지:&lt;/b&gt; 정상 상태와 비교하여 비정상 행위 감지.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,1,2,0&quot;&gt;NIDS:&lt;/b&gt; 네트워크 트래픽 감시 / &lt;b data-index-in-node=&quot;20&quot; data-path-to-node=&quot;26,0,1,2,0&quot;&gt;HIDS:&lt;/b&gt; 호스트(서버) 내부 감시.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;프레임워크:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,1,0,0&quot;&gt;Spring:&lt;/b&gt; JAVA 기반 오픈소스 경량 프레임워크.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,1,1,0&quot;&gt;전자정부 프레임워크:&lt;/b&gt; 공공사업 표준 아키텍처 제공.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;6. 정보보안 침해 및 서비스 공격 유형&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;악성코드 및 해킹 기법&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;4&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;종류&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징 및 공격 방식&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0,0&quot;&gt;웜 (Worm)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,1,1,0&quot;&gt;스스로 복제하며 네트워크를 통해 전파. (트로이 목마와 달리 &lt;b data-index-in-node=&quot;34&quot; data-path-to-node=&quot;4,1,1,0&quot;&gt;자기 증식성&lt;/b&gt; 있음)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0,0&quot;&gt;트로이 목마&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,2,1,0&quot;&gt;정상 프로그램으로 위장하여 잠입. 복제 능력은 없으나 백도어 형성.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,0,0&quot;&gt;백도어 (Backdoor)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,3,1,0&quot;&gt;설계 시 고의로 만든 통로. &lt;b data-index-in-node=&quot;16&quot; data-path-to-node=&quot;4,3,1,0&quot;&gt;탐지법: 무결성 검사, 로그 분석, SetID 파일 확인.&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,4,0,0&quot;&gt;스니핑 (Sniffing)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,4,1,0&quot;&gt;네트워크 상의 패킷을 엿보며 아이디/비밀번호 탈취. (도청)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,5,0,0&quot;&gt;스푸핑 (Spoofing)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,5,1,0&quot;&gt;승인받은 사용자인 것처럼 자신의 IP나 MAC 주소를 속여 접속.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;서비스 거부 공격 (DoS / DDoS)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;DoS:&lt;/b&gt; 한 곳에서 대량의 패킷 전송.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;DDoS:&lt;/b&gt; 여러 좀비 PC(C&amp;amp;C 서버 명령)를 이용해 분산 공격.&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;7&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;공격 종류&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;상세 내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1,0,0&quot;&gt;Ping of Death&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,1,1,0&quot;&gt;허용 범위를 넘는 거대한 ICMP 패킷을 보내 시스템 마비.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,2,0,0&quot;&gt;Smurfing&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,2,1,0&quot;&gt;소스 IP를 타겟 IP로 위조한 후 ICMP Echo 요청을 브로드캐스트하여 타겟에게 응답 폭주 유도.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,3,0,0&quot;&gt;TearDrop&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,3,1,0&quot;&gt;패킷 재조립 순서(Fragment Offset)를 조작하여 수신측 과부하 유도.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,4,0,0&quot;&gt;LAND Attack&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,4,1,0&quot;&gt;출발지 IP와 목적지 IP를 동일하게&lt;/b&gt; 설정하여 무한 루프 응답 유도.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;7. 정보보안 솔루션&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;11&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;솔루션&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 기능&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0,0&quot;&gt;방화벽 (Firewall)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,1,0&quot;&gt;내부/외부 트래픽을 허용 규칙에 따라 필터링.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0,0&quot;&gt;웹 방화벽 (WAF)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,1,0&quot;&gt;HTTP/HTTPS 등 &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;11,2,1,0&quot;&gt;웹 애플리케이션 계층(L7)의 공격&lt;/b&gt;(SQL Injection, XSS) 차단.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0,0&quot;&gt;IPS (침입 방지)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,1,0&quot;&gt;IDS의 탐지 기능에 &lt;b data-index-in-node=&quot;12&quot; data-path-to-node=&quot;11,3,1,0&quot;&gt;능동적 차단&lt;/b&gt; 기능을 결합한 솔루션.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,4,0,0&quot;&gt;VPN (가상 사설망)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,4,1,0&quot;&gt;공중망을 전용회선처럼 사용할 수 있게 하는 &lt;b data-index-in-node=&quot;24&quot; data-path-to-node=&quot;11,4,1,0&quot;&gt;터널링 및 암호화&lt;/b&gt; 기술.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,5,0,0&quot;&gt;DLP (데이터 유출 방지)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,5,1,0&quot;&gt;사내 기밀 정보가 외부로 나가는 것을 탐지 및 통제.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,6,0,0&quot;&gt;NAC (네트워크 접근 제어)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,6,1,0&quot;&gt;내부망 접속 시 MAC 주소 기반 인증 및 무결성 체크.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;8. 소프트웨어 품질 및 프로세스 평가 모델&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CMMI (능력 성숙도 통합 모델)&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0,0&quot;&gt;초기(Initial):&lt;/b&gt; 프로세스 없음. 개인의 능력에 의존.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0&quot;&gt;관리(Managed):&lt;/b&gt; 프로젝트 단위의 관리 규칙 존재.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,2,0&quot;&gt;정의(Defined):&lt;/b&gt; 조직 차원의 표준 프로세스 확립.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,3,0&quot;&gt;정량적 관리(Quantitatively Managed):&lt;/b&gt; 데이터 기반 정량적 통제.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,4,0&quot;&gt;최적화(Optimizing):&lt;/b&gt; 지속적인 개선 추진.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;SPICE (ISO 15504)&lt;/p&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;SW 프로세스 평가를 위한 국제 표준으로 6단계 등급을 가집니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;19,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0&quot;&gt;불완전 &amp;rarr; 수행 &amp;rarr; 관리 &amp;rarr; 확립 &amp;rarr; 예측 가능 &amp;rarr; 최적&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;9. 데이터 오류 및 기타 보안 용어&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;코드 오류 종류&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0&quot;&gt;필사(Transcription):&lt;/b&gt; 한 자리를 잘못 기록 (ABCD &amp;rarr; AB&lt;b data-index-in-node=&quot;41&quot; data-path-to-node=&quot;23,0,0&quot;&gt;F&lt;/b&gt;D)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0&quot;&gt;전위(Transposition):&lt;/b&gt; 좌우 자리를 바꿈 (ABCD &amp;rarr; A&lt;b data-index-in-node=&quot;38&quot; data-path-to-node=&quot;23,1,0&quot;&gt;CB&lt;/b&gt;D)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,2,0&quot;&gt;이중(Double):&lt;/b&gt; 전위 오류가 두 번 발생.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;세션 하이재킹 (Session Hijacking)&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;서버와 클라이언트 간의 세션을 가로채는 공격으로, TCP의 &lt;b data-index-in-node=&quot;33&quot; data-path-to-node=&quot;25&quot;&gt;비동기화 상태&lt;/b&gt;를 이용하여 접속 권한을 탈취합니다. &lt;b data-index-in-node=&quot;61&quot; data-path-to-node=&quot;25&quot;&gt;탐지법은 ACK Storm 탐지&lt;/b&gt;가 대표적&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;10. UNIX / LINUX 명령어&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;28&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,0,0&quot;&gt;chmod:&lt;/b&gt; chmod 755 파일명 (rwx r-x r-x 권한 부여)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,1,0&quot;&gt;fork / exec:&lt;/b&gt; 프로세스 생성 및 실행.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,2,0&quot;&gt;cat / ls / rm:&lt;/b&gt; 내용 확인 / 목록 확인 / 삭제.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;11. 보안 및 인증 관련 용어&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;메모리 공격 방어 기술과 인증 프로토콜이 핵심&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 176px;&quot; border=&quot;1&quot; data-path-to-node=&quot;4&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;b&gt;핵심 정의 및 특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 44px;&quot;&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;&lt;span data-path-to-node=&quot;4,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0,0&quot;&gt;Stack Guard&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;&lt;span data-path-to-node=&quot;4,1,1,0&quot;&gt;스택 오버플로우를 방지하기 위해 메모리에 &lt;b data-index-in-node=&quot;23&quot; data-path-to-node=&quot;4,1,1,0&quot;&gt;Canary(카나리)&lt;/b&gt; 값을 심고, 이 값이 변조되면 프로그램을 중단시키는 기술&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 44px;&quot;&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;&lt;span data-path-to-node=&quot;4,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0,0&quot;&gt;ASLR&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 44px;&quot;&gt;&lt;span data-path-to-node=&quot;4,2,1,0&quot;&gt;주소 공간 배치 난독화. 실행 시마다 메모리 주소(Stack, Heap 등)를 랜덤하게 배치하여 해커의 주소 예측 공격을 차단&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;4,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,0,0&quot;&gt;Salt&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;4,3,1,0&quot;&gt;비밀번호 암호화 시, 동일한 패스워드라도 서로 다른 암호문이 생성되도록 덧붙이는 무작위 문자열&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;4,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,4,0,0&quot;&gt;SSO&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;4,4,1,0&quot;&gt;단일 로그인. 한 번의 인증으로 여러 연관된 시스템에 추가 로그인 없이 접근할 수 있는 기술&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;4,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,5,0,0&quot;&gt;SSH&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;4,5,1,0&quot;&gt;네트워크 상의 다른 컴퓨터에 로그인하거나 원격 명령을 실행할 수 있게 해주는 암호화 프로토콜(포트 22번)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;12. 네트워크 및 인프라 신기술&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;물리적 한계를 넘는 논리적 구성과 차세대 통신망 관련 용어&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;8&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;핵심 정의 및 특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0,0&quot;&gt;VLAN&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,1,0&quot;&gt;물리적 위치와 관계없이 &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;8,1,1,0&quot;&gt;논리적으로 LAN을 분할&lt;/b&gt;하여 보안성과 성능을 높이는 기술&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,0,0&quot;&gt;MQTT&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,1,0&quot;&gt;발행-구독(Pub-Sub) 기반의 가볍고 낮은 대역폭을 사용하는 &lt;b data-index-in-node=&quot;36&quot; data-path-to-node=&quot;8,2,1,0&quot;&gt;IoT 전용 메시징 프로토콜&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,3,0,0&quot;&gt;Docker&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,1,0&quot;&gt;컨테이너 기반 가상화 도구. 애플리케이션을 환경에 구애받지 않고 빠르게 배포/실행할 수 있게 함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,4,0,0&quot;&gt;PaaS-Ta&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,1,0&quot;&gt;국내 기술로 개발된 개방형 클라우드 컴퓨팅 플랫폼(PaaS)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,5,0,0&quot;&gt;Mesh Network&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,5,1,0&quot;&gt;망형 네트워크. 기기들이 서로 그물망처럼 연결되어 장애 발생 시 우회 경로를 찾는 등 안정성이 매우 높음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;13. 보안 진단 및 분석 도구&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;시스템의 취약점을 찾거나 변조 여부를 확인하는 도구들.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;nmap:&lt;/b&gt; 서버에 열려 있는 포트를 스캐닝하여 보안 취약점을 찾는 네트워크 분석 도구&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0&quot;&gt;Tripwire:&lt;/b&gt; 시스템 내 파일의 변조 여부를 감시하는 무결성 검사 도구. (백도어 탐지 등에 활용)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,2,0&quot;&gt;Router:&lt;/b&gt; 서로 다른 네트워크를 연결하고 최적의 경로를 설정해 주는 장비1&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;14. 최신 IT 트렌드 및 서비스&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;디지털 전환(DX)과 관련된 융합 기술들&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0,0&quot;&gt;Digital Twin:&lt;/b&gt; 현실의 사물을 가상 세계에 똑같이 구현하여 시뮬레이션함으로써 사고를 예방하고 자산을 최적화하는 기술&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0&quot;&gt;Smart Grid:&lt;/b&gt; IT를 전력망에 접목하여 에너지 효율을 극대화하는 지능형 전력망&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,2,0&quot;&gt;SOA (서비스 지향 아키텍처):&lt;/b&gt; 업무 단위를 '서비스'라는 독립된 기능으로 구축하고 결합하여 시스템을 구성하는 방법론&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,3,0&quot;&gt;Mashup:&lt;/b&gt; 웹에서 제공하는 여러 API나 서비스를 조합하여 새로운 서비스를 만드는 기술. (예: 구글 지도 + 부동산 정보)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,4,0&quot;&gt;PICONET:&lt;/b&gt; 블루투스 등으로 형성된 소규모 무선 네트워크 단위&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>정보처리기사</category>
      <author>비숑주인</author>
      <guid isPermaLink="true">https://his0si.tistory.com/291</guid>
      <comments>https://his0si.tistory.com/291#entry291comment</comments>
      <pubDate>Sat, 24 Jan 2026 01:40:02 +0900</pubDate>
    </item>
    <item>
      <title>4단원 프로그래밍 언어 활용 개념 요약</title>
      <link>https://his0si.tistory.com/290</link>
      <description>&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. 운영체제 및 프로세스 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;프로세스 스케줄링 (비선점형 중심)&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;프로세스 처리 우선순위를 결정하는 전략이다.&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;5&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;종류&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0,0&quot;&gt;FIFO (First In First Out)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,1,0&quot;&gt;도착한 순서대로 처리하는 가장 단순한 방식입니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,2,0,0&quot;&gt;SJF (Shortest Job First)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,1,0&quot;&gt;실행 시간이 가장 짧은 프로세스부터 처리하여 평균 대기 시간을 최소화합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,3,0,0&quot;&gt;HRN (Highest Response ratio Next)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,1,0&quot;&gt;SJF의 약점(긴 작업 소외)을 보완하기 위해 &lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;5,3,1,0&quot;&gt;대기 시간&lt;/b&gt;을 고려합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6,0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0&quot;&gt;HRN 우선순위 계산식:&lt;/b&gt;&lt;/p&gt;
&lt;div data-path-to-node=&quot;6,1&quot;&gt;
&lt;div data-math=&quot;\text{우선순위} = \frac{\text{대기시간} + \text{서비스시간}}{\text{서비스시간}}&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;70&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs3Tbz/dJMcaaRDED1/rAL6yKlIT2awmvxcv9b58k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs3Tbz/dJMcaaRDED1/rAL6yKlIT2awmvxcv9b58k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs3Tbz/dJMcaaRDED1/rAL6yKlIT2awmvxcv9b58k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs3Tbz%2FdJMcaaRDED1%2FrAL6yKlIT2awmvxcv9b58k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;351&quot; height=&quot;70&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;70&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;6,2&quot; data-ke-size=&quot;size16&quot;&gt;(결과값이 높을수록 우선순위가 높음)&lt;/p&gt;
&lt;p data-path-to-node=&quot;6,2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;UNIX 운영체제 특징&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,0,0&quot;&gt;대화식 시분할 시스템&lt;/b&gt;: 여러 사용자가 동시에 서버에 접속하여 사용하기 적합함&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0&quot;&gt;C언어 기반&lt;/b&gt;: 이식성이 높고 장치 간 호환성이 뛰어나다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,0&quot;&gt;구조&lt;/b&gt;: 트리 구조의 파일 시스템을 가지며, 멀티태스킹과 멀티유저를 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Python 시퀀스자료&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-path-to-node=&quot;8&quot;&gt;
&lt;li&gt;&lt;b&gt;리스트(List):&lt;/b&gt; 데이터를 연속적으로 저장 가능하며, 필요에 따라 개수 조절 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;튜플(Tuple):&lt;/b&gt; 데이터를 연속적으로 저장하지만, 요소의 추가 / 삭제 / 변경 불가 -&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Range:&lt;/b&gt; 연속 된 숫자를 생성 / 리스트, 반복문에서 자주 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2. 네트워크 참조 모델 및 프로토콜&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;OSI 7계층 참조 모델&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;12&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;계층&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 기능&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 프로토콜 / 키워드&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0,0&quot;&gt;7. 응용 (Application)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,1,0&quot;&gt;사용자 인터페이스 제공&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,2,0&quot;&gt;HTTP, FTP, SMTP, Telnet, DNS&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,2,0,0&quot;&gt;6. 표현 (Presentation)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,1,0&quot;&gt;데이터 암호화, 압축, 코드 변환&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,2,0&quot;&gt;JPEG, MPEG, 암호화/복호화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,3,0,0&quot;&gt;5. 세션 (Session)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,3,1,0&quot;&gt;대화 제어 및 동기화&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,3,2,0&quot;&gt;동기점(Check point)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,4,0,0&quot;&gt;4. 전송 (Transport)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,4,1,0&quot;&gt;종단 간(End-to-End) 신뢰성 있는 전송&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,4,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,4,2,0&quot;&gt;TCP(신뢰성)&lt;/b&gt;, &lt;b data-index-in-node=&quot;10&quot; data-path-to-node=&quot;12,4,2,0&quot;&gt;UDP(속도)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,5,0,0&quot;&gt;3. 네트워크 (Network)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,5,1,0&quot;&gt;경로 설정(Routing), 패킷 전달&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,5,2,0&quot;&gt;IP, ICMP, ARP, RARP&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,6,0,0&quot;&gt;2. 데이터링크 (Data Link)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,6,1,0&quot;&gt;노드 간 프레임 전송, 오류/흐름 제어&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,6,2,0&quot;&gt;HDLC, PPP, 프레임(Frame)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,7,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,7,0,0&quot;&gt;1. 물리 (Physical)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,7,1,0&quot;&gt;전기적, 기계적 특성 정의&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,7,2,0&quot;&gt;허브, 리피터, 비트(Bit) 전송&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;전송 및 인터넷 계층 핵심 프로토콜&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,0,0&quot;&gt;TCP vs UDP&lt;/b&gt;: TCP는 양방향 연결형으로 신뢰성이 높고, UDP는 비연결형으로 실시간 스트리밍 등 속도가 중요한 서비스에 사용됨&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0&quot;&gt;ARP vs RARP&lt;/b&gt;: &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;14,1,0&quot;&gt;ARP&lt;/b&gt;는 IP 주소를 물리적 주소(MAC)로 바꾸고, &lt;b data-index-in-node=&quot;43&quot; data-path-to-node=&quot;14,1,0&quot;&gt;RARP&lt;/b&gt;는 반대로 MAC 주소를 IP 주소로 변환&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. 소프트웨어 설계 원칙: 응집도와 결합도&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;모듈의 독립성을 측정하는 지표이다. &lt;b data-index-in-node=&quot;21&quot; data-path-to-node=&quot;17&quot;&gt;응집도는 높을수록, 결합도는 낮을수록&lt;/b&gt; 좋은 설계&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;응집도 (Cohesion) - 모듈 내부의 관련성&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;19,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0&quot;&gt;(높음)&lt;/b&gt; 기능적 &amp;rarr; 순차적 &amp;rarr; 통신적 &amp;rarr; 절차적 &amp;rarr; 시간적 &amp;rarr; 논리적 &amp;rarr; 우연적 &lt;b data-index-in-node=&quot;45&quot; data-path-to-node=&quot;19,0&quot;&gt;(낮음)&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;19,0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;결합도 (Coupling) - 모듈 간의 의존성&lt;/p&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;21,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0&quot;&gt;(낮음)&lt;/b&gt; 자료(Data) &amp;rarr; 스탬프 &amp;rarr; 제어 &amp;rarr; 외부 &amp;rarr; 공유 &amp;rarr; 내용(Content) &lt;b data-index-in-node=&quot;49&quot; data-path-to-node=&quot;21,0&quot;&gt;(높음)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4. 네트워크 제어 및 표준&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;흐름 제어 및 혼잡 제어&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;25&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,0,0&quot;&gt;Stop and Wait&lt;/b&gt;: 패킷 하나를 보내고 확인 응답(ACK)을 받아야 다음을 전송&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,1,0&quot;&gt;Sliding Window&lt;/b&gt;: 수신 측의 확인 없이 정해진 윈도우 크기만큼 연속 전송하여 효율을 높인다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,2,0&quot;&gt;Slow Start&lt;/b&gt;: 혼잡 윈도우 크기를 1부터 지수적으로 늘리다 혼잡 발생 시 다시 1로 줄인다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;IEEE 802 표준안&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;27&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,0,0&quot;&gt;802.3&lt;/b&gt;: CSMA/CD (유선 LAN)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,1,0&quot;&gt;802.11&lt;/b&gt;: 무선 LAN (Wi-Fi)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,2,0&quot;&gt;802.15&lt;/b&gt;: 블루투스/지그비 (개인 영역 네트워크 - WPAN)&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;29&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;29&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;5. Python 자료형 핵심&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;30&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,0,0&quot;&gt;리스트 (List)&lt;/b&gt;: [ ] 사용. 가변(Mutable)하며 데이터 추가/삭제가 자유롭다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,1,0&quot;&gt;튜플 (Tuple)&lt;/b&gt;: ( ) 사용. 불변(Immutable)하며 한 번 생성하면 요소를 바꿀 수 없다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,2,0&quot;&gt;Range&lt;/b&gt;: range(시작, 끝, 증감) 형태로 연속된 숫자 생성 시 사용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;6. 네트워크 주소 체계: IPv4 vs IPv6&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;4&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;IPv4&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;IPv6&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0,0&quot;&gt;주소 길이&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,1,1,0&quot;&gt;32 Bit (8 Bit &lt;span data-index-in-node=&quot;14&quot; data-math=&quot;\times&quot;&gt;$\times$&lt;/span&gt; 4개)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,1,2,0&quot;&gt;128 Bit (16 Bit &lt;span data-index-in-node=&quot;16&quot; data-math=&quot;\times&quot;&gt;$\times$&lt;/span&gt; 8개)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0,0&quot;&gt;표시 방법&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,2,1,0&quot;&gt;10진수 (0~255), 마침표(.)로 구분&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,2,2,0&quot;&gt;16진수 (0000~FFFF), 콜론(:)으로 구분&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,0,0&quot;&gt;전송 방식&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,3,1,0&quot;&gt;유니캐스트, 멀티캐스트, &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;4,3,1,0&quot;&gt;브로드캐스트&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,3,2,0&quot;&gt;유니캐스트, 멀티캐스트, &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;4,3,2,0&quot;&gt;애니캐스트&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,4,0,0&quot;&gt;주요 특징&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,4,1,0&quot;&gt;설정의 편의성, 기존 인프라 풍부&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,4,2,0&quot;&gt;확장성/보안성(인증, 기밀성) 우수, 패킷 크기 제한 없음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;7. 연산자 및 우선순위&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;연산자 종류 및 특징&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;비트 연산자&lt;/b&gt;: &amp;amp;(AND), ^(XOR: 다르면 1), |(OR), ~(NOT), &amp;lt;&amp;lt;, &amp;gt;&amp;gt;(비트 이동).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0&quot;&gt;관계 연산자&lt;/b&gt;: ==(같다), !=(같지 않다), &amp;gt;, &amp;lt;, &amp;gt;=, &amp;lt;= 등.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,2,0&quot;&gt;논리 연산자&lt;/b&gt;: ! (NOT), &amp;amp;&amp;amp; (AND), || (OR).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;연산자 우선순위 요약&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;11&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;순위&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;연산자 분류&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;연산자 및 결합 규칙&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0,0&quot;&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,1,0&quot;&gt;최우선/후위&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,2,0&quot;&gt;( ), [ ], . , -&amp;gt;, ++, -- (후위) [&amp;rarr; 방향]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0,0&quot;&gt;2&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,1,0&quot;&gt;단항/전위&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,2,0&quot;&gt;++, -- (전위), !, ~, sizeof, (type) [&amp;larr; 방향]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0,0&quot;&gt;3~4&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,1,0&quot;&gt;산술&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,2,0&quot;&gt;*, /, % &amp;rarr; +, - [&amp;rarr; 방향]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,4,0,0&quot;&gt;5~7&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,4,1,0&quot;&gt;이동/관계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,4,2,0&quot;&gt;&amp;lt;&amp;lt;, &amp;gt;&amp;gt; &amp;rarr; &amp;lt;, &amp;lt;=, &amp;gt;, &amp;gt;= &amp;rarr; ==, != [&amp;rarr; 방향]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,5,0,0&quot;&gt;8~9&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,5,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,5,1,0&quot;&gt;비트/논리&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,5,2,0&quot;&gt;&amp;amp;, ^, `&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,6,0,0&quot;&gt;10~11&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,6,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,6,1,0&quot;&gt;삼항/대입&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,6,2,0&quot;&gt;?: (조건) &amp;rarr; =, +=, -=, *=, /= 등 [&amp;larr; 방향]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,7,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,7,0,0&quot;&gt;12&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,7,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,7,1,0&quot;&gt;순서&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,7,2,0&quot;&gt;, (콤마) [&amp;rarr; 방향]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;8. 운영체제 핵심: UNIX 및 프로세스 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;UNIX의 구성 요소&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;커널(Kernel)&lt;/b&gt;: 하드웨어 보호 및 프로그램-하드웨어 간 인터페이스 역할을 하며 프로세스, 기억장치, 파일을 관리&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0&quot;&gt;쉘(Shell)&lt;/b&gt;: 사용자의 명령을 해석하여 커널에 전달하는 시스템과 사용자 간 인터페이스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;프로세스 상태 전이 및 스레드&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;주요 용어&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,1,0,0&quot;&gt;디스패치(Dispatch)&lt;/b&gt;: 준비(Ready) 상태의 프로세스가 실행(Run) 상태로 바뀌는 과정&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,1,1,0&quot;&gt;문맥 교환(Context Switching)&lt;/b&gt;: 이전 프로세스의 상태를 보관하고 다음 프로세스의 레지스터를 적재하는 과정.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;스레드(Thread)&lt;/b&gt;: 프로세스 내의 작업 단위로, 다중 스레드 사용 시 병행성이 향상되고 응답 시간이 단축됨&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;9. 기억장치 배치 전략 및 기타&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0&quot;&gt;배치 전략&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,1,0,0&quot;&gt;First Fit(최초 적합)&lt;/b&gt;: 첫 번째 가용 영역에 배치.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,1,1,0&quot;&gt;Best Fit(최적 적합)&lt;/b&gt;: 단편화를 최소화하는 공간에 배치.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,1,2,0&quot;&gt;Worst Fit(최악 적합)&lt;/b&gt;: 단편화가 가장 많이 남는 공간에 배치.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,1,0&quot;&gt;가비지 컬렉터(Garbage Collector)&lt;/b&gt;: 더 이상 사용되지 않는 객체(변수)를 메모리에서 자동으로 제거한다&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,2,0&quot;&gt;예외 처리(Exception)&lt;/b&gt;: 하드웨어 문제나 사용자 입력 실수 등 비정상적인 실행 상태에 대비하는 프로세스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;10. 스크립트 언어 특징&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;컴파일 단계 없이 실행되는 언어들로 웹 개발 및 시스템 자동화에 쓰인다.&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;21&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;언어&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0,0&quot;&gt;Javascript&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,1,1,0&quot;&gt;웹페이지 동작 제어를 위한 클라이언트용 언어&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,0,0&quot;&gt;Python&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,2,1,0&quot;&gt;인터프리터 방식의 객체지향 언어로 이식성이 높고 동적 타이핑 지원&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,3,0,0&quot;&gt;JSP / ASP&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,3,1,0&quot;&gt;서버 측에서 동적 페이지를 만들기 위한 자바 기반(JSP) 및 MS 기반(ASP) 언어&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,4,0,0&quot;&gt;쉘 스크립트&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,4,1,0&quot;&gt;유닉스/리눅스 쉘 명령의 조합으로 컴파일 없이 빠른 실행 가능 (.sh)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;예외 처리 및 가비지 컬렉터&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,0,0&quot;&gt;예외 처리 (Exception)&lt;/b&gt;: 하드웨어 문제, 사용자 입력 실수 등으로 프로그램이 비정상 실행될 때를 대비한 처리 프로세스&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0&quot;&gt;가비지 컬렉터 (Garbage Collector)&lt;/b&gt;: 선언 후 더 이상 사용되지 않는 객체를 메모리에서 자동으로 제거해주는 모듈.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;CSMA/CA&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;25&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,0,0&quot;&gt;무선 랜(Wireless LAN)&lt;/b&gt; 환경에서 데이터 전송 충돌을 피하기 위해 매체가 비어있음을 확인한 후 전송하는 방식.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;11. 교착상태 (Dead Lock)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;둘 이상의 프로세스가 서로 자원을 점유한 채 상대방의 자원을 요구하며 무한정 대기하는 상태&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;이 4가지가 &lt;b data-index-in-node=&quot;7&quot; data-path-to-node=&quot;5&quot;&gt;모두&lt;/b&gt; 만족되어야 교착상태가 발생한다.&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;상호 배제(Mutual Exclusion):&lt;/b&gt; 한 번에 한 프로세스만 자원 사용 가능.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;점유 및 대기(Hold and Wait):&lt;/b&gt; 자원을 가진 채 다른 자원을 기다림.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0&quot;&gt;비선점(Non-preemption):&lt;/b&gt; 타인에게 할당된 자원을 강제로 뺏을 수 없음.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,0&quot;&gt;환형 대기(Circular Wait):&lt;/b&gt; 프로세스들이 원형으로 서로의 자원을 대기함.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;교착상태 해결 방법&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,0,0&quot;&gt;예방(Prevention):&lt;/b&gt; 4가지 조건 중 하나를 사전에 제거 (자원 낭비 심함).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0&quot;&gt;회피(Avoidance):&lt;/b&gt; 은행원 알고리즘(Banker&amp;rsquo;s Algorithm)을 사용하여 안전한 상태일 때만 자원 할당.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,0&quot;&gt;발견(Detection):&lt;/b&gt; 시스템을 점검하여 교착상태인 프로세스 찾음.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,3,0&quot;&gt;회복(Recovery):&lt;/b&gt; 프로세스 종료 또는 자원 선점.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;12. 기억장치 관리 전략&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;페이지 교체 알고리즘&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;주기억장치가 꽉 찼을 때 어떤 페이지를 내보낼지 결정하는 방법&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;OPT (최적 교체):&lt;/b&gt; 향후 가장 오랫동안 사용되지 않을 페이지 교체 (이론적 최적).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0&quot;&gt;FIFO:&lt;/b&gt; 가장 먼저 들어온 페이지를 교체.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,0&quot;&gt;LRU (Least Recently Used):&lt;/b&gt; 최근에 가장 오랫동안 사용하지 않은 페이지 교체.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,3,0&quot;&gt;LFU (Least Frequently Used):&lt;/b&gt; 참조 횟수가 가장 적은 페이지 교체.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스래싱(Thrashing)과 Locality&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;스래싱:&lt;/b&gt; 페이지 부재가 너무 자주 발생하여 CPU가 실제 작업보다 페이지 교체에 더 많은 시간을 쓰는 성능 저하 현상.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0&quot;&gt;Locality (국부성):&lt;/b&gt; 프로세스가 특정 시간 동안 메모리의 일부 영역만 집중 참조하는 성질.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,1,0,0&quot;&gt;시간 구역성:&lt;/b&gt; 최근 참조된 곳을 다시 참조 (Loop, Stack 등).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,1,1,0&quot;&gt;공간 구역성:&lt;/b&gt; 인접한 곳을 참조 (Array, 순차 실행 등).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,0&quot;&gt;워킹셋 (Working Set):&lt;/b&gt; 자주 참조하는 페이지 묶음을 메모리에 상주시켜 스래싱 방지.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;페이징(Paging) vs 세그먼테이션(Segmentation)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;페이징:&lt;/b&gt; 프로그램을 &lt;b data-index-in-node=&quot;11&quot; data-path-to-node=&quot;17,0,0&quot;&gt;고정 크기&lt;/b&gt;로 분할. &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;17,0,0&quot;&gt;내부 단편화&lt;/b&gt; 발생 가능.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;세그먼테이션:&lt;/b&gt; 프로그램을 논리적 단위(가변 크기) 로 분할. &lt;b data-index-in-node=&quot;37&quot; data-path-to-node=&quot;17,1,0&quot;&gt;외부 단편화&lt;/b&gt; 발생 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;13. 프로그래밍 및 개발 언어 기초&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Java 접근 제어자 (Access Modifier)&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;21&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;제어자&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;접근 범위&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0,0&quot;&gt;Public&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,1,1,0&quot;&gt;누구나 접근 가능 (클래스 내부, 패키지 내부/외부)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,0,0&quot;&gt;Protected&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,2,1,0&quot;&gt;같은 패키지 내, 혹은 상속받은 자식 클래스에서 접근 가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,3,0,0&quot;&gt;Default&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,3,1,0&quot;&gt;같은 패키지 내부에서만 접근 가능 (별도 키워드 없음)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,4,0,0&quot;&gt;Private&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;21,4,1,0&quot;&gt;해당 클래스(객체) 내부에서만 접근 가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;C언어 표준 라이브러리&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;23&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;헤더 파일&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 함수&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,1,0,0&quot;&gt;stdio.h&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,1,1,0&quot;&gt;printf, scanf&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,1,2,0&quot;&gt;데이터 입출력&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,2,0,0&quot;&gt;math.h&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,2,1,0&quot;&gt;sqrt, pow, abs&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,2,2,0&quot;&gt;수학적 연산&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,3,0,0&quot;&gt;string.h&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,3,1,0&quot;&gt;strlen, strcpy, strcmp&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,3,2,0&quot;&gt;문자열 처리&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23,4,0,0&quot;&gt;stdlib.h&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,4,1,0&quot;&gt;malloc, free, rand, atoi&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,4,2,0&quot;&gt;메모리 동적 할당, 난수, 형 변환&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;14. UNIX / LINUX 주요 명령어&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;파일 및 디렉터리:&lt;/b&gt; ls(목록), cp(복사), rm(삭제), chmod(권한 설정), chown(소유자 변경).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;프로세스 및 시스템:&lt;/b&gt; fork(프로세스 생성), exec(수행), wait(대기), cat(내용 출력), fsck(시스템 검사).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;15. 기타 핵심 개념&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;29&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,0,0&quot;&gt;배치 프로그램(Batch Program):&lt;/b&gt; 사용자 개입 없이 대량의 데이터를 일괄 처리하는 프로그램 (필수 요소: 대용량, 자동화, 안정성, 성능, 견고성).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,1,0&quot;&gt;버퍼 오버플로(Buffer Overflow):&lt;/b&gt; 할당된 메모리 범위를 넘어선 데이터 입력으로 인해 발생하는 보안 취약점.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,2,0&quot;&gt;변수 명명 규칙:&lt;/b&gt; 영문, 숫자, _ 사용 가능 / 첫 글자 숫자 불가 / 공백 및 예약어 사용 불가.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>정보처리기사</category>
      <author>비숑주인</author>
      <guid isPermaLink="true">https://his0si.tistory.com/290</guid>
      <comments>https://his0si.tistory.com/290#entry290comment</comments>
      <pubDate>Sat, 24 Jan 2026 01:39:31 +0900</pubDate>
    </item>
    <item>
      <title>3단원 데이터베이스 구축 개념 요약</title>
      <link>https://his0si.tistory.com/289</link>
      <description>&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. 데이터베이스 설계 단계&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;설계 순서는 &lt;b data-index-in-node=&quot;7&quot; data-path-to-node=&quot;3&quot;&gt;개념 &amp;rarr; 논리 &amp;rarr; 물리&lt;/b&gt; 순&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;4&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 활동 및 특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0,0&quot;&gt;개념적 설계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,1,1,0&quot;&gt;사용자 요구사항 분석 후 &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;4,1,1,0&quot;&gt;E-R 다이어그램&lt;/b&gt; 작성, DBMS 독립적 스키마 설계&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0,0&quot;&gt;논리적 설계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,2,1,0&quot;&gt;DBMS에 맞는 논리적 구조(테이블)로 매핑, &lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;4,2,1,0&quot;&gt;정규화&lt;/b&gt;, 트랜잭션 인터페이스 설계&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,0,0&quot;&gt;물리적 설계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,3,1,0&quot;&gt;특정 DBMS의 특성 고려, &lt;b data-index-in-node=&quot;16&quot; data-path-to-node=&quot;4,3,1,0&quot;&gt;인덱스/뷰/파티션&lt;/b&gt; 설계, 성능 향상을 위한 &lt;b data-index-in-node=&quot;40&quot; data-path-to-node=&quot;4,3,1,0&quot;&gt;반정규화&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;스키마 (Schema)&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 정의한 것&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,0,0&quot;&gt;개념 스키마 (Conceptual Schema):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자와 DB 관리자 관점의 스키마로 데이터베이스 전체를 정의&amp;nbsp;&lt;/li&gt;
&lt;li&gt;데이터 개체, 관계, 제약 조건, 접근 권한, 무결성 규칙을 명세&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0&quot;&gt;내부 스키마 (Internal Schema):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DB 설계자와 개발자 관점의 스키마&amp;nbsp;&lt;/li&gt;
&lt;li&gt;개념 스키마를 물리적 저장장치에 구현하는 방법을 정의하며, 물리적 구조와 내부 레코드의 물리적 순서를 포함&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0&quot;&gt;외부 스키마 (External Schema):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자 관점의 스키마로, 사용자나 프로그램마다 다양한 형태의 논리적 구조로 존재&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;E-R 다이어그램(Entity-Relationship Diagram) 표기법&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;8&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;기호&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;상세 설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0,0&quot;&gt;사각형&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,1,0&quot;&gt;개체(Entity)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,2,0&quot;&gt;현실 세계의 객체나 개념&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,0,0&quot;&gt;마름모&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,1,0&quot;&gt;관계(Relationship)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,2,0&quot;&gt;개체 간의 연관성&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,3,0,0&quot;&gt;타원&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,3,1,0&quot;&gt;속성(Attribute)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,2,0&quot;&gt;개체가 가진 성질이나 상태&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,4,0,0&quot;&gt;밑줄 타원&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,4,1,0&quot;&gt;기본키(Primary Key)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,4,2,0&quot;&gt;개체를 유일하게 식별하는 속성&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,5,0,0&quot;&gt;이중 타원&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,5,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,5,1,0&quot;&gt;다중값 속성&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,5,2,0&quot;&gt;하나의 개체가 여러 값을 가질 수 있는 속성&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,6,0,0&quot;&gt;실선&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,6,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,6,1,0&quot;&gt;연결&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,6,2,0&quot;&gt;개체와 속성, 개체와 관계를 연결&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgDcAh/dJMcafFpmUI/Q0gW3eNUcc9TCpfv03wueK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgDcAh/dJMcafFpmUI/Q0gW3eNUcc9TCpfv03wueK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgDcAh/dJMcafFpmUI/Q0gW3eNUcc9TCpfv03wueK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgDcAh%2FdJMcafFpmUI%2FQ0gW3eNUcc9TCpfv03wueK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;530&quot; height=&quot;152&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2. 관계형 데이터베이스의 구조 및 특징&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,0,0&quot;&gt;속성 (Attribute):&lt;/b&gt; 열(Column), 필드. 파일 구조의 항목에 해당. (&lt;b data-index-in-node=&quot;47&quot; data-path-to-node=&quot;8,0,0&quot;&gt;Degree&lt;/b&gt;: 속성의 개수)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0&quot;&gt;튜플 (Tuple):&lt;/b&gt; 행(Row), 레코드. (&lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;8,1,0&quot;&gt;Cardinality&lt;/b&gt;: 튜플의 개수)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,2,0&quot;&gt;도메인 (Domain):&lt;/b&gt; 하나의 속성이 가질 수 있는 원자값들의 집합.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;릴레이션의 특징&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;튜플은 모두 상이하며 순서가 무관함.&lt;/li&gt;
&lt;li&gt;속성 간의 순서는 중요하지 않음.&lt;/li&gt;
&lt;li&gt;모든 속성 값은 분해 불가능한 **원자 값(Atomic Value)**이어야 함.&lt;/li&gt;
&lt;li&gt;기본키(PK)는 Null 값을 가질 수 없음 (&lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;10,3,0&quot;&gt;개체 무결성&lt;/b&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. 키(Key)와 무결성 제약조건&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;데이터의 정확성과 일관성을 유지하기 위한 필수 개념&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;키의 분류&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;후보키 (Candidate Key):&lt;/b&gt; 유일성과 최소성을 모두 만족하는 키.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0&quot;&gt;기본키 (Primary Key):&lt;/b&gt; 후보키 중 선정된 키 (Null 불가, 중복 불가).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,0&quot;&gt;대체키 (Alternate Key):&lt;/b&gt; 후보키 중 기본키를 제외한 나머지 키.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,3,0&quot;&gt;슈퍼키 (Super Key):&lt;/b&gt; 유일성은 만족하지만 최소성은 만족하지 못하는 키.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,4,0&quot;&gt;외래키 (Foreign Key):&lt;/b&gt; 타 릴레이션의 기본키를 참조하는 속성.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;무결성 종류&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;개체 무결성:&lt;/b&gt; 기본키는 Null이나 중복값을 가질 수 없음.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;참조 무결성:&lt;/b&gt; 외래키 값은 참조하는 릴레이션의 기본키 값과 같거나 Null이어야 함.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,2,0&quot;&gt;도메인 무결성:&lt;/b&gt; 특정 속성 값은 정의된 도메인 영역 내에 있어야 함.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4. 관계 대수 및 관계 해석&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0&quot;&gt;관계 대수:&lt;/b&gt; 무엇을 어떻게 유도할 것인지 명시하는 &lt;b data-index-in-node=&quot;28&quot; data-path-to-node=&quot;20,0,0&quot;&gt;절차적 언어&lt;/b&gt;.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,1,0,0&quot;&gt;Select (&lt;span data-index-in-node=&quot;8&quot; data-math=&quot;\sigma&quot;&gt;sigma&lt;/span&gt;):&lt;/b&gt; 행 추출 (수평 연산)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,1,1,0&quot;&gt;Project (&lt;span data-index-in-node=&quot;9&quot; data-math=&quot;\pi&quot;&gt;pi&lt;/span&gt;):&lt;/b&gt; 열 추출 (수직 연산)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,1,2,0&quot;&gt;Join (&lt;span data-index-in-node=&quot;6&quot; data-math=&quot;\bowtie&quot;&gt;bowtie&lt;/span&gt;):&lt;/b&gt; 공통 속성 중심 결합&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,1,3,0&quot;&gt;Division (&lt;span data-index-in-node=&quot;10&quot; data-math=&quot;\div&quot;&gt;div&lt;/span&gt;):&lt;/b&gt; 관련 튜플 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,1,0&quot;&gt;관계 해석:&lt;/b&gt; 무엇을 원하는지만 명시하는 &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;20,1,0&quot;&gt;비절차적 언어&lt;/b&gt;. (튜플 관계 해석, 도메인 관계 해석)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;5. 정규화 (Normalization)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;데이터 중복을 제거하여 &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;23&quot;&gt;이상(Anomaly) 현상&lt;/b&gt;을 방지하는 과정입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;24,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,0&quot;&gt;이상 현상 종류:&lt;/b&gt; 삽입 이상, 삭제 이상, 갱신 이상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;정규화 단계 (두문자: 도-부-이-결-다-조)&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;1NF (제1정규형):&lt;/b&gt; 모든 도메인이 &lt;b data-index-in-node=&quot;21&quot; data-path-to-node=&quot;26,0,0&quot;&gt;원자값&lt;/b&gt;으로 구성.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;2NF (제2정규형):&lt;/b&gt; &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;26,1,0&quot;&gt;부분 함수적 종속&lt;/b&gt; 제거 (완전 함수적 종속 만족).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,2,0&quot;&gt;3NF (제3정규형):&lt;/b&gt; &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;26,2,0&quot;&gt;이행적 함수적 종속&lt;/b&gt; 제거.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,3,0&quot;&gt;BCNF (보이스-코드 정규형):&lt;/b&gt; 모든 &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;26,3,0&quot;&gt;결정자가 후보키&lt;/b&gt;여야 함.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,4,0&quot;&gt;4NF (제4정규형):&lt;/b&gt; &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;26,4,0&quot;&gt;다치 종속&lt;/b&gt; 제거.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,5,0&quot;&gt;5NF (제5정규형):&lt;/b&gt; &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;26,5,0&quot;&gt;조인 종속&lt;/b&gt; 제거.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;6. 데이터 사전 (Data Dictionary)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;데이터베이스의 자원들을 효율적으로 관리하기 위해 다양한 객체 정보를 저장하는 시스템 테이블&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,0,0&quot;&gt;정의:&lt;/b&gt; 데이터베이스에 포함된 모든 객체(테이블, 뷰, 인덱스 등)에 대한 정의나 명세 정보를 유지 및 관리&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0&quot;&gt;메타데이터(Metadata):&lt;/b&gt; '데이터에 관한 데이터'인 메타데이터를 저장하고 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0&quot;&gt;특징:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자가 SQL문을 사용하여 내용을 검색(SELECT) 할 수는 있음.&lt;/li&gt;
&lt;li&gt;시스템이 자동으로 생성하고 유지하므로, 일반 사용자가 내용을 직접 &lt;b data-index-in-node=&quot;37&quot; data-path-to-node=&quot;4,2,1,1,0&quot;&gt;갱신(UPDATE, INSERT 등)하는 것은 불가능&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,0&quot;&gt;데이터 디렉터리(Data Directory):&lt;/b&gt; 데이터 사전에 수록된 데이터에 실제로 접근하는 데 필요한 위치 정보를 관리하는 장소 (시스템만 접근 가능)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;7. 트랜잭션 (Transaction)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 &lt;b data-index-in-node=&quot;38&quot; data-path-to-node=&quot;7&quot;&gt;작업의 단위&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;트랜잭션의 4대 특징 (ACID)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;9&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0,0&quot;&gt;원자성 (Atomicity)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,1,1,0&quot;&gt;연산이 DB에 모두 반영되거나(Commit), 전혀 반영되지 않아야(Rollback) 함.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,2,0,0&quot;&gt;일관성 (Consistency)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,2,1,0&quot;&gt;트랜잭션 수행 전과 후의 시스템 고정 요소는 항상 동일한 상태를 유지해야 함.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,3,0,0&quot;&gt;독립성 (Isolation)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,3,1,0&quot;&gt;둘 이상의 트랜잭션이 병행될 때, 어느 하나가 다른 트랜잭션의 연산에 끼어들 수 없음.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,4,0,0&quot;&gt;영속성 (Durability)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,4,1,0&quot;&gt;완료된 트랜잭션의 결과는 시스템에 장애가 발생하더라도 영구적으로 기록되어야 함.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;트랜잭션 제어어 (TCL)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0&quot;&gt;COMMIT:&lt;/b&gt; 트랜잭션 작업이 성공적으로 완료되었음을 선언하고 DB에 영구 반영하는 명령어&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0&quot;&gt;ROLLBACK:&lt;/b&gt; 트랜잭션이 비정상 종료되었을 때, 변경 작업을 취소하고 이전의 상태로 되돌리는 명령어&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;10. 인덱스 (Index)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;데이터 레코드에 빠르게 접근하거나 조회하기 위해 별도로 구성한 순서 데이터&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;특징:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스 내 테이블을 삭제하면 해당 테이블과 연결된 인덱스도 자동으로 삭제됨&amp;nbsp;&lt;/li&gt;
&lt;li&gt;데이터 수정이 빈번할 경우 인덱스 유지 비용으로 인해 성능이 저하될 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0&quot;&gt;주요 명령어:&lt;/b&gt; 생성 시 CREATE INDEX, 삭제 시 DROP INDEX를 사용함&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,0&quot;&gt;인덱스 종류:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,1,0,0&quot;&gt;클러스터드(Clustered):&lt;/b&gt; 물리적 순서와 인덱스 순서가 동일 (테이블당 1개).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,1,1,0&quot;&gt;넌클러스터드(Non-Clustered):&lt;/b&gt; 물리적 순서와 인덱스 순서가 다름 (테이블당 여러 개 가능).&lt;/li&gt;
&lt;li&gt;기타: 트리 및 함수 기반, 비트맵, 비트맵 조인, 도메인 인덱스 등.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;11. 뷰 (View)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;기본 테이블로부터 유도된 이름이 있는 &lt;b data-index-in-node=&quot;21&quot; data-path-to-node=&quot;3&quot;&gt;가상 테이블&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,0,0&quot;&gt;특징&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;논리적으로만 존재하며, 물리적인 저장 장치에는 실존하지 않음.&lt;/li&gt;
&lt;li&gt;기본 테이블이나 뷰가 삭제되면 이를 기초로 정의된 다른 뷰도 자동으로 삭제됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0&quot;&gt;장점&lt;/b&gt;: 논리적 데이터 독립성 제공, 데이터 보안 및 관리 용이.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0&quot;&gt;단점&lt;/b&gt;: &lt;b data-index-in-node=&quot;4&quot; data-path-to-node=&quot;4,2,0&quot;&gt;독립적인 인덱스를 가질 수 없음&lt;/b&gt;, ALTER 문을 통한 구조 변경 불가, 삽입/삭제/갱신 연산에 제약이 따른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;12. 병행 제어 (Concurrency Control)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;다중 프로그래밍 환경에서 여러 트랜잭션이 동시에 수행될 때 데이터베이스의 일관성을 유지하기 위한 기법&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;로킹 (Locking) 단위&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;트랜잭션이 접근하는 데이터를 잠가 다른 트랜잭션의 접근을 제어하는 기법의 대상 크기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0,0&quot;&gt;로킹 단위가 작을 때&lt;/b&gt;: 로크 수 증가 -&amp;gt; 오버헤드 증가 &lt;span data-index-in-node=&quot;41&quot; data-math=&quot;\rightarrow&quot;&gt;-&amp;gt;&amp;nbsp;&lt;/span&gt; &lt;b data-index-in-node=&quot;53&quot; data-path-to-node=&quot;10,0,0&quot;&gt;병행성(공유도) 증가&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0&quot;&gt;로킹 단위가 클 때&lt;/b&gt;: 로크 수 감소 -&amp;gt; 오버헤드 감소 -&amp;gt; &lt;b data-index-in-node=&quot;52&quot; data-path-to-node=&quot;10,1,0&quot;&gt;병행성(공유도) 감소&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;병행 제어 기법 종류&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;로킹 기법&lt;/b&gt;: 트랜잭션의 순차적 진행을 보장하여 일관성 유지.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0&quot;&gt;낙관적 검증&lt;/b&gt;: 일단 수행 후 종료 시점에 검증.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,2,0&quot;&gt;타임스탬프&lt;/b&gt;: 부여된 시간 순서에 따라 수행.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,3,0&quot;&gt;다중 버전 동시성 제어(MVCC)&lt;/b&gt;: 타임스탬프를 비교하여 최적의 버전을 선택.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;13. 데이터 회복 기법 (Recovery)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;트랜잭션 수행 중 장애 발생 시 데이터베이스를 이전의 정상 상태로 복구하는 기법.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0,0&quot;&gt;즉시 갱신&lt;/b&gt;: 변경 내용을 즉시 DB에 반영하며, 로그를 토대로 &lt;b data-index-in-node=&quot;35&quot; data-path-to-node=&quot;16,0,0&quot;&gt;Redo와 Undo를 모두 수행&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0&quot;&gt;지연 갱신&lt;/b&gt;: 부분 완료 전까지는 로그에만 기록하고 나중에 반영하며, &lt;b data-index-in-node=&quot;38&quot; data-path-to-node=&quot;16,1,0&quot;&gt;Undo 없이 Redo만 수행&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,2,0&quot;&gt;검사 시점(Checkpoint)&lt;/b&gt;: 특정 시점에 체크포인트를 설정하여 중간중간 저장&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,3,0&quot;&gt;그림자 페이징&lt;/b&gt;: 로그를 사용하지 않고 복제된 그림자 페이지를 이용해 회복&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;14. SQL (Structured Query Language)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;데이터베이스를 제어하고 조작하는 표준 언어&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① DDL (데이터 정의어)&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;구조를 생성, 변경, 삭제&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;5&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;명령어&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;기능&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 옵션 및 상세 내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0,0&quot;&gt;CREATE&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,1,0&quot;&gt;생성&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,2,0&quot;&gt;SCHEMA, DOMAIN, TABLE, VIEW, INDEX 등을 생성함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,2,0,0&quot;&gt;ALTER&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,2,1,0&quot;&gt;변경&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,2,0&quot;&gt;TABLE의 구조를 변경(컬럼 추가, 이름 변경 등)함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,3,0,0&quot;&gt;DROP&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,3,1,0&quot;&gt;삭제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;객체를 완전히 삭제함&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;- &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;5,3,2,2&quot;&gt;CASCADE&lt;/b&gt;: 참조하는 모든 개체를 함께 제거함&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;- &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;5,3,2,4&quot;&gt;RESTRICT&lt;/b&gt;: 다른 개체가 참조 중이면 삭제를 취소함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;② DML (데이터 조작어)&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;데이터를 조회, 삽입, 삭제, 갱신&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;9&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;명령어&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;기능&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 구문 및 조건식&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0,0&quot;&gt;SELECT&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,1,0&quot;&gt;조회&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;데이터를 검색함 (DISTINCT 사용 시 중복 제거 가능)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;- &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;9,1,2,2&quot;&gt;GROUP BY&lt;/b&gt;: 특정 속성별로 그룹화&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;- &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;9,1,2,4&quot;&gt;HAVING&lt;/b&gt;: 그룹화된 데이터의 조건 지정&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;- &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;9,1,2,6&quot;&gt;ORDER BY&lt;/b&gt;: 결과 정렬 (ASC 오름차순, DESC 내림차순)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,2,0,0&quot;&gt;INSERT&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,2,1,0&quot;&gt;삽입&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,2,2,0&quot;&gt;테이블에 새로운 튜플을 삽입함 (INSERT INTO ... VALUES ...)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,3,0,0&quot;&gt;DELETE&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,3,1,0&quot;&gt;삭제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,3,2,0&quot;&gt;테이블 내의 데이터를 삭제함 (DELETE FROM ... WHERE ...)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,4,0,0&quot;&gt;UPDATE&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,4,1,0&quot;&gt;갱신&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,4,2,0&quot;&gt;테이블의 데이터를 수정함 (UPDATE ... SET ... WHERE ...)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,5,0,0&quot;&gt;조건식&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,5,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,5,1,0&quot;&gt;연산자&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;- &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;9,5,2,0&quot;&gt;LIKE&lt;/b&gt;: 만능문자 활용 (%: 모든 글자, _: 한 글자)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;- &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;9,5,2,2&quot;&gt;BETWEEN&lt;/b&gt;: 특정 범위 내의 값 검색&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;- &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;9,5,2,4&quot;&gt;IS NULL&lt;/b&gt;: 빈 칸(Null)인 데이터 검색&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ DCL (데이터 제어어)&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;보안, 무결성, 회복, 병행 제어를 담당&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;13&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;명령어&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;기능&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;상세 설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0,0&quot;&gt;COMMIT&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,1,0&quot;&gt;반영&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,2,0&quot;&gt;트랜잭션의 작업이 정상적으로 완료되었음을 확정함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,0,0&quot;&gt;ROLLBACK&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,2,1,0&quot;&gt;취소&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,2,0&quot;&gt;트랜잭션이 비정상 종료 시 모든 변경 사항을 취소하고 원복함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,3,0,0&quot;&gt;SAVEPOINT&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,3,1,0&quot;&gt;저장점&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,3,2,0&quot;&gt;ROLLBACK 시 돌아갈 위치를 지정함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,4,0,0&quot;&gt;GRANT&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,4,1,0&quot;&gt;권한 부여&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,4,2,0&quot;&gt;특정 사용자에게 데이터베이스 사용 권한을 부여함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,5,0,0&quot;&gt;REVOKE&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,5,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,5,1,0&quot;&gt;권한 취소&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,5,2,0&quot;&gt;부여했던 사용자의 권한을 회수함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,6,0,0&quot;&gt;옵션&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,6,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,6,1,0&quot;&gt;권한 재부여&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,6,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,6,2,0&quot;&gt;WITH GRANT OPTION&lt;/b&gt;: 권한을 부여받은 사용자가 다른 사용자에게 권한을 다시 줄 수 있게 함&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;30&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;30&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;15. 분산 데이터베이스&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;31&quot; data-ke-size=&quot;size16&quot;&gt;물리적으로 분산된 다수의 컴퓨터에 저장되어 있으나, 사용자는 하나의 시스템처럼 인식하는 데이터베이스&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;32&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,0,0&quot;&gt;5대 목표(투명성)&lt;/b&gt;:
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;32,0,1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,0,1,0,0&quot;&gt;위치 투명성&lt;/b&gt;: 실제 물리적 위치를 몰라도 접근 가능.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,0,1,1,0&quot;&gt;중복 투명성&lt;/b&gt;: 데이터가 여러 곳에 중복되어도 하나의 데이터로 인식.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,0,1,2,0&quot;&gt;병행 투명성&lt;/b&gt;: 분산 트랜잭션들이 동시에 실행되어도 결과의 일관성 유지.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,0,1,3,0&quot;&gt;분할 투명성&lt;/b&gt;: 하나의 릴레이션이 분할되어도 사용자는 하나로 인식.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,0,1,4,0&quot;&gt;장애 투명성&lt;/b&gt;: 특정 지역 장애 발생 시에도 전체 시스템은 가동.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>정보처리기사</category>
      <author>비숑주인</author>
      <guid isPermaLink="true">https://his0si.tistory.com/289</guid>
      <comments>https://his0si.tistory.com/289#entry289comment</comments>
      <pubDate>Sat, 24 Jan 2026 01:38:48 +0900</pubDate>
    </item>
    <item>
      <title>2단원 소프트웨어 개발 개념 요약</title>
      <link>https://his0si.tistory.com/288</link>
      <description>&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. 선형 구조 (Linear Structure)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;데이터가 일직선으로 연결된 형태&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 1126px;&quot; border=&quot;1&quot; data-path-to-node=&quot;7&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 26px;&quot;&gt;
&lt;td style=&quot;height: 26px;&quot;&gt;&lt;span data-path-to-node=&quot;7,0,0,0&quot;&gt;구분&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 26px;&quot;&gt;&lt;span data-path-to-node=&quot;7,0,1,0&quot;&gt;주요 특징 및 내용&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 26px;&quot;&gt;&lt;span data-path-to-node=&quot;7,0,2,0&quot;&gt;비고 (추가 설명)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 183px;&quot;&gt;
&lt;td style=&quot;height: 183px;&quot;&gt;&lt;span data-path-to-node=&quot;7,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1,0,0&quot;&gt;배열 (Array)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 183px;&quot;&gt;&lt;span&gt;&amp;bull; 정적 구조 / 기억장소 추가 어려움 / 첨자 사용&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 반복적 데이터 처리 작업에 적합&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 데이터마다 동일 이름 변수 사용해 처리 간편&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 183px;&quot;&gt;&lt;span data-path-to-node=&quot;7,1,2,0&quot;&gt;인덱스를 통한 직접 접근이 가능해 속도가 매우 빠름&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 288px;&quot;&gt;
&lt;td style=&quot;height: 288px;&quot;&gt;&lt;span data-path-to-node=&quot;7,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,2,0,0&quot;&gt;스택 (Stack)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 288px;&quot;&gt;&lt;span&gt;&amp;bull; 리스트 한쪽 끝으로만 자료의 삽입/삭제&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;7,2,1,2&quot;&gt;후입선출 (Last-in-First-out, LIFO)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 인터럽트 처리 / 서브루틴 호출 작업에 활용&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;7,2,1,6&quot;&gt;Underflow&lt;/b&gt;: 삭제할 데이터가 없을 때 발생&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;7,2,1,8&quot;&gt;Overflow&lt;/b&gt;: 삽입할 공간이 없을 때 발생&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 288px;&quot;&gt;&lt;span data-path-to-node=&quot;7,2,2,0&quot;&gt;복귀 주소(Return Address) 저장 시 주로 사용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 105px;&quot;&gt;
&lt;td style=&quot;height: 105px;&quot;&gt;&lt;span data-path-to-node=&quot;7,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,3,0,0&quot;&gt;큐 (Queue)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 105px;&quot;&gt;&lt;span&gt;&amp;bull; 리스트 한쪽은 노드 삽입 / 반대쪽은 노드 삭제&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;7,3,1,2&quot;&gt;선입선출 (First-in-First-out, FIFO)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 105px;&quot;&gt;&lt;span data-path-to-node=&quot;7,3,2,0&quot;&gt;운영체제의 작업 스케줄링 등에 활용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 52px;&quot;&gt;
&lt;td style=&quot;height: 52px;&quot;&gt;&lt;span data-path-to-node=&quot;7,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,4,0,0&quot;&gt;데크 (Deque)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 52px;&quot;&gt;&lt;span data-path-to-node=&quot;7,4,1,0&quot;&gt;&amp;bull; 리스트 &lt;b data-index-in-node=&quot;6&quot; data-path-to-node=&quot;7,4,1,0&quot;&gt;양쪽 끝&lt;/b&gt;에서 삽입/삭제 가능&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 52px;&quot;&gt;&lt;span data-path-to-node=&quot;7,4,2,0&quot;&gt;스택과 큐의 장점을 모두 가짐&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 472px;&quot;&gt;
&lt;td style=&quot;height: 472px;&quot;&gt;&lt;span&gt;선형 리스트&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;(Linear List)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 472px;&quot;&gt;&lt;span&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,5,1,0&quot;&gt;[연속 리스트]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 자료구조가 연속되는 기억장소에 저장&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 데이터 중간 삽입 시 연속된 빈 공간 필요&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 삽입/삭제 시 자료의 이동 필요&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,5,1,9&quot;&gt;[연결 리스트]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 노드의 포인터 부분을 이용해 서로 연결&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 노드의 삽입/삭제 작업 용이&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 포인터가 필요해 기억 공간 효율 낮음&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; 포인터 찾는 시간 필요 &amp;rarr; 접근 속도 느림&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 472px;&quot;&gt;&lt;span data-path-to-node=&quot;7,5,2,0&quot;&gt;연속 리스트는 밀집 리스트라고도 하며, 연결 리스트는 노드(Data+Link)로 구성됨&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2. 비선형 구조 (Non-Linear Structure)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;데이터가 계층적이거나 망 형태로 구성된 형태&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;10&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,0,0,0&quot;&gt;구분&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,0,1,0&quot;&gt;주요 특징 및 내용&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,0,2,0&quot;&gt;비고 (추가 설명)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0,0&quot;&gt;트리 (Tree)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&amp;bull; 노드(Node)와 가지(Branch)로 구성된 그래프 (사이클 X)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;10,1,1,2&quot;&gt;차수(Degree)&lt;/b&gt;: 각 노드에서 뻗어 나온 가지 수&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;10,1,1,4&quot;&gt;트리의 차수&lt;/b&gt;: 각 노드의 차수 중 &lt;b data-index-in-node=&quot;21&quot; data-path-to-node=&quot;10,1,1,4&quot;&gt;최대 차수&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;10,1,1,6&quot;&gt;단말(Terminal)&lt;/b&gt;: 자식/Degree가 없는 노드&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,2,0&quot;&gt;족보나 조직도와 같은 계층 구조를 표현&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0,0&quot;&gt;그래프 (Graph)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;10,2,1,0&quot;&gt;방향 그래프&lt;/b&gt;: 정점 연결 선 방향 존재 / 최대 간선 수 &lt;span data-index-in-node=&quot;34&quot; data-math=&quot;n(n-1)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&amp;bull; &lt;b data-index-in-node=&quot;2&quot; data-path-to-node=&quot;10,2,1,2&quot;&gt;무방향 그래프&lt;/b&gt;: 방향 X / 최대 간선 수 &lt;span data-index-in-node=&quot;26&quot; data-math=&quot;n(n-1)/2&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;/2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,2,0&quot;&gt;정점(Vertex)과 간선(Edge)의 집합&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;빌드 자동화 도구&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;소스 코드를 소프트웨어로 변환하는 과정에 필요한 전처리, 컴파일 등의 작업을 수행하는 소프트웨어&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,1,0,0&quot;&gt;Ant&lt;/b&gt;: XML 기반의 자원 빌드 도구&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,1,1,0&quot;&gt;Maven&lt;/b&gt;: 의존성 관리를 제공하는 빌드 도구&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,1,2,0&quot;&gt;Gradle&lt;/b&gt;: 안드로이드 공식 빌드 도구로, Groovy나 Kotlin을 사용하여 유연한 스크립트 작성 가능&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,1,3,0&quot;&gt;Jenkins&lt;/b&gt;: 지속적 통합(CI)을 위한 대표적인 오픈소스 도구&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3.&amp;nbsp; 디지털 저작권 관리 (DRM)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;콘텐츠의 무단 사용을 막고 저작권자의 권리를 보호하는 기술&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;10&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구성 요소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0,0&quot;&gt;패키저 (Packager)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,1,0&quot;&gt;콘텐츠를 배포 가능한 형태로 암호화하는 프로그램&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0,0&quot;&gt;클리어링 하우스&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,1,0&quot;&gt;사용 권한, 라이선스 발급, 결제 관리 수행&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,3,0,0&quot;&gt;DRM 컨트롤러&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,3,1,0&quot;&gt;배포된 콘텐츠의 이용 권한을 통제하는 프로그램&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,4,0,0&quot;&gt;보안 컨테이너&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,4,1,0&quot;&gt;콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0&quot;&gt;DRM 기술 요소&lt;/b&gt;: 암호화, 키 관리, 식별 기술, 저작권 표현, 암호화 파일 생성, 정책 관리, 크랙 방지, 인증&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4. 소프트웨어 형상 관리 (SCM)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;개발 과정에서 SW 변경사항을 관리하기 위한 활동으로, 개발 전체 단계에 적용된다.&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;15&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;주요 역할&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0,0&quot;&gt;중요성&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,1,1,0&quot;&gt;변경사항 추적/통제, 무절제한 변경 방지, 개발 진행 이력 확인&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,0,0&quot;&gt;관리 역할&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,2,1,0&quot;&gt;배포본 관리 용이, 불필요한 소스 수정 제한, &lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;15,2,1,0&quot;&gt;여러 개발자 동시 개발&lt;/b&gt; 가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;형상 관리의 4가지 활동&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;17&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;17,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0,0&quot;&gt;형상 식별&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;17,1,1,0&quot;&gt;관리 대상에 이름/번호 부여 후 계층 구조로 구분 &amp;rarr; 수정/추적 용이&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;17,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,2,0,0&quot;&gt;형상 통제&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;17,2,1,0&quot;&gt;식별된 형상 항목에 대한 변경 요구 검토 (기준선 반영될 수 있게 함)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;17,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,3,0,0&quot;&gt;형상 감사&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;17,3,1,0&quot;&gt;**기준선(Baseline)**의 무결성 평가를 위해 확인/검증/검열 과정 진행&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;17,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,4,0,0&quot;&gt;형상 기록&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;17,4,1,0&quot;&gt;형상 식별/통제/감사 작업 결과를 기록&amp;middot;관리하고 보고서 작성&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0&quot;&gt;형상 관리 도구&lt;/b&gt;: CVS, SVN, Git&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;소프트웨어 버전 등록 용어&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;9&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0,0&quot;&gt;저장소 (Repository)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,1,1,0&quot;&gt;최신 버전 및 변경 내역 관련 정보가 저장되는 곳&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,2,0,0&quot;&gt;가져오기 (Import)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,2,1,0&quot;&gt;버전 관리가 미진행된 초기 저장소에 처음으로 파일을 복사&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,3,0,0&quot;&gt;체크아웃 (Check-out)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,3,1,0&quot;&gt;프로그램 수정을 위해 저장소에서 파일을 받아옴&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,4,0,0&quot;&gt;체크인 (Check-in)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,4,1,0&quot;&gt;수정한 파일을 저장소에 새로운 버전으로 갱신&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,5,0,0&quot;&gt;커밋 (Commit)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,5,1,0&quot;&gt;체크인 시 충돌(Conflict)이 발생하면 Diff 도구로 수정 후 갱신 완료&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,6,0,0&quot;&gt;동기화 (Update)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,6,1,0&quot;&gt;자신의 작업 공간을 저장소의 최신 버전 상태로 동기화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,7,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,7,0,0&quot;&gt;등록 과정&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,7,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,7,1,0&quot;&gt;가져오기 &amp;rarr; 인출(Check-out) &amp;rarr; 커밋 &amp;rarr; 동기화 &amp;rarr; 차이&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;소프트웨어 버전 관리 도구 분류&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;11&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;대표 예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0,0&quot;&gt;공유 폴더&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,1,0&quot;&gt;로컬 컴퓨터 내 공유 폴더에 저장/관리. 개발 완료 파일을 매일 복사&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,2,0&quot;&gt;SCCS, RCS, PVCS, QVCS&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0,0&quot;&gt;클라이언트/서버&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,1,0&quot;&gt;중앙 시스템(서버)에서 관리. 서버 문제 시 협업 중단 위험&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,2,0&quot;&gt;CVS, SVN&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0,0&quot;&gt;분산 저장소&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,1,0&quot;&gt;원격과 로컬 저장소에 함께 저장. 로컬 반영(Commit) 후 원격 반영(Push)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,2,0&quot;&gt;Git&lt;/b&gt;, Bitkeeper&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;기업 애플리케이션 통합 (EAI) 방식&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;25&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,1,0,0&quot;&gt;Point to Point&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,1,1,0&quot;&gt;데이터 간 1:1 개별 연결. 변경 및 재사용 어려움&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,2,0,0&quot;&gt;Hub &amp;amp; Spoke&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,2,1,0&quot;&gt;중앙 허브를 통한 전송. 확장성 좋으나 허브 장애 시 전체 영향&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,3,0,0&quot;&gt;Message Bus&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,3,1,0&quot;&gt;미들웨어를 두고 처리. 확장성 및 대용량 처리에 유리&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;25,4,0,0&quot;&gt;Hybrid&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;25,4,1,0&quot;&gt;Hub &amp;amp; Spoke와 Message Bus 혼합. 병목 현상 최소화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;코드 품질 분석 도구&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;27&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,0,0&quot;&gt;정적 분석 (실행 X):&lt;/b&gt; pmd, cppcheck, checkstyle, SonarQube, Find Bug, cobertura&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,1,0&quot;&gt;동적 분석 (실행 O):&lt;/b&gt; Valance, Valgrind, Avalanche&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;5. 애플리케이션 테스트의 분류 및 원리&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;5&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;분류&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;세부 내용 및 예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0,0&quot;&gt;① 실행 여부&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,1,0&quot;&gt;정적 테스트&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,2,0&quot;&gt;프로그램 실행 X / 명세서, 소스 코드 분석 (워크스루, 인스펙션 등)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,2,1,0&quot;&gt;동적 테스트&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,2,0&quot;&gt;프로그램 실행 후 오류 검사 (화이트박스, 블랙박스 테스트)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,3,0,0&quot;&gt;② 테스트 기반&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,3,1,0&quot;&gt;명세 기반&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,2,0&quot;&gt;요구사항 명세 확인 (동등 분할, 경계값 분석 등 블랙박스 기법)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,4,1,0&quot;&gt;구조 기반&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,4,2,0&quot;&gt;내부 논리 흐름 확인 (구문, 결정, 조건 기반 등 화이트박스 기법)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,5,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,5,1,0&quot;&gt;경험 기반&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,5,2,0&quot;&gt;테스터의 경험 활용 (에러 추정, 체크리스트, 탐색적 테스팅)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,6,0,0&quot;&gt;③ 시각 기반&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,6,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,6,1,0&quot;&gt;검증(Verification)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,6,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,6,2,0&quot;&gt;개발자 시각&lt;/b&gt;: 제품 생산 과정 테스트 (단위, 통합, 시스템 테스트)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,7,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,7,1,0&quot;&gt;확인(Validation)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,7,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,7,2,0&quot;&gt;사용자 시각&lt;/b&gt;: 생산된 제품 결과 테스트 (인수 테스트 - 알파/베타)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,8,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,8,0,0&quot;&gt;④ 목적 기반&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,8,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,8,1,0&quot;&gt;회복/안전/강도/성능/구조/회귀/병행&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,8,2,0&quot;&gt;회복(정상 회복), 강도(과부하), 성능(응답 시간), 회귀(수정 후 결함 유무) 등&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;테스트 기본 원리&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0,0&quot;&gt;결함 존재 증명:&lt;/b&gt; 테스트는 결함이 있음을 밝히는 것이지, 없음을 증명할 수는 없음.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1,0&quot;&gt;완벽한 테스트 불가능:&lt;/b&gt; 무한한 경로와 입력은 테스트할 수 없음.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,2,0&quot;&gt;결함 집중 (Pareto 법칙):&lt;/b&gt; 20%의 모듈에서 전체 결함의 80%가 발생함.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,3,0&quot;&gt;살충제 패러독스:&lt;/b&gt; 동일한 테스트 케이스를 반복하면 새로운 버그를 발견할 수 없음.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,4,0&quot;&gt;오류-부재의 궤변:&lt;/b&gt; 결함이 없더라도 요구사항을 충족하지 못하면 품질이 낮은 것임.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,5,0&quot;&gt;Brooks의 법칙:&lt;/b&gt; 지연되는 프로젝트에 인력을 추가 투입하면 더 지연됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;6. 화이트박스 vs 블랙박스 테스트&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;11&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;화이트박스 테스트 (White Box)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;블랙박스 테스트 (Black Box)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0,0&quot;&gt;특징&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,1,0&quot;&gt;모듈 내부 구조/논리 경로 직접 점검&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,2,0&quot;&gt;내부 구조 모름 / 인터페이스 기능 점검&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0,0&quot;&gt;별칭&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,1,0&quot;&gt;구조 테스트&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,2,0&quot;&gt;기능 테스트&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0,0&quot;&gt;기법&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,1,0&quot;&gt;기초 경로 검사, 제어 구조 검사(조건, 루프, 자료 흐름)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,2,0&quot;&gt;동치 분할, 경계값 분석, 원인-효과 그래프, 오류 예측 등&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;7.&amp;nbsp; 개발 단계에 따른 테스트 (V-모델 연계)&lt;/p&gt;
&lt;div&gt;
&lt;div data-full-size-image-uri=&quot;https://encrypted-tbn2.gstatic.com/licensed-image?q=tbn:ANd9GcRO-HshDjXbrnzyKzLOh7_jROyc7s7oSbAljCal8U923eZ-iTV_2onHBn3t-3ZNoaMqLaen_VYQAF7NmRkyxuTbUZWJxDQ8zXsyH5glypZEkh71fBg&quot;&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3998&quot; data-origin-height=&quot;2697&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXWukh/dJMcabQwdyF/tHiDcWEwo4r2i5VdwroHs0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXWukh/dJMcabQwdyF/tHiDcWEwo4r2i5VdwroHs0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXWukh/dJMcabQwdyF/tHiDcWEwo4r2i5VdwroHs0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXWukh%2FdJMcabQwdyF%2FtHiDcWEwo4r2i5VdwroHs0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;620&quot; height=&quot;418&quot; data-origin-width=&quot;3998&quot; data-origin-height=&quot;2697&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;단위 테스트 (Unit):&lt;/b&gt; 최소 단위(모듈) 기반. 구조 기반(화이트박스) 및 기능성 우선.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0&quot;&gt;통합 테스트 (Integration):&lt;/b&gt; 모듈 통합 과정의 오류 탐지.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,1,0,0&quot;&gt;하향식 (Top-down):&lt;/b&gt; 상위 &amp;rarr; 하위. &lt;b data-index-in-node=&quot;25&quot; data-path-to-node=&quot;15,1,1,0,0&quot;&gt;스텁(Stub)&lt;/b&gt; 사용.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,1,1,0&quot;&gt;상향식 (Bottom-up):&lt;/b&gt; 하위 &amp;rarr; 상위. &lt;b data-index-in-node=&quot;26&quot; data-path-to-node=&quot;15,1,1,1,0&quot;&gt;클러스터&lt;/b&gt; 및 &lt;b data-index-in-node=&quot;33&quot; data-path-to-node=&quot;15,1,1,1,0&quot;&gt;드라이버(Driver)&lt;/b&gt; 사용.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,0&quot;&gt;시스템 테스트 (System):&lt;/b&gt; 실제 사용 환경과 유사한 환경에서 기능/비기능 점검.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,3,0&quot;&gt;인수 테스트 (Acceptance):&lt;/b&gt; 요구사항 충족 확인.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15,3,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,3,1,0,0&quot;&gt;알파:&lt;/b&gt; 통제된 환경(개발자+사용자) / &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;15,3,1,0,0&quot;&gt;베타:&lt;/b&gt; 통제되지 않은 환경(사용자)&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;7. 테스트 산출물 및 도구&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0,0&quot;&gt;테스트 케이스:&lt;/b&gt; 입력값, 실행 조건, 기대 결과 등으로 구성된 명세서.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,1,0&quot;&gt;테스트 시나리오:&lt;/b&gt; 테스트 케이스를 적용하는 구체적인 절차 문서.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,2,0&quot;&gt;테스트 오라클:&lt;/b&gt; 결과가 올바른지 판단하는 기준. (참, 샘플링, 휴리스틱, 일관성 오라클)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;테스트 하네스 (Test Harness)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0&quot;&gt;테스트 드라이버:&lt;/b&gt; 상향식 테스트에서 하위 모듈을 호출하는 도구.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0&quot;&gt;테스트 스텁:&lt;/b&gt; 하향식 테스트에서 하위 모듈 역할을 대신하는 가짜 모듈.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,0&quot;&gt;기타:&lt;/b&gt; 테스트 슈트(케이스 집합), 테스트 스크립트, 목 오브젝트(계획된 행위 수행 객체).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;8. 인터페이스 구현 및 데이터 전송&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;애플리케이션 간 데이터를 전송하고, 수신 측에서 이를 파싱(Parsing) 하여 해석하는 방식&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,0,0&quot;&gt;JSON (JavaScript Object Notation):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;속성-값 쌍(Attribute-Value Pairs)으로 구성된 데이터 오브젝트 전달용 표준 포맷&amp;nbsp;&lt;/li&gt;
&lt;li&gt;AJAX에서 주로 사용되며, XML을 대체하는 주요 포맷으로 자리 잡았다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0&quot;&gt;XML (eXtensible Markup Language):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTML의 비호환성과 SGML의 복잡성을 해결하기 위해 개발된 특수 목적의 마크업 언어&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,2,0&quot;&gt;AJAX (Asynchronous JavaScript and XML):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JavaScript를 사용한 &lt;b data-index-in-node=&quot;16&quot; data-path-to-node=&quot;5,2,1,0,0&quot;&gt;비동기 통신 기술&lt;/b&gt;로, 페이지 전체를 새로고침 하지 않고도 데이터를 주고받을 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0&quot;&gt;xUnit:&lt;/b&gt; Java, C++, .Net 등 다양한 언어를 지원하는 단위 테스트 프레임워크입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,1,0&quot;&gt;STAF:&lt;/b&gt; 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,2,0&quot;&gt;FitNesse:&lt;/b&gt; 웹 기반으로 테스트 케이스 설계, 실행, 결과 확인을 지원합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,3,0&quot;&gt;Selenium:&lt;/b&gt; 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 도구입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,4,0&quot;&gt;watir:&lt;/b&gt; Ruby 언어 기반의 애플리케이션 테스트 프레임워크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;9. 알고리즘 시간 복잡도 (Big-O)&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 132px;&quot; border=&quot;1&quot; data-path-to-node=&quot;16&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,0,0,0&quot;&gt;복잡도&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,0,1,0&quot;&gt;알고리즘 예시&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,0,2,0&quot;&gt;설명&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0,0&quot;&gt;&lt;span data-index-in-node=&quot;0&quot; data-math=&quot;O(1)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,1,1,0&quot;&gt;해시 함수&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,1,2,0&quot;&gt;자료 크기와 무관한 일정 속도&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,2,0,0&quot;&gt;&lt;span data-index-in-node=&quot;0&quot; data-math=&quot;O(\log_2 N)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;lo&lt;span&gt;g&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,2,1,0&quot;&gt;이진 탐색&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,2,2,0&quot;&gt;로그형 복잡도&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,3,0,0&quot;&gt;&lt;span data-index-in-node=&quot;0&quot; data-math=&quot;O(n)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,3,1,0&quot;&gt;순차 탐색&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,3,2,0&quot;&gt;입력 자료 크기에 정비례하는 선형 복잡도&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,4,0,0&quot;&gt;&lt;span data-index-in-node=&quot;0&quot; data-math=&quot;O(N \log_2 N)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;lo&lt;span&gt;g&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,4,1,0&quot;&gt;힙/합병(병합) 정렬&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,4,2,0&quot;&gt;선형 로그형 복잡도&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,5,0,0&quot;&gt;&lt;span data-index-in-node=&quot;0&quot; data-math=&quot;O(N^2)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,5,1,0&quot;&gt;선택/버블/삽입/퀵 정렬&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span data-path-to-node=&quot;16,5,2,0&quot;&gt;대부분 힙/합병보다 복잡도가 큼 (&lt;span data-index-in-node=&quot;19&quot; data-math=&quot;N^2 &amp;gt; N \log_2 N&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;lo&lt;span&gt;g&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px; background-color: #f6e199;&quot;&gt;10. 해싱 함수 종류 (Hash Function)&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;319&quot; data-start=&quot;72&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;125&quot; data-start=&quot;72&quot;&gt;&lt;b&gt;제산법&lt;/b&gt;&lt;br /&gt;주소 = 키 mod M&lt;br /&gt;&amp;rarr; 가장 많이 사용, M은 소수 권장&lt;/li&gt;
&lt;li data-end=&quot;183&quot; data-start=&quot;127&quot;&gt;&lt;b&gt;중첩법(폴딩법)&lt;/b&gt;&lt;br /&gt;키를 여러 부분으로 나누어 더하거나 XOR&lt;br /&gt;&amp;rarr; 긴 키에 사용&lt;/li&gt;
&lt;li data-end=&quot;225&quot; data-start=&quot;185&quot;&gt;&lt;b&gt;기수변환법&lt;/b&gt;&lt;br /&gt;키의 진수를 다른 진수로 변환 후 주소 계산&lt;/li&gt;
&lt;li data-end=&quot;281&quot; data-start=&quot;227&quot;&gt;&lt;b&gt;숫자분석법&lt;/b&gt;&lt;br /&gt;키의 숫자 분포를 분석해 균등한 자리 선택&lt;br /&gt;&amp;rarr; 사전 분석 필요&lt;/li&gt;
&lt;li data-end=&quot;319&quot; data-start=&quot;283&quot;&gt;&lt;b&gt;기타&lt;/b&gt;&lt;br /&gt;제곱법(Mid-square), 무작위법 등&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;342&quot; data-start=&quot;326&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;11. 알고리즘 설계 기법&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;628&quot; data-start=&quot;344&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;414&quot; data-start=&quot;344&quot;&gt;&lt;b&gt;분할 정복 (Divide and Conquer)&lt;/b&gt;&lt;br /&gt;문제를 분할 &amp;rarr; 해결 &amp;rarr; 결합&lt;br /&gt;예) 병합정렬, 퀵정렬&lt;/li&gt;
&lt;li data-end=&quot;490&quot; data-start=&quot;416&quot;&gt;&lt;b&gt;동적 계획법 (Dynamic Programming)&lt;/b&gt;&lt;br /&gt;부분 문제 결과를 저장&amp;middot;재사용&lt;br /&gt;예) 피보나치, 배낭 문제&lt;/li&gt;
&lt;li data-end=&quot;561&quot; data-start=&quot;492&quot;&gt;&lt;b&gt;그리디 (Greedy)&lt;/b&gt;&lt;br /&gt;매 단계에서 최적 선택&lt;br /&gt;예) 크루스칼, 프림&lt;br /&gt;⚠ 항상 최적해 보장 X&lt;/li&gt;
&lt;li data-end=&quot;628&quot; data-start=&quot;563&quot;&gt;&lt;b&gt;백트래킹 (Backtracking)&lt;/b&gt;&lt;br /&gt;모든 경우 탐색 + 가지치기&lt;br /&gt;예) N-Queen, 스도쿠&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;755&quot; data-start=&quot;653&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;681&quot; data-start=&quot;653&quot;&gt;DP &amp;harr; 분할정복: &lt;b&gt;중복 부분 문제 유무&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;709&quot; data-start=&quot;682&quot;&gt;그리디: &lt;b&gt;지역 최적 &amp;ne; 전체 최적 가능&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;735&quot; data-start=&quot;710&quot;&gt;백트래킹: &lt;b&gt;상태공간트리 + 가지치기&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;755&quot; data-start=&quot;736&quot;&gt;해싱 핵심: &lt;b&gt;충돌 최소화&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;58&quot; data-start=&quot;38&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;12. 통합 개발 환경 (IDE)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;256&quot; data-start=&quot;59&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;90&quot; data-start=&quot;59&quot;&gt;개발에 필요한 도구를 &lt;b&gt;하나의 인터페이스로 제공&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;189&quot; data-start=&quot;91&quot;&gt;주요 기능
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;189&quot; data-start=&quot;103&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;133&quot; data-start=&quot;103&quot;&gt;&lt;b&gt;Compile&lt;/b&gt;: 고급언어 &amp;rarr; 기계어 변환&lt;/li&gt;
&lt;li data-end=&quot;160&quot; data-start=&quot;136&quot;&gt;&lt;b&gt;Debugging&lt;/b&gt;: 오류 수정&lt;/li&gt;
&lt;li data-end=&quot;189&quot; data-start=&quot;163&quot;&gt;&lt;b&gt;Deployment&lt;/b&gt;: 사용자에게 전달&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;256&quot; data-start=&quot;190&quot;&gt;예: &lt;b&gt;이클립스(IBM), 비주얼 스튜디오(MS), Xcode(Apple), 안드로이드 스튜디오(Google)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;286&quot; data-start=&quot;263&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;13. 인스펙션 (Inspection)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;359&quot; data-start=&quot;287&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;308&quot; data-start=&quot;287&quot;&gt;개발 산출물 &lt;b&gt;정적 검토 기법&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;359&quot; data-start=&quot;309&quot;&gt;절차:&lt;br /&gt;&lt;b&gt;계획 &amp;rarr; 사전교육 &amp;rarr; 준비 &amp;rarr; 인스펙션 회의 &amp;rarr; 수정 &amp;rarr; 후속조치&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;390&quot; data-start=&quot;366&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;390&quot; data-start=&quot;366&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;14. 리팩토링 (Refactoring)&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;449&quot; data-start=&quot;391&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;414&quot; data-start=&quot;391&quot;&gt;&lt;b&gt;기능 변경 없이 내부 구조 개선&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;449&quot; data-start=&quot;415&quot;&gt;목적: 유지보수성 향상, 설계 이해 용이, 수정 비용 감소&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;470&quot; data-start=&quot;456&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;15. SW 구현 단계&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;499&quot; data-start=&quot;471&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;499&quot; data-start=&quot;471&quot;&gt;&lt;b&gt;코딩 계획 &amp;rarr; 코딩 &amp;rarr; 컴파일 &amp;rarr; 테스트&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;528&quot; data-start=&quot;506&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;528&quot; data-start=&quot;506&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;16. 제품 SW 패키징 시 고려사항&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;585&quot; data-start=&quot;529&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;537&quot; data-start=&quot;529&quot;&gt;보안&lt;/li&gt;
&lt;li data-end=&quot;551&quot; data-start=&quot;538&quot;&gt;사용자 편의성&lt;/li&gt;
&lt;li data-end=&quot;569&quot; data-start=&quot;552&quot;&gt;암호화 알고리즘 적용&lt;/li&gt;
&lt;li data-end=&quot;585&quot; data-start=&quot;570&quot;&gt;다양한 기기 연동&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;619&quot; data-start=&quot;592&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;17. 인터페이스 보안을 위한 네트워크 솔루션&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;654&quot; data-start=&quot;620&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;631&quot; data-start=&quot;620&quot;&gt;IPSec&lt;/li&gt;
&lt;li data-end=&quot;641&quot; data-start=&quot;632&quot;&gt;SSL&lt;/li&gt;
&lt;li data-end=&quot;654&quot; data-start=&quot;642&quot;&gt;S-HTTP&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;389&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lkiYX/dJMcaaYor2d/20XByt43IzcP3v1vELN3Ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lkiYX/dJMcaaYor2d/20XByt43IzcP3v1vELN3Ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lkiYX/dJMcaaYor2d/20XByt43IzcP3v1vELN3Ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlkiYX%2FdJMcaaYor2d%2F20XByt43IzcP3v1vELN3Ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;389&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;389&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;803&quot; data-start=&quot;757&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-end=&quot;50&quot; data-start=&quot;42&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;18. 정렬 방법&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;50&quot; data-start=&quot;42&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;81&quot; data-start=&quot;52&quot; data-ke-size=&quot;size16&quot;&gt;1. 선택 정렬 (Selection Sort)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;133&quot; data-start=&quot;82&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;103&quot; data-start=&quot;82&quot;&gt;&lt;b&gt;최소값을 찾아 앞자리와 교환&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;114&quot; data-start=&quot;104&quot;&gt;교환 횟수 적음&lt;/li&gt;
&lt;li data-end=&quot;133&quot; data-start=&quot;115&quot;&gt;시간복잡도: &lt;b&gt;O(n&amp;sup2;)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;75&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4Sf0N/dJMcadU4oSl/WvRCpYcdfDyGBBBHUY7Kk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4Sf0N/dJMcadU4oSl/WvRCpYcdfDyGBBBHUY7Kk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4Sf0N/dJMcadU4oSl/WvRCpYcdfDyGBBBHUY7Kk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4Sf0N%2FdJMcadU4oSl%2FWvRCpYcdfDyGBBBHUY7Kk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;480&quot; height=&quot;75&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;75&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;169&quot; data-start=&quot;140&quot; data-ke-size=&quot;size16&quot;&gt;2. 삽입 정렬 (Insertion Sort)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;243&quot; data-start=&quot;170&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;190&quot; data-start=&quot;170&quot;&gt;&lt;b&gt;앞부분은 정렬된 상태 유지&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;209&quot; data-start=&quot;191&quot;&gt;새 원소를 알맞은 위치에 삽입&lt;/li&gt;
&lt;li data-end=&quot;224&quot; data-start=&quot;210&quot;&gt;거의 정렬된 경우 빠름&lt;/li&gt;
&lt;li data-end=&quot;243&quot; data-start=&quot;225&quot;&gt;시간복잡도: &lt;b&gt;O(n&amp;sup2;)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jhb6V/dJMcaf6sCIP/bgSAHFXgt4ZVMF6QP5p6kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jhb6V/dJMcaf6sCIP/bgSAHFXgt4ZVMF6QP5p6kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jhb6V/dJMcaf6sCIP/bgSAHFXgt4ZVMF6QP5p6kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJhb6V%2FdJMcaf6sCIP%2FbgSAHFXgt4ZVMF6QP5p6kK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;480&quot; height=&quot;71&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;71&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;276&quot; data-start=&quot;250&quot; data-ke-size=&quot;size16&quot;&gt;3. 버블 정렬 (Bubble Sort)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;343&quot; data-start=&quot;277&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;298&quot; data-start=&quot;277&quot;&gt;&lt;b&gt;인접한 두 값 비교 후 교환&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;314&quot; data-start=&quot;299&quot;&gt;큰 값이 오른쪽으로 이동&lt;/li&gt;
&lt;li data-end=&quot;324&quot; data-start=&quot;315&quot;&gt;가장 비효율적&lt;/li&gt;
&lt;li data-end=&quot;343&quot; data-start=&quot;325&quot;&gt;시간복잡도: &lt;b&gt;O(n&amp;sup2;)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;72&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QJewF/dJMcagK5zFv/3NrnJVJcUkRfakmI8gqyO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QJewF/dJMcagK5zFv/3NrnJVJcUkRfakmI8gqyO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QJewF/dJMcagK5zFv/3NrnJVJcUkRfakmI8gqyO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQJewF%2FdJMcagK5zFv%2F3NrnJVJcUkRfakmI8gqyO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;479&quot; height=&quot;72&quot; data-origin-width=&quot;479&quot; data-origin-height=&quot;72&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>정보처리기사</category>
      <author>비숑주인</author>
      <guid isPermaLink="true">https://his0si.tistory.com/288</guid>
      <comments>https://his0si.tistory.com/288#entry288comment</comments>
      <pubDate>Sat, 24 Jan 2026 01:38:23 +0900</pubDate>
    </item>
    <item>
      <title>1단원 소프트웨어 설계 개념 요약</title>
      <link>https://his0si.tistory.com/287</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;1. 소프트웨어 생명주기 (Software Development Life Cycle, SDLC) 모델&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소프트웨어를 개발하기 위한 과정을 단계별로 나눈 모델&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;모델명&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 특징&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;핵심 키워드&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0,0&quot;&gt;폭포수 (Waterfall)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;선형 순차적 개발, 가장 오래된 고전적/전통적 모임&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,2,0&quot;&gt;Step-by-Step&lt;/b&gt;, 하향식&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0,0&quot;&gt;HIPO (Hierarchy Input Process Output)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;하향식 설계 방식으로 시스템의 기능을 입력-처리-출력으로 표현&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,2,0&quot;&gt;가시적/총체적/세부적 도표&lt;/b&gt;, 유지보수 간단&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,0,0&quot;&gt;프로토타입 (Prototype)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;고객의 요구사항(Need) 파악을 위해 &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;6,3,1,0&quot;&gt;견본/시제품&lt;/b&gt; 제작&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,2,0&quot;&gt;인터페이스 중심&lt;/b&gt;, 요구사항 변경 용이&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,4,0,0&quot;&gt;나선형 (Spiral)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,1,0&quot;&gt;폭포수 + 프로토타입 + &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;6,4,1,0&quot;&gt;위험 분석&lt;/b&gt; 기능 추가&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,4,2,0&quot;&gt;위험 관리/최소화&lt;/b&gt;, 점진적 반복&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,5,0,0&quot;&gt;애자일 (Agile)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,5,1,0&quot;&gt;짧은 주기(&lt;b data-index-in-node=&quot;6&quot; data-path-to-node=&quot;6,5,1,0&quot;&gt;Sprint/Iteration&lt;/b&gt;)를 반복하며 유연한 대응&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,5,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,5,2,0&quot;&gt;고객 상호작용 중시&lt;/b&gt;, XP/Scrum/Lean&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;나선형 모델의 4단계 순서&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;계획 수립 &amp;rarr; 위험 분석 &amp;rarr; 개발 및 검증 &amp;rarr; 고객 평가&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 하향식설계(Top-down) :&lt;/b&gt; &lt;b&gt;절차지향(순차적)&lt;/b&gt; / 최상위 컴포넌트 설계 후 하위 기능 부여 &amp;rarr; 테스트 초기부터 사용자에게 시스템 구조제시 가능&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;상향식설계(Bottom-up):&lt;/b&gt; &lt;b&gt;객체지향&lt;/b&gt;/ 최하위 모듈 먼저 설계 후 이들을 결합하고 검사 &amp;rarr; 기능 추가 어려움&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;Component : 명백한 역할을 가지며 재사용되는 모든 단위 /&amp;nbsp; 인터페이스 통해 접근 가능&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;2. 애자일(Agile) 방법론 상세&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스크럼(Scrum) 기법의 역할&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,0,0&quot;&gt;제품 책임자(PO):&lt;/b&gt; 백로그(Backlog) 작성, 우선순위 지정, 의사결정권자.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0&quot;&gt;스크럼 마스터(SM):&lt;/b&gt; 가이드 및 조언자, 장애 요소 해결, 객관적 시각 유지.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,2,0&quot;&gt;개발팀(DT):&lt;/b&gt; 실제 개발 수행 주체. (우선순위 지정 불가)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 스크럼개발프로세스 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프린트 계획 회의 &amp;rarr; 스프린트(개발 기간 2~4주 단기간 목표) &amp;rarr; 일일 스크럼 회의 &amp;rarr; 스프린트 검토 회의 &amp;rarr; 스프린트 회고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;익스트림 프로그래밍 (XP)&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;고객 참여와 신속한 개발을 강조하는 방법론&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;5대 핵심 가치:&lt;/b&gt; 용기, 단순성, 의사소통, 피드백, 존중&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;주요 원리:&lt;/b&gt; * &lt;b data-index-in-node=&quot;9&quot; data-path-to-node=&quot;17,1,0&quot;&gt;TDD(테스트 주도 개발):&lt;/b&gt; 테스트 코드를 먼저 작성.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,1,0,0&quot;&gt;Pair Programming:&lt;/b&gt; 두 명이 짝을 지어 코딩.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,1,1,0&quot;&gt;Refactoring:&lt;/b&gt; 기능을 유지하며 코드 구조 개선.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,1,2,0&quot;&gt;Collective Ownership:&lt;/b&gt; 코드에 대한 공동 소유권.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;3. 요구사항 정의 및 분석&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;시스템이 제공해야 할 서비스와 제약 조건을 정의하는 단계&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;요구사항의 유형&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;22&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,0,0&quot;&gt;기능적 요구사항:&lt;/b&gt; 시스템이 &lt;b data-index-in-node=&quot;15&quot; data-path-to-node=&quot;22,0,0&quot;&gt;무엇을 하는지&lt;/b&gt; (예: 입금, 출금, 조회 기능)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,1,0&quot;&gt;비기능적 요구사항:&lt;/b&gt; &lt;b data-index-in-node=&quot;11&quot; data-path-to-node=&quot;22,1,0&quot;&gt;어떻게 동작하는지&lt;/b&gt; (예: 성능, 보안, 가용성, 3초 이내 응답)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;요구사항 개발 프로세스&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.1163%;&quot;&gt;&lt;b&gt;명칭&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 42.5581%;&quot;&gt;&lt;b&gt;주요 활동 및 내용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30%;&quot;&gt;&lt;b&gt;관련 기법(Ex)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0,0&quot;&gt;1단계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.1163%;&quot;&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,0&quot;&gt;도출 (Elicitation)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 42.5581%;&quot;&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;이해관계자로부터 요구사항을 수집하고 식별하는 과정&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30%;&quot;&gt;&lt;span data-path-to-node=&quot;6,1,3,0&quot;&gt;인터뷰, 설문, 브레인스토밍, 워크숍&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0,0&quot;&gt;2단계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.1163%;&quot;&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,1,0&quot;&gt;분석 (Analysis)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 42.5581%;&quot;&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;요구사항의 타당성 조사 및 비용, 일정 등 제약사항 설정&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30%;&quot;&gt;&lt;span data-path-to-node=&quot;6,2,3,0&quot;&gt;개념 모델링, 할당, 협상, 정형 분석&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,0,0&quot;&gt;3단계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.1163%;&quot;&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,3,1,0&quot;&gt;명세 (Specification)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 42.5581%;&quot;&gt;&lt;span data-path-to-node=&quot;6,3,2,0&quot;&gt;분석된 요구사항을 체계적으로 문서화 (요구사항 명세서 작성)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30%;&quot;&gt;&lt;span data-path-to-node=&quot;6,3,3,0&quot;&gt;자연어 명세, 정형 명세&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 7.2093%;&quot;&gt;&lt;span data-path-to-node=&quot;6,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,4,0,0&quot;&gt;4단계&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.1163%;&quot;&gt;&lt;span data-path-to-node=&quot;6,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,4,1,0&quot;&gt;확인/검증 (Validation)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 42.5581%;&quot;&gt;&lt;span data-path-to-node=&quot;6,4,2,0&quot;&gt;명세서가 정확하고 완전하게 작성되었는지 검토 및 승인&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30%;&quot;&gt;&lt;span data-path-to-node=&quot;6,4,3,0&quot;&gt;요구사항 검토, 프로토타이핑, 모델 검증&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;요구사항 분석 기법&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;요구사항의 상충 관계를 해결하고 구체화하는 단계에서 사용됨&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0&quot;&gt;분류:&lt;/b&gt; 요구사항을 기능/비기능, 우선순위 등에 따라 그룹화.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0&quot;&gt;개념 모델링:&lt;/b&gt; 실세계를 추상화하여 모델(예: UML)로 표현.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0&quot;&gt;할당:&lt;/b&gt; 요구사항을 충족시키기 위한 구성 요소를 식별.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,3,0&quot;&gt;협상:&lt;/b&gt; 서로 충돌하는 요구사항이 있을 경우 우선순위를 조절.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,4,0&quot;&gt;정형 분석:&lt;/b&gt; 구문과 의미가 정의된 언어를 사용하여 수학적으로 분석.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;요구사항 확인(검증) 기법&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;작성된 요구사항 명세서가 사용자 의도와 일치하는지 점검&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;14&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;기법명&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0,0&quot;&gt;요구사항 검토&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,1,1,0&quot;&gt;문서화된 요구사항을 훑어보며 오류를 찾는 가장 일반적인 방법&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,2,0,0&quot;&gt;프로토타이핑&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,2,1,0&quot;&gt;시제품을 제작하여 사용자 피드백을 통해 요구사항을 지속 보완&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,3,0,0&quot;&gt;모델 검증&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,3,1,0&quot;&gt;분석 단계에서 개발된 모델이 요구사항을 충족하는지 논리적 검증&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,4,0,0&quot;&gt;인수 테스트&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,4,1,0&quot;&gt;사용자가 실제 환경에서 요구사항이 충족되는지 직접 확인&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;4. UML (Unified Modeling Language)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;객체지향 모델링을 위한 표준화된 그래픽 언어&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;다이어그램 종류&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;29&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,0,0&quot;&gt;구조적(정적) 다이어그램:&lt;/b&gt; 클래스, 객체, 컴포넌트, 배치, 복합체, 패키지&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,1,0&quot;&gt;행위(동적) 다이어그램:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;29,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,1,1,0,0&quot;&gt;유스케이스(Use Case):&lt;/b&gt; 사용자 관점의 요구 분석.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,1,1,1,0&quot;&gt;시퀀스(Sequence):&lt;/b&gt; 객체 간 주고받는 메시지 흐름(시간 순서).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,1,1,2,0&quot;&gt;상태(State):&lt;/b&gt; 객체의 상태 변화 표현.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;29,1,1,3,0&quot;&gt;활동(Activity):&lt;/b&gt; 처리 흐름을 순서대로 표현.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;액터 (Actor):&lt;/b&gt; 시스템과 상호작용하는 사람이나 다른 시스템의 역할&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,1,0,0&quot;&gt;사용자 액터:&lt;/b&gt; 기능을 요구하거나 수행 결과를 통보받는 사용자&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,1,1,0&quot;&gt;시스템 액터:&lt;/b&gt; 본 시스템과 데이터를 주고받는 연동 시스템&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;31&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;5. UI (User Interface) 설계&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;32&quot; data-ke-size=&quot;size16&quot;&gt;UI 설계 원칙&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;33&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,0,0&quot;&gt;직관성:&lt;/b&gt; 누구나 쉽게 이해.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,1,0&quot;&gt;유효성:&lt;/b&gt; 정확하고 완벽하게 목표 달성.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,2,0&quot;&gt;학습성:&lt;/b&gt; 쉽게 배우고 사용.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,3,0&quot;&gt;유연성:&lt;/b&gt; 사용자의 인터랙션을 최대한 수용.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;34&quot; data-ke-size=&quot;size16&quot;&gt;UI 설계 도구&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;35&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;35,0,0&quot;&gt;와이어프레임(Wireframe):&lt;/b&gt; 초기 레이아웃 설계 (정적).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;35,1,0&quot;&gt;스토리보드(Story Board):&lt;/b&gt; 와이어프레임에 설명과 프로세스 추가.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;35,2,0&quot;&gt;목업(Mockup):&lt;/b&gt; 실제 화면과 유사하게 만든 정적 모형.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;35,3,0&quot;&gt;프로토타입(Prototype):&lt;/b&gt; 동적인 상호작용이 가능한 시제품.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;37&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;37&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;6. 설계 방식: 하향식 vs 상향식&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;38&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;38,0,0&quot;&gt;하향식 설계(Top-down):&lt;/b&gt; 최상위 기능에서 하위 기능으로 구체화. 절차지향적이며 구조 파악이 용이함.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;38,1,0&quot;&gt;상향식 설계(Bottom-up):&lt;/b&gt; 최하위 모듈을 먼저 만든 후 결합. 객체지향적이며 기능 추가가 어려울 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;7. 소프트웨어 아키텍처의 기본 원리&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;아키텍처 설계의 4대 핵심 요소&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,0,0&quot;&gt;모듈화(Modularity):&lt;/b&gt; 성능 향상 및 재사용을 위해 시스템을 분리. (모듈 개수가 너무 많아지면 통합 비용이 증가함)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1,0&quot;&gt;추상화(Abstraction):&lt;/b&gt; 불필요한 부분은 생략하고 핵심 위주로 모델화. (과정, 데이터, 제어 추상화)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,2,0&quot;&gt;단계적 분해(Stepwise Refinement):&lt;/b&gt; 문제를 하향식으로 세분화하여 구체화함.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,3,0&quot;&gt;정보 은닉(Information Hiding):&lt;/b&gt; 모듈 내부의 자료를 숨겨 다른 모듈의 접근을 제한함. (독립성 향상)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소프트웨어 아키텍처 설계 과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설계 목표 설정 &amp;rarr; 시스템 타입 결정 &amp;rarr;&amp;nbsp; 아키텍처 패턴 적용 &amp;rarr; 서브 시스템 구체화 &amp;rarr; 검토&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소프트웨어 아키텍처의 품질 속성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능 /&amp;nbsp; 보안 / 가용성 / 기능성 / 변경 용이성 / 확장성 / 배치성 / 안정성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;8. 주요 아키텍처 패턴 (Architecture Patterns)&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;시스템 전체의 구조를 정의하는 전형적인 설계 방식&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;7&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;패턴명&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 특징 및 내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1,0,0&quot;&gt;계층화 (Layered)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,1,1,0&quot;&gt;시스템을 계층으로 구분(예: OSI 7계층). 하위 계층은 상위 계층의 서비스 제공자가 됨.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,2,0,0&quot;&gt;Client-server&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,2,1,0&quot;&gt;요청하는 Client와 응답하는 Server로 구성되며, 서로 독립적임.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,3,0,0&quot;&gt;Pipe-Filter&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,3,1,0&quot;&gt;데이터 스트림을 필터로 캡슐화하여 한 방향으로 전송. 재사용 및 확장이 용이하나 오버헤드 발생 가능(ex. UNIX 쉘).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,4,0,0&quot;&gt;MVC 패턴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,4,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,4,1,0&quot;&gt;Model&lt;/b&gt;(데이터), &lt;b data-index-in-node=&quot;12&quot; data-path-to-node=&quot;7,4,1,0&quot;&gt;View&lt;/b&gt;(화면), &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;7,4,1,0&quot;&gt;Controller&lt;/b&gt;(제어)로 분리하여 각 요소의 독립성 유지.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,5,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,5,0,0&quot;&gt;Master-slave&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,5,1,0&quot;&gt;마스터가 작업을 분할/배포하고 슬레이브가 처리 결과를 반환(병렬 컴퓨팅).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,6,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,6,0,0&quot;&gt;Broker&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,6,1,0&quot;&gt;컴포넌트와 사용자를 연결하여 분산 환경 시스템에 적합한 구조 제공.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,7,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,7,0,0&quot;&gt;Peer-to-peer&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,7,1,0&quot;&gt;각 피어(Peer)가 클라이언트이자 서버가 될 수 있는 멀티스레딩 방식.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,8,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,8,0,0&quot;&gt;Event-bus&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,8,1,0&quot;&gt;소스가 특정 채널에 메시지를 발행하면 구독 중인 리스너들이 이벤트를 처리.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,9,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,9,0,0&quot;&gt;Blackboard&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,9,1,0&quot;&gt;컴포넌트들이 공동 데이터 저장소(Blackboard)에서 원하는 데이터를 찾음.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,10,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,10,0,0&quot;&gt;Interpreter&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,10,1,0&quot;&gt;특정 언어로 작성된 프로그램 코드를 해석하는 컴포넌트 설계.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;EAI(Enterprise Application Integration) : 기업 응용 프로그램을 하나로 통합&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;FEP (Front-End Processor) : 입력 데이터를 프로세스가 처리하기 전에 미리 처리하여 프로세스 처리 시간을 줄여주는 프로그램&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;9. 객체지향(Object-Oriented) 설계 및 원칙&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;객체지향의 주요 개념&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;캡슐화(Encapsulation):&lt;/b&gt; 데이터와 함수를 하나로 묶고 정보 은닉.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0&quot;&gt;상속(Inheritance):&lt;/b&gt; 상위 클래스의 속성을 하위 클래스가 물려받음.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,2,0&quot;&gt;다형성(Polymorphism):&lt;/b&gt; 하나의 메시지가 객체에 따라 다르게 반응. (오버라이딩 vs 오버로딩)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;다형성 핵심 개념&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;22&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,0,0&quot;&gt;오버라이딩 (Overriding):&lt;/b&gt; 상속받은 메서드를 하위 클래스에서 재정의 (이름/매개변수/반환타입 동일)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,1,0&quot;&gt;오버로딩 (Overloading):&lt;/b&gt; 메서드 이름은 같으나 매개변수 개수나 타입을 다르게 지정&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;객체지향 분석 방법론&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;24&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,0,0&quot;&gt;Booch (부치):&lt;/b&gt; 미시적, 거시적 개발 프로세스 모두 사용&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,0&quot;&gt;Jacobson (제이콥슨):&lt;/b&gt; 유스케이스(Use case)를 사용한 분석&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,2,0&quot;&gt;Coad-Yourdon:&lt;/b&gt; E-R 다이어그램 사용, 객체 행위 모델링&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,3,0&quot;&gt;Rumbaugh (럼바우):&lt;/b&gt; 객체 모델링(객체 다이어그램) &amp;rarr; 동적 모델링(상태 다이어그램) &amp;rarr; 기능 모델링(자료 흐름도) 순서 중요!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size23&quot;&gt;데이터 흐름도 (DFD) 구성요소&lt;/h3&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;구조적 분석 기법에 사용되며 '버블 차트'라고도 불립니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;27&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,0,0&quot;&gt;프로세스 (Process):&lt;/b&gt; 원&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,1,0&quot;&gt;자료 흐름 (Flow):&lt;/b&gt; 화살표&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,2,0&quot;&gt;자료 저장소 (Data store):&lt;/b&gt; 평행선&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,3,0&quot;&gt;단말 (Terminator):&lt;/b&gt; 사각형&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;객체지향 설계 5대 원칙 (SOLID)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;S (Single Responsibility):&lt;/b&gt; 단일 책임 원칙 (하나의 클래스는 하나의 책임만).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;O (Open-Closed):&lt;/b&gt; 개방 폐쇄 원칙 (확장에는 열려 있고, 수정에는 닫혀 있어야 함).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,2,0&quot;&gt;L (Liskov Substitution):&lt;/b&gt; 리스코프 교체 원칙 (자식 클래스는 언제나 부모 클래스를 대체 가능해야 함).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,3,0&quot;&gt;I (Interface Segregation):&lt;/b&gt; 인터페이스 분리 원칙 (자신이 사용하지 않는 메서드에 의존 강요 금지).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,4,0&quot;&gt;D (Dependency Inversion):&lt;/b&gt; 의존성 역전 원칙 (구체적인 것보다 추상적인 것에 의존).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;10. GoF(Gang of Four) 디자인 패턴&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;디자인 패턴은 크게 &lt;b data-index-in-node=&quot;11&quot; data-path-to-node=&quot;20&quot;&gt;생성, 구조, 행위&lt;/b&gt; 3가지로 분류된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;1) 생성 패턴 (5개) - 객체 생성 방식 결정&lt;/p&gt;
&lt;p data-path-to-node=&quot;22,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,0&quot;&gt;추빌팩프싱&lt;/b&gt; : 추상 팩토리, 빌더, 팩토리 메서드, 프로토타입, 싱글톤&lt;/p&gt;
&lt;p data-path-to-node=&quot;22,0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;2) 구조 패턴 (7개) - 객체를 조합하여 더 큰 구조 형성&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;24&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,0,0&quot;&gt;Adapter:&lt;/b&gt; 호환되지 않는 인터페이스를 연결.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,0&quot;&gt;Proxy:&lt;/b&gt; 실제 객체에 대한 접근을 제어하는 대리자 역할.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,2,0&quot;&gt;Decorator:&lt;/b&gt; 객체에 동적으로 기능을 추가.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;3) 행위 패턴 (11개) - 객체 간의 상호작용 및 책임 분담&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;Observer:&lt;/b&gt; 한 객체의 상태 변화를 구독자들에게 알림.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;Strategy:&lt;/b&gt; 알고리즘을 캡슐화하여 필요에 따라 교체 사용.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,2,0&quot;&gt;State:&lt;/b&gt; 객체 상태에 따라 동작을 다르게 처리.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;11. 설계 검토 및 분석 기법&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;29&quot; data-ke-size=&quot;size16&quot;&gt;요구사항 검증 기법&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;30&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,0,0&quot;&gt;동료 검토(Peer Review):&lt;/b&gt; 작성자가 설명하고 동료들이 결함 발견.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,1,0&quot;&gt;워크스루(Walk-through):&lt;/b&gt; 회의 전 자료 배포 후 짧은 검토 회의.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,2,0&quot;&gt;인스펙션(Inspection):&lt;/b&gt; 작성자 외 전문 검토 그룹이 결함 확인.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;31&quot; data-ke-size=&quot;size16&quot;&gt;팬인(Fan-In) &amp;amp; 팬아웃(Fan-Out)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;32&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,0,0&quot;&gt;Fan-In:&lt;/b&gt; 나를 호출하는 모듈의 수 (높을수록 재사용성 좋으나, 장애 시 파급력 큼).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;32,1,0&quot;&gt;Fan-Out:&lt;/b&gt; 내가 호출하는 모듈의 수 (높을수록 로직이 복잡하므로 단순화 필요).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUVhz2/dJMcagjZ5x2/6InrakWyPNsSGO2KYCEuuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUVhz2/dJMcagjZ5x2/6InrakWyPNsSGO2KYCEuuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUVhz2/dJMcagjZ5x2/6InrakWyPNsSGO2KYCEuuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUVhz2%2FdJMcagjZ5x2%2F6InrakWyPNsSGO2KYCEuuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;501&quot; height=&quot;151&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;151&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;34&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;34&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;12. 미들웨어 (Middleware) 종류&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;35&quot; data-ke-size=&quot;size16&quot;&gt;애플리케이션과 OS 사이에서 통신을 돕는 소프트웨어&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;36&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;36,0,0&quot;&gt;RPC (Remote Procedure Call):&lt;/b&gt; 원격 프로시저를 로컬처럼 호출.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;36,1,0&quot;&gt;MOM (Message Oriented Middleware):&lt;/b&gt; 메시지 큐 기반 비동기 전달.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;36,2,0&quot;&gt;WAS (Web Application Server):&lt;/b&gt; 동적 콘텐츠 처리를 위한 서버 (Tomcat, JEUS).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;36,3,0&quot;&gt;TP-Monitor:&lt;/b&gt; 트랜잭션 처리를 감시하고 제어.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>정보처리기사</category>
      <author>비숑주인</author>
      <guid isPermaLink="true">https://his0si.tistory.com/287</guid>
      <comments>https://his0si.tistory.com/287#entry287comment</comments>
      <pubDate>Sat, 24 Jan 2026 01:28:18 +0900</pubDate>
    </item>
  </channel>
</rss>