1. 코드 설계에서의 일정한 일련번호를 부여하는 방법
- 연상코드 : 코드화 대상 항목의 명칭 및 약호와 관계있는 숫자, 문자, 기호를 이용하여 코드를 부여하는 방법
- 블록코드(구분코드) : 코드화 대상 항목 중 공통성 있는 것끼리 블록으로 구분하고, 각 블록 내 일련번호를 부여하는 방법
- 표의 숫자 코드 : 코드화 대상 항목의 성질, 물리적 수치를 그대로 코드에 적용하는 방법
- 순차코드 : 일정 기준에 따라 최초의 자료부터 일련번호를 부여하는 방법
2. UML에서의 스테레오 객체 표현
→ <<>>이다.
3. 자료 사전에서 자료의 생략 표현
→ ()이다.
4. 트랜잭션 처리 및 데이터 감시 미들웨어
→ TP monitor이다.
- RPC : remote Procedure Call, 원격절차 호출 및 원격프로시저 호출
- ORB : Object Request Broker, 객체간 메시지 전달을 지원하는 프로시저(코바표준스펙 지원)
5. UI 설계원칙
- 유효성 : 정확하고 완벽하게 사용자의 목표를 달성할 수 있도록 제작
- 학습성 : 초보자와 숙련자 모두 쉽게 배우고 사용할 수 있도록 제작
- 유연성 : 사용자 인터랙션을 최대한 포용하고, 실수를 방지할 수 있도록 제작
- 직관성 : 누구나 쉽게 이해하고 사용할 수 있도록 제작
6. XP(Extreme Programming)
- 용기(Courage) : 고객의 요구변화에 능동적인 대처
- 단순성(Simplicity) : 부가적인 기능, 사용되지 않는 구조와 알고리즘 배제
- 커뮤니케이션(Communication) : 개발자, 관리자, 고객 간의 원활한 의사소통
- 피드백(Feedback) : 지속적인 테스트, 결함 수정
- 존중(Respect) : 모든 프로젝트에 참여하는 팀원을 존중
7. 요구사항 분석
- 비용과 일정, 이와 관련한 타당성 분석
- 타당성 조사
- 요구사항 정의 문서화
※ 설계 명세서 작성은 요구사항 명세에서 진행.
8. 럼바우(Rumbaugh)
객체(객체 다이어그램, 객체 관계) > 동적(상태다이어그램(상태도)를 통한 객체간 제어흐름, 상호작용, 동작순서 등) > 기능(DFD를 활용하여 다수 프로세스 간 자료흐름 중심 처리)
9. 공통 모듈에 대한 명세 기법
- 명확성 - 일관되게 이해하고 한가지로 해석할 수 있도록 작성
- 정확성 - 해당 기능이 시스템 구현에 필요한지 아닌지 알 수 있도록 정확하게 작성
- 완전성 - 시스템 구현시 필요한 모든 것을 기술
- 일관성 - 공통 기능 간 상호 충돌이 없도록 기술
- 추적성 - 공통 기능에 대한 요구사항 출처, 관련 시스템의 유기적 관계 등
하향식 소프트웨어 개발 기법이다.
11. 객체지향 분석 방법론
- Coad와 Yourdon 기법 : E-R 다이어그램을 이용한 객체 행위 모델링, 객체 식별, 구조 식별, 주체 정의, 속성 및 관계 정의 등
- 럼바우(Rumbaugh) 기법 : 소프트웨어 구성요소를 그래픽 표기법을 사용하여 모델링, 객체모델링/동적모델링/기능모델링
- Booch 기법 : 클래스와 객체 식별 및 의미관계 식별(미시적 개발/거시적 개발 프로세스 모두 사용)
- Jacobson 기법 : Usecase를 사용하는 기법
- Wirts-Brocks 기법 : 분석/설계간 구분이 없고 고객 명세서를 평가하기 위해 설계 작업까지 연속으로 수행하는 기법
12. 정적분석도구
- pmd : 소스 코드에 대한 미사용 변수, 최적화되지 않는 코드 등 결함을 유발할 수 있는 코드를 검사
- cppCheck : C/C++ 코드에 대한 메모리 누수 및 오버플로우 등 분석
- SonarQube : 중복 코드, 복잡도, 코드 설계 등을 분석하는 소스 분석 통합 플랫폼
- checkStyle : java 코드에 대해 소스코드 표준을 따르는지 검사
- ccm : 다양한 언어의 코드 복잡도를 분석한다.
- cobertura : java 언어의 코드 복잡도 분석, 테스트 커버리지 측정
※ 동적분석도구
- Avalanche : Valgrind 프레임워크 및 STP기반의 프로그램 결합 및 취약점 분석
- valgrind : 프로그램 내 존재하는 메모리 및 thread 결함을 분석
13. 동치분할검사
입력자료에 초점을 두어, 케이스를 만들어 각 케이스별 검사하는 기법(BlackBox Test)
14. 스파게티 코드
코드가 복잡하게 얽혀있어 이해하기 어려운 코드를 의미한다.
15. 데이터 제약 조건
- 개체 무결성 제약 조건 : 기본 키를 구성하는 어떤 속성도 Null 혹은 중복값이 올 수 없다.
- 도메인 무결성 제약 조건 : 주어진 속성 값이 정의된 도메인에 속하는 값이어야 한다.
- 참조 무결성 제약 조건 : 외래키의 값은 Null이거나, 참조하는 relation의 기본키값과 동일해야 한다.
16. 관계대수 연산
- Join : 공통 속성을 이용하여, 두개의 relation tuple을 서로 연결하여 만듦
- Project : 릴레이션에서 주어진 속성의 값으로만 구성한 튜플 반환
- Select : 릴레이션에서 조건을 만족하는 튜플 반환
※ %(Division) : [R%S], S relation과 연관된 튜플을 반환하되, S에 있지 않은 속성에 대해서만 반환
17. E-R모델 표현 방법
- 개체 타입 : 사각형
- 관계 타입 : 마름모
- 속성 : 원
- 연결 : 선
ER모델 - 요구사항으로부터 얻어낸 개체(Entity), 애트리뷰트(Attribute), 관계성(Relation)으로 기술하는 데이터 모델
18. 슈퍼키/후보키
후보키 - 유일성, 최소성
슈퍼키 - 유일성(최소성X)
19. 비트연산자
논리 - |(OR), &(AND), ^(XOR), ~(NOT)
시프트 - <<, >>
조건 - ?
20. 교착상태 해결기법
Avoidance(회피) - 은행가 알고리즘(Banker's Algo)
Prevention(예방) - 교착상태 원인을 제거
→ 상호배제
→ 점유와 대기
→ 비선점
→ 환형대기
Detection(탐지) - 자원 할당 그래프
Rececovery(복구) - 자원 선점 / 프로세스 종료
21. OSI 7 Layer
- 응용계층 : 사용자가 OSI 7 layer에 접근할 수 있는 환경(인터페이스) 제공
- 표현계층 : 응용계층 데이터를 세션계층(session)으로 전송하기 전에, 통신에 적당한 형태로 표현(반대로 세션계층 데이터를 표현계층에 맞게)
- 세션계층 : 송수신측간 관련성 유지 및 대화제어
- 전송계층 : 논리적 안정, 종단간 균일한 데이터 전송 서비스 제공, 종단 시스템간 투명한 논리 안정성 제공(오류검출 및 복구, 서비스 제어 등)
- 네트워크 : 개방 시스템간 라우터링, 네트워크 연결 및 관리
- 데이터링크 : 두 개의 인접한 개방 시스템들간 신뢰성있고 효율적인 정보 전송(오류검출 및 복구, 서비스 흐름 제어 등)
- 물리 : 전송에 필요한 두 장치간 실제적인 물리접속, 전기적 기능적 절차
22. IEEE 802.11x
IEEE 802.11x 자체가 무선 LAN에 대한 표준화 규격이다(2.4GHz, CSMA/CA).
- 802.11a : 5GHz 대역의 전파를 사용하는 규격, OFDM 기술을 사용하여 최고 54Mbps까지 전송 속도를 지원
- 802.11b : Wi-fi, 11Mbps(11스루풋)
- 802.11d : 지역간 로밍 확장 기술
- 802.11e : QoS, MAC 지원, Voice Over WLAN, 스트리밍
- 802.11f : 인터넷 액세스 프로토콜
- 802.11g : 11b의 스루풋 확장(54mbps)
- 802.11h : DFS, TPC, 레이더 간섭 해결
- 802.11i : WPA2
- 802.11j : 일본용 전송 방식
- 802.11k : 전파 자원 측정 확장 기술
- 802.11n : 40MHz 폭, g의 스루풋 확장, 600mbps
- 802.11p : 빠르게 움직이는 운송 수단을 위한 무선 접속 기술
- 802.11r : 빠른 로밍
- 802.11s : ESS mash 네트워킹
- 802.11t : 무선 성능 예측(WPP)
- 802.11u : 802.11 기반이 아닌 네트워크와 상호 연동
- 802.11v : 무선 네트워크 관리
- 802.11w : 보호된 관리 프레임
23. 응집도 순서
기능적(Functional) > 순차적(Sequential) > 교환적(Communicational) > 절차적(Procedual) > 시간적(Temporal) > 논리적(Logical) > 우연적(Coincidental)
24. 비용산정기법
전문가 감정 기법 : 조직 내 경험이 많은 전문가에게 비용 산정 의뢰
델파이 기법 : 전문가 감정의 주관적 감정을 배제하기 위해 많은 전문가 의견을 종합
LoC : 원시코드라인수를 기반으로, 원시코드라인의 비관치/낙관치/기대치를 측정하여 산정
COCOMO : Bohem이 제안, LoC에 의해 산정하는 기법
※ COCOMO 유형별 세부 분류
- Organic : 원시코드라인수 5만라인 이하, 조직형/소규모 소프트웨어로 일괄 자료 처리
- Semi-Detached : 반분리형, 트랜잭션 처리 시스템이나 DB, 30만 라인 이하
- Embedded : 내장형, 최대형 트랙잭션 처리 규모 시스템 및 운영체제, 30만 라인 이상
※ COCOMO 종류
- Basic : 소프트웨어 크기 및 개발 비용에서만 이용
- Intermediate : Basic 기반으로 하되, 4가지 특성 등을 기반으로 비용 산정
- Detailed : 중간형 COCOMO 보완형 기법으로, 개발 공정별보다 자세하고 정확하게 비용을 산정
- Putam : 소프트웨어 생명 주기 전 단계에 사용될 곡선의 분포를 가정하는 모형
※ Rayleigh-Norden 곡선을 기초로 한다.
- FP기법 : 기능 점수 모형으로, 알브레히트가 제안한 모형이다(총 기능점수 산출을 통한 영향도 도출).
25. 메모리 상 프로그램의 복귀 주소와 변수사이에 특정 값을 저장해두었다가, 그 값이 변경되었을 경우 오버플로우 상태로 지정하여 프로그램 실행을 중단하는 기술
Stack Guard이다.
- Stack Protection : Stack Overflow를 감지하고, 보안을 강화시키는 기법
- Stack Guard : Stack 상 일정한 번지주소에 프로그램이 선언한 canary를 심어두고, 스택 변조시 canary를 check하여 프로그램을 비정상적으로 종료하는 기법
- Stack Shield : 함수의 리턴주소를 복사하여, 실제 리턴주소를 참조하지 않고 함수를 리턴해주는 기법
- Syslog : 시스템에서 로그메시지를 처리하기위해 제공
- Recovery Control : 부적절한 상황으로 인한 피해를 극복하고, 정상상태로 회복한다.
※ stack guard와 propolice는 함수포인터들을 오버플로우하는, 자동으로 할당된 구조체들에서 오버플로우를 방어하지 못한다.
26. 백도어 탐지 방법
- 열린 포트 탐지
- 로그 분석
- setUID 파일 검사
- 무결성 검사
27. 개발 소요 기간 (LoC)
Loc(노력) = 예측 총 라인 수 / 월 평균 생산 라인 = 개발소요기간 * 프로그래머 수
28. 라우팅 프로토콜
- RIP : 가장 많이 사용하는 내부 라우팅 프로토콜, 최대 홉스 카운트 15로 제한, 자율 시스템(AS) 내 사용하며 근거리 통신망 및 독립적 네트워크 내에서 라우팅 정보 관리
- OSPF : 홉스 카운트 대신 cost 사용(효율을 위해 자율 시스템(AS)을 여러 지역으로 나눔)
- IGRP : hop 수 기준 프로토콜 전송, 라우팅 경로 설정시 회선의 전송능력, 지연시간, 사용률, 신뢰도 등 바탕(독립적 내트워크 내에서만 사용)
- EIGRP : IGRP Metric 구성값에 256 곱하여 사용, 순차적 패킷 전달(순차적), 낮은 대역폭 및 빠른 수렴
- BGP : 라우터에 의해 전체 경로 교환, 루프 방지, 오류제어 및 흐름제어 필요하지 않음
29. 보안요소
기밀성 - 인가된 사용자만이 열람 가능
무결성 - 인가된 사용자만이 수정 가능
가용성 - 인가된 사용자는 누구나 접근 및 사용이 가능