반응형

소프트웨어 유지보수

소프트웨어 유지보수는 소프트웨어 구현이 끝나고 실제 사용자에게 인수되어 사용되는 시점에서 결함을 고치거나 성능을 높이거나 새로운 기능을 추가하기 위해 소프트웨어 시스템이나 컴포넌트(component: 부품)를 수정하고 배포하는 작업이다.

 

유지보수 작업은 어떤 이유에 의해 변경이 되는가에 따라 작업이 달라질 수 있는데, IEEE(전기전자공학자협회)에 따르면 소프트웨어 유지보수의 종류를 아래와 같이 네 단계로 나누고 있다.

  1. 수정형 유지보수(corrective maintenance)
  2. 적응형 유지보수(adaptive maintenance)
  3. 완전형 유지보수(perfective maintenance)
  4. 예방형 유지보수(preventive maintenance)

위와 같이 유지보수 유형별 분포는 아래와 같이 완전형과 적응형 유지보수가 많은 비중을 차지하는 것을 알 수 있다.

 

지금부터 각 유형별로 무엇을 뜻하는지 자세하게 알아보자.

 

1. 수정형 유지보수

우리는 소프트웨어를 개발하고 설치한 후에 결함을 발견하는 경우가 종종 있다.

이와 같이 소프트웨어 설치 후에 발견된 결함을 고치기 위해 소프트웨어를 수정하는 작업 유형수정형 유지보수이다.

즉, 유지보수라는 이야기를 들었을 때 흔히 생각하기 쉬운 일반적이고 고전적인 유형이다.

소프트웨어에 오류나 에러가 발생했다면 수정형 유지보수가 필요하다.

 

2. 적응형 유지보수

적응형 유지보수는 어떠한 환경이 변화했을 때, 변경된 환경에서도 계속 사용할 수 있도록 소프트웨어를 이식하거나 변경하는 유형이다.

가령, 윈도우에서 작동하는 프로그램을 맥 OS에서도 동작하도록 해야할 필요가 있을 때 적응형 유지보수가 필요하다.

 

3. 완전형 유지보수

완전형 유지보수는 유지보수 유형별 분포에서 가장 많은 비율인 50%를 차지했다는 것을 이미 살펴봤다. 즉, 우리가 일반적으로 유지보수를 할 때 가장 잦은 빈도로 마주하게 되는 유형이라는 것이다.

게임을 개발한다고 가정해보자. 서든어택과 비슷한 단순 FPS 게임을 약 3달에 거쳐 빠르게 만들었다. 그런데 시간이 지나고 나니 약간 더 쾌적한 프레임을 유지할 수 있도록 성능을 개선하고 싶어질 수도 있고 기존에는 K-2와 같이 소총 하나만 있었지만 저격총을 추가하고 싶어질 수도 있다. 이러한 작업을 하는 유형이 바로 완전형 유지보수이다. 왜 분포가 가장 높은지 이해되는가?

정리하면, 완전형 유지보수소프트웨어의 성능이나 유지보수성을 개선하기 위하여 실시하는 유형이며 추가적인 기능을 추가하는 작업도 포함한다.

 

4. 예방형 유지보수

예방형 유지보수는 먼저 예방이라는 용어에 초점을 둬보자. 우리는 흔히 질병에 걸리는 것을 예방하고자 예방접종을 맞는다. 소프트웨어에서 질병과 흡사한 것이 무엇인가? 바로 오류 혹은 결함이다.

이와 같이 오류 발생을 방지하기 위해 소프트웨어를 수정하는 작업 유형예방형 유지보수라고 한다.

예를 들어, 코드가 1000줄, 2000줄 넘어가면서 점점 원시코드의 복잡성이 증가하게 되면 오류가 발생하게 될 가능성이 점점 높아지는데 이를 예방하고자 소스 코드를 리팩토링 하는 작업을 하는 것이 예방형 유지보수라고 할 수 있다.

 

이 네 가지 유형을 잘 살펴보면, 완전형 유지보수와 예방형 유지보수는 비교적 여유를 갖고 할 수 있는 작업이라는 것도 이해할 수 있다.