유지보수 이관
1. 개요
유지보수 이관은 소프트웨어 개발이 완료되어 시스템이 운영 환경에 투입된 후, 개발 조직에서 운영 조직(또는 다른 유지보수 조직)으로 시스템의 유지보수 책임과 관련 자료를 引継ぐ 과정이다. 이 과정은 시스템의 지속적인 운영과 효과적인 유지보수를 위해 필수적인 과정으로, 이관이 적절히 이루어지지 않으면 운영 단계에서 많은問題가 발생하게 된다. 예를 들어, 장애가 발생했을 때 대응할 담당자가 없거나, 필요한 자료가 없어 장애 처리가 지연되는 등의 문제가 발생할 수 있다.
유지보수 이관의 범위는 개발 산출물 전부와 유지보수에 필요한 모든 정보의 인계를포괄한다. 소스 코드와 실행 파일, 설계 문서와 운영 매뉴얼, 테스트 데이터와 환경 설정, 그리고 유지보수 수행을 위한 지식과 노하우 등이 모두 포함되어야 한다. 특히 암묵지(Implicit Knowledge), 즉 개발자가 체득한 시스템에 대한深い 이해를如何ように explicit한 지식으로 변환하여 전달하는가가 성패의 핵심이다.
감리자는 유지보수 이관 과정이 계약 또는 약정에 따라 적절히 이루어졌는지, 이관 대상이 완전하게 전달되었는지, 그리고 이관 후 운영 조직이 시스템을 효과적으로 유지보수할 수 있는 상태인지를 검증해야 한다.
2. ASCII 다이어그램
유지보수 이관 범위
[유지보수 이관 범위]
┌─────────────────────────────────────────────────────────────────────┐
│ 유지보수 이관 주요 범위 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ 유지보수 이관 범위 │ │
│ ├───────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ [1. 산출물 인계] [2. 지식 인계] │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ ○ 소스 코드 │ │ ○ 설계 의도 │ │ │
│ │ │ ○ 설계/운영 문서│ │ ○ 특이사항 │ │ │
│ │ │ ○ 테스트 결과 │ │ ○ 장애 처리 노하우│ │ │
│ │ │ ○ 빌드 스크립트 │ │ ○ 운영 팁 │ │ │
│ │ │ ○ 환경 설정 │ │ ○ 주의사항 │ │ │
│ │ └─────────────────┘ └─────────────────┘ │ │
│ │ │ │ │ │
│ │ └────────────┬────────────┘ │ │
│ │ ▼ │ │
│ │ ┌───────────────────────────────────────────────────┐ │ │
│ │ │ [3. 환경 인계] │ │ │
│ │ │ ○ 개발 환경 ○ 테스트 환경 ○ 운영 환경 │ │ │
│ │ │ ○ 접근 계정 ○ 라이선스 ○ 통신 정보 │ │ │
│ │ └───────────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ └────────────────────────┼───────────────────────────────────┘ │
│ │ │
└────────────────────────────┴──────────────────────────────────────────┘
이관 프로세스 단계
[유지보수 이관 프로세스]
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 이관 계획 │───▶│ 이관 준비 │───▶│ 이관 실행 │───▶│ 이관 확인 │
│ 수립 │ │ 및 검토 │ │ 및 교육 │ │ 및 완료 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
▼ ▼ ▼ ▼
이관 범위 자료 목록 실제 인계 인계 확인
일정 계획 completeness 지식 전달 문서화
책임 범위 대비 검토 교육 실시 사후 관리
3. 해석
3.1 이관 대상 산출물
유지보수 이관의 핵심은 개발 과정에서 생성된 모든 산출물을 운영 조직에 넘기는 것이다.
소스 코드 및 실행 파일: 시스템의 원천인 소스 코드는最基本的인 이관 대상이다. 실행 파일, 빌드 스크립트, 컴파일러 설정 등도 함께 제공되어야 한다. 소스 코드는 版本管理 시스템(Git, SVN 등)에 저장된 상태로 관리되고 있어야 하며, 접근 권한이 적절히 이전되어야 한다.
설계 및 운영 문서: 시스템 아키텍처, 상세 설계, 데이터 모델, 인터페이스 정의 등의 설계 문서와 함께, 시스템 운영 매뉴얼, 장애 처리 절차, 백업/복구 절차 등의 운영 문서가 제공되어야 한다. 문서가 없으면 유지보수 담당자가 시스템을 이해하는 데 어려움을 겪는다.
테스트 산출물: 테스트 계획, 테스트 케이스, 테스트 결과서, 테스트 데이터 등이 유지보수 단계에서 회귀 테스트와 추가 테스트를 수행하는 데 필요하다.
환경 설정 및 계정 정보: 시스템 운영에 필요한 모든 환경 설정 파일, 서버 접근 계정, 데이터베이스 계정, API 키 등도 안전하게 인계되어야 한다. 이때 보안을 위해 암호화된 형태로 제공하거나, 인계 직후 비밀번호를 변경하는 등의조치가 필요하다.
3.2 지식 인계
문서로记录하기 어려운 암묵지를 어떻게 전달하느냐가 유지보수 이관의 가장 challenging한 부분이다.
설계 의도 전달: 특정 설계 결정의 이유, 즉 "왜 이렇게 설계했는가"는 문서로 남아있기 어렵다. 개발자는 이러한 설계 의도를 직접 설명해야 하며, 유지보수 담당자는 그것을 제대로 이해해야 한다.
특이사항 공유: 특정 모듈에서 주의해야 할 점, 기존에 문제가 있었던 부분, 성능 최적화를 위해 특별한 처리가 된 부분 등을 알려줘야 한다. 이러한 정보가 없으면 유지보수 과정에서 예상치 못한 문제를 만나게 된다.
장애 처리 노하우: 과거에 발생한 장애와 그 해결 방법, 자주 발생하지 않는但不定期로 발생하는 문제에 대한 대응 방법 등을 공유해야 한다. 이러한 노하우가 없으면 장애 처리 시간이 길어진다.
교육 및ハンズ온: 이론적 설명만으로는 부족한 경우가 많으므로, 실제 시스템에서 操作 해보는 教育(ハンズオン)을 통해 실무적 지식을 전달해야 한다.
3.3 이관 확인 및 검증
이관 완료 후에는 이관 대상이 완전하게 전달되었는지, 그리고 전달된 시스템이 운용 가능한 상태인지를 확인해야 한다.
인계 목록 검증: 계약 또는 이관 계획서에서 정한 인계 대상 목록을 기반으로, 모든 항목이 실제로 전달되었는지를 확인한다. 누락된 항목이 있으면 즉시 개발자에게补足을 要求해야 한다.
가치 확인: 전달된 소스 코드가 실제로 빌드되고, 실행 가능한 상태인지를 확인한다. 빌드 자체가 안 되는 코드는 인계받을 가치가 없다.
문서 완전성: 문서가 완전한 상태인지, 필요한章節이 빠지지 않았는지를 확인한다. 불완전한 문서는 오히려 독者为을 유도할 수 있다.
접근 권한 이전: 버전 관리 시스템, 서버, 데이터베이스 등への 접근 권한이 적절히 이전되었는지를 확인한다. 접근 권한이 이전되지 않으면 유지보수가 불가능하다.
3.4 이관 후 사후 관리
유지보수 이관 완료 후에도 일정한 사후 관리가 필요하다.
질문対応 기간: 개발 조직이 일정 기간(예: 1~3개월) 동안 유지보수 조직의 질문에 대응할 수 있는 체계를 유지해야 한다. 이관 직후에는 예상치 못한 문제들이 드러나기 마련이며, 이를 즉시 대응할 수 있어야 한다.
결함處理 책임: 이관 시점에서 발견되지 않은 기존 결함의 책임 소재를 명확히 해야 한다. 일반적으로 이관 전 개발 단계에서 발생한 결함은 개발자의 책임이고, 이관 후 운영 과정에서 신규 발생한 결함은 운영자의 책임이다.
성과 분석: 이관 프로세스가 얼마나 효과적으로 이루어졌는지, 이관 후 유지보수 과정에서 문제가 있었는지를 분석하여 향후 이관 프로세스를 개선해야 한다.
3.5 감리자 관점에서의 유지보수 이관
감리자는 유지보수 이관 과정에서以下の 사항을重点적으로확인해야 한다.
계약 준수: 계약서에서 정한 이관 대상, 이관 일정, 이관 조건 등이 준수되었는지를 확인한다.
위험 평가: 이관이 적절히 이루어지지 않을 경우 발생할 수 있는 riscos를 식별하고, 그것이 현실화되지 않았는지를 확인한다.
이관 품질: 이관 대상의品質과 완전성을 검증하고, 이관 후 운영 조직의 역량 보유 상태를평가한다.
4. 핵심 용어 정리
| 용어 | 영문명 | 설명 |
|---|---|---|
| 유지보수 이관 | Maintenance Transition | 개발 조직에서 운영 조직으로 책임과 자료를 引継ぐ 과정 |
| 암묵지 | Implicit Knowledge | 문서화하기 어려운 체득된 지식과 경험 |
| 版本管理 시스템 | Version Control System | 코드의 版本을 관리하는 시스템 (Git, SVN 등) |
| 빌드 스크립트 | Build Script | 소스 코드를 실행 파일로 변환하는 자동화 스크립트 |
| 회귀 테스트 | Regression Testing | 변경으로 인해 기존 기능이 손상되지 않았는지 확인하는 테스트 |
| 지식 인계 | Knowledge Transfer | 개발자가 보유한 시스템에 대한 이해를 전달하는 과정 |
5. analogies 📢
유지보수 이관은 요리점 대표 chef의 승계와 같다. 오랜 세월 해온 맛의 비법, 재료 관리 요령, 손님 응대 노하우 등을 쌓아온 chief가 은퇴하면서後任에게 그 모든 것을 переда해야 한다. 비법의、材料에 대한知識, 장비를 다루는 요령 등을文書화하기 어려운 경우가 많으므로, 직접 손대서 보여주고,失敗를 통해 배우게 하고,질문을 받고回答하는 과정이 필요하다. 만약 chef가退休 전에 비법을 제대로 승계하지 않으면, 後任은 실패를 반복하며 고객을 잃을 수 있다. Likewise,软件开发가 완료되어开发자가 다른 프로젝트로 이동하면, 그들이开发 과정에서蓄えた 시스템에 대한深い 이해(설계 의도, 특이사항, 장애 처리 노하우)를 유지보수 담당자에게 전달해야 한다.文書화된 文書(설계 문서, 매뉴얼)뿐 아니라 言語화하기 어려운 암묵지도 함께 전달되어야 하며, 이를 통해 시스템의 지속적인与服务 제공이 가능해진다.