Software Development Process - 여러가지 소프트웨어 개발 방법론

dogbird·2024년 4월 19일
0

OOAD

목록 보기
6/12

앞에서 우리는 Agile, UP Software Development들을 살펴보았다. 이번 포스팅에서는 Iterative Model 말고 다른 개발 방법론도 함께 살펴보고자 한다.


Waterfall Model


Waterfall Model은 소프트웨어 개발에서 사용되는 전통적인 방법론 중 하나이다.이 모델은 개발 과정을 선형적으로 진행하는 방식으로, 다음 단계로 넘어가기 위해서는 이전 단계가 완료되어야 한다. 흔히 우리가 간단한 코딩 문제나 프로젝트를 진행할 때를 사용하면된다. 프로젝트 규모가 작아서 순차적으로 진행할 때 주로 사용한다. 주요 단계는 요구 분석, 설계, 구현, 테스트, 유지보수로 구성된다.

Waterfall Model의 장점으로는 각 단계가 명확하게 구분되어 이해하기 쉽고, 각 단계가 완료된 후 변경이 적게 발생한다는 점이 있다. 또한 문서화가 강조되어 개발 프로세스를 문서로 기록하는 것이 중요시된다.

하지만 Waterfall Model은 유연성이 낮고, 초기에 요구사항을 완벽하게 이해하기 어렵다는 한계가 있다. 또한 고객과의 상호작용이 제한되어 있어 변경 요청에 대응하기 어려울 수 있다. 이러한 한계로 인해 최근에는 Agile과 같은 반복적이고 유연한 방법론이 Waterfall Model을 대체하는 추세이다.


Iterative Model


Iterative Model로 잘 알려진것은 대표적으로 UP가 있다. UP(Unified Process)에서 정의된 소프트웨어 개발 생명주기는 각 단계를 가지고 있는데 각 iteration별로 Inception, Elaboration, Consturction, Transition 4단계를 가지고 있다. 각 단계를 살펴보면 아래와 같다.

  1. Inception (시작 단계):
  • 프로젝트의 범위와 비즈니스 목표를 이해하고, 프로젝트의 기술적, 경제적 가능성을 평가한다.
  • 고객의 요구사항과 기대를 파악하고, 초기 아키텍처 및 개발 계획을 수립한다.
  • 이 단계에서는 프로젝트의 필요성, 비용, 일정 등 타당성(feasibility)를 평가하고 프로젝트의 시작에 대한 결정을 내린다.
  1. Elaboration (설명 단계):
  • 요구사항을 상세하게 분석하고, 아키텍처를 설계하고, 기술적 위험을 식별하고 관리한다.
  • 초기 아키텍처와 설계를 검증하고, 시스템의 핵심 기능을 실제로 구현하는 것에 초점을 맞춘다.
  • 고객과의 상호작용을 통해 요구사항의 변화에 대응하고, 프로젝트의 일정 및 비용을 조정한다.
  1. Construction (구축 단계):
  • 소프트웨어 시스템의 주요 기능을 개발하고 구현한다.
  • 반복적인 개발 주기를 통해 추가적인 기능을 구현하고, 테스트를 수행하여 품질을 검증한다.
  • 개발된 기능을 고객에게 제공하고 피드백을 수렴하여 개선한다.
  1. Transition (전환 단계):
  • 개발된 소프트웨어를 최종 사용자에게 전달하고, 운영 환경으로 배포한다.
  • 사용자 훈련과 문서 작성, 유지보수 계획 수립 등을 포함하여 전환을 완료한다.
  • 프로젝트를 완료하고, 결과물을 평가하며, 향후 개선 및 유지보수를 위한 계획을 수립한다.

이러한 단계는 UP의 반복적이고 적응적인 특성을 반영하며, 소프트웨어 개발 생명주기를 체계적으로 관리하여 프로젝트의 성공을 촉진한다.

UP의 특징

  1. 반복적인 개발: 전체 개발 주기를 여러 개의 작은 반복 주기로 나누어 진행하고 각 반복 주기는 일정한 시간 동안 요구사항 수집, 설계, 구현, 테스트 등의 활동을 포함한다.'

  2. 위험 중심의 개발: 위험 요소를 식별하고, 초기에 위험을 줄이기 위한 방안을 모색한다. 이를 통해 초기에 문제를 해결하고, 후속 반복 주기에서 더 나은 제품을 제공할 수 있도록 한다.

  3. 고객 중심의 개발: 고객과의 지속적인 상호작용을 강조하여 요구사항의 변화에 유연하게 대응할 수 있도록 한다.

  4. 반복적인 제품 출시: 각 반복 주기가 끝날 때마다 실행 가능한 제품 또는 프로토타입을 제공하여 고객 피드백을 수렴하고 개선할 수 있다.

  5. 문서 중심의 접근: UP도 워터폴 모델과 마찬가지로 문서화를 중요시한다. 각 반복 주기의 결과물과 결정 사항은 문서로 기록된다.

  • UP의 개발 흐름

  • 전체적인 개발 사이클

