소프트웨어 공학에서의 프로세스는 소프트웨어 제품을 개발하기 위한 계획, 실행, 평가 및 관리의 일련의 단계나 절차를 나타낸다. 이러한 프로세스들은 소프트웨어를 효과적으로 개발하고 유지보수하기 위한 체계적이고 구조화된 방법을 제공한다. 소프트웨어에서 프로세스는 방법은 왜 필요한걸까?
프로세스는 개발 과정을 체계적으로 관리하여 프로젝트의 효율성을 향상시키고 개발자 간의 협업을 촉진시킨다.
프로세스는 프로젝트 위험을 식별하고 관리하여 예상치 못한 문제를 최소화하고 프로젝트의 성공 가능성을 높인다.
각 단계에서의 검증과 테스트를 통해 제품의 품질을 유지하고 개선하여 최종 제품의 품 질을 보장한다.
CMMI(Capability Maturity Model Integration), 통합성숙모델은 조직의 프로세스 개선 활동을 효율적으로 지원하기 위한 모델이다.조직의 개발능력이 얼마나 성숙되었는지를 평가할 수 있도록 만든 모델이라 할 수 있다. 전 세계의 여러 국가에서 도입하고 있는 산업 표준이다.
CMMI V2.0 모델은 뷰(View), 프랙티스 영역(Model), 프랙티스 그룹(Practice Group), 프랙티스(Practice) 및 정보자료(Informative Material) 이렇게 5개의 컴포넌트로 구성되어있고 사전에 정의된 모델 뷰를 사용할 수도 있고 사용자에 의도에 따라 자체적으로 뷰를 구성하여 프로세스 개선을 진행할 수도 있다.
이제 어떤 프로세스 방식들이 있는지 알아보자.
폭포수 모델은 전통적인 소프트웨어 개발 방법 중 하나로, 일련의 선형하고 순차적인 단계로 구성됩니다. 주요 단계는 요구 사항 분석, 설계, 구현, 테스트 및 유지보수다. 각 단계는 이전 단계의 결과물을 바탕으로 진행되며, 한 번 시작된 후에는 거의 변경되지 않습니다. 이러한 선형적인 접근은 초기에 요구 사항을 완전히 이해하고 정의하는 것을 가정하며, 변경이 발생할 경우에는 비용이나 시간이 많이 소요될 수 있다. 폭포수 모델은 간단하고 이해하기 쉽지만, 요구 사항의 변화에 적응하기 어렵고 유연성이 부족한 단점을 가지고 있다.
RAD(Rapid Application Development) 모델은 빠른 프로토타입을 사용하여 소프트웨어를 빠르게 개발하는 방법론이다. 이 모델은 초기에 작은 규모의 프로토타입을 빠르게 개발하고 이를 고객에게 제공하여 피드백을 받는다. 그 후 반복적인 개발 단계를 통해 프로토타입을 확장하고 완성도를 높여 최종 제품을 만들어간다. RAD 모델은 빠른 시간 내에 시스템을 개발하고 변경에 유연하게 대처할 수 있으며, 고객의 요구사항을 적극적으로 수용할 수 있는 장점을 가지고 있다. 그러나 프로토타입에 대한 충분한 검증이 이루어지지 않을 경우 품질 문제가 발생할 수 있다.
프로토타이핑 모델은 사용자의 요구사항을 수집하고 이를 기반으로 초기 버전의 소프트웨어 프로토타입을 빠르게 개발하는 방법론이다. 이 모델은 사용자와 개발자 간의 의사소통을 촉진하고 개발 초기부터 피드백을 받아 제품의 요구사항을 명확히 이해하는 데 도움이 된다. 프로토타입은 일반적으로 기능이 제한적이지만 사용자가 원하는 기능을 시연하고 테스트할 수 있는 정도의 기능을 포장한다. 이후에는 사용자 피드백을 바탕으로 프로토타입을 수정하고 개선하여 최종 제품을 개발한다.
그럼 이 방법론의 장단점은 무엇이 있을까?
증분적 모델은 전체 시스템을 여러 개의 작은 부분으로 나누어 개발하는 방법론으로, 각각의 부분은 독립적으로 개발되어 완성된 후 전체 시스템으로 통합된다. 이 모델은 전통적인 폭포수 모델의 단점을 보완하고, 초기에 기능이 제한된 버전을 빠르게 제공하여 고객의 요구사항을 더 잘 반영할 수 있다.
랜덤채팅 서비스를 구현한다고 생각하고 워터풀 모델의 1단계인 요구사항 명세를 해봤다.
GG