2004년 7월 25일 일요일

communication, software reverse engineering

어떤 사람이 하루만에 만든 software를 분석하고 reverse engineering하는 데 열흘이 걸렸다고 하자.
그렇다면 developer (처음 만든 사람)는 천재이고 reverse engineer는 바보라서 10배의 시간을 소모한 걸까?


생각해보면 꼭 그렇지 만은 않다.
program이 너무 어렵게 작성되서 그런 것일 수도 있다.
세상 많은 책들이 그 책보다 더 두껍고 장황한 참고서, 해설서가 주렁주렁 매달린 경우가 있다.
(사서삼경이라든지, 손자병법이라든지, 플라톤의 공화국이라든지, 마키아벨리의 군주론이라든지.)


그것을 만들 당시의 상황과 과정, background 등이 다르기 때문에
그것을 분석하는 사람은 그것을 만든사람보다 더 많은 시간을 소비해야할 필요가 있다.


또 다른 예로 단지 10분만에 일어난 우발적인 살인사건이라고 하더라도 그것을 현장검증하고 재판하고 재현하는 데는
아주 오랜 시간이 걸린다. 모방범죄를 저지르는 데 이용한다고 쳐도 10분보다는 더 많은 시간을 분석해야 동일범의 소행으로 위장할 수 있다.


그래서 software를 개발할 때도 책을 쓸 때처럼 이해하기 쉽게 작성할 필요가 있다.
조금 장황해지고 책이 두꺼워지더라도 아무도 이해할 수 없는 책을 쓴다면 그것은 베게나 땔감으로 쓰이게 될 것이다.
그리고 너무 이해하기 어렵게 만들면 다음 사람은 그것을 분석할 바에야 새로 만들어 버리고 마는 수도 있다.
(Engineering에서 별로 권장하지 않는 상황이지만 분석 cost가 재작성, 재분배 cost보다 크다면 불가피하다.)

댓글 없음:

댓글 쓰기