230122추가 : 다빈도 내용은 빨간글씨 처리합니다 (회색바탕은 개인적 중요도를 나타냄)
알고리즘 시간 복잡도 = 비례도
[ 복잡도 ]
- 어느 수준까지 테스트/개발해야하는지 예측
- 시간 복잡도 표기법 = 명령어의 실행횟수를 표기
- 빅오표기법(실행 시간 최악시 표기) / 세타 표기법(실행 시간 평균시 표기) / 오메가 표기법(실행 시간 최상시 표기)
- 빅오 표기법
알고리즘 정렬
*정확 정리 = https://bluemoon-1st.tistory.com/13
- 삽입 정렬 : 비교주체인 키를 잡을 때 첫 회전부터 두번째 위치 키로 시작함, 각 회전마다 주체 키를 기준으로 니즈에 연결될 때까지 돌리고 돌림
출처 : https://gmlwjd9405.github.io/2018/05/06/algorithm-insertion-sort.html
- 버블 정렬 : 1번과 2번, 3번과 4번 자료 교환 = O(N2), 선택정렬과 유사하나 순차적으로 인접 레코드들끼지 정렬 되어있을 때 까지 돌림
- 선택 정렬 : 큐를 사용, 가장 작은 값을 찾아 앞쪽으로 보내 교환 => 비정렬된 인덱스와 남은 값중 가장 작은 값과 교환 => 반복, = O(N2)
정렬 정리
- 단순(구현 간단)하지만 비효율적인 방법 : 삽입 정렬, 선택 정렬, 버블 정렬
- 복잡하지만 효율적인 방법 : 퀵 정렬, 힙 정렬, 합병 정렬, 기수 정렬
알고리즘 설계
- Divide and Conquer 분할 정복 알고리즘 : 작게 분할하여 문제 해결
- Greedy 탐욕 알고리즘 : 현재 시점의 최적 방법 선택
- Backtracking 모든 조합 알고리즘 : 전수조사, 무차별 대입 등 모든 조합으로 문제 답 해결
객제 지향 구성
- 의미 : 실세계 개체를 속성과 메서드가 결합된 형태의 객체로 표현하는 것
- 구성 요소 : 객체(=인스턴트 =캡슐화SW모듈 실체=클래스에 정의된 내용대로 메모리에 생성된 것) + 클래스(공동속성과 연산의 객체 집합=데이터 추상화=객체를 정의한 설계틀) + 메세지(상호작용수단,객체 행위 명령지시)
- 추상화 - 물리적 표현과 조작 절차를 묶어 정의한 것, 상위(간략) ~ 하위(상세 메소드/클래스)
[ 설계 원칙 ]
1) 단일 책임 원칙 Single Responsibility principle : 1클래스 1목적
2) 개방 폐쇄 원칙 Open close principle : 구성요소는 확장 / 변경은 닫힘
3) 리스코프 치환 원칙 Liskov Substitution : 서브타입은 기반타입으로 교체 가능
4) 인터페이스 분리 원칙 Interface Segregation principle : 비사용 메소드와 의존관계나 영향 없음
5) 의존성 역전 원칙 Dependency Inversion principle : 사용관계 변경 없이 메세지로 관계 느슨하게 가능
[ 구조의 정의 ]
- 컴포넌트 구조 = 인터페이스, 알고리즘, 데이터 구조
- 시스템 구조 = 구성요소&컴포넌트 연결 구조
UML 모델(Unified Modeling Language)
- 객체지향 개발 과정에서 산출물을 명세화 할 때 사용되는 범용 모델링 언어
- 모델링 필수 표시 요소 : 논리적 데이터 구조 + 연산 + 제약조건
- 구성 = Thing 사물 + Relationship 관계 + Diagram 다이어그램
- 특징 : 가시화 & 구축 & 명세화 & 문서화
[ 관계 의미 ]
- Dependency(명세변경시 영향발생) / Realization(타 객체에 의한 오퍼레이션 수행하도록 지정) / Association(구조적 관계) / Aggregation(집합관계, 라이프타임 독립) / Generalization(더 특수화된 사물 사이 관계 = is-a) / Composition(합성관계, part of)
[ UML 유형 ]
- 구조형(배열,결합) : 클(래스) 객(체) 컴(포넌트 = 물리구조 표현) 배(치) 복(합체구조) 패(키지)
- 클래스형 : 정적인 관계 표현, 이름+속성+연산+접근제어자
- 행위형(입출력 데이터) : 유(스케이스) / 시(퀀스) / 커(뮤니케이션) / 상(태) / 활(동) / 타(이밍)
- 유스케이스형 : 사용자 관점 표현 , 유스케이스(서비스이자 개발범위)+액터+시스템 , 관계 종류 = 연관/확장/포함/일반화/그룹화
- 시퀀스형 : 액터 + 메세지 + 객체(메세지교환주체) + 생명선(객체가 메모리에 존재하는 기간) + 실행상자
[ 관계 표현 ]
* 출처 : https://velog.io/@neulring/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-UML
- 집합관계 : 전체쪽으로 빈 마름모 표기 , 독립적
- 포함관계 : 전체쪽으로 찬 마름모 표기 , 종속적
- 일반화 관계 : 더 구체적인 쪽으로 빈 삼각형 포기 , 종속적
- 의존관계 : 영향이 받아지는 쪽으로 화살표 , 일시적
- 실체화 관계
코드
- 컴퓨터 자료 처리 과정에서 분류, 조합,집계의 용이화
- 기능 : 식별 / 분류 / 배열
- 종류 : 각 종류들을 통해 일련 번호 부여
- 순차코드(일련번호 기준) / 블록코드(공통기준) / 10진코드(0~9까지 10분할 이후 필요만큼 분할 반복)
- 그룹 분류 코드(일정기준) / 연상코드(관계요소 기준) / 표의 숫자코드(항목 물리적 성질 기준 = 제품 수치) / 합성코드
[ 코딩 순서 ]
- 코딩 => 컴파일 => 코드테스크
DFD
- Data Flow Diagram = 버블차트 = 시스템 구성요소 프로세스 간 자료 흐름도
[ 기호 ] 원 직 화 사
- Process : 원
- Data store : 직선(단선/이중선)
- Data flow : 화살표
- Terminator : 사각형 = 단말기
[ 자료 사전 ]
- DFD가 기술한 정의
- = is composed of : 정의
- + and : 연결
- {} iteration of : 반복
- [] choose only one of : 선택
- () optional : 생략
- ** comment : 주석
소스코드 품질 분석 기법
[ 객체 지향 분석 ] 상 추 캡 다 정 연
- 특징
1) 상속성 : 상위 클래스 속성을 하위 클래스에 INPUT
2) 추상화 : 불필요 부분은 생략하고 중심기준 정의한 모델링
3) 캡슐화 : 데이터와 함수를 묶음 = 일관성 유지, 재사용성 증가 = 낮은 결합도
4) 다형성 : 같은 함수와 기능에 대한 다른 정의를 통해 각 클래스가 행동 실현
5) 정보 은닉 : 정보를 숨기고 연산만으로 타 객체에 접근 = 확장시 오류 최소화
6) 연관성 : 클래스간 연관 관계 정의, Composition = 집단화(is part of)
- 대표 기법
1) 럼바우 객체 지향 분석 기법
- 모델링 순서 : 객체(정보모델링 및 가장 중요한 객체관계 정의) ~ 동적(객체간 제어 흐름 표현) ~ 기능(DFD 위주)
2) Coad&Yourdon 기법 : E-R다이어그램으로 객체 행위 모델링, 주체 정의 등 과정 거침, 개체+애트리뷰트+관계성 기술
- E-R다이어그램 : 개념적 데이터 모델의 대표모델인 개체-관계 모델
3) Booach : 미시/거시 개발 프로세스론 전부 사용
4) Jacobson : Use Case 사용
5) Wirfs-Brocks : 고객 명세서만 평가
[ 정적 분석 ] ★
[ 동적 분석 ] ★
1) valance : valgrind 프레임워크 및 STP기반, 프로그램 결함 및 취약점 분석
2) valgrind : 프로그램 내 존재하는 메모리 및 스레드 결함 분석
디자인 패턴 GoF
- 객체지향언어와 어울리며 절차형언어와 연관성 떨어짐
- 객체의 일반적 상호작용 방법을 모은 목록
- 생성 패턴 : 빌더(내부 클래스로 간접생성) , Factory Method(=키트 & 어떤클래스가 인스턴트화 될 건지 SUB클래스가 결정) , 싱글톤, 프로토타입
- 구조 패턴 : 어댑터(적응변환), 브리지(구현부에 추상층을 분리하여 독립적 확장), 컴포지드, 데코레이션, 퍼씨드, 프록시 , 플라이웨이트
- 행위 패턴 : 상태, 정책(=행위를 클래스로 캡슐화하여 동적으로 행위를 바꿈) 그 외 패턴들
SW 패키징
- 필요 최소환경 정의 = 운영체제 , CPU, 메모리
- UI와 매뉴얼 일치화
- Managed Serivce 형태화
- 모듈화
SW 형상관리 = SCM
- 개발과정에서 발생한 변경사항 관리의 모든 단계 속 일련 활동
- 관리 도구 : 공유폴더방식(RCS) / 서버클라이언트방식(CVS) > 롤백가능화한게 SVN / 분산저장소방식(GIT)
- 관리 항목 : 비용관리, 인력관리, SW 통합, 분석서 등 문서 관리
SW 버전관리
- 저장소
- 가져오기 : 버전관리 안된 저장소에 처음으로 파일을 복사할 때
- 체크아웃 : 프로그램 수정을 위해 저장소에서 소스파일과 버전관리 파일을 가져올 때
- 체크인 : 체크아웃 파일의 수정 완료 후 저장소 파일을 새버전화 할 때
- 커밋: 체크인 수행시 이전 갱신 내용과 충돌 고지 및 도구로 수정하여 갱신 완료할 때
- 동기화 : 저장소를 최신버전으로 작업 동기화 할 때
디지털 저작권 관리(DRM)
- 투명한 거래구조와 유통문화 정착 목적
- 구성 요소 :
- 클리어링 하우스(권한자)
- 콘텐츠 제공자 = 콘텐츠(메타데이터) + 패키저(배포가능상태로 묶고 암호화한것)
- 콘텐츠 분배자(유통자)
- 콘텐츠 소비자 = DRM컨트롤러(이용권한통제) + 보안컨테이너
- 관리 기술 요소 : 암호화 / 키관리 / 크랙 방지 기술 / 정책 관리 기술 / 저작권 표현 / 콘텐츠 식별
개발 프로세스
- 요구사항 도출(고객과 관계 형성) ~ 요구사항 분석(제약,조사,문서화) ~ 명세 작성(한가지로 해석되는 명확성) ~ 확인
'관련 도서 및 지식 > 자격증' 카테고리의 다른 글
[ 정보처리기사 필기 ] 4파트 요약 (1) : 운영체제(OS) , 언어 , 배열 선언 (1) | 2023.01.16 |
---|---|
[ 정보처리기사 필기 ] 3파트 요약 : SQL , KEY, 트랜잭션 , 분산DB , 병행 제어 , 관계 데이터 모델 , 관계 대수 연산 , 모듈 연계 솔루션 , 테스트 (0) | 2023.01.15 |
[ 정보처리기사 필기 ] 1~2파트 요약 (1) : 데이터베이스 언어, 데이터베이스 설계 , DB 회복 , 국제 프로세스 품질 표준 , 테스트 (0) | 2023.01.14 |
[ 정보처리기사 ] 2020 CBT 개념 공부 - 언어 활용 (0) | 2023.01.13 |
[ 정보처리기사 ] 2020 CBT 개념 공부 - 트리 + 알고리즘 식 표기법 (0) | 2023.01.13 |