SDLC는 소프트웨어 개발 전 과정을 하나의 생명주기로 보고 각 단계별로 나누어 필요한 절차 및 방법론 등을 정의하는 방법입니다. SDLC는 개발 타당성 검토에서 분석, 설계, 개발 및 테스트 유지보수까지 관리하는 것으로 다양한 방법론이 있습니다.
SDLC 소프트웨어 개발 생명주기
SDLC는 아래의 그림과 같이 SW의 개발 시 요구사항 정의 단계부터 Life Cycle에 따라 전 과정을 단계별로 나눈 생명주기 모델입니다. 각 개발 주기에 대해 정리해보겠습니다.
타당성검토
사용자 요구사항을 정의하고 세부 명세에 대해 개발 적합성을 검토하는 단계입니다. 기업의 경우 IT 서비스 개발에 투자를 결정하기 전 ROI 분석을 통해 효과를 평가하는 것을 예로 들 수 있습니다.
분석단계
시스템개발에 대한 요구사항을 식별하고 상세화하는 단계입니다. 만약 기업에서 사용하는 IT 서비스를 개발한다면 내부 프로세스를 식별하고 개선방향에 따라 데이터 개념도나 비즈니스를 모델링하는 것을 의미합니다.
설계단계
분석된 요구사항에 기초하여 소프트웨어 아키텍처 및 개발 플랫폼 도구 등을 세부적으로 계획하는 단계입니다. 기본설계서나 상세설계서가 산출물로 나오게 됩니다.
개발단계
실제 개발 인력이 투입되어 소스코드 작성하고 Unit Test를 수행하여 요구사항에 만족하는 프로그램을 개발합니다. 프로젝트 형태에 따라 애자일과 같은 방법론을 활용할 수 있습니다.
시험단계
개발 시스템에 대한 검증(Verification) 및 확인(Validation)을 수행하는 단계입니다. 개발단계에서 릴리즈되는 소프트웨어를 주기적으로 검증합니다.
운영 및 유지보수
시험단계에서 발견된 문제점을 수정완료하여 최종적으로 운영팀에 이관하는 단계입니다. 필요시 기능추가 등 인수완료 후 발생하는 모든 개발활동을 관리합니다.
SDLC 유형
SDLC 유형에는 전통적으로 많이 사용하는 폭포수모델 외에 프로토타이핑 모델, 나선형모델, 점증적모델 등이 있습니다. 각 유형에 대해 간략히 정리해보겠습니다.
폭포수 모델
전통적으로 많이 사용되는 개발 모델입니다. 순차적 하향식으로 개발이 진행되는 생명주기 모델로서 다음과 같은 장단점이 있습니다.
- 장점: 이해하기 쉬움, 다음 단계 진행 전에 결과 검증, 관리가 용이함
- 단점: 요구사항 도출 어려우며 설계, 코딩, 테스트가 지연될 수 있다. (문제점의 발견이 늦다)
프로토타이핑 모델
시스템의 핵심적인 기능을 먼저 만들어 평가한 후 그 결과에 따라 점진적으로 구현하는 개발 방법입니다. 초기 요구사항 도출이 용이하며 분석 및 개발시 의사소통이 용이한 장점이 있습니다. 하지만 초기 원형에 문제점이 발견되었을 경우 폐기하여 조기에 중단할 수 있는 것이 특징입니다.
나선형 모델
폭포수 모델이 문제점의 발견이 늦다는 단점이 있지만 프로토타이핑은 요구사항을 빠르게 반영하여 개선할 수 있는 장점이 있습니다. 이 두 모델의 장점만을 도입한 것이 나선형 모델입니다.
위의 그림과 같이 목표설정 > 위험분석 > 개발 및 검증 > 고객평가를 주기적으로 반복해 나가면서 고객의 요구사항을 만족시켜 이에 일치하는 제품을 개발할 수 있는 장점이 있습니다. 하지만 반복된 분석과 개발로 인해 관리가 어렵다는 단점이 있기도 합니다.
점증적 모델
소프트웨어의 기능을 세분화하여 여러번 나누어 시스템을 릴리즈하는 방법입니다. 기능을 분해해 점차 추가개발하는 Incremental 방식과 전체기능을 개발하고 점차 심화 기능으로 확장하는 Iterative 방식으로 나뉩니다.
RAD 모델
2~3개월의 짧은 개발주기 동안 Visual Tool 이나 코드 생성 툴등을 활용하여 빠르게 개발하는 방법입니다.
클린룸 모델
반도체 공정과 같이 엄격하고 정형화된 분석 설계 방법을 통해 개발하는 방법론입니다. 수학적 분석을 통해 사전에 결함을 완벽하게 제거하는 것을 목표로 합니다.
SDLC 방법론은 예전 방식이라고 사용하지 않고 최신방식이 꼭 좋다고 고집할 필요는 없습니다. 개발하는 소프트웨어의 특징에 맞게 적절히 도입하는 것이 중요합니다. 이상으로 SDLC 소프트웨어 개발 생명주기 개념 및 유형에 대해 알아보았습니다.
댓글