약 5일동안 짬나는데로 정리했다...
산업기사 개편으로 이게 왠 고생이람
어차피 학점 채워지면 기사도 딸거니까 미리 정리해둘겸 관련 내용들 + 문제 정리했다.
추가로 올해 산업기사 개편된 부분에 나온 HTML+CSS 부분도 정리했다(JS는 못했다....) 아무튼 기출+여기있는 내용들 참고하면 왠만하면 필기는 문제 없을것이다.... (*프로그래밍 계산하는것들은 추가로 찾아가면서 공부해야함)
정보시스템 기반 기술
★소프트웨어 생명주기
1. 폭포수 모형
- 개발 각 단계를 확실히 매듭짓고 결과를 철저히 검토해 승인 과정 거침
- 이전단계로 돌아갈 수 X
- 가장 오래되고 폭넓게 사용된 전통적인 소프트웨어 생명 주기 모형
- 선형 순차적 모형
- 새로운 요구나 경험 반영이 어려움
2. 프로토타입 모형
- 사용자의 요구사항을 정확히 파악하기 위해 견본품을 만들어 최종 결과물을 예측하는 모형
- 요구 분석 단계에서 사용되며 승인 후 다른 모형을 이용해 본격적인 개발이 이루어짐
- 유지보수 단계가 아닌 개발 단계 안에서 유지보수가 이루어짐
- 의뢰자가 결과물이 만들어지기 전 모형을 볼 수 있음.
- 단기간에 제작해야 하기에 비효율적인 언어나 알고리즘을 사용할 수 있음.
3. 나선형 모형
- 폭포수 / 프로로타입 장점 + 위험분석기능 추가
- 점진적으로 완벽한 최종 소프트웨어를 개발하는 것 = 여러번의 개발 주기를 거침
- 위험을 관리하고 최소화 하는것이 목적 = 위험관리측면
- 대규모 개발에 적합
- 추가된 요구사항 반영 가능 / 유지보수 필요 X
- 비교적 최신기법
- 요구사항이나 아키텍처를 이해하기 어렵거나 중심이 되는 기술에 문제가 있는 경우 적합한 모델
★ 4. 애자일 모형 ★
- "민첩한" "기민한"
- 고객의 요구사항 변화에 유연하게 대응 / 일정 주기 반복
- 고객과의 소통에 초점
- 고객의 평가를 적극적으로 수용
- 스크럼, XP, 크리스탈, ASD 등
애자일(Agile) 소프트웨어 개발
- 프로젝트의 요구사항은 기능 중심으로 정의
- 소프트웨어 개발 방법론의 하나로서, 개발과 함께 즉시 피드백을 받아 유동적으로 개발하는 방법
- 개인과 소통 > 절차와 도구
- 작업 계획을 짧게 세워 요구 변화에 유연하고 신속하게 대응
- 소프트웨어가 가장 잘 실행되는데 가치를 둠!
- 고객과의 피드백이 중요.
★애자일 선언문 (개변동고)
- 공정과 도구보다 개인과 상호작용
- 계획을 따르기보다는 변화에 대응
- 포괄적인 문서보다는 동작하는 소프트웨어
- 계약 협상보다는 고객과의 협력
애자일 기법 중 스크럼(Scrum)에 관한 내용
- ★스크럼 = 팀이 중심이 되어 개발의 효율성을 높이는 기법
- 스크럼 마스터 = 팀이 스크럼을 효과적으로 활용할 수 있도록 보장하는 역할
- 제품 백로그 = 스크럼 팀이 해결해야 하는 목록으로 소프트웨어 요구사항, 아키텍처 정의 등이 포함
- 속도(Velocity) = 한 번의 스프린트에서 한 팀이 어느 정도의 제품 백로그를 감당할 수 있는지에 대한 추정치
- 스프린트 = 실제 개발 작업을 진행하는 과정 / 보통 2~4주 정도의 기간 내에서 진행
- 스프린트 회고 = 정해놓은 규칙 준수 여부 및 개선할 점을 확인하고 기록.
☆XP(eXtreme Programming)의 5가지 가치
- 용기
- 단순성
- 의사소통(커뮤니케이션)
- 피드백
- 존중
정형분석
소프트웨어 생명 주기 V모델
- 신뢰도 높은 시스템을 개발하는데 효과적
- 개발 작업과 검증 작업 사이의 관계를 명확히 들어내 놓은 폭포수 모델의 변형
- 폭포수 모델이 산출물 중심이라면, V 모델은 작업과 결과의 검증에 초점을 둠!
1. 단위 테스트
- "모듈" "컴포넌트"에 초점을 맞춰 테스트 (최소단위)
=모듈테스트라고도 불림, 기능성 테스트를 최우선으로 실행(사용자 요구)
2. 통합 테스트
- 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시킴
- 상호 작용 오류 검사
3. 시스템 테스트
- 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행하는지를 점검하는 테스트
- 유사한 테스트 환경에서 테스트해야함 (장애 리스크 최소화)
4. 인수 테스트 ☆
- 사용자의 요구사항을 충족하는지에 중점을 두고 테스트
- 당장 사용할 수 있도록 준비되어있는지 확인하는 테스트!
- 사용자가 "직접" 테스트
- 알파/베타 테스트가 포함
상향식 통합 테스트 / 하향식 통합 테스트
- 프로그램 전체 실행 X / 전체 실행 O
- 독립적인 구조 X / 독립적인 구조 O
- 가짜 모듈(Stub)필요X / 필요 O
- 드라이버(시험 가동기) 필요 O / 필요 X
- 하위 모듈 그룹(클러스터) 형성 필요 O / 필요 X
- 중요 모듈을 우선 테스트할때 적합 / 부적합
★ 인터페이스 요구사항 검토 방법
- 동료 검토 : 요구사항 명세서 작성자가 설명, 관계자들이 설명 들으면서 결함 발견
- 워크스루 : 검토 회의 전, 명세서를 미리 배포하여 사전검토 후에 짧은 검토 회의를 통해 결함 발견
- 인스펙션 : 작성자를 제외한 다른 검토 전문가들이 명세서 확인
테일러링(Tailoring)
- 프로젝트에 최적화된 개발 방법론을 적용하기 위해 절차, 산출물 등을 적절히 변경하는 활동
- 관리 측면 : 최단기간에 안정적인 프로젝트 진행을 위한 사전 위험 식별 및 제거
- 기술적 측면 : 프로젝트에 최적화된 기술 요소를 도입하여 프로젝트 특성에 맞는 최적의 기법과 도구 사용
테일러링 프로세스
- 특징 정의
- 표준 프로세스 선정 및 검증
- 상위 커스터마이징
- 세부 커스터마이징
- 문서화
~~ 내부와 외부 비교 ~~
내부적 기준 고려사항
- 목표 환경(구성원능력/납기비용)
- 요구 사항
- 프로젝트 규모
- 보유 기술(기술환경)
외부적 기준 고려사항
- 법적 제약사항
- ☆표준 품질 기준
★자료(데이터) 흐름도(DFD)의 구성요소
- 동그라미, 원 = 프로세스(Process)
- 화살표 = 데이터흐름(Data Flow)
- 네모, 사각형 = 외부 엔티티 = (Externel Entity , Terminator)
- 평행 직선 두개 = 데이터 저장소(Data Store)
자료 흐름도(DFD)에 관한 설명
- 자료 흐름 그래프 또는 버블 차트라고 함
- 구조적 분석 기법에 이용 / 하향식
- DFD의 요소는 화살표, 원, 사각형, 직선(단선/이중선)으로 표시
시간 흐름을 명확하게 표현→ 프로세스와 프로세스 간에 존재하는 상호작용 명확히 표현- 자료 흐름과 기능을 자세히 표현하기 위해 단계적으로 세분화함.
자료흐름도(DFD)의 작성 지침
- 자료는 처리를 거쳐 변환될 때마다 새로운 명칭을 부여
- 자료흐름도의 최하위 처리는 소단위 명세서를 갖는다.
- 어떤 처리가 출력자료를 산출하기 위해서는 필요한 자료가 반드시 입력
배경도에도 명칭과 번호를 부여해야 한다
UML(Unified Modeling Language)의 개념
- 객체지향 SW 개발 과정에서 산출물을 명세화/시각화/문서화 할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어.
- 개발 기획과 산출물에 대한 확인.
- 전문가 <> 비전문가 대화 도구
★★ UML 다이어그램 ★★
- 가시성(시각화) / 명세화 / 문서화
- 개발 방법론이나 개발 프로세스가 아니라 표준화된 모델링 언어
- 사물(Thing) / 관계 / 다이어그램 = 기본 구성 요소
UML의 관계
- 연관 관계(Association) : →
- 집합 관계(Aggregation) : 속이 빈 마름모
- 포함 관계(Composition) : 속이 채워 진 마름모
- 일반화 관계(Generalizion)
- 의존 관계(Dependency)
- 실체화 관계(Realization)
★UML 확장 모델 스테레오 타입(Stereotype)
= 새로운 요소를 만들어 내기 위한 확장 매커니즘
= 내부 의미는 다른 목적으로 사용하도록 확장
= "<<>>" 길러멧 기호를 사용하여 표현
- <<include>> : 포함
- <<extend>> : 실행할수도있고, 그렇지않을수도있고
- <<interface>> : 모든 메소드가 추상 메소드, 바로 인스턴스 만들 수 없음.
- <<entity>> : 처리흐름수행되는 과정에서 기억장치에 저장되어야할 정보 표현
- <<boundary>> : 외부 액터와의 상호작용 담당
- <<control>> : 기능의 로직 및 제어 담당
★★(외우기) UML 다이어그램의 분류★★
1. 정적 구조(구조 다이어그램)
= Structural Diagram
- 클래스
- 객체
- 컴포넌트
- 패키지
- 복합 구조
- 배치 다이어그램
= 클객컴패복배
정적 구조의 클래스 다이어그램
- 클래스 이름
- 속성
- 연산(Operation)
- ★접근 제어자(접근 제한자)
→ 1. ㅡ : 내부 접근(Private)
2. + : 외부 접근(Public)
3. # : 파생 클래스(Protected)
4. ~ : 패키지 클래스(default)
2. 동적 구조(행위 다이어그램)
= Behavioral Diagram
- 유스케이스
(연관,포함,확장,일반화,그룹화) - 상태
- 활동
- 시퀀스
(객체/생명선/실행/메시지/기간/확장) - 통신
- 상호 작용
- 타이밍 다이어그램
- 순차
☆ Usecase Diagram
= 사용자 관점 표현 / 기능 모델링 작업
- 유스케이스
- 액터(Actor)
- 시스템(System)
☆ Sequence Diagram
= 객체 간 상호 작용을 메시지 흐름으로 표현
- 객체(Object) : 사각형 안에 밑줄
- 생명선(Lifeine) : 점선
- 실행(Activation) : 점선 위 직사각형 = 실행 시간
- 메시지(Message) : 화살표
= OLAM 어람?
상향식 비용 산정 기법
- LOC(원시 코드 라인 수) 기법
- 개발 단계별 인원수 기법 : 기능을 구현시키는 데 필요한 노력을 생명 주기의 각 단계별로 산정
- 수학적 상정 기법 : 경험적/실험적 추정 모형 , 개발 비용 산정의 자동화를 목표로 함.
● LOC(원시 코드 라인 수, source Line of Code)기법
- 예측치 = ( 낙관치 + 4 * 기대치 + 비관치) / 6
- 측정이 용이하고 이해하기 쉬워 가장 많이 사용됨
- 예측치를 이용하여 생산성, 노력, 개발 기간등의 비용을 산정
- ex) 총 라인수 = 36000 / 프로그래머 = 6명 / 평균 생산성 = 300라인 / = 개발에 소요되는 기간은?
- === (36000 / 300) / 6 = 20개월
하향식 비용 산정 기법
- 전문가 감정 기법 : 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법
- 델파이 기법 : 위의 주관적 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법
★ 프로젝트 비용 산정 기법
Q. Rayleigh-Norden 곡선의 노력분포도
= Putnam 모형
Q. 경험 많은 두명 이상 전문가에게 비용 의뢰
= 전문가 감정 기법(모형)
Q. 많은 전문가의 의견 종합 산정
= 델파이 기법(모형)
Q. 원시코드라인수 기법
= LOC 기법(모형)
Q. 보헴이 제안한 것으로 LOC에 의한 비용 산정 기법
= COCOMO 모형
☆ COCOMO 모형의 유형 ☆
- organic : 조직형/소규모/5만 라인 이하
- Semi-detached : 반분리형/30만 라인 이하
- Embedded : 내장형 / 30만 라인 이상
클래스 설계원칙
- SRP(단일책임 원칙) : 한 클래스는 하나의 클래스만 책임짐 /
하나의 클래스만 변경가능하게 - ISP(인터페이스분리 원칙) : 인터페이스는 메소드와 의존관계가 없게 설계
- LSP(리스코프치환 원칙) : 서브타입은 항상 자신의 기반타입으로 "교체가능"하도록 설계
- OSP(개방폐쇄 원칙) : 클래스는 확장에 대해 열려 있어야 하며, 변경에 대해 닫혀 있어야 함.
- DIP(의존역전 원칙) : 구체적인 것이 추상화된 것에 "의존하도록" 설계
★ GOF 디자인 패턴 종류 ★
1. 생성 패턴(5가지) 외우기!
- 추상 팩토리(Abastract Factory Pattern) : 연관된 서브 클래스를 묶어 한 번에 교체 가능
- 팩토리 메소드 : 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴
- 빌더 : 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체 생성
- 프로토타입 : 원본 객체를 복제하는 방법으로 객체 생성
- 싱글톤 : 하나의 객체를 생성하면 어디서든 참조가능! / 클래스 내에 인스턴스가 하나뿐임을 보장!
= ★ 추성훈 식스팩 빌보드 프로듀싱 ★
2. 구조 패턴(7가지)
- Adaptor : 인터페이스가 일치하지 않을 때 사용!, 중간에서 맞춰주는 역할=Adaptor
- Bridge : 기능과 구현을 두 개의 별도 클래스로 구현 !
- Composite : 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용!
- Decorator
- Facade
- Flyweight
- Proxy : 접근 어려운 객체와 여기에 연결하려는 객체 사이의 인터페이스 역할을 수행하는 패턴!
3. 행위 패턴(9가지)
- 책임연쇄 : 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴
- 커맨드 : 요청을 객체 형태로 캡슐화
- 인터프리터 : 언어에 문법 표현을 정의하는 패턴 / SQL, 통신 프로토콜 같은 것들 개발 시 사용!
- 반복자(Iterator) : 접근이 잦은 객체에 대해 동일 인터페이스를 사용하도록 하는 패턴
- 중재자
- Memento
- Observer : 한 객체의 상태가 변화하면 다른 객체들에게도 변화된 상태 전달
- State(상태)
- Strategy
- Template Method
- Visitor(방문자) : 각 클래스를 방문하여 수행
★클린 코드 작성 원칙
- 가독성 : 코드 작성 시 들여쓰기 기능 사용
- 의존성
- 중복성
- 단위성 : 한 번에 한가지 처리만 수행 , 클래스/메서드/함수를 최소 단위로 분리
- 추상화 : 클래스/메서드/함수에 대해 동일한 수준의 추상화 구현, 상세 내용은 하위에서 구현
선형구조의 종류
- 스택 : LIFO★
- 큐 : FIFO★
- 데크 : 삽입과 삭제가 리스트의 양쪽 끝에서 모두 발생 가능 / 스택과 큐의 장점만 따서 구성
- 리스트 = 연결리스트(노드의 삽입/삭제) / 연속리스트(데이터를 삽입/삭제)
- 배열 : 동일한 자료형의 데이터들이 같은 크기로 나열되어 있음 / 정적인 자료구조 / 반복적인 데이터 처리
★스택(Stack)
- 책을 올려 놓는 것 처럼 "차곡차곡 쌓아 올린 형태의 자료구조"
- LIFO (Last In First Out) : 가장 마지막에 삽입된 자료가 가장 먼제 삭제되는 구조!
- 가장 최근에 저장된 값 다음에 저장(Push) / 가장 최근에 저장된 값이 먼저 나감(Pop)
- 인터럽트 처리, 서브루틴 호출 작업 등에 응용됨!
- ex) 웹 브라우저 방문기록(뒤로가기) / 실행 취소(undo) / 후위 표기법 계산
Q. 순서가 A,B,C,D 로 정해진 입력자료를 push, push, pop, push, push, pop, pop, pop 순서로 스택연산을 수행하는 경우 출력 결과는?
BDCA
Q. A, B, C, D의 순서로 정해진 입력 자료를 스택에 입력하였다가 출력한 결과가 될 수 없는 것은?
(단, 왼쪽부터 먼저 출력된 순서이다.)
- C, B, A, D
- C, D, A, B
- B, A, D, C
- B, C, D, A
A-B까지만 넣고 출력 한 다음 나머지 C-D를 넣고 처리하는 방식 또한 허용
2번의 경우에는 A-B-C-D 까지 적재되어 있고, C-D를 처리 한 후 A-B 상태에서 B를 처리 하지 않고는
A를 꺼낼 수 없기 때문에 정답은 2번.
★큐(Queue)
- "줄, 혹은 줄을 서서 기다리는 것"
- FIFO (First In First Out) = 선입선출
- 가장 최근에 저장된 값 다음에 저장 (Enqueue) / 가장 오래전에 저장된 값부터 나감 (Dequeue)
- 스택과 달리 큐는 한쪽 끝에서 삽입 작업이, 반대쪽 끝에서 삭제 작업이 양쪽으로 이루어짐!
- 순서 리스트의 뒤(Rear)에서 노드가 삽입 / 앞(Front)에서 노드가 제거
- ex) 은행엄무 / 우선순위가 같은 작업 예약(프린트의 인쇄 대기열) / 프로세스 관리 / 캐시 구현
☆Deque
- 양 쪽 끝에서 접근 가능한 Queue
- 한쪽에서 삽입 삭제 둘 다 됨.
비선형구조의 종류
- ★트리 : 노드와 가지를 이용해 사이클을 이루지 않도록 구성한 그래프의 특수한 형태★
- 그래프
★구하고자 하는 정보★
- 차수(Degree) : 3
= 전체 트리에서 가장 큰 차수 - B의 차수 : 3
- 전위 순회(Preorder) : A-B-D-E-H-I-F-C-G
- 중위 순회(Inorder) : D-B-E-H-I-F-A-C-G
- 후위 순회(Postorder) : D-E-H-I-F-B-G-C-A
- 근 노드(Root Node) : F
- 단말 노드(Terminal Node) : H, I, D, F, G
= 자식이 하나도 없는 노드 = 디그리(차수)가 0인 노드 = 잎 노드(Leaf Node)☆
★ 결합도(Coupling) ★
- 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계
- 결합도가 약할수록 독립적인 모듈 / 결합도는 약할수록 좋다!
아래는 결합도 약한 순서 외우기!★
- 자료 결합도(Data Couplign) : "자료 요소"로만 구성
- 스탬프 결합도 : "인터페이스"로배열 / "자료구조 전달"
- 제어 결합도(Control Couplign) : "흐름제어" "제어요소 전달"
- 외부 결합도 : 외부의 다른 모듈에서 참조
- 공유 결합도(common) : 공유되는 공통 데이터 영역
- 내용 결합도(content) : "직접 참조" "수정"
= 자스제외공내
★ 응집도(Cohesion) ★
- 모듈의 내부 요소들의 서로 관련있는 정도
- 모듈이 독립적인 기능으로 구성됐는지를 정도를 의미
- 응집도가 강할수록 독립적인 모듈 / 응집도록 강할수록 좋다!
- 기능적 응집도(Functional Cohesion) : "기능요소 " 단일문제"
- 순차적 응집도(Sequential Cohestion) : "그 다음 활동의 입력 데이터"
- 교환적 응집도(Communication) : "동일한 입력과 출력"
- 절차적 응집도(Procedural) : "순차적으로 수행"
- 시간적 응집도(Temporal) : "특정시간에처리"
- 논리적 응집도(Logical) : "유사한 성격"
- 우연적 응집도(Coincidental) : "서로 관련 없는 요소"
= 기순교절시논우
프로그램 설계도의 하나인 NS Chart에 관한 설명
- 논리의 기술에 중점을 두고 도형을 이용한 표현 방법
- 이해하기 쉽고 코드 변환이 용이
- 연속, 선택, 반복 등의 제어 논리 구조를 표현
- 그리기가 어려움 (전문성이 있어야 잘 그릴 수 있음)
- 임의의 제어 이동이 어렵다
- 상자 도표라고도 함 (화살표로 표현 X)
- 조건이 복합되어 있는 곳의 처리를 명확히 식별하기에 적합
코드 오류의 종류
1. Transcription Error (사본오류)
- 코드 기입 시 임의의 한자리를 잘못 표기한 경우
1998 > 1993
2. Transposition Error (전위오류)
- 코드 기입 시 임의의 연속된 자리가 바뀌어서 표기된 경우
1998 > 9198
3. Omission Error (생략오류)
- 코드 기입 시 한 글자를 빠드리고 기술한 경우
12345 > 1345
4. 첨가오류
5. 랜덤오류
6. 이중오류
☆해싱(Hashing)의 종류
- Bucket : 하나의 주소를 갖는 파일의 한 구역
- Slot : 1개의 레코드를 저장할 수 있는 공간
- Synonym : Home Address를 갖는 레코드들의 집합
- Collision : 2개 이상의 레코드가 같은 주소를 갖는 현상
해싱 함수 기법
- 재산법 : Division
- 폴딩법 : 배타적 논리값(XOR) 나오면 폴딩!
- 기수 변환법 : -키 숫자 진수를 다른 진수로 변환시켜~~ 나오면!
- 계수 분석법 : 숫자 분포 나오면!
★ 자료사전 기호
- 정의 : =
- 연결 : +
- 생략 : ()
- 선택 : []
- 반복 : {}
- 설명 : * *
★IPT(Improved Programming Technique) 기법
- 구조적 설계/코딩
- 프로그램의 제어흐름을 선형화 (생산성 향상)
- 프로그램의 품질을 향상시켜 유지보수를 용이하게 함
- 단일 입구와 단일 출구 = 표준화
- HIPO(문서화 기술) = 도식/총괄/상세
- 순차, 선택(조건), 반복
- 하향식 프로그래밍
GOTO문을 주로 활용→ GOTO문 배제
★ HIPO란?
- 문서화 도구
- 가시적도표, 총체적도표, 세부적 도표
- 의존 관계 동시 표현
- 보기 쉽고 이해하기 쉬움
상향식→ 하향식
구분 | White Box Test | Black Box Test |
관점 | 개발자관점 | 사용자관점 |
기준 | 논리상오류 | 인터페이스 및 성능 오류 |
v & v | 하위레벨 (시험환경) | 상위레벨 (사용자환경) |
기법 | Loop Condition Testing Data Flow Base Path Testing |
Boundary Value Testing Error Guessing Comparision Testing, Equivalence Partitioning |
활용 | 알파테스트 | 베타테스트(=기능테스트) |
직접관찰 / 모든문장 한번 이상 실행! | 사용자 요구사항의 명세 |
★ 화이트박스 테스트
- 기초 경로(Base Path)
- 루프(Loop)
- 데이터흐름(Data Flow)
- 조건 테스트(Condition Testing)
- Source Code의 모든 문장을 한번 이상 수행함으로서 진행
- 모듈안의 작동을 직접 관찰할 수 있음.
- 산출물의 각 기능별로 적절한 프로그램의 제어구조에 따라 선택, 반복 등의 부분들을
수행함으로써 논리적 경로를 점검. - Condition / Loop / Data Flow Testing
★ 블랙박스 테스트(기능테스트)
- 사용자 중심의 테스트
- 동등(균등) 분할
- 경계값 테스트
→ ★경계값을 테스트 케이스로 선정 - 오류 예측
- 원인 결과 그래프
Q. 화이트박스 검사로 찾기 힘든 오류는?
- 논리 흐름도
- 루프구조
- 순환복잡도
자료구조
★ 절차적 프로그래밍 언어 종류
- C
- COBOL
- ALGOL
- FORTRAN
절차적 프로그래밍 언어 장점
- 컴퓨터의 처리 구조와 유사하여 실행 속도가 빠름
- 같은 코드를 복사하지 않고 다른 위치에서 호출하여 사용
- 모듈 구성이 용이하며 구조적 프로그래밍 가능
절차적 프로그래밍 언어 단점
- 프로그램 분석하기가 어려움
- 유지보수나 코드 수정이 어려움
★ 객체지향 프로그래밍 언어 장점
- 상속을 통해 재사용과 시스템 확장 용이
- 코드 재활용성이 높음
- 자연적 모델링에 의해 분석 설계 쉽고 효율적
- 대형 프로그램 작성 용이
- 개발 및 유지보수 용이
객체지향 프로그래밍 언어 단점
- 구현 시 처리시간이 지연됨
- 구현을 지원해주는 정형화된 분석 및 설계 방법이 없음.
★ 객체지향 구성 요소
- 객체(Object) : 속성(데이터 값 단위별 정의)+메소드(구체적인 연산 정의)
- 클래스(Class) : 객체의 유형 또는 타입을 의미, 데이터를 추상화하는 단위
- 메시지(Message) : 객체들 간 상호작용에 사용되는 수단 / 예상된 결과를 반환
- 메소드(Method) : 객체의 행위
- 상속성 : 객체의 데이터
★ 객체지향 프로그래밍 언어 특징
1. 캡슐화(Encapsulation)
- 속성과 데이터를 처리하는 함수를 하나로 묶음
- 캡슐화된 객체의 세부 내용이 외부에 은폐되어 변경 발생시 오류 파급효과가 적음
- 재사용이 용이함.
2. 추상화(Abstraction)
- 불피료한 부분은 생략하고 객체 속성 중 가장 중요한것만 중점을 두어 모델화
- 데이터의 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 개념
- 과정/데이터/제어 추상화
3. 상속성(Inheritance)
- 이미 정의된 상위 클래스(부모 클래스)의 모든 속성을 하위 클래스가 물려 받는것
- 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서
다시 정의하지 않고 즉시 자신의 속성으로 사용 가능함. - 단일/다중 상속
4. 다형성(Polymorphism)
- 하나의 메시지에 대해 각 객체(클래스)가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
- 객체(클래스)들은 동일한 메소드명을 사용하여 같은 의미의 응답을 함.
5. 정보 은닉(Information Hiding)
★ 객체지향 분석 모델링 ★
- 객체 모델링 : 정보 모델링 / 객체들 간의 관계를 정의
- 동적 모델링 : 시간의 흐름에 따라 제어흐름 / 동작순서
- 기능 모델링 : 자료흐름도(DFD), 프로세스들의 흐름 중심
☆ 객체지향 분석 및 설계 방법론 ★
- Rumbaugh : 객동기 모형
- Booch : 미시적/거시적
- Coad&Yourdon : E-R 다이어그램
- Jacobson : Use Case
- Wirfs-Brocks
나시-슈나이더만
☆ 객체지향 설계 원칙
- 단일 책임 원칙(SRP)
- 리스코프 치환 원칙(LSP)
= 하위클래스 → 상위클래스 교체 가능 - 의존 역전 원칙(DIP)
- 인터페이스 분리 원칙(ISP)
- 개방-폐쇄의 원칙(OCP)
= 기존의 코드를 변경하지 않으면서 기능 추가 가능
Q. 코드 인스펙션에 관한 설명으로 틀린것은?
- 프로그램을 수행시켜 보는 것 대신에 읽어보고 눈으로 확인하는 방법으로 볼 수 있음
- 코드 품질 향상 기법 중 하나 / 추적성 일관성 검토
- 결함과 함게 코딩 표준 준수 여부, 효율성 등의 다른 품질 이슈를 검사하기도 함.
-
동적 테스트 시에만 활용하는 기법
Q. ★구조적 설계의 평가 기준 중 모듈 응집도가 강한 것에서 약한 것의 순서로 옳게 나열된 것은? (순서외우기!)
기능적 > 순차적 > 교환적 > 절차적 > 시간적 > 논리적 > 우연적
= 기순교절시논우
functuional > Sequential > Communication > Procedural > Temporal > Logical > Coincidental
Q.
1. 디자인 / 사용방법설명 / 평가 등을 위해 실제 화면과 유사하게 만든 정적인 형태의 모형
2. 시각적으로만 구성 요소를 배치하는 것으로 일반적으로 실제로 구현되지는 않음
목업(Mockup)
Q. 소프트웨어 설계에서 자주 발생하는 문제에 대한 일반적이고 반복적인 해결 방법은?
디자인 패턴
Q. 입력되는 데이터를 컴퓨터의 프로세서가 처리하기 전에 미리 처리하여 프로세서가 처리하는 시간을 줄여주는 프로그램이나 하드웨어를 말하는 것은?
FEP(Front End Processor)
★ 4가지 미들웨어 외우기!
Q. 트랜잭션이 올바르게 처리되고 있는지 데이터를 감시하고 제어하는 미들웨어는?
Q. 객체 간 메시지 전달을 지원하는 미들웨어는?
Q. 원격 프로시저 호출하는 미들웨어는?
Q. 웹 한경을 구현하기 위한 미들웨어는?
TP monitor = 트랜잭션 처리/감시
ORB = object request broker
RPC = Remote procedure call
WAS = Web Application Server
Q. 객체 지향 개념 중 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화를 의미하는 것은?
Class
Q. 단위 테스트에서 테스트의 대상이 되는 하위 모듈을 호출하고, 파라미터를 전달하는 가상의 모듈로 "상향식 테스트"에 필요한 것은?
테스트 드라이버
Q. 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 프로그램을 의미하는 것은?
Alien Code
Q. ★ 인터페이스 간의 통신을 위해 이용되는 데이터 포맷의 종류는?
1. JSON : 속성-값 쌍 또는 키-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷 (AJAZ에서 많이 사용되며, XML을 대체하는 주요 데이터 포맷)
2. XML : HTML, SGML의 단점을 보완한 특수한 목적을 갖는 마크업 언어
3. YAML
4. AJAX : JS를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML데이터를 교환하고 조작하기 위한 웹 기술
5. REST : 웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처
6. AJTML
Q. 화이트 박스 검사 기법에 해당되는 것들은?
1. 기초 경로 검사
2. 제어 구조 검사
= 조건검사 / 루프검사 / 데이터 흐름 검사
Q. 블랙박스 검사 기법에 해당되는 것들은?
1. 동치분할검사
2. 경계값 분석
3. 원인-효과 그래프 검사
4. 오류 예측 검사
5. 비교 검사
Q. 프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동으로서, 프로젝트를 성공시키기 위하여 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동을 포함하는 것은?
Risk Analysis
Q. 각 시스템 간에 공유 디스크를 중심으로 클러스터링으로 엮여 다수의 시스템을 동시 연결 가능.
조직 / 기업의 기간 업무 서버 등의 안정성을 높이기 위해 사용
여러가지 방식으로 구현되며 2개의 서버를 연결하는 것
고가용성 솔루션(HACMP)
Q. 컨테이너 응용프로그램의 배포를 자동화하는 오픈 소스 엔진
Docker
Q. HRN 공식으로 옳은 것은?
=관련 설명까지.
(대기시간 + 서비스 시간)/(서비스 시간)
= 시스템 응답시간이 커질수록 우선순위가 높아짐.
[DB] ☆
하둡 : 오픈 소스 기반 분산 컴퓨팅 플랫폼
디지털 아카이빙 : 장기적 보존 작업
메타 데이터 : 일련의 데이터를 정의하고 설명
[네트워크] ☆
비콘 : 블루투스 기반
NFC : 고주파를 이용한 근거리 무선 통신 기술
NDN : 라우터 기능
NGN : 유선망 기반
인터페이스 구현 검증 도구 여러가지
1. Java, C++등 다양한 언어 지원하는 단위 테스트 프레임워크는?
xUnit
2. 서비스 호출 및 컴포넌트 재사용 등 환경 지원하는 테스트 프레임워크는?
STAF
3. 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크는?
FitNesse
4. FitNesse + STAF
NTAF
5. 다양한 브라우저 및 개발 언어 지원하는 웹 애플리케이션 테스트 프레임워크
Selenium
Q. 간트 차트에 대한 설명으로 틀린것은?
- 프로젝트를 이루는 소작업 별로 언제 시작되고 언제 끝나는지 한눈에 볼수 있게함
- 자원 배치 계획에 유용하게 사용
- CPM 네트워크로부터 만드는 것이 가능
수평 막대의 길이는 각 작업에 필요한 인원수를 나타냄
Q. FAT의 특징
- 대용량 볼륨에 효율적
- 자동 압축 및 안정성
- 저용량 볼륨에서의 속도 저하
- 뛰어난 호환성
Q. NTFS의 특징 (FAT와 비교)
- 보안성이 뛰어남
- 대용량 파일 저장 가능
Q. 공통묘듈의 원칙
- 정확성
- 명확성 : 일관되게 한가지로 해석
- 완전성
- 일관성
- 추적성
독립성
Q. 용어 문제
- is part of = 집단화
- is a = 일반화
- 속성과 메소드를 하나로 묶어 = 캡슐화
- 공통 설질을 추출 = 추상화
Q. CASE의 주요 기능
- 그래픽 지원
- 소프트웨어 생명주기 전 단계의 연결
- 다양한 소프트웨어 개발 모형 지원
- 오류검증
- 다이어그램 작성
언어번역
Q. 오류의 80%는 전체 모듈의 20% 내에서 발견된다는 법칙은?
Q. 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다의 법칙은?
Pareto의 법칙
Brooks의 법칙
Q. 검증검사기법 중 개발자의 장소에서 사용자가 개발자 앞에서 행하는 기법
Q. 사용자가 여러명의 사용자 앞에서 행하는 테스트 기법
알파검사(알파테스트)
베타검사(베타테스트)
Q. 하향식 통합 / 상향식 통합 모듈
Stub / Driver
★ 패키지 소프트웨어 국제 표준 정리
- ISO/IEC 12119 : 일반적인 제품 품질 요구사항 및 테스트 / 패키지 소프트웨어 평가
- ISO/IEC 9126 : 척도에 대한 표준화
- ISO/IEC 14598 : 소프트웨어 제품 평가
데이터베이스 활용
DBMS의 필수기능
- 정의 기능 : 데이터의 형(Type)과 구조 등의 저장될 떄 제약조건
- 조작 기능 : 데이터 검색/갱신/삽입/삭제
- 제어 기능 : 무결성유지/보안유지/권한검사/병행제어
DBMS 분석 시 고려사항★
- 무결성(가용성)
- 일관성(상호 호환성)
- 성능(효율성)
- 회복
- 보안
- 데이터베이스 확장
네트워크 구성도
Q. 널 값(null value)에 대한 설명
- 정보의 부재를 나타낼 때 사용하는 특수한 데이터 값
- 아직 알려지지 않은 모르는 값
- 공백(space)과는 다른 의미
영(zero)과 같은 값이다.
※ 튜플의 수 = Cardinality
속성의 수 = degree
Q. 색인 순차 파일의 인덱스 구역에 해당하지 않는 것은?
- master 인덱스
- cylinder
- track
prime→ 기본구역
DELETE 명령문
- DELETE FROM 테이블명 [WHERE 절];
- 테이블의 행을 삭제할 때 사용
- SQL을 사용 용도에 따라 분류할 경우 DML에 해당
- 기본 사용 형식은 "DELETE FROM 테이블 [WHERE 조건];"
WHERE 조건절이 없는 DELETE 명령을 수행하면 DROP TABLE 명령을 수행했을 때와 동일한 효과를 얻을 수 있다.
CREATE TABLE문
- 속성의 NOT NULL 여부 지정
- 기본키를 구성하는 속성 지정
- CHECK 제약조건의 정의
속성 타입 변경- CREAT INDEX ON ASC/DESC
ASC : 오름차순 정렬 / DESC : 내림차순 정렬
(생략하면 오름차순 정렬)
ALTER TABLE문
- ADD : 속성 추가
- ALTER : 속성의 기본값(변경)
ex) ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값']; - DROP : 속성 삭제
ex) ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
★ DML(데이터 조작어) 4가지 외우기
1. DELETE FROM 테이블명 [WHERE 절];
2. INSERT INTO 테이블명 (필드명) VALUES (값)
3. ★ UPDATE 테이블명 SET 필드
4. SELECTE [OPTION] 필드명 FROM 테이블명 [WHERE 절];
Selecte만 필드명이 테이블명보다 앞에 있음!
★ SELECT 명령어 옵션
- DISTINCT : 중복되는 튜플(레코드, 행)을 제거하여 조회
- WHERE 조건 : 조건을 만족하는 튜플들만 조회
- GROUP BY 필드명 : 그룹별로 묶을 필드명을 지정
- HAVING : 그룹별로 조건을 만족하는 튜플들만 조회 (GROUP BY에 사용)
- ORDER BY
ex_) ORDER BY 학번 ASC/DESC(오름/내림차순)
★ DROP 명령문
- CASCADE : 삭제할 요소를 참조하는 다른 모든 개체를 함께 삭제!
- RESTRICT : 다른 개체가 제거할 요소를 참조중일 때는 제거 취소!
Q. <학생> 테이블을 삭제하되, <학생> 테이블을 참조하는 모든 테이블을 함께 삭제하라
DROP TABLE 학생 CASCADE;
일반 집합 연산
★UNION (합집합)
= 두 식의 결과 행을 합침 (중복 제거)
★UNION ALL
= 두 식의 행을 다 합친것 (중복 제거 수행 X = 중복 포함)
☆INTERSECT (교집합)
= 두 개의 테이블에 대해 겹치는 부분 추출 (중복 제거)
☆EXCEPT (차집합)
= 겹치는 부분을 앞의 테이블에서 제외하여 추출
E-R 다이어그램(ERD)
- 가장 일반적으로 사용 / 데이터 중심의 설계 가능
- 개체와 속성 관계를 그림으로 설명
- 시스템에 영향을 받지 않음(고려할 필요 X)
- 업무 분석 결과로 도출된 개체와 실체 간의 관계를 도식화
- 개체(Entity) / 속성(Attribute)=열 / 관계(Relationship)
★ E-R모델에서 다중값 속성의 표기법은? ★(100%나옴)
- 사각형 = 개체 타입(Entity)
- 마름모 = 관계 타입
- 타원 = 속성 타입(Attribute)
- 선, 링크 = 개체타입과 속성을 연결 (사각형과 타원)
- 이중 타원 = 다중값 속성(복합속성)
- 밑줄 타원 = 기본키 속성
릴레이션이란?
- 데이터들을 테이블의 형태로 표현한 것
- 2가지로 구분됨
릴레이션 스키마(구조)
릴레이션 인스턴스(실제 값)
★ 릴레이션의 특징 ★
- 한 릴레이션에 포함된 튜플들은 모두 다른 값
- 한 릴레이션에 포함된 튜플 사이에는 순서가 없다.
- 한 릴레이션을 구성하는 속성 사이에는 순서가 없다.
=각 속성은 릴레이션 내에서 유일한 이름을 가짐. 모든 속성 값은 세분화가 가능해야 하므로 원자값이어서는 안된다.→ 속성은 더 이상 쪼갤 수 없는 원자값만을 지정
= 모든 속성값은 원자 값이다.
☆튜플이란?☆
- 릴레이션을 구성하는 각각의 "행"
- 파일 구조에서 "레코드"와 같은 의미
- 속성의 모임으로 구성
- 튜플의 수 = 카디널리티(Cardinarlity)
Q. 릴레이션 R의 차수가3이고, 카디널리티가 5, 릴레이션 S의 차수가 4이고, 카디널리티가 6일때 두 릴레이션을 카티션 프로덕트한 결과 릴레이션의 차수와 카디널리티는?
- 12, 11
- 7, 11
- 7, 30
- 12, 30
정답: 3번
차수 = 덧셈
카디널리티 = 곱셈
☆속성이란?☆
- 각각의 "열"
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 개체의 특성을 표현
- 속성의 수 = 디그리(Degree)
☆파티션 유형
- 범위
- 해시
- 조합
유닛
Q. 관계 데이터 모델에서 애트리뷰트가(Attribute)가 취할 수 있는 값들의 집합은(원자값들의 집합)?
도메인
ex) 속성이 "고등학교 학년" 이라면 1학년,2학년,3학년이 학년의 도메인값이 됨.
Q. In computing, this is the process of rearranging an initially unordered sequence of records until they ordered. What is this?
sorting = 분류, 구분
= 순서가 정해질 때까지 레코드 순서를 재정렬하는 작업
★RDBMS의 키(Key) 외우기!!
- 후보키(Candidate Key) : 모든 튜플에 대한 유일성과 최소성을 모두 만족
- 슈퍼키(Super key) : 유일성은 만족시키지만, 최소성은 만족시키지 못함 (하나이상속성집합)
- 기본키(Primary key) : 후보키들 중 선택된 한 개의 키
- 외래키(Foreign key) : 두 개의 릴레이션 간에 연결되는 키, 기본키를 참조(사용)하는 키
- 대체키(Alternate key=보조키) : 후보 중에서 기본키를 제외한 모든 키는 대체키
Q. 관계를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성을 무엇이라 하는가?
Q. 다음 두 릴레이션에서 외래키로 사용된 것은?(단 밑줄 친 속성은 기본키이다.)
과목(과목번호, 과목명) 수강(수강번호, 학번, 과목번호, 학기) |
외래 키
★ 무결성 (100%외우기!!)★
1. 개체 무결성
- 릴레이션에 기본키를 구성하는 속성은 널(NULL) 값이나 중복값을 가질수 없음.
ex) "학생" 릴레이션에 "학번"이 기본키로 정의 되면 튜플을 추가할 때 "주민번호"나 "성명" 필드에는 값을 입력하지 않아도 되지만 "학번" 속성에는 반드시 값이 입력되어야 함. 또한 중복 불가!
2. 참조 무결성
- 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야함.
- 즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없음!
ex) "수강"릴레이션의 "학번"속성에는 "학생"릴레이션의 "학번"속성에 없는 값은 입력할 수 없음!
3. 도메인 무결성
- 특정 속성의 값이, 그 속성이 정의된 도메인에 속한 값이어야 한다는 규정
Q. 무결성에 대한 설명으로 옳지 않은 것은?
1. 고유 무결성 : 키 무결성이라고도 하며 한 릴레이션에 같은 키 값을 가진 튜플들을 허용할 수 없는 제약조건
2. 개체 무결성 : 한 엔터티에서 같은 기본 키를 가질 수 없거나, 기본 키의 속성이 NULL을 허용할 수없는 제약조건
3. 참조 무결성 : 외래 키가 참조하는 다른 개체의 기본 키에 해당하는 값이 기본 키 값이나 NULL이어야 함.
4. 관계 무결성 : 사용자의 의미적 요구사항을 준수해야 하는 제약조건
정답 : 4번
★ 뷰(View)에 대한 설명으로 틀린 것은?
- 뷰 위에 또 다른 뷰를 정의할 수 있음.
- "1개 이상의 실제로는 존재하지 않는 가상 테이블" / 데이터의 논리적 독립성을 제공
- 필요한 데이터만 뷰로 정의해 처리 가능하기 때문에 관리가 용이함. → 단점 : 뷰의 정의 변경 불가능!
- 뷰에 나타나지 않은 데이터를 안전하게 보호 가능 / DBA는 보안성 측면에서 뷰를 활용할 수 있음.(자동보안)
- 사용자가 필요한 정보를 요구에 맞게 가공하여 뷰로 만들 수 있음.
SQL을 사용하면 뷰에 대한 삽입/갱신/삭제 연산 시 제약 사항이 없다→ 제약이 따름!
뷰 생성 방법
[ CREATE VIEW 뷰이름 AS SELECT 구문; ]
뷰 삭제 방법
[ DROP VIEW 뷰이름; ]
★ 정규화 과정
- 데이터베이스 내부에 불필요한 중복(데이터)으로 발생하는 각종 문제점들을 해결하기 위한 기법
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만듬.
- 효과적인 검색 알고리즘을 생성할 수 있음.
- "논리적 설계단계"에서 사용됨.
- ☆정규화를 발생하지 않아 발생하는 문제들을 이상(Anomaly)라고 함
→ 이상으로 인해 "중복성" "종속성"이 발생함.
→ 삽입이상 / 삭제이상 / 갱신이상 - 이러한 "중복성" "종속성"을 제거하기 위해 여러가지 릴레이션을 하나하나 쪼개면서 문제를 해결하는 방법
- 1. 정보의 손실 X
2. 독립된 릴레이션으로 분리시켜 표현
3. 데이터의 중복성이 감소되어야함.
- 비정규 릴레이션
(도메인이 원자값) - 1NF (제1정규형)
(부분적 함수 종속 제거) = (완전 함수적 종속 관계)★ - 2NF (제2정규형)
(이행적 함수 종속 제거) = (A>B, B>C, A>C) - 3NF (제3정규형)
(결정자들 중에서 후보키가 아닌 함수 종속 제거/ 모든 결정자가 후보키) - BCNF
(다치 종속 제거) - 4NF
(조인 종속성 이용) - 5NF
★ 도부이결다조 = 두부이걸다줘
★ 반정규화(Denormalization) 유형 중 중복 테이블을 추가하는 방법은?
- 진행 테이블 추가
- 집계 테이블 추가
- 특정 부분만을 포함하는 테이블 추가
빌드 테이블 추가
Q. 정규화 과정에서 함수 종속이 A→B이고 B→C일 때, A→C인 관계를 제거하는 단계는?
Q. X → Y 이고 Y → Z 이면 X → Z 이다.
2NF → 3NF(이행적 함수 종속 제거)
Q. 정규화 과정 중 1NF에서 2NF가 되기 위한 조건은?
1NF를 만족하고 키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속 관계를 만족해야 함.
Q. 릴레이션 R의 모든 결정자가 후보키이면 그 릴레이션 R은 어떤 정규형에 속하는가?
보이스/코드 정규형
Q. 정규화된 엔티티, 속성, 관계를 시스템의 성능 향상과 개발 운영의 단순화를 위해 중복/통합/분리 등을 수행하는 데이터 모델링 기법은?
반정규화
Q. 어떤 릴레이션 R의 모든 조인 종속성의 만족이 R의 후보 키를 통해서만 만족될 때, 이 릴레이션 R이 해당하는 정규형은?
제 5정규형
Q. 논리적 데이터 모델 중 오너-멤버 관계를 가지며, CODASYL DBTG 모델이라고도 하는 것은?
네트워크 데이터 모델
SQL
- 국제 표준 데이터베이스 언어 / RDBMS
- SQL은 질의(Query)어지만
데이터 정의(Data Define) / 데이터 조작(Data Manipulation) / 데이터 제어(Data Control) 기능을 가지고 있음.
★ SQL의 종류 ★
1. DDL (Data Define Language) = CAD
- CREATE(정의/생성) / ALTER(변경/추가=수정) / DROP(테이블 제거)
- 데이터 정의어
- 논리적 데이터 구조와 물리적 데이터 구조의 사상을 정의
- 데이터베이스 관리자나 설계자가 사용
- SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어
2. DML (Data Manipulation Language) = IUDS
- 튜플을 INSERT(삽입) / UPDATE(수정/변경) / DELETE(튜플 삭제) / SELECT(조회/검색)
- 데이터 조작어
- DB에 저장된 데이터를 질의어를 통해 처리하는 언어
- 인터페이스를 제공
3. DCL ( Data Control Language)
- COMMIT(저장) / GRANT(부여) / REVOKE(취소/회수) / ROLLBACK(복구)
- 데이터 제어어
- 데이터의 보안 / 무결성 / 회복 / 병행 수행 등을 정의하는 데 사용하는 언어
Q. DELETE 와 TUPLE의 차이는?
DELETE
= DML(데이터 조작어) / 튜플 삭제
DROP
= DDL(데이터 제어어)
테이블 제거
Q. SQL의 분류 중 DDL에 해당하지 않는 것은?
1. UPDATE
2. ALTER
3. DROP
4. CREATE
Q. DML에 해당하는 SQL 명령으로만 나열된 것은?
I U D S
Q. DCL의 명령어가 아닌 것은?
1. COMMIT
2. ROLLBACK
3. GRANT
4. SELECT
Q. 학생 테이블을 생성한 후, 성별 필드가 누락되어 이를 추가하려고한다. 이에 적합한 SQL명령어는?
- INSERT
- ALTER
- DROP
- UPDATE
테이블에 대한 정의(필드)를 변경하는 명령어 = ALTER
Q. 다음 SQL문에서 빈칸에 들어갈 내용으로 옳은 것은?
UPDATE 회원
( ) 전화번호 = '010-14'
WHERE 회원번호 = 'N4';
SET = UPDATE 명령어는 SET 과 함께 옴
Q. 사용자 X1에게 department 테이블에 대한 검색 연산을 회수하는 명령은?
- delete select on department to X1;
- remove select on department from X1;
- revoke select on department from X1;
- grant select on department from X1;
revoke = 권한을 회수하는 명령어 = 정답
grant는 권한을 부여하는 명령어
트랜잭션
- 하나의 논리적 기능을 수행하기 위한 작업의 기본단위
- 한꺼번에 모두 수행되어야 할 일련의 연산
- 쿼리를 하나의 묶음으로 처리해서 만약 중간에 실행이 중단됐을 경우,
Rollback을 수행하고, 오류 없이 마치면 Commit을 실행하는 단위
★트랜잭션의 특성
- 원자성 (atomicity) : 하나라도 실패할 경우 전체 취소 / All of Nothing
- 일관성=무결성 (consistency) : 실행 전 후 동일하게 오류가 없어야함.
- 고립성=격리성 (isolation) : 다른 트랜잭션에 영향을 받지 않아야 함
- 지속성=영속성 (Durability) : 변화된 상태는 계속해서 유지될 수 있어야 함.
트랜잭션 상태 제어
- 활동 : 실행 중인 상태
- 부분 완료 : 실행 결과를 적용하기 직전의 상태
- 완료 : 적용한 상태 (거래 확정)
- 실패 : 오류에 의해 더 이상 진행될 수 없는 상태
- 철회 : 실패하여 ROLLBACK 연산 수행 상태
- Redo(다시실행)
- Undo(실행취소)
★3단계 스키마(Schema)
- 메타 데이터의 집합으로 데이터베이스의 구조, 제약조건을 묘사하고
엔티티(개체)와 속성, 관계 그리고 제약조건을 정의.
1. 외부 스키마
- 사용자나 응용프로그래머가 사용할 수 있도록 DB를 정의
2. 내부 스키마
- 물리적 저장 장치의 입장에서 본 데이터베이스 구조
= 기억장치 내에 저장되어 있음 = 저장 스키마라고도 불림 - 저장될 레코드의 형식을 정의, 레코드의 물리적 순서 등을 나타냄
3. 개념 스키마
- 데이터베이스 전체를 정의, 전체적인 논리적 구조
- 트랜잭션 모델링을 하는 단계
- 단순히 스키마라고도 함.
★데이터 설계(모델링) 단계 순서★ 외우기
1. 개념적 데이터 모델링(설계)
- 개념 스키마 모델링
- 트랜잭션 모델링
2. ★논리적 데이터 모델링(설계)★
- 논리적 데이터베이스 구조로 매핑(Mapping)=변환
- 트랜잭션 인터페이스 설계
- 개념스키마를 평가 및 정제(최적화)
레코드 집중의 분석 및 설계
3. 물리적 데이터 모델링(설계)
- 레코드 분석 및 설계
- 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 파일의 저장 구조 및 액세스 경로 결정
= 접근 경로 설계
★ 개논물
★주요 정렬 알고리즘 이해★
오름차순 정렬
내림차순 정렬 체크
1. 삽입 정렬
- 이미 순서화 된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬
2. 선택 정렬
- 최소값 찾아 첫 번째 레코드 위치에 놓고, 나머지 중 다시 최소값 찾아 두 번째 레코드에 놓는 방식 반복
3. 버블 정렬
- 인접한 두 개 레코드 키 값 비교하여 그 크기에 따라 레코드 위치 서로 교환
자료 : 32, 14, 15, 38, 27, 6, 21
삽입 정렬을 이용하여 오름차순으로 정렬할 경우 Pass 5의 결과는?
1, 2, 3, 4, 5, 6
32, 14, 15, 38, 27, 6, 21
= 6, 14, 15, 21, 27, 32, 38, 21
자료 : 8, 5, 6, 2, 4
선택 정렬을 이용하여 오름차순으로 정렬할 경우 Pass1,2,3,4의 결과는?
Pass1
5 8 6 2 4
5 8 6 2 4
2 8 6 5 4
2 8 6 5 4 = 정답
Pass2
2 6 8 5 4
2 5 8 6 4
2 4 8 6 5
Pass3
2 4 6 8 5
2 4 5 8 6
Pass4
2 4 5 6 8
자료 : 8, 5, 6, 2, 4
버블 정렬을 이용하여 오름차순으로 정렬할 경우 Pass1,2,3,4의 결과는?
Pass1
5 8 6 2 4
5 6 8 2 4
5 6 2 8 4
5 6 2 4 8
Pass2
5 6 2 4 8
5 2 6 4 8
5 2 4 6 8
Pass3
2 5 4 6 8
2 4 5 6 8
Pass4
2 4 5 6 8
★분산 데이터베이스 시스템★
- 논리적으로는 하나의 시스템 / 물리적으로는 네트워크를 통해 연결된 분산된 데이터베이스
- 위치 투명성 : Location
- 중복 투명성 : Replication
- 병행 투명성 : Concurrency : 일관성 유지
- 장애 투명성 : Failure
장점
- 지역 자치성이 높음
- 자료의 공유성 향상
- 분산 제어 기능
- 시스템 성능 향상
- 전체 시스템에 영향 X
- 용량 확장이 용이
단점
- DBMS가 복잡해짐
- 설계가 어려워짐
- 개발/처리 비용 증가
- 잠재적 오류 증가
※ 4가지 투명성 외우기
- 장애 투명성 : "분산된 물리적 환경에서 특정 지역의 컴퓨터 장애 발생해도 데이터 무결성 보장"
- 위치 투명성 : "실제 위치를 알 필요 없이"
- 중복 투명성 : "마치 하나의 데이터만 존재하는것처럼"
- 병행 투명성 : 다수의 트랜잭션이 동시에 실현되더라도 영향 받지 않음!
병행제어
- 다중 프로그램의 이점을 활용해, 동시에 여러 트랜잭션을 병행 수행할 때,
동시에 실행되는 트랜잭션들이 DB의 일관성을 파과하지 않도록
트랜잭션 간의 상호작용을 제어하는 것 - 2단계 잠금 규약(직렬성 보장) / 타임스탬프 순서 기법
장점
- 시스템 활용도 최대화
- 사용자에 대한 응답시간 최소화
- 일관성 유지
데이터베이스 공유 최소화→ 최대화
단점/문제점
- 갱신분실
- 비완료 의존성
- 모순성
- 연쇄복귀
★ 로킹(Locking)
- 주요 데이터의 액세스를 상호 배타적으로 하는 것
- 트랜잭션들이 어떤 로킹 단위를 액세스 하기 전에 Lock을 요청해서 Lock이 허락되어야지만
그 로킹 단위를 액세스할 수 있도록 하는 기법
★ 로킹단위(Locking Granularity)
- 병행 제어에서 한꺼번에 로킹할 수 있는 데이터 단위
- DB, File, Record, Field 등이 로킹 단위가 될 수 있음.
- 로킹 단위 ↑ 로크수 ↓ 관리가 쉽지만 병행성 수준이 낮아짐(오버헤드 작고 공유 저하)
- 로킹 단위 ↓ 로크수 ↑ 관리가 복잡하지만 병행성 수준이 높아짐(오버헤드 크고 공유 증가)
★ 시스템 카탈로그 ★
- 시스템 자체에 관련 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
= 시스템에 따라 상이한 구조 가짐,사용자 데이터베이스 - 카탈로그들이 생성되면 자료 사전에 저장되기 때문에 좁은 의미로는 자료 사전이라고도 함
= 메타데이터라고도 함, 통계정보 저장될 수 있음. - 기본 테이블, 뷰, 인덱스, 패키지, 접근 권한 등의 정보를 저장
무결성 확보를 위하여 일반 사용자는 내용을 검색할 수 없다
→ 사용자들도 검색은 가능 / 직접적 변경(갱신)은 불가능
☆ 관계해석(비절차적)
- 관계 데이터의 연산을 표현하는 방법
- 튜플 관계해석 / 도메인 관계해석이 있다.
- 관계 대수로 표현한 식은 관계해석으로 표현할 수 있다.
- 프레디캣 해석에 기반을 둠.
원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적인 언어→ 비절차적(결과중심) / 원하는 정보가 "무엇"인지 정의
☆ 관계대수(절차적)
- 절차적언어(절차중심)
- "어떻게" 유도하는지
- 순수 관계 연산자 / 일반 집합 연산자
- SELECT(σ) = 조건을 만족하는 튜플 반환
/ PROJECTION(π) = 특정 속성들 값만 튜플 반환
/ JOIN(⋈) = 공통 속성을 이용해 연결하여 만들어진 튜플 반환
/ DIVISION(÷)
수식 표기법
1. 중위(infix) 표기식
- 연산자를 두 피연산자 사이에 표기하는 방법으로 가장 일반적으로 사용됨.
- ex) (A+B)*(C-D)
2. 전위(prefix) 표기식
- 연산자를 먼저 표시하고 연산에 필요한 피연산자를 나중에 표시
- ex) ((A+B)) * (C-D))
→ *(+(AB)-(CD))
→ *+AB-CD - ex) A * B + C - D / E
→ (A*B)+C-(D/E)
→ ((A*B)+C)-(D/E))
→ -((A*B)+C)(D/E)
→ -+((A*B)C(D/E))
→ -+*ABC(D/E)
→ -+*ABC/DE
3. 후위(postfix) 표기식
- 피연산자를 먼저 표시하고 연산자를 나중에 표시
- ex) ((A+B) * (C-D))
→ ((AB)+(CD)-)*
→ AB+CD-* - ex) A+B*C-D
→ A+(B*C)-D
→ (A+(B*C))-D
→ ((A+(B*C)-D)
→ ((A+(BC)*)-D)
→ ((A(BC)*)+-D)
→ ((A(BC)*)+D)-
→ ABC*+D-
정렬(Sort)
1. 내부 정렬
- 소량을 주기억장치에 정렬
- 힙/삽입/셀/버블/선택/퀵/2Way merge/기수 정렬
☆ 2-Way Merge Sort
- 양방향 합병 정렬 (묶음으로 오름차순)
- N개의 데이터를 정렬하는 데 최악의 경우에 비교 횟수가 O(N logN)이다.
- 분할정복 기법을 사용하며, 하나의 원소를 분할하여 비교 및 정렬하는 알고리즘
- 추가로 기억공간을 가장 많이 요구하는 정렬 기법
- 문제는 1회전/2회전 후 결과는?
이런식으로 나옴. 1회전당 2개씩 오름차순
Q. n개의 원소를 정렬하는 방법 중 평균 수행시간 복잡도와 최악 수행시간 복잡도가 모두 O(nlog2n)인 정렬은?
Q. 정렬에서 최악의 상황인 경우에 수행 속도가 가장 빠른 것은?
힙 정렬
Q. 정렬된 N개의 데이터를 처리하는데 O(Nlog2N)의 시간이 소요되는 정렬 알고리즘은?
합병정렬
선택/삽입/버블 → O(n^2)
2. 외부 정렬
- 대량을 보조기억장치에 정렬
- 병합 정렬로 처리
- 밸런스 병합 / 캐스케이드 / 폴리파즈 / 오실레이팅 병합 정렬
3. 퀵 정렬
- 분할 정복에 기반한 알고리즘
- 피벗을 사용하며, 가장 빠른 방식
4. 삽입 정렬
- 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬
- 자료 일부가 정렬되어 있는 경우 유리
이진탐색(Binary Search) 구비조건
- 전체 파일을 두 개의 서브파일로 분리해 가면서 Key 레코드를 검색하는 방식.
- 자료가 순차적으로 정렬되어 있어야함.
- 제어 검색
선형탐색(Linear Search) 구비조건
- 특정 레코드를 찾아내는 작업
- 순서화되어 있지 않은 파일에서 순차적으로 검색하는 방식
- 가장 쉬운 방식
피보나치검색(Fibonacci Search)
- 피보나치 수열에 따라 비교 대상 선정 및 검색
- 가감산만을 이용하기 때문에 효율이 우수함.
네트워크 & 보안파트
근거리 통신망 (LAN)
- 버스형
- 트리형
- 링형
- 매시형(Mesh)
- 성형(star)
= 버트링매성
원거리 통신망 (WAN)
- 전용 회선 방식
- 회선 교환 방식
- 패킷 교환 방식
= 전회패
프로토콜의 기본 요소
- 구문(Syntax)
- 의미(Semantic)
- 타이밍(Timing)
= 구의타
★네트워크 7계층 (OSI 7계층)
- 물리계층
- 데이터링크 계층 : 오류제어 / 흐름제어
- 네트워크계층 : IP, ARP, RARP, ICMP, IGMP, Telnet
- 전송계층 : TCP, UDP
TCP = 순서/오류/흐름제어기능제공 / 기본 헤더크기 20~60byte - 세션계층
- 표현계층 : JPEG, MPEG
- 응용계층 : HTTP, SMTP, FTP
= 물데네전세표응
IPv4
- 32bit / 8비트씩 4개의 옥텟
- 10진수 (192.168.10.1)
- 약 43억개
- 멀티/유니/브로드
IPv6
- 128bit / 16비트씩 8부분
- 16진수
- 거의 무한대
- 멀티/유니/애니
- A 클래스 : 0.0.0.0 ~ 127.255.255.255 = 국가나 대형 통신망
- B 클래스 : 128 ~ 191
- C 클래스 : 192 ~ 223
- D 클래스 : 224 ~ 239
- E 클래스 : 240 ~ 255
★ 보안 요소
- 기밀성 - 열람
- 무결성 - 수정
- 가용성 - 사용
Q. IP 주소를 MAC 주소(물리 주소)로 변환하는 프로토콜은?
그리고 그 반대는?
IP > MAC = ARP
MAC > IP = RARP
Q. QoS 강화를 통해 MAC 지원 기능을 채택한 무선랜 표준은?
802.11e
Q. IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜은?
Q. 전송 오류가 발생하는 경우에 대비해 오류 정보를 전송하는 목적으로 사용하는 프로토콜은?
ICMP
Q. 호스트 컴퓨터와 인접 라우터가 멀티캐스트 그룹 멤버십을 구성하는 데 사용하는 통신 프로토콜은?
IGMP
Q. 인터넷에 TCP 포트번호 25번을 사용하여 이메일을 보내기 위해 이용되는 프로토콜은?
SMTP
Q. 스위치 MAC 주소 테이블의 저장 기능을 혼란시켜 더미허브처럼 작동하게 하는 공격은?
Switch Jamming
Q. 하드디스크와 같은 데이터 저장장치를 호스트 버스 어댑터에 직접연결하는 방식
저장장치와 호스티 기기 사이에 네트워크 디바이스 없이 직접 연결하는 방식으로 구성
DAS
Q. 블루트스 공격 장치의 검색 활동을 의미
블루프린팅
Q. 비정상적인 접근의 탐지를 위해 의도적으로 설치해둔 시스템
// 침입자를 속여 실제 공격당하는 것처럼 보여줌으로써 크래커를 추적 및 공격기법 정보 수집
// 쉽게 공격이 가능한 것처럼 취약해 보여야함
Honeypot
Q. OSI 7 Layer 전 계층의 프로토콜과 패킷 내부의 콘텐츠를 파악하여 침입 시도, 해킹 등을 탐지하고 트래픽을 조정하기 위한 패킷 분석 기술은?
DPI (Deep Packet Inspection)
Q. IP 또는 ICMP의 특성을 악용하여 특정 사이트에 집중적으로 데이터 보내는 공격방법
Smurfing
Q. 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격 수행
Q. 표적이 되는 서버의 자원을 고갈시킬 목적으로 대량의 데이터를 한 곳에 집중적으로 전송
DDos(분산 서비스 거부)
Dos(서비스 거부)
Q. 크래커가 침입하여 백도어를 만들어 놓거나, 설정 파일을 변경했을 때 분석하는 도구는? ☆
Q. 작업 예약 스케줄러 ☆
tripwire
Cron
Q. 연속적으로 자신을 복제하는 바이러스
Worm
Q. 내부 문서나 파일 등을 암호화해서 사용자가 열지 못하게 하는 프로그램
랜섬웨어
Q. 정상적인 기능인 척 하는 악성 프로그램
트로이 목마
Q. 메모리를 다루는 데 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점은?
버퍼 오버플로
시스템 파트
★ 쉘의 주요 기능 ★
- 사용자 명령을 해석하고 커널로 전달하는 기능 제공
- 시스템과 사용자 간의 인터페이스를 담당
- 반복적인 명령 프로그램을 만드는 프로그래밍 기능 제공
- 초기화 파일을 이용해 사용자 환경을 설정하는 기능 제공
- Kernel에 포함된 프로그램이 아닌 독립적 프로그램 / 커널을 호출하여 적업 처리
쉘 프로그램 실행을 위해 프로세스와 메모리 관리프로세스, 기억장치, 입출력관리 수행→ 커널(kernel)
I-node의 항목
- 소유자의 사용자 번호(ID)
- 파일에 대한 링크의 수
- 소유자가 속한 그룹의 번호
- 블록주소
우선순위
디폴트 권한 umask
- File 또는 Directory 생성 시 기본 권한을 설정할 수 있는 명령어!
- 기본적으로 File 생성 시 권한은 666 [ r(4) w(2) x(0) ]
- Directory 생성 시 권한은 777 [ r(4) w(2) x(1) ]
Q. 리눅스에서 생성된 파일 권한이 644일 경우 umask의 값은?
022
Q. Umask가 0022 일 경우, File 권한과 Directory 권한 값은?
File 생성 시 권한 : 666-022 = 644
Directiory 생성 시 권한 : 777-022 = 755
권한 부여 및 변경 chmod ★
Q. 'aaa' 파일에 'user: rwx, group: rw-, other: r--' 권한을 부여하는 방법
chmod 764 aaa
Q. 'aaa' 파일에 'other'의 'read' 권한을 빼는 방법
chmod o-r aaa
Q. 리눅스 시스템에서 사용자의 성공한 로그인/로그아웃 정보 기록
시스템의 종료/시작 시간 기록 로그 파일은?
wtmp
Q. 실행중인 프로세스가 일정 시간 동안에 참조하는 페이지의 집합을 뭐라하는지?
워킹 셋
Q. 은행가 알고리즘은 교착 상태의 해결 방법 중 어떤 기법?
Avoidance
=회피 기법
Q. 교착 상태의 원인이 되는 조건 중 하나를 제거하는 기법은?
Prevention
= 예방
Q. 자원 할당 그래프 기법
Q. 자원 선점/프로세스 종료 기법
Detection(탐지)
Recovery(복구)
Q. DES는 몇 비트의 암호화 알고리즘인가?
64 bit
Q. 교착 상태 발생의 필요 충분 조건은?
1. 상호배제(mutual exclusion)
2. 점유와 대기
3. 환형 대기(circular wait)
4. 비선점
5. 선점
★ 모듈이란?
- 소프트웨어 성능을 향상시키거나 수정 및 재사용을 용이하게 하기 위해서
기능 단위로 분해한 것을 뜻함. - ★ 결합도 ↓ 크기 ↓ 응집도 ↑ 독립성 ↑
- 다른 모듈들에 거의 영향을 미치지 않지만 수정 가능, 쉽게 발견 쉽게 수정
Q. 모듈의 특징 해당하지 않는 것은?
- 다른것들과 구별될 수 있는 독립적인 기능을 가진 단위
- 독립적인 컴파일이 가능
- 유일한 이름을 가져야함
다른 모듈에서의 접근이 불가능해야한다
빌드 자동화 도구
- 소스 코드 파일들 컴파일 > 여러개의 모듈로 묶음 > 실행파일 만드는 과정
- 빌드 + 테스트 및 배포를 자동화하는 도구
- 애자일 환경 : 한 작업이 마무리 될 때마다 모듈 단위로 나눠서 개발된 코드들이 지속적으로 통합됨.
이런 지속적 통합 개발 환경에서 유용하게 사용되는 것.
빌드 자동화 도구 종류
- Jenkins : JAVA 기반 오픈 소스 형태 / 가장 많이 사용되는 빌드 자동화 도구
- Gradle : Groovy를 기반으로 한 오픈소스 형태 자동화 도구 / C,Python등에서도 빌드 가능!
- Ant
- Make
- Maven
Kerberos
Q. 삽입/갱신/삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL은?
트리거 (trigger)
★HRN 스케줄링 방식(=비선점 스케줄링)
- 대기 시간이 긴 프로세스의 경우 우선 순위가 높아짐
- SJF 기법을 보완하기 위한 방식
- 긴 작업과 짧은 작업 간의 지나친 불평등을 해소할 수 있다.
- 우선 순위를 계산하여 그 수치가
가장 낮은것부터 높은순으로 우선순위 부여→ 높은것부터 낮은 순으로 순위 부여! - ★외우기!! (대기시간+서비스시간)/서비스시간
프로그래밍 파트
분석 > 설계 > 구현 > 테스트 >유지보수
저급언어(기계어)
- 컴퓨터가 기본적으로 이해하는 언어
- 2진수 (0,1 = 비트)
고급언어(C,Java,Python)
- 영문자 형태
- bit : 정보의 최소 단위 (2^1)
- Byte : bit 8개 → 256가지 정보 표현
※ bit > Byte > KB > MB (약 100만Byte) > GB > TB
※ 0은 1.5V, 1은 5V(볼트)의 전기적 신호에 매칭시켜 컴퓨터가 이해할 수 있음.
순서도 이해하기
C언어 샘플 문제
(1에서 10까지 덧셈)
#include <stdio.h>
main()
{
int number;
int sum;
number=1;
sum=0;
while (①number<=10)
{
sum=sum+number;
number++; ← C언어에서는 number=number+1과 동일
}
printf("\n1+2+....+10=%d\n", sum); ← \=\ (둘 다 역슬래쉬) / %d = 십진수 = sum
}
C언어/C++ | Java | Python | ||||
정수형 | short (2Byte) | 정수형 | byte (1) | 정수형 | int (제한없음) |
|
int (4/8) | short (2) | |||||
long (4) | int (4) | |||||
long long (8) | long (8) | |||||
실수형 | float (4) | 실수형 | float (4) | 실수형 | float (8) | |
double (8) | double (8) | complex (16) | ||||
문자형(자료형) | char (1) | 문자형 | char (2) | 문자형 | str (제한없음) |
|
※ Char 자료형은 하나의 문자를 저장! | 논리형 | boolean (1) | ||||
※ Char string은 문자열 저장! | * boolean 은 true 또는 false 값만 가짐! | |||||
※ 예약어를 변수명으로 사용할 수 없음! |
데이터 타입(int=정수)
- 변수에 저장될 데이터의 형식
- 문자형, 정수형, 실수형 등 어떤 형식의 값을 저장할지 변수 선언을 해야함.
- ex) int = 데이터 타입 / sum; = 변수이름
※ int는 플랫폼에 따라 실제 크기가 달라짐
- 32bit 운영체제 = 32bit = 4 Byte
- 64bit 운영체제 = 64bit = 8 Byte
변수(Variable)
- 컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간
- 변할 수 있는 값
- 정수형 / 실수형 / 문자형
※ 변수명 작성 규칙
- 영문자, 숫자, _를 사용
- 첫 글자는 영문자 또는 _사용하며, 숫자는 올 수 X
(1ab > X) - 공백이나 *,+,-,/ 등의 특수문자를 사용할 수 없다.
(hi weeding > X > hi_weeidng) - 대/소문자를 구분한다.
(weeding과 Weeding은 다른 변수명) - 예약어를 변수명으로 사용할 수 없다.
ex) char, for, while 등 - 변수 선언 시 문장 끝에 반드시 세미클론(;)을 붙여야함.
- 글자 수에 제한이 없다.
변수 선언
- const char c = 'A';
★ Constant(상수)
- 프로그램이 시작되어 값이 한 번 결정되면 프로그램이 종료될 때까지 변경되지 않는 값
- Java의 경우에는 final
연산자
처리순서
(관계 > 논리 > 대입 )
(2진수로 계산 주의!)
Q. 연산자 우선순위가 높은것에서 낮은것으로 나열된것은?
- ( )
- /
- <<
- <
- ==
- ||
1. 증가/감소연산자
- ++A = (전치) A를 1 증가 시킨 후 사용
= A=A+1 - A++ = (후치) A 사용 후 1 증가
= A=A+1
2. 산술 연산자
- 나머지 연산자 : %
ex) y=a%b - +
- -
- *
- /
3. 논리 연산자
= ! → && → || (3가지 우선순위 기억!)
- 2개의 논리 값을 연산하여 True(1), False(0) 반환
- a>1 && b>1 : and
- a>1 || b>1 : or
- !a : not
- 하나라도 맞으면 True 둘 다 틀려아 False
4. 관계 연산자
- A==B : A는 B와 같다
- A!=B : A와 B는 같지 않다.
5. 할당(대입)연산자
- A += B : A=A+B
- A -= B : A=A-B
- A *= B : A=A*B
- A /= B : A=A/B
6. 비트 연산자
= &, |, ^, ~, <<, >> ☆
- & (비트곱,and) : 두 비트가 모두 1일때만 결과가 1, 아니면 모두 0
- | (비트합, or) : 두 비트 중 어느 하나라도 1이면 결과는 1, 아니면 모두 0
- ^ (xor) : 두 비트가 같으면 0, 다르면 1
- ~ (not) : 각 비트를 반전
- << : 왼쪽으로 이동
- >> : 오른쪽으로 이동
7. 조건 연산자
= ?
- 조건에 따라 다른 수식 실행
8. cast 연산자 (형 변환)
- 강제적으로 데이터 타입 변경 연산자
- ex) a=(int)2.2 → a에 정수 2가 저장 (소수점 삭제)
9. sizeof 연산자
- 피연산자의 크기를 바이트 단위로 계산하는 연산자
- ex) int a=1;
sizeof(a) → 4
출력함수(printf)
- 서식문자열
- 변수
입력함수(scanf)
- 서식문자열
- 변수의 주소 : 변수에 &(주소 연산자) 붙여야함.
- excp : 배열 변수는 & 없이 입력
ex) char A[10]; → scanf("%s", A);
※ 서식문자(C언어의 데이터 형식을 규정)
- %o : 8진수
- %d : 10진수
- %x : 16진수
- %c : 문자(character)
- %s : 문자열(string)
★16진수 구할 때 10 이상으로 넘어가면 알파벳 A,B,C,D로 출력됨!
※ 제어 문자(\= \)
- \n : new line, 커서를 다음 줄로 바꿈
- \r : return, 커서를 그 줄의 맨 앞으로 이동
- \f : 한 페이지를 넘김
- \b : 1문자만큼 앞으로 이동
- \t : 커서를 그 줄의 tab만큼 이동
제어문 (While문 등)
#include <stdio.h>
main()
{
int number;
int sum;
number=1;
sum=0;
while (①number<=10)
{
sum=sum+number;
number++; ← C언어에서는 number=number+1과 동일
}
printf("\n1+2+....+10=%d\n", sum);
}
while문 실행 순서
- 조건(number<=10)을 먼저 판단
- true 인 경우 { } 수행
- false 인 경우 { } 빠져 나옴
→ 조건이 거짓이면 한 번도 수행하지 않음!
do while문
- { } 먼저 수행
- 조건(number<=10)판단
- true인 경우 { } 수행
- false인 경우 { } 빠져 나옴
→ 조건이 거짓이라도 한 번은 수행!
break문
- while문과 같은 가장 가까운 루프를 벗어나는 명령어
- while(true) : 조건이 항상 "참"
= while(1) - if (number>10) break;
조건문 조건 조건이 "참"인 경우 수행
: 계속 반복시키고, number>10인 경우 빠져 나옴
for문
- 시작과 종료 조건을 지정하여 참인 동안에는 해당 문장을 반복해서 실행
- for (i=0;i < 10; i++)
문장;
if문
- if (조건)
문장;
else
문장; - 다중 if문
{ } 생략 가능 : 처리문이 하나일 때
처리문이 여러개 일때는 { } 묶어야함.
ex) if (j >=90){
printf("A학점")
XXXXXXX
AAAAAAA
}
Switch ~ case문 ~ break ~ default
- 다중 if 문을 간략화
- break문 생략 : 일치하는 실행문부터 switch문이 종료될 때까지 모든 문장 실행
continue문
- 다음 반복을 실행하는 명령어 (반복처리X)
- 다음 문을 실행하지 않고 바로 그 루프의 선두로 되돌어가서 실행
- for문에서는 증감식을 실행하고 while문에서는 조건식을 검사
배열(Array)
= 단독주택X 아파트O
- 한 가지 자료형을 연속적으로 나열한 것
- 배열 인덱스는 항상 "0"부터 시작
- 초기화 데이터가 배열의 크기보다 적다면 나머지 원소들은 0으로 초기화
ex) int score[4] = {90, 100};
0 = 90
1 = 100
2 = 0
3 = 0
ex) static int b [9]={1,2,3};
배열 b[5]의 값은? = 0
1 2 3 0 0 0 0 0 0
2차원배열
- [행][열]
문자열
- C언어에서는 문자 자료형인 char는 있지만 문자열을 저장할 수는 없다.
- 문자열을 저장하기 위해, 문자 char 배열을 사용
ex) char string = "hi weeding";
char string[10] = {'h'. 'i',' ', 'w', 'e', 'e', 'd', 'i', 'n', 'g'}; - 배열 크기 생략시 반드시 초기값 지정해야함
ex) char string[] = "hi weeding";
printf("%s", string); - 문자열 변수선언과 동시에 초기화를 하지 않으면 에러 발생.
단, string.h 헤더 파일의 strcpy 함수를 사용하면 가능
ex) char string[10];
strcpy(string, "hi"); - A = 65 (아스키코드 기억!)
함수
- 함수의 호출, 피호출 함수 개념
- 프로그래밍을 하다보면 반복적으로 수행되는 부분이 있음.
이와 같은 경우에 한번만 만들어 두고 우리가 작성하는 호출에서 가져오는 개념으로 사용 - ex) void sub(){
printf("동해물과...\n");
}
main(){
printf("애국가 1번 \n");
sub();
printf("애국가 2번 \n");
sub();
}
함수의 종류
- 표준 함수 (내장, ex) printf())
- 사용자 정의 함수 (임의로 만들어 정의할 수 있는 함수)
리턴형
- 함수가 리턴하는 값의 데이터 타입
- 리턴값이 없는 경우 void라고 명시 해야함.
매개변수(파라미터)
- 함수가 전달받는 값으로 타입과 함수명으로써의 이름을 작성
구조체 (struct)
- 데이터(변수)를 체계적으로 관리하기 위한 문법
- 관련정보를 하나의 의미로 묶을 때 사용
- Java의 Class와 유사함.
- 배열하고도 유사함 : 같은 자료형 묶음
- 구조체 : 서로 다른 자료형 묶음 가능함.
Python
★ leng() 함수 : 문자열 길이 구하는 함수
upper() : 대문자로 변경
find(값) : 값을 못 찾으면 -1 출력
index(값) : find()와 동일하나 못 찾으면 오류 발생
문자열 슬라이싱 / 리스트 (끝에-1)
-6 -5 -4 -3 -2 -1
0 1 2 3 4 5
a 3 57 a 3 57
- 리스트추가 : append
- 리스트에서 위치를 찾아 삭제 : del
sort() : 오름차순 정렬
☆ 'key'와 'value'를 한 쌍으로 저장할 수 있는 자료형
= 딕셔너리
집합 : 순서 X 중복 X
JAVA
Q. ★접근 제한자(제어자)가 아닌 것은?
1. Public
2. protected
3. private
4. default
5. package
Q. Java의 정수 데이터 타입 중 'long'의 크기는?
8 byte
★ length(): 문자열의 길이를 표현하는 메소드
Q. JAVA에서 힙(Heap)에 남아있으나 변수가 가지고 있던 참조값을 잃거나 변수 자체가 없어짐으로써 더 이상 사용되지 않는 객체를 제거해주는 역할을 하는 모듈은?
Garbage Collector
Q. JAVA 연산자의 우선순위 (4개순위)★
1. --
2. %
3. &
4. =
Q. JAVA의 예외(exception)와 관련한 설명으로 틀린 것은?
- 오동작이나 결과에 악영향을 미칠 수 있는 실행 시간 동안에 발생한 오류
- 배열의 인덱스가 그 범위를 넘어서는 경우 발생하는 오류
- 존재하지 않는 파일을 읽으려고 하는 경우에 발생하는 오류
문법 오류에 인해 발생한 것
프로그래밍 파트 문제 모음
Q. C언어에서 사용할 수 없는 변수명은?
1. student2019
2. text-color
3. _korea
4. amount
2번
Q. 스크립트 언어가 아닌 것은?
1. PHP
2. Cobol
3. Basic
4. Python
2번
Q. C언어세어 배열 b[5]의 값은?
static int b[9]={1,2,3}; |
1. 0
2. 1
3. 2
4. 3
1번
배열은 0으로 초기화해서 숫자 나열!
Q. . 웹과 컴퓨터 프로그램에서 용량이 적은 데이터를 교환하기 위해 데이터 객체를 속성·값의 쌍 형태로 표현하는 형식으로 자바스크립트(JavaScript)를 토대로 개발되어진 형식은?
1. Python
2. XML
3. JSON
4. WEB SERVER
3번
XML = 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어
Q. 변수 설정 규칙에 해당하지 않는 것은?
1. void는 변수명으로 사용할 수 없다.
2. 예약어는 사용할 수 없다.
3. 대소문자를 구분하지 않는다.
4. 첫 자리에는 숫자를 사용할 수 없다.
Q. C언어에서 전처리문에서 상수값을 지정하기 위한 예약어로 구문의 상수로 치환하는 것은?
- #include
- #rename
- #undef
- #define
정답 : 4번
#include : 헤더 파일 포함
Q. 다음 중 C언어에서 실수 데이터 타입은 무엇인가?
- double
- int
- char
- array
정답 : 1번
실수형 : float(4), double(8)
Q. 자바스크릅트에서 지역변수 개념으로 함수 범위에서 유효하고, 재할당과 재선언이 가능한 것은?
- const
- let
- var
- function
정답 : var
Q. C언어에서 문자열 입력 함수는 무엇인가?
gets()
getchar()는 "한 문자"를 입력받아 변수에 저장
Q. 파이썬의 변수 작성 규칙 설명으로 옳지 않은 것은?
- 첫 자리에 숫자를 사용할 수 없다.
- 영문 대문자/소문자, 숫자, 밑줄(_)의 사용이 가능하다.
- 변수 이름의 중간에 공백을 사용할 수 있다.
- 이미 사용되고 잇는 예약어는 사용할 수 없다.
정답 : 3번
HTML
Q. 클릭 시 다른 주소로 이동하는 태그
<a>
Anchor
Q. 웹 문서의 저자나 소유자에 대한 연락처 정보를 명시하는 태그
<address>
Q. 해당 문서나 페이지 또는 사이트와는 완전히 독립적으로 구성할 수 있는 요소를 정의하는 태그
<article>
Q. 이미지에 링크를 연결할 때 사용하는 태그
<area>
Q. 웹 문서나 어떤 파일과의 연결을 정의하는 태그
<link>
Q. 문서의 본문을 작성하는 태그
<body>
Q. 직접 줄 바꿈을 하는 명령
<br>
Q. 설명 목록을 정의하는 태그
<dI>
Difinition List
Q. 설명 목록의 용어나 이름을 정의하는 태그
<dt>
Definition Term
Q. 글자를 기울임체로 표현하는 태그
<em>
Emphaszize
Q. 문서의 푸터(바닥 글)을 정의하는 태그
<footer>
Q. 사용자 입력을 위한 폼을 만드는 태그
<form>
Q. 문서의 헤더를 정의하는 태그
<header>
Q. 가로 줄을 만드는 역할
<tr>
Table Row
Q. 셀을 만드는 역할을 하는 태그
<td>
Table Data
Q. 문서의 제목을 정의하는 태그
<title>
Q. 글자를 두껍게 표현하는 태그
<strong>
Q. 단락을 정의하는 태그
<p>
Paragraph
Q. 글자에 형관펜 효과를 주는 태그
<mark>
Q. 해당 페이지 또는 다른 페이지와 연결되는 네비게이션 링크들의 집합 정의 태그
<nav>
Q. 번호 형식으로 순서를 매겨 목록을 만드는 태그
<ol>
Ordered List
Q. 목록 항목을 정의하는 태그
<li>
List item
Q. 정렬되지 않은 목록을 정의하는 태그
<ul>
Unorderede List
CSS
Q. 글자 색 변경
color
color : #ff0000; 사용 가능
# 뒤에 2자리씩 R G B로 표현
Q. 배경색 변경
background-color : blue;
Q. 글씨 크기 변경
font-size : 10px;
Q. 글씨체 변경
font-family : gungsuh;
Q. 글자위치 정렬, 텍스트 정렬
text-align : center;
Q. 하이퍼 링크 등 밑줄 제거
text-decoration : none;
Q. 그림자를 표현
text-shadow : gray 1px 1px;
Q. 테두리를 입힘
border : black solid 2px; display : inline;
Q. 테두리의 선 종류 4가지
★실선 / 점선 / 절취선 / 이중선
실선 : solid
점선 : dotted
절취선 : dashed
이중선 : double
Q. 테두리를 둥글게 만듬
border-radius : 20px(상,하) / 20px(좌,우);
border-style
border-width
border-color
Q. 테두리 배경색(색깔) 변경
border-color : red;
Q. 안쪽 여백 영역 설정★
padding : 5px(상) 5px(우) 10px(하) 10px(좌);
Q. 간격조절 (이미지 조절 시 주로 사용)★
margin : 5px
margin-top :50px;
Q. CSS 속성 중 텍스트 전체 혹은 첫 글자를 대문자로 표시할 수 있는 속성은?
- text-align
- font-family
- text-shadow
- text-transform
정답 : 4번
text-align = 텍스트 정렬 = 글자위치정렬
font-family = 글꼴 종류 지정
'자격증 > 정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 데이터베이스 3과목 정리 #3 (0) | 2022.03.10 |
---|---|
정보처리산업기사 데이터베이스(3과목)정리 #2 (0) | 2022.03.08 |
정보처리산업기사 데이터베이스(3과목) 정리 (~ing) (0) | 2022.03.07 |
정보처리산업기사 22년 1회차 후기 & 앞으로 할일 (0) | 2022.03.07 |
정보처리산업기사 대비 정처기 기출분석 #2 (0) | 2022.03.06 |