1. NS(Nassi-Schneiderman) chart
- 직사각형을 포개어 나가면서 표현하는 차트
- 논리의 기술, 순차/선택/반복 등의 제어 논리 구조로 표현
- 조건이 복합되어있는 곳의 시각적 처리, 이해 용이 목적
- goto 구조가 어렵고, 그래픽 설계 도구, 프로그램 구현이 쉽지만 구현이 어렵다.
2. 객체지향 설계원칙
- 단일 책임 원칙 : 모든 클래스는 하나의 책임만, 캡슐화
- 리스코프 교체 원칙 : 하위 클래스에게 속성을 상속한 상위 자료형에 대해, 별도 수정없이 인터페이스를 교체할 수 있어야 한다는 원칙
- 개방폐쇄 원칙 : 수정에는 폐쇄, 확장에는 개방
- 인터페이스 분리 원칙 : 다른 인터페이스 영향X, 자신이 사용하지 않는 메서드와 의존관계를 맺으면 안된다.
3. 파이프 필터 형태
- 서브 시스템이 입력받아 처리하고, 그 결과를 다음 서브 시스템으로 연결
- 데이터 스트림의 절차
- 컴포넌트를 캡슐화, 파이프를 통해 데이터 연결 및 전송
※ layer 패턴 : 시스템을 계층화(OSI)
※ 클라이언트-서버 패턴 : 하나의 서버 컴포넌트, 다수의 클라이언트 컴포넌트
※ 모델-뷰 : MVC
4. 애자일 방법론
- 스크럼
- XP
- 기능중심개발(FDD, Feature-Driven Programming)
- Crystal
5. 삽입정렬/선택정렬
- 삽입정렬 : 최초 첫번째 숫자가 정렬되어있다고 가정한 후, 인접키 항목에 대해 순서대로 정렬된 그룹의 알맞은 순서에 대입하는 것, O(nlogn)
- 선택정렬 : 최초 첫번째 숫자는 정렬되어있지는 않고, 정렬되어있지 않는 데이터들 중 가장 작은 숫자를 찾아 가장 첫번째 요소와 교환하는 것, O(nlogn)
6. 스키마
※ 스키마는 외부 - 개념 - 내부로 분류한다.
- 외부 스키마 : 개인 혹은 개발자 입장에서 보는 인터페이스
- 개념 스키마 : DBMS 체계에 맞게 논리적인 구조로 표현, 전체적인 뷰, 개체와의 관계/제약조건/접근권한/무결성/보안
- 물리 스키마 : 실제 물리적 DB에 맞게 구성, 레코드 형식 정의, 데이터 표현 방법, 내부 레코드 물리적 순서 등
7. 테스트 시나리오
8. 빌드 자동화 도구
※ Jenkins : 오픈 소스 빌드 자동화 도구, JAVA 기반, 서블릿 컨테이너에서 실행, Web UI, 분산 빌드 및 테스트
※ Gradle : Groovy 기반의 안드로이드 앱 개발 환경에서 사용하는, 오픈소스 자동화 도구, 행할 명령들을 모아 task로 처리(task 단위로 실행)
- 빌드 및 테스트, 배포 등을 자동화하는 도구
- Ant, Make, Maven, Gradle, Jenkins 등
9. ER 다이어그램
- 사각형 : 개체
- 속성 : 타원
- 선 : 개체와 속성 연결
- 마름모 : 관계
10. 관계대수
- 일반 집합 연산(합집합, 교집합, 카르테시안 등) / 순수 관계 연산(셀렉트, 프로젝트 등)
- 주어진 릴레이션의 조작을 위한 연산의 집합
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명기
- RDBMS에서 사용하여 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는지를 기술한, "RDBMS" -> 절차적 언어
11. 데이터베이스 설계 단계
12. 릴레이션 개념
13. DW(데이터웨어하우스)의 기본 연산
- OLAP : On Line Analytical Processing
- roll up / dicing / drill down / pivot / drill through / slicing
14. UNIX SHELL 환경변수 출력
- printenv, env, setenv
- configenv는 파이썬 전용
15. 정수형 데이터 타입
- byte - 1byte
- short - 2byte
- int - 4byte
- long - 8byte
16. TCP 흐름제어기법
- Slow Start - 패킷이 문제없이 도착하면, 혼잡 윈도우 크기를 패킷마다 1씩 증가시켜 한 주기 지나면 혼잡 윈도우 크기가 2배, 혼잡발생시 패킷을 1씩 감소
- Sliding Window - 한번에 여러 패킷을 전송할 수 있어 전송효율이 좋은 제어기법(ACK-> 윈도우 크기 증가, NAK-> 윈도우 크기 감소)
- Congestion Avoidance(혼잡방지) - 네트워크 내 패킷지연이 과다할 경우, 혼잡방지를 위해 패킷흐름제어
17. 결합도
- 내 > 공 > 외 > 제 > 스 > 자
- 자료 결합도 - 어떤 모듈이 호출할때 매개변수 및 인수만 넘겨주는 결합도, 호출받은 데이터를 다시 돌려주는 방식
- 내용 결합도 - 한 모듈이 다른 모듈의 내용을 참조
- 공통 결합도 - 전역 변수 참조
- 스탬프 결합도 - 매개변수 및 인자 전달시 자료구조 형태로 전달
18. 응집도
- 우 < 논 < 시 < 절 < 통 < 순 < 기
- 우연적 응집도 - 의미관계없음, 처리상 연관성 없음
- 논리적 응집도 - 논리적 유사성, 관계 밀접은 그다지 크지 않음
- 시간적 응집도 - 특정 시간에 실행되어야 하는 기능
- 절차적 응집도 - 다수의 기능들이 순차적, 특정 순서대로 실행
- 통신적(교환) 응집도 - 동일한 입력값, 출력, 다만 다른 기능을 할 경우
- 순차적 응집도 - 출력값이 다른 입력값으로 사용
- 기능 응집도 - 모든 기능이 단일 목적으로 수행
19. 접근제어자
#
- protected
~
- default
20. 세그먼트/포인터 주소 표현
X, Y
-> 포인터/세그먼트 번호, 해당 시작주소의 변위값
21. 논리주소를 물리주소로 변환
※ TCP -> 전송
※ FTP -> 응용
- ARP, Address Resolution Protocol
- RARP, Reverse Address Resolution Protocol(ARP반대, IP주소로)
- ICMP : IP Control Message Protocol, IP와 조합하여 통신제어 및 오류처리 등 수행
- IGMP : IP Group Message Protocol, 멀티캐스트를 지원하는 호스트/라우터 사이에서 멀티캐스트 그룹 유지
22. CMM
- 능력 성숙도 모델
- 초기(프로세스 예측 곤란) > 관리(프로세스별 구축 및 관리) > 정의(세부프로세스 정의 구축) > 정량적 평가(프로젝트 활동이 정량적으로 체계화 및 통제) > 최적화(지속적인 개선활동)
23. 자동화도구
- SADT(Structure Analysis Design Technique) - softTech 사에서 개발한 것으로, 블록 다이어그램으로 구조화하여 자동화하는 도구
※ HIPO : 문서로 체계화하여, 하향식 관리를 위한 계층적 방법 도구
※ SREM(Software Requirements Engineering Methdology) : 우주 국방 시스템 그룹에 의해 실시간 처리 시스템 소프트웨어, 시스템 요구사항 명확히 기술
24. 접근통제기술
- DAC : 데이터 소유자의 신분 근거
- MAC : 시스템이 정한 보안등급 등을 근거
- RBAC : 중앙관리자가 지정한 역할 기반
25. 소프트웨어 비용 추정 모델
- COCOMO, Putnam, Function-Point
※ 일정 관리 기법은 PERT
26. 다중화 기술
- TDM(Time Division Multiplexing) - 시분할 다중화기, 통신 회선 대역폭을 시간으로 나누어 여러 대의 단말 장치 동시 실행
- FDM(Frequency Division Multiplexing) - 주파수분할 다중화기, 통신 회선 대역폭을 주파수로 나눔, 간섭 방지장치 필요
- CDM(Code Division Multiplexing) - 코드 분할
- WDM(Wavelength Divison Multiplexing) - 파장 분할 다중화기, 시스템 확장 및 유연성 우수
27. SPICE
- 프로세스 개선 및 능력 측정 기준
- ISO/IEC 15504
28. Exploit
- 소프트웨어 및 시스템의 결함 및 버그 등을 찾아 해당 부분을 공격하려는 스크립트 및 명령 등을 일컫는 용어