소프트웨어 개발 방법론(Software development Methodologies)
포스트 난이도: HOO_Middle
# 소프트웨어 개발 방법론이란?
이번 포스트를 읽고 있는 Bro들은 기본적으로 프로그램 개발을 해본 적이 있거나 이미 실무에서 신입 개발자로 일을 하고 있는 Bro가 대부분일 것이다. 분야별로 프로그램을 개발하는 방식이나 사용하는 툴은 다르지만 소프트웨어 자체를 개발한다는 건 공통점을 가지고 있다. 일적으로 프로그램 개발을 하는 것이 아니라 취미, 또는 공부로 프로그래밍 개발을 하면 사실 소프트웨어 개발 방법론에 대해서 몰라도 문제가 되지 않는다. 하지만 실무에서 일을 시작하거나 전공자로서 졸업을 앞둔 상태라면 소프트웨어 개발 방법론에서 대해서 잘 알고 있어야 한다.
Software Development Methodologies(SDM)를 한국말로 소프트웨어 개발 방법론이라고 부르고 있다. SDM은 프로그램을 개발하는 과정에 있어서 어떠한 방식을 채택해서 개발을 진행할 것인지에 대한 다양한 방법을 일컬어 부르는 명칭이다. 우리가 실무에서 프로그램 개발을 한다고 가정했을때, 무작정 만들자! 해서 만들어지는 것이 아니다. 프로그램이 복잡하고 개발 프로젝트가 복잡하고 클수록 개발 과정에 대한 정확한 계획 수립이 필요하다. SDM은 이러한 개발 계획부터 개발 과정, 프로그램 테스팅, 개발 종료 후에 유지관리, 전반적인 개발 비용과 시간 등을 포함하고 있는 것이 바로 SDM이다.
#Software Development Methodologies의 종류
SDM에서 Methodologies 부분에서 이미 어느정도 짐작이 되겠지만 SDM은 다양한 종류가 존재한다. SDM도 소프트웨어 개발 목적이나 상황에 따라서 알맞은 SDM을 선택하여 개발하는 것이 중요하다. 마치 같은 결괏값이 산출될 수 있는 프로그램에서 어떠한 알고리즘을 사용하는 것이 효율적인지와 비슷한 과정이라고 볼 수 있다. 따라서 SDM도 대표적인 방식이 존재하고 해당 방식들을 응용하거나 변형하여 새로운 형태의 SDM을 적용하여 소프트웨어 개발을 할 수 있다. 한마디로 SDM을 선택하는 것에 대해서 절대적인 정답은 없지만 효율적인 측면에서 상대적인 정답이 존재한다. SDM의 종류에 대한 부분은 필자의 다른 포스트에서 대표적인 SDM에 대한 설명을 살펴볼 수 있다.
#Software Development Methodologies의 중요성
SDM이 중요한 이유는 사실 간단하다. 돈 때문이다. User(사용자) 또는 Customer(고객)이 프로그램 개발을 요청했는데 평생 죽을때 까지 또는 그다음 세대까지 프로그램 개발을 해도 된다고 이야기를 한다면 사실 SDM은 중요하지 않다. 왜냐하면 평생에 걸쳐 프로그램을 개발하면 되고, 프로그램의 최적화 과정이나 유지관리도 평생 시간과 비용 걱정 없이 진행하면 되기 때문이다.
하지만 우리가 살고 있는 현실에서는 그렇지 않다. 소프트웨어 개발에 있어서 개발 과정 뿐만 아니라 비용이나 시간과 같이 전반적으로 효율적인 개발이 가능하고 Maintenance, 즉 유지 관리성이 얼마나 잘 이루어질 수 있는지가 중요하다. 소프트웨어에 있어서 개발보다도 유지관리 측면을 크게 보는 이유도 현실적인 측면을 고려했기 때문이다. 소프트웨어 개발에 있어서 이해당사자들 간의 상반되는 목적으로 인해 갈등이 유발되거나 소프트웨어 개발에 대한 다른 이해로 인해 발생하는 문제가 생길 수 있다. SDM은 소프트웨어 개발에 참여되는 이해당사자들 간의 갈등과 문제를 해결하는 중요한 역할을 수행한다.
# 실무자라면 알아야 한다.
내가 프로그래머로써 일을 하고 있다면 SDM에서 대해서 모른다는 것은 말이 되지 않는다. SDM을 모른다는 것은 업무가 어떻게 돌아가고 있는지를 정확하게 파악하지 못하고 있다는 말이랑 똑같다. 회사 규모가 크든 작든, 맡고 있는 프로젝트가 어떻든 간에 SDM은 소프트웨어 개발에 있어서 꼭 필요한 부분이다. 신입 개발자 이거나 아직 실무 경험이 없는 Bro들의 경우 SDM이 크게 와닿지 않을 수 있다. 또는 전공자라면 수업 시간에 졸다가 SDM에 대해서 들어본 적이 없을 수도 있다. 하지만 SDM을 알아야 실무에서 업무 수행이 가능하기 때문에 꼭 알아 두어야 하는 부분이라고 생각한다. SDM을 몰라도 일을 할 수 있는 것이 아니라 꼭 알고 있어야 되는 부분이기에 SDM에 대해서 확실히 이해를 하는 것이 정말 중요하다고 본다.
# In conclusion, 3줄 요약
1. SDM은 다양한 종류가 존재하며, 상황에 맞는 SDM을 사용하는 것이 효율적이다.
2. SDM은 효율적인 소프트웨어 개발에 있어서 중요한 지표이다.
3. 소프트웨어 엔지니어, 프로그래머라면 SDM에 대해서 알아야 한다.
'Computer Science' 카테고리의 다른 글
[Programming] Big O Notation(빅오 표기법): O(n^2) Example Codes (0) | 2021.09.12 |
---|---|
[Programming] Asymptotic Bounding #01: Upper bound, Lower bound, Tight bound (0) | 2021.09.12 |
[Programming] 신입 개발자가 조심해야 하는 것 #01 - 불법 프로그램, 용도 이외의 프로그램 사용 (0) | 2021.08.20 |
[Programming] Shift Reduce Parser Example (0) | 2021.08.06 |
[Programming] Amdahl's Law (암달의 법칙) (0) | 2021.08.06 |
댓글