반응형

알고리즘과 DB 일부 문제만 정리하였습니다.

최근 기출문제(2019년부터)는 하단 링크를 참고해 주세요.

정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회)

정보처리 산업기사 실기 시험은 2017년 한 번 개정되고 내년에 NCS로 다시 개정을 앞두고 있습니다. 해당 글은 2017년 개정된 이후 기출 문제 중에서 2019년 1회부터 가장 최근에 있었던 2021년 1회까

developer-rooney.tistory.com

알고리즘 - C언어


1. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.(5점)

#include <stdio.h> func(int *p) { printf("%d\n", *p); printf("%d\n", p[2]); } main() { int a[7] = {1,2,3,4,5}; func(a); func(a + 2); }


정답

1
3
3
5

해설

C언어 포인터 문제입니다. func 함수에 매개 변수로 들어오는 p의 값을 이용하여 두 개의 printf에 각각 *p, p[2]를 출력합니다.

main에서 func는 func(a)와 func(a + 2) 이렇게 두 번 실행됩니다.

func(a) 실행 시 : 배열 a의 0번째 값인 1을 출력하고 2번째 값인 3을 출력

func(a + 2) 실행 시 : 배열 a의 2번째 값이 3을 출력하고 4번째 값 더한 값인 5를 출력

C언어 포인터에 대한 설명은 하단 링크를 참고해 주세요.

[C언어] 포인터 변수

C언어 포인터 포인터는 변수의 주소를 담는다. #include main () { int a = 20; // *b는 포인트 변수 int *b; // b는 a의 주소를 가리킴 b = &a; // b가 가리키는 곳에 b가 가리키는 곳의 값 + 10을 넣어준다. *b..

developer-rooney.tistory.com



2. 다음은 12와 6을 입력받아 <출력>과 같은 결과를 나타내는 프로그램을 C언어로 구현한 것이다. 프로그램을 분석하여 괄호 (1) ~ (4)에 가장 적절한 답을 적으시오.(10점)

<코드>

#include <stdio.h> int sub(int i, int j) { return i - j; } int add(int i, int j) { return i + j; } main() { int i, j, result; int (*pf)(int, int); scanf("%d, $d", &i, &j); pf = ( 1 ); ( 2 ) = pf(i, j); printf("%d, ", result); ( 3 ) = sub; result = ( 4 ); printf("%d", result); }


<출력>

18, 6

정답

(1) add
(2) result
(3) pf
(4) pf(i, j)

해설

이 문제는 포인터 함수를 이용하는 문제입니다. 우선 출력 값을 확인해보니 입력된 12와 6을 더한 값 18과 뺀 값 6이 출력된 것을 볼 수 있고 이 역할을 담당하는 함수는 각각 add와 sub입니다. main에서 *pf는 함수를 가리키는 포인터 함수로 지정되었고 처음 실행된 결과가 18이므로 두 값을 더하는 함수인 add가 (1)에 들어간 후 printf를 통해 출력되는데 pf = ( 1 ); 과 printf("%d, ", result); 사이에 result가 없으므로 ( 2 )는 result가 들어갑니다. 그 후에 pf는 add에서 sub로 바꿔야 하기 때문에 ( 3 )에는 pf가 들어가고 ( 4 )에는 result에 6을 담기 위해 12에서 6을 빼주는 함수를 이용한 sub(i, j)가 들어갑니다.

데이터베이스


1. 다음 데이터베이스와 관련한 다음 설명에서 괄호 (1) ~ (4)에 가장 적절한 답을 적으시오.(10점)

<설명>

데이터베이스를 관리하기 위한 필수 기능에는 정의 기능, (1) 기능, 제어 기능이 있다. 정의 기능은 데이터의 타입과 구조, 데이터가 데이터베이스에 저장될 때의 제약 조건 등을 명시하는 기능이고, (1) 기능은 체계적 데이터 처리를 위해 데이터 접근 기능(검색, 삽입, 삭제, 갱신 등)을 명시하는 기능이며, 제어 기능은 데이터의 정확성과 안전성을 유지하기 위해 무결성, 보안 및 권한 검사, 병행 제어 등을 명시하는 기능이다.

