일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- TiL
- 4기
- HTML
- 오블완
- defee
- 나만무
- CSS
- 리액트
- 크래프톤 정글
- Java
- 모션비트
- 코드트리
- corou
- 자바
- 스택
- userprog
- 핀토스
- Vue.js
- JavaScript
- 큐
- 시스템콜
- 티스토리챌린지
- 알고리즘
- 크래프톤정글
- Flutter
- 사이드프로젝트
- 자바스크립트
- pintos
- 백준
- 소켓
- Today
- Total
미새문지
24.10.15 day79 소프트웨어 생명주기 본문
소프트웨어 생명주기(SDLC, Software Development Life Cycle) 모델
소프트웨어 생명주기는 소프트웨어 개발의 전체 과정을 체계적으로 관리하기 위한 프레임워크이며, SDLC는 소프트웨어 프로젝트의 계획, 개발, 유지보수 및 폐기에 이르는 모든 단계를 포함한다.
SDLC 단계
- 요구사항 분석(Requirements Analysis): 고객이나 사용자의 요구사항을 수집하고 분석하여 소프트웨어가 해결해야 할 문제와 기능을 명확히 정의한다.
- 설계(Design): 요구사항을 바탕으로 소프트웨어의 전체 구조와 세부적인 시스템 및 모듈 설계를 수행한다.
- 구현(Implementation): 설계에 따라 실제 코드를 작성하고, 소프트웨어를 개발한다.
- 테스트(Testing): 구현된 소프트웨어가 요구사항을 충족하고 오류 없이 작동하는지 검증한다.
- 배포(Deployment): 테스트가 완료된 소프트웨어를 실제 운영 환경에 배포한다.
- 유지보수(Maintenance): 소프트웨어가 배포된 후 발생하는 문제를 수정하고, 새로운 요구사항을 반영하여 개선 작업을 수행한다.
SDLC의 목적은 개발 과정을 구조화하여 시간과 비용을 절감하고, 소프트웨어 품질을 높이며, 개발 과정을 명확하게 관리하는 데 있기 때문에 작업에 맞춰서 개발 방식을 찾아 사용해야 한다.
소프트웨어 생명주기 모델 종류
폭포수 모델(Waterfall Model)
폭포수 모델은 각 개발 단계를 순차적으로 진행하는 방식이다.
개발할 때 이전 단계가 완료된 후에만 다음 단계로 넘어갈 수 있으며, 각 단계는 명확하게 구분된다.
폭포수 모델의 주요 단계
- 요구사항 분석: 고객의 요구사항을 수집하고 분석하여 소프트웨어의 기능과 목표를 정의한다.
- 설계: 요구사항을 바탕으로 소프트웨어의 전체 구조와 세부적인 설계를 진행한다.
- 구현: 설계를 바탕으로 실제 소프트웨어 코드를 작성하여 구현한다.
- 테스트: 개발된 소프트웨어를 테스트하여 오류를 발견하고 수정한다.
- 배포: 소프트웨어를 사용자에게 배포하고 운영 환경에 설치한다.
- 유지보수: 소프트웨어가 운영되면서 발생하는 문제를 수정하고 기능을 개선한다.
폭포수 모델은 각 단계를 완료해야만 다음 단계로 넘어갈 수 있어 체계적으로 진행할 수 있지만, 중간에 요구사항이 변경되기 어렵다는 단점이 있다.
프로토타이핑 모델(Prototyping Model)
프로토타이핑 모델은 최종 제품을 만들기 전에 시제품(프로토타입)을 빠르게 개발하여 사용자에게 보여주고 피드백을 받는 방식이다. 이 모델은 특히 요구사항이 명확하지 않거나 자주 변경될 가능성이 있을 때 유용하다.
프로토타이핑 모델의 주요 단계
- 요구사항 수집: 기본적인 요구사항을 파악하여 프로토타입을 제작할 수 있는 기초를 마련한다.
- 빠른 프로토타입 개발: 요구사항을 바탕으로 소프트웨어의 초기 버전을 빠르게 개발한다. 이 프로토타입은 완전한 기능을 갖추지는 않지만, 사용자가 시스템의 주요 기능을 미리 경험할 수 있다.
- 사용자 평가 및 피드백: 사용자가 프로토타입을 사용해보고 이에 대한 피드백을 제공하며, 요구사항이 더 구체화되거나 변경될 수 있다.
- 프로토타입 개선: 사용자 피드백을 반영하여 프로토타입을 개선하고, 반복적으로 수정한다.
- 최종 시스템 개발: 프로토타입이 사용자 요구사항에 맞게 발전하면, 이를 바탕으로 실제 시스템을 개발한다.
프로토타이핑 모델은 사용자 요구가 명확하지 않거나 요구사항이 빈번하게 변경되는 프로젝트에 적합하지만, 프로토타입을 지속적으로 수정해야 하기 때문에 최종 개발이 지연될 수 있고 초기 비용이 증가할 수 있다.
나선형 모델(Spiral Model)
나선형 모델은 폭포수 모델과 프로토타이핑의 장점을 결합한 방식이며, 이 모델은 반복적인 접근을 통해 개발을 진행하고 프로젝트의 리스크를 줄이는 데 중점을 둔다.
나선형 모델의 주요 특징
- 반복적 과정: 개발은 여러 차례 반복되는 사이클로 이루어지며, 각 사이클에서 요구사항 분석, 설계, 구현, 테스트가 이루어진다. 이러한 반복을 통해 점진적으로 소프트웨어를 발전시킨다.
- 리스크 분석: 각 반복 주기마다 리스크를 분석하고, 이를 해결하기 위한 방안을 계획하며, 이를 통해 프로젝트의 실패 가능성을 줄일 수 있다.
- 고객 피드백: 각 반복 주기 후 고객의 피드백을 반영하여 다음 사이클에 적용할 수 있어, 요구사항 변경에도 유연하게 대응할 수 있다.
나선형 모델의 주요 단계
- 계획 수립: 목표 설정, 프로젝트 계획, 리소스 할당 등이 이루어진다.
- 리스크 분석: 잠재적인 위험 요소를 식별하고 이를 해결하기 위한 전략을 수립한다.
- 개발 및 검증: 소프트웨어의 설계, 구현, 테스트를 진행한다.
- 고객 평가: 개발된 결과물을 고객이 검토하고 피드백을 제공한다.
이 과정을 반복하면서 점진적으로 소프트웨어를 완성해 나가는 방식으로, 특히 대규모 프로젝트나 복잡한 요구사항이 있을 때 유리하지만, 단계를 계속 반복하기 때문에 관리와 문서화가 복잡해질 수 있다. 그리고 그에 따른 시간과 비용도 많이 소모될 수 있어 주의해야 한다.
반복적 모델(Iterative Model)
반복적 모델은 소프트웨어 개발을 여러 번의 반복 주기로 나누어 진행하는 방법론이며, 초기 단계에서 시스템의 일부 기능만을 개발하고, 이를 점진적으로 개선하고 확장해 나가는 방식이다.
각 반복 주기에서 요구사항을 점검하고, 설계, 구현, 테스트를 반복하며, 최종 시스템에 가까워지게 된다.
반복하는 개발이라 프로토 타이핑이나 나선형 모델과 비슷할 수 있지만, 각 방식과는 다른 목적으로 개발된다.
반복적 모델의 주요 특징
- 점진적 개발: 소프트웨어를 한 번에 완성하지 않고, 여러 번의 반복을 통해 점진적으로 발전시켜 나가며, 각 반복 주기에서 일부 기능을 개발하고 테스트한다.
- 피드백 기반 개선: 각 주기에서 개발된 결과물을 사용자나 이해관계자가 평가하고 피드백을 제공하면, 그 피드백을 바탕으로 다음 반복에서 개선된다.
- 리스크 감소: 프로젝트 초기에 모든 요구사항을 완벽하게 정의하지 않아도 되므로, 개발 과정에서 발생하는 변경사항에 유연하게 대응할 수 있으며, 각 반복에서 중요한 리스크를 점진적으로 해결할 수 있다.
반복적 모델의 주요 단계
- 계획 수립: 개발 목표와 프로젝트 계획을 수립한다.
- 요구사항 분석: 사용자 요구사항을 수집하고 문서화한다.
- 설계: 시스템 아키텍처와 모듈을 설계한다.
- 구현: 코딩을 통해 모듈을 개발한다.
- 테스트: 시스템의 기능을 통합 테스트하여 검증한다.
- 피드백 및 개선: 사용자 피드백을 받고 요구사항을 수정한다.
- 새로운 반복 시작: 개선된 요구사항으로 새로운 반복 주기를 시작한다.
반복적 모델은 복잡한 시스템이나 요구사항이 자주 변경되는 프로젝트에서 적합하며, 초기 단계에서 완전한 요구사항을 알기 어려운 경우에 유리하지만, 반복적인 생명주기의 특징으로 시간과 비용이 많이 투자되며, 초기 단계에 요구사항이 명확하지 않으면, 각 주기에서 추가 작업이 계속 발생해 범위가 커질 수 있기 때문에 주의해야 한다.
'개발 TIL' 카테고리의 다른 글
24.10.19 day81 SSL (0) | 2024.10.20 |
---|---|
24.10.18 day80 정보처리기사 오답 학습 (1) | 2024.10.19 |
24.10.11 day78 모듈 번들러 (1) | 2024.10.11 |
24.10.10 day77 Next.js 폴더 구조, 프론트엔드 시점의 SaaS (3) | 2024.10.10 |
24.10.08 day76 Next.js (1) | 2024.10.08 |