안녕하세요, 서비스 기획자 완두콩입니다.
오늘은 소프트웨어 개발 방법론에 대해 알아보겠습니다.
소프트웨어 개발 방법론에 대해 알기 전, 소프트웨어 생명주기 모델의 개념에 대해서 먼저 알아볼건데요!
소프트웨어 생명주기(SDLC; Software Development Life Cycle)란, 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차를 말하는데요! 시스템이 개발될 때 부터 운용과 유지보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화 한것입니다. 결과적으로, 이러한 생명주기를 위해 다양한 개발 방법론이 필요한 것이구요!
생명 주기 모델의 프로세스는 크게 '요구사항 분석-설계-구현-테스트-유지보수' 의 절차가 있는데요! 이러한 절차를 주로 사용하며, 이 각각의 절차를 어떻게 더욱 효율적으로 할 것인지가 오늘 알아볼 개발 방법론에 대한 중요한 포인트가 아닐까 싶네요! ㅎㅎ
먼저, 생명주기를 담당하는 방법론은 '모델'로도 표현하고, '방법론'이라고도 표현하니 아래 내용을 읽을 때 참고하시면 되겠습니다.
실제, IT 서비스를 만드는 곳에서는 대부분이 폭포수 모델(Waterfall Model)을 사용합니다. 서비스를 만들 때, 각 단계를 확실히 마무리하고 다음 단계로 넘어가는 구조이지요! 순차적 모형으로, 이를 사용한 서비스들이 성공 사례가 가장 많습니다! 폭포수 모델의 절차를 간략하게 설명드리자면, '타당성 검토-계획-요구사항 분석-설계-구현-테스트-유지보수'의 절차입니다. 말 그대로 순차적인 방법입니다. 물론, 여기에 제시된 항목이 모든 폭포수 모형이라 할 수 없지만 순차적으로 구현된다는 의미만 파악해주시면 될 거 같습니다!
폭포수 모델은 단계별 정의와 산출물이 명확하기 때문에, 다음 단계에 진입할 경우 요구사항 변경이나 이전 절차로의 진입이 어렵습니다! 그렇기 때문에, 절차 하나하나를 완벽하게 마무리하고 넘어가야하는 방식이며, 이는 제품 제작 전, 일정을 선별하는 것에 큰 도움이 됩니다. 대부분의 프로젝트에서 이 폭포수 모델을 사용하니 잘 알아두시면 좋을 듯 해요 ㅎㅎ
이 외에도, 프로토타이핑 모델(Prototyping Model), 나선형 모델(Spiral Model), 반복적 모델(Iteration Model) 등이 있습니다.
프로토타이핑 모델은 고객이 요구한 주요 기능을 프로토타입으로 구현하여, 소프트웨어를 만들어가는 모델입니다. 쉽게 말해, 최소한의 서비스 제품을 프토토타입화하여 이를 토대로, 고객에게 피드백을 받는 것이지요! 한눈에 보여 피드백이 확실하다는 장점이 있지만, 프로토타입을 제작하기 위한 시간과 절차가 필요하다는 자그마한 단점이 있습니다...ㅎ 또한, 열심히 프로토타입을 만들었는데,,,, 고객이 맘에 안든다고 하면,,,,다시 제작해야 하는,,,,화이팅...!
나선형 모델은 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델을 말합니다. 계속해서 요구사항을 처리하고 점진적으로 시스템을 확장시키는 것이지요! 위험을 분석하고 이를 반복적으로 대응, 개발하면서 위험성을 감소시키고 변경에 대한 유연한 대처를 할 수 있게 합니다. 다만, 단계를 계속해서 반복해야 되기 때문에 관리가 어려운 단점이 있어요ㅠㅠ 이와 비슷한 모델들이 많지만, 이는 추후에 한번더 알아보도록 하겠습니다.
반복적 모델은 구축 대상을 병렬적 구조로 나누어 반복적으로 개발하는 방법입니다. 쉽게 말해, 하나의 큰 작업을 여러 개의 작은 작업으로 나누어 분석, 설계, 구현의 과정을 병행 개발하는 것입니다. 병행 개발을 하면, 일정 태스크를 좀더 세분화해서 쪼갤 수 있는 장점이 있는 반면, 병행 개발에 따른 관리 포인트가 늘어 관리 비용이 증가한다는 단점이 있어요ㅠㅠ
이처럼, 여러 방법론들이 있지만 어떤 서비스와 제품을 제작하느냐에 따라 효율적인 방법론이 있을 겁니다. 무조건적인 방법론은 없으니, 자신에게 맞는 최고의 방법론을 찾아 제작을 해보세요! (다만, 아직까지는 폭포수 모델을 대부분 사용한다는....)
감사합니다.
'서비스 기획자와 PM이 알아두면 좋은 정보ㅋ' 카테고리의 다른 글
애자일 방법론에서 사용되는 XP, 스크럼(SCRUM), 린(LEAN) 이란? (0) | 2023.07.03 |
---|---|
소프트웨어 개발 방법론이란? 2탄 : 구조적 방법론(Structure Development, 정보공학 방법론(Information Engineering Development), 객체 지향 방법론(Object-Oriented Development), 컴포넌트 기반 방법론(CBD; Component Bas.. (0) | 2023.07.03 |
비즈니스 모델이란? (0) | 2023.07.03 |
서비스 기획에서 분석이란? (0) | 2023.06.21 |
서비스 기획자란? (0) | 2023.06.17 |