위와 같은 기능을 이용하여 데이터베이스를 정의하고 제어하는 사람 또는 그룹을 (2)(이)라고 한다. (2)(은)는 데이터베이스 관리 시스템과 컴퓨터 시스템, 조직 내의 전산 업무에 상당한 지식을 보유해야 하고, 데이터베이스를 설계, 관리, 운용 및 통제하며, 효율성과 경제적인 효용성을 높이기 위해 시스템을 감시하고 성능을 분석한다.

관계 데이터베이스에서 관계 내의 특정 튜플을 식별할 수 있는 키 필드인 (3)이(가) 있어야 한다. 데이터베이스 설계 시 설계자는 이 중 하나를 기본키(Primary Key)로 설정해야 하며, 기본키로 설정되지 않은 (3)(은)는 대체키(Alternate Key)라고 부른다.

관계형 데이터 모델에서 식별자의 역할을 하는 기본키와 달리 외래키(Foreign Key)는 다른 릴레이션의 기본키를 (4)하는 속성 또는 속성들의 집합을 의미한다. 릴레이션 간의 관계를 표현할 때 사용하며, (4) 릴레이션의 기본키와 동일한 키 속성을 갖는다.

정답

(1) 조작
(2) DBA
(3) 후보키
(4) 참조

해설

데이터베이스에 대한 설명 중 빈칸을 채우는 문제입니다. 데이터베이스의 기능에는 정의, 조작, 제어 기능이 있고 각각 DDL, DML, DCL을 이용합니다. 데이터베이스를 정의하고 제어하는 사람 또는 그룹을 'DBA(DataBase Administer)' 라고 부르며, 튜플을 식별할 수 있는 유일한 키 필드를 '후보키' 라고 부릅니다. 후보키 중 선택된 특정 키를 '기본키(Primary Key)' 라고 하는데 기본키가 아닌 나머지 후보키는 '대체키(Alternate Key)' 가 됩니다. 관계형 데이터베이스에서 하나의 릴레이션이 다른 릴레이션을 '참조' 할 수 있고 이 때 식별을 위해 사용하는 키가 '외래키(Foreign Key)' 입니다.

2. <직원>과 <동호회> 테이블을 참고하여 다음의 각 질문에 대한 SQL문을 완성하시오.(15점)

<직원>

직원코드 이름 부서
12345 루니 인사
12346 램파드 영업
12347 비야 인사


<동호회>

신청코드 이름 분야 활동점수
A-1000 루니 등산 2500
B-1000 램파드 수영 4700
C-1000 비야 배드민터 1800

* 시험 문제에서는 더 많은 데이터가 들어가지만 테이블의 속성만으로도 문제를 풀 수 있어 모두 넣지 않았습니다.


(1) <직원> 테이블에서 이름을 조회하는 SQL문을 완성하시오.
SELECT ( ) FROM 직원;

(2) <직원> 테이블에서 부서가 '인사'인 튜플을 검색하는 SQL을 완성하시오.
SELECT * FROM 직원 ( ) 부서 = '인사';

(3) <동호회> 테이블에서 분야가 '등산'이고 활동점수가 3000 이상인 튜플을 검색하는 SQL을 완성하시오.
SELECT * FROM 동호회 WHERE 분야 = '등산' ( ) 활동점수 >= 3000;

(4) <동호회> 테이블에서 분야만 검색하되, 같은 분야는 한 번만 검색하는 SQL문을 완성하시오.
SELECT ( ) FROM 동호회;

(5) <동호회> 테이블에서 이름과 분야를 검색하되, 활동점수를 기준으로 오름차순 정렬하는 SQL문을 작성하시오.
SELECT 이름, 분야 FROM 동호회 ( ) 활동점수;

