본문 바로가기

스터디스터디/정처기

[실기] 소프트웨어 구축- 소프트웨어 유지보수

 

최초 작성일: 2024-09-01

최종 작성일: 2024-09-01

목표 : 정처기 합격 및 CS 지식 쌓기

 

 

1.    소프트웨어 유지보수

(1)   개념

정의 : 개발 완료 이후부터 폐기될 때까지 지속적으로 수행되는 작업

목적: 소프트웨어의 수명 연장, 기능 개선, 하자 보수, 환경 적응 및 예방 조치

특징: 소프트웨어 생명주기 동안 가장 많은 비용이 소요되는 단계

(2)   유지보수의 중요성

유지보수 비용이 소프트웨어 예산에서 차지하는 비중이 점차 증가하고 있다

신규 프로젝트보다 기존 소프트웨어 개선에 더 많은 투자가 이루어지는 경향이 있다

소프트웨어 기술발전에 따라 용역 개발에서 패키지 구매로 변환하는 추세이다

(3)   유지보수가 어려운 이유

업무 프로세스와 구축된 시스템에 대한 이해가 필요하다

유지보수 업체와 개발 업체가 다른 경우, 소프트웨어 구조 파악과 가독성이 어려워진다

2.    유지보수의 구분

구분 설명
수정 보수(Corrective) 소프트웨어의 잠재적 오류 수정
테스트 단계에서 발견되지 않은 오류를 찾아 수정
적응 보수 운영체제, 하드웨어 등 환경 변화에 맞추어 소프트웨어를 수정
향상 보수
(perfective maintenance)
기존 기능 개선 및 새로운 기능 추가
많은 자원이 소모되는 활동으로 소프트웨어 확장 및 리모델링에 해당한다
예방 보수
(preventive)
장래의 유지보수성과 신뢰성을 보장하기 위한 선제적 조치
소프트웨어의 잠재적 오류에 대비하여 미리 예방 수단을 강구한다
소프트웨어 재공학과 관련된 유지보수

 

3.    유지 보수 관련 용어

(1)   레거시 시스템 : 오래된 기술, 방법론, 컴퓨터 시스템 소프트웨어를 의미한다

(2)   외계인 코드 : 오래되었거나 참고문서, 개발자가 없어 유지보수가 어려운 코드 -> 해결책 : 프로그램 문서화를 통해 이해도를 높이고 유지보수를 용이하게 한다

(3)   스파게티 코드 : 복잡하게 얽힌 프로그래밍 소스코드 / 작동하긴 하지만 유지보수가 어려움

(4)   코드 스멜: 소스코드내 존재하는 잠재적인 문제를 나타내는 구조적 문제점들을 지칭한다/ 장기적으로 볼 때 유지 보수나 확장성 문제가 발생할 수 있다