구조적 방법론
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 분할정복 원리 활용
정보공학 방법론
- 자료 중심의 방법론
- 개체 관계도(ERD) 사용
컴포넌트 기반(CBD) 방법론
- 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
- 분석 단계에서 사용자 요구사항 정의서가 산출
소프트웨어 재사용의 이점
- 개발 시간과 비용 단축
- 소프트웨어 품질 향상
- 소프트웨어 개발의 생산성 향상
- 시스템 명세, 설계, 코드 등 문서 공유
소프트웨어 재사용 방법
- 합성 중심: 블록 모듈을 만들어서 끼워 맞추어 소프트웨어 완성
- 생성 중심: 명세를 구체화하여 프로그램을 만듦
소프트웨어 재공학의 이점
- 위험 부담 감소
- 개발 시간 단축
- 개발 비용 절감
- 시스템 명세의 오류 억제
소프트웨어 재공학의 주요 활동
- 분석: 명세서를 확인하여, 소프트웨어 동작 이해
- 재구성: 코드를 재구성
- 역공학: 분석 및 설계 정보를 재발견하거나 다시 만들어내는 활동
- 이식: 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환
CASE(Computer Aided Software Engineering)
- 소프트웨어 개발 과정 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
CASE의 원천 기술
- 구조적 기법, 프로토타이핑, 자동 프로그래밍, 정보 저장소, 분산처리
CASE의 주요 기능
- 생명 주기 전 단계의 연결, 개발 모형 지원, 모순 검사 및 오류 검증, 그래픽 지원, 자료 흐름도 작성
비용 산정 기법 - LOC 기법
- 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치 측정
LOC 기법의 산정 공식
- 노력 = 개발 기간 * 투입 인원
- 개발 비용 = 노력(인월) * 단위 비용(인당 인건비)
- 개발 기간 = 노력 / 투입 인원
- 생산성: LOC / 노력(인월)
수학적 산정 기법의 종류
- COCOMO 모형
- Putnam 모형
- 기능 점수(Function Point) 모형
비용 산정 기법 - Putnam 모형
- 소프트웨어 생명주기의 전 과정 동안의 사용될 노력의 분포를 가정해 주는 모형 (Rayleigh - Norden 곡선)
비용 산정 기법 - COCOMO
- 보헴이 제안, 원시 프로그램 규모 (LOC)에 의한 비용 산정 기법
COCOMO 소프트웨어 개발 유형
- 조직형: 5만 라인 이하
- 반분리형: 30만 라인 이하
- 내장형: 30만 라인 이상
자동화 추정 도구 - SLIM
- Rayleigh-Norden 곡선, Putnam 예측 모델을 기초로하여 개발된 자동화 추정 도구
기능 점수 모형 - 가중치 증대 요인
- 자료 입력, 정보 출력, 명령어, 데이터 파일, 필요한 외부 루틴과의 인터페이스
PERT
- 각 단계별로 종료 시기를 결정하는 방법(낙관성, 가능성, 비관성)
- 결정 경로, 작업에 대한 경계시간 및 상호 관련성
임계경로 (굵은 선)
간트 차트
- 프로젝트의 작업 일정을 막대 도표를 이용하여 표시
- 수평 막대의 길이는 각 작업의 기간을 나타냄
소프트웨어 프로젝트 관리
- 최소 비용 → 사용자 만족
위험 관리
- 돌발 상황(위험)을 미리 예상하고, 이에 대한 적절한 대책 수립
ISO/IEC 12207
- 기본 생명 주기 프로세스: 획득, 공급, 개발, 운영, 유지보수 프로세스
- 지원 생명 주기 프로세스: 품질 보증, 검증, 확인, 확인 검토, 감사, 문서화, 형상 관리, 문제 해결 프로세스
- 조직 생명 주기 프로세스: 관리, 기반 구조, 훈련, 개선 프로세스
CMMI의 소프트웨어 프로세스 성숙도 5단계
- 초기, 관리, 정의, 정량적 관리, 최적화
SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
- 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
SPICE의 프로세스 수행 능력 단계
- 불완전 → 수행 → 관리 → 확립 → 예측 → 최적화
소프트웨어 개발 방법론
- 프로젝트 상황 및 특성에 맞도록 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
소프트웨어 개발 프레임워크
- 여러가지 기능들을 제공해 주는 반제품 형태의 소프트웨어 시스템
- 사업자 종속성 해소, 객체들의 제어를 프레임워크에 넘김
SDN(Software Defined Networking)
- 네트워킹을 가상화
SDS(Software-Defined Storage)
- 데이터 스토리지를 가상화
SDDC(Software Defined Data Center)
- 데이터 센터의 모든 자원 가상화
메시 네트워크(Mesh Network)
- 수십 ~ 수천개의 디바이스를 그물망(Mesh)과 같이 유기적으로 연결하여, 모든 구간을 동일한 무선망처럼 구성
피코넷(PICONET)
- 블루투스 기술이나 UMB(Ultra Wide Band) 통신 기술을 사용하여 통신망 형성
클라우드 기반 HSM
- 클라우드를 기반으로 암호화작업이 이루어지는 보안기기, 암호화 키 생성이 하드웨어적으로 구현
파스타(Paas-TA)
- 개방형 클라우드 컴퓨팅 플랫폼
징(Zing)
- 10cm 이내 거리에서 3.5 Gbps 속도의 데이터 전송이 가능
SSO(Single Sign On)
- 한 번의 로그인으로 개인이 가입한 모든 사이트 이용
스마트 그리드
- 전력선을 기반으로 인프라를 하나의 시스템으로 통합하여 관리
WDM(Wavelength Division Multiplexing)
- 여러 대의 단말기가 동시에 통신 회선을 사용할 수 있도록 하는 기술
버스형(Bus)
- 한 개의 통신 회선에 여러 대의 단말장치가 연결된 형태
VLAN(Virtual Local Area)
- LAN의 물리적인 배치와 상관없이 논리적으로 분리하는 기술
WPA(Wi-Fi Protected Access)
- 무선 랜(WLAN) 인증 및 암호화 관련 표준
CSMA/CA
- 충돌을 피하기 위해 일정한 시간을 기다린 후 데이터를 전송하는 방법
802.11e
- Qos기능 지원하기 위해 MAC 계층 해당 부분 수정
RIP(Routing Information Protocol)
- 거리 벡터 라우팅 프로토콜, 최대 홉 수: 15
OSPF(Open Shortest Path First Protocol)
- 라우팅 정보에 노드 간의 거리 정보, 링크 상태 정보를 실시간으로 반영
흐름 제어 - 정지 - 대기(Stop-and-wait)
- 수신 측의 확인 신호를 받은 후에 다음 패킷 전송
- 한 번에 하나의 패킷만 전송 가능
도커(Docker)
- 컨테이너 기술을 자동화
스크래피(Scrapy)
- Python 기반 웹 크롤링 프레임워크
텐서플로(TensorFlow)
- 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리
서비스 지향 아키텍처(SOA) 기반 애플리케이션 구성 계층
- 표현 계층, 업무 프로세스 계층, 서비스 중간 계층, 애플리케이션 계층, 데이터 저장 계층
매시업(Mashup)
- 웹에서 제공하는 정보 및 서비스를 이용
디지털 트윈(Digital Twin)
- 현실 속의 사물을 소프트웨어로 가상화한 모델
서비스형 블록체인(Baas)
- 블록체인(Blockchain) 앱의 개발 환경을 클라우드 기반으로 제공하는 서비스
TCP 래퍼(TCP Wrapper)
- 외부 컴퓨터의 접속 인가 여부를 점검하여 접속을 허용 및 거부
DPI(Deep Packet Inspection)
- 패킷 내부의 콘텐츠를 파악
허니팟(Honeypot)
- 비정상적인 접근의 탐지를 위해 의도적으로 설치해 둔 시스템
OWASP(오픈 웹 애플리케이션 보안 프로젝트)
- 보안이 취약한 부분을 연구하는 비영리 단체
고가용성 솔루션(HACMP)
- 장애 발생 시 즉시 다른 시스템으로 대체 가능한 환경 구축
앤 스크린(N-Screen)
- N개의 서로 다른 단말기에서 동일한 콘텐츠를 자유롭게 이용
Secure OS
- 기존 운영체제에 보안 기능을 갖춘 커널을 이식
하둡(Hadoop)
- 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼
- 대용량 데이터 전송 시 스쿱(Sqoop) 도구 이용
맵리듀스
- 대용량 데이터를 분산 처리하기 위한 목적
데이터 마이닝(Data Mining)
- 대량의 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법
OLAP(Online Analytical Processing)
- 통계적인 요약 정보를 분석하여 의사결정에 활용
회복(Recovery)
- 트랜잭션 수행 중 장애 발생 시, 손상되기 이전의 정상 상태로 복구
즉각 갱신 기법(Immediate Update)
- 트랜잭션이 갱신하면, 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영
- 갱신된 내용 Log에 보관
로킹 단위
- 로킹 단위가 크면, 관리하기 쉽지만 병행성 수준이 낮아짐
- 로킹 단위가 작으면, 오버헤드가 증가하지만 병행성 수준이 높아짐
타임스탬프 순서
- 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택하는 기법
교착상태 발생의 필요충분조건 4가지
- 상호 배제, 점유와 대기, 비선점, 환형 대기
회피 기법(Avoidance)
- 교착상태가 발생하면 적절히 피해 나가는 기법
- 은행원 알고리즘
Seven Touchpoints
- 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론
보안 3대 요소
- 기밀성(인가된 사용자에게만 접근 허용)
- 무결성(인가된 사용자만 수정 가능)
- 가용성(언제라도 사용 가능)
세션 하이재킹
- 클라이언트의 세션 정보를 가로채는 공격 기법
SQL 삽입
- 웹 응용 프로그램에 SQL을 삽입
경로 조작 및 자원 삽입
- 데이터 입출력 경로를 조작
크로스사이트 스크립팅(XSS: Cross Site Scripting)
- 웹페이지에 악의적인 스크립트를 삽입
메모리 버퍼 오버플로
- 할당된 메모리의 범위를 넘어선 위치에 자료를 읽거나 쓰려고 하는 경우 발생
하드코드된 비밀번호
- 소스코드 유출 시 내부에 하드코드된 패스워드를 이용하여 관리자 권한 탈취
- 하드코드: 데이터를 코드 내부에 직접 입력하여 프로그래밍하는 방식
스택 가드(Stack Guard)
- 잘못된 복귀주소의 호출을 막는 기술
접근 지정자(접근 제어자)
- 외부로부터의 접근을 제한하기 위해 사용되는 예악어(Public, Protected, Default, Private)
개인키 암호화 기법
- 동일한 키로 데이터를 암호화하고 복호화하기에 속도가 빠름
개인키 암호화 기법의 종류
- 블록 암호화 방식(한 번에 하나의 데이터 블록을 암호화하는 방식)(DES, SEED, AES, ARIA, IDEA)
- 스트림 암호화 방식(비트/바이트/워드 단위로 암호화하는 방식)(LFSR, RC4)
해시(Hash)
- 임의의 길이나 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환
- 일방향 함수에 해당
공개키 암호화 기법
- 암호화할 때 사용하는 공개키는 사용자에게 공개, 복호화할 때 사용하는 비밀키는 관리자가 비밀리에 관리
- 암호화 대상이 n개 → 사용되는 키의 수 2n (RSA)
양방향 알고리즘 종류
- DES, AES, RSA
솔트
- 암호화를 수행하기 전, 원문에 무작위의 값을 덧붙임
죽음의 핑(Ping of Death)
- Ping 명령을 전송할 때, ICMP 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송
SMURFING(스머핑)
- IP, ICMP 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄
DDos(Distributed Denial of Service)
- 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행
피싱(Phishing)
- 공기관이나 금융 기관을 사칭하여 개인 정보를 빼내는 기법
Ping Flood
- 매우 많은 ICMP 메세지를 보내 이에 대한 응답으로 시스템 자원을 모두 사용하게 함
스위칭 재밍(Switch Jamming)
- 스위치 MAC 주소 테이블의 저장 기능을 혼란시킴
블루투스 관련 공격
- 블루버그(취약한 연결), 블루스나프(파일에 접근), 블루프린팅(장비 검색), 블루재킹(메시지를 익명으로 퍼뜨림)
웜(Worm)
- 연속적으로 자신 복제
키로거 공격(Key Logger Attack)
- 컴퓨터 사용자의 키보드 움직임을 탐지
랜섬웨어(Ransomware)
- 내부 문서나 파일 등을 암호화
백도어(Back Door)
- 시스템 보안을 제거하여 만들어놓은 비밀 통로
인증
- 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증
- 관리적/물리적/기술적 보안
커널 로그의 종류
- wtmp: 성공한 로그인/로그아웃과 시스템의 시작/종료 시간에 대한 로그
- utmp: 현재 로그인한 사용자의 상태에 대한 로그
- btmp: 실패한 로그인에 대한 로그
- lastlog: 마지막으로 성공한 로그인에 대한 로그
침입 탐지 시스템(IDS, Intrusion Detection System)
- 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지
- 오용 탐지: 미리 입력해 둔 공격 패턴 감지
- 이상 탐지: 비정상적인 행위나 자원의 사용이 감지
VPN(Virtual Private Network, 가상 사설 통신망)
- 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션
SSH(Secure Shell, 시큐어 쉘)
- 다른 컴퓨터에 로그인, 원격 명령 실행, 파일 복사 등을 수행할 수 있도록 하는 프로토콜(22)
'자격증' 카테고리의 다른 글
[정보처리기사 실기] 2022년도 기출 내용 정리 (2) | 2024.04.27 |
---|---|
[정보처리기사 실기] 2020년도 기출 내용 정리 (2) | 2024.04.26 |
[정보처리기사] 3과목 데이터베이스 구축 핵심정리 (1) | 2024.02.08 |
[정보처리기사] 2과목 소프트웨어 개발 핵심정리 (0) | 2024.02.08 |
[정보처리기사] 1과목 소프트웨어 설계 핵심정리 (3) | 2024.02.07 |