[소프트웨어공학] 소프트웨어 개발 프로세스 모델

👑 소프트웨어 개발 프로세스 모델

소프트웨어 개발 프로세스는 소프트웨어의 품질, 일정, 비용 관리, 협업 등을 체계적으로 관리하기 위한

중요한 도구이다. 프로세스가 존재하지 않는다면 비효율적인 커뮤니케이션, 품질 저하, 일정 지연, 비용 초과,

재사용성 및 확장성 부족, 위험 관리 부족, 결과물의 불확실성 등 심각한 문제가 발생할 수 있다. 이러한

문제들은 개발과 유지보수의 비용을 증가시키고, 프로젝트의 성공을 어렵게 만들 수 있다.

따라서, 소프트웨어의 체계적이고 효율적인 개발이 무척 중요하며, 이를 위한 다양한 프로세스 모델이

존재한다. 각 모델은 소프트웨어 개발의 특성, 요구 사항, 팀의 역량, 프로젝트의 규모와 복잡성에 따라

적절하게 선택되고 적용된다. 주요 소프트웨어 개발 프로세스 모델에는 다음과 같은 것들이 있다.


💡 폭포수 모델 (Waterfall Model)

폭포수 모델은 순차적 소프트웨어 개발 프로세스로, 개발 과정이 폭포수처럼 보이는 데서 이름이 붙여졌다.


특징

  • 전 단계가 수행되어 완료되기 전에는 다음 단계로 넘어갈 수 없다.

  • 각 단계의 결과는 다음 단계가 시작되기 전에 점검한다. (피드백)

  • 각 단계별 명확한 산출물을 문서화한다.

  • 폭포수 모델은 요구사항을 잘 이해하고 있거나, 요구사항의 변경이 한정적인 상황에 적합하다.

  • 프로세스 진행 후 변경/수용이 어려움

  • 초기 단계를 지나치게 강조할 경우 구현, 테스트가 지연됨

  • 각 단계의 전환에 많은 노력이 듦

  • 프로토타입과 재사용의 기회가 줄어듦

  • 필요 없는 다수의 문서를 생산할 수도 있음, 문서 작성에 비교적 긴 시간을 소요


💡 프로토타입 모델 (Prototyping Model)

프로토타입 모델은 고객의 요구사항을 위해 개발하려는 소프트웨어의 일부분을 프로토타입으로

만들어 사용자와의 의사소통 도구로 삼는 사용자 중심 개발 프로세스이다.

프로토타입을 빠르게 만들어 사용자에게 보여 주고, 평가를 받아 제품을 완성시켜 나가는 방법으로,

요구조건을 만족시킬 때까지 프로토타입을 반복하여 정제한다. 이 과정에서 프로토타입은 폐기되거나

재사용될 수 있다.


특징

  • 프로토타입 모델은 고객(사용자) 중심 개발 프로세스이다.

  • 고객의 요구사항이 자주 변경되거나 모호할 때 적합한 방법이다.

  • 프로토타입은 완전히 작동하지는 않으며, 모든 기능을 갖고 있지도 않는다.

  • 단지 고객의 요구사항을 이해하기 위해 간략하게 구현한 초기 모델에 불과하다. (요구사항 반영에 용이)


💡 점증적 모델 (Incremental Model)

점증적 모델은 전체 시스템을 여러 개의 작은 부분으로 나누어 점진적으로 개발하는 접근 방식이다.


특징

  • 각 인크리먼트는 독립적으로 개발 및 테스트되며, 최종 제품은 모든 인크리먼트를 통합하여 완성한다.

  • 기능이 부족하더라도 초기에 사용이 가능하다.

  • 제품 개발 동안에 모든 기능을 한꺼번에 구현할 수 없을 경우 유용하게 사용될 수 있다.

  • 마감일까지 제품을 완전하게 구현할 수 없을 경우 유용하다.


💡 나선형 모델 (Spiral Model)

나선형 모델은 소프트웨어 개발 과정에서 위험 관리를 중점적으로 다루는 개발 모델이다.


