반응형
아래 내용은 예문사의 '정보처리기술사 개정 4판 1쇄'를 기본으로, 필자의 이해를 덧붙여 요약 및 정리한 자료임을 명시합니다.
소프트웨어 3R
SW 3R의 정의
- 레포지토리를 기반으로 역공학, 재공학, 재사용을 통해 SW 생산성을 극대화하는 기법
- Reverse Engineering
- Re-Engineering
- Reuse
SW 3R의 목표
- 시스템의 이해, 변경, 테스트 용이
- SW 유지보수 용이성 향상으로 비용 절감
- 현 시스템의 컴포넌트 재사용을 통해 SW 위기 극복
* 순공학: 추상개념의 현실화 [분석 → 설계 → 구현]
* 재구조화: 기능 변경 없이 소스 코드(구조)의 재편성
SW 3R의 구성 요소
구성요소 | 설명 |
역공학 | - Reverse Engineering - 구현된 것을 분석하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일 |
재공학 | - Re-Engineering - 역공학으로 재구조화된 SW를 기반으로 다시 추상개념을 현실화하는 작업 |
재사용 | - Reuse - 재공학을 통해 구현된 SW를 재사용하는 것 |
역공학
요소 | 설명 |
역공학의 정의 | - 개발 단계를 역으로 거슬러 올라가 기존 개발된 시스템의 코드나 데이터로부터 설계 명세나 요구 분석 산출물 등을 도출해 내는 작업 |
역공학의 장점 | - 상용화되거나 이미 개발된 SW의 분석을 도와줌 - 기존 시스템의 자료와 정보를 설계 수준에서 분석할 수 있어 유지보수성 향상에 기여 - 기존 시스템 정보를 레포지토리에 보관하여 CASE 사용을 용이하게 함 |
역공학의 종류 | - 논리 역공학: 원시코드로부터 분석 - 자료 역공학: 기존 DB로부터 분석 |
반응형
재공학
요소 | 설명 |
재공학의 정의 | - SW 역공학 및 재구조화 등의 기술을 이용, SW를 분석하여 정보를 추출하고 이를 다시 순공학을 통해 새롭게 구현함으로써 SW 부품으로 만들어내는 기술 및 작업 - 역공학 → 재구조화 → 순공학 |
재공학의 장점 | - CASE 툴의 사용을 용이하게 하여 현재 시스템의 유지보수성 향상 - 표준을 준수하여 시스템의 이해와 변형을 용이하게 하며, 유지보수 비용 및 시간 절감 |
재공학의 절차 | 1. 원시코드로부터 정보를 추출하는 단계 2. 역공학 단계 및 시스템 향상과 검증 단계 3. 순공학 단계 및 설계와 최적화 단계 4. 원시코드 생성 단계 (추출 → 역 → 순 → 생성) |
재사용
요소 | 설명 |
재사용의 정의 | - SW 개발 관련 지식(기능, 모듈, 구성 등)을 표준화하여 개발 생산성을 높이기 위해 반복적으로 사용하기에 적합하도록 구성하는 방법 |
재사용의 목표 | - 신뢰성(Reliability) 향상: 기능, 속도, 안정 등 사전 성능이 검증됨 - 확장성(Extensibility) 향상: 검증된 기능 기반으로 업그레이드 용이 - 생산성(Productivity) 향상: 비용, 시간 등 전체적 개발 프로세스 향상 - 사용성(Usability) 향상: 독립된 컴포넌트로서의 조립성 제공 - 유지보수성(Maintainability) 향상: 품질 개선, 오류 수정, 운영 및 업그레이드 용이 - 적응성(Adaptability) 향상: 독립된 컴포넌트로서의 새로운 프로세스 적용 용이 |
재사용 구현 기법
기법 | 설명 |
Classification | - 코드, 객체, 변수 등의 속성에 대해 표준 Pool을 활용하여 분류 - Code Dictionary, Variable Standardization 등 |
Design Pattern | - 특정 도메인에 대한 시스템 경험자의 설계 및 구현 결과 재활용 - 비즈니스 프로세스, 공통 함수/언어 등 |
Modulation | - 시스템 분해, 추상화 등으로 디버깅, 테스트, 인테그레이션, Modification을 수행 - Loosely Copied, Tightly Cohesion 추구 고품질 SW 생산 |
객체지향방법론 | - 상속성, 추상화, 다형성, 동적 바인딩 등의 활용 - Class, 4GL에서의 Component 등 |
CBD | - ITA, EAP 기반의 컴포넌트 활용 - Active X, DCOM, EJB, CORBA 등 |
재사용 활성화 방안
1) 재사용에 대한 비전 공유
- 재사용의 필요성, 장점에 대한 정량적인 비전 제시 및 재사용 대상의 자산화에 대한 인식 증진
2) 재사용 인프라 구축
- 재사용을 위한 공동 레포지토리, 활용 시스템, 프로세스 및 관리조직의 구축 및 지속적인 관리
3) 체계적, 지속적 교육 및 OOP, CBD 활용 등
역공학 방어 기술, 코드 난독화 (Code Obfuscation)
1) 코드 난독화의 정의
- 프로그램 변환의 일종으로 원래 코드를 변화시켜서 읽기 어렵게 하거나 분석하기 어렵게 만들어 역공학을 통한 공격을 방어하기 위한 기술
2) 코드 난독화 분류
종류 | 설명 |
소스코드 난독화 | - 프로그램 소스 코드를 알아보기 힘든 형태로 바꾸는 기술 |
바이너리 난독화 | - 컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술 |
3) 코드 난독화 방법
방법 | 설명 |
심볼 정보 제거/변경 | - 사람이 이해할 수 있는 정보를 최대한 제거 및 변경 - C/C++: 심볼 정보 제거 - Java: 심볼 정보 변경 |
불필요 함수 추가 | - 실행되지 않는 함수 추가, 아무 것도 하지 않는 함수 삽입 |
코드 뒤섞기 | - 관련 코드 멀리 떨어진 곳으로 배치, 반복 구문 합쳐서 익명함수화 - 똑같은 함수 복사하여 각기 다른 지점에서 다른 함수 이름 사용 등 |
데이터 인코딩 | - 테스트 문자열을 인코딩하여 필요한 경우만 디코딩을 통해 사용 |
반응형