티스토리 뷰

프로젝트 수행을 하다보면 많은 Know-How가 쌓이게 됩니다. 
그래서인지 가끔 이런 이야기를 듣기도 합니다.
이 부분은 지난번에 만든 것과 비슷하잖아. 그대로 가져다가 사용하면 금방 하겠네!
소프트웨어공학적으로는 분명히 맞는 이야기이지만 현실적으로는 쉽지 않은 것이 사실입니다. 
바로 소프트웨어의 재사용성(Re-Use)에 대한 고려 없이 프로젝트를 진행하기 때문인데요. 
프로젝트 수행 기간의 단축에 따른 충분한 설계 없이 개발에 들어가는 현실 때문인 것 같기도 합니다. 

소프트웨어 3R의 정의

- 완성된 소프트웨어 프로그램을 기반으로 역공학(Reverse-Engineering), 재공학(Re-Engineering), 재사용(Re-Use)를 통해 소프트웨어의 생산성을 극대화 하는 기법

소프트웨어 3R의 필요성

- 소프트웨어 유지보수 효율성 향상 및 비용 절감
- 소프트웨어 개발 생산성 향상
- 소프트웨어 이해, 변경, 테스트 용이
- 소프트웨어 변경 요구사항에 대한 신속한 대응
- 소프트웨어 위기 (소프트웨어 개발 대형화, 복잡화, Life-Cycle 감소) 극복

소프트웨어 3R의 개념도
 



소프트웨어 3R 구성


1) 역공학 (Reverse-Engineering)

- 기존 개발된 시스템을 CASE를 이용하여 사양서, 설계서 등의 문서로 추출하는 작업
- 개발 단계를 역으로 올라가 기존 개발된 시스템의 코드나 데이터로부터 설계 명세서나 요구 분석서 등을 도출하는 작업

2) 재공학 (Re-Engineering)
- 기존 시스템을 널리 사용되는 프로그래밍 표준에 맞추거나 고수준의 언어로 재구성하거나 타 하드웨어에서 사용할 수 있도록 변환하는 작업

3) 재사용 (Re-Use)
- 이미 개발되어 기능, 성능, 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용
- 다른 시스템에 이용되고 있는 소프트웨어를 파악하고 재구성하여 새로운 시스템에 적용하기 위한 작업
 
소프트웨어 3R의 활성화 방안

1) 재사용에 대한 비전 공유
- 경영자, 관리자, 개발자 간의 공통된 이해 필요
- 재사용의 필요성 및 장점에 대한 비전 제시
- 재사용 가능한 모듈을 회사의 자산으로 인식할 수 있도록 노력

2) 재사용 Infrastructure 구성
- 재사용을 위한 공동 Repository, Matrix, 활용 시스템 구축
- 재사용 프로세스의 구축 및 활용 관리
- 체계적이고 지속적인 교육 실시 및 CBD, 객체지향방법론을 활용 

역공학(Reverse Engineering)과 코드 난독화(Code Obfuscation)의 관계

역공학이라고 하면 우선 떠오르는 것이 다른 사람이 만든 프로그램에서 소스 코드를 생성해서 여기에 악성코드를 추가하는 것을 생각하기 쉬울 것 같습니다. 
역공학의 이러한 문제점을 방지하기 위해 코드 난독화라는 기법이 있는데요.
역공학을 했을 때, 소스코드를 거의 해석하기 어려운 상태로 만드는 방법이 바로 코드 난독화(Code Obfuscation) 입니다. 
여기에서 이야기하는 3R과는 차이가 있지만 실제 자바나 닷넷의 경우, 이런 코드 난독화 기법을 사용해서 프로그램을 변환합니다.  

 
댓글
댓글쓰기 폼