본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Maintenance
  • 소프트웨어를 직접 운용하며 잔존 버그 등을 찾고 추가 개선사항을 도출한다.
  • 하드웨어, 환경 변화에 따라 소프트웨어를 적응 및 유지시킨다.
  • 시간과 비용이 가장 많이 투입된다.
Corrective Maintenance
  • 소프트웨어 구축 시 테스트 단계에 미처 발견하지 못한 잠재적인 오류를 찾아 수정한다.
  • 수리 보수, 수정 보수, 정정 보수, 하자 보수라고도 한다.
  • 예: 운영 중인 기능에서 발생한 오류를 고치는 것
Adaptive Maintenance
  • 운영체제, 하드웨어와 같은 프로그램 환경변화에 맞추기 위해 수행하는 유지보수
  • 예: DBMS 를 다국어를 지원하는 제품으로 바꾸어 관련 프로그램을 고치는 것, 운영체제를 올린 뒤 프로그램을 맞추는 것
Perfective Maintenance
  • 기존 기능과 다른 새로운 기능을 추가하거나, 기존 기능을 개선 등
  • 소프트웨어 확장 및 리모델링
  • 유지보수 활동 중 가장 자원이 많이 소모되는 활동
Preventive Maintenance
  • 장래에 유지보수성 또는 신뢰성을 보장하기 위해 선재적으로 하는 유지보수
  • 소프트웨어의 잠재적인 오류발생에 대비하여 미리 예방수단을 강구해 두는 유지보수
  • 유지보수 활동은 수정(Corrective)·적응(Adaptive)·향상(Perfective)·예방(Preventive) 네 가지다
  • Interfere Maintenance(간섭 보수) 같은 유형은 없다
  • 변경이 들어와 처리되는 흐름은 소프트웨어 진화 문서에 있다

유지보수 용이성을 높이는 개발 활동

편집 원본 편집

유지보수 비용은 운영 단계에서 생기지만, 그 크기는 개발 단계에서 정해진다. 페얼리(R. Fairley)는 개발 단계별로 유지보수 용이성(maintainability)을 높이는 활동을 다음과 같이 정리했다.[1]

단계 활동
분석 표준과 지침을 개발한다. 산출 문서의 이정표와 품질보증 절차를 정한다. 예상되는 개선 사항과 유지보수에 필요한 자원·비용을 미리 추정한다
기본(구조) 설계 명료성과 모듈성을 설계 기준으로 삼는다. 예상 개선을 쉽게 반영하도록 설계한다. 표준 표기법으로 자료 흐름·기능·구조를 문서화한다. 정보 은닉, 자료 추상화, 하향식 계층 분해 원리를 지킨다
상세 설계 표준 표기법으로 알고리즘·자료 구조·인터페이스를 명세한다. 루틴마다 부작용과 예외 처리 방안을 명시한다. 상호 참조 목록을 제공한다
구현 단일 입구·단일 출구 구조를 쓴다. 표준 들여쓰기와 단순 명료한 코딩 스타일을 따른다. 기호 상수로 루틴을 매개변수화한다. 루틴마다 표준 머리 주석을 단다
기타 유지보수 지침서와 테스트 묶음(test suite), 그 문서를 만들어 둔다

복수 입구·복수 출구 구조는 구조적 프로그래밍의 단일 입구·단일 출구 원칙에 어긋나 흐름을 따라가기 어렵게 만들므로 유지보수 용이성을 떨어뜨린다. SWEBOK 도 유지보수성을 운영 단계가 아니라 개발 중에 설계·구현으로 확보해야 하는 품질 특성으로 다룬다.[2]

  1. ↑ Richard E. Fairley, 『Software Engineering Concepts』, McGraw-Hill, 1985, 9장 Software Maintenance(Development Activities That Enhance Maintainability).
  2. ↑ 「Guide to the Software Engineering Body of Knowledge (SWEBOK) Version 3.0」, IEEE Computer Society, 2014, 5장 Software Maintenance, https://www.computer.org/education/bodies-of-knowledge/software-engineering, 확인일: 2026-11-04.