소프트웨어 유지보수

소프트웨어 유지보수(software maintenance)는 소프트웨어 공학에서 배급된 이후 결함을 수정하고 성능이나 기타 특성을 개선하는 소프트웨어 제품의 수정을 말한다.[1]

소프트웨어 개발 프로세스
활동과 단계
요구사항 분석 · 기능 명세
구조 · 설계
구현 · 테스팅
배치 · 유지보수
개발 모형
애자일 소프트웨어 개발 · 클린룸
DSDM · 순차점증적 개발 · 반복형 개발
RAD · RUP · 나선 모형
폭포수 모델 · 익스트림 프로그래밍
스크럼 · V 모델 · TDD
지원 활동
구성 관리 · 문서화
품질보증 · 프로젝트 관리
사용자 경험 설계
도구
컴파일러 · 디버거 · 프로파일러
GUI 디자이너 · 통합 개발 환경

일반적으로 유지보수라고 하면 결함을 수정하는 것을 동반하는 것을 말한다. 그러나 한 연구에 따르면 80% 이상의 유지보수 공수는 수정이 아닌 목적으로 사용된다.[2] 최근의 연구에 따르면 버그 수정 비율은 21%에 근접한다.[3]

역사 편집

소프트웨어 유지보수와 시스템 진화는 1969년 매니 리먼(Manny Lehman)에 의해 처음 기술되었다. 20년이 지나, 그의 연구를 통해 리먼의 법칙(리먼 1997) 공식이 만들어졌다. 그의 연구에서 발견된 주요 사항으로는 유지보수가 참으로 진화적인 개발 방식이며 유지보수의 결정은 시간이 지남에 따라 시스템(및 소프트웨어)에 발생하는 것을 이해함으로써 도움을 받는다는 것이다. 코드 리팩토링과 같은 일부 조치를 통해 복잡성을 낮추지 않을 경우 진화를 거듭할수록 더 복잡하게 변모하게 된다.

같이 보기 편집

각주 편집

  1. “ISO/IEC 14764:2006 Software Engineering — Software Life Cycle Processes — Maintenance”. Iso.org. 2011년 12월 17일. 2013년 12월 2일에 확인함. 
  2. Pigoski, Thomas M., 1997: Practical software maintenance: Best practices for managing your software investment. Wiley Computer Pub. (New York)
  3. Eick, S., Graves, T., Karr, A., Marron, J., and Mockus, A. 2001. Does Code Decay? Assessing Evidence from Change Management Data. IEEE Transactions on Software Engineering. 27(1) 1-12.

외부 링크 편집