본문 바로가기
정보처리기사/필기

자주 틀리는 항목

by 애기 개발자 2024. 2. 29.
반응형

요구사항 분석

기능적 요구사항 vs 비기능적 요구사항

  • 기능적 요구사항: 시스템이 실제로 어떻게 동작하는지에 관점을 둔 요구사항
  • 비기능적 요구사항: 시스템 구축에 대한 성능, 보안, 품질, 안정 등에 대한 성능, 보안, 품질, 안정성 등으로 실제 수행에 보조적인 요구사항

 

UML다이어그램 종류

구조, 행위 두 가지로 나누어진다.

구조 - 클객컴배복패 (클래스, 객체, 컴포넌트, 배치, 복합체, 패키지)

행위 - 유시커상활타상 (유스케이스, 시퀀스, 커뮤니케이션, 상태, 활동, 타이밍, 상호작용)

 

 

객체지향 설계 원칙

  • 단일책임 원칙 (SRP, Single Responsibility Principle)
    • 객체는 단 하나의 책임만 가져야 한다.
    • 응집도는 높고, 결합도는 낮게 설계
  • 개방-폐쇄 원칙 (OCP, Open-Closed Principle)
    • 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다.
    • 공통 인터페이스를 하나의 인터페이스로 묶어 캡슐화하는 방법이 대표적
  • 리스코프 치환 원칙 (LSP, Liskov Substitution Principle)
    • 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.
    • 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다.
  • 인터페이스 분리 원칙 (ISP, Interface Segregation Principle)
    • 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다.
    • 단인 책임 원칙이 객체가 갖는 하나의 책임이라면, 인터페이스 분리 원칙은 인터페이스가 갖는 하나의 책임이다
  • 의존 역전 원칙 (DIP, Dependency Inversion Principle)
    • 각 객체들 간의 의존 관계가 성립될 때, 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존 관계를 맺어야 한다.
    • 일반적으로 인터페이스를 활용하면 이 원칙은 준수된다.

 

 

 

결합도 강함 -> 약함

내공은 외제를 쓰(스)자

응집도 강함 -> 약함

기-순-교-절-시-논-우

 

 

GoF (Gang of Four) 디자인 패턴

생성 : 추상 팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤

구조 ; 어댑터, 브릿지, 컴포지트, 데코레이터, 퍼싸트. 플라이웨이트, 프록시

행위 : 역할 사슬, 커맨드, 인터프리터, 이터레이터, 미디에이터, 메멘토, 옵저버, 상태, 전략, 템플릿 메소드, 비지터

 

 

검증(Verification)과 확인(Validation)

  • 검증 (Verification) : 소프트웨어가 요구사항에 부합하게 구현되었음을 보장하는 활동
  • 확인 (Validation) : 소프트웨어가 고객의 의도에 따라 구현되었음을 보장하는 활동

검증 -> 개발자

확인 -> 사용자

 

프로그램 실행 여부

  • 정적 테스트
    • 프로그램을 실행하지 않고 명세서나 코드를 대상으로 분석하는 테스트
    • 워크스루, 인스펙션, 코드검사 등
  • 동적 테스트
    • 프로그램을 실행하여 오류를 찾음, 소프트웨어 개발의 모든 단계에서 테스트 수행 가능
    • 블랙박스 테스트, 화이트박스 테스트

 

 

키 (Key)

  • 후보 키 (Cnadidate Key)
    • 기본키의 후보들 (유일성, 최소성 만족해야함) 
    • 테이블 내에서 행을 고유하게 식별할 수 있는 필드(또는 필드의 조합)
    • 후보 키는 중복되거나 빈 값이 없어야 하며, 여러 개가 존재할 수 있음
  • 기본 키 (Primary Key)
    • 테이블 내에서 각 행을 고유하게 식별
    • 기본 키로 지정된 필드는 중복되거나 빈 값 불가능
  • 대체 키 (Alternate Key)
    • 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
    • 기본 키로 선택되지 않은 나머지 후보 키들을 의미
    • 이들도 각 행을 고유하게 식별할 수 있는 속성을 가짐두
  • 슈퍼 키 (Super Key)
    • 유일성 만족, 최소성 만족 X
    • 테이블 내에서 행을 유일하게 식별할 수 있는 하나 이상의 필드를 포함하는 키
    • 슈퍼 키는 필요 이상의 필드를 포함할 수 있으며, 그 자체로는 실용적이지 않음
  • 외래 키 (Foreign Key)
    • 다른 테이블의 기본 키를 참조하는 필드
    • 외래 키는 데이터 간의 관계를 설정하는 데 사용되며, 데이터 무결성을 유지하는 데 중요한 역할
  • 복합 키 (Composite Key)
    • 두 개 이상의 필드를 결합하여 행을 유일하게 식별하는 키
    • 각각의 필드만으로는 행을 고유하게 식별할 수 없을 때 사용

 

관계형 데이터베이스의 제약조건 - 무결성

개체 무결성, 도메인 무결성, 참조 무결성, 사용자 정의 무결성 등이 있다.

 

  • 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도Null 값이나 중복값을 가질 수 없다.
  • 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다
  • 참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 즉릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
  • 사용자 정의 무결성 : 속성 값들이 사용자가 정의한 제약 조건에 만족해야 한다.

 

