1.폭포수 - 가장 오래된 / 전통적 / 고전적 생명주기 모델 - 순차적 접근 - 산출물 중심 - 각 단계를 확실히 매듭짓고 승인을 거쳐 이전 단계로 돌아갈 수 없음 - 매뉴얼 작성 필요 - 2개 이상 과정 병행x
2.프로토타입 - 개발될 sw에 대한 견본품 만들어 최종 결과물 예측
3.나선형 - 소프트웨어 개발 프로세스를 위험 관리 측면에서 본 모델 - 요구사항 / 아키텍처를 이해하기 어렵거나 중심 기술에 문제가 있는 경우 적합한 모델 - 폭포수 / 프로토타입 모델 장점에 위험 분석기능 추가 - 시스템을 여러 부분으로 나누어 여러번 개발 주기를 거치며 완성 - 계획 및 정의 => 위험 분석 => 공학적 개발 => 고객 평가
4.V - 폭포수 모델의 변형 - 작업과 결과물 검증에 초점
5.애자일
- 공정과 도구 < 개인과의 상호작용 - 포괄적인 문서 < 동작하는 소프트웨어 - 계약 협상 < 고객과의 협력 - 계획 따르기 < 변화에 대응
*애자일 기법*
1.XP(extreme programming)
- 5가지 핵심 가치
ㄴ의사소통
ㄴ피드백
ㄴ존중
ㄴ용기
ㄴ단순성
2.스크럼(scrum)
- 스프린트(sprint) : 하나의 완성된 최종 결과물을 만들기 위한 단위
ㄴ단위 : 보름~1달
- 매일 15분 짧은 회의
3.FDD(function driven development)
4.크리스탈
5.lean
<클래스 설계원칙>
1.단일 책임원칙 : 하나의 클래스는 하나의 일만 수행
2.개방-폐쇄의 원칙 : 클래스는 확장에는 열려 있고 변경에는 닫혀 있어야 함
3.리스코프 교체/치환의 원칙 : 자식 클래스는 언제든 부모 클래스를 대체할 수 있어야 함
4.의존관계 역전 원칙 : 자주 변경되는 클래스와 의존관계를 갖지 말아야 함
5.인터페이스 분리 원칙 : 불필요한 인터페이스 생성하지 않기
<하향식 / 상향식 설계 방법>
*하향식 설계 - 구조적 설계 - 절차지향
*상향식 설계 - 객체지향
<자료흐름도(Data Flow Diagram)>
- 버블 차트라고도 함
- 구조적 분석 기법에 이용
- 프로세스와 프로세스 간의 상호작용 표현
<UML>
- 모델링 언어
- 산출물 명세화
<UI 설계도구>
<디자인 패턴>
<객체지향 분석기법>
1.럼바우(Rumbaugh) : 객체 / 동적 / 기능 3가지 모형을 생성
<테스트 단계>
1.단위 테스트
- 정적 분석 : 소스코드 내부 확인
- 동적 분석 : 입력값과 출력값 확인
2.통합 테스트
- 상향식 : 디테일부터 메인 페이지
ㄴ드라이버
- 하향식 : 메인 페이지부터 디테일
ㄴ스텁
3.시스템 테스트
- 기능 테스트 : 사용자가 요구한 기능 작동
- 비기능 테스트 : 보안, 성능, 안정성, 신뢰성, 자원 활용력
4.인수 테스트
- 알파 테스트 : 사용자와 개발자가 같이
- 베타 테스트 : 사용자만
<자료구조>
1.스택
- LIFO
- 인터럽트 처리, 서브루틴 호출 작업에 응용
2.큐
- FIFO
<정렬 알고리즘>
1.퀵 정렬
- 피벗 사용
- n(n-1)/2회 비교
- 시간 복잡도 : n*log2n
2.버블 정렬
3.삽입 정렬
4.선택 정렬
<화이트 박스 테스트 기법>
- 개발자 관점의 테스트 방법
- 내부 소스코드 테스트
- 프로그램 내부 구조, 동작 검사
ㄴ데이터 흐름 검사
ㄴ루프 검사
1.문장검증
2.선택검증
3.경로검증
4.조건검증
<블랙박스 테스트 기법>
- 프로그램 내부 구조, 작동 원리 모르는 상태에서 동작 검사
- 사용자 관점의 테스트 방법
- 원하는 기능이 예측한 대로 정상 동작하는지 확인
ㄴ동등 분할 기법
ㄴ경계값 분석 기법
ㄴ오류 예측 기법
ㄴ원인/결과 그래프 기법
<소스코드 품질 분석>
1.동료 검토(peer review)
- 2~3명이 진행
- 작성자가 코드 설명, 관계자들이 설명 들으며 결함 발견하는 형태로 진행
2.워크스루
- 검토 자료 회의 전 배포해 사전검토
- 짧은 시간 동안 회의 진행
3.인스펙션
- 공식적 검사회의
- 작업자 외 다른 전문가가 검사
- 코드 품질 향상 기법
- 프로그램 수행x, 눈으로 확인
<정보시스템>
1.고가용성 솔루션(HACMP) - 클러스터링 : 다수의 시스템 동시 연결
2.스턱스넷 - 제로데이 취약점 이용 - 핵무기와 원심분리기 등 물리적 피해를 입히는 목적
3.루팅 - 안드로이드 운영체제에서 최상위 권한을 얻어 해당 기기 권한을 해제
<공격 종류>
1.Switch Jamming - 위조된 MAC 주소를 네트워크로 흘려보내 스위치 MAC 주소 테이블의 저장 기능을 혼란시켜 더미 허브처럼 작동시킴
2.블루투스 공격
a)블루버그 - 블투 장비 사이 취약한 연결 관리 악용
b)블루스나프 - 블루투스의 취약점 활용해 장비의 파일에 접근
c)블루프린팅 - 블투 공격 장치의 검색 활동
d)블루재킹 - 블투 이용해 스팸처럼 메시지를 익명으로 퍼트림
3.DDos
a)Smurf attack - IP, ICMP 특성 이용
b)Ping of Death - 정상 크기보다 큰 ICMP 패킷을 fragment로 쪼개 조각화된 패킷을 처리하게 만듦
c)Land attack - 출발지 / 목적지 IP가 같은 패킷을 만들어 보냄
d)SYN Flooding - 존재하지 않는 사용자가 접속한 것처럼 속여 다른 사용자가 서비스를 이용하지 못하게 함