www.acmicpc.net/problem/2580

 

2580번: 스도쿠

스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루

www.acmicpc.net

참고 :yabmoons.tistory.com/88

 

[ 백준 2580 ] 스도쿠 (C++)

백준의 스도쿠(2580) 문제이다. ( 문제 바로가기 ) [ 문제풀이 ] 1) 이 문제는 스도쿠 게임의 빈칸에 알맞은 숫자를 채워넣어야 하는 문제이다.   스도쿠 게임은 총 9x9 판위에서 이루어지며, 가로 9

yabmoons.tistory.com

0
1 2
3 4 5
6 7 8

 

코드

  • Step1) ROW, COL 배열에 각각 True, False값을 넣어준다
    • ROW[i][map[i][j]]=true
      • 각 행에 사용한 숫자(=map[i][j]))를 체크해준다
    • COL[j][map[i][j]]=true;
      • 각 열에 사용한 숫자를 체크한다.
    • Square[(i/3)*3 + (j/3)][map[i][j]] = true
      • (i/3)*3 + (j/3)
        • (i,j)가 상위 표에서 어느 위치에 있는지 알려줌
          • ex) (4,2)
            • (4/3) * 3+ 2/3 = 3 번째 위치
          • ex) (7,7)
            • (7/3)*3 + 7/3 = 8번째 위치
    • dfs에서의 cnt
      • int x = cnt/9;
        • cnt=0~8
          • x=0
          • y=0~9
        • cnt= 9~17
          • x=1
          • y=0~9
        • cnt=18~26
          • x=2...
          • y=0~9...
      • 따라서 cnt=81 이란 것은 (0,0)부터 (9,9)까지 다 돈 것이다.
  • 중요한 검색 로직!!
