코드를 만들고, 테스트하고, 유지보수하기 쉬운 프로그래밍 방법을 선택하기 위해 미적 감각을 사용하는 것
소프트웨어를 계층으로 구성하는 기술. 각 계층에 있는 함수는 바로 아래 계층에 있는 함수를 이용해 정의
함수 시그니처(함수의 입력과 출력)를 적절한 구체화 수준에서 구현해야 한다.