Agile model

Agile model은 Scrum, eXtreme Programming및 Crystal Clear를 포함한 방법론을 통한 민첩한 소프트웨어 개발이 가능하다. Agile model은 반복을 통한 점진으로 다양한 장점이 있다. 작동가능한 소프트웨어를 초기부터 계속 확인 가능한 것, customer와 개발자의 긴밀한 상호협력, 팀의 자기 조직화 가능, 뒤늦게 customer가 요구하거나 다른 변화하는 환경에 적응 하는것에 집중 할 수 있음 등이 장점이다. 이렇듯 Agile은 팀워크, 적응성, customer와 가까운 상호 작용에 포커스 되어있다.

Agile과 UP의 공통점과 차이점

위에서 살펴본 Agile과 UP는 모두 반복적인 개발 주기를 갖고 고객의 요구사항에 대한 지속적인 피드백을 중요시 하는 등 공통점도 있지만 차이점도 있다. Agile과 UP가 어떤점이 다른지 알아보자.

  • 반복적인 개발 주기를 갖는다.
    - Agile : 짧은 개발 주기를 가지고 있어서 주로 2~4주 정도의 스프린트를 사용한다.
    - UP : 보다 긴 개발 주기를 가지며, 일반적으로 몇 달에서 몇 년까지의 주기를 가질 수 있다.

  • 고객의 요구사항에 대한 지속적인 피드백을 중요시 한다.
    - Agile : 고객의 요구사항을 우선적으로 고려하여 작은 기능을 빠르게 제공하는 것을 강조한다.
    - UP : 초기 요구사항 수집과 분석을 통해 고객의 요구사항을 이해하고, 그에 따라 소프트웨어를 개발하는 방식을 채택한다.

  • 변화에 유연하게 대응하기 위한 프로세스를 가지고 있다.
    - Agile: 변경에 대한 빠른 응답이 가능한 프로세스를 제공하여 지속적인 개선과 변경을 촉진한다.
    - UP: 각 단계에서 반복적인 요소를 가지고 있어서 변경에 대한 대응이 가능하다.
  • 문서화를 중요시 한다.
    - Agile : 경량화된 문서화를 선호하는 경향이다.
    - UP : 각 단계에서 상세한 문서화를 강조하여 프로젝트의 투명성과 이해를 높이는데 중점을 둔다.

이러한 차이점들이 있지만, 두 방법론은 모두 팀 간의 협업을 강조하고 빠른 변화에 대응하기 위한 유연한 접근 방식을 제공하여 프로젝트의 성공을 도모한다.


Model - Driven Development


-> 모델 주도적인 방법론
Model - Driven 개발은 소프트웨어 개발 방법론 중 하나로, 소프트웨어 시스템의 설계, 구현 및 테스트를 모델 중심으로 수행하는 접근 방식이다. MDD에서는 소프트웨어 시스템의 모델을 중심으로 개발 과정을 추상화하고, 이를 바탕으로 자동화된 도구를 사용하여 코드를 생성하는 방식으로 개발이 이루어진다.

MDD에서 사용되는 두 가지 주요 모델은 다음과 같다:

  1. PIM (Platform-Independent Model):
  • 플랫폼에 독립적인 모델이다.
  • 시스템의 기능, 비즈니스 프로세스, 데이터 모델 등과 같은 고수준의 추상화를 포함한다.
  • 구체적인 기술이나 구현에 의존하지 않고, 시스템의 요구사항과 기능에만 집중한다.
  • PIM은 시스템의 본질적인 구조와 동작을 설명한다.
  1. PDM (Platform-Definition Model):
  • 플랫폼에 종속적인 모델이다.
  • 특정 플랫폼 또는 기술 스택에 맞춰서 시스템의 구현 세부 사항을 정의한다.
  • 코드 생성이나 실행 가능한 소프트웨어로 변환될 수 있는 구체적인 표현을 제공한다.
  • PDM은 PIM의 추상화를 구체적인 기술적인 구현으로 변환하는 역할을 한다.

Model - Driven에서 모델은 시스템의 추상개념으로 다양한 추상화 수준에서 모델을 생성하여 가치를 제공하고 가장 작은 구현 세부 사항까지 개념적 관점을 형성한다. 코드가 자동으로 생성되는 도메인 모델을 만들며 인개발자는 플랫폼 정의 모델(PDM)과 결합된 플랫폼 독립적인 모델(PIM)을 만들어 실행코드를 생성한다. PIM은 기능적 요구사항을 숭수하게 구현한 반면 PDM은 플랫폼 세부 사항과 품질 특성을 다룬다.

profile
개발세발 개발자. 멋쟁이가 될 때 까지

0개의 댓글