IT_Report

[Process] 소프트웨어 개발방법론

SuperDev 2024. 10. 17. 09:38

소프트웨어 개발을 시작하기 까지에는 다양한 이해관계들이 존재합니다.

소프트웨어를 발주하는 회사에서는 어떤 사업을 시작할지, 해당 사업의 수익구조를 어떻게 만들지, 어떻게 서비스를 제공하지를 정합니다. 그리고 서비스를 제공할 시스템을 기획하고, 시스템을 만들거나 입찰공고를 띄웁니다.

 

"어떻게 소프트웨어 결과물을 만들 것인가?"

"어떤게 이 프로젝트를 수행할 것인가?"

"어떻게 전문 회사임을 어필할 것인가?"

 

그 다음 개발자들의 역할이 진행되는데, 요구사항을 분석하고, 설계하고, 개발하고, 구현하는 프로세스로 이어집니다. 찾아보니 프로세스 모델이 몇가지 있어 주요 내용을 정리하고, 해당 모델의 장단점에 대해서도 확인해보겠습니다.

 

 

1. 소프트웨어 개발 프로세스 모델 개요

전체 프로그램을 어떻게 개발할 건지 "개발방법"을 정합니다.

전체 그림을 그리고, 일을 어떻게 나눌 것인가? (설계) 
개발된 소스를 어떻게 합칠 것인가? (형상관리)
잘못된 것을 언제 체크하고, 피드백, 수정할 것인가? (테스트)  

 

  1. 폭포수 모델
    • 선형적이고, 순차적인 접근 방식이며, 각 단계에서 계획 및 문서화를 강조합니다.
    • 각 단계를 완료해야 다음 단계로 넘어갈 수 있고, 내용 전반이 크게 변경되지 않는다고 가정합니다.
    • 테스트는 개발 프로세스가 끝날 때 발생합니다.
    • 폭포수 모델의 확장 형태로 V모델이 있으며, 생명주기별로 테스트 단계가 존재합니다.
  2. 나선형 모델
    • 지속적인 반복과 피드백을 강조하는 위험 중심 소프트웨어 개발 방법론 입니다.
    • 프로세스가 계획, 위험 분석, 엔지니어링, 평가 총 4단계로 나뉩니다.
    • 프로세스의 각 반복은 위험을 완화하고 발생하는 문제를 해결하는데 중점을 둡니다.
    • 프로세스 커스텀이 가능하고, 특정 요구 사항을 충족하도록 설계할 수 있습니다.
  3. 애자일 방법론
    • 소프트웨어 개발에 대한 반복적이고 유연한 접근 방식입니다.
    • 프로세스가 끝날 때까지 기다리지 않고, 실행 가능한 소프트웨어를 조금씩 제공합니다.
    • 팀 구성원과 이해 관계자 간의 협업과 의사소통을 강조합니다.
    • 요구 및 변경 사항은 개발 프로세스 전반에 걸쳐 예상되고 통합됩니다.

 

 

2. 소프트웨어 개발 프로세스별 장단점

  • 폭포수 모델
    • 장점  |  단순 선형 모델로 이해가 쉽고 문서 체계화가 가능하여 진행 상황을 명확하게 파악할 수 있습니다.
    • 단점  |  시스템 동작을 후반에 확인 가능하기 때문에 변경사항이나, 수정에 많은 시간과 비용이 소요됩니다.

 

  • 나선형 모델
    • 장점 |  적응력이 뛰어나고 커스텀이 가능해 불확실성이 높은 복잡한 소프트웨어 개발에 적합합니다.
    • 단점 |  위험 분석 및 평가를 강조하면서 개발 프로세스가 느려질 수 있습니다.

 

  • 애자일 방법론
    • 장점  |  요구 사항이 자주 변경되는 프로젝트에 적합하며, 유연한 프로세스 진행이 가능합니다.
    • 단점  |  기존의 Waterfall 방법론보다 더 복잡하고 관리하기 어렵고, 시간이 오래 걸릴 수 있습니다.

 

 

 

3. 폭포수 모델

  • [요구분석  >  설계  >  개발  >  테스트  >  유지보수]의 단계로 진행되고,
  • 각 단계별로 철저하게 매듭을 짓고 다음 단계로 진행됩니다.
  • 높은 추상화에서 낮은 추상화로 개념 정립에서 구현까지 진행됩니다.
  • 단계별 검증이 완료된 산출물은 공식화된 변경 프로세스를 따라서 변경이 수행됩니다.
프로세스 산출물 주요활동
계획 계획서 1) 문제 정의, 타당성 분석, 일정 예측
2) 시스템의 성격 파악, 시간과 비용을 예측
3) 개발방법론과 필요한 자원에 대한 계획
4) 프로젝트의 정의, 해결방안 및 이익
요구분석 요구 분석서 1) DFD, 사료사전, 소단위 명세서
2) 사용자 요구나 주어진 문제를 정확히 분석하는 과정
3) 기능, 성능, 사용 용이성, 이식성 등 목표 시스템의 품질 파악
설계 기본 설계서
상세 설계서
1) 분석된 결과를 어떻게 프로그램으로 구현할 것인지 결정
2) 시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계
구현 프로그램 소스코드 1) 실제 원시코드 생성하는 단계
2) 코딩된 각 모듈은 테스트의 기본 단위
3) Unit Testing(단위 테스트) 실행, 모듈 테스트
시험 통합 프로그램 1) 테스트된 모듈들의 인터페이스 정의에 따라 잘 결합되었는지 시험하는 단계
(Integration Test)
인수 / 설치 운영가능 SW  

 

 

 

 

해당 게시물을 작성하면서, 좋은 개발 프로세스(기준, 메뉴얼)를 갖추는 것이 생산성에 큰 영향을 주겠구나, 라는 생각을 했습니다. 발주된 소프트웨어에 따른 개발방법론도 달라지고, 인적자원과 하드웨어에 대한 자원까지 생각보다 고려할 부분이 많겠다는 것을 느꼈습니다.

728x90