본문 바로가기

생각

샤워와 소프트웨어 개발

샤워를 하개 되면 머리를 먼저 감는 사람, 혹은 마지막으로 감는 사람, 비누칠을 하고 머리감는 사람도 있다. 순서는 다르지만 각각의 프로세스는 독립적이다. 머리에 샴푸를 바르고 머리를 행구지 않는 사람은 없다.

소프트웨어 개발에서도 샤워처럼 각각의 프로세스들이 독립적이어야 한다. 그 독립적인 프로세스 안의 내용은 전체 프로세스와 뒤죽 박죽 되면 안된다.

머리에 샴푸를 바르고 몸에 비누칠을 한다고 생각해 보자. 샴푸가 흘러 눈에 닿는다면 정말 지옥을 맛볼 수 있다. 머리감는 프로세스가 진행중에 몸에 비누칠을 하는 프로세스를 진행 하였기 때문이다.

소프트웨어 개발또한, 전체적인 프로세스와 각 프로세스의 세부 프로세스가 뒤죽 박죽 되면 안된다.

몇몇 사람은 린스나 세안을 하지 않는 사람도 있고, 피부관리를 위해서 로션을 바르는 경우도 있다. 지나치게 전체 프로세스를 제약 하면 안된다. 유기적으로 유연하게 대처할 필요가 있다.

이것이 바로 객체지향의 응집과 결합, 유연한 설계라고 생각한다.