본문 바로가기
Software Engineering/프로젝트 관리

소프트웨어 유지 보수

by 부뚜기 2023. 3. 26.
반응형

소프트웨어 유지 보수

소프트웨어 유지 보수는 소프트웨어 시스템이 고객에게 인도된 후 이를 수정하고 업데이트하는 프로세스를 말한다. 유지 보수 활동에는 버그 수정, 새 기능 추가, 성능 향상 또는 새 하드웨어 또는 소프트웨어 시스템과 함께 작동하도록 소프트웨어 업데이트가 수행된다.

 

소프트웨어 유지 보수의 목적은 소프트웨어 시스템이 정확하고 효율적이며 안전하게 작동하도록 유지하고 사용자의 요구를 지속적으로 충족하도록 하는 것이다.

 

소프트웨어 유지보수의 주요 수행 이유에는 다음과 같은 것들이 있다.

1. 버그 수정

소프트웨어 유지보수의 핵심은 기존 코드의 버그를 수정하는 것이다. 새로운 기능 추가나 개선보다 우선순위가 높다.
2. 호환성 유지

새로운 하드웨어나 소프트웨어와의 호환성 문제가 발생할 수 있다. 유지보수는 이러한 문제를 해결하기 위해 수행된다.
3. 기능 추가

사용자 요구 사항이 변경될 때, 소프트웨어는 새로운 기능을 추가해야 할 수 있다. 이를 통해 소프트웨어는 사용자의 요구를 충족시키고 경쟁력을 유지할 수 있다.
4. 성능 향상

성능 향상은 사용자의 만족도와 소프트웨어의 성공에 중요한 역할을 한다. 유지보수는 소프트웨어의 성능을 향상하는데 필수적이다.
5. 보안 업데이트

보안 취약점은 소프트웨어 개발자가 생각하지 못한 예기치 않은 문제다. 유지보수는 이러한 취약점을 찾아내고 수정하여 소프트웨어의 보안을 향상시킨다.
6. 문서화

코드, 문서 및 기타 자산의 문서화는 소프트웨어 유지보수에 필수적이다. 새로운 개발자가 쉽게 이해할 수 있도록 도와주며, 나중에 유지보수를 수행하는 개발자가 이전 개발자의 코드를 이해하고 수정할 수 있도록 한다.

 

소프트웨어 유지 보수는 소프트웨어 개발 수명 주기의 중요한 부분이며 소프트웨어가 시간이 지남에 따라 사용자의 요구를 계속 충족하도록 보장하는 데 필요하다. 소프트웨어 시스템을 계획하고 개발할 때 소프트웨어 유지보수에 필요한 비용과 노력을 고려하는 것도 중요하다.

 

소프트웨어 유지 보수는 소프트웨어 시스템이 고객에게 전달된 후 수정하는 프로세스다. 유지보수의 목표는 시스템의 기능, 성능 및 신뢰성을 개선하고 변화하는 요구사항과 환경에 적응하는 것이다.

 

소프트웨어 유지 보수의 유형

소프트웨어 유지 관리에는 다음과 같은 여러 가지 유형이 있다.

 

1. 수정형 유지 보수(Corrective maintenance)

소프트웨어 시스템의 오류(처리 요류, 구현 오류, 수행 오류)와 버그를 수정하는 유지 보수를 말한다.

 

2. 적응형 유지 보수

하드웨어 또는 소프트웨어 변경과 같은 환경 변화에 맞게 소프트웨어 시스템을 수정하는 유지보수를 말한다.

 

3. 완전적 유지 보수

소프트웨어 시스템의 기능, 성능 및 신뢰성 향상을 위한 유지 보수를 말한다.

 

4. 예방적 유지 관리

문서 업데이트, 시스템 검토 및 테스트, 백업과 같은 예방 조치 구현과 같은 향후 문제를 방지하기 위한 유지 보수를 말한다.

 

소프트웨어 유지 보수는 소프트웨어 시스템의 전체 수명 주기 동안 발생하는 지속적인 프로세스다. 테스트 및 검증, 버전 통제 및 이해 관계자와의 커뮤니케이션을 포함하여 잘 정의된 유지보수 프로세스를 구축하는 것이 중요하다.

 

