유지보수와 재공학

minhee·2020년 12월 11일
0
post-thumbnail

소프트웨어에서 유지보수가 중요할까요? 🤔

상황 가정을 통해서 중요성을 알아봅시다!
어느 회사에서 많은 돈과 심혈을 기울여서 앱을 하나 완성했습니다. 이제 앱을 배포하고 개발 끝! 사용자만 유치하면 된다! 하고 마음 놓고 있을 수 있을까요? 아닙니다! 이걸 사용한 사용자들이 피드백을 계속 줄 것입니다. 이제 사용자들을 만족시켜 이 앱을 계속 사용할 수 있게 유지보수를 해야할 것 입니다.

유지보수

변경의 세 가지 전략

  • 기본 구조를 바꾸지 않고 오류 수정이나 요구사항 변경을 수용 하는 것
  • 아키텍처의 변경하는 것
  • 이해와 변경이 용이하도록 수정하는 것

이렇게 변경을 통해 시스템이나 구성 요소들의 여러 버전이 만들어집니다!

유지보수의 유형

유지보수 유형에는 4가지가 있습니다.

  • 수정 유지보수: 오류를 수정
  • 적응 유지보수: 외부 환경의 변화에 적응하기 위한 수정
  • 완전 유지보수: 기능이나 성능 향상을 위해 수정
  • 예방 유지보수: 이해성과 유지보수성의 개선을 위한 수정

요구사항 프로세스

  1. 변경 요청
    소프트웨어를 사용해본 유저가 불편한 점이나 고치면 좋을 점들을 피드백 해줍니다
  2. 영향력 분석
    피드백을 보고 이게 우리 소프트웨어에 어떤 영향을 끼칠까 회의를 통해서 분석합니다
  3. 시스템 릴리스 계획
    피드백을 개발할 계획을 세웁니다. 스프린트 기간을 정하고 포인트를 매기는 계획입니다.
  4. 변경 구현
  5. 시스템 릴리즈

유지보수 비용

유지보수성을 고려하여 개발하면 개발비는 증가하나 유지보수 비용을 크게 절감됩니다.

유지보수가 어려운 이유

  • 개발 팀과 다른 유지보수 팀 먼저 시스템을 이해해야합니다.
  • 유지보수 계약이 개발 계획과 별개인 경우 시간이 지나면서 소프트웨어 구조와 가독성이 떨어집니다.

재공학

기존 시스템의 이해도 개선, 유지보수성의 개선, 재사용성의 향상을 위해 소프트웨어를 변경하는 작업

재공학은 기존 프로그램을 뒤집어 엎어서 구조적인 부분부터 다시 점검하여서 오류가 없도록 전면적인 수정을 한 뒤 리뉴얼하여 오픈 하는 경우라고 할 수 있습니다.

재공학 프로세스

  • 입력은 레가시 소프트웨어이며 출력은 같은 기능을 가지고 있으나 구조화되고 모듈화된 수정 버전입니다.
  • 레가시 소프트웨어의 수명 연장을 위한 일이며 전체적인 구조를 바꾸는 일인만큼 대규모 작업입니다.

활동

  • 소스 코드의 변환
    프로그래밍 언어를 최신 것으로 변환하는 것
  • 역공학
    소스 코드를 분석하여 설계 문서를 추출하는 것
  • 프로그램 재구조화
    프로그램의 제어 구조를 개선하는 일
  • 프로그램 모듈화
    전체 모듈 구조를 개선하는 일
  • 데이터 재공학
    데이터 구조를 변경

재공학 비용

아키텍처를 바꾸는 경우 가장 큰 비용 발생하고 재구조화 작업이 소스 코드를 변경하는 경우보다 비용이 크다.

이유

  • 소프트웨어 관련 문서의 품질이 낮은 이유
  • 재공학을 위한 도구를 사용할 수 없는 경우
  • 재공학 데이터 양이 많은 경우
  • 유지보수 요원이 참여 못하는 경우

0개의 댓글