Search
🏫

[소프트웨어 공학] 8. 소프트웨어 유지보수

Created
2023/05/17 11:48
Tags
CS
Software Engineering
Last edited time
2023/06/17 07:05
Status
Done
Search
[소프트웨어 공학] 12. 상호작용 다이어그램
CS
Software Engineering
2023/06/11 15:16
[소프트웨어 공학] 12. 상호작용 다이어그램
CS
Software Engineering
2023/06/11 15:16

1. 재공학과 역공학

1.1. 재공학

정의
기존 레거시 시스템 개선 및 유지보수, 변경
아파트 리모델링 같은 개념
프로세스
소스코드 변환
역공학 - 소스 코드 분석 → 설계 문서 추출
프로그램 재구조화 - 제어 구조 개선
프로그램 모듈화 - 모듈 구조 개선
데이터 재공학 - 데이터 구조 변경
재공학 비용
재구조화 작업이 소스코드 변환 작업보다 비용이 큼
아키텍처 바꾸는 경우 가장 큰 비용 밟생

1.2. 역공학

프로그램이나 사용자 메뉴얼 등으로 부터 기능 명세나 설계문서를 만드는것
코드 → 설계 문서 만듦
유지보수를 위해 시스템에 대한 이해가 선행되어야 함

1.3. 재구조화와 재문서화

재구조화
코드 리팩토링
재문서화
문서를 새로 만드는 일
코드, 기존 문서등으로 부터 설계 문서를 유도하는 일
문서의 의미를 바꾸지 않고 개조하는 일

2. 소프트웨어 형상 관리

소프트웨어 형상 관리
소프트웨어 시스템의 변경을 제어하고 관리하기 위한 프로세스
소프트웨어 형상 관리 활동

2.1. 항목의 식별

형상 관리가 필요한 항목을 정하고 베이스라인을 수립
관리할 항목 선정 및 항목의 특성 기록
요소 구분을 위해 항목 유형, 이름, 버전 번호가 필요
형상 자체도 버전 번호를 가짐
기준선
형상 관리 항목이 개발되어 공식적으로 인정된 상태

2.2. 버전 관리

누가 무엇을 언제 변경했는지 기록하여 이력을 제공하는 버전관리 필요
소스 코드의 버전 관리

2.3. 형상 구축과 변경 통제

형상 구축
시스템 형상을 만들기 위해 그것을 구성하는 요소들의 정확한 버전을 파악하고 연결
변경 통제
형상 관리 항목들에 대한 변경을 통제하기 위한 의사결정 프로세스
변경 제어 프로세스, 형상 상태의 보고, 형상 감사 포함

3. 소프트웨어 척도

3.1. 사이클로매틱 복잡도

유지보수를 위한 수정 작업은 모듈화 정도와 모듈의 복잡도, 가독성에 큰 영향을 받음
측정 척도가 필요
사이클로매틱 복잡도
메케이브 그래프 이론
프로그램에 존재하는 독립적인 경로의 수로 복잡도 평가
사이클로매틱의 수
제어흐름 그래프에서 영역(Region)의 수
엣지 수 - 노드 수 + (2 x 연결 요소 수)
비교 횟수 + 1
if, while 문 등이 3개가 있음
사이클로매틱 수 = 3 + 1 = 4
영역의 수로 보아도 4

3.2. 소프트웨어 사이언스

할스테드의 이론
코드에서 측정한 값으로 복잡도 계산
프로그래밍 또는 디버깅에 드는 노력을 예측하는데도 사용
척도
n1 = 프로그램에서 사용된 유일 연산자 수
n2 = 프로그램에서 사용된 유일 피연산자 수
N1 = 프로그램에서 사용된 연사자 총 수
N2 = 프로그램에서 사용된 피연산자 총 수