본문 바로가기

IT/Database

[DB] 소프트웨어 개발 프로세스


소프트웨어 공학이란 라이언트의 요구사항을 만족시키는 결함이 없는 소프트웨어를 주어진 시간과 예산 범위내에서 생성하는 것을 목적으로 하는 학문 분야.


고전적인 소프트웨어 개발방법으로 '폭포수 모델'이다. 폭포수 모델은 마치 각각의 과정이 폭포수 처럼 흘러내리는 것에 비유하여 붙여진 이름이다. 고전적인 방법이라고 해서 나쁜 것은 아니다. 이보다 더 단순한 모델은 없으며, 중/소규모의 프로젝트에는 아직까지 매우 쓸만하다. 하지만 폭포수 모델은 매우 큰 단점이 존재한다. 전 단계들의 산출물에 현 단계가 너무 큰 영향받는 것이 그것이다. 특히, 요구사항 조사/분석과정에서 사용자의 요구사항을 조사/분석가가 제대로 얻어내지 못하면 프로젝트가 큰 어려움을 격게 된다. 


waterfall_model.jpg


다음과 같은 장/단점이 존재한다.
  • 장점
    • 가장 오래 사용되어 폭넓게 사용되고 성공사례도 풍부하다.
    • 매우 단순하여 전체 과정의 이해가 쉽다.
    • 진행과정을 세분화하면 관리가 용이해 진다.
  • 단점
    • 초기 요구사항 조사/분석과정이 매우 어렵다.
    • 중요한 결함이 늦게 발견된다.
    • 전 단계가 마무리되어야 다음 단계로 진행된다. (직렬성)

폭포수 모델은 문서화 중심 모델이다. 클라이언트의 이해부족 또는 클라이언트가 이해한 것과 실제 문서와의 차이점을 최대한 없애는 것이 핵심이다.


나선형 모델은 폭포수 모델의 장점과 프로토타입 모델의 반복적인 특성을 결합시킨 모델이다. 특이한 것은 폭포수 모델 및 프로토타입 모델의 장점에 위험 분석 단계가 추가되었다는 것이다. 그래서 대규모 시스템 및 리스크가 큰 시스템 개발에 적합하다고 알려져 있다. 


spiral_model.jpg


다음은 장/단점이다. 
  • 장점
    • 요구사항 파악이 용이하다.
    • 리스크를 관리하므로 위험 부담이 감소된다.
    • 소프트웨어의 품질을 높일 수 있다.
  • 단점
    • 많은 시간이 소모된다. 
    • 프로젝트 일정이 길어지므로 프로젝트 관리의 어려움이 따른다.
    • 충분히 검증되지 않은 방법으로 성공사례가 적다.

기타 발전된 모델로는 다음과 같은 것들이 있다. 

  • 반복 개발 모델
  • RAD(Rapid Application Development)
  • 4세대 모델
  • 컴포넌트 어셈블리 모델