Search

SDLC

[- Disclaimer -] 아래 내용은 정보보안 공부 목적으로 작성된 것이나, 이를 토대로 허가되지 않은 대상에 실습을 진행할 경우 해킹 시도로 간주하여 법적 처벌을 받을 수 있음을 알려 드립니다.
SDLC (=Software Development Life Cycle, Software 생명 주기)
✦ 단계별 Test 수행
✧ 수정 필요 시 이전 단계 혹은 Error가 발생한 단계에서 Feedback 받기
✦ 결과물을 얻었다고 Project가 성공한 게 아닌 효율과 관리가 중요
SDLC 6 단계
✦ 1) 요구 사항 분석 단계
✦ 2) 시스템 명세 단계
✦ 3) 설계 단계
✦ 4) 구현 단계
✦ 5) Test 단계
✦ 6) 유지 보수 단계
SDLC 종류
✦ Waterfall Model
✦ Prototype Model
✦ Spiral Model
✦ Agile Model
SDLC - 요구 사항 분석 단계 (=문제 분석)
✦ S/W 기능 및 특징, 제약 조건, 개발 방법, 목표, 예산 예측 등 S/W 사용자와 함께 명확히 정의
✦ 요구 사항 명세서 작성
✧ 개발 완료 여부를 결정짓는 근거가 됨
SDLC - 시스템 명세 단계
✦ 시스템 기능 명세서 작성
✧ 무엇을 수행해야 하는지 정의, S/W 입력 자료 정의, 처리 내용 및 결과 정의
✧ 개발자간 의견 차이, 오류로 인한 재개발 작업, 사용자 불만 안 생기게 정확히 작성
SDLC - 설계 단계
✦ 정의된 기능 수행 방법 결정
✧ 어떻게 개발 목표 기능을 구현할지 구체적 정의
✦ 시스템 구조 설계
✧ 시스템 내부 프로그램 간, Module 간 관계/구조 설계
✦ 프로그램 설계
✧ 프로그램 내 각 Module의 처리 절차/알고리즘 설계
✦ 사용자 Interface 설계
✧ 사용자에게 보여지는 프로그램 설계
✦ 시스템 설계 방법 3가지
✧ Top-Down Design (=하향식 설계)
✧ Bottom-Up Design (=상향식 설계)
✧ Object-Oriented Design (=객체 지향 설계)
SDLC - 설계 단계 - Top-Down Design
✦ Divide and Conquer (=분할 정복)
✧ 상위 단계에서 무엇을 수행할 것인지 정의하고 단계를 내려갈수록 구체적/세분화 정의
✧ 최하위 단계로 분할(Divide)된 작은 단위의 문제들을 각각 처리함으로써 전체 문제를 해결(Conquer)
✦ 응 Network 개념 문서에도나오ㅓ와
SDLC - 설계 단계 - Bottom-Up Design
✦ 최하위 단계에 있는 작은 단위들을 먼저 결정하고 단계를 올라갈수록 상위 단계의 문제 해결
✦ 최하위 단위의 문제들에 대해 기존에 개발된 문제 해결 도구(알고리즘) 재사용 시 개발 기간 및 비용 단축, 재사용을 통한 신뢰성 확보
SDLC - 설계 단계 - Object Oriented Design
✦ 작은 단위의 문제 해결을 위한 자료와 처리 방법을 하나로 묶어 객체로써 연결해 재사용
✦ 하위 단위의 알고리즘 재사용이라는 점에선 상향식 설계 방법과 유사하나, 자료와 처리 방법이 객체로 만들어 진다는 점이 다름
SDLC - 구현 단계
✦ 설계 단계에서 논리적으로 결정한 문제 해결 방법(알고리즘)을 Programming 언어로 실제 작성
✧ Compiler 가용성 및 품질, 개발 도구, 언어 호환성, 개발 경험, 사용자 요구 등을 고려해 사용할 Programming 언어/능력/기법/스타일/순서/ 결정
✧ 선택한 Programming 언어는 개발 기간, 개발 비용 및 유지 보수 단계까지 영향을 미침
✦ 효과적인 Programming
✧ 간결/명확하며 읽기 쉽게 작성된 것
✧ 임시 변수는 지양
✧ 일관되고 이해하기 쉬운 변수명
✧ 동일 변수 명명 반복 최소화
✧ 변수 사용 용도에 대한 주석
SDLC - 구현 단계 - 구조화 Programming 기법
✦ 지정문과 조건문, 반복문만 사용해 프로그램을 작성하며 순차 구조, 선택 구조, 반복 구조 형태의 제어 구조로 표현 됨
✦ 구조 간단/명확
✦ 정확성 검증 및 Test, 유지 보수 쉬움
SDLC - 구현 단계 - Moduler Programming 기법
✦ 프로그램을 여러 작은 Module로 나눠 계층 관계를 갖는 구조
✦ 각 Module은 구조화 Programming으로 작성되며 통상, 한 Module은 한 기능만 수행
✦ Module별로 개발과 Test, 재사용, 유지 보수 가능
SDLC - Test 단계
✦ 요구 사항 만족 여부, 예상 실행 결과 출력 여부, 최대한의 오류 찾기 등으로 시스템 완성도를 높이는 단계
✦ 종류
✧ ㅍ단위 Test, 통합 Test
SDLC - Test 단계 - 단위 Test
✦ 최소 구성 요소가 되는 Module에 대해 개별적 시행
✦ 요구 사항 명세서에 기술된 기능이 제대로 수행되는지 확인
SDLC - Test 단계 - 통합 Test
✦ 단위 Test를 통과한 Module들을 통합해 전체 시스템이 완성되기 전 Module 간 호출과 Return 등 Module 간 Interface Test
✧ 전체 Module을 한 번에 Test하면 오류 발생 시 찾기가 힘들므로 단위 Module들부터 점진적으로 연결해가며며 Test
✦ 종류
✧ 하향식 Test, 상향식 Test, 인수 Test
SDLC - Test 단계 - 통합 Test - 하향식 Test
✦ 상위 단계 Module들 먼저 통합해 Test 후 각 구성 요소에 부속된 하위 단계의 Module들도 통합해 Test해가며 최하위 단계까지 내려감
SDLC - Test 단계 - 통합 Test - 상향식 Test
✦ 최하위 단계 Module들 먼저 통합해 Test 후 그 상위 단계 Module들도 통합해 Test해가며 최상위 단계까지 올라감
SDLC - Test 단계 - 통합 Test - 인수 Test
✦ 완성된 제품으로 보고 실제 자료를 사용해 Test
✧ Alpha Test: 사용할 환경에 설치한 후 Test
✦ Beta Test
✧ 제품 판매 전 제품 사용 의사가 있는 잠정적 고객들이 실제 사용해 보도록 해 오류 찾기
SDLC - 유지 보수 단계
✦ 시스템 인수 후 일어나는 모든 과정의 포괄적인 의미로, 프로그램의 오류 수정, 시스템 디자인 수정, 새 요구 사항에 대한 기능 추가, 시스템 사용 환경 변화, 시스템 교정 등의 모든 활동
SDLC - 유지 보수 단계 - 유지 보수 유형
✦ 수정형 유지 보수
✧ 사용 중에 발견한 프로그램 오류 수정
✦ 적응형 유지 보수
✧ 시스템과 관련해 환경적 변화에 적응하도록 재조정
✦ 완전형 유지 보수
✧ 시스템 성능 향상을 위한 개선
✦ 예방형 유지 보수
✧ 앞으로 발생할지 모를 변경 사항을 수용하도록 대비
시스템 개발 초기부터 유지 보수에 대한 면밀한 계획을 세워야 하는 이유
✦ S/W 생명 주기에서 가장 긴 기간
✦ S/W 개발 비용보다 더 들어 가는 경우 있음
✦ 잘못된 유지 보수 시 시스템 운영이 불가능 한 경우 있음