Kirby '^'
Dev/정보처리기사 실기

'^'

ragabys 2023. 10. 5.

객체 지향 설계 원칙

  1. SRP(단일 책임의 원칙) : 하나의 클래스는 하나의 목적을 위해서 생성되며 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 한다는 원칙
  2. OCP(개방 폐쇄 원칙) : 소프트웨어의 구성요소는 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원칙
  3. LSP(리스코프 치환의 원칙) : 서브 타입은 어디서나 자신의 기반 타입으로 교체할 수 있어야 한다는 원칙
  4. ISP(인터페이스 분리의 원칙) : 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙
  5. DIP(의존성 역전의 원칙) : 실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙

 

디자인 패턴 유형

-목적 : 생성, 구조, 행위 / 범위 : 클래스, 객체

-생성 패턴 : Builder, Prototype, Factory Method, Abstract Factory, Singleton

-구조 패턴 : Bridge, Decorator, Facade, Flyweight, Proxy, Composite, Adapter

-행위 패턴 : Mediator, Interpreter, Iterator, Template Method, Observer, State, Visitor, Command, Strategy, Memento, Chain of Responsibility

 

UI 유형

  1. CLI(Command Line Interface) : 명령어를 텍스트로 입력하여 조작하는 사용자 인터페이스
  2. GUI(Graphic User Interface) : 그래픽 환경을 기반으로 한 마우스나 전자펜을 이용하는 사용자 인터페이스
  3. NUI(Natural User Interface) : 키보드나 마우스 없이 신체 부위를 이용하는 사용자 인터페이스
  4. OUI(Organic User Interface) : 현실에 존재하는 모든 사물이 입출력장치로 변화할 수 있는 사용자 인터페이스

 

클래스 다이어그램 구성 요소

  1. 클래스 : 공통의 속성, 연산 관계, 의미를 공유하는 객체들의 집합
  2. 속성 : 클래스의 구조적 특성에 이름을 붙인 것으로 특성에 해당하는 인스턴스가 보유할 수 있는 값의 범위를 기술
  3. 연산 메서드 : 이름, 타입, 매개변수들과 연관된 행위를 호출하는데 요구되는 제약사항들을 명시하는 클래스의 행위적 특징
  4. 접근 제어자 : 클래스에 접근할 수 있는 정도를 표현

 

소프트웨어 모듈 응집도

-응집도는 모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도이다.

-응집도 유형 : 우연적, 논리적, 시간적, 절차적, 통신적, 순차적, 기능적 응집도 순으로 응집도가 높아진다.

  1. 우연적 응집도 : 모듈 내부의 각 구성요소가 연관이 없을 정도의 응집도
  2. 논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
  3. 시간적 응집도 : 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
  4. 절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  5. 통신적 응집도 : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
  6. 순차적 응집도 : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
  7. 기능적 응집도 : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

 

소프트웨어 모듈 결합도

-모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성이다.

-소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도이다.

-결합도 유형 : 내용, 공통, 외부, 제어, 스탬프, 자료 결합도 순으로 결합도가 낮아진다.

  1. 내용 결합도 : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
  2. 공통 결합도 : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도
  3. 외부 결합도 :  두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우의 결합도
  4. 제어 결합도 : 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도
  5. 스탬프 결합도 : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
  6. 자료 결합도 : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도

 

네트워크 공격

  1. 스니핑 : 공격대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법
  2. 네트워크 스캐너, 스니퍼 : 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 취약점을 탐색하는 공격 도구
  3. 패스워드 크래킹 : 사전 크래킹 공격, 무차별 크래킹 공격, 패스워드 하이브리드 공격, 레인보우 테이블 공격 활용
  4. IP 스푸핑 : 침입자가 인증된 컴퓨터 시스템인 것처럼 속여서 타깃 시스템의 정보를 빼내기 위해서 본인의 패킷 헤더를 인증된 호스트의 IP 어드레스로 위조하여 타깃에 전송하는 공격기법
  5. ARP 스푸핑 : 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송하여 희생자의 ARP Cache Table에 특정 호스트의 MAC 정보를 공격자의 MAC 정보로 변경, 희생자로부터 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 공격기법
  6. ICMP Redirect 공격 : 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격기법.

 

보안 관련 용어

  1. 스피어피싱 : 특정 대상을 선정한 후 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도하여 사용자의 개인정보 탈취하는 공격기법
  2. 스미싱 : 스미싱은 SMS와 피싱의 합성어
  3. 큐싱 : 큐알 코드와 피싱의 합성어
  4. 봇넷 : 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
  5. APT 공격 : 특정 타깃을 목표로 하여 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격기법
  6. 공급망 공격 : 소프트웨어 개발사의 네트워크에 침투하여 소스 코드의 수정 등을 통해 악의적인 코드를 삽입하거나 배포 서버에 접근하여 악의적인 파일로 변경하는 방식을 통해 소프트웨어 설치 및 업데이트 시 자동적으로 감염되도록 하는 공격기법
  7. 제로데이 공격 : 보안 취약점이 발견되어 널리 공표되기 전에 악용하여 이뤄지는 보안 공격 기법
  8. 웜 : 스스로를 복제하여 네트워크 등의 연결을 통해 전파하는 악성 소프트웨어 컴퓨터 프로그램
  9. 악성 봇 : 스스로 실행되지 못하고, 해커의 명령에 의해 원격에서 제어 또는 실행이 가능한 프로그램 혹은 코드
  10. 랜섬웨어 : 악성 코드의 한 종류로 감염된 시스템의 파일들을 암호화하여 복호화할 수 없도록 하고, 피해자로 하여금 암호화된 파일을 인질처럼 잡고 몸값을 요구하는 악성 소프트웨어
  11. 이블 트윈 공격 : 무선 wifi 피싱 기법으로 공격자는 합법적인 wifi 제공자처럼 행세하여 사용자들의 정보를 탈취하는 무선 네트워크 공격기법
  12. 트러스트존 : 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 ARM 사에서 개발한 보안 기술
  13. 타이포스쿼팅 : 주소 입력시 오타발생에 대비해 유명 도메인을 미리 등록하는 일로, URL 하이재킹이라고도 함

 