정답

(1) 이름
(2) WHERE
(3) AND
(4) DISTINCT 분야
(5) ORDER BY

해설

SQL 문법에 대한 문제입니다. (1)에서는 이름을 조회하라고 했으므로 이름 을 입력하면 되고 (2)에서는 부서가 '인사'인 특정 튜플을 검색하라고 했으니 WHERE가 들어갑니다. (3)에서는 WHERE절에 조건을 두 개 걸어주기 위해 AND를 이용하고 (4)에서는 특정 속성 검색 중 결과에서 중복을 제거하기 위해 DISTINCT를 사용하며, (5)에는 오름차순 정렬을 위해 ORDER BY를 입력합니다.

반응형
반응형

알고리즘과 DB 일부 문제만 정리하였습니다.

 

최근 기출문제(2019년부터)는 하단 링크를 참고해 주세요.

 

정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회)

정보처리 산업기사 실기 시험은 2017년 한 번 개정되고 내년에 NCS로 다시 개정을 앞두고 있습니다. 해당 글은 2017년 개정된 이후 기출 문제 중에서 2019년 1회부터 가장 최근에 있었던 2021년 1회까

developer-rooney.tistory.com

 

알고리즘 - C언어

 

다음 C언어의 <코드>와 <출력>을 보고 괄호 (1) ~ (3)에 가장 적절한 답을 적으시오.(6점)

 

<코드>

#include <stdio.h>

main() {
    int i, j;
    for (i = 2; i <= 9; i++) {
        for(j = 1; j <= 9; j++) {
            printf("%d * %d = %d\n",  (1),(2),(3)  );
        }
    }
}

 

<출력>

 

2 * 1 = 2

2 * 2 = 4

2 * 3 = 6

   .

   .

(생략)

   .

3 * 1 = 3

3 * 2 = 4

   .

   .

(생략)

   .

9 * 8 = 72

9 * 9 = 81

 

정답

 

(1) i

(2) j

(3) i * j

 

해설

 

구구단 문제입니다. printf를 통해 출력하고 있고 세 개의 %d에 각각 어떤 값이 들어가야 하는지 맞춰야 합니다. 이중 for문 중 바깥 for문 i가 2부터 시작하기 때문에 몇 번째 단인지 나타내는 역할을 합니다. 따라서 (1)에는 i가 들어가고 j의 최종 값이 9이기 때문에 단에서 1부터 9까지 곱하는 역할을 하는 변수라는 것을 알 수 있기에 (2)에는 j가 들어갑니다. 마지막 %d에는 곱해진 값인 i * j(혹은 j * i)를 넣으면 됩니다.

 

 

알고리즘 - 자바

 

다음은 Java 언어로 1부터 100의 범위 안에 가장 큰 소수를 구하는 알고리즘을 구현한 것이다. 괄호 안에 들어갈 가장 적당한 답을 적으시오.(4점)

 

import java.lang.Math;

public class Test {
    public static void main(String[] args) {
        int p = 2;
        int n = 3;
        
        while(true) {
            double t = Math.sqrt(n);
            int m = (int)t;
            for (int i = 2; i <= m; i++) {
                int r = n % i;
                if (r == 0)
                    break;
                if (i == m)
                    p = (      );
            }
            n++;
            if (n > 100)
                break;
        }
        
        System.out.printf("%d\n" p);
    }
}

 

정답

 

n

 

해설

 

특정 범위의 숫자 중에서 가장 큰 소수를 구하는 알고리즘 문제는 순서도에서도 자주 출제되는 문제입니다. 소수란 1과 자기 자신으로만 나눠지는 수를 말하고 특정 수가 소수인지 알아볼 때는 그 수를 그 수의 제곱근까지만 나눠서 떨어지지 않으면 소수라고 볼 수 있습니다.

 

