Information Technology

소프트웨어 개발 프로세스 모델 6가지 종류 정리

coinAA 2021. 10. 18.

 

목차

 

인사말

이 글은 소프트웨어 개발 프로세스 모델 6가지 종류에 대해 정리한 글입니다. 개발 프로세스 모델은 무엇이며, 종류와 특징 징, 장점, 단점을 포함한 각 모델들의 개발절차에 대해 설명합니다. 본 글을 정독할 시 소프트웨어 개발 프로세스를 이해할 수 있습니다.

 

 

정보처리기사 실기 C언어 코딩 기출변형 문제 #1

코딩 문제의 경우 같은 문제를 여러 번 풀다 보면 답이 머리에 기억되어 새로운 문제가 필요하게 되는 순간이 옵니다. 도움이 되게 하고자 여러 C언어, JAVA, Python 문제를 변형 시키고 직접 컴파일

fullmoon-system.com

 

 

FullMoon System

 

fullmoon-system.com

 

    소프트웨어 개발 프로세스란?

     

    소프트웨어 프로세스 개념 및 특징 / 바람직한 소프트웨어란?

    목차 소프트웨어 프로세스의 개념 소프트웨어 개발 프로세스(software development process)는 소프트웨어 제품을 개발하기 위해 필요한 과정 또는 구조이다. 비슷한 말로 소프트웨어 생명 주기와 

    onecoin-life.com

     

    소프트웨어 개발 프로세스 모델이란?

    각 요소들을 서로 연결하여 일련의 소프트웨어 개발 프로세스를 정의한 것이다.

    소프트웨어 개발 프로세스 모델은 SW 개발 생명주기(SDLC, Software Development Life Cycle)를 기반으로 정해진다.

     

    소프트웨어 개발 수명 주기 (Systems development life cycle)

    소프트웨어 개발 수명 주기란 시스템 엔지니어링, 정보 시스템, 또는 소프트웨어 공학에서 정보 시스템을 계획, 개발, 시험, 채용하는 과정을 뜻하는 용어이며, 소프트웨어 개발 생명 주기는 하드웨어부터 소프트웨어까지 넓은 범위에 적용할 수 있다. 

     

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

    폭포수 모델

    폭포수 모델은 소프트웨어의 개발 과정을 요구분석, 설계, 구현, 통합, 운영 및 유지보수의 단계로 구분하여 순차적으로 진행하는 프로세스 모델이다.

    특징

    • 가장 오래되고 널리 사용된 프로세스 모델이다.
    • 각 단계가 다음 단계 시작 전에 끝나야 한다.
    • 직능[각주:1] 중심의 프로젝트 조직이 가능하며, 결과물 정의가 중요하다.
    • 통상적으로 크고 복잡하며 장기간 지속되는 프로젝트에 사용하는 것이 적합하다.

    단점

    • 초기 단계들이 지나치게 강조되어 불필요한 문서들의 작성이 요구되어 설계와 코딩 및 테스팅 지연 가능성이 있다.
    • 이미 구현 단계가 진행되고 있다면 요구에 대한 변경을 수용하기 어렵다.
    • 프로토타입[각주:2]이 없기 때문에 최종 결과가 나오기 전까지는 어떤 결과물이 나올지 알 수 없기 때문에 중간에 프로젝트를 취소하게 된다면 큰 손실 초래할 수 있다.

    폭포수 모델의 단계별 과정
    그림으로 표현한 폭포수 모델의 단계별 과정

    V 모델

    V 모델은 폭포수 모델 + 테스트(검증) 단계 추가 확장한 모델이다. 산출물 중신의 폭포수 모델과는 다르게 각 개발 단계를 검증하는데 초점을 둔 것이 V 모델이다.

    장점

    • 프로세스가 단순하여 초보자가 쉽게 적용 가능하다.
    • 중간 산출물이 명확하여 관리하기 편리하고 좋다.
    • 코드 생성 전 충분한 연구와 분석 단계 시간이 주어진다.

    단점

    • 불필요한 다종의 문서를 생산할 가능성이 있다.
    • 프로세스 진행 과정에 변경될 수 있는데 이를 수용할 수 없다.
    • 테스트 작업이 프로젝트 후반, 즉 시스템이 완성된 후에 시작된다.

    V모델의 단계별 과정
    그림으로 표현한 V모델의 단계별 과정


    프로토타이핑 모델

    프로토타입은 대량 생산에 앞서 미리 제작해 보는 원형 또는 시제품으로, 제작물의 모형이란 뜻이다.

    정식 절차에 따라 완전한 소프트웨어를 만들기 전에 사용자의 요구를 받아 일단 모형을 만들고 이 모형을 사용자와 의사소통하는 도구로 활용한다.

    쉽게 말하자면 아파트를 건설하기 전에 모델 하우스나 작은 미니 모델링하여 건축물을 만들어보는 것이라고 생각하면 된다.

    장점

    • 프로토타입은 기능이 부족하더라도 초기에 사용 교육 가능하고 부족한 부분도 피드백 반영이 가능하여
      의사소통 도구로 활용 가능
    • 반복된 요구사항 정의를 통해 사용자 요구가 충분히 반영된 요구 분석 명세서 작성
    • 초기 프로토타입 사용을 통한 새로운 요구사항 발견 가능
    • 프로토타입 사용을 통한 완성품의 예측 가능
    • 빠른 개발을 요구하는 분야에 적용이 적합하다.
    • 컴포넌트[각주:3] 개발 방법에 일부 적용된다.
    • 처음 시장에 내놓는 소프트웨어는 시장을 고속화하여 형성시킬 수 있다.
    • 자주 소프트웨어를 배포하면 가동 중인 시스템에서 일어나는 예상하지 못했던 문제를 유지 보수하여 보완할 수 있다.
    • 소프트웨어를 배포할 때마다 다른 전문 영역에 초점 둘 수 있다.

    단점

    • 반복적 개발을 통한 투입인력 및 비용 산정의 어려움 있다.
    • 프로토타이핑 과정에 대한 통제 및 관리의 어려움 있다.
    • 중간 산출물 생성의 어려움이 존재
    • 불명확한 개발 범위로 인한 개발 종료 및 목표의 불확실성

     

    프로토타이핑 모델의 개발절차

    • 요구사항 정의 및 분석
      • 1차 개략적인 요구사항 정의 후 2차, 3차, …n차를 반복하면서 최종 프로토타입 개발
    • 프로토타입 설계
      • 완전한 설계 대신, 사용자와 대화할 수 있는 수준의 설계
      • 입출력 화면을 통한 사용자 인터페이스 중심 설계
    • 프로토타입 개발
      • 완전히 동작하는 완제품을 개발하는 것이 아니며, 입력 화면을 통한 사용자의 요구 항목 확인
      • 출력 결과를 통해 사용자가 원하는 것인지 확인
    • 사용자에 의한 프로토타입 평가
      • 프로토타입 평가 → 추가 및 수정 요구 → 프로토타입 개발 → 프로토타입 평가
    • 구현
      • 최종 프로토타입 개발

     

     

    프로토타입 모델의 개발 생명주기
    그림으로 표현한 프로토타입 모델의 개발 생명주기
    실험적 프로토타입 모델 절차
    그림으로 표현한 실험적 프로토타입 모델 절차
    진화적 프로토타입 모델 절차
    그림으로 표현한 진화적 프로토타입 모델 절차


    나선형 모델

    시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델이다.

    이로써 실패의 위험을 줄이고 테스트에 용이하게 만들면서 피드백이 가능하다.

    나선형 프로세스 모델
    그림으로 보는 나선형 프로세스 모델

    장점

    • 사전 위험 분석을 통한 돌출 위험요소 감소 → 프로젝트 중단 확률 감소
    • 사용자 평가에 의한 개발 방식 → 요구가 충분히 반영된 제품 → 사용자의 불만 감소

    단점

    • 반복적 개발에 의한 프로젝트 기간 연장의 가능성
    • 반복 회수의 증가에 따른 프로젝트 관리의 어려움
    • 위험 관리의 중요 → 위험 전문가 필요에 따른 부담 발생

     

    나선형 모델의 개발절차

    • 개발 및 요구 분석 단계
      • 사용자의 개발 의도 파악
      • 프로젝트의 명확한 목표
      • 제약 조건의 대안을 고려한 계획 수립
      • 기능/비기능 요구사항 정의 및 분석
    • 위험분석 단계
      • 개발자의 이직
      • 요구사항 변경
      • 발주자의 재정적 어려움
      • 예상을 빗나간 투입 인력
      • 개발 기간의 부족
      • 개발비의 초과
    • 개발 및 검증
      • 구축 대상의 시스템과 개발 환경에 맞는 개발 모델을 선택
      • 개발 진행 시 단위 테스트 그 후 통합 테스트 > 시스템 테스트
    • 사용자의 평가 단계
      • 고객의 평가
      • 고객의 추가 및 수정 요청 반영

     

    진화적 모델

    폭포수 모델의 경우 단계를 거슬러 올라가기에 부적합하고 요구사항의 변화가 수시로 발생하기 때문에 이를 해결하기 위해 나온 모델이 진화적 프로세스 모델이다.

    진화적 프로세스 모델
    그림으로 표현한 진화적 프로세스 모델

    장점

    • 몇 가지 기능이 부족하더라도 초기에 사용 및 교육 가능하다.
    • 사용자의 요구를 빠르게 반영할 수 있다.
    • 새로운 기능을 가진 소프트웨어에 대한 시장을 빨리 형성한다.
    • 가동 중인 시스템에서 일어나는 예상하지 못했던 문제를 신속하고 꾸준하게 고쳐나갈 수 있다.

    단점

    • 프로젝트 관리가 복잡해지기 때문에 큰 프로젝트 부적합하다.
    • 끝이 안 보일 수 있어 실패의 위험이 크다.
    • 프로젝트의 진행이 위험분석에 크게 의존하게 된다.

     

    애자일(Agile) 모델

    애자일은 날렵한, 민첩하다는 뜻이다. 애자일 프로세스는 고객의 요구에 민첩하게 대응하고 그때그때 주어진 문제를 풀어나가는 방법론을 말한다.

     

    애자일의 기본 가치

    애자일 선언문은 다음과 같은 가치를 추구한다.

    • 프로세스와 도구 중심이 아닌, 개개인과의 상호 소통 중시한다.
    • 문서 중심이 아닌, 실행 가능한 소프트웨어 중시한다
    • 계약과 협상 중심이 아닌, 고객과의 협력 중시한다.
    • 계획 중심이 아닌, 변화에 대한 민첩한 대응 중시한다.

    애자일 선언

    1. 형식적인 문서보다는 커뮤니케이션을 통하여 프로젝트가 목표를 향하여 나아가게 한다.
    2. 사용자는 문서가 아니라 실행되는 소프트웨어를 통하여 요구를 확인한다.
    3. 사용자의 요구는 비즈니스 환경에 따라 프로젝트 중간에 바뀔 수 있음을 고려한다.
    4. 짧은 주기 동안 요구정의에서 구현, 테스트까지 이루어지며 각 반복 주기의 반성 의견을 다음 계획에 포함한다.

    익스트림 프로그래밍

    • 사용자 스토리
      • 각 기능의 비즈니스 가치와 우선순위를 정하는 것이다.
    • 매일 비드와 통합
      • 실행되는 시스템을 항상 준비하기 위해 개발한다.
    • 테스트 주도 개발
      • 테스트 시나리오를 먼저 작성 함으로써 요구사항을 명확히 하며 설계를 단순화한다.
    • 페어 프로그래밍
      • 두 명의 프로그래머가 하나의 컴퓨터를 공유하면서 한 사람은 코딩을 하고 다른 사람은 확인하면서 개발한다.

    익스트림 프로그래밍
    그림으로 표현한 익스트림 프로그래밍

    스크럼 개발 프로세스

    스크럼 개발 프로세스는 소프트웨어 개발보다는 팀의 개선과 프로젝트 관리를 위한 애자일 방법론이다.

    경험적 관리 기법 중 하나이며, 구체적인 프로세스를 명확하게 제시하지 않는다.

    스크럼 방식의 진행 과정
    그림으로 표현한 스크럼 방식의 진행 과정

     

    1. 직무를 수행하는 능력 또는 직업, 직무에 따른 기능이나 역할을 일컫는 말 [본문으로]
    2. 원래의 형태 또는 전형적인 예, 기초 또는 표준이다. [본문으로]
    3.  통합 모델링 언어의 구성 요소는 여러 분류기의 상태와 동작을 캡슐화하는 시스템의 모듈 식 부분을 나타냅니다.  [본문으로]

    댓글