Professional Documents
Culture Documents
11 유지보수
11 유지보수
소프트웨어 공학의 모든 것
최은만
생능출판사
학습 목표
목차
11.1 유지보수의 소개
11.2 유지보수 작업 과정
11.3 형상 관리
11.4 역공학
11.5 리엔지니어링
소프트웨어 공학의 모든 것 2
유지 보수
• 개발 후에 이루어지는 소프트웨어의 변경 작업
• 소프트웨어가 유용하게 활용되는 기간
• 소프트웨어는 환경과 비즈니스 요구에 따라 진화함
• 유지보수에 드는 노력
소프트웨어 공학의 모든 것 3
11.1 유지보수 소개
• 여러 가지 이유로 수정 후 배포하는 작업
– 버그 제거
– 운영 환경의 변화
– 정부 정책 , 규례의 변화
– 비즈니스 절차의 변화
– 미래 문제를 배제하기 위하여 변경
소프트웨어 공학의 모든 것 4
유지보수 유형
소프트웨어 공학의 모든 것 5
Lehman 의 법칙
• 시스템의 타입
– E 타입 – 계속 진화하는 타입
– S 타입 – 완벽히 정의할 수 없는 타입 ( 체스 게임 )
1. 지속적인 변경의 원칙
2. 엔트로피 , 복잡도 증가의 법칙
3. 자기 통제의 법칙
4. 안정성 유지의 법칙
5. 친근성 유지의 법칙
6. 지속적 성장의 법칙
7. 품질 저하의 법칙
8. 피드백 시스템의 법칙
소프트웨어 공학의 모든 것 6
유지 보수의 종류
소프트웨어 공학의 모든 것 7
10.2 유지 보수 작업 과정
① 현재 프로그램의 이해
– 프로그램 로직을 추적하거나 요구 , 설계 등에 대한
이해가 필요
② 변경 파악과 분석
– 필요한 변경을 파악하고 그 영향도와 소요 비용 ,
변경에 의한 리스크를 분석
③ 변경 영향 파악
– 이해당사자들에게 알리고 피드백을 얻음
④ 변경 구현 , 테스트 , 설치
– 시스템을 수정하고 확인 후 설치
소프트웨어 공학의 모든 것 8
유지 보수 작업 분포
소프트웨어 공학의 모든 것 9
유지 보수 프로세스 모델
• 즉시 수정 모델
• 반복적 개선 모델
• 재사용 중심 모델
소프트웨어 공학의 모든 것 10
유지보수 프로세스 모델의 비교
소프트웨어 공학의 모든 것 11
프로그램 이해
소프트웨어 공학의 모든 것 12
변경 파악과 분석
• 형상 관리 (Configuration Management)
– 개발 주기 동안 생성된 문서를 관리하고 소프트웨어
시스템과 컴포넌트의 상태를 추적하는 작업
• 베이스 라인
– 소프트웨어 형상 항목 (configuration item) 의 집합
• 목적
– 프로젝트의 중요한 상태 정의
– 프로덕트가 특정 상태에 이르렀는지를 나타냄
– 계속되는 개발 , 유지보수 작업의 기준
– 형상 항목에 대한 변경을 제어하는 메커니즘
소프트웨어 공학의 모든 것 15
형상관리의 필요성
• 여러 버전을 유지하여야 할 경우
– 다양한 고객을 만족시키기 위한 제품을 유지하기
위해
소프트웨어 공학의 모든 것 16
형상관리 절차
• 소프트웨어 형상 파악
• 형상 변경 제어
• 소프트웨어 형상 감사
• 소프트웨어 형상 상태 보관
소프트웨어 공학의 모든 것 17
형상 파악
• 고유 식별자 – 고유 번호 예 , LIS-Incl-DM
• 이름
• 문서 종류 – 요구 분석서 , 설계 문서 , 원시코드 , 테스트
케이스
• 문서 파일 – 파일 이름과 경로
• 저자
• 생성 날짜 , 목표 완성일
• 버전 번호
• 업데이트 이력
• 설명
• SQA 담당자 – 품질 보증 책임자
• SCM 담당자 – 항목 체크한 책임자
소프트웨어 공학의 모든 것 18
형상 변경 제어
• 변경의 이유를 파악
– 소프트웨어의 결함
– 하드웨어 변경
– 운영 요구의 변경
– 고객이나 사용자로부터 개선 요구
– 예산 , 프로젝트 일정 , 기간의 변경
• 변경 분석
• 변경 제안 준비
– 변경의 설명 , 조직 및 개발자 파악 , 변경의 이유 , 영향
받는 항목 , 소요 노력 , 프로젝트 일정에 대한 영향
• 변경 제안의 평가
• 변경을 추가
소프트웨어 공학의 모든 것 19
형상 감사
소프트웨어 공학의 모든 것 20
10.4 역공학
• 역공학의 정의
– 대상 시스템을 분석하여 시스템의 컴포넌트와 관계를
찾아내어 같은 수준의 다른 표현이나 더 높은 수준의
표현으로 만드는 작업
• 프로그램의 추상 수준을 점증적으로 복구해 나가는 과정
소프트웨어 공학의 모든 것 21
역공학 작업순서
• 역공학 도구의 구성
소프트웨어 공학의 모든 것 22
역공학의 용도
소프트웨어 공학의 모든 것 23
재문서화
• 목적
– 소프트웨어의 이해를 증진시키기 위하여 시스템의
다른 관점
– 현재 보유한 문서를 개선
– 새로 수정된 프로그램의 문서화
소프트웨어 공학의 모든 것 24
설계 복구
소프트웨어 공학의 모든 것 25
11. 5 리엔지니어링
소프트웨어 공학의 모든 것 26
리엔지니어링 과정
• 개선이 필요한 위치 파악
• 개선 전략을 선택
• 제안된 개선의 구현
• 목표를 기준으로 시스템 평가
소프트웨어 공학의 모든 것 27