1. 소프트웨어개발 방법론 선정
1-1. 소프트웨어 개발 방법론 선정(암기)
비용 산정 모델
- 하향식 방법
- 전문가의 감정에 의한 방법: 2인 이상의 전문가에 비용 산정을 의뢰하여 산출
- 델파이 방법: 전문가가 독자적으로 감정할 때, 발생할 수 있는 편차를 줄이기 위해 단계별로 전문가들의 견해를 조정자가 조정하여 최종 견적을 결정하는 방법
- 상향식 방법
- 원시 코드 라인 수(LOC)기법: 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 방법
- 개발 단계별 노력기법(M/M): LOC를 보완한 것.Man/Month
- 수학적 방법
- COCOMO 모형: 보헴이 제안. 원시 프로그램의 라인 수에 따라 비용 산정
- Organic(5만 라인 이하), Semi-Detached(30만 라인 이하), Embedded(그 이상)
- LOC(Lines of code)기법 사용
- 예상 비용 = (낙관 정도 + 4*기대 정도 + 비관 정도)/6
- 생명주기 예측 모형(푸트남 모형): 소프트웨어 개발 주기의 각 단계마다 비중을 다르게 하여 비용을 산출하는 방법
- 대형 프로젝트의 노력 분포 산정에 이용
- 개발 기간이 늘어날수록 프로젝트 적용 인원이 노력이 감소한다.
- 펑션 포인트(FP) 모형: 각 기능에 따라 가중치를 부여하여 소프트웨어의 규모나 복잡도, 난이도 산출
- FP = 전체 기능 점수 * [0.65 + (0.1*총 영향 정도)
- 자료입력, 정보출력, 명령어, 데이터 파일, 필요한 외부 루틴과의 인터페이스
- COCOMO 모형: 보헴이 제안. 원시 프로그램의 라인 수에 따라 비용 산정
자동화 추정 도구
- SLIM: Rayleigh-Norden 곡선과 Putnam예측 모델이 기초
- ESTIMACS: 다양한 프로젝트와 개인별 요소를 수용하도록 FP모형 기초
품질 관리는 국제 표준으로 정한다.
- ISO12207 표준
- 소프트웨어와 관련된 조직과 사람, 소프트웨어 획득자, 공급자, 개발자, 운영자, 유지보수자, 품질보증 관리자, 사용자등의 이해관계자들이 각자의 입장에서 할 일을 정의하고 지속적으로 개선시키기 위한 활동
- 기본 공정 프로세스
- 지원 공정 프로세스
- 조직 공정 프로세스
- 소프트웨어와 관련된 조직과 사람, 소프트웨어 획득자, 공급자, 개발자, 운영자, 유지보수자, 품질보증 관리자, 사용자등의 이해관계자들이 각자의 입장에서 할 일을 정의하고 지속적으로 개선시키기 위한 활동
- CMMI(CMM과 동일)
- 소프트웨어의 개발 공정 및 조직의 성숙도를 초기, 반복, 정의, 관리, 최적화 등의 5개로 나누어 조직의 공정 개선 활동 지원 모델
- 등급이 올라갈수록 품질이 올라감
- 성숙단계
- 초기단계
- 반복단계
- 정의단계
- 관리단계
- 최적단계
- 성숙단계
- SPICE 모델
- 소프트웨어 프로세스 평가를 위한 국제 표준을 제정하는 프로젝트
- 개발 기관이 프로세스 개선을 위하여 스스로 평가
- 기관에서 정한 요구 조건을 만족하는지 개발 조직 스스로 평가
- 계약을 맺기 위하여 수탁 기관의 프로세스를 평가
- CMM의 단점 개선
- CMM은 조직을 평가하므로 제품의 품질과 연관이 없다.
- CMM은 조직 전체에 대한 등급 판정이 비효율적, 비현실적이다.
- CMM은 소규모 업체에서는 적용이 곤란하다.
1-2. 소프트웨어 개발 방법론 테일러링(암기)
테일러링: 해당 과제에 딱 맞는 최적화된 결과를 얻기 위해, 맞지 않는 일반적인 방법론이아 산출물 목록은 제거하고, 꼭 필요한 방법론과 산출물만 남기는 작업
- 내부적 기준
- 목표환경
- 요구사항
- 프로젝트 규모
- 보유기술
- 비용
- 구성원 능력
- 외부적 기준
- 법적 제약사항
- 표준 품질기준
2. IT프로젝트 정보시스템 구축관리
2-1. 네트워크 구축 관리
신기술 용어
- VPN: 가상사설망
- Mesh Network: 홈 네트워킹, 공공 안전 등 특수한 목적
- PICONET: 블루투스
- 와이선: 사물인터넷 저전력 장거리 통신기술
- SDN: 소프트웨어들로 네트워킹을 가상화하여 제어하고 관리하는 네트워크
- 네트워크 설치 구조
- 버스(bus)형 구조: 하나의 통신 회선에 여러 대의 컴퓨터가 멀티 포인터로 연결되어 있는 구조 형태
- 장점
- 구조가 간단하여 설치가 용이, 저비용
- 단점
- 컴퓨터를 무분별하게 추가할 경우 통신 성능 저하됨
- 일부분에 고장이 나면 전체 네트워크 영향
- 장점
- 트리(tree)형 구조: 각 컴퓨터가 계층적으로 연결되어 있는 구성 형태, 나뭇가지
- 장점
- 허브만 준비되어 있다면 많은 단말 노드 쉽게 연결 가능
- 단점
- 모든 통신이 허브를 통해 이루어지므로 허브가 고장 나면 연결된 단말 노드는 통신 제한
- 장점
- 링(ring)형 구조: 컴퓨터 등 단말 노드가 양쪽의 컴퓨터와 점 대 점으로 연결되어 고리처럼 순환형으로 구성된 형태
- 장점
- 단말 노드 추가, 삭제 등 네트워크 재구성이 용이
- 단점
- 링의 한 부분에 문제가 생기면 전체 네트워크에 영향
- 장점
- 성(star)형 구조: 각 단말 노드가 허브라는 네트워크 장비에 점 대 점으로 연결되어 있는 구성 형태
- 장점
- 소규모 네트워크 설치 및 재구성이 간편
- 단점
- 중앙 허브가 고장 나면 전체 네트워크에 영향
- 장점
- 버스(bus)형 구조: 하나의 통신 회선에 여러 대의 컴퓨터가 멀티 포인터로 연결되어 있는 구조 형태
- 네트워크 장비 유형
- 스위칭/라우팅 장비
- 스위치: 네트워크에서 전달 경로를 찾는 기능
- 스위치: OSI 2계층(데이터링크계층), 네트워크 내
- 라우터: OSI 3계층(네트워크계층), 네트워크 간
- 스위치: 네트워크에서 전달 경로를 찾는 기능
- 광전송 장비: 네트워크의 스위칭 노드를 묶어주는 시스템(암기)
- SONET: 동기식 광통신망
- SDH: ITU 국제표준
- DWDM: 파장 분할 다중, 하나의 광섬유에 여러 개의 빛 파장을 동시에 전송
- CET: 고속 전송
- 엑세스 장비
- 이동 통신 장비
- 기지국(BTS): 교환기에 제공
- 제어국(BSC): 기지국 제어, 교환기와 연동
- 교환기(MSC): 서비스 제어, 연동 기능
- 스위칭/라우팅 장비
2-2. SW 구축 관리
신기술 용어
- 스택가드: 특정 함수 실행 하면 이전 함수로 돌아가기 위한 주소가 기록된다. 카나리에 저장, 보안 강화 기법
- 뉴럴링크: 뇌 연구 스타트업
- 딥러닝: 인공지능 > 머신러닝 > 딥러닝
- 블록체인: 암호화폐 거래에 사용
- 증강현실: 가상 현실
소프트웨어 개발보안 적용 사례
- MS-SDL
- Seven Touchpoints: 실무적으로 검증됨, 개발 라이프사이클에 통합
- CLASP: 이미 운영중인 곳에 적용하기 좋음
2-3. HW 구축 관리
서버 장비 운영 요소
- 서버 탑재 SW
- 저장 장치(스토리지 시스템)
- DAS: 서버 장비에 직접 연결, 구성이 용이함
- NAS: 서버와 저장 장치를 네트워크로 연결, 구성 설정 간편, 서버 한 곳에서 관리해서 스토리지 및 파일 공유 용이
- SAN: DAS의 빠른처리와 NAS의 공유 장점을 합침. 광케이블(FC)
신기술 용어
- KDD: 기계 학습 등을 통해 DB에서 지식을 자동으로 발견하려는 시도
- Data Mining: 많은 데이터 가운데 숨겨져 있는 유용한 상관관계를 발견하고 아용하는 과정
- 하둡: 대량의 자료를 처리하는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원
- MapReduce: 구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작
- Mashup: 웹으로 제공하는 정보와 서비스를 융합하여 새로운 것을 만드는 것
2-4. DB 구축 관리
필요하면 찾아보기
3. 소프트웨어 개발 보안 구축
3-1. SW개발 보안 설계
SW개발보안의 3요소
- 기밀성(confidentiality): 승인된 주체들에게만 접근 허용
- 무결성(integrity): 승인된 방법에 의해서만 변경 허용
- 가용성(availability): 승인된 사용자들이 적시에 사용 가능하도록 함.
SQL 삽입 공격
크로스 사이트 스크립트(XSS) 공격
3-2. SW개발 보안 구현
암호 알고리즘
- 비밀키(대칭 키) 암호
- 치환 암호
- 전치 암호: 위치를 바꿈
- DES(Data Encryption Standard)
- 데이터 암호화 표준은 블록 암호의 일종
- 대칭키
- 64비트 키 중 56비트의 키는 암호화 복호화에 사용, 나머지 8비트는 키 블록의 parity check용으로 사용
- AES(Advanced Encryption Standard)
- DES의 보안성 때문에 보완한 알고리즘
- 128비트, 192비트, 256비트 등의 형태
- 블록 암호 방식
- SEED
- 한국 개발 액티브X, 128비트 및 256비트 대칭 키 블록 암호 알고리즘
- 공개키 (비대칭 키) 암호
- RSA 암호
- 암호문과 비밀키는 별개
- 매우 큰 수의 소인수 분해가 어렵다.
- 주요 연산 곱셈
- Diffie-Hellmon(디피-헬만)
- 키의 분배 및 교환에 주로 사용되는 알고리즘
- 엘가말(ElGamal)
- 키 길이는 RSA와 비슷
- 이산대수의 문제에 기반
- 난수 발생을 필요로 해서 다른 공개키 시스템에 비해 느린편에 속한다.
- ECC(타원곡선알고리즘)
- 이산대수의 문제에 기반
- 기존 공개키 보다 작은 키 길이를 사용하면서 비슷한 성능
- 주요 연산 덧셈
- RSA 암호
개발자가 범할 수 있는 코딩오류로 인한 보안약점
- Null Pointer 역참조
- 부적절한 자원 해제
- 해제된 자원 사용
- 초기화되지 않은 변수 사용
캡슐화
- 잘못된 세션에 의한 데이터 정보노출
- 제거되지 않고 남은 디버그 코드
- 시스템 데이터 정보노출
- Public 메소드로부터 반환된 Private 배열
- Private 배열에 Public 데이터 할당
4. 시스템 보안 구축
4-1. 시스템 보안 설계
시스템 보안 설계 대상
- 계정 관리
- 패스워드 관리
- 세션관리
- 접근통제
- 권한관리
- 취약점관리
서비스 공격 유형
- 수동적 공격
- 스니핑
- 다른 이의 대화를 엿듣는 것
- 도청(Evaesdropping)
- 전기적 신호를 분석해 정보를 찾아내는 것
- 스니핑
- 능동적 공격
- 세션 가로채기 공격
- IP Spoofing: 다른 컴퓨팅 시스템인 것처럼 가장 하기 위해 거짓 소스 IP주소로 인터넷 프로토콜 패킷을 만드는 일.
- DNS Spoofing: 실제 도메인 네임 시스템 서버 해킹
- DoS(Denial of Service)
- Teardrop: IP 패킷 조각 전송, 컴퓨터의 OS다운
- Smurf 공격: 브로드캐스트하는 분산 서비스 거부 공격
- TCP SYN Flooding 공격: 연결설정 취약점을 이용
- DDoS(Distributed DoS): 여러 대의 공격자를 분산적으로 배치
- 트리누 공격
- TFN 공격
- Stacheldraht 공격
- TFN2K 공격
- 세션 가로채기 공격
정보 보안 침해 공격 관련 용어(암기)
- 웜: 네트워크에서 연속적인 복사 기능으로 자가 증식해 기억장치 소모 혹은 저장된 데이터 파괴
- 랜섬웨어: 중요 파일에 대한 접근 차단하고 금품을 요구
- 백도어: 네트워크 관리자가 외부에서도 시스템 점검을 하려고 빈틈을 만들었는데 악용 됨.
- 백도어 탐지 기법
- tripwire: 크래커가 침입하여 백도어를 만들어 놓거나, 설정 파일을 변경했을 때 분석하는 도구
- 현재 동작중인 프로세스 및 열린 포트 확인
- SetUID 파일 검사
- 바이러스 및 백도어 탐지 툴 사용
- 무결성 검사
- 로그 분석
- 트로이 목마: 컴퓨터에 숨어있다가 사용자의 정보를 몰래 유출하는 악성코드
시스템 인증
- DAC
- 임의적 접근 통제
- 정보 소유자
- 중앙 집중화된 정보 관리가 어렵다.
- MAC
- 강제적 덥근 통제
- 중앙 집중화된 정보 관리
- B로 시작하는 모델 2개
- RBAC(Role-Based)
- 역할 기반 접근 통제
- 사람이 아닌 직책에 따라 권한 부여
4-2. 시스템 보안 구현
시스템 보안 구현 도구
- MBSA: 보안 관련 설정 확인 기능
- Nmap: 포트 열려있는지 확인
- NBTScan: 네트워크 점검
- RIP:
- 벡터 방식을 사용하는 내부 라우팅 프로토콜
- 최대 홉 카운트와 흡수가 15
- 소규모 네트워크 환경에 적합
- 최단경로탐색에는 Bellman-Ford 알고리즘 사용
'자격증 > 정보처리기사 인강 - 필기' 카테고리의 다른 글
제4과목 프로그래밍 언어 활용 (0) | 2024.05.17 |
---|---|
제3과목 데이터베이스 구축 (0) | 2024.05.17 |
제2과목 소프트웨어 개발 (0) | 2024.05.17 |
제1과목 소프트웨어 설계 (0) | 2024.04.16 |