if (map[x][y] == 0)
	{
		for (int i = 1; i <= 9; i++)
		{
			if (row[x][i] == false && col[y][i] == false && square[(x / 3) * 3 + (y / 3)][i] == false)
			{
  • 재귀 로직
    • 들어갈 수 있는 가장 작은 i 값을 넣고 다 뺀뒤에 다 그다음 값을 넣고 돌리고 하는 식..!
row[x][i] = true;
col[y][i] = true;
square[(x / 3) * 3 + (y / 3)][i] = true;
map[x][y] = i;
dfs(cnt + 1);
map[x][y] = 0;
row[x][i] = false;
col[y][i] = false;
square[(x / 3) * 3 + (y / 3)][i] = false;

 

  • map[i][j] = 0 을 만났을 때
  • 해당 가로줄 검사
  • 해당 세로줄 검사
  • 해당 블럭(9개중1개) 검사
    • 가능한 숫자 입력
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#define MAX 9
/*
0 3 5 4 6 9 2 7 8
7 8 2 1 0 5 6 0 9
0 6 0 2 7 8 1 3 5
3 2 1 0 4 6 8 9 7
8 0 4 9 1 3 5 0 6
5 9 6 8 2 0 4 1 3
9 1 7 6 5 2 0 8 0
6 0 3 7 0 1 9 5 2
2 5 8 3 9 4 7 6 0  
*/

using namespace std;

void solution()
{

}
int map[9][9];
bool row[9][9];
bool col[9][9];
bool square[9][9];
void Print()
{
	for (int i = 0; i < MAX; i++)
	{
		for (int j = 0; j < MAX; j++)
		{
			cout << map[i][j] << " ";
		}
		cout << endl;
	}
}



void dfs(int cnt)
{//cnt : 
	int x = cnt / 9;//x좌표
	int y = cnt % 9;//y좌표
	if (cnt == 81)
	{
		Print();
		exit(0);
	}

	if (map[x][y] == 0)
	{
		for (int i = 1; i <= 9; i++)
		{
			if (row[x][i] == false && col[y][i] == false && square[(x / 3) * 3 + (y / 3)][i] == false)
			{
				row[x][i] = true;
				col[y][i] = true;
				square[(x / 3) * 3 + (y / 3)][i] = true;
				map[x][y] = i;
				dfs(cnt + 1);
				map[x][y] = 0;
				row[x][i] = false;
				col[y][i] = false;
				square[(x / 3) * 3 + (y / 3)][i] = false;
			}

		}

	}
	else dfs(cnt + 1);




}
int main()
{
 


	for (int i = 0; i < 9; i++)
	{
		for (int j = 0; j < 9; j++)
		{
			cin >> map[i][j];
			if (map[i][j] != 0)
			{
				row[i][map[i][j]] = true; //i번째 가로줄에 n라는 숫자가 이미 존재합니다.
				col[j][map[i][j]] = true; //j번째 세로줄에 n라는 숫자가 이미 존재합니다.
				square[(i / 3) * 3 + (j / 3)][map[i][j]] = true; //a번째 사각형에 b라라는 숫자가 이미존재합니다.

			}
		}
	}

	
	dfs(0);

	return 0;
}

 

  • 스키마
    • DB의 개체,속성,관계에 대한 정의
      • 외부 스키마(사용자)
        • 사용자나 응용 프로그래머가 접근
      • 개념 스키마(데이터구조)
        • 데이터 접근 권한, 보안 및 무결성 규칙 명세
      • 내부 스키마(하드웨어)
        • 데이터의 실제 저장 방법 기술
        • 물리적 저장 장치의 입장
  • 트랜잭션의 특성
    • 원자성
      • 완전하게 수행이 완료되지 않으면 전혀 수행되지 않아야한다.
    • 일관성
      • 시스템의 고정 요소는 트랜잭션 수행 전후가 같아야한다.
    • 격리성
      • 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야한다.
    • 영속성
      • 트랜잭션의 완료 결과가 DB에 영구히 기억된다.
  • 병행제어기법
    • 동시에 수행되는 트랜잭션들을 일관성 있게 처리하기 위해 제어
      • 로킹(Locking)
        • 하나의 트랜잭션이 데이터를 액세스 하는동안 다른 트랜잭션이 그 데이터 항목을 엑세스 할 수 없도록 하는 병행제어 기법
        • 로킹단위가 높아지면 공유도가 낮아진다.
        • 로킹단위가 작아지면 오버헤드가 발생한다
        • 따라서 로킹단위는 적당해야한다.
  •  플립플롭
    • 1비트의 정보를 저장하는 논리회로
  • 주기억장치 배치전략
    • 최초 적합 (First Fit)
    • 최적 적합 (Best Fit)
    • 최악 적합 (Worst Fit)
  • 릴리이션의 특징 
    • 릴레이션(테이블)
    • 튜플(레코드)
      • 튜플을 식별하기 위해 기본 키 (PK)를 이용한다.
    • 에트리뷰트(속성) ex)이름, 주민등록번호, 주소...
      • 속성의 명칭은 유일해야 하고, 속성에 해당하는 값은 중복될 수 있다.
      • 속성은 더 이상 세분화 할 수 없는 값을 저장하며, 모든 애트리뷰터(속성)는 원자 값이다.
    • 속성 값(홍길동,123,123)
  • 참조 무결성
    • 2개의 릴레이션(테이블)에[서 기본ㅋ 키와 외래 키가 관련된 무결성을 의미한다. 외래 키 값은 NULL이거나, 참조 릴레이션에 있는 기본 키와 같아야 하는데, 기본 키는 NULL값을 허용하지 않는다다. 참조 무결성은 DBMS에 의해 관리한다.
  • DDos
    • 라우터의 필터링 기능과 협정 접속률(CAR) 기능을 이용하여 차단한다.
  • Dos(서비스 거부)
    • 네트워크나 호스트에 많은 양의 트래픽을 증가시켜 통신을 방해하는 공격 방식으로, 시스템이 다운되거나 스세템 자원을 사용할 수 없게한다.
  • 자동 반복 요청(ARQ)
    • 가장 널리 사용되는 에러 제어 방식으로, 에러 검출 후 송신측에 에러가 발생한 데이터 블록을 다시 재전송 해 주도록 요청함으로써 에러를 정정한다.
  • 해싱(Hashing)
    • 레코드의 참조 없이 어떤 키 변환에 의해 원하는 레코드에 직접 접근할 수 있도록 구성한 것이다.
    • 키 변환 값이 같은 경우 오버플로가 발생하지만 찾는 레코드의 키 값을 주소 변환에 의해 해당 위치를 검색 하므로 조사 횟수가 적다.
  • 개발자 월별 생산성 방식
    • 월별 생산성 = (KLOC) / (사람 수/ 월)
      • KLOC 코드 작성 라인 ex) 10,000라인
  • 운영체제
    • 시스템의 자원들을 효율적으로 관리하며, 효과적으로 사용할 수 있도록 환경을 제공하는 프로그램의 모임
  • 성능평가기준
    • 처리능력 : 일정 시간내에 시스템이 처리하는 일의 양
    • 번환시간 : 의뢰한 시간부터 처리 완료까지 거린 시간
    • 사용 가능도 : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
    • 신뢰도 : 시스템이 주어진 문제를 정확하게 해결하는 정도
  • 운영체제 운용 기법
    • 일괄 처리->다중 프로그래밍, 시분할, 다중처리, 실시간 처리, -> 다중모드 -> 분산 처리
    • 일괄 처리(Batch Processing)
      • 초기의 컴퓨터 시스템에서 사용하는 형태
      • 일정 기간 동안 모은 데이터를 한 번에 처리하는 방식
      • 효율적 사용 가능
      • 응답 시간이 늦지만 하나의 작업에 모든 자우너을 사용하므로 CPU 휴지 시간이 줆어듬
      • 급여 계산, 기불 계산, 연말 결산 등에 사용
    • 다중 프로그래밍
      • 하나의 CPU와 주기억장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식
      • 하나의 주기억장치에 2개 이상의 프로그램을 기억시킨 후 하나의 CPU와 대화하면서 동시에 처리함.
    • 시분할(Time Sharing)
      • 여러 사용자가 사용하는 시스템에서 각 사용자들의 프로그램을 번갈아 가며 처리해 줌으로 독립된 컴퓨터를 사용하는 느낌을 줌
    • 다중 처리
      • 여러개의 CPU와 하나의 주기억장치를 이용하여 여러개의 프로그램을 동시 처리하는 방식
      • 하나의 CPU가 고장나도 다른 CPU가 처리할 수 있어 시스템의 신뢰성과 안정성이 높다.
    • 실시간 처리
      • 데이터 처리를 즉시 처리하여 결과 산출하는 방식
      • 제어 업무 등 시간에 제한을 두고 수행되어야 하는 작업에 사용
    • 다중 모드 처리 
      • 일괄 처리, 다중 처리, 시분할, 실시간 처리 시스템을 한 시스템에서 모두 제공하는 방식
    • 분산 처리
      • 여러 컴퓨터를 통신 회선으로 연결하여 하나의 작업을 처리하는 방식
      • 각 단말장치나 컴퓨터 시스템은 고유의 운영체제와 CPU, 메모리를 가지고있음
    • 프로세스
      • CPU에 의해 처리되는 사용자 프로그램이나 시스템 프로그램을 의미하며 프로세스는 각종 자원을 요구한다.
      • 실행중인 프로그램, PCB를 가진 프로그램, 실기억장치에 저장된 프로그램
      • 프로시저가 활동중인 것
      • 프로세서가 할당하는 개체로서 디스패치가 가능한 단위
    • 프로세스의 주요 상태
      • 준비
      • 실행
      • 대기,보류 블럭
    • 스레드(=경량프로세스)
      • 하나의 프로세스 내에서 병행성을 증대시키기 위한 메커니즘으로 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위
      • 독립적인 스케줄링의 최소 단위로서 독립적인 다중 수행이 가능함 
        • 하나의 스레드가 존재할 경우 단일 여러개일 경우 다중 스레드라고 함
    • PCB(Process Control Block)
      • 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳으로 프로세스가 생성될 때마다 PCB가 생성되고, 완료되면 제거됨.
    • 스케줄링
      • 프로세스가 생성 실행될 때 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
    • 상호 배제
      • 프로세스 공유 자원을 사용할 경우 다른 프로세스가 해당 공유자우넝르 사용하지 못하게 하는 기법
      • 임계 구역 내에서는 인터럽트, 교착상태, 무한반복이 발생되지 않도록 해야한다.
    • 상호 배제 구현 기법
      • SW적 구현 방법
        • 2개의 프로세스 기준
          • 데커, 피터슨 알고리즘
        • 그 이상의 프로세스
          • Test&Set 기법, Swap 명령어 기법
    • 세마포어(Semaphore)
      • 각 프로세스에 제어 신호를 전달하여 순서대로 작업하는 기법
      • 다익스트라가 제안 했으며 P와 V라는 2개의 연산에 의해 동기화를 유지하고 상호 배제의 원리를 보장한다. 
      • S는 P와 V연산으로만 접근 가능한 세마포어 변수로 공유자원 갯수를 나타내고 1과 0 혹은 0과 양의 값을 가질 수있다.
        • P연산
          • 자원을 사용하려는 프로세스들의 진입 여부를 자원개수(S)를 통해 결정하는 것으로 자원 갯수를 감소 시켜 (S=S-1) 자원이 점유 되었음을 알림
        • V연산
          • 대기중인 프로세스를 깨우는 신호로 자원의 갯수를 증가시켜 (S=S+1) 자원이 반남되었음을 알림
  • 교착상태 발생 조건
    • 상호배제
    • 점유와 대기
    • 비선점
    • 환형대기 
  • 교착상태 해결 방법
    • 예방(Prevention)
      • 상호배제, 점유와 대기, 비선점, 환형대기 중 어느 하나를 발생하지 않게 하는 방법
    • 회피(Avoidance) 기법
      • 교착 상태가 발생할 가능성을 배제하지 않고 발생 시 피해가는 방법으로 주로 은행원 알고리즘이 사용됨
        • 은행원 알고리즘
          • 다익스트라가 제안한 것으로 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래
          • 교착상태가 발생하지 않을 경우 안전 상태, 교착 상태가 발생시 불안정 상태
    • 회복(Recovery)
      • 교착상태를 일으킨 프로세스 종료
    • 배치 전략(Placement) 전략
      • 주기억 장치 프로그램이나 데이터 내에 위치를 정하는 전략
        • 최초 적합(Best fir)
          • 주기억 장치의 빈 공간 중 순서대로 첫 번 째 주소에 배치하는 전략
        • 최적 적합(Best Fit)
          • 빈 공간이 가장 적게 남는 위치에 배치하는 전략
        • 최악 적합(Worst Fit)
          • 빈 공간이 가장 많이 남는 위치에 배치하는 전략
    • 단편화
      • 분할된 주기억장치에 할당하고 반납하는 과정을 반복하면서 사용되지 안혹 빈 공간 조각을 의미한다.
        • 내부 단편화 : 분할된 영역에 프로그램이 할당된 후 사용되지 않고 남아 있는 빈 공간
        • 외부 단편화 : 분할된 영역보다 프로그램이 커서 사용되지 않고 남아 있는 빈 공간
        • 해결 방법 : 통합, 압축
    • 가상 기억 장치
      • 보조 기억장치의 일부르 주기억 장치 처럼 사용함으로써 용량이 작은 주기억장치를 마치 큰 용량 처럼 사용하지는 것
        • 페이지 기법
          • 일정하게 나눠서 적재
        • 세그먼테이션 기법
          • 다양한 크기의 논리적인 단위로 나눠서 적재
    • 파일의 구조 
      • 순차 파일(Sequential File)
        • 레코드를 논리적 처리 순서에 따라 연속된 물리적 저장공간에 기록하는 것
          • 장점 
            • 파일의 구성요이, 기억 공간 이용 효유르 처리속도, 처리비용, good
          • 단점
            • 새 레코드를 삽입하거나 삭제하는 겨웅 파일 전체를 복사한 후 수행해야 하므로 시간이 많이 걸림
            • 검색 효율이 낮음, 접근 및 응답 시간이 느림
      • 색인 순차 파일
        • 순차 파일과 직접 파일에서 지원하는 편성 방법이 결합된 형태
        • 장점
          • 순차, 임의 처리가 모두 가능 효율적인 검색 가능, 삭제, 삽입, 갱신이 용이함
        • 단점
          • 색인, 오버플로, 처리를 위한 추가 기억공간이 필요 접근 시간이 직접 파일보다 느림
      • 직접 파일
        • 파일을 구성하는 레코드를 임의의 물리적 저장공간에 기록하는 것
        • 장점
          • 각 레코드에 직접 접근하거나, 기록, 접근 시간, 레코드 삽입, 삭제가 용이함
        • 단점
          • 레코드 주소 변환 과정이 필요하고 이로인한 시간 소요, 기억공간의 효율이 저하, 물리적 구조에 대한 지식이 필요
    • 분산 처리 시스템
      • 장점
        • 투명성 보장
        • 연산 속도, 신뢰도 사용 가능도가 향상
      • 단점
        • 보아넹 취약하다
        • 소프트웨어 개발이 어려워 구축 비용이 어렵고 복잡한다. 
    • 분산 처리 시스템의 종류 
      • 스타형
        • 모든 사이트가 하나의 중앙 노드에 직접 연결
        • 중앙 노드 과부하 시 현격한 성능 저하
      • 링형
        • 각 사이트는 다른 두 사이트와 물리적인 연결
        • 단방향 또는 양방향으로 정보 전달 가능
      • 트리형
        • 상위 사이트가 고장 나면 그 하위 사이트 들은 통신 불가능
      • 다중 접근 버스 연결형
        • 하나의 버스가 스시템의 내의 모든 노드와 연결
        • 노드의 추가 삭제가 용이
      • 망형
        • 각 사이트 내 모든 사이트오 ㅏ연결된 구조
        • 설치비용은 많지만 통신 비용은 적다.

 

 

  • 블록체인(Block Chain)
    • 온라인에서 거래 내용이 담긴 블록이 형성, 거래 내역을 결정하는 주체는 사용자
    • 블록은 네트워크에 있는 모든 참여자에게 전송
  • 앱 카드(App Card)
    • 신용카드를 온라인이나 모바일 앱에 등록하여 간편하게 결제할 수 있도록 하는 카드
  • 안드로이드 누가(Android Noutgat)
    • 구글이 2016년 5월에 내놓은 최신 안드로이드 운영체제의 공식이름
  • 핵티비즘(Hacktivism)
    • 정치, 사회적 목적을 달성하기 위해 해킹하거나 목표물인 서버 컴퓨터를 무력화 하는 기술
  • 스캠공격
    • 기업의 이메일, 정보를 해킹, 거래처로 둔갑시켜서 무역 거래 대금을 가로채는 범죄 수법
  • 5G(IMT-2020)
    • 차세대 통신 기술로 5세대 이동통신은 최고 전송 속도가 초당 1기가바이트(Gbps) 수준
  • 스낵 컬쳐(Sanck Culture)
    • 과자를 먹는 5분~15분 사이에 문화 컨텐츠를 소비함
  • 핸즈프리(Hands-Free) 구글 서비스
    • 스마트폰을 꺼내거나 스마트워치를 근거리 무선통신 리더에 갖대 댈 필요도 없이 완전히 손을 해방 시킨다상태에서 결제
  • 마켓 플레이스
    • 페이스북이 만든 당근 마켓
  • 코드커팅(Cord-Cutting)
    • 유로 방송 시청을 해지하고 TV, OTT(Over-The-Top)등 새로운 플랫폼으로 이동
      • 올레티비->넷플릭스
  • 워크플레이스(Wrokplace by Facebook)
    • 페이븟우게서 공개한 같은 직장 동료들이 SNS 기반으로 협업하기 위한 기업용 소셜 도구
  • 모바일 겟돈
    • 모바일+아마겟돈 : 심판의 날 모바일로 준비가 덜 된 세력은 망한다.
  • 로봇저널리즘(Robot Journalism)
    • SW는 인터넷상에서 각종 정보를 수집하고 정리한 뒤 알고리즘을 통해 이를 분류하고 의미를 해석, 기사를 작성
  • 드로니 (Dronie)
    • 드론으로 사진찍어 SNS에 올리는 사람  
  • 디지털 발자국
    • 사람들이 인터넷을 사용하면서 웹상에 남겨 놓은 다양한 디지털 기록
  • 스마트 커머스
    • 온라인과 오프라인의 경계를 허물고 쇼핑에서 유통, 마케팅까지 아우르는 것
  • 구글세(Google Tax)
    • 다국적 IT 기업을 대상으로 부과대는 각종 세금
  • 피아오자이족
    • 밖으로 돌아다니며 일하지만 실제로는 스마트폰으로 인터넷 세상에 머무르는 현대 중국인들을 일컫는 말
    • 피아오 한 군데 정착 X  + 자이 한군데 머물러 있다는 뜻
  • 글로벌 원빌드 게임
    • 메신저 플랫폼 사업자별로 게임 버전을 내지않고 '구글', '애플' 등에 한 가지 버전으로 출시
    • 즉 같은 게임을 마켓, 앱스토어에 동시에 출시하는 형태
  • 리버스 쇼루밍(Reverse Showrooming)
    • 오픈마켓, 소셜커머스등 온라인 쇼핑몰에서 제품 정보를 수집한 후 오프라인 매장에서 해당 상품을 구매하는 소비 형태
  • 브루트 포스 공격
    • 무작위 대입 공격 최적화나 호율성과는 거리가 멀고 조합 가능한 모든 경우의 수를 모두 대입해보는 100% 정확도
    • 사용자 인지도 어렵고 개인정보의 대량 침해 위험이 있으며, 최근 핀테크 서비를 겨냥해 제작된 악성코드에서 브루트 포스 공격방식이 발견됨
  • 에밀리 로봇
    • 인명구조 로봇
  • 스마트 러닝
    • 클라우드 컴퓨팅을 기반으로한 무선 인터넷, 스마트 장치등을 활용한 교육의 일종
    • 스마트 디바이스(스마트 센서, 부픔이 적용된 디바이스)의 등장과 더불어 유러닝(U-learning)이 한단계 진화한 개념
  • 핑크택스(Pink Tax)
    • 같은 상품이라도 여성용이라는 수식어가 붙으면 가격이 더 비싼 것
  • 프로그래매틱 바잉
    • 알고리즘으로 이용자의 검색 경로, 검색어 등의 빅데이터를 분석해 이용자가 필요하로 하는 광고를 자동적으로 띄어 주는 광고 방식

============================================================================추가==========================================================================

 

  • 데이터 3법
    • 데이터 이용에 관한 규제 혁신과 개인정보 보호 협치(거너번스) 체계 정비의 두 문제를 해결하기 위한 개정안
    • 개인정보보호법
    • 정보통신망법
    • 신용정보법
  • 그로스 해킹
    • 제품 판매와 노출을 목적으로 기술 벤처 기업에 의해 개발된 창의성과 분석적 사과, 소셜 분석을 활용하는 마케팅 기법이다. 초반에는 스타트업 기업에서 시작했으나 현재는 많은 대기업, 중소기업에서도 선호하는 기법이다.
    • 사용자의 행동 패턴을 데이터로 추출하고, 수집된 데이터를 분석한 후, 창의적인 마케팅 전략을 세워 회사를 급성장시키는 것.
  • 초연결사회(Hyper-connected Society)
    • 언텍트 문화가 확산되고 디지털 전환이 가속화 될수록, 초연결사회에 가까이 다가갈 것으로 예상된다.
    • 초연결 사회는 인간과 인간, 인간과 사물, 사물와 사물이 네트워크로 연결된 사회이며, 이미 우리는 이런 초연결 사회로 진입해 있다고 말했다.
    • 초연결사회는 IoT(iternet of things)을 기반으로 구현되며, SNS(소셜 네트워킹 서비스), 증강 현실(AR) 같은 서비스로 이어진다.
  • 디지털 뉴딜
    • D.N.A(데이터, 네트워크, 인공지능) 생태계 강화. 교육 인프라 디지털 전환, 비대면 산업 육성, 사회간접자본(SOC) 디지털화 등 4대 분야에 걸쳐 12개 추진과제로 구성된 정책
  • 데이터 댐
    • 디지털 뉴딜 정책에 D.N.A 중 D(Data)를 담당하는 기술로 데이터 댐은 이러한 광범위한 데이터를 '댐'에 가둬두고 필요한 곳에 사용할 수 있도록 하는 것이다. 이를 위해 '수로'에 해당되는 네트워크가 필요하다. 이왕이면 속도가 아주 빠른 5G네트워크가 활용돼야 한다.
    • 데이터 댐을 구축하기 위해서는 공공 데이터의 개방이 필요하다. 예를 들어 정밀도로지도, 안전-취약 시설물 관리 정보 등 공공기관이나 정부가 갖고 있는, 기존에 개방되지 않았던, 공공데이터를 민간의 데이터 기반 서비스 개발을 우해 연계할 필요가 있다.
    • 결과적으로, 데이터 댐 구축은 빅데이터 플랫폼, 공공 데이터 포털, 데이터 스토어 등 관련 산업의 부흥을 기대하게 만든다.
  • OTT(OverTheTop)
    • 넷플릭스의 대성공 이후 아마존, 디즈니 같은 거대 기업들이 OTT를 미래 핵심 서비스로 인식하여, 시장 선점을 위해 경쟁하고 있다.
  • 하이퍼바이저
    • 호스트 컴퓨터에서 다수의 운영체제(OS)를 동시에 실행 하기 위한 논리적 플랫폼
  • 커널
    • 운영체제의 핵심 개념으로 디바이스나 메모리같은 하드웨어 자원을 관리하고, 프로세스의 스케줄을 관리하여 다중 프로세스를 구현하며, 시스템에 연결된 입,출력 등을 처리한다.
  • 텐서플로
    • 구글에서 개발한 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소트프웨어 라이브러리로, 심볼릭 수학 라이브러리이며 인공 신경망 같은 기계 학습 응용프로그램에서도 사용된다.
  • 리브라
    • 퍼블릭 블록체인이 아닌 프라이빗(허가형) 블록 체인을 기반으로 운영될 것이다.
    • 페이스북은 왓츠앱과 매신저 등 자사 서비스들을 활용해 리브라를 글로벌 결제 플랫폼으로 활용 계획
    • 스테이블 코인 출시 하기로함 (페이스북)
  • ERD(Entity Relationship Model)
    • 마름모
      • 개체사이의 관계
    • 타원
      • 속성
    • 링크
      • 직선
  • 시피어 피싱
    • 불특정 다수가 아닌 특정기관이나 기업의 내부 직원을 표적 삼아 집중적으로 공격하는 행위
    • 신뢰할 수 있는 내용처럼 위장한 악성 이메일을 관련자들에게 전송하여 감영시킨다.
    • 원격 제어 및 데이터 탈취 등을 시도하는 대표적인 지능형 표적 공격
      • HWP,PDF,DOC등 파일의 취약점을 이용한 공격활용이 많으므로 자주 사용하는 프로그램은 항상 최신버전으로 업데이트 하는 것이 중요
  • 스미싱
    • 무료 쿠폰, 택배 등의 문자 메시지를 보낸 개인 정보를 탈취하는 사기 수법
  • 파밍
    • 악성 프로그램에 감영된 컴퓨터를 조작하여 정상 사이트에 접속하더라도 가짜 사이트로 접속을 유도하여 개인정보를 탈휘하는 사기 수법이다.
  •  

 

 

 

 

클라우드 컴퓨팅

  • 클라우드 컴퓨팅
    • 자신의 컴퓨터가 아닌 인터넷으로 연결된 다른 컴퓨터로 정보를 처리하는 기술
    • 1960년대 미국의 존 메카시가 "컴퓨팅 환경은 공공 시설을 쓰는 것 과도 같을 것" 이라고 개념을 제시
    • 구글 연구원 크리스토프 비스글리아가 최초 고안
  • 클라우드 컴퓨팅 특징
    • 여러 IT 기기를  통해 언제 어디서든 정보를 이용 가능
    • 컴퓨팅 자원을 피룡한 만큼 빌려쓰고 사용요금을 지급하는 방식
    • 빅데이터 구축, 디바이스의 연산 용량 한계를 극복하기 위해 시작
    • 인터넷 상의 서버를 통해 IT 관련 서비스를 한번에 사용할 수 있는 컴퓨팅 환경
    • 정보가 인터넷상 서버에서는 영구적으로 저장됨
  • 클라우드 컴퓨팅의 장점
    • 초기구입 비용 적음
    • 웹을 실행할 사양이면 충분하게 사용 가능
    • 휴대성 높음
    • 가상화 기술과 분산 컴퓨팅 기술로 서버의 자원을 묶거나 분할하여 필요할 때 사용 하므로 컴퓨터 가용율이 높다.
  • 클라우드 컴퓨팅의 단점
    • 서버가 공격당하면 개인정보 유출 위험
    • 재해에 서버의 데이터가 손상되면, 백업 하지 않으면 정보를 되살리지 못한다.
    • 사용자가 원하는 애플리케이션을 설치하는 데에 제약이 있음
    • 통신환경이 열악하면 서비스 받기 힘듬
  • 클라우드 스토리지 서비스
    • 데이터 아카이브(보관) 및 백업(보호), 파일 서버, 재해 대책 등의 용도로 이용되는 서비스
    • AWS
    • 어려 개의 데이터 센터에 데이터를 분산 저장함으로써 데이터 손실을 막음
  • 클라우드 기반 하드웨어 보안 모듈
    • 클라우드(데이터센터) 기반으로 암호화 키 생성, 저장, 처리 등을 제공하는 정보보안 서비스
  • 그리드 컴퓨팅
    • 모든 컴퓨팅 기기를 하나의 초고속 네트워크로 연결하여, 컴퓨터의 계산능력을 극대화한 차세대 디지털 신경망 서비스
    • 유효처리능력(사용되지 않는 능력)을 공유
  • 유비쿼터스 컴퓨팅
    • 언제 어디든지 어떤 기기를 통해서도 컴퓨팅 할 수 있는 것
  • 엣지 컴퓨팅
    • 말단 기기에서 컴퓨팅을 수행 후 중앙 데이터 센터로 보낸다.
    • 약 10평방 미터 이하 규모의 마이크로 데이터 센터들로 구성된 네트워크
  • 엣지 컴퓨팅 특징
    • 중앙 서버가 아닌 네트워크 단말 쪽에서 데이터를 분석하고 처리한다.
    • 과다 트레픽을 발생을 막으며 안정적으로 실시간 처리
    • 수백 대의 자동차가 동시에 데이터를 쏟아내는 자율주행차에 적합한 기술이다.
  • 클라우드 컴퓨팅 vs 엣지컴퓨팅
    • 클라우드 컴퓨팅이 데이터를 처리하기 위해 데이터 센터가 있는 반면, 엣지 컴퓨팅은 스마트폰과 같은 장치에서 데이터 처리가 가능하다.
  • 클라우딩 컴퓨팅 vs 가상화
    • 쉽게 정의하면 가상화는 기술이고, 클라우드는 방법론이다.
    • 가상화
      • 하나의 서버로 여러 개의 서버 용량을 제공할 수 있는 기술, 즉 하드웨어에서 기능을 분리하는 기술
      • 스케일 업 방식( 서버에 CPU나 RAM등의 부품을 추가하여 서버 자체 성능 업)
    • 클라우드 컴퓨팅
      • 여러 대의 컴퓨터가 공유된 리소스 풀에 엑세스할 수 있도록 하는 것
        • 가상화를 통해 가능하게 된 시스템
      • 스케일 아웃 방식 (서버 대수를 능력 처리능력 업)
  • Saas(SoftWare as a Service)
    • 서비스 제공
      • 전자 메일, 그룹 웨어, CRM, 구글의 Google Apps
  • PaaS(Platform as a Service)
    • 플랫폼 제공
      • 자사의 프로그램 + PasS 개념
      • 자사에서 운용 중인 애플리케이션의 최대 부하를 분산 처리하는 경우
  • IaaS(Infrastructure as a Service)
    • 인프라 제공
      • 물리적 서버 CPU, 메모리, 스토리지 등 하드웨어 자원을 소프트웨어적으로 나누어 사용자에게 제공하는 것 
      • 기업 사용자가 스스로 설치하고 관리해야 함
      • 개발자가 하는 역할이 많음
      • AWS, DropBox, 네이버 클라우드
  • 클라우드 배포 모델
    • 클라우드
      • 클라우드 상에 완전히 배포
    • 온프레미스
      • 프라이빗 클라우드
      • 리소스의 활용도를 높이기 위해 앱 관리 및 가상화 기술이용
    • 하이브리드
      • 클라우드 + 클라우드X 리소스 간 인프라와 앱을 연경
  • 클라우드 이용 모델
    • 퍼블릭 클라우드(1:다)
      • 대규모 산업 그룹을 위해 제공된다. 
      • 클라우드 사용자가 시스템을 구축하고 인터넷 망 등의 네트워크를 통해 불특정 다수의 기업과 개인에게 서비스를 지공하는 형태
      • 클라우드 시스템은 기업 또는 개인의 방화벽 외부에 구축됨
    • 프라이빗 클라우드(1:1개념)
      • 단일 조직에서 독점적으로 사용 하도록 클라우드 인프라를 제공한다. 
      • 데이터 센텨에 클라우드 관련 기술이 활용된 자사 전용 환경을 구축하여 컴퓨팅 리소스를 유연하게 이용할 수 있도록 하는 형태
        • 가상화 자동화 같은 기술 활용 성능과 비용이 최적화되고 유연한 사용자 정의 가능 (1:1)
    • 커뮤니티 클라우드(퍼블릭,프라이빗사이)
      • 공동의 목적을 가진 특정 기업들이 클라우드 시스템을 형성하여 데이터 센터에서 공동 운영
    • 하이브리드 클라우드
      • 조직은 Private 클라우드를 사용하고 다른 클라우드 서비스 업체의 Public 클라우드를 사용하는 것

빅데이터

  • 인공지능 AI

    • 컴퓨터가 인간의 지능적인 행동을 모방
  • 머신러닝
    • 빅데이터를 분석해 미래를 예측하는 기술
    • 데이터를 수집, 분석해 미래를 예측한다는 점에서 빅데이터 분석과 유사하지만 컴퓨터 스스로가 방대한 데이터를 스스로 수집, 학습한다는 점에서 차이가 있음
  • 데이터 마이닝
    • DB로부터 과거에는 알지 못했지만 데이터 속에서 유도된 새로운 데이터 모델을 발견하여 미래에 실행 가능한 정보를 추출해내고 의사 결정에 이용하는 과정을 말한다.
    • 즉 데이터에 숨겨진 패턴과 관계를 찾아내어 정보를 발견해 내는것이다.
  • 머신러닝 학습
    • 지도학습
      • 정답이 있는 데이터를 활용해 학습시키는 방식
      • 분류
        • 이진 분류 :어떤 데이터에 대해 두 가지 중 하나로 분류 하는 것 : YES OR NO 
        • 다중 분류 : 어떤 데이터에 대해 여러 값 중 하나로 분류 하는 것 : What?
      • 회귀
        • 어떤 데어터들의 특징을 토대로 값을 예측
        • 결과 값은 실수 값을 가질 수 있따.
        • (Q) 어디 동네에 어떤 평수 아파트면 집 값이 어느 정도야? (A)어디 동네 24평이면 얼마 이다
    • 비지도학습
      • 정답을 따로 알려주지 않고(Label이 없다.) 비슷한 데이터들을 군집화 하는 것 일종의 그룹핑 알고리즘
        • 특정 동물을 보여주면 다리가 4개, 목이 긴 등의 방식으로 분류함
    • 강화학습
      • 현재의 상태에서 어떤 행동을 취하는 것이 최적인지 학습하는 것
      • 행동을 취할 때마다 외부 환경에서 보상이 주어지는데 이러한 보상을 최대화 하는 방향으로 학습
  • 로지스틱 회귀(2진분류)
    • 회귀를 사용하여 데이터 어떤 범주에 속할 확률을 0~1 사이에 값으로 예측하고 그 확률에 따라 가능성이 더 높은 범주에 속하는 것으로 분류해 주는 지도 학습 알고리즘
    • ex) 스팸 메일일 확률 0.5이상이면 spam으로 아니면 ham으로 분류, 이렇게 데이터가 2개의 범주 중 하나에 속하도록 결장하는 것
  • 클러스터링(군집화)
    • 유사한 데이터 사례들을 하나의 세트로 그룹화
  • 차원축소
    • 변수 분류 차원을 줄이는 작업
    • 차원수를 줄이면 잠재된 유의미한 관계를 도출하기 용이 해진다.
  • SVM(서포트벡터머신)
    • 커널 트릭은 분리 가능한 비선형 함수를 다차원 분리 가능한 선형함수로 매핑하기 위해 사용
    • 분류를 위한 기준 선을 정의하는 모델이다. 분류되지 않은 새로운 점이 나타나면 경계의 어느 쪽에 속하는지 확인해서 분류 과제를 수행
  • 의사결정 트리, 앙상블 트리
    • 훈련 데이터에서 간단한 의사 겾렁 규칙을 학습해 예측하는 모델
    • 스무고개, 부트스트랩...
  • 빅데이터 인프라
    • 정형 데이터
      • 고정된 형태가 이쓰염 RDMBS에 저장할 수 있는 데이터 방식(excel, csv)
    • 반정형 데이터
      • 고정된 형태가 있고, 연산이 불가능하며 주로 API 형태로 제공, 추가적인 파싱(데이터 처리 기술)이 요구되는 형태
      • XML, HTML, JSON, 로그
    • 비정형 데이터
      • 고정된 형태가 없으며, 연산이 불가능한 형태의 데이터
      • 데이터 수집이 어렵고 용량이 커서 주로 Nosql에 저장된다.
      • Text, 이미지
    • 하둡
      • 아파티 하둡은 대량의 자료를 처리할 숭 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용프로그램을 지원하는 프리웨어 자바 SW 프레임워크
    • 스파크
      • 빅데이터 워크로드에 주로 사용되는 분산처리 시스템, 하둡과 마찬가지로 오픈소스 프로그램
      • 특정한 데이터셋에 대하여 반복처리와 연속적으로 이루어지느 변환 처리 고속화 목적
    • RDBMS 
      • RDMS란 관계형 데이터베이스를 생성하고 수정, 삭제 관리할 수 있는 SW
      • MySQL, SQLite, Oracle
    • NoSQL
      • NOSQL은 스키마가 없어 좀 더 자유롭게 데이터를 관리할 수 있느 데이터 저장 방법
        • MongoDB, Cassand, Redis

   

  

보안이슈

  • 데이터 3법 개정안
    • 신산업 육성을 위해서는 인공지능(AI), 클라우드, 사물인터넷 등 신기술을 활용한 데이터 이용이 필요하다. 그에 안전한 데이터 이용을 위한 사회적 규범 정립을 우해 데이터 3법 개정안이 발의 됐다.
  • 데이터 3법
    • 개인정보 보호법
    • 정보통신망법
    • 신용정보법
  • Covid19 관련 정보보안 위협
    • 코로나19 관련 코로나라는 단어가 포함된 웹사이트가 대량 생산 됨
    • 공공기관을 사칭해 코로나 관련 정보를 공유하는 척 악성 코드를 다운로드 및 실행
  • 재택근무와 보안 위협
    • 소셜엔지니어링 공격
      • 사용자 계정을 탈취하거나 시스템 루트 권한을 뺏기 위한 공격
  • APT(지능형지속위협)
    • 회사 공지사항이나 이력서를 가장한 공격
  • 이모텟(Emotet) 악성코드
    • 당신을 할로윈 파티로 초대합니다등과 같이 사용자의 호기심을 자극하는 스팸 메일 형태의 악성코드
  • 글룹테바(Glupteba)
    • 프로그래밍 언어 고(go)로 개발된 악성코드로 다수의 추가 모듈을 다운로드하며 어려 기능을 갖지만 실직적으로는 모네로(XMR) 코인 마이너를 설하는 암호화폐 채굴 악성 코드이다.
  • NjRAT
    • 키로깅을 포함한 정보 유출 외에도 공격자의 명령을 수행할 수 있으며, 대부분 웹 하드나 토렌트를 통해 정상 파일로 위장하여 유포
  • 로키봇(Lokibot)
    • 인포스틸러 악성코드로서 웹 브라우저, 메일 클라이언트, FTP 클라이언트 등의 프로그램들에 대한 정보를 유출. 주로 스펨 메일 형태로 유포됨에 따라 유사한 유포 파일명을 지니고 있으며, C&C 서버는 대부분 fre.php로 끝나는 특징이 있다.
  • 폼북(Formbook)
    • 인포스틸러 악성코드로서 스팸 메일을 통해 유포되며 유포 파일명도 유사하다.
    • Ex) *아이테크-발주서 송부의견.exe
  • 오픈소스 취약점 발생 사례
    • 아파치 스트럿츠
      • 미국 신용평가기관인 에퀴팩스(Equilfax)는 웹 애플리케이션 개발 오픈소스인 아파치 스트럿츠의 원격코드 실행 취약점 공격으로 약 14천만 명의 개인정보 유출
    • MySQL
      • 오픈소스 DBMySQL 서버의 기본 포트를 통해 암호화 되어있지 않은 서버를 확인하고 랜섬웨어 공격을 시도
    • 쿠버네티스
      • 쿠버네티스에서 파일 복사 시 경로 조작을 통해 악성 파일 실행이 가능한 취약점이 발견됨. 디렉토리 탐색 공격 발생.
  • 인공 지능 보안 관련
    • 딥페이크(Deepfake)
      • 딥러닝과 페이크를 합성한 단어로 인공지능 기반으로 실제처럼 조작한 음성, 영상 등을 통칭
  • 다크웹
    • 익명성이 철저히 보장되고, Tor(The Onion Router) 브라우저와 같은 특정 브라우저를 통해서만 접근이 가능하며, 웹 사이트의 개설 폐쇄가 지속 반복되는 은닉성의 특징을 보유
  • 블루킵(Bluekeep) 취약점
    • 인증 없이 무단으로 PC조작이 가능한 미국 MS사 원격 데스크톱 서비스
    • 공격자가 조작된 원격 데스크톱 프로토콜 패킷을 전송하여 임의 코드를 실행할 수 있는 취약점으로 Window XP, 7 2008 제품 등에 영향

 

