티스토리 뷰
Software Development Life Cycle
정의
- 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
- 시스템의 개발부터 유지보수까지의 어떠한 작업이 이루어지는지 단계별로 정리
소프트웨어 생명주기 모델 단계
- 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
1. 요구사항 분석(Requirement Analysis)
- 목적: 사용자의 요구사항을 명확하게 파악하고 분석하여 개발해야 할 소프트웨어의 기능적, 비기능적 요구사항을 정의하는 단계
- 주요 활동
1. 이해관계자와의 인터뷰: 고객, 사용자, 비즈니스 전문가 등과 논의하여 소프트웨어가 수행해야 할 기능을 파악
2. 요구사항 수집: 다양한 요구사항(예: 사용자 요구사항, 시스템 요구사항, 비즈니스 요구사항) 문서화
3. 요구사항 명세서(SRS) 작성: 수집한 요구사항을 체계적으로 문서화
3. 기능 요구사항
1. 정의: 시스템이 제공하는 기능으로 서비스에 대한 요구사항
2. 특징: 기능성, 완전성, 일관성
3. 예: 쇼핑몰 장바구니 기능, 결제수단은 신용카드 포인트 결제, 무통장 입금 등이 가능해야 함
4. 비기능 요구사항
1. 정의: 시스템이 수행하는 기능 이외의 사항으로 시스템 구축에 대한 제약사항에 관한 요구사항
2. 특징: 신뢰성, 사용성, 효율성, 유지보수성, 이식성, 보안성 등
3. 예: 시스템은 24시간 가동 필요, 특정 함수 호출은 3초 초과 금지 등
2. 설계(Design)
- 목적: 요구사항 분석 단계에서 수집한 내용을 바탕으로 소프트웨어의 전체 구조와 세부 설계를 하는 단계
- 설계의 유형
1. 아키텍처 설계(High-level Design): 시스템의 전반적인 구조, 모듈 간 관계, 데이터 흐름, 하드웨어 및 소프트웨어 구성 등을 결정
2. 세부 설계(Detailed Design): 각 모듈 및 컴퓨터의 세부 동작, 인터페이스, 데이터 구조, 알고리즘 등을 설계
3. 주요 활동
1. 시스템 구조 설계: 시스템을 어떻게 모듈화할 것인지 결정
2. 데이터베이스 설계: 데이터베이스 테이블, 관계 등을 설계
3. UI/UX 설계: 사용자 인터페이스 및 사용자 경험 설계
4. 산출물: 시스템 설계 문서, 데이터베이스 설계 문서, 인터페이스 설계 문서
3. 구현(Implementation)
- 목적: 설계된 내용을 바탕으로 실제 코드를 작성하여 소프트웨어를 개발하는 단계
- 주요 활동
1. 코딩: 프로그래밍 언어를 사용해 설계된 시스템을 코드로 구현
2. 모듈별 개발: 설계에 따라 시스템을 여러 모듈로 나누어 개발
3. 코드 리뷰: 코드의 품질을 높이기 위해 동료 개발자 간의 코드 검토
4. 산출물: 소스코드, 실행파일
4. 테스트(Testing)
- 목적: 구현된 소프트웨어가 요구사항을 충족하는지, 오류가 없는지 확인하는 단계
- 테스트의 유형
1. 단위 테스트(Unit Test): 개별 모듈이 올바르게 동작하는지 테스트
2. 통합 테스트(Hitegration Test): 모듈 간의 상호작용이 동작하는지 테스트
3. 시스템 테스트(System Test): 시스템 전체가 요구사항을 충족하는지 확인
4. 회귀 테스트(Regression Test): 수정된 코드가 다른 부분에 영향을 주지 않는지 테스트
- 주요 활동
1. 테스트 케이스 작성: 각 기능에 대해 수행할 테스트 항목 정의
2. 버그 수정: 테스트 과정에서 발견된 오류를 수정
3. 산출물: 테스트 결과 보고서, 수정된 코드
5. 배포(Deployment)
- 목적: 테스트가 완료된 소프트웨어를 실제 환경에 배포하고 사용자에게 제공하는 단계
- 주요 활동
1. 배포 준비: 배포 전 소프트웨어 패키징 및 배포 계획 수립
2. 실제 배포: 소프트웨어를 서버에 배포하거나 사용자에게 설치할 수 있도록 제공
3. 배포 후 모니터링: 배포 후 발생하는 문제를 모니터링하고 즉시 대응
3. 산출물: 설치 프로그램, 배포 문서
6. 유지보수(Maintenance)
- 목적: 배포된 소프트웨어가 지속적으로 안정적으로 동작할 수 있도록 문제를 해결하고, 필요에 따라 새로운 기능을 추가하거나 성능을 개선하는 단계
- 유형
1. 수정 유지보수(Corrective Maintenance): 버그 수정이나 오류 처리
2. 예방 유지보수(Preventive Maintenance): 미래의 문제를 방지하기 위한 예방적 조치
3. 적응 유지보수(Adaptive Maintenance): 운영 환경 변화에 맞추어 시스템을 수정
4. 완전 유지보수(Perfective Maintenance): 성능 향상 또는 신규 기능 추가
- 주요 활동
1. 버그 수정: 사용자나 시스템에서 발견된 문제 해결
2. 기능 개선: 새로운 요구사항에 따라 소프트웨어 기능 업데이트
3. 성능 개선: 시스템의 성능을 향상시키기 위한 최적화 작업
4. 산출물: 수정된 코드, 업데이트된 문서
SDLC의 **모델**
SDLC는 다양한 모델에 따라 적용될 수 있음. 프로젝트의 특성에 맞는 모델을 선택하는 것이 성공적인 소프트웨어 개발을 위한 핵심
1. 폭포수 모델(Waterfall Model)
- 단계가 순차적으로 진행되며 각 단계가 완료된 후에 다음 단계로 넘어가는 방식
- 절차: 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
- 장점: 각 단계가 명확하게 정의되어 있어 관리가 용이함
- 단점: 초기 요구사항 변경에 유연하지 않음
2. V-모델(V-Model)
- 폭포수 모델을 확장한 형태로 각 개발 단계바다 대응하는 테스트 단계가 있음
- 장점: 테스트를 개발 단계와 병행하여 품질을 높일 수 있음
- 단점: 폭포수 모델과 같이 유연성이 부족함
3. 프로토타입 모델(Prototype Model)
- 사용자의 요구사항이 불명확하거나 프로젝트의 요구사항이 자주 변경될 가능성이 있는 경우에 사용
- 장점: 명확한 요구사항 도출, 사용자 참여가 가능, 리스크 감소
- 단점: 시간과 비용의 증가, 비효율성
4. 나선형 모델(Spiral Model)
- 리스크 분석을 기반으로 소프트웨어를 점진적으로 개발하는 방법
- 절차: 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가
- 장점: 리스크를 줄이면서 대규모 프로젝트에 적합
- 단점: 복잡한 구조와 높은 비용
6. 반복적 모델(Iteration Model)
- 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 모델
5. 애자일 모델(Agile Model)
- 개발을 반복적이고 점진적으로 진행하며, 짧은 주기로 피드백을 받아 개선하는 방식
- 장점: 고객 요구 변화에 신속히 대응 가능, 빠른 피드백
- 단점: 대규모 프로젝트나 명확한 요구사항이 필요한 프로젝트에서는 효율성이 떨어질 수 있음
'Study-Note > 정보처리기사' 카테고리의 다른 글
[소프트웨어공학] 애자일 방법론(Agile Development) (1) | 2024.10.23 |
---|
- Total
- Today
- Yesterday
- 리액트
- JS
- 스택
- 선언
- 타이핑
- Call
- 객체
- 면접
- JavaScript
- 메서드
- 프로토타입
- Prototype
- 복제
- 팀러버덕
- react
- 생성자함수
- 프론트엔드
- 프로그래머스
- 면접대비
- this
- 파이썬
- 함수
- 프로퍼티
- 상속
- SET
- 코딩테스트
- 자바스크립트
- 타이핑효과
- Python
- 스터디
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |