[ 잡담 ]
개발에 있어서 소프트웨어 생명 주기[SDLC(Software Development Life Cycle)]는 매우 중요하다.
따로 여기에 대해서 공부한 적은 없지만(학교에서 배운 것 같은데 기억이 전혀 나지 않는다) 여러 프로젝트를 진행하면서 항상 거쳐와야 했던 부분이 것 같다. 듣기로는 요구분석부터 시작해서 개발 전까지 가장 많은 시간이 소요된다고 했다. 하지만 내가 해왔던 프로젝트들은 내가 불편하다고 느껴서 개선하기 위해 제작했던 서비스들이기에 요구사항을 분석하거나 설계를 하는데 큰 시간을 들이지 않았다. 내가 불편했던 점만 개선하면 됐기 때문이다. 어떤 방식이 정답이라고는 할 순 없겠지만 회사에 들어가서 내가 불편하다고 느꼈던 부분을 개선하기 위한 프로젝트만 진행하리란 법은 없을 것이기 때문에 이론적으로 정리해 보도록하자.
이런 식의 프로젝트 진행의 가장 큰 문제점은 위 그래프의 사진과 같다. 서비스 출시가 다가올수록 버리는(Thrashing) 부분이 많이 지고, 다시금 프로세스를 고려하면서 코드를 뜯어고치는 것이다. 그렇게 코드는 점점 뒤죽박죽이 되고 그 프로젝트에 대한 나의 애정은 점점 식어갔다. 그렇게 만들어진 것이 "거래해요 동물의 숲"이라는 앱이다. 개발은 완료했지만 더 이상 유지보수를 할 엄두가 나지 않았다.
생명주기 모델
1. Code and Fix 모델
공식적인 가이드라인이나 프로세스 없이 소프트웨어를 개발해 나가는 형태
- 중요한 작업(설계, 테스트)들이 무시됨
- 각 작업이 언제 시작되어야 할지 언제 끝날지 불명확
- 대규모 작업에 적용하기 어려움
- 개인의 작업을 리뷰 하거나 평가하기 어려움
2. 폭포수 모형
계획, 요구 분석, 설계, 구현, 시험, 인수 설치 6단계를 순차적으로 시행
- 잘 모르는 문제나 연구 중심 문제에 적합
- 변화가 적은 프로젝트에 적합(새로운 피드백을 받으면 위쪽 사이클로 돌아가야 하는데 시간이 오래 걸린다)
1. 계획
프로젝트 기간, 일정, 비용 산정 등을 하는 단계.(ROI)
2. 요구 분석
기능과 성능에 대한 계획을 세우는 단계
3. 설계
데이터베이스, uml, 스토리보드 작성 등의 작업
4. 구현
실제 프로그램을 작성하는 단계
5. 시험
테스트 단계
6. 인수 설치
기존의 데이터를 재활용하는 마이그래이션이나 유지보수 단계
3. 프로토타이핑 모델
요구분석, 프로토타입 개발/개선, 프로토타입 평가, 구현, 인수 설치
- 개발 착수 시점에 사용자의 요구가 불투명할 때
- 실험적으로 실현 가능성을 타진해 보고 싶을 때
- 혁신적인 기술을 사용해 보고 싶을 때
폭포수 모델의 단점을 보완한 모델. 어느 정도 사이클이 지나고 나서 피드백을 받으면 수정하는데 엄청나게 긴 시간이 걸리게 된다. 프로토타이핑 모델은 이런 점을 보완하여 프로토타입을 만들고 사용자들에게 먼저 피드백을 받은 후에 추후 작업을 실행한다.
4. 점증적 모델
중요한 기능부터 릴리스하고 사용자들이 사용하는 사이클을 반복함으로써 점증적으로 프로젝트 진행.
5. 나선형 모델
- 재정적 또는 기술적으로 위험 부담이 큰 경우
- 요구 사항이나 아키텍처 이해에 어려운 경우
점증적 모델의 한 종류라고 할 수 있다. 계획 목표 설정, 위험분석, 개발, 검증 및 다음 단계 수립 순서대로 반복적으로 실행.
사이클이 돌면 돌 수록 테스트 과정이 중첩됨으로 프로젝트가 견고해진다.
6. V (Verification:검증) 모델
폭포수 모델의 변형이라고 할 수 있다. 작업과 결과의 검증에 초점.
- 신뢰성이 높이 요구되는 분야
오류를 줄일 수 있지만 하나의 사이클로 이루어져있어서 반복이 없어 변경을 다루기가 쉽지 않음.
7. 일정 중심 설계 모델
일정에 중심을 맞춰서 서비스를 출시하는 모델.
- 소프트웨어 제품의 출시 날짜가 매우 중요한 경우
- 목표 일정을 달성할 수 있을지 불확실할 때
우선순위가 낮아 출시에 포함되지 않을 기능을 분석하고 설계하는데 시간을 낭비.
8. 진화적 출시 모델
고객의 요구를 여러 사이클에 걸쳐 개발하여 보여주면서 제품을 개선해 나가는 모델
프로토타이핑 모델과 다른 점
- 고객의 요구를 프로토타이핑 모델처럼 전적으로 수용하지는 않음
- 고객의 반응으로 바뀔 가능성이 적은 부분이 시스템의 핵심
- 프로토타이핑 모형은 시스템에서 눈에 띄는 부분을 먼저 강조하고 나중에 시스템 기반에 있는 구멍을 메워나가는 식
9. 애자일 모델
Extreme Programming(xp) 설계가 거의 생략된 개발 중점적인 모델.
- 6개월 이하의 가벼운 프로젝트를 제작할 때 주로 사용 된다.
출처
http://contents.kocw.or.kr/KOCW/document/2014/dongguk/choieunman/1.pdf