1과목 : 소프트웨어 설계
- 상태 다이어그램(State Diagram)
- 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현한다.
- 이벤트(event)에 의한 객체들의 상태 변화를 그림으로 표현한다.
- 럼바우(Rumbaugh) 객체지향 분석 기법에서 동적 모델링에 활용된다.
- 팩토리 메소드 패턴
- 객체를 생성하기 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브 클래스가 결정하도록 하는 것
- Virtual-Constructor 패턴이라고도 함
- 디자인 패턴 중 구조패턴(Structural Pattern) 의 종류
- 어댑터(Adapter)
- 브리지(Bridge)
- 컴포지트(Composite)
- 데코레이터(Decotator)
- 퍼싸드(Facade)
- 플라이웨이트(Flyweight)
- 프록시(Proxy)
- 미들웨어(Middleware)의 종류
- DB
- 데이터베이스 벤더에서 제공하는 클라이언트에서 원격의 데이터베이스와 연결하기 위한 미들웨어
- RPC (Remote Procedure Call)
- 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식의 미들웨어
- MOM( Message Oriented Middleware)
- 메시지 기반의 비동기형 메시지를 전달 하는 방식의 미들웨어
- TP-Monitor(Transaction Processing Monitor)
- 항공기나 철도 예약 업무 등과 같은 온라인 트랜잭션 업무에서 트랜잭션을 처리 및 감시하는 미들웨어
- ORB(Object Request Broker)
- 객체지향 미들웨어로 코바 표준 스펙을 구현한 미들웨어
- WAS(Web Application Server)
- 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어
- DB
- 자료사전(DD; Data Dictionary)
- 자료사전은 시스템 테이블로 구성되어 있어 일반 이용자도 SQL을 이용하여 내용을 검색해 볼 수 있지만 이용자가 갱신은 할 수 없다.
- 자료사전은 DBMS가 스스로 생성하고 유지한다.
- 자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것
- 데이터를 설명하는 데이터를 데이터의 데이터 또는 메타 데이터라고 한다.
- 자료 흐름도에 시각적으로 표시된 자료에 대한 정보를 체계적이고 조직적으로 모아 개발자나 사용자가 편리하게 사용할 수 있다.
2과목 : 소프트웨어 개발
- 코드 검사 수행 시 발견된 오류와 그 설명
- 데이터 오류 (DA; Data Error)
- 데이터 유형 정의, 변수 선언, 매개 변수 등에서 나타나는 오류
- 논리 오류 (LO; Logic Error)
- 서브루틴이나 블록이 수행하는 방법(How)이 잘못되어 있는 오류
- 성능 오류 (PF; Performance Error)
- 프로그램을 수행하며 요구되는 성능을 만족시키지 못하는 오류
- 문서 오류 (DC; Documentation Error)
- 프로그램 구성 요소인 선언 부분, 잘못되거나 불필요한 주석 등을 의미
- 기능 오류 (FN: Function Error)
- 서브루틴이나 블록이 잘못된 것(What)을 수행하는 오류
- 역공학(Reverse Engineering)
- 기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어내는 활동
- 데이터 오류 (DA; Data Error)
- ISO/IEC 25010에서 제시한 소프트웨어의 품질 특성
- 기능 적합성 : 기능 완전성, 기능 정확성, 기능 적절성
- 성능 효율성 : 시간 효율성, 자원 효율성, 사양
- 호환성: 공존성, 상호운영성
- 사용성: 적절 인지정도, 학습성, 조작성, 사용자 오류 방지, UI 미학, 접근성
- 신뢰성 : 성숙성, 사용가능성, 결함 허용성, 복구성
- 보안성 : 기밀성, 무결성, 부인방지, 책임추적성, 인증성
- 유지 보수성: 모듈성, 재사용성, 분석성, 변경성, 시험성
- 이식성: 적응성, 설치성, 대체성
- 소스 코드 품질 분석 도구 중 정적 분석 도구
- pmd
- cppcheck
- SonarQube
- checkstyle
- ccm
- cobertura
- 알파 검사
- 검증 검사 기법 중 개발자의 장소에서 사용자가 개발자 앞에서 행하는 기법이며, 일반적으로 통제된 환경에서 상요자와 개발자가 함께 확인하면서 수행되는 검사
- 화이트박스 테스트의 종류
- 기초 경로 검사
- 대표적인 화이트박스 테스트 기법
- 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법으로, 테스트 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용됨
- 제어 구조 검사
- 조건 검사(Condition Testing)
- 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
- 루프 검사(Loop Testing)
- 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
- 데이터 흐름 검사(Data Flow Testing)
- 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
- 조건 검사(Condition Testing)
- 기초 경로 검사
3과목 : 데이터베이스 구축
- 정규화의 개념 및 목적
- 정규화란 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정
- 데이터 구조의 안정성 및 무결성을 유지
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만든다
- 효과적인 검색 알고리즘을 생성할 수 있다
- 데이터 중복을 배제하여 이상의 발생 방지 및 자료 저장 공간의 최소화가 가능하다
- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄인다
- 데이터 모형의 단순화가 가능하다
- 속성의 배열 상태 검증이 가능하다
- 개체와 속성의 누락 여부 확인이 가능하다
- 자료 검색과 추출의 효율성을 추구한다
- 제2 정규형은 반드시 제 1 정규형을 만족해야 한다
- 제1 정규형은 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있는 정규형이다
- BCNF는 강한 제 3정규형이라고도 한다
- 외래키에 대한 설명
- 외래키에는 NULL을 입력할 수 있다
- 외래키는 중복이 허용되므로 유일성과 최소성을 가질 수 없다
- 기본키의 일부가 외래키가 될 수 있다
- 참조 무결성과 관련이 있다
- 키(Key)의 개념과 종류
- 슈퍼키 (Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로, 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못함
- 후보키 (Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합으로, 유일성과 최소성을 모두 만족함
- 기본키(Primary Key)
- 후보키 중에서 특별히 선정된 키로 중복된 값과 null 값을 가질 수 없음
- 대체키(Alternate Key)
- 후보키 중에서 선정된 기본키를 제외한 나머지 후보키를 의미함
- 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미하여, 릴레이션 간의 관계를 표현할 때 사용함
- 슈퍼키 (Super Key)
- 릴레이션의 특징
- 한 릴레이션에 포함된 튜플들은 모두 상이하다
- 한 릴레이션에 포함된 튜플 사이에는 순서가 없다
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않다
- 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있다
- 릴레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키로 설정한다
- 속성은 더 이상 쪼갤 수 없는 원자값만을 저장한다
- 관계해석(Relational Calculus)
- 관계 데이터 모델의 제안자인 코드가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안했다
- 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때는 계산 수식을 사용한다.
- 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다
- 튜플 관계해석과 도메인 관계해석이 있다
- 기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등하며, 관계대수로 표현한 식은 관계해석으로 표현할 수 있따.
- 질의어로 표현한다.
- 개체 관계 모델(E-R Model)에 대한 설명
- 특정 DBMS를 고려한 것은 아니다
- E-R 다이어그램은 관계 타입은 마름모(=다이아몬드), 속성은 타원으로 나타낸다
- 개체 타입과 관계 타입을 기본 개념으로 현실 세계를 개념적으로 표현하는 방법이다
- 1976년 Peter Chen이 제안하였다
- 분산 데이터베이스의 특징에 대한 설명
- 지역 서버의 고유 데이터에 대한 작업은 중앙 서버의 통제 없이 자유롭게 수행할 수 있다
- 새로운 지역 서버를 추가하거나 장비를 추가하는 등의 작업이 용이하다
- 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성을 목표로 한다
- 분산 데이터베이스는 데이터베이스 설계 및 소프트웨어 개발이 어렵다
4과목 : 프로그래밍 언어 활용
- TCP/IP 에 대한 설명
- 요청과 응답을 동시에 주고 받는 전이중 연결 방식을 사용한다
- 순서 제어, 오류 제어, 흐름 제어 기능을 제공한다
- 투명성이 보장되는 통신을 제공한다
- TCP 프로토콜은 패킷 단위의 스트림 전송 기능을 제공한다
- ARP(Address Resolution Protocol)
- 동일한 네트워크에 있는 목적지 호스트로 IP 패킷을 직접 전달할 수 있도록 IP 주소를 MAC 주소로 변환하는 프로토콜
- IP주소체계에 대한 설명
- IPv6 의 패킷 헤더는 40 octet의 고정된 길이를 갖는다
- IPv6 는 주소 자동설정(Auto Configuration) 기능을 통해 손쉽게 이용자의 단말을 네트워크에 접속시킬 숭 ㅣㅆ따
- IPv4 는 호스트 주소를 자동으로 설정하며 유니캐스트를 지원한다
- IPv4 는 클래스 별로 네트워크와 호스트 주소의 길이가 다르다
- 네트워크 계층
- 개방 시스템들 간의 네트워크 연결을 관리하는 기능과 데이터의 교환 및 중계 기능을 한다
- 네트워크 연결을 설정, 유지, 해제하는 기능을 한다
- Spital Model(나선형 모델)
- 계획 수립 -> 위험 분석 -> 개발 및 검증 -> 고객 평가
- 보햄이 제안한 것으로, 폭포수 모형과 프로토타입 모형의 장점에 위험분석 기능을 추가한 모형
- 나선을 따라 돌듯이 여러번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 것으로, 점진적 모형이라고도 한다
- 소프트웨어를 개발하면서 발생할 수 있는 위험을 관리하고 최소화하는 것을 목적으로 한다
- 점진적으로 개발 과정이 반족되므로 누락되거나 추가된 요구사항을 첨가할 수 있고, 정밀하며, 유지보수 과정이 필요 없다
- 소프트웨어 재공학의 주요 활동 중 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 것
- 이식(Migration)
- Mesh Network
- 기존 무선 랜의 한계 극복을 위해 등장하였으며, 대규모 디바이스의 네트워크 생성에 최적화되어 차세대 이동통신, 홈 네트워킹, 공공 안전 등의 특수목적에 사용되는 새로운 방식의 네트워크 기술을 의미한다
- 고가용성 솔루션(HACMP)
- 각 시스템 간에 공유 디스크를 중심으로 클러스터링으로 엮어 다수의 시스템을 동시에 연결할 수 있다
- 조직, 기업의 기간 업무 서버 안정성을 높이기 위해 사용될 수 있다
- 여러 가지 방식으로 구현되며 2개의 서버를 연결하는 것으로 2개의 시스템이 각각 업무를 수행하도록 구현하는 방식이 널리 사용 된다
- SYN Flooding
- 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상자인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 기법
- 백도어 탐지 방법
- 무결성 검사
- 열린 포트 확인
- 로그 분석
- SetUID 파일 검사
- SAMBA
- 인트라넷이나 인터넷에서 서버의 파일 및 프린터를 사용할 수 있는 프리웨어 프로그램
- 리눅스, 유닉스, OpenVMS, OS/2 등 다양한 운용 체계에 설치되는 클라이언트/서버 프로토콜 기반의 프로그램
- 이 프로그램을 사용하여 다른 컴퓨터에 파일, 프린터, 기타 자원의 접근 요구를 할 수 있고, 다른 컴퓨터는 그 요구에 응하여 가부간 응답을 보낸다
- 프로젝트 관리를 위한 3P(3대 요소)
- 사람(People)
- 프로젝트 관리에서 가장 기본이 되는 인적 자원
- 문제(Problem)
- 사용자 입장에서 문제를 분석하여 인식함
- 프로세스(Process)
- 소프트웨어 개발에 필요한 전체적인 작업 계획 및 구조(Fremework)
- 사람(People)