예를 들어, 16의 제곱근은 4이므로 16을 1에서 4까지 나눴을 때 중간에 나눠 떨어지면 소수가 아니고 나눠 떨어지지 않으면 소수입니다. 하지만 제곱근은 수에 따라 실수가 나올 수도 있기 때문에 정수로 변환하는 과정이 필요합니다.

 

우선 변수를 살펴봅니다. 정수 n과 p가 각각 2와 3으로 초기화되어 있습니다. n은 100까지 1씩 증가할 변수이고 p는 가장 큰 소수를 담을 변수입니다.

 

while(true)는 무한 루프를 의미합니다. 중간에 break는 이 무한 루프를 종료시키는 명령어인데 'r == 0' 이거나 'n > 100' 일 때 실행됩니다. r이 0과 같아지면 제곱근까지 나누던 도중 나누어 떨어졌다는 의미이므로 이미 소수가 아닌 걸로 판정되어 더 나눌 필요가 없어져 break로 빠져나가고 n > 100 일 경우는 문제에서 제시한 100 범위를 벗어나기 때문에 break로 빠져나갑니다.

 

while문의 실수 t에는 Math.sqrt(n)이 들어가는데 Math.sqrt(n)는 n의 제곱근을 구하는 메소드입니다. 이 수를 정수로 바꾸기 위해 m이라는 새로운 정수 변수를 선언하여 t를 정수로 캐스팅한 값 '(int)t' 를 담아 초기화해줍니다. 그리고 for문을 이용하여 n을 2부터 제곱근 m까지 나누게 되는데 이 부분에서 나머지를 남을 변수 int r 이 n & i 로 초기화됩니다. r이 0이면 나누어 떨어졌기 때문에 이미 소수가 아니고 계속 나눠서 마지막에 증가하는 값 i와 m이 같아지는 경우 그 수는 소수라고 판별되어 p에 소수인지 판별 중인 변수 n을 넣어주면 됩니다.

 

 

데이터베이스

 

1. 다음 <사원> 테이블의 구조를 참고하여 미완성된 SQL문을 완성하시오.(6점)

 

<사원>

직원코드 성명 직책 연봉
12345 루니 대리 3200
12346 램파드 사원 2800

 

<SQL문>

CREATE TABLE 사원(
직원코드 NUMBER NOT NULL,
성명 CHAR(10) UNIQUE,
직책 CHAR(10) (1)(직책(2)('사원','대리','과장','팀장')),
연봉 NUMBER
);

* 괄호는 직책 속성 코드에 (1)과 (2)입니다.

 

정답

 

(1) CHECK

(2) IN

 

해설

 

직책 속성에 특정 값만 들어갈 수 있도록 설정하는 체크 제약조건 문제입니다. 이 문제에서는 직책에 사원, 대리, 과장, 팀장만 들어갈 수 있게 하기 위해 사용하고 있습니다.

반응형
반응형

알고리즘과 DB 일부 문제만 정리하였습니다.

 

최근 기출문제(2019년부터)는 하단 링크를 참고해 주세요.

 

정보처리산업기사 실기 출제 유형 및 최근 기출 문제 정리(19년 1회부터 21년 1회)

정보처리 산업기사 실기 시험은 2017년 한 번 개정되고 내년에 NCS로 다시 개정을 앞두고 있습니다. 해당 글은 2017년 개정된 이후 기출 문제 중에서 2019년 1회부터 가장 최근에 있었던 2021년 1회까

developer-rooney.tistory.com

 

알고리즘 - C언어

 

다음 C언어의 <코드>와 <출력>을 보고 괄호(1), (2)에 적용될 수 있는 가장 적절합 답을 쓰시오.(10점)

 

<코드>

#include <stdio.h>

int main(void) {

    int i, j, n;
    
    n = (1);
    
    for(i = 1; i <= (2); i++) {
        for(j = 1; j <= i; j++) {
            printf("%3d", j);
        }
        printf("\n");
    }

}

 

<출력>

 

1

1  2

1  2  3

1  2  3  4

