소프트웨어 개발 방법론 활용
소프트웨어 개발 생명주기 모형
소프트웨어 개발 생명주기(SDLC)
•
만들어지고 폐기될 때까지의 생명주기
프로토타입
•
시제품을 만드는 것
폭포수 모형
•
고전적 생명주기
•
순차적 접근 방법
•
소규모 시스템 개발에 적합
•
선형 순차적 모형
나선형 모형
•
반복 작업
•
위험 분석 단계 - 4단계가 있다.
•
점진적 모형, 집중적 모형, 완성도가 높음
•
반영 어려움
•
대규모 시스템 개발에 적합
CPM(Critical Path Method)
•
최악의 상황을 감안해서 기간을 산정
•
노드와 간선으로 구성
•
가장 오랜 기간
소프트웨어 개발 방법론
구조적 방법론
•
정형화된 체계적인 방법론
•
데이터 흐름 다이어그램
•
구조도
객체지향 방법론
•
대상체 자체를 객체로 봄
•
기본 원칙
◦
캡슐화(Encapsulation), 정보 은닉(Information Hiding), 추상화(Abstraction), 상속(Inheritance), 다형성(Polymorphism)
•
시스템 분석을 위해 유스케이스 다이어그램 사용
•
시스템 설계를 위해 시퀀스 다이어그램 사용
컴포넌트 개발 방법론
•
재사용하기 위한 컴포넌트 제작
•
유지보수 비용 최소화
CBD(Component Based Development) SW 개발 표준 산출물
1.
분석
2.
설계
3.
구현
4.
시험
CBD 방법론 특징
•
재사용 가능
•
시스템 분석을 위해 유스케이스 다이어그램 사용
•
개발 기간 단축 - 확장성 높다
소프트웨어 재사용
•
합성 중심
◦
전자칩과 같은 소프트웨어 부품, 즉 블록을 만들어 끼워 맞추어 완성시키는 방법
•
생성 중심
◦
패턴 구성 방법
◦
추상화 형태 명세 구체화
비용 산정 모델
비용 산정 모델 종류
전문가 감정 기법
델파이(Delphi) 기법
•
산정 요원가 조정자에 의해 산정
•
독단 행위 방지
LOC(Line Of Code) 기법
•
원시 코드 라인 수의 예측 치수를 구해 이를 이용하여 비용을 산정하는 기법
•
예측치 = 낙관치 + ( 4 x 기대치) + 비관치 / 6
•
개발 기간 = 예측된 LOC / (개발자 수 x 1인당 월 평균 생산 LOC)
COCOMO 모델
•
소스 코드 규모에 의한 비용 예측 모델
•
개발 노력 승수를 결정
•
COCOMO 모형 종류
◦
Basic COCOMO, Intermediate COCOMO, Detailed COCOMO
•
소프트웨어 개발 유형
◦
Organic Mode (단순형)
▪
5만 라인 이하 소프트웨어 개발
▪
노력(MM) = 2.4 x (KDSI)1.05
◦
Semi-detached Mode (중간형)
▪
30만 라인 이하의 소프트웨어 개발
▪
노력(MM) = 3.0 x (KDSI)1.12
◦
Embedded Mode (임베디드형)
▪
30만 라인 이상의 소프트웨어 개발
▪
노력(MM) = 3.6 x (KDSI)1.20
◦
KDSI(Kilo Delivered Source Instrction) : 전체 라인 수를 1,000단위로 묶는 것 (==KLOC)
Putnam 모델
•
Rayleigh-Norden 곡선 노력 분포도 이용
•
노력 분포 예측
•
SLIM : Rayleigh-Norden 곡선과 Putname 모형에 기반을 둔 자동화 추정 도구
기능 점수(FP : Functional Point)
•
기능 정량화
•
시스템을 구현한 기술에 의존적이고 개발자에 의해 식별되는 기능에 기반하여 시스템의 크기를 측정하는 적도
•
기능 점수 비용산정 요소
◦
코드 라인 수
◦
데이터 파일 수
◦
문서 페이지 수
◦
입력 유형의 수
◦
출력 보고서의 수
◦
외부 루틴과의 인터페이스 수
◦
명령어(사용자 질의 수)
소프트웨어 개발 표준
ISO/IEC 12119
•
테스트를 위한 국제 표준
•
25051로 대체
ISO/IEC 12207
•
기본 생명주기 프로세스 구분
◦
획득 프로세스
◦
공급 프로세스
◦
개발 프로세스
◦
운영 프로세스
◦
유지보수
SPICE(Software Process Improvement and Capability dEtermination)
•
소프트웨어 프로세스 평가 및 개선 국제 표준
•
== ISO/IEC 15504
•
ISO/IEC 12207 단점 해결
•
SPICE 모델 범주
◦
고객-공급자 프로세스
◦
공학 프로세스
◦
지원 프로세스
◦
관리 프로세스
◦
조직 프로세스
SPICE 모델 레벨
0.
불완전 단계
1.
수행 단계
2.
관리 단계
3.
확립 단계
4.
예측 단계
5.
최적 단계
CMM(능력 성숙도 모델)
•
회사의 성숙도를 파악하는 것
•
능력치 평가
CMM 모델 레벨
1.
초보 단계
2.
반복 단계
3.
정의 단계
4.
관리 단계
5.
최적 단계
CMMI(능력 성숙도 통합 모델)
•
프로세스 역량 성숙도 평가 표준
•
CMM : 개발 프로세스 성숙도 모델
•
CMMI : 소프트웨어, 시스템, 프로덕트 포함 세 분야 통합 평가 모델
•
24개 프로세스 영역을 4개 범주로 분할
테일러링과 프레임워크
테일러링
•
소프트웨어 개발 방법론
•
기존 개발 방법론을 프로젝트 상황에 맞게 수정한는 작업
•
테일러링 수행 절차
1.
프로젝트 특징 정의
2.
표준 프로세스 선정 및 검증
3.
상위 레벨 커스터마이징
4.
세부 커스터마이징
5.
테일러링 문서화
테일러링 시 고려사항
•
내부적 요건
◦
납기/비용
◦
구성원 능력
◦
목표 환경
◦
고객 요구사항
◦
프로젝트 규모
◦
보유 기술
•
외부적 요건
◦
법적 제약사항
◦
표준 품질 기준
프레임워크
•
비슷한 유형의 응용 프로그램들을 위해 재사용이 가능한 아키텍처와 협력하는 소프트웨어 산출물의 통합된 집합
•
특정 클래스 재사용 뿐 아니라 응용 프로그램을 위한 핵심 아키텍처를 제공하여 설계의 재사용 지원
프레임워크 적용 시
•
개발 용이성
•
시스템 복잡도 감소
•
이식성
•
품질 보증
•
운영 용이성
•
개발 코드 최소화
•
변경 용이성
•
설계 및 코드의 재사용성
스프링 프레임워크
•
자바 기반
•
동적 웹 사이트 개발
•
전자정부 표준 프레임워크
◦
공공부문 정보화 사업 시 플랫폼별 표준화된 개발 프레임 워크
◦
공공기관에서 권장
네트워크 구성
성형
•
중앙에 호스트 컴퓨터가 있고 이를 중심으로 터미널이 연결
버스형
망형
•
그물형
•
응답 시간 빠르다
•
회선 수 = n(n-1)/2 (n은 노드 수)
스위치
•
보안 및 트래픽 관리 기능
•
계층별 스위치 장비가 존재
라우터
•
최적 IP 경로 설정
•
네트워크 계층
VLAN
•
가상으로 LAN을 구성하여 사용하게 하는 기술
네트워크 관련 신기술
RIP(Routing Information Protocol)
•
최단 경로 탐색
•
거리 벡터 라우팅 프로토콜
•
홉(거릿값)만을 고려
•
최대 홉 카운트 : 15홉 이하
•
소규모에 적합
OSPF(Open Shortest Path First Protocol)
•
89번 프로토콜 사용
•
IGP가 가장 많이 사용됨
•
링크 상태 라우팅 알고리즘 사용
•
대규모 네트워크에 적합
MQTT(Message Queuing Telemetry Transport)
•
IBM 주도
•
IoT같은 대역폭 제한 통신 환경에 최적화
•
TCP/IP 기반 네트워크에서 동작
•
발행-구독
클라우드 컴퓨팅(Cloud Computing)
•
IaaS, PaaS, SaaS로 구분
•
원격으로 빌려서 사용하는 방식
•
PaaS-TA : 개방형 클라우드 컴퓨팅 플랫폼, 국내 경쟁력 강화 목표로 개발
그리드 컴퓨팅(Grid Computing)
RFID(Radio Frequency IDentification)
•
전자 태그 부작 IC칩, 무선 통신 기술을 이용해 정보 관리를 하는 센서 기술
NFC(Near Field Communication)
•
RFID 기술 중 하나
•
13.56MHz의 주파수 대역 사용
•
비접촉식 통신 기술
•
읽기, 쓰기 모두 가능
Zing
•
초고속 무선 통신 기술
WPAN(Wireless Personal Area Network)
•
무선 통신 규격 - 블루투스에서 사용
PICONET(피코넷)
•
여러 개의 독립된 통신 장치가 UWB(Ultra Wideband)기술 또는 블루투스 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술
스마트 그리드(Smart Grid)
•
전력망 시스템
•
에너지 효율 최적화
비컨(Beacon)
•
블루투스 프로토콜 기반
•
근거리 무선 통신 장치 70m 이내까지 가능
포스퀘어(Foursquare)
•
GPS로 위치 정보 수집
ZigBee
•
저전력 센서 네트워크
Mesh Network
•
대규모 디파이스 네트워크 생성에 최적화
•
기존 무선 랜 한계 극복 목적
Wavelength Division Multiplexing(WDM, 파장 분할 다중화)
•
단일 광섬유 적용 기술
•
광섬유 다중화 방식
소프트웨어/하드웨어 관련 신기술
소프트웨어 관련 신기술
소프트웨어 정의 데이터 센터(SDDC : Software Defined Data Center)
•
가상 데이터 센터
•
모든 자원 가상화 서비스
텐서플로우(TensorFlow)
•
인공지능 응용프로그램 개발용 오픈소스 프레임워크
머신 러닝
•
학습을 통해 패턴을 찾아 정보 처리 능력을 향상시키는 기술
딥 러닝
•
더 깊은 신경망 계층 구조 이용 머신 러닝
디지털 트윈(Digital Twin)
•
물리적인 사물과 컴퓨터에 동일하게 표현되는 가상 모델
•
META
HWD(Head Mounted Display)
•
머리에 착용하는 디스플레이
블록체인(Blockchain)
•
공공 거래 장부
•
블록은 트랜잭션 집합과 헤더로 구성
BaaS(Backend as a Service)
•
블록체인 개발 환경을 클라우드로 서비스하는 개념
•
블록체인 기본 인프라를 추상화
•
클라우드 컴퓨팅 플랫폼
분산 원장 기술(Distributed Ledger Technology)
•
암호화 기술로 거래 정보를 검증하고 합의한 원장(Ledger)을 통해 확인하는 기술
매시업(Mashup)
•
웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술
양자 암호(Quantum Cryptography)
•
양자 역학 특성을 이용하여 정보 보호를 위한 알고리즘 또는 정보 이론적/수학적 기법
하드웨어 관련 신기술
N-Screen
•
여러 개의 스크린
•
다양한 디지털 전자기기에서 사용이 가능한 기술
데이터베이스 관련 기술 용어
직접 연결 저장 장치(DAS : Direct-Attached Storage)
•
데이터 저장 장치를 호스트 버스 어댑터에 직접 연결하는 방식
SAN(Storage Area Network)
•
네트워크상 광 채널 스위치 이점 고속 전송과 장거리 연결 및 멀티 프로토콜 기능 활용
•
여러 개의 저장 장치나 백업 장비를 단일화
NAS(Network Attached Storage)
•
구조적으로 스토리지 서버를 단순화, 소형화한 것
Software Defined Storage
•
가상화 적용 (서버 가상화와 유사)
•
데이터 스토리지 체계
•
효율적으로 나눠쓰는 방법
데이터웨어하우스(Data Warehouse)
•
기간 업무 시스템에서 추출되어 새로이 생성된 데이터베이스
•
의사결정지원시스템을 지원하는 주제적, 통합적, 시간적 데이터의 집합체
•
통합된 데이터에 의한 OLAP(On-Line Analytical Processing) 연산을 효율적으로 지원
데이터 마트(Data Mart)
•
데이터웨어하우스에서 축소된 개념
•
중간층에 위치
데이터 마이닝(Data Mining)
•
대량의 데이터를 분석하여 데이터 속에 있는 변수 사이의 상호관계를 규명하여 일정한 패턴을 찾아내는 기법
디지털 아카이빙(Digital Archiving)
•
디지털 정보 자원을 장기적으로 보존하기 위한 작업
하둡(Hadoop)
•
오픈소스 기반 분산 컴퓨팅 플랫폼
•
빅데이터 분산 처리를 돕는 자바 소프트웨어 오픈소스 프레임워크
•
거대한 데이터 세트를 병렬 처리
•
필수 핵심 구성 요소
◦
맵리듀스
▪
Google 개발
▪
대용량 데이터 분산 처리 목적 개발 프로그래밍 모델
▪
병렬 처리 기법 제공
▪
분산 처리 후 다시 합치는 과정을 거친다.
◦
하둡 분산 파일 시스템
•
Sqoop : 하둡과 관계형 데이터베이스 간에 데이터를 전송할 수 있도록 설된 도구
소프트웨어 개발 보안
Secure OS
•
목적
◦
안정성
◦
보안성
◦
신뢰성
버퍼 오버플로우
•
운영 체제가 메모리를 조작하는 동안 잘못된 동작을 하는 프로그램 취약점
버퍼 오버플로우 대응 방안
•
스택 실드
•
ASLR
•
스택 가드 : 한쪽으로만 입출력이 가능한 형태, 프로그램 실행을 중단시키는 기술
시스로그(Syslog)
•
리눅스에서 다양한 이벤트를 로그 파일에 기록하는
소프트웨어 개발 보안 방법론
Secure SDLC(소프트웨어 개발 생명주기)
•
개발부터 폐기까지 보안 생명 주기를 지켜야한다
Seven Touchpoints
•
공통 위험 요소 파악 이해
•
체크 리스트
CLASP(Comprehensive, Lightweight, Application Security Process)
•
생명주기 초기 단계에 보안 강화 목적으로 하는 정형화된 개발 보안 프로세스
정보 보안 3대 요소
•
기밀성(Confidentiality) : 권한이 있는 사람만 접근이 가능한 것
•
무결성(Integrity) : 인가된 사용자가 인가된 방법으로만 수정이 가능한 것
•
가용성(Availablity) : 사용자가 필요할 때 데이터에 접근할 수 있는 능력
OWASP
•
오픈소스 웹 애플리케이션 보안 프로젝트
•
10가지 취약점 공개
시큐어 코딩 가이드
입력 데이터 검증 및 표현
데이터 삽입으로 인한 보안 약점 종류
•
SQL Injection
◦
SQL 쿼리문을 삽입하여 공격하는 보안 약점
•
크로스 사이트 스크립트(XSS)
◦
악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도하여, 정보 유출 등의 공격을 유발 할 수 있는 취약점
•
XQuery 삽입
•
XPath 삽입
•
LDAP 삽입
보안 기능 문제로 인한 보안 약점 종류
•
적절한 인증 없는 중요 기능 허용
•
부적절한 인가
•
중요한 자원에 대한 잘못된 권한 설정
•
취약한 암호화 알고리즘 사용
•
중요 정보 평문 저장
•
중요 정보 평문 전송
•
하드 코드된 비밀번호
•
충분하지 않은 키 길이 사용
•
적절하지 않은 난수값 사용
시간 및 상태를 통한 보안 약점 종류
•
경쟁 조건 : 검사 시점과 사용 시점(TOCTOU)
•
종료되지 않는 반복문 또는 재귀함수
에러 처리에 대한 보안 약점 종류
•
에러 메시지를 통한 정보 노출
•
에러 상황 대응 부재
•
부적절한 예외 처리
코드 오류 보안 약점 종류
•
널 포인터 역참조
•
부적절한 자원 해제
•
해제된 자원 사용
•
초기화되지 않은 변수 사용
캡슐화 보안 약점 종류
•
잘못된 세션에 의한 데이터 정보 노출
•
제거되지 않고 남은 디버그 코드
•
시스템 데이터 정보 노출
•
public 메소드로부터 반환된 private 배열
•
private 배열에 public 데이터 할당
API 오용 보안 약점 종류
•
DNS lookup에 의존한 보안 결정
•
취약한 API 사용
암호화 알고리즘
암호 알고리즘 개념
•
평문과 암호문으로 각각 변경할 때 사용되는 알고리즘
•
암호화(평문→암호문)
•
복호화(암호문→문)
공개키(Public Key, 비대칭키) 암호화 기법
•
암호키와 해독키가 서로 다른 기법
•
키 개수는 2N개가 필요
•
RSA(Rivest Shamir Adleman) : MIT, 소인수 분해의 어려움
•
ElGama 기법 : 이산대수 문제의 어려움
비밀키(Private Key, 대칭키) 암호화 기법
•
동일 키로 암복호화하는 기법
•
키 개수는 N(N-1)/2개가 필요
•
스트림 방식
◦
평문의 길이와 동일한 스트림 생성
◦
RC4
•
블록 방식
◦
DES
◦
AES
◦
ARIA
◦
SEED
◦
IDEA
해시(HASH) 암호화 방식
•
디지털 서명에 이용
•
데이터 무결성 제공
•
블록체인에서 체인 형태로 사용
◦
데이터 신뢰성 보장
•
의사난수
•
SHA
Salt
•
시스템 저장 패스워드들은 Hash 또는 암호화 알고리즘 결과값으로 저장
서비스 공격 유형
Dos(Denial of Service, 서비스 거부)
•
정의
◦
시스템 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격 방법
◦
가용성을 위엽하는 행위
◦
IP주소를 속여 다량으로 서버에 보냄
•
종류
◦
스머프 : 위조, 시스템 상태를 불능으로 만드는 공격, ICMP 응답 패킷을 전송
◦
SYN 플러딩 : TCP 취약점 악용 - Half-Open 연결 시도가 가능
◦
UDP 플러딩 : 대량의 UDP 패킷을 만들어 보내는 공격 방법
◦
Ping 플러딩 : 특정 사이트에 매우 많은 ICMP Echo를 보내는 것
◦
Ping of Death : 비정상적 ICMP 패킷을 전송하여 시스템 성능을 저하시키는 공격 방법
◦
티어드랍 : 자원을 고갈시키는 방법
◦
랜드 어택 : 출발지와 목적지 주소를 동일하게 함으로 실행 속도가 느려지거나 동작이 마비되어 서비스 거부 상태에 빠지도록 하는 공격 방법
DDoS(Distributed Denial of Service, 분산 서비스 거부)
•
여러 대의 공격자를 분산 배치하여 동시에 서비스 거부 공격을 하는 것
•
공격용 도구
◦
Trinoo, TFN(Tribe Flood Network), TFN2K, Stackeldraht
피싱(Phishing)
•
가짜 웹 사이트로 개인정보를 탈취하는 것
이블 트윈 공격(evil twin Attack)
•
피싱 사기 무선 버전
파밍(Pharming)
•
도메인 탈취, DNS 서버 주소를 변경하여 오인을 유발해 개인정보를 탈취하는 수법
랜섬웨어(Ransomware)
•
시스템을 잠그거나 데이터를 암호화해 사용할 수 없도록 하고 이를 인질로 금전을 요구하는데 사용되는 악성 프로그램
키 로거(Key Logger)
•
키보드 움직임을 탐지해 개인정보를 탈취하는 수법
제로데이(Zero-day) 공격
•
알려지지 않은 취약점 및 보안 시스템에서 탐지되지 않는 악성코드 등을 감염시키는 것
백도어(Back Door)
•
정상적인 보안 절차를 우회하는 악성 소프트웨어
•
NetBus, Back Orifice, RootKit 등이 존재
•
탐지 방법
◦
무결성 검사, 열린 포트 확인, 로그 분석, SetUID 파일 검사
•
tripwire : 크래커가 침입하여 백도어를 만들어 놓거나, 설정 파일을 변경했을 때 분석하는 도구
TCP 세션 하이재킹
•
TCP 3 Way Handshake 단계에서 발생하는 취약점을 이용한 공격기법
•
비동기화 상태
•
동기화 상태
•
세션 하이재킹 탐지 기법
◦
비동기화 상태 감지
◦
ACK STORM 탐지
◦
패킷의 유실 및 재전송 증가 탐지
◦
예상치 못한 접속의 리셋 탐지
◦
SSH 프로토콜 사용
서버 인증 및 서버 접근 통제
서버 인증
사용자 인증 기법
•
지식 기반 인증
•
소유 기반 인증
•
생체(행위) 기반 인증
서버 접근 통제
접근 통제
•
크래커의 침입 보호
•
블법적인 접근 방지 과정
•
종류
◦
강제적 접근 통제
◦
임의적 접근 통제
◦
역할 기반 접근 통제
접근 통제 요소
•
식별
•
인증
•
인가
대표적 접근 통제 모델
•
벨라파듈라 모델(BLP : Bell-LaPadula Confidentiality Model) : 자신의 귄한 보다 낮은 보안 레벨 권한을 가진 경우 높은 보안 레벨의 문서를 읽을 수 없고 자신의 권한보다 낮은 수준의 문서만을 읽을 수 있다.
•
SSO(Single Sign-On) : 하나의 시스템에서 인증에 성공하면 접근 권한도 얻는 시스템
•
Biba Integrity Model
•
CWM(Clark-Wilson Integrity Model)
강제적 접근 통제(MAC : Mandatory Access Control)
•
다단계 보안 모델
•
Biba, Clark-Wilson, 만리장성 모델 등 존재
임의적 접근 통제(DAC : Discretionary Access Control)
•
정보 소유자가 보안 레벨을 결정하고 권한 레벨을 설정하는 방법
역할 기반 접근 통제(RBAC : Role Based Access Control)
•
직책에 대해 권한 부여 - 효율적 권한 관리 가능
MAC vs DAC vs RBAC
보안 솔루션과 보안 아키텍처
보안 솔루션
IDS(Intrusion Detection System, 침입 탐지 시스템)
•
정의
◦
침입 공격에 대하여 탐지하는 것을 목표
•
분류
◦
HIDS(호스트 기반) : 컴퓨터 시스템 내부 감시
◦
NIDS(네트워크 기반) : 네트워크상의 모든 패킷을 캡처링하여 분석
•
침입 탐지 기법
◦
오용 탐지(Misuse Detection) : 알려진 공격 패턴과 일치하는 지 검사
◦
이상 탐지(Anomaly Detection) : 통계적으로 침입 탐지
방화벽(Firewall)
•
시스템 침투를 막는 것
•
유형
◦
패킷 필터링
◦
상태 검사
◦
응용 레벨 게이트웨이
◦
회선 레벨 게이트웨이
•
베스천 호스트 : 방화벽 시스템 관리자의 중점 관리 시스템
방화벽 5가지 구성 형태
•
스크리닝 라우터(Screening Router)
•
이중 홈 게이트웨이
•
듀얼 홈드 호스트
•
단일 홈 게이트웨이
•
스크린된 호스트 게이트웨이
•
스크린된 서브넷 게이트웨이
IPS(Intrusion Prevention System, 침입 방지 시스템)
•
사후 조치 기술
•
IDS와 방화벽의 장점 결합
•
네트워크 보안 시스템
•
외부 침입 차단
•
내부 자원 보호
DMZ(DeMilitarized Zone)
•
보안 조치가 취해진 네트워크 영역
IPSec(IP Security)
•
통신 세션의 각 IP 패킷 암호화 및 인증을 하는 안전한 인터넷 프로토콜(IP)
•
ESP : 인증, 데이터 무결성, 기밀성 보장
•
AH : 발신지 호스트 인증, 패킷 무결성 보장
•
운영모드
◦
Tunnel 모드
◦
Transport 모드
DLP(Data Loss Prevention)
•
기업 데이터 유출 방지 목표
ESM(Enterprise Security Management, 통합 보안 관리)
•
각종 로그 통합적 관리
•
정보 시스템 보안성을 향상시키고 안정성을 향상