소프트웨어공학

유지보수 (Part1)

chlqhrud0208 2024. 12. 16. 21:57
  • 레거시(Legacy) 시스템을 대체하지 못하는 이유
    - 높은 비용
    - 전문가, 사용자의 오랜 경험과 지식이 녹아 있음
    - 새로운 시스템이 더 좋다는 보장이 없음
    -> but 레거시 시스템을 계속 사용할 경우 유지보수가 점점 어려워짐

 

  • 유지보수 유형
    - 수정형 유지보수
       -> 테스트 단계에서 미처 찾지 못한 잠재적인 오류 발견
    - 적응형 유지보수
       -> 프로그램 환경 변화에 적응하기 위함
    - 완전형 유지보수
       -> 새로운 요구사항을 반영하기 위함
       -> 유지보수 활동 중 가장 많은 자원 소모
    - 예방형 유지보수
       -> 선재적 유지 보수

 

  • 리먼(Lehman)의 소프트웨어 변화 법칙 (8가지)
    - 지속적인 변경의 원칙
    - 엔트로피, 복잡도 증가의 원칙
       -> 시스템의 구조는 변경할수록 더 나빠짐
       -> 변경될수록 구조가 더 복잡해지고, 구조를 단순화 하기 위한 재구조화 또는 리엔지니어링 필요
    - 자기 통제의 법칙
       -> 변경되는 사항은 고유한 패턴/추세가 있음
    - 안정성 유지의 법칙
       -> 진화하는 시스템의 유지보수 프로세스는 시스템이 소멸할 때까지 일정한 평균 작업량을 보임
    - 친근성 유지의 법칙
       -> 시스템의 각 버전의 변화는 거의 일정함 (예측가능)
    - 지속성 성장의 법칙
       -> E타입의 시스템은 사용자를 만족시키기 위해 기능적 성장을 계속 해야함
    - 품질 저하의 법칙
       -> E타입의 시스템은 변화에 적응하지 못하면 품질 저하됨
    - 피드백 시스템의 법칙
       -> 진화 프로세스는 여러 관련자의 피드백으로 구정됨

 

  • 유지보수 프로세스 모델
    - 즉시 수정 모델
       장점 : 빠르게 유지 보수 가능
       단점 : 인력과 자원이 긴급 보수에 투입 -> 문서 변경에 투입되는 시간 감소 (오류 탐색 기회 감소 -> 큰 시스템에는 적합하지 않음)
    - 반복적 개선 모델
       단점 : 언제 끝날지 모름
    - 재사용 중심 모델
       순서
       1) 재사용 후보가 될 시스템 부품을 파악
       2) 해당 시스템 부품을 새로운 요구에 맞추어 변경
       3) 변경된 부품을 새 시스템에 통합

 

  • 유지보수의 작업 과정
    1) 현재 프로그램의 이해
       -> 상향식, 묶음화 원리 사용
    2) 변경 파악과 분석
    3) 변경의 영향 파악
        -> 의존관계가 있다면 변경 시 영향이 가게됨
    4) 변경 구현, 테스트, 설치
        -> 리그레션 테스트