1  2  3  4  5

1  2  3  4  5  6

1  2  3  4  5  6  7

 

정답

 

(1) : 7

(2) : n

 

해설

 

계단을 만드는 알고리즘 문제입니다. 첫 번째 괄호(1)에는 정수 n의 초기화에 필요한 값을 넣어줘야 하고 두 번째 괄호(2)에는 i가 어디까지 증가해야 하는지 넣어줘야 합니다.

 

이 문제는 어느 변수가 행이고 어느 변수가 열인지를 먼저 파악해야 하는데 이런 이중 for문에서 계단을 만들 때는 바깥 for문이 행 역할을 하는 경우가 많습니다. 정확하게 확인하기 위해 두 for문의 시작 값과 마지막 값을 확인해야 하는데 첫 번째 for문은 괄호가 있어 확인이 안 되므로 두 번째 for문이 열이 맞는지 먼저 확인합니다.

 

두 번째 for문은 0에서 바깥 for문의 값이 i까지 증가하게 됩니다. <출력> 부분을 보면 첫 번째 줄에서는 1, 두 번째 줄에서는 1 2, 세 번째 줄에서는 1 2 3..으로 몇 번째 행이냐에 따라 열의 마지막 값이 바뀌는 것을 볼 수 있습니다. 따라서 내부 for문은 열을 나타내는 게 맞습니다.

 

바깥 for문이 행 역할을 함에 따라 행의 최종 값인 7을 넣어줘야 하는데 이 최종 값 7은 n의 초기화 값으로 넣어야 하고 7로 초기화된 n을 (2)에 넣으면 문제가 해결됩니다.

 

 

알고리즘 - 자바

 

다음 Java 언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.(5점)

 

public class Test {

    public static int[] arr(int[] a) {
        int i, j, sw, temp, n = 4;
        if (a[0] == 0 || a[0] < 1)
            return a;
        for (i = 0; i < n-1; i++) {
            sw = i;
            for (j = i + 1; j < n; j++) {
                if(a[j] < a[sw])
                    sw = j;
            }
        temp = a[i];
        a[i] = a[sw];
        a[sw] = temp;
        
        }
    }
    
    public static void main(String[] args) {
    
        int i;
        int n[] = {4, 2, 7, 1};
        arr(n);
        for (i = 0; i < 4; i++){
            System.out.printf(n[i] + "  ");
        }
    }
}

 

정답

 

1  2  4  7

 

해설

 

이 문제는 값을 오름차순으로 정렬하는 문제입니다. 이런 문제는 출제되면 main 메소드를 먼저 확인해야 합니다. main 함수를 보면 arr(n)이라는 메소드에 {4, 2, 7, 1} 4개의 정수를 갖는 정수 배열 n이 매개 변수로 입력되었고 마지막에 for문을 통해 n의 값들을 하나씩 출력하고 있습니다.

 

arr 메소드가 어떤 역할을 하는지 위에 정의된 'public static int[] arr(int[] a)' 에서 확인합니다. 이 메소드는 매개변수로 정수 배열을 받아서 특정 역할을 수행한 후 정수 배열을 반환합니다.

 

모르시는 분들을 위해 메소드를 분석해보면 'public : 접근제어자, static : 메모리 공유, int[] : 반환 값, arr : 메소드 이름 (int[] a) : 1차원 배열이 매개 변수(파라미터)'입니다.

 

첫 줄에 'int i, j, sw, temp, n = 4' 로 n만 4로 초기화되어 있는데 i와 j는 for문에서 이용될 변수, sw는 i의 값을 넣어주는 변수입니다. if문을 살펴보면 배열 a의 0번째 값이 0이거나 1보다 작을 때 입력된 배열을 그대로 반환하라고 하는데 해당 없기 때문에 넘기면 됩니다. n=4 가 의미하는 것은 여기서 배열의 길이를 나타냅니다. 문제에 따라서 n=a.length로 출제될 수도 있는데 여기서는 배열의 길이가 짧기 때문에 정수 4로 초기화한 것으로 보입니다.

 