소프트웨어 유지보수는 특히 대규모 및 복잡한 시스템의 경우 비용이 많이 들고 복잡할 수 있다. 따라서 소프트웨어 프로젝트의 계획 및 개발 단계에서 유지보수 비용과 노력을 고려해야 한다. 또한 테스트, 백업 및 버그 수정과 같은 정기적인 유지보수 활동을 포함해 명확한 유지보수 계획을 수립하는 것이 중요하다.

 

유지보수 필요성

소프트웨어 유지 보수는 다음과 같이 이유 때문에 수행되어야 한다.

1. 결함 수정

2. 설계 개선

3. 기능 향상

4. 다른 시스템과 인터페이스

5. 다양한 하드웨어, 소프트웨어, 시스템 기능 및 통신 기능을 사용하기 위한 적응

6. 기존 소프트웨어 마이그레이션

7. 소프트웨어 폐기

8. 사용자 요구 사항 변경 

9. 향상된 코드 성능

 

유지 보수의 문제점들

소프트웨어 프로그램의 일반적인 수명은 10 ~ 15년으로 간주된다. 소프트웨어 유지보수는 끝이 없기 때문에 몇십 년에 걸쳐 지속될 수 있으며, 이는 매우 비용이 많이 든다.

오래된 소프트웨어는 낮은 성능의 컴퓨터와 적은 메모리 및 저장 용량에서 작동하도록 설계되었지만, 최신 하드웨어에서 새롭게 개발된 성능이 향상된 소프트웨어에 대항하기 어려워졌다.

변경사항이 문서화되지 않은 상태로 유지되는 경우가 많아 향후 더 큰 문제가 발생할 수도 있다.

기술이 발전함에 따라, 오래된 소프트웨어를 유지보수하는 것은 점점 더 비용이 많이 든다.

자주 변경되면 원래 소프트웨어의 구조를 손상시키기 쉬워, 이후 변경 작업이 어려워질 수 있다.

소프트웨어는 위와 같은 많은 문제들이 발생할 수 있다. 이런 문제를 해결하기 위해 지속적인 유지보수가 필요하다.

 

유지 보수 작업의 5단계

1. 소프트웨어의 이해

  •  문서화된 산출물을 통해 전체 윤곽 파악 : 운영자 및 사용자 매뉴얼과 같은 문서와 형상관리 시스템을 통해 시스템을 이해한다.
  • 프로그램 구조 및 프로세스 이해: 소스를 중심으로 프로그램 구조를 이해하고 내부 요소 간 연관 관계를 파악한다.

2. 변경 요구 사항 분석

  • 변경의 불가피한 이유와 요구 사항을 분석: 사용자의 업무를 우선 이해하고 이로 인한 변경 불가피성을 인식한다.
  • 오류 및 개선 등의 목적에 따라 분석 및 이해: ISO/IEC 14764에 의한 교정, 적응, 완전, 예방 유지 보수를 이해한다.  

3. 변경 및 효과 예측

  • 실제 변경 영향도 파악: 필요 소스를 확인하고 1차 수정으로 인한 영향도를 파악한다.
  • 투입 리소스 예측 및 협의: 수정 범위, 작업 시간, 투입 인력 파악 및 필요시 관리자 및 사용자와 협의한다. 

4. 프로그램 소스 변경 및 수정

  • 예측 내용 기반 프로그램 변경 및 수정: 분석사항 기반으로 코드를 수정하고 디버깅 및 주석추가 등의 작업 수행 한다.
  • 관련된 산출물 변경 사항 반영: 관리되는 산출문에도 해당 변경 사항을 반영한다, 소스 목록, ERD, UI 정의서, 매뉴얼

5. 리그레이션 테스트 및 반영

  • SW 변경 전후 동일 기능 점검: 변경에 의한 영향받는 부분 테스트, 테스트 케이스 관리를 통한 범위 관리
  • 사용자 공지 및 배포, 배포 여부 점검: 변경 내용을 사용자에 미리 공지하고 확인 요청 (Stage 통한 사용자 확인) 및 배포 및 정상 배포 확인 한다.

최근에는 DevOps를 통한 시스템 유지보수 시 자동화 시스템이 구축되어 진행되어지고 있다.

반응형

댓글