본문 바로가기
IT 이론/소프트웨어공학

소프트웨어 재공학(Reengeneering)

by 지식id 2016. 9. 19.
반응형

재공학은 기존 프로그램의 개선이나 유지보수의 관점에서 작게 볼 수도 있으나 실제로 그보다 큰 규모의 구조적 재설계를 의미하는 경우가 많다. 어찌보면 미묘한 차이일수도 있지만 굳이 구분을 해 보자면 아래와 같다.


오류 투성이의 프로그램을 쓰면서 새로운 기능이 좀 필요하면 추가도 하고 틈틈이 시간이 나면 오류를 수정해 나간다. 이는 유지보수이다.

도서히 안되겠다 싶어 프로그램을 갖다 버리고 새로 도입하려다 보니 금전적으로 부담이 되기도 하고 새롭게 개발된 프로그램이 사용성이나 안정성 면에서 더 나을거란 보장이 없다. 그래서 지금 있는 프로그램을 뒤집어 엎어서 구조적인 부분부터 다시 점검해서 오류가 없도록 전면적인 수정을 한 뒤 리뉴얼을 하여 다시 오픈했다. 이는 재공학이다.


물론 재공학은 유지보수의 범주에 포함되는 개념이므로 굳이 저렇게 구분을 하는 것이 옳지 않다고 볼 수도 있다. 하지만 소프트웨어 공학에선 분명히 '재공학' 이라는 개념이 존재 하므로 일반적인 유지보수와 어떻게 구별되는 개념인지 이해해야 한다.


재공학은 어찌보면 유지보수의 생산성을 위한 행위라고 할 수 있고,

예방 유지보수(Preventive maintenance) 행위라고 할수도 있다.


재공학의 주요 활동

 - 분석(Analysis)

 - 개조(재구조, 재구성)

 - 역공학(Reverse Engineering)

 - 이식(Migration)


큰 규모 재공학의 대표적인 예는 금융권 차세대 프로젝트다. 금융권은 보안이 생명이기 때문에 항상 한 세대 뒤떨어진, 뒤떨어졌지만 안정성이 보장된 기술을 사용한다. 아직까지 코볼과 UNIX(LINUX아님)을 사용하는 은행이 많을 정도이니 말 다했다. 그리고 아직 많은 은행에서 소프트웨어공학은 뒷전이고 전공자를 많이 뽑아 전문성을 키우려는 의지부터가 강하지 못한것 같다. IT 이해능력 보단 업무적인 이해를 우선시 하여 은행원들에게 코딩 교육을 시켜 전산부로 투입시키다 보니 리더급은 거의 대부분 은행원출신들이고, 실무자들 조차 IT전문성이 부족한 경우가 많다. 그리고 그런 사람들이 절차와 체계를 만들다 보니 잘 구축된 시스템도 갈수록 개판이 된다.

이렇게 뒤떨어진 시스템을 보수적인 마인드로 유지보수하다 보니 보통 5~15년 주기로 차세대 프로젝트가 필요해 진다. 전체 시스템을 까뒤집어서 다시 설계하고 전면 개편하는 것이다. 이 과정에서 코볼이 리눅스로 되기도 하고 UNIX가 LINUX로, DB2가 ORACLE로 바뀌기도 한다. 프로젝트 기간만 수년, 비용만 수천억원이 들어가기 때문에 어찌보면 정말 재공학의 끝판왕이라고 할 수 있다.

반응형

댓글