중요한 것은 이중 for문과 for문 마지막에 있는 값 교환 부분인데 i는 0부터 n - 1 전까지 1씩 증가하고, j는 i의 값부터 n까지 1씩 증가합니다. 즉, i가 1일 때 j는 2~3까지 비교하고 i가 2일 때는 3까지 비교하면서 for문 내 if문의 조건에 따라 a[i]가 a[j]보다 작은 경우가 발생하면 sw에 j를 저장합니다.

 

값 교환 부분은 temp를 통해 두 개의 값을 교환합니다. temp는 임시 저장 변수로 이 변수에 큰 값을 넣어준 뒤 a[i] = a[j], a[j] = temp로 교환을 해주면 낮은 수부터 큰 수 순으로 정렬됩니다.

 

-

 

이 문제는 자바 기출 문제 중에서 코드가 긴 편에 속해서 어려워 보일 수 있는데 주요 코드를 찾아낸다면 쉽게 푸실 수 있습니다. temp를 이용한 교환 부분은 정렬을 할 때 많이 이용되는데 for문 내의 if문에서 값이 오름차순으로 교환되는지, 내림차순으로 교환되는지만 확인해준다면 복잡한 분석 없이 풀이가 가능합니다.

 

 

데이터베이스

 

1. 다음 <처리조건>에 유의하여 <학생> 테이블에 대한 다음의 각 질문에 알맞은 SQL문을 작성하시오.(10점)

 

<학생>

학번 전공 학생이름 생년월일 학년
12345 computer rooney 19851024 1
12346 computer lampard 19780620 2

* 실제 문제에는 더 많은 데이터가 들어가 있지만 속성만 알면 풀이할 수 있어 넣지 않았습니다.

 

<처리조건>

 

1. 명령절의 마지막은 ';'으로 끝낸다.

2. 문자열 인용의 경우 작은 따옴표를 이용하여 작성한다.

 

1) <학생> 테이블에서 전공이 computer이고 1학년인 학생의 이름과 생년월일을 검색하는 SQL문을 작성하시오.

2) <학생> 테이블에서 2학년 또는 4학년인 학생의 전공을 검색하되, 전공이 같은 경우 한 번만 검색하는 SQL문을 작성하시오.

3) <학생> 테이블에서 2학년 이상인 학생의 이름을 검색하되, 학년을 기준으로 내림차순 검색하는 SQL문을 작성하시오.

 

 

정답

 

1) select 학생이름, 생년월일 from 학생 where 전공 = 'computer' and 학년 = 1;

2) select distinct 전공 from 학생 where 학년 IN(2, 4);

3) select 학생이름 from 학생 where 학년 >= 2 order by 학년 desc;

 

해설

 

우선 <처리조건>에 명령절 마지막에 세미콜론(;)을 붙이라는 점에 유의해야 합니다. 실제 SQL 실행 시 단독 실행의 경우 세미콜론을 붙이지 않아도 문제가 되지 않지만 문제에서는 세미콜론을 붙이라는 조건이 있으니 명령절 마지막에 세미콜론을 붙이지 않으면 감점 혹은 틀린 문제 처리됩니다. 또한 전공이나 학생 이름은 문자열이기 때문에 인용할 때 작은 따옴표('   ')로 감싸서 작성해야 합니다.

 

1) 문제에서 학생의 이름과 생년월일을 검색하라고 했으니 select 뒤에 학생이름, 생년월일을 적고 데이터를 가져올 테이블이 '학생' 테이블이므로 from 학생을 적어줍니다. 또한 조건 중 전공이 computer이고 1학년인 학생만 가져오라고 했으니 where 전공 = 'computer' and 학년 = 1을 적은 뒤 세미콜론(;)을 붙여줍니다.

 

