본문 바로가기
카테고리 없음

소프트웨어 개발 프로세스 정리

by bazz 2022. 11. 11.
반응형

노트북과 프로그래밍 개발

1. 정의와 생명주기

소프트웨어 개발 과정에서 수행하는 일련의 활동들을 말하며 소프트웨어가 탄생하여 운용되고 유지보수를 거쳐 폐기되기까지 전 과정을 말합니다. 소프트웨어의 개발 생명주기는 인간의 탄생과 죽음 과정과 유사합니다. 소프트웨어 제품에 대한 계획으로부터 사용이 불가능할 때까지의 기간을 말하며 일반적으로 소프트웨어 생명주기는 개념조사, 요구, 설계, 구현, 테스트, 설치, 인도, 운영 단계를 포함하며 퇴거 단계도 포함된다. 소프트웨어 개발 생명주기 모델은 소프트웨어 개발 프로세스를 단순하게 모형화하여 정의한 것이다. 프로세스 모델을 정의하는 장점으로 소프트웨어 개발에 일관된 구조 제공, 프로젝트 관리를 위한 하부 구조 제공, 프로세스 개선 및 자동화 가능, 용어 표준화가 있다. 코드-수정 모델은 과거 초기 시절 적용 모델로 분석, 설계 없이 단지 코드 작성하여 고객이 만족할 때까지 수정하는 과정을 말하며 짧은 시간에 단순한 문제 해결에 적합하다. 프로세스가 구체적으로 정의되지 않으므로 관리 어렵고 문서화 과정 생략으로 유지보수 어렵다. 문제가 복잡한 현대 프로젝트에 적용 어렵고 최종 결과물은 사용자 요구 만족하지 않을 가능성이 크며 이를 유지보수 하는 비용 비싸다. 이 외에도 다양한 생명주기 모델이 존재한다.

2. 폭포수 모델, 병행 모델, 프로토타입 모델

폭포수 모델은 말 그대로 자연에서의 폭포처럼 순차적으로 진행되는 모델이다. 1970년 Royce 제안 후 폭포수 모델을 수정하고 확장한 다양한 모델이 출현했다. 폭포수와 같이 역으로 흐르지 않고 다음 단계로 순차적으로 진행되고 과거에 적용된 고전 모델 대부분 프로젝트에 기본 적용되는 모델입니다. 다른 모델들의 기본 구조가 되고 엄격한 문서 중심이며 전 단계 피드백에 의한 수정 가능하다. 문제 영역을 잘 알거나 이해하여 초기에 사용자 요구를 명확하게 파악할 수 있는 프로젝트에 적용합니다. 계획, 분석, 설계, 구현, 테스트, 유지보수 순을 반복합니다. 병행 모델은 병행 개발을 강조합니다. 분석 후 설계에서 병행 수행할 수 있는 서브 프로젝트로 분리하고 폭포수에 비해 개발 기간 단축이 가능합니다. 독립적인 서브 프로젝트로 분리 어려운 경우 적용이 어렵습니다. 그리고 여러 프로젝트를 분리해서 진행하다 마지막에 합쳐야 하므로 통합 비용이 많이 들게 됩니다. 프로토타입 모델은 개발 초기 사용자는 자신이 요구하는 시스템이 무엇인지 구체적으로 모르며, 이에 따라 개발자는 개발 시스템이 무엇인지 이해하는 것은 더욱 어렵습니다. 개발 초기 사용자 요구 파악의 어려움을 극복하기 위해 간단한 시제품 제작하고, 피드백 통해 사용자 요구를 명확히 파악합니다. 장점으로는 빠른 시간에 프로토타입 개발이 가능하고 프로토타입 통해 개발자와 사용자는 무엇이 개발되는지 이해 향상이 됩니다. 사용자는 프로토타입과 상호작용 통해 그들의 요구를 명확히 파악할 수 있게 됩니다. 

3. 반복/점증 모델, 나선형 모델

폭포수모델의 단점을 극복하기 위해 90년대 중반부터 적용된 순환적 개발 프로세스 모델이고 현대 프로젝트 특징을 가집니다. 장기간 프로젝트에서 사용자 환경, 사용자 요구 변화는 언제든 발생하며 이에 대한 수정 필요하므로 반복 개발하는 반복성이 있습니다. 거대하고 복잡한 프로젝트를 한 번에 완수하는 것은 어렵기 때문에 전체 기능을 나누어 가장 중요한 기능을 우선 개발하고 다른 기능들을 점증적으로 개발하는 점증성이 있습니다. 순차 폭포수 모델에 반복적인 (진화) 프로토타입 모델을 적용하여 점증적으로 소프트웨어를 개발, 통합, 완성하는 모델이고 프로젝트 초기에는 문제 영역의 이해 부족으로 요구분석에 가장 큰 비용이 듭니다. 프로젝트 후반부에 갈수록 이전 점증과 현재 점증과의 통합을 위한 테스트 비용 급격히 증가하게 됩니다. 나선형 모델은 1986년 Barry Boehm 제안하였고, 4가지 활동을 반복 수행합니다. 폭포수 특징, 반복/점증 특징, 위험분석의 특성이 있고 순차적이 아닌 반복적인 나선형으로 표현합니다. 각 나선의 주기별로 위험분석 활동을 강조하여 위험 요인을 분석하고 최소화하여 위험 부담을 줄입니다. 위험에 대한 대책 수립이 가능하여 프로젝트가 실패로 끝날 수 있는 위험에 대응합니다. 그 때문에 개발 비용이 많이 소요되고 시간이 오래 걸리는 대규모 프로젝트에 적용하는 것이 좋습니다. 

반응형

댓글