본문 바로가기

개발 Note/it 이야기

내 주변을 둘러보니 변화와 쇠퇴뿐...-리펙토링

반응형

소프트웨어 개발을 비유하는 가장 흔한 메타포는 건물의 건축이다.
버트란트 마이어(Bertrand Meyer)는 'Software Construction'이라는 표현을 사용했다.

하지만 건축이라는 것을 생각을 이끄는 메타포로 사용한다면 다음 세가지를 전제하게 된다.

1. 설계자(Architect)가 설계도를 그린다.
2. 건축업자는 땅의 기반을 다지고, 상부구조를 세우고, 전선과 배관을 잇고,최종 마루리를 한다.
3. 입주자가 건물 안에 이사와서 행복하게 산다. 문제가 생기면 건물 관리소에 연락해서 고친다.

하지만 Software는 이런식으로 돌아가지 않는다. 소프트웨어는 건축보다 오히려 정원일 에 가깝다.
정형화 되어있기 보다는 유기적인 존재이다.

1. 초기 계획과 조건에 따라서 여러가지 식물을 심는다.
2. 몇몇은 자라고 몇몇은 퇴비가 될 운명이다.
3. 빛과 그림자, 바람과 비의 상호작용을 더 잘 이용하기 위해 식물들의 상대적인 위치를 옮기기도 한다.
4. 너무 많이 자란 식물은 포기를 나누거나 가지치기를 한다.
5. 식물의 색이 서로 충돌하면 더 아름답게 보이도록 위치를 바꾸기도 한다.
6. 잡초를 뽑고, 특별히 더 돌볼 필요가 있는 식물에게는 비료를 주기도 한다.
7. 정원의 건강 상태를 지속적으로 관찰하며, 필요하면 토양, 식물, 정원 배치를 조정하기도 한다.

정원일의 경우에는 초기계획 이후에 전체적인 흐름은 있지만, 보다시피 상황상황에 맞춰 대처해 나가는 프로세스가 많다.

사업가들은 건물 건축이라는 메타포를 더 편안하게 여긴다.
정원일보다는 더 과학적이며, 반복가능하고, 관리를 위한 엄격한 보고 위계질서도 있고...

하지만 실제 소프트웨어 개발의 현실은 건축과는 사뭇 다르다.
어떤 루틴이 너무 커지면 이를 둘로 나눠야 한다. 계획한 대로 잘 되지 않는 것들은 잡초 제거를 하거나 가지치기를 해 주어야 한다.

코드를 다시 작성하기, 다시 작업하기, 다시 설계하기를 반복 수행하는 것이 S/W의 리펙토링 이다.

- 실용주의 프로그래머 ( The Programatic Programmer)

'개발 Note > it 이야기' 카테고리의 다른 글

소프트웨어, 공학일까? - 재사용성  (1) 2009.02.24
Android - developer  (0) 2009.02.23
Design pattern -강의 메모  (0) 2009.01.20
Modal의 구현 형태  (0) 2009.01.12
UI Modal 컨셉  (0) 2009.01.06