현업에 뛰어들기 전, 꼭 알아야 할 소프트웨어 프로세스 정리 - 소프트웨어 개발 생명주기

Kim Dong Hyun·2023년 3월 15일
1

오늘 학부 수업을 들으면서 프로세스에 관한 내용을 들었는데, 너무 유익한 내용인 것 같아서 정리하려고 한다.

프로젝트를 잘 성공시키려면 개발의 퀄리티뿐만 아니라, 개발문서에도 시간을 투자해야 한다.

프로세스란?

주어진 목적을 위해 수행되는 일련의 절차
"내가 뭘 해야될지 정해져 있는 목차"

현업에서 프로젝트를 진행할 때, 어떤 절차로 진행되는지 꼭 알아야 할 것이다.
사이드 프로젝트여도, 어떤 프로젝트냐에 따라 맞는 프로세스를 선택하여 효율적으로 프로젝트를 진행해야 한다.
프로세스를 잘 선택하면,

  • 소프트웨어의 개발 목표가 명확해진다.
  • 프로젝트의 실패를 막을 수 있다.
  • 소프트웨어의 품질은 프로세스의 품질에 의해 결정된다.

소프트웨어 개발 생명주기 (Software Development Life Cycle)

소프트웨어를 어떻게 개발할 것인가?에 대한 추상적 표현

주먹구구식 개발 모델(Build-Fix Model)

보통 학부에서 진행하는 프로젝트의 대부분의 경우이다. 설계 없이 일단 개발에 들어가는 것을 말하며, 크기가 매우 작은 규모의 프로젝트에 적용된다.

Ad-hoc (그때그때 다르게)라고도 하며, 정의되어있는 프로세스가 없다.
이 모델은 작은 프로젝트라면 충분히 잘 활용할 수 있을 것이다.

폭포수 모델 (Waterfall Model)

폭포처럼 떨어지는 모습의 모델

보통 소프트웨어 개발의 전형적인 개발 모델이다.
소프트웨어 개발의 전 과정을 나누어 체계적이고 순차적으로 접근하는 방법이다.

여기서 주의할 점은, 위 -> 아래의 순서를 지키되, 다시 전 단계로 돌아가지 않는다.
예를 들어, 설계 단계가 끝나고 구현 단계 중에서,변동사항이 생겼다고 해서 다시 설계로 넘어가지 않는다. (물론 돌아갈 때도 있지만, 비용이 많이 든다.)
만약 변동사항이나 피드백사항이 있다면 다음 프로젝트에 반영한다.

  • 요구사항 분석
    개발하려는 소프트웨어의 요구사항을 수집하고 문제를 이해하고 분석한다.
  • 설계
    프로그램의 전반적인 구조, 알고리즘 등 시스템의 구조를 결정한다.
  • 구현
    설계 명세서를 기반으로 실제 모습으로 변환시킨다.
  • 테스트
    프로그램이 입력대로 잘 작동하는지 테스트를 수행하고, 문서화한다.
  • 유지보수
    소프트웨어의 변경사항을 적용하고, 수정, 기능추가 등을 수행한다.

폭포수모델은 가장 정형화되어있고, 진행을 명확하게 할 수 있지만 단계가 확실하게 나뉘어져 있어 앞 단계가 완료될때까지 기다려야하는 단점이 있다.
또한, 고객 입장에서 소프트웨어 구현을 늦게 확인할 수 있어 요구사항 확인에 많은 시간이 걸린다.

원형모델 (Prototyping Model)

점진적으로 개발해나가는 모델

폭포수모델의 단점을 보완한 모델이다.

원형을 만들어 고객과 사용자가 함께 평가하는 방식이다.

  • 폐기 프로토타입(Throw away Prototype)
    고객으로부터 피드백을 받은 후 원형을 폐기한다.
  • 진화적 프로토타입
    중요한 부분만 구현한 뒤, 지속적으로 발전시켜 완제품을 제작한다.

보통은 고객의 요구사항을 완전히 파악하기 어려울 때 사용하는 모델이며, 빠른 설계가 특징이다.
초반에 프로그램의 신뢰도나 품질이 아니라, 가능한 빨리 원형을 구현하는 것이 핵심이다.

나선형 모델 (Sprial Model)

위험을 관리하고 최소화하는 모델


폭포수 모형의 장점 + 원형 모형의 장점 + 위험 분석을 추가한 모델이다.
개발이 점증적으로 진행된다는게 특징이다.
여러 개의 작업 영역으로 구분하여, 중간중간 위험 분석을 주기적으로 진행하여 위험 관리를 특화한다.

보통 고비용의 시스템이나, 시간이 많이 드는 큰 프로젝트에 사용되는 모델이다.
위험 분석을 통해 프로젝트의 실패 가능성을 낮출 수 있지만, 상대적으로 다른 모델보다 복잡해서 관리가 어렵다.

프로세스의 중요성?

프로세스를 공부하고 나서, 좋은 프로세스는 곧 좋은 프로젝트로 연결되고, 곧 좋은 회사로 연결된다는 것을 많이 배웠다. 아는만큼 보인다는 말처럼, 나중에 내가 좋은 경험을 할 수 있을지에 대한 판단의 근거에 꼭 프로세스 관찰을 포함하자.

0개의 댓글