시스템 카탈로그

  • DBMS가 스스로 생성하고 유지
  • INSERT, DELETE, UPDATE 문으로 시스템 카탈로그를 갱신하는 것이 허용되지 않음
  • 시스템 자신이필요로 하는 스키마 및 여러가지 객체에 관한 정보를 포함하고 있는 시스템데이터베이스
  • 시스템 카탈로그에 저장되는 내용을 메타데이터라고 한다.

 

 

분산 데이터베이스의 목표

  • 위치 불투명성 (Location Transparency) : 하드웨어와 소프트웨어의 물리적 위치를 사용자가 알 필요가 없다.
  • 중복(복제) 투명성( Replication Transparency) : 사용자에게 통지할 필요없이 시스템 안에 파일들과 자원들의 부가적인 복사를 자유롭게할 수 있다.
  • 병행 투명성 (Concurrency Transparency) : 다수의 트랜잭션들이 동시에 실현되도 그 트랜잭션의 결과는 영향을 받지 않음. 다중 사용자들이 자원들을 자동으로 공유할 수 있다.
  • 장애 투명성(Falure Transparency) : 장애에도 불구하고 트랜잭션을 정확하게 처리함. 사용자들은 어느위치의 시스템에 장애가 발생했는지 알필요가 없다.

 

접근 통제 기술

 - 임의 접근통제(DAC), 강제 접근통제(MAC), 역할기반 접근통제(RBAC)

 

 

DDL (Data Define Language, 데이터 정의어)

  • CREATE
  • ALTER
  • DROP

DML (Data Manipulation Language, 데이터 조작어)

  • SELECT
  • INSERT
  • DELETE
  • UPDATE

DCL (Data Control Language, 데이터 제어어)

  • COMMIT : 명령어로 수행된 결과를 실제 물리적 디스크로 저장, 명령어로 수행을 성공적으로 완료했음을 선언한다.
  • ROLLBACK : 명령어로 수행을 실패했음을 알리고, 수행된 결과를 원상복구
  • GRANT : DB사용자에게 사용 권한을 부여
  • REVOKE : DB사용자로부터 사용 권한 취소한다.

 

COCOMO (Constructive Cost Model) 모형의 특징 

  • 프로젝트를 완성하는데 필요한 man-month로 산정 결과를 나타냄
  • 보헴 (Boehm)이 제안한 것으로 원시코드 라인수 (LOC)에 의한 비용 산정 기법
  • 비교적 작은 규모의 프로젝트를 통계 분석한 결과를 반영한 모델
  • 중소규모 소프트웨어 프로젝트 비용 추정에 적합
  • 개발 유형에 따라 조직형, 반분리형, 내장형으로 구분
    • 조직형 (Organic)
      • 5만 라인 이하
      • 사무 처리용, 업무용, 과학용 소프트웨어 개발에 적합
    • 반분리형 (Semi-Detached)
      • 30만 라인 이하
      • 컴파일러, 인터프리터 개발에 적합
    • 내장형 (Embedded)
      • 30만 라인 이상
      • 미사일 유도 시스템, 실시간 처리 시스템 개발에 적합

 

 

 

암호 알고리즘

 

 

 

개인키 암호화(Private Key Encryption) 기법

 - 동일한 키로 데이터를 암호화하고 복호화한다.

  • 블록 암호화 방식 : DES, SEED, AES, ARIA, IDEA
  • 스트림 암호화 방식 : LFSR, RC4
  • 장점: 암/복호화 속도가 빠름, 알고리즘 단순, 공개키 암호 기법보다 파일 크기가 작음
  • 단점: 사용자의 증가에 따라 관리해야할 키의 수가 많아짐

공개키 암호화(Public Key Encryption) 기법

  •  암호화할 때 사용하는 공개키는 데이터 베이스 사용자에게 공개, 복호화할때 비밀키는 관리자가 비밀리에 관리
  • 암호화 대상이 n개일 때 키의 개수는 2n개
  • 비대칭 암호 기법이라고도 함, RSA 기법이 있음
  • 장점: 키의 분배가 용이, 관리해야할 키의 개수 적음
  • 단점: 암호화/복호화속도 느림, 알고리즘 복잡, 개인키 암호화 기법보다 파일의 크기가 큼

 

양방향 알고리즘 종류

  • SEED
    • 한국인터넷진흥원(KISA)에서 개발한 블록 암호화 알고리즘
    • 블록 크기 128비트, 키 길이에 따라 128, 256 분류
  • ARIA (Academy, Research Institute, Agency)
    • 국정원과 산학연협회에서 개발한 블록 암호화 알고리즘
    • 블록 크기 128, 키길이에 따라 128, 192, 256
  • DES (Data ncryption Standard)
    • 미국 NBS에서 발표한 개인키 암호화 알고리즘
    • DES를 3번 적용한 3dES 있음
    • 블록크기 64, 키 길이 56
  • AES (Advanced Encryption Standard)
    • 미국 표준 기술 연구소에서 발표한 개인키 암호화 알고리즘
    • DES의 한계때문에 개발
    • 블록크기 128, 키길이 56
  • RSA (Rivest Shamir Adleman)
    • MIT에서 개발한 공개키 암호화알고리즘
    • 큰 숫자를 소인수분해 하기 어렵다는 것에 기반
    • 공개키와 비밀키를 사용, 키는 상수
  • ECC (Elliptic Curve Cryptography)
    • RSA 암호 방식 대안
    • 이산대수 문제를 타원곡선으로 옮겨 기밀성과 효율성을 높임
  • Rabin
    • 미하엘 라빈 개발
    • 소인수분해 어려움에 안정성의 근거를 둔 암호화 알고리즘
반응형

댓글