2) 중복 제거에 관한 문제입니다. 속성을 검색할 때 중복되는 내용이 있으면 한 번만 표시하라는 의미인데 이 경우 중복을 제거할 속성 앞에 'distinct' 를 붙입니다. 또한 학년이 1학년이거나 4학년인 학생만 조회하라고 했으므로 where절에 학생 IN(2, 4)로 표현하여 select distinct 전공 from 학생 where 학년IN(2, 4); 가 됩니다.

 

* 조건에 무조건 IN을 사용하라는 말이 없으므로 select distinct 전공 from 학생 where 학년 = 2 or 학년 = 4; 로 작성해도 정답입니다. 하지만 안전하게 IN을 사용하시길 권장합니다.

 

3) 정렬 관한 문제입니다. 정렬에는 desc(내림차순), asc(오름차순) 정렬이 있는데 where절 뒤에 order by 속성명 desc(혹은 asc)로 표현합니다. 이 문제는 내림차순 정렬을 하라고 했으므로 where절부터 학년 >= 2 order by 학년 desc; 라고 적으면 됩니다.

 

 

반응형
반응형

모듈(Modul) : 모듈화를 통해 분리된 시스템의 각 기능을 말한다.

* 모듈의 독립성은 결합도와 응집도에 의하여 측정되며 이 때 결합도는 약하고 응집도는 강해야 한다.


결합도(Coupling) : 모듈 간의 상호 의존하는 정도를 의미한다.

응집도(Cohesion) : 정보 은닉을 확장한 개념으로 모듈 내부의 요소들이 서로 연관되어 있는 정도를 말한다.


결합도 순서


결합도 문제는 2020년 10월 정보처리 산업기사 실기 시험에서 5점 문제로 출제되었습니다. <보기>가 주어지고 그 안에 있는 결합도를 낮은 것(약한 것)부터 높은 것(강한 것) 순으로 나열하는 문제였습니다.

결합도의 순서(결합도가 약한 것부터) : 자료(데이터) 결합도 - 스탬프 결합도 - 제어 결합도 - 외부 결합도 - 공통 결합도 - 내용 결합도

자료 결합도
(Data Coupling)
어떤 모듈이 다른 모듈을 호출하면서 매개 변수나 인수로 데이터를 넘겨주고, 호출 받은 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려주는 방식
스탬프(검인) 결합도
(Stamp Coupling)
두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이며, 자료 구조의 어떠한 변화, 즉 포맷이나 구조의 변화는 그것을 조회하는 모든 모듈 및 변화되는 필드를 실제로 조회하지 않는 모듈에까지도 영향을 미친다.
제어 결합도
(Control Coupling)
한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어 이를 통제하는 경우나 처리 기능이 두 모듈에 분리되어 설계된 경우에 발생한다.
외부 결합도
(External Coupling)
어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도이다.
공통(공유) 결합도
(Common Coupling)
공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도이다.
내용 결합도
(Content Coupling)
한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도이다.



응집도 순서


응집도 문제는 정보처리 산업기사 실기에서 아직까지 출제된 적이 없습니다.

응집도 순서(응집도가 강한 것부터) : 기능적 응집도 - 순차적 응집도 - 교환적 응집도 - 절차적 응집도 - 시간적 응집도 - 논리적 응집도 - 우연적 응집도

기능적 응집도
(Functional Cohesion)
모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
순차적 응집도
(Sequential Cohesion)
모듈 내 하나의 활동으로부터 나온 출력 데이터를 그다음 활동의 입력 데이터로 사용할 경우의 응집도
교환(통신)적 응집도
(Communication Cohesion)
동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
절차적 응집도
(Procedural Cohesion)
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
시간적 응집도
(Temporal Cohesion)
특정 시간에 처리되는 몇 개의 ㅣ기능을 모아 하나의 모듈로 작성할 경우의 응집도
논리적 응집도
(Logical Cohesion)
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
우연적 응집도
(Coincidental Cohesion)
모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
반응형

+ Recent posts