네트워크 보안 솔루션

  1. 방화벽(Firewall) : 기업 내부 외부 간 트래픽을 모니터링하여 시스템의 접근을 허용하거나 차단하는 시스템
  2. 웹 방화벽(WAF) : 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화된 보안장비. SQL 인젝션, XSS 등과 같은 웹 공격을 탐지하고 차단하는 기능
  3. 네트워크 접근 제어(NAC) : 단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션
  4. 침입 탐지 시스템(IDS) : 네트워크에서 발생하는 이벤트를 모니터링하고 비인가 사용자에 의한 자원접근과 보안정책 위반 행위를 실시간으로 탐지하는 시스템
  5. 침입 방지 시스템(IPS) : 네트워크에 대한 공격이나 침입을 실시간적으로 차단하고, 유해트래픽에 대한 조치를 능동적으로 처리하는 시스템
  6. 무선 침입 방지 시스템(WIPS) : 인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 차단하고 보안에 취약한 무선 공유기를 탐지하는 시스템
  7. 가상사설망(VPN) : 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안 솔루션

 

보안 공격 대응 관련 중요 용어

  1. 허니팟 : 비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템으로 일부러 허술하게 만들어서 해커에게 노출하는 유인시스템
  2. OWASP Top10 : 웹 애플리케이션 취약점 중 공격 빈도가 높으며, 보안상 큰 영향을 줄 수 있는 10가지 취약점에 대한 대응 방안을 제공하는 웹 보안 기술 가이드
  3. 핑거프린팅 : 멀티미디어 콘텐츠에 저작권 정보와 구매한 사용자 정보를 삽입하여 콘텐츠 불법 배포자에 대한 위치 추적이 가능한 기술
  4. 워터마킹 : 디지털 콘텐츠에 저작권자 정보를 삽입하여 불법 복제 시 워터마크를 추출, 원소유자를 증명할 수 있는 콘텐츠 보호 기술
  5. 이상금융거래탐지시스템(FDS) : 전자금융거래에 사용되는 단말기 정보, 접속 정보, 거래 정보 등을 종합적으로 분석하여 의심 거래를 탐지하고, 이상 거래를 차단하는 시스템
  6. CC(Common Criteria) : 정보기술의 보안 기능과 보증에 대한 평가 기준, 정보보호 시스템의 보안 기능 요구사항과 보증 요구사항 평가를 위해 공통으로 제공되는 국제 평가 기준
  7. 사이버 위협정보 분석 공유시스템(C-TAS) : 사이버 위협정보를 체계적 수립해서 인터넷진흥원(KISA) 주관으로 관계 기관과 자동화된 정보공유를 할 수 있는 침해 예방 대응 시스템
  8. 장착형 인증 모듈(PAM) : 리눅스 시스템 내에서 사용되는 각종 애플리케이션 인증을 위해 제공되는 다양한 인증용 라이브러리
  9. ISMS : 조직의 주요 정보자산을 보호하기 위해 정보보호 관리 절차와 과정을 체계적으로 수립하여 지속적으로 관리하고 운영하기 위한 종합적인 체계
  10. PIMS : 기업이 개인정보보호 활동을 체계적, 지속적으로 수행하기 위해 필요한 보호조치 체계를 구축했는지 여부를 점검, 평가하여 기업에게 부여하는 인증제도

 

블랙박스 테스트

-블랙박스 테스트는 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트(기능 테스트)이다.

-블랙박스 테스트 유형

  1. 동등분할 테스트 : 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대표값 테스트 케이스를 도출하여 테스트
  2. 한곗값 테스트 : 등가 분할 후 경계값 부분에서 오류 발생 확률이 높기 때문에 경계값을 포함하여 테스트 케이스를 설계하여 테스트
  3. 결정 테이블 테스트 : 요구사항의 논리와 발생조건을 테이블 형태로 나열하여 조건과 행위를 모두 조합하여 테스트하는 기법
  4. 상태 전이 테스트 : 테스트 대상,시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법
  5. 유스케이스 테스트 : 시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법
  6. 분류 트리 테스트 : SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트하는 기법
  7. 페어와이즈 테스트 : 테스트 데이터값들 간에 최소한 한 번씩을 조합하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법
  8. 원인-결과 그래프 테스트 : 그래프를 활용하여 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 선정하여 테스트하는 기법
  9. 비교 테스트 : 여러 버전의 프로그램에 같은 입력값을 넣어서 동일한 결과 데이터가 나오는지 비교해 보는 테스트 기법
  10. 오류 추정 테스트 : 개발자가 범할 수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스를 설계하여 테스트하는 기법

댓글