소프트웨어 유지보수 개요

반응형
  • 소프트웨어 유지보수 개념
    • 정의
      • SDLC의 마지막 단계로 소프트웨어의 생명을 연장 시키는 작업
      • 소프트웨어가 개발되어 폐기될 때까지 이루어지는 일련의 소프트웨어 변경과 수정 작업
      • 소프트웨어 인도 후 결함 제거, 성능 향상, 변화된 환경에 적응하도록 소프트웨어를 변경하는 작업
      • 개발은 코딩 중심의 작업, 유지보수는 이해 중심의 작업
    • 소프트웨어 유지보수의 중요성
      • 유지보수 비용증가(개발 비용의 2~4배)
      • 신규 프로젝트보다 기존 제품 유지보수에 더 많은 인력과 비용 소모
      • 유지보수 기간이 개발 기간보다 김(개발 : 1~2년, 유지보수 : 5~10년)
      • 기존 시스템의 수정 작업 증가(원인 : 새로운 Biz 요구 충족)
           
  • 소프트웨어 유지보수 유형
    • 목적에 따른 분류
      • 수정 유지보수 : 오류 정정(하자(오류) → 처리 오류, 수행 오류, 구현 오류)
      • 적응 유지보수 : 환경 변화에 적응(하드웨어 변화, 소프트웨어 변화, DB 적용 등)
      • 완전 유지보수 : 기능 및 성능 개선(유지보수의 대부분을 차지)
      • 예방 유지보수 : 기능 예상/예측되는 오류 수정
    • 대상에 의한 분류
      자료/프로그램, 문서, 시스템 유지보수
    • 시간에 의한 분류
      계획, 예방, 응급, 지연 유지보수
  • 소프트웨어 유지보수 절차
절차 내용
현존 소프트웨어 이해
  • 프로그램 구조 파악, 변수/자료구조 파악
  • 응용 분야 지식 습득
변경 요구 분석(유지보수 종류 파악)
  • 요구 사항 분석
  • 유지보수 종류/전략 수립(수정, 신규 개발 등)
  • 변경 프로그램 및 문서 파악
변경 및 효과 예측
  • 변경으로 인한 효과/영향 분석
  • 프로그램 변경
테스트 및 유지보수
  • 프로그램 테스트, 문서 수정/형상 관리
  • 유지보수 수행

   

  • 소프트웨어 유지보수의 문제점 및 해결 방안
    • 부작용(역효과) 발생
      • 코딩 역효과 : 잘못된 입력 결과로 인해 오류를 발생
      • 데이터 역효과 : 소프트웨어 정보 구조에 가해진 결과로 인해 발생
      • 문서화 역효과 : 프로그램 변경 후 문서에 반영하지 않아 발생
    • 부가적 문제점
      • 시스템의 신뢰성 저하 가능성이 상존
      • 유지보수 비용 및 인력 증가
      • 비체계적인 유지보수로 인한 장애 유발
      • 유지보수 요원 기술 부족이나 경험 부족
      • 다른 사람의 프로그램은 이해하기 어려움
      • 대부분의 소프트웨어는 유지보수(변화)를 고려하지 않고 설계
    • 해결 방안
      • 개발 방법론과 개발 도구 적용
      • 유지보수의 자동화(재공학 도구 활용)
      • SDLC 단계 품질 보증 활동 강화
      • 유지보수 요인에 대한 예방 활동 실시
      • 적절한 프로젝트 관리 기법 도입
      • 지원 도구 활용(저장소(Repository)이나 자동화된 라이브러리의 활용)
           
  • 소프트웨어 유지보수성 향상 방안
    • 소프트웨어 유지 보수의 자동화 : 소프트웨어 리엔지니어링
    • 표준화된 품질 요소의 적용
    • 규격화된 문서화의 시행;
    • 자동화 도구의 사용 : CASE 또는 4세대 언어의 활용
반응형