Index
Search
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 = 프로그램에서 사용된 피연산자 총 수