1. 패턴
- GoF의 디자인 패턴
- 소프트웨어 설계에 있어 공통된 문제들에 대한 표준적인 해법과 작명법을 제안한 책
- Gang of Four 전문가 서술 : 에리히 감마, 리처드 헬름, 랄프 존슨, 존 블리시데스
- 패턴의 개념 : 각기 다른 소프트웨어 모듈이나 기능을 가진 다양한 응용 소프트웨어 시스템을 개발할 때 서로 간에 공통되는 설계 문제 및 해결 점
- 패턴의 역할 : 공통의 언어 생성, 팀원 사이의 의사소통 원활화
- 패턴의 종류
- 생성 패턴 (Creation Pattern)
- 객체의 생성 방식을 결정하는 패턴
- 클래스 : Factory method
- 객체 : Singleton, Abstract factory, Builder, Prototype
- 구조 패턴 (Structural Pattern)
- 객체를 조직화하는데 유용한 패턴
- 클래스 : Adapter
- 객체 : Bridge, Composite, Decorator, Facade, Fly weight, Proxy
- 행위 패턴 (Behavioral Pattern)
- 객체의 행위를 조직, 관리, 연합하는데 사용하는 패턴
- 클래스 : Template method, Interpreter
- 의미 : Iterator, Command, Chain of Responsibility, State, Strategy, Mediator, Memento, Visitor, Observer
- 클래스 패턴 : 클래스 간의 관계가 상속을 통하여 정의, 컴파일 시점에 정적으로 결정
- 객체 패턴 : 객체 간의 관계를 다룸, 보통 구성을 통해 정의, 실행 중에 관계가 생성되어 더 동적이고 유연
- 생성 패턴 (Creation Pattern)
2. 객체지향 프로그램
- OOP (Object Oriented Programming)
- 컴퓨터 프로그래밍 패러다임 중 하나
- 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 객체들의 모임으로 파악하고자 하는 것
- 각각의 객체는 메시지를 주고 받고 데이터를 처리할 수 있음
- 객체지향의 장점
- 프로그램을 유연하고 변경이 용이하게 만듦
- 대규모 소프트웨어 개발에 많이 사용
- 프로그래밍을 더 배우기 쉽게하고 소프트웨어 개발과 보수를 간편하게 함
- 직관적인 분석이 가능
- 객체지향 프로그램 (OOP)의 구성
- 객체지향의 기법
- 메서드 (Method)
- 객체가 수행하는 기능
- 객체가 갖는 데이터 (속성, 상태)를 처리하는 알고리즘
- 객체 (Object)
- 클래스의 인스턴스, 자신 고유의 데이터를 가짐
- 인스턴스 : 실제 메모리상에 할당된 것
- 클래스에서 정의한 행위를 수행
- 클래스의 인스턴스, 자신 고유의 데이터를 가짐
- 클래스 (Class)
- 공통된 특성과 연산을 갖는 객체의 집합, 같은 종류의 집단에 속하는 속성과 행위를 정의한 것
- 객체지향 프로그램의 기본적인 사용자 정의 데이터형
- 데이터를 추상화하는 단위
- 메시지 (Message)
- 객체들 간 상호작용을 하는데 사용되는 수단
- 객체에게 행위 지시를 하는 명령으로 객체간의 통신을 말함
- 메서드 (Method)
- 객체지향의 특징
- 캡슐화 (Encapsulation)
- 속성과 메서드를 하나로 묶어서 객체로 구성
- Readability 향상 (유지보수 용이)
- 재사용성이 높은 S/W 개발이 가능
- 객체 간 인터페이스 이용, 종속성 최소화
- 추상화 (Abstraction)
- 공통 성질 추출, 슈퍼클래스로 구성
- 객체 중심의 안정된 모델 구축
- 현실 세계를 자연스럽게 표현
- 분석의 초점이 명확해짐
- 다형성 (Polymorphism)
- 동일한 이름의 여러 오퍼레이션 (메서드)을 다른 사양으로 정의 가능
- 오버 로딩 : 매개변수의 수 또는 타입을 달리하여 구분
- 오버 라이딩 : 부모 클래스의 메서드를 재정의
- 정보은닉 (Information Hiding)
- 캡슐화된 항목을 다른 객체로부터 숨김
- 메시지 전달에 의해 다른 클래스 내의 메서드가 호출
- 상속성 (Inheritance)
- 부모 클래스의 속성과 메서드를 상속받아 사용
- 부모 클래스, 자식 클래스 간의 관계가 슈퍼 클래스와 서브 클래스로 유지
- 부모 클래스는 추상적, 자식 클래스는 구체적
- 캡슐화 (Encapsulation)
3. UML 클래스 사이의 관계
- 일반화 관계 Generalization (IS-A)
- 객체지향 개념에서 상속관계
- UML에서는 일반화 관계로 모델링
- 한 클래스가 다른 클래스를 포함하는 상위 개념
- 상위와 하위 관계를 의미하며 하위는 상위의 공통점을 상속
- 클래스를 상속받아 자식 클래스에서 사용
- 표기법 : 속이 빈 화살표
- 코드 : B Class는 A Class를 속성과 행위를 상속 받음
Class A { } Class B extends A { }
- 연관관계 Association (HAS-A)
- 클래스들이 상호 메시지를 주고 받는 관계를 표현
- 한 클래스가 다른 클래스와 영속적인 여니관성을 맺을 때 사용
- 표기법 : 실선, 실선 화살표
- 코드 : Class Circle는 내부에 Class Point를 생성하여 행위 호출
//양방향 public Class Point { private Circle[] circleOBJ; } public Class Circle { private Point[] pointOBJ; } //단방향 public Class Poin { } public Class Circle { private Point[] pointOBJ; }
- 의존 관계 Dependency (use)
- 연관관계의 특수한 형태로 한 클래스가 다른 클래스에 의존적인 연관관계를 나타낼 때 사용
- 표기법 : 점선 화살표
- 코드 : Class A는 Class VO에 의존 관계, 만일 Class VO의 속성이 바뀌면 Class A 역시 행위의 수정이 필요
public Class VO { int age; String name; public void setAge(int Age) { this.age = Age; } public void setName(String Name) { this.name = Name } } public Class A { VO valueOBj = new VO(); public void test() { valueObj.setAge(6); valueObj.setName("test"); } }
- 집합연관 (집약관계) Aggregation
- 연관 관계의 특수한 형태
- 클래스들 사이의 전체와 부분의 관계를 나타냄
- 전체 객체의 라이프 타임과 부분 객체의 라이프 타임은 독립적
- 전체 객체가 사라져도 부분 객체는 계속 생존할 수 있음
- 표기법 : 속이 빈 마름모
- 코드 : Class A는 Class B를 Vector 형태로 많이 소유할 수 있음
public Class A { Private Vector <B> vectorB; } Class B {}
- 복합연관 (합성관계) Composition
- 연관 관계의 특수한 형태
- 클래스들 사이의 전체와 부분의 관계를 나타냄
- 전체 객체의 라이프 타임과 부분 객체의 라이프 타임이 동일
- 전체 객체가 사라지면 부분 객체도 없어짐
- 표기법 : 속이 찬 마름모
- 코드
public Class A { Private Vector <B> vectorB; vectorB.close(); return; } Class B {}
- 실체화 관계 Realization (implement)
- 하나의 클래스가 다른 클래스를 구체적으로 실체화하는 관계
- 인터페이스 클래스를 다른 클래스가 구현해주는 관계가 좋은 관계
- 표기법 : 빈 삼각형 + 점선
- 코드
Public Class interface A { } Public Class B implements A { }
4. 객체지향 분석 방법
- 객체지향 분석 방법의 개념
- 사용자의 요구사항을 분석하여 요구되는 사항과 관련된 모든 객체, 클래스와 연관된 속성, 연산, 관계 등을 정의하여 모델링하는 작업
- 분석가에게 중요한 클래스, 객체, 속성, 연산 등을 표현해서 문제를 모형화할 수 있게 해줌
- 모형화 전후 단계에서 객체의 분류, 속성들의 상속, 메시지의 통신, 연산 등을 결합한 것
- 객체지향 분석의 목적 : 클래스 식별
- 객체지향 분석 방법론의 유형
- 럼바우 방법
- 가장 일반적으로 사용되는 방법
- 분석 호라동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행하는 방법
- 모든 소프트웨어 구성 요소를 그래픽 표기법을 활용하여 모델링하는 기법
- 시스템개발의 전 단계가 추상화, 캡슐화, 상속화 등 일관된 객체지향개념이 적용되는 방법
- 럼바우 방법의 순서 : 객체 모델링 → 동적 모델링 → 기능 모델링
- 객체 모델링 (Object Modeling)
- 정보 모델링
- 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계 규정
- 그래픽 다이어그램으로 표시하는 모델링
- 실세계 문제 영역으로부터 객체와 클래스를 추출해 그들 간의 관계를 연관화, 집단화, 일반화 중심으로 규명
- 클래스의 속성과 연산을 함께 표현함으로써 시스템의 정적 구조 생성
- 동적 모델링 (Dynamic Modeling)
- 상태 다이어그램을 사용하여 시스템의 행위를 기술하는 모델링
- 기능 모델링 (Function Modeling)
- 자료흐름도 (DFD)를 이용
- 다수의 프로세스들 간의 자료 흐름을 중심으로 처리과정 표현
- 어떤 데이터를 입력하면 어떤 결과를 구할 것인지 표현
- 객체 모델링 (Object Modeling)
- 부치 방법
- 요구사항 분석을 하는 과정에서 절차지향 프로그램으로 개발하려면 동사를 식별하고, 객체지향 프로그램으로 개발하려면 명사를 선택하라고 한 것에 기반
- 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 포함하여 사용
- 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산 정의
- 클래스와 객체의 의미를 식별, 클래스와 객체들의 관계를 식별, 클래스와 객체를 구현
- 각 작업에 대한 다이어그램, 클래스 계층 정의, 클래스들의 클러스터링 작업 수행
- Use Case를 강조하여 사용하는 분석 방법
- Coad와 Yourdon 방법
- E-R 다이어그램을 사용하여 객체의 행위 모델링
- 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성
- 워프스-브록 방법
- 분석과 설계 간의 구분이 없음
- 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행
- 럼바우 방법
7. 자료사전 사용 기호
- = : 자료의 정의 - A는 ~로 구성되어 있다
- + : 자료의 연결 - A와 B를 연결
- ( ) : 자료의 생략 - 없어도 되는 자료
- [ | ] : 자료의 선택 - A이거나 B
- { } : 자료의 반복
- ** : 자료의 설명
9. CASE
- 계획 수립부터 요구분석, 설계, 개발, 유지보수에 이르는 소프트웨어 생명주기 전 과정을 자동화할 수 있도록 지원하는 자동화 도구
- 등장 배경
- 소프트웨어 산업 측면 : 소프트웨어 위기 극복 방안
- 정보시스템 관리 측면 : 요구사항의 관리 효과 극대화, 재사용성 및 생산성 확대를 위해 등장
- CASE 도구의 분류
- Upper CASE : 계획 수립, 요구분석, 기본 설계 단계를 지원 -> 다이어그램으로 표현
- Middle CASE : 상세설계 작업을 지원, 화면출력 등의 작성 지원
- Lower CASE :시험, 유지보수 작업 지원, 소스코드와 시스템 명세서 획득
- I-CASE: 위의 세가지 통합, Rational ROSE, COOL 등이 국내에서 사용 중
- CASE 도구의 구성
- 다이어그래밍 도구 : 소프트웨어 명세서 정의, 설계 결과의 표현
- 설계 분석기 : 설계 명세서의 정확성, 일치성, 모호성에 대한 검사
- 코드 생성기 : 명세서로부터 프로그래밍 언어로 된 모듈의 코드 생성
- 정보저장소 (Repository) : CASE 도구의 중심, 소프트웨어 개발 생명주기 (SDLC) 동안 정보 저장
- 프로젝트 관리 지원 도구 : 범위 관리, 일정 관리, 예산 관리, 의사 소통, 계획 관리, 공정 관리, 자원 관리 등 프로젝트 관리 활동을 편리하게 할 수 있게 함 (REDMINE, GANTT, OpenProj 등)
- 재공학 도구 : 기존시스템의 설계 명세서 작성 지원
- 프로토타이핑 도구 : 초기 UI 작성 지원
14. 럼바우의 객체 지향 분석 절차
- 객체 모델링 (Object Modeling)
- 정보 모델링
- 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계 규정
- 그래픽 다이어그램으로 표시하는 모델링
- 실세계 문제 영역으로부터 객체와 클래스를 추출해 그들 간의 관계를 연관화, 집단화, 일반화 중심으로 규명
- 클래스의 속성과 연산을 함께 표현함으로써 시스템의 정적 구조 생성
- 동적 모델링 (Dynamic Modeling)
- 상태 다이어그램을 사용하여 시스템의 행위를 기술하는 모델링
- 기능 모델링 (Function Modeling)
- 자료흐름도 (DFD)를 이용
- 다수의 프로세스들 간의 자료 흐름을 중심으로 처리과정 표현
- 어떤 데이터를 입력하면 어떤 결과를 구할 것인지 표현
15. 데이터 흐름도 (DFD)
- DFD의 구성
- 처리 (process) : 입력된 자료를 출력으로 변환하는 것, 프로세스, 원 안에 처리 명칭 기술
- 자료 흐름 (data flow) : 발생지, 종착지, 처리 및 저장소 사이에서 자료의 흐름을 나타냄, 화살표 위에 자료의 명칭 기술
- 자료 저장소 (data store) : 시스템 상의 자료의 저장소를 나타냄, 평행선 안에 자료 저장소 명칭 기술
- 단말기 (terminator) : 시스템에 필요한 자료가 입력되는 발생지와 시스템에서 처리된 자료가 출력되는 종착지 또는 외부에 존재하는 사람이나 조직을 나타냄, 사각형 안에 발생지나 종착지 명칭 기술
- DFD 작성 지침
- 자료 흐름은 처리를 거쳐 변환 될 때마다 새로운 이름 부여
- 어떤 처리가 출력자료를 산출하기 위해서는 반드시 입력 자료가 발생
- 상위 단계의 처리와 하위 자료 흐름도의 자료 흐름은 서로 일치
18. 요구사항 분석
- 요구사항 분석의 개념
- 소프트웨어 개발의 실제적인 첫 단계
- 개발 대상에 대한 사용자의 요구사항을 이해하고 문서화하는 활동
- 요구사항 분석 시 고려사항
- 사용자 요구를 정확하게 추출하여 목표를 정하고 어떤 방식으로 해결할 것인지 결정
- 사용자 요구사항을 정확하고 일관성 있게 분석하여 문서화
- 소프트웨어 분석가에 의해 요구사항 분석 수행
- 요구사항 분석의 수행
- 문제인식 : 사용자 면담, 설문 조사 및 협조, 각종 문서 검토 등을 통해 요구사항 수집
- 평가와 종합 : 추출된 요구사항에 대한 정보 평가, 여러 가지 해결책 종합
- 모델 제작 : 평가와 종합을 바탕으로 자료와 제어의 흐름, 기능 처리, 동작 행위, 정보 내용 등을 이해하기 쉽도록 모델로 작성
- 문서화와 검토 : 소프트웨어의 기능, 성능, 제약 조건 등에 대하여 명세화, 검토
- 요구사항 명세서
- 요구사항 분석 단계에서 분석된 여러 결과를 바탕으로 소프트웨어의 기능, 제약 조건, 성능, 참조 자료 등을 기술한 것
- 요구사항 분석서
- 설계 명세서 작성은 설계 단계에서 수행
22. 트리 용어
- 루트 노드 (root node) : 부모가 없는 노드, 트리는 하나의 루트 노드만을 가짐
- 단말 노드 (leaf node) : 자식이 없는 노드
- 내부 노드 (internal node) : 루트나 단말 노드가 아닌 노드
- 링크 (link) : 노드를 연결하는 선, edge, branch
- 형제 (sibling) : 같은 부모를 가지는 도느
- 노드의 크기 (size) : 자신을 포함한 모든 자손 노드의 개수
- 노드의 깊이 (depth) : 루트에서 어떤 노드에 도달하기 위해 거쳐야 하는 간선의 수
- 노드의 레벨 (level) : 트리의 특정 깊이를 가지는 노드의 집합
- 노드의 차수 (degree) : 부(하위) 트리 개수 혹은 간선의 수 (각 노드가 가진 가지의 수)
- 트리의 차수 (degree of tree) : 트리의 최대 차수
- 트리의 높이 (height) : 루트 노드에서 가장 깊숙히 있는 노드의 깊이
25. McCall의 품질인자 - 소프트웨어 품질 측정을 위해 개발자 관점에서 고려해야 할 사항
- 제품 개선 (Produict Revision)
- 유지보수성 (Maintainability) : 운영 중인 프로그램 내의 에러를 수정하는데 드는 노력
- 유연성 (Flexibility) : 운영 중인 프로그램을 변경하는데 드는 노력
- 테스트 용이성 (Testability) : 프로그램이 의도하는 기능을 수행하는지를 확인하기 위하여 테스트를 하는데 드는 노력
- 제품 운영 (Product Operations)
- 정확성 (Correctness) : 프로그램이 설계 사양을 만족시키며 사용자가 원하는대로 수행되고 있는 정도
- 신뢰성 (Reliability) : 프로그램이 항시 정확하게 동작하고 있는 정도
- 효율성 (Efficiency) : 프로그램의 기능을 수행할 때 요구되는 소요 자원의 양
- 무결성 (Integrity) : 허가되지 않은 사람의 소프트웨어나 데이터에의 접근을 통제할 수 있는 정도
- 유용성 (Usability) : 사용이 용이한 정도
- 제품 전이 (Product Transition)
- 이식성 (Portability) : 하나의 운영 환경에서 다른 환경으로 소프틍뤠어를 옮기는데 드는 노력
- 재사용성 (Re-usability) : 다른 애플리케이션에서 재사용할 수 있는 정도
- 상호운용성 (Inter-operability) : 타 시스템과 인터페이스가 가능한 정도
26. 정보 통신과 관련된 중요 법칙
- Brooks의 법칙
- 프로젝트 중 새로운 인력을 투입할 경우 작업 적응기간과 부작용으로 인해 일정이 더 지연되는 현상
- S.W Project 일정이 지연된다고 해서 Project 말기에 새로운 인원을 추가 투입하면 Project는 더욱 지연되게 된다는 법칙
- 무어의 법칙
- 마이크로 칩의 처리 능력은 18개월마다 2배로 늘어난다는 법칙
- 암달의 법칙
- 프로그램은 병렬 처리가 가능한 부분과 불가능한 순차적인 부분으로 구성되므로 프로세서를 아무리 병렬화 시켜도 더 이상 성능이 향상되지 않는 성능 향상의 한계가 존재한다는 법칙
- 길더의 법칙
- 조지 길더의 말에서 유래된 정보통신 법칙
- 광섬유의 대역폭은 12개월 마다 3배씩 증가한다는 법칙
- 멧갈프의 법칙
- 하나의 네트워크의 유용성 또는 효용성은 그 네트워크 사용자의 제곱에 비례한다는 법칙
- 구스타프슨의 법칙
- 대용량 데이터 처리는 효과적으로 병렬화할 수 있다는 법칙
- 병렬화로 얻을 수 있는 프로그램의 성능 향상은 프로그램의 순차적인 부분에 의해 제한된다는 암달의 법칙에 대한 반대 개념
- 리드의 법칙
- 컴퓨터 네트워크가 사회적 네트워크와 결합 될 때 그 네트워크의 가치는 N의 제곱(멧칼프 법칙)으로 증가하는 것이 아니라 2의 N제곱으로 증가한다는 법칙
- 집단형성 네트워크 (GFN) 라고도 함
- 눈덩이 효과
- 눈 덮인 산꼭대기에서 눈 뭉치 하나를 굴려 내렸을 때 산 밑에 도달한 눈덩이는 엄청난 크기가 되어 있는 현상
- 소프트웨어 개발 초기 체계적인 분석 및 설계가 수행되지 않을 경우 그 결과가 프로젝트 후반에서는 비용이 상당한 영향으로 온다는 법칙
27. DRM의 기술 요소
- 암호화 (Encryption)
- 컨텐츠 및 라이선스 암호화
- 전자 서명
- PKI, Symmetric / Asymmetric Encryption, Digital Signature
- 키 관리 (Key Management)
- 컨텐츠를 암호화한 키에 대한 저장 및 배포 기술
- Centralized, Enveloping
- 암호화 파일 생성 (Packager)
- 컨텐츠를 암호화된 컨텐츠로 생성하기 위한 기술
- Pre-packaging, On-thefly Packaging
- 식별 기술 (Idendification)
- 컨텐츠에 대한 식별 체계 표현 기술
- DOI, URI
- 저작권 표현 (Right Expression)
- 라이선스의 내용 표현 기술
- XrML/MPEG - 21 REL, ODRL
- 정책 관리 (Policy management)
- 라이선스의 발급 및 사용에 대한 정책 표현 및 관리 기술
- XML, Contents Management System
- 크랙 방지 (Tamper Resistance)
- 크랙에 의한 컨텐츠 사용 방지 기술
- Code Obfuscation, Kernel Debugger Detection, Module Certification
- Secure DB, Secure Time Management, Encryption
- 인증 (Authentication)
- 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
28. 네트워크 영역에 적용되는 보안 프로그램
* 보안을 위한 기술에는 S라는 약어가 들어감
- IPsec
- 통신 세션의 각 IP패킷을 암호화하고 인증하는 안전한 인터넷 프로토콜 통신을 위한 인터넷 프로토콜 스위트
- 통신 세션의 개별 IP 패킷을 인증하고 암호화함
- SSL (전송 계층 보안)
- 컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약
- 인터넷 같이 TCP / IP 네트워크를 사용하는 통신에 적용
- 통신 과정에서 전송 계층 종단간 보안과 데이터 무결성 확보
- 3.0 버전부터 TLS로 표준화
- S-HTTP
- 웹 상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나
29. 인터페이스 구현 검증 도구
- xUnit : Java (Junit), C++ (Cppuinit), .Net (Nunit) 등 다양한 언어를 지원하는 단위 테스트 프레임 워크
- STAF : 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임 워크
- FitNesse : 웹 기반 테스트 케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임 워크
- NTAF : Naver 테스트 자동화 프레임 워크 (STAF와 FitNesse 통합)
- Selenium : 다양한 브라우저 지원 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임 워크
- watir : Ruby 기반 웹 애플리케이션 테스트 프레임 워크
32. 화이트 박스 테스트
- 소스 코드 내부를 보면서 제어 구조, 루프 등을 확인하는 테스트 기법
- 개발자 관점 테스트
- 화이트 박스 테스트의 종류 : 기본 경로 테스팅, 구조 검사, 루프 검사, 제어 흐름 테스트, 데이터 흐름 검사
34. 트리 순회 방식
* 루트 노드를 중심으로 왼쪽, 오른쪽을 구분한 후 단계별로 구분
- 전위 순회 (Pre -Order) : (Root), Left, Right
- 중위 순회 (In -Order) : Left, (Root), Right
- 후위 순회 (Post-Order) : Left, Right, (Root)
35. 알고리즘 시간 복잡도 - 빅 오 표기법
- O(1) : 상수형, 입력 데이터의 수에 관계 없이 일정한 실행 시간을 갖는 알고리즘
- O(log n) : 로그형, 입력 데이터 n일 경우 문제를 해결하는데 필요한 단계들이 연산마다 특정 요인에 의해 줄어듬
- O(n) : 선형, 입력 자료의 크기가 n 일 경우 n*(log2n)번 만큼의 수행 시간을 갖는 알고리즘
- O(n*logn) : 선형 로그형. 입력 자료의 크기가 n일 경우 n*(log2n)번만큼의 수행시간을 갖는 알고리즘
- O(n²) : 2차형, 입력 자료의 크기가 n 일 경우 n ² 번만큼의 수행 시간을 갖는 알고리즘
- O(n⁵) : 3차형, 입력 자료의 크키가 n 일 경우 n ⁵ 번만큼의 수행 시간을 갖는 알고리즘
- O(2n) : 지수형 , 입력 자료의 크키가 n 일 경우 2n 번만큼의 수행 시간을 갖는 알고리즘
- O(n!) : 팩토리얼형, , 입력 자료의 크키가 n 일 경우 n*(n-1)*(n-2)....*1(n!) 번만큼의 수행 시간을 갖는 알고리즘
36. 알고리즘의 복잡도 측정
- 행렬 곱셈 : O(n^3)
- 버블 정렬 : O(n^2)
- 삽입 정렬 : O(n^2)
- 퀵 정렬 : O(n log n)
- 합병 정렬 : O(n log n)
- 순차 탐색 : O(n)
- 이진 탐색 : O(log n)
- 해시 테이블 : O(1)
37. ISO/IEC 9126의 품질 모델
- 사용 품질 : 효과성, 생산성, 안정성, 만족도
- 내부/외부 품질
- 기능성 : 적절성, 정확성, 상호운용성, 보안성, 준수성
- 신뢰성 : 성숙성, 결합수용성, 복구용이성, 준수성
- 사용성 : 이해용이성, 학습성, 운영성, 기호성, 준수성
- 효율성 : 시간 효율성, 자원 활용성, 준수성
- 유지보수성 : 분석성, 변경성, 안정성, 시험성, 준수성
- 이식성 : 환경 적응성, 설치 용이성, 치환성, 상호공존성, 준수성
39. 소스코드 품질 분석 도구
- 정적 분석 도구
- pmd
- 자바 및 타 언어 소스코드에 대한 버그, 데드 코드 분석
- Eclipse에 임베드 되어 사용
- 지원 환경 : Linux, Windows
- 개발 도구 지원 : Eclipse, NetBeans
- cppcheck
- C / C++ 코드에 대한 메모리 누수, 오버플로우 등 문제 분석
- 배열 범위 체크, 클래스 체크, 메모리 누수 체크, null pointer 체크 등 발생 가능한 결함에 대한 오류 검출
- 지원 환경 : Windows
- 개발 도구 지원 : Eclipse, gedit, Visual Studio
- SonarQube
- 소스 코드 품질 통합 플랫폼, 플러그인 확장 가능
- 지원환경 : Cross-Platform
- 개발도구 지원 : Eclipse
- checkstyle
- 자바 코드에 대한 코딩 표준 준수 검사 도구
- Sun Check RuleSet 제공
- 지원환경 : Cross-Platform
- 개발도구 지원 : Ant, Eclipse, NetBeans
- CodeSonar
- Microsoft C# assembly 파일과 디버깅 정보 (.pdb 파일) 기반으로 분석을 수행 -> 이에 상응하는 소스 코드 (.cs 파일)을 통해 검출된 결과 출력
- 지원환경 : Windows
- 개발도구 지원 : Wisual Studio
- Splint
- C코드를 분석하여 오류를 검출하는 도구
- 지원환경 : Cross-Platform
- 개발도구 지원 : Eclipse, Visual Studio
- pmd
- 코드 복잡도
- ccm
- 다양한 언어의 코드 복잡도 분석 도구
- Linux, Mac 환경 CLI형태 지원
- 지원환경 : Cross-Platform
- 개발도구 지원 : Visual Studio
- cobertura
- Jcoverage 기반의 테스트 커버리지 측정 도구
- 지원환경 : Cross-Platform
- 개발도구 지원 : Ant, Maven
- McCabelQ
- 컴포넌트의 McCabe복잡도 계산
- 지원환경 : Cross-Platform
- 개발도구 지원 : Eclipse, Visual Studio
- ccm
- 동적 분석 도구
- Avalanche
- Valgrind 프레임 워크 및 STP 기반 소프트웨어 에러 및 취약점 동적 분석 도구
- 지원환경 : Linux, Android
- Valgrind
- 자동화된 메모리 및 쓰레드 결함 발견 분석 도구
- 메모리 관리에 관련된 오류 검출 및 Cache, Heap, Multi, Tread의 프로파일링을 지원하는 오픈 소스 도구
- 지원환경 : Cross-Platform
- 개발도구 지원 : Eclipse, NetBeans
- Avalanche
41. SQL 종류
- 데이터 질의어 (DQL) : 데이터
- 검색 : SELECT
- 데이터 조작어 (DML) : 데이터
- 수정 : UPDATE
- 삭제 : DELETE
- 추가 : INSERT
- 데이터 정의어 (DDL) : 테이블
- 데이터베이스 객체를 생성하고 수정, 삭제하는 명령어
- 생성 : CREATE
- 변경 : ALTER
- 객체 삭제 : DROP
- 객체 내용 삭제 : TRUNCATE
- 참조 테이블 삭제 옵션 : CASCADE
- 데이터베이스의 스키마를 정의, 스키마에 대한 명세는 시스템 카탈로그에 저장
- 데이터베이스 객체를 생성하고 수정, 삭제하는 명령어
- 데이터 제어어 (DCL)
- 규정이나 기법을 정의하고 제어하는 언어
- 사용자 권한 부여/취소
- GRANT : 권한 부여
- REVOKE : 권한 회수
- 트랜잭션 제어 (TCL)
- COMMIT : 완료한 작업을 데이터베이스에 영구적으로 반영
- ROLLBACK : 작업 시작 이전의 상태로 되돌림
- SVAEPOINT : 저장점 지정, ROLLBACK과 함께 사용 시 특정 지점까지 ROLLBACK
44. 정규화의 유형
비정규 릴레이션 |
↓ 도메인이 원자 값 |
1NF |
↓ 부분적 함수 종속 제거 |
2NF |
↓ 이행적 함수 종속 제거 |
3NF |
↓ 결정자이면서 후보키가 아닌 것 제거 |
BCNF |
↓ 다치 종속 제거 |
4NF |
↓ 조인 종속성 이용 |
5NF |
- 비정규 릴레이션
- 제1정규형(1NF) : 릴레이션 R의 모든 속성 값이 원자값을 가지는 릴레이션
- 제2정규형(2NF) : 릴레이션 R이 제 1정규형이고 기본키가 아닌 속성이 기본 키에 완전 함수 종속일 때
- 제3정규형(3NF) : 릴레이션 R이 제 2 정규형이고 기본키가 아닌 속성이 기본키에 비이행적 non-transitive로 종속할 때 (직접 종속)
- 보이스/코드 정규형(BCNF) : 릴레이션 R에서 함수 종속성 X -> Y 가 성립할 때 모든 결정자 X가 후보키일 때
- 제4정규형(4NF) : 릴레이션 R에서 MVD A -> B가 존재할 때 R의 모든 애트리뷰트 들이 A에 함수 종속 (FD)이면 R은 4NF (즉, R의 모든 애트리뷰트 X에 대해 A-> X이고 A가 후보키)
- 제5정규형(5NF) : 릴레이션 R에 존재하는 모든 조인 종속이 R의 후보키를 통해 성립되면, R은 5NF
49. 데이터베이스 설계 과정
데이터 모델 종속적 | 특정 DBMS 독립적 | 요구사항 분석 |
개념적 설계 | ||
논리적 설계 | ||
특정 DBMS 종속적 | 물리적 설계 | |
데이터 베이스 구축 |
- 요구사항 분석
- 요구사항 수집 : 기존 문서 조사, 인터뷰, 설문조사 등을 사용하여 DB에 저장할 대상, 제약 조건, 데이터 처리 등에 대한 요구사항 수집
- 요구사항 분석 : 개체와 속성, 개체 간 관계 파악, 데이터 처리 시 사용되는 주요 연산들, 연산 시접근하는데이터 양등을 분석
- 개념적 설계
- 한 조직체에서 사용되는 정보 모델 구축, 높은 추상화 수준의 데이터 모델 사용, E-R 모델이 대표적
- 개체 타입, 관계 타입, 속성들을 식별, 속성들의 도메인 결정, 후보키와 기본 키 결정
- 개념적 스키마는 ER 다이어그램으로 표현
- 논리적 설계
- 선택한 DBMS의 데이터 모델을 사용하여 논리적 스키마 생성
- 개념적 스키마를 논리적 스키마로 변환
- ER 모델로 표현된 개념적 스키마를 관계 데이터 베이스 스키마로 변환
- 스키마 정제 (정규화) : 더 좋은 관계 데이터 베이스 스키마로 변환하기 위해서 정규화 과정 적용
- 선택한 DBMS의 데이터 모델을 사용하여 논리적 스키마 생성
- 물리적 설계
- 데이터 처리 요구사항들을 만족시키기 위해 저장 구조와 접근 경로 등을 결정
- 성능상의 주요 기준 : 응답 시간, 트랜잭션 처리율, 보고서 생성 소요 시간
- 데이터 베이스 구축
- 데이터베이스 설계 결과물을 토대로 SQL의 DDL로 데이터베이스 객체들을 생성
- 데이터베이스 설계 도구를 이용할 경우 자동으로 특정 DBMS에 맞는 데이터베이스를 구축할 수 있음
- 데이터 이행
- 데이터베이스로 저장할 신규 데이터를 수집하고 도메인에 맞도록 데이터를 변환하고 데이터베이스 테이블로 적재하는 과정
- 기존 데이터베이스에 저장된 데이터를 전환할 경우 데이터 전환 과정을 수행
50. E-R 모델
- 개념적 데이터 모델의 가장 대표적인 것
- 1970년 피터 첸에 의해 개발
- 개체 타입과 이들 간의 관계 타입을 이용하여 현실 세계를 개념적으로 표현하는 방법
- E-R 다이어그램의 기호
- 사각형 : 개체 타입
- 마름모 : 관계 타입
- 타원 : 속성
- 밑줄 타원 : 기본 키 속성
- 복수 타원 : 복합 속성
- 관계 : 개체 관계( 1:1, 1:N, N:M 등)에 대한 대응 수를 선위에 기술
- 선 링크 : 개체 타입과 속성 연
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 101 ~ 150 오답정리 (0) | 2025.04.01 |
---|---|
[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 51 ~ 100 오답정리 (0) | 2025.03.31 |
[정보처리기사 필기] 기출문제 - 951 ~ 1000. 오답노트 (0) | 2025.03.27 |
[정보처리기사 필기] 기출문제 - 901 ~ 950. 오답노트 (0) | 2025.03.26 |
[정보처리기사 필기] 기출문제 - 851~ 900. 오답노트 (1) | 2025.03.25 |