본문 바로가기

기술사 준비/SW공학 - 소프트웨어 테스트

[SW개발] 소프트웨어 3R

반응형

아래 내용은 예문사의 '정보처리기술사 개정 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: 심볼 정보 변경
불필요 함수 추가 - 실행되지 않는 함수 추가, 아무 것도 하지 않는 함수 삽입
코드 뒤섞기 - 관련 코드 멀리 떨어진 곳으로 배치, 반복 구문 합쳐서 익명함수화
- 똑같은 함수 복사하여 각기 다른 지점에서 다른 함수 이름 사용 등
데이터 인코딩 - 테스트 문자열을 인코딩하여 필요한 경우만 디코딩을 통해 사용


 

반응형