yeny_lab

[소프트웨어공학] 소프트웨어 개발 프로세스 주요 모델 6가지 요약정리

2022. 10. 23. 01:41·기타
728x90

ㅡ 소프트웨어 개발 프로세스 주요 모델 6가지

- 폭포수 모델 (Waterfall Model)

- 프로토타입 모델 (Prototype Model)

- 점증적 모델 (Incremental Model)

- 나선형 모델 (Spiral Model)

- 진화적 모델 (Evolutionary Model)

- 애자일 모델 (Ajile Model)

 

 

각 프로젝트는 적절한 계획을 가지고 진행되어야 비용을 최소화할 수 있다.

주요 개발 프로세스인 위 6가지 모델을 핵심 정리한다.

(꼭 위 6가지로 대표되는 것은 아니고, 나는 교수님께서 이렇게 정리해주었다)

 

어느 상황에 어느 모델이 적합한지, 각 모델의 특징과 장단점은 무엇인지 정리한다.

 

 


ㅡ 폭포수 모델 (Waterfall Model)

keyword : 엄근진

 

적합한 상황

- 국방, 원자력 등 대규모 시스템 공학 프로젝트에 적합하다.

- 요구사항이 명확하여 요구사항 변경이 잘 이루어지지 않는 경우에 적합하다.

- 자원이 한정 & 제약사항 있을 경우

- 위험성이 적고 기존 사례가 많은 경우

 

특징

- 단계가 선형적, 순차적이다.

- 단계간 중복이나 상호작용이 없다.

- 각 단계의 결과는 다음단계 시작 전 점검한다.

- 현재 단계의 결과는 바로 이전 단계로 피드백한다.

ㄴ 결과물 정의가 중요하다.

 

단점

- 진행 중 변경을 수용하기 어렵다.

- 단계 전환에 큰 노력이 든다.

ㄴ진행이 지연되기 십상이다.

- 많은 문서작업을 제대로 해야 한다.

- 재사용을 기대하기 어렵다.

 

 

 


ㅡ 프로토타입 모델 (Prototype Model)

keyword : 일단 대충 파악

 

적합한 상황

- 요구사항이 불명확하거나 지속적 검증이 필요한 경우 적절하다.

- 또는 프로젝트 수행 자체에 대한 결정이 어려울때 타당성 검증용도로 쓴다.

 

특징

- 폭포수 모델의 엄격함을 개선한 모델이다.

  폭포수 모델이 절차를 따르며 완벽히 단계를 수행하는 것과는 달리,

  프로토타입 모델은 '개선해감'을 목표로 한다.

- 시험적이며 빠르게 요구사항을 이해한다.

 

분류

- 실험적 프로토타입 (Throwaway, Experimental)

  : 일단 요구사항을 프로토타이핑하여 개발의 타당성을 검증한다.

  : 실제 개발시에는 이 실험적인 프로토타입은 폐기한다. 안쓴다. 검증용이다.

- 진화적 프로토타입 (Evolutionary)

  : 프로토타입을 (폐기하지 않고) 발전시켜간다.

  : 대표 예) 나선형 모델

 

 

 


ㅡ 점증적 모델 (Incremental Model)

keyword : 여러번 릴리즈, 빠른 출시

 

적합한 상황

- 시장에 빠르게 출시해야 할 경우에 적합하다. 이를 위해 여러 번 릴리즈한다.

- 소프트웨어 외의 여러 요소(하드웨어, UI)를 고려해야 할 때도 적합하다.

- 당연히 요구사항 확정이 어려운 경우에도 좋다.

 

특징

- 개발 사이클이 짧다.

ㄴ시장에 빠르게 출시하기 위해 여러번 릴리즈한다.

ㄴ각 릴리즈마다 개발의 초점을 집중할 수 있다.

 

릴리즈의 방법

- 새로운 기능을 추가하여 릴리즈 (점증적으로 릴리즈)

- 기존 기능의 완성도를 높여 릴리즈 (반복적으로 릴리즈)

 

 


ㅡ 나선형 모델 (Spiral Model)

keyword : 위험분석

 

적합한 상황

- 위험부담이 큰 대규모  시스템 개발에 적합하다.

아래와 같이 리스크를 줄이는 매커니즘을 가지기 때문이다.

나선을 돌 때마다 실패위험을 줄인다.

 

출처: https://itwiki.kr/w/나선형_모델

 

특징

- 반복적으로 개발과 테스트한다.

- 점증적으로 릴리즈하며 위험을 최소화한다.

- 위험 분석 단계가 중요하다.

 

진화 단계

- 계획 수립 : 목표, 기능 선택, 제약조건 결정

- 위험 분석 : 기능선택의 우선순위, 위험요소의 분석

- 개발

- 평가

 

단점 (유의점)

- 프로젝트 관리와 위험분석이 특히 중요하다.

 

 


ㅡ 진화적 모델 (Evolutionary Model)

keyword : 요구사항 분석 반복

 

적합한 상황

- 초기에 사용자의 요구사항을 파악하기 힘들거나 구현이 어려운 경우에 적합하다.

 

특징

- 진화함에 따라 요구사항이 뚜렷해진다.

- 요구사항 분석을 계속 반복하며 완성도를 높여나간다.

 

- UP(Unified Process)의 개발 프로세스를 가지며, UP를 여러번 반복하며 진화해간다.

  UP는 Inception, Elaboration, Construction, Transition의 4단계로 이루어진다.

  (도입, 정련, 구현, 전환(릴리즈))

  유의점은, 위 4단계에 따라 하는 일이 뚜렷하게 구분되지 않는다는 것이다.

  즉, 설계-구현-테스트-설치-운영 등의 과정이 전 단계에 걸쳐 자유롭게 일어난다. 

  