기타 IT 상식

  • 쉐어웨어
    • 일정기간 사용한 뒤에는 대금을 지불하고 정식 사용자 등록을 하라고 유도하는 SW
  • 프리웨어
    • 무료로 복제하고 사용할 있도록 공개 SW
  • 프록시 서버
    • 클라이언트와 서버사이에서 중개자 역할 하는 서버
  • 캐시
    • 데이터 중 사용자의 요청이 많은 것을 프록시 서버에 저장해 두었다가 사용자의 요청이 있을 경우 신속하게 전달
  • 망중립성
    • 유무선 통신네트워크를 서비스 사업자에게 평등하게 제공해야 한다는 원칙
  • MVNO
    • 이동통신망을 보유하지 않고 SKT,LG유플러스,KT 등 네트워크 사업자로부터 통신망을 임대하여 무선 통신 서비스를 제공하는 가상이동통신망 사업자
    • Ex) CJ헬로
  • 와이파이
    • 무선접속장치(AP)가 설정된 곳의 일정 거리안에서 초고속인터넷 접속 가능한 근거리 통신망
    • IEEE 802.11
  • NFC
    • 10cm 정도의 근거리에서 낮은 전력으로 단말기 간 데이터를 전송할 수 있으며 정보를 읽고 쓰는 것이 가능한 비접촉식 근거리 무선통신 방식
  • 인슈어테크
    • 데이터 분석과 인공지능(AI) 등 정보기술(IT)를 활용해 기존 보험산업을 혁신하는 서비스, 보험(insurance) + 기술(Tech)의 합성어
  • 판옵티콘
    • 컴퓨터 통신망과 DB를 통해 개인의 사생활을 감시 침해 하는 대상을 비유하는 말
  • 디제라티
    • 디지털시대에서 엘리트로 떠오르는 신지식인, 디지털과 지식계급의 합성어
  • CCL(Creative Commons License)
    • 불특정 다수가 마음대로 이용할 수 있게 하는 라이센스
  • 단방향 통신
    • 한쪽 방향으로 전송이 가능한 방식(라디오,TV)
  • 반이중 통신
    • 양방향 전송이 가능하지만 동시에 양쪽 방향에서 전송할 수 없는 방식(무전기)
  • 전이중 통신
    • 동시에 양방향 전송이 가능한 방식(전화, 전용선 데이터통신)
  • 비동기식 전송(간헐적)
    • 문자 코드 앞뒤에 Start bit와 Stop bit를 붙여서 바이트와 바이트를 구별하여 전송하는 방식
    • 2000bps 이하의 저속, 단거리 전송
    • 문자마다 시작 정지를 알리기 위해 비트가 추가되므로 효율이 떨어짐
  • 동기식 전송(연속성)
    • 문자영르 한 프레임을 만들어 일시에 전송하는 방식
    • 프레임 단위 전송이므로 전송이 빠름
    • 휴지 시간이 없으므로 전송효율이 큼
    • 원거리 전송에 사용
    • 단말기는 반드시 버퍼 기억장치에 내장
  • 오류 검출 방식
    • 패리티 검사
      • 전송 비트에 1비트인 패리티를 추가하여 오류검출
      • 가장 간단하지만 2개의 비트에 오류가 동시에 발생하면 검출 불가
      • 오류 검출만 가능 수정은 불가
    • 순환 중복 검사 (CRC)
      • 다항식 코드를 사용하여 오류를 검출하는 방식
      • 동기식 전송에 주로 사용
      • HDLC 프레임의 FCS를 만드는데 사용
      • 집단 오류 검출할 수 있고 검출률이 높아 가장 많이 사용됨
    • 해밍코드
      • 수신측에서 오류가 발생한 비트를 직접 수정하는 방식
      • 1비트의 오류만 수정이 가능하며 정보 비트이외에 비트가 많이 필요함
      • 전송 비트중 2^n 번째 오류 검출을 위한 패리티 비트로 사용
    • 상승 코드
      • 순차적 디코딩과 한계값 디코딩을 사용하여 오류 수정
      • 여러 비트오류 수정 가능
    • 자동 반복 여청 제어 방식(ARQ)
      • 통신 경로에서 오류 발생 시 수신측은 오류의 발생을 송신측에 통보, 송신측은 오류가 발생한 프레임을 재전송하는 오류 제어 방식
      • 정지-대기 ARQ(Stop and wait ARQ)
        • 수신측에서 오류의 발생을 점검 후 에러 발생 유무 신호 (ACK/ NAK) 신호를 보내올 때까지 기다리는 방식
      • 연속 ARQ(Coninuos ARQ)
        • Go-Back-N_ARQ
          • 수신측으로부터  NAK수신시 오류 발생 이후의 모든 블록을 재전송
        • 선택적 재전송 ARQ (Selecive-Repeat ARQ)
          • NAK 수신 시 오류가 발생한 블록만 재전송 하는 방식
        • 적응적 ARQ(Adaptive ARQ)
  • LAN(근거리_통신망)
    • LAN의 특징
      • 제한된 지역 내의 통신
      • 망에 포함 된 자원 공유
      • 오류발생률이 낮다
      • 성형, 버스형, 링형 망 형태
    • IEEE 802의 표준 규격
      • 802.8 고속 이더넷
      • 802.11 무선 LAN wifi
      • 802.15 블루투스
  • VAN(부가가치 통신망)
    • 단순한 정보의 수집 전달 이외에 부가가치를 부여하는 통신망
  • UDP
    • 비연결형 프로토콜
    • 복구기능 X
    • TCP/IP의 계층화 모델중 Transport 계층에 사용
    • 비연결형 프로토ㅗㅋㄹ
  • TCP/IP
    • TCP프로토콜과 IP프로토콜의 결합
    • TCP가 IP보다 상위층
    • 인터넷 기본 프로토콜
      • TCP
        • 전송계층
        • 오류제어, 흐름제어, 순서제어, 패킷다중화
        • 연결형 프로토콜 
      • IP
        • 네트워크 계층
        • 패킷 분해/조립, 호스트 주소 지정, 경로 선택
  • 소프트웨어 위기
    • SW개발 속도가 HW개발속도를 따라가지 못해 사용자의 요구사항을 처리할 수없는 문제가 발생
  • 소프트웨어 공학
    • 소프투에어 위기를 극복하기 위한 방안으로 SW의 품질과 생산성 향상을 목적
  • 소프트웨어 생명주기
    • 정의 단계
      • 무엇을 처리하는 SW를 개발할 것인지 정의하는 단계
    • 개발 단계
      • 실제 개발단계
    • 유지보수 단계
      • 가장 많은 시간과 비용이 투입되는 단계, 
  • 소프트웨어 생명주기
    • 프로토타입 모형
    • 나선형 모형
    • 폭포수 모형
  • 프로젝트 관리
    • 주어진 기간 내 최소의 비용으로 사용자를 만족시키는 시스템을 개발하는 활동
      • 효과적인 프로젝트 관리를 위한 3대요소(3P)
        • 사람(people)
        • 문제(problum)
        • 프로세스(proccess)
  • 프로젝트 비용 결정 요소
    • 프로젝트 요소
      • 제품의 복잡도 시스템의 크기 요구되는 신뢰도
    • 자원 요소
      • 인적 자원, HW지원, SW지원
    • 생산성 요소
      • 개발자의 능력, 경험, 주어진 개발 기간
  • 비용 산정 기법(LOC 기법)
    • SW각 기능의 우너시 코드 라인 수의 비관치, 낙관, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용 산정
  • 비용 산정 기법(COCOMO)
    • Boehm이 제안한 것으로 원시 프로그램의 규모에 의해 비용 산정
    • 조직형
      • 중 소규모의 SW로 일괄 자료 처리나 과학 기술 계산용등 5만 라인 이하
    • 반분리형
      • 조직형 내장형의 중간형으로 트랜잭션 처리 시스템이나 운영체제등 30만 라인이하
    • 내장형
      • 초대형 규모 트랜잭션 처리 시스템이나 운영체제 등 30만 라인이상의 소프트웨어 개발
    • COCOMO 모형의 종류
      • 기본형
        • SW크기와 개발 유형만을 이용하여 비용을 산정
      • 중간형
        • 기본 공식을 토대로 사용하나 제품 특성, 컴퓨터 특성 프로젝트 특성 비용 산정
      • 발전형
        • 중간형을 보완하여 만들어짐 개발공정별로 보다 자세하고 정확하게 노력산출
  • 브록스의 법칙
    • 프로젝트 진행중에 새로운 인력을 투입할 경우 더욱 지연시키고 프로젝트에 혼란을 가져오게 된다는 법칙
  • 프로젝트 팀 구성
    • 분산형 팀
      • 팀원 모두가 의사 결정에 참여하는 비이기적인 구성방식
    • 중앙 집중형 팀
      • 한 관리자가 의사결정하고 구성원들은 그 결정을 따르는 구성 방식으로 프로그래머 팀이라고도 함
    • 계층 적팀
      • 분산형 팀 구성과 중앙 집중형 팀 구성을 혼합한 형태
      • 5~7명의 초보 프로그래머를 작은 그룹으로 만들어 각 그룹을 고급 프로그래머가 관리하게 함
    • 품질 표준
      • 명확하게 정의된 SW의 특성을 의미하며 품질을 평가하는 기준 항목
      • 종류
      • 정확성, 신뢰성, 효율성, 무결성, 사용 용이성, 유지보수성, 유연성
  • 위험 관리
    •  프로젝트 개발 과정에서 각종 돌발 상황을 미리 예상하고 대책 수립
  • 형상 괸리(SCM)
    • 개발과정에서 SW의 생산물을 확인하고 SW 통제, 변경 산태를 기록하고 보관하는 일련의 관리 작업
    • SW 변경의 원인을 알아내고ㅓ 제어하며 적절히 변경되었는지 확인하여 담장자에게 통보하는 작업
    • 개발의 전 단계에 적용되는 활동으로 유지보수 단계에서 수행된다.
    • 개발의 전체 비용을 줄이고 개발 과정의 문제점을 해결하여 방해 요인을 최소하하는 것을 목적으로 한다.
  • 자료 사전 표기 기호
    • = 자료의 정의
    • + 자료의 연결
    • () 자료의 생략
    • | 자료의 선택
    • {} 자료의 반복
    • ** 자료의 설명
  • HIPO의 종류
    • 거시적 도표
      • 시스템의 전체적인 기능과 흐름을 보여주는 계층 구조도
    • 총제적 도표
      • 프로그램을 구성하는 기능을 기술한 것으로 입력, 처리, 출력, 전반적인 정보를 제공하는 도표
    • 세부적 도표
      • 총제적 도표에 표시된 기능을 구성하는 기본 요소들을 상세하게 기술한 도표
  • 결합도(낮을수록good)
    • 모듈 간에 상호 의존도를 나타낸다
  • 응집도(높을수록good)
    • 정보은닉 개념을 확장한 것으로 모듈이 독립적인 기능으로 정의되어 있는 정도를 나타냄
    • 내부요소에는 명령어, 명령어의 모임, 호출문 등이 있음.
    • 독립적인 모듈이 되기 위해서는 각 모듈의 응집도가 강해야함.
  • 화이트 박스 테스트(원시)
    • 기초경로 검사
    • 조건검사
    • 루프검사
    • 데이터 흐름 검사
  • 블랙박스 테스트
    • SW각기능이 완전히 작동되는 것을 입증하는 검사 기능검사
  • 객체지향 기법
    • 객체
      • 데이터와 함수 기능
    • 클래스
      • 객체의 집합으로 객체의 일반적인 타입의미
    • 메세지
      • 객체들 간의 상호작용을 하는데 사용되는 수단
  • 객체지향
    • 캡슐화
      • 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
      • 객체들의 재사용성이 용이함
      • 인터페이스가 단순해지고 객체간의 결합도가 낮아짐
    • 정보은닉
      • 캡슐화에서 가장 중요한 개념으로 다른 객체에 자신의 정보를 숨기고 연산만을 통하여 접근을 허용
    • 상속성
      • 상위 클래스의 모든 속성과 연산을 하위로 물려받는 것
    • 다형성
      •  

 

  • 컴파일러의 의미
    • 고급프로그래밍언에 쓰여진 프로그램으로 소스코드에서의 오브젝트로 변환 되는 것
      • 소스코드 : 말그대로 프로그래밍을 위한 일련의 텍스트들
      • 오브젝트코드 : 컴파일러에 의해 생성된 코드를 의미한다. 프로그래머는 소스코드를 작성함. 즉, 소스코드는 개발자가 사용하는 언어에 따른 명령어들의 조합이다. 그러나 명령어 실행을 위해서는 기계어로, 저레벨 언어로 쓰여져만 하드웨어 제어가 가능하다.
        • 저레벨 언어 : 기계어 또는 어셉블리어를 의미한다. 하드웨어와 더 밀접한 언어이다.
        • 고레벨 언어 : 기계어보다는 좀 더 인간의 언어에 가깝다. 읽기, 유지보수가 용이하다, 즉 기계어로 변환하기 위해 인터프리터나 컴파일러가 필수적으로 요구된다.
        • 컴파일러는 고레벨 언어를 저레벨언어로 변경하기 위해 필요한 장치 또는 도구라고 볼수있다.
  • 컴파일러와 인터프리터
    • 컴파일러, 인터프리터 둘 다 C나 자바같은 고레벨언어로 작성된 프로그래밍 언어를 기계어로 변환하지만 그 과정에서 차이가 있다.
    • 컴파일러는 전체소스코드를 보고 명령어를 수집하고 재구성함.
    • 인터프리터는 소스코드의 각 행을 연속적으로 분석하며 실행
      • 고레벨 언어 -> 중간 코드(intermediate code)로 변환하고 이를 각 행 마다 실행한다. 
    • 컴파일러가 실행시간이 빠르다.
    • 컴파일러는 전체 소스코드를 변환 한 뒤 에러를 보고하지만 인터프리터는 각 행 마다 실행하여 도중에 에러가 나면 바로 알려준다.
    • 예를 들어 파이썬은 인터프리트 언어이고, c, c++은 컴파일 언어이다. 자바는 인터프리터 컴파일러 모두 사용
  • Java compiler
    • "helloworld" 작성->javac 명령어를 통해 (helloworld자바 파일 -> 클래스파일로 변환)
    • temp.java ->javac(java compiler)가 바이트코드로 쓰여진 .class 파일로 변환 
      • .class 파일은 기계어인가?
        • 아니다. JVM을 위한 기계어로 변환하는 것이다.
  • Java 인터프리터
    • temp.java->javac(java compiler)->.class ->Java interpreter -> 기계어
  • 왜 java는 기본적으로 컴파일과 인터프리터를 병행하는 것 일까?
    • 플랫폼에 종속되지 않는다.
      • 속도가 느리지만 플랫폼에 종속되지않는다.
    • 자바 바이트코드는 컴퓨터와 프로그램 사이에 버퍼 역할을 한다.
      • 보안적으로 장점이 된다. 클래스 파일을 다운로드 받은 후 자바 인터프리터를 통해 바이러스나 기타 악성 프로그램에 대응 하는 가드 같은 보안 계층애 의해 보호 될 수 있다는 의미.
    • 반드시 자바언어에만 해당되는 것은 아니다.
      • 예를들어 파이썬 코드를 자바 바이트코드로 컴파일한 Jython을 java로 인터프리트 할 때, 또 ML, Lisp, 포트란 컴파일러가 자바 바이트코드로 컴파일 하는것도 비슷한 맥락

opensourceforgeeks.blogspot.com/2013/03/difference-between-compiler-interpreter.html

 

Difference between Compiler, Interpreter and Assembler

Difference between Compiler, Interpreter , Assembler and JIT or Just in time compiler.

opensourceforgeeks.blogspot.com

 

'개인공부 > ICT상식' 카테고리의 다른 글

[ICT 상식] 데이터 통신  (0) 2020.11.05
[ICT 상식]소프트웨어 공학  (0) 2020.11.05
[ICT 상식]  (0) 2020.11.04
[ICT 상식]  (0) 2020.11.03
ICT 상식  (0) 2020.11.02

+ Recent posts