소프트웨어 모듈이 가져야 하는 세 가지 기능(모듈: 크기와 상관 없이 클래스나 패키지, 라이브러리와 같이 프로그램을 구성하는 임의의 요소)첫 번째 목적: 실행 중에 제대로 동작하는 것모듈의 존재 이유두 번째 목적: 변경을 위해 존재하는 것대부분의 모듈은 생명주기 동안 변경되기 때문에 간단한 작업만으로도 변경이 가능해야 함.세 번째 목적: 코드를 읽는 사람과 의사소통 하는 것특별한 훈련 없이도 개발자가 쉽게 읽고 이해할 수 있어야 함.즉, 모든 모듈은 제대로 실행돼야 하고, 변경이 용이해야 하며, 이해하기 쉬워야 한다.변경에 취약한 코드의존성(dependency)의존성이 변경과 관련돼 있다.의존성은 변경에 대한 영향을 암시한다.어떤 객체가 변경될 때 그 객체에게 의존하는 다른 객체도 함께 변경될 수 있다는..