본문 바로가기
Computer Science/Software Engineering

[소공] 11장 유지보수

by na1-4an 2023. 12. 14.

11-1 유지보수의 소개

1. 유지보수 정의

: 개발 후 이뤄지는 소프트웨어 변경 작업. 수정 후 배포하는 작업.

 

2. 변경의 이유(5)

  • 버그 제거
  • 운영 환경의 변화
  • 정부 정책의 변화
  • 비즈니스 절차의 변화
  • 미래 문제 배제를 위한 변경

 

3. 유지보수 유형(4)

  • 수정형 유지보수 - 발견한 결함을 고치기 위해 수정
  • 적응형 유지보수 - 변경된 환경에서도 사용 가능하게 소프트웨어 이식 및 변경
  • 완전형 유지보수 - 성능이나 유지보수성을 개선하기위해 실시
  • 예방형 유지보수 - 오류 발생을 방지

 

4. Lahman의 법칙(8)

  • 시스템 타입
    • E타입: 계속 진화하는 타입(완전히 정의 X)
    • S타입: 완전히 정의할 수 있는 타입(체스게임)
  1. 지속적인 변경의 원칙 - 지속적으로 좋은 방향으로 진화되어야 함.
  2. 엔트로피, 복잡도 증가의 법칙 - 변경될 수록 복잡해짐.
  3. 자기 통제의 법칙 - 시스템 진화 과정은 자기 통제의 과정
  4. 안정성 유지의 법칙 - 유지보수할 때 평균 작업량을 보임.
  5. 친근성 유지의 법칙 - 시스템 평균 성장률은 일정.
  6. 지속적 성장의 법칙 - E타입은 사용자를 만족시키기 위해 성장해야함.
  7. 품질 저하의 법칙 - E타입은 완전히 적응하는게 아니면저하됨.
  8. 피드백 시스템의 법칙 - 여러 관련자들의 피드백으로 구성됨.

 

11-2 유지보수 작업 과정

1. 유지보수 작업 과정

  • 현재 프로그램 이해- 로직, 요구, 설계 이해
  • 변경 파악 및 분석 - 비용, 리스크 분석
  • 변경 영향 파악 - 이해당사자에게 알리고 피드백 얻음
  • 변경 구현, 테스트, 설치 - 수정, 설치

 

2. 유지보수 프로세스 모델(3)

  • 즉시 수정 모델
  • 반복적 개선 모델 
  • 재사용 중심 모델

 

3. 프로그램 이해

: 원시코드로 부터 멘탈 모델로 표현하는 작업. 추상성 추구

  • 원리1: 상향식(bottom-up)
  • 원리2: 묵음화(chunking)

 

4. 변경 파악과 분석

: 변경 요구를 바탕으로 변경할 부분 찾음.

<변경 분석(3)>

  • 변경 효과 분석
  • 변경하는데 드는 비용, 시간 예측
  • 리스크 파악

 

11-3 형상 관리

1. 형상관리

: 산출물을 관리하고, 시스템과 컴포넌트의 상태를 추적하는 작업.

<형상 관리 활동(4)>

  • 버전 관리 - 컴포넌트에 대한 변경이 충돌 않도록.
  • 시스템 구축 - 데이터, 라이브러리 등을 모아 컴파일해 시스템을 만듦.
  • 변경 관리 - 변경 요청 추적.
  • 릴리즈 관리 - 고객 사용이 가능한 시스템의 버전 추적

<형상 관리 용어(12)>

 

2. 베이스 라인

: 소프트웨어 형상 항목의 집합. 소프트웨어 결과물의 집합.

<베이스 라인 목적(4)>

  • 프로젝트의 중요한 상태 정의
  • 프로덕트가 특정 상태에 이렀는지를 나타냄
  • 계속되는 개발, 유지보수 작업의 기준
  • 형상 항목에 대한 변경을 제어하는 메커니즘

 

3. 형상관리 절차

  1. 형상 파악: 베이스라인 등을 구별하기 위해 명명체계 정의
  2. 형상 변경 제어: (과정(5)) 변경 이유 파악, 변경 분석, 변경 제안 준비, 변경 제안 평가, 변경 추가
  3. 형상 감사: (의무(3))
    1. 베이스라인 구축을 위한 메커니즘 정의
    2. 형상 항목 검토(verification): 업데이트외어도 차이가 없음을 보장
    3. 형상 항목 확인(validation): 사용자가 원하는 문제를 해결했는지 확증
  4. 형상 상태 보관

 

11-4 역공학

1. 역공학

: 프로그램의 추상 수준을 점증적으로 복구해 나가는 과정

 

2. 역공학 작업 순서(3)

  1. 소프트웨어 결과 추출 - 클래스, 오퍼레이션 등의 관계를 추출해 db에 저장.
  2. 다이어그램 레이아웃 생성 - 위의 결과를 다이어그램으로 그리기 위해 레이아웃 계산
  3. 설계 다이어그램 디스플레이 - 레이아웃에 따라 다이어그램으로 그려짐.

 

3. 역공학의 용도(4)

  • 프로그램 이해 - 소프트웨어 구조, 기능, 동작 이해에 용이.
  • 정형적 분석 - 문제 감지 가능
  • 테스트 케이스 생성
  • 리엔지니어링을 위해 사용됨.

 

4. 재문서화

: 의미적으로 동일한 추상 수준을 가진 표현 생성.

<목적(3)>

  • 소프트웨어의 이해 증진
  • 현재 보유한 문서 개선
  • 새로 수정된 프로그램의 문서화

 

5. 설계 복구

: 원시 코드를 자세히 검토해 높은 표현을 찾고, 추출하는 작업.

  • 원시 코드 이해에 도움
  • 향후 베이스라인으로 사용
  • 객체 지향 프로그램인 경우 UML도구에 의해 자동화
  • 도메인 지식 필요없어도 됨.

 

11-5 리엔지니어링

1. 리엔지니어링

: 시스템 또는 컴포넌트를 재구조화하는 과정

<목적(5)>

  • 소프트웨어 아키텍처 개선
  • 소프트웨어 복잡도 경감
  • 변경에 대한 적응성 개선
  • 성능, 효율성, 자원 유용성 개선
  • 소프트웨어 시스템의 유지보수 개선

 

2. 리엔지니어링 과정

  • 개선이 필요한 위치 파악
  • 개선전략을 선택
  • 제안된 개선 구현
  • 목표를 기준으로 시스템 평가

'Computer Science > Software Engineering' 카테고리의 다른 글

[소공] 9장 코딩  (0) 2023.12.14
[소공] 7장 아키텍쳐와 패턴  (0) 2023.12.14
[소공] 6장 설계 원리  (0) 2023.10.28
[소공] 5장 요구 모델링  (0) 2023.10.27
[소공] 객체지향 방법론과 UML  (1) 2023.10.13