특징

  • 나선형 모델 = 폭포수 모델 + 프로토타입 모델, 점진적 모델과 비슷한 개념의 프로세스 모델이다.

  • 소프트웨어의 기능을 점증적으로 개발하여, 실패의 위험을 줄이고, 테스트가 용이하다.

  • 여러 번의 점증적인 릴리스를 거치는데, 계획수립 → 위험분석 → 개발 → 평가 사이클이 반복된다.

  • 릴리스를 거칠 때마다 위험분석을 실시하여 문제점들을 미리 해결한다.

  • 복잡한 대규모 시스템 개발에 적합하다.

  • 프로젝트 관리가 복잡하고 어려우며, 많은 시간이 소요된다.

Spiral model (Boehm, 1988) (WIKIPEDIA)


💡 V 모델 (V Model)

V-모델은 소프트웨어 개발 방법론 중 하나로, 폭포수 모델(Waterfall Model)의 확장된 형태이다.

이 모델은 개발과 검증 및 테스트가 밀접하게 연결된다는 점에서 이름이 붙여졌다. V 모양으로 시각화되며,

왼쪽은 시스템을 분석하고 설계하는 개발 단계, 오른쪽은 각 개발 단계에 대응하는 테스트 및 검증 단계를

나타낸다. 개발이 진행됨에 따라, 각 단계에서 바로 대응되는 테스트 단계가 있어 시스템의 품질을 지속적으로

보장한다.


특징

  • 폭포수 모델에 시스템 테스트와 검증 작업을 강조한 개발 프로세스이다.

  • 개발의 각 단계마다 상세한 문서화를 이용한 작업을 진행한다.


💡 애자일 프로세스 (Agile Process)

애자일(Agile) 프로세스는 소프트웨어 개발에서 유연성과 협업을 중시하는 방법론으로, 변화하는

요구사항에 빠르게 대응하며 제품을 점진적으로 개발하는 방식을 채택한다.


특징

  • 짧은 개발 주기를 반복하며 지속적으로 기능을 추가하고 개선해 나간다.

  • 고객과 지속적으로 소통하며, 각 반복 주기마다 고객의 피드백을 받아 개발에 반영한다.

  • 요구사항이 변경되는 것을 자연스러운 과정으로 받아들이고, 이를 신속하게 반영할 수 있는
    유연성을 갖춘다. 이는 프로젝트 진행 중 고객의 요구가 변하더라도 성공적으로 대응할 수 있는
    강점을 제공한다.

  • 필요한 문서만 최소로 작성하며, 원시 코드가 문서화의 실체이다.

  • 폭포수 모델과 같은 전통적 개발 프로세스와는 상반되며, 요구사항 변동이 심한 분야에 적합하다.

  • 유연한 개발 방식이 특징이며, 문제를 빠르게 진단하고 해결할 수 있다.


✔ 익스트림 프로그래밍 (eXtreme Programming, XP)

  • 애자일 개발 프로세스의 대표적인 모델이다.

  • 짧은 릴리스 주기(2 ~ 4주)로 개발한다.

  • 간결한 설계와 테스트 중심 개발을 특징으로 한다.

  • 빠르게 결과물을 제공해야 하거나, 고객과의 긴밀한 협업이 필요한 프로젝트에 적합하다.

  • 소규모 프로젝트에도 적합하다.

Planning and feedback loops in extreme programming (WIKIPEDIA)


✔ 스크럼 (Scrum)

  • 보통 1~4주 동안의 스프린트(Sprint)라는 반복 주기를 통해 작업을 수행하며, 매일 짧은
    스크럼 미팅에서 진행 상황을 공유한다.

  • 각 스프린트는 백로그(Backlog)라는 작업 목록에서 우선순위가 높은 기능을 선택해 개발한다.

  • 스프린트가 끝날 때마다 스프린트 리뷰(Sprint Review)를 통해 결과물을 검토하고,
    회고(Retrospective)에서 개선점을 논의한다.

Scrum Agile events, based on The 2020 Scrum Guide (WIKIPEDIA)


⭐ 정리 ⭐

Categories:

Updated:

Leave a comment