https://en.wikipedia.org/wiki/Unified_Process

 

 

점증적 모델과 진화적 모델의 차이가 뭐냐?

 

- 점증적 모델 : "설계말고 릴리즈만 반복함"

[요구사항수집-명세-계획]이 먼저 이루어진 뒤에, 그 계획 가지고 release1, release2, .. 를 만들어나간다. 즉 요구사항의 수집은 각 release에서 하는 것이 아니라 이미 완료된 상태에서 release를 여러번 해나간다.

 

- 진화적 모델 : "설계~릴리즈 자체를 반복하며 진화 (즉 UP를 여러번 반복하며 진화)"

[요구사항 분석]을 여러번 시행하도록 되어있다.

UP가 반복되는데, 각 UP에서 요구사항 분석을 매번 시행 가능하다.

recall) UP는 4단계로 이루어져있고, 그 4단계 하에 병렬적으로 개발프로세스(설계~릴리즈)가 진행된다

 

 


ㅡ 애자일 (Agile)

keyword : 빠른 개발

 

적합한 상황

- 비교적 소규모 프로젝트

- 빠른 개발 착수

- 단기간 내 요구사항 만족

 

 

특징

- 짧고 사소한 릴리즈를 자주 반복함을 추구

- 그래서 실사용자의 피드백을 자주 받게 된다.

- 설계에 대한 결정을 미루고, 더 많은 지식이 쌓였을 때 설계를 개선한다.

- 중간에 설계가 변경되어도 수용이 쉽다.

- 문서는 최소화하고, 코드 자체가 문서인 격이다.

- 형식적인 문서보다 지속적인 대화를 추구

 

 

애자일 프로세스의 방법은 크게 두가지로 분류한다

1. 익스트림 프로그래밍

2. 스크럼 방법론

 

아래서 정리한다.


① 익스트림 프로그래밍

- 최초의, 극단적인 애자일 프로세스

- 릴리즈 간격이 2~4주로 짧다.

- 메타포를 사용한다.

  (팀원 공동이 동일한 개념을 공유하고 이해하는 것이 중요하다. 형식&정형화된 것이 중요한 것이 아니다.)

- TDD

- 리팩토링 : 재구성하고 설계를 개선해나간다. (동작 변경 이야기가 X)

- 팀에 실사용자(고객)이 참여하여 상시 의문점을 받는다.

- 코딩 표준이 중요하다. 애자일은 설계가 약하기 때문에 표준을 통일해야 한다.

- 6단계로 이루어진다. Planning, Analysis, Design, Excecution, Warpping, Closure

 

② 스크럼 방법론

- 럭비에서 스크럼을 짜듯 협업하는 방식으로 애자일 방법론을 적용한다.

- 단결과 팀워크를 중요시한다.

- 구성요소는 다음과 같다

  : 백로그(할 일 목록)

  : 스프린트(Iteration 의미)

  : (매일 잠깐) 스크럼 회의

  : (스프린트 종료 후 산출물을) 리뷰

  : (방법론 자체에 대한) 스프린트 회고

 

1. 백로그(할 일 목록)를 만든다

2. sprint 팀이 플래닝미팅을 하며, 해당 sprint의 백로그가 주어진다.

4. 1~4주에 걸쳐 backlog에 대한 sprint 활동 (개발)을 진행한다.

    -> 이때, 매일매일 회의한다 (scrum meeting)

5. 스프린트 종료 후에는 산출물을 리뷰한다.

 


 

[소프트웨어공학]

여기까지 소프트웨어 개발 프로세스 6가지를 간단히 정리했다.

 

 

 

728x90

'기타' 카테고리의 다른 글

[소프트웨어공학] 클래스 모델링의 방법과 절차  (0) 2022.10.23
[소프트웨어공학] UML 다이어그램 중 클래스 다이어그램 이해하기  (0) 2022.10.23
모니터나 hdmi 없이 라즈베리파이 화면 원격으로 보기 | 그리고 wifi 자동 설정  (29) 2022.05.16
라즈베리파이 hdmi 모니터 연결 실패 | 해결과 아직 난제인 것...  (0) 2022.05.12
[Java] BOJ 2469 | 사다리타기  (0) 2022.04.05
'기타' 카테고리의 다른 글
  • [소프트웨어공학] 클래스 모델링의 방법과 절차
  • [소프트웨어공학] UML 다이어그램 중 클래스 다이어그램 이해하기
  • 모니터나 hdmi 없이 라즈베리파이 화면 원격으로 보기 | 그리고 wifi 자동 설정
  • 라즈베리파이 hdmi 모니터 연결 실패 | 해결과 아직 난제인 것...
히어로맛쿠키
히어로맛쿠키
  • 히어로맛쿠키
    yeny_lab
    히어로맛쿠키
  • 전체
    오늘
    어제
    • 분류 전체보기 (389)
      • 미분류글 (32)
        • ㅇ (2)
      • JAVA (84)
        • Effective Java (1)
        • Application (21)
      • 컴퓨터구조 & OS (28)
      • 자료구조 + 알고리즘 (43)
      • Database (12)
      • 컴파일러 (10)
      • 수학 (33)
        • 미분방정식 (12)
      • 데이터분석과 머신러닝 (38)
      • 기타 (59)
      • yyeeennyy (25)
  • 공지사항

    • ^o^/♡
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
히어로맛쿠키
[소프트웨어공학] 소프트웨어 개발 프로세스 주요 모델 6가지 요약정리
상단으로

티스토리툴바