Stepwise refinement
프로그램을 점진적으로 개발하는 절차. 니클라우스 비르트가 Program development by stepwise refinement에서 제안한 방법.
- 고차원적인 수준으로 문제 해결 절차를 하위 과업 단위로 기술하고 각 하위 과업을 다시 단계적으로 구체화하기를 반복한다.
- 절차를 기술할 때 처음부터 프로그래밍 언어를 직접 쓰는 대신, 주어진 문제를 다루기에 가장 자연스러운 언어로 기술한다.
- 하나의 과업을 하위 과업으로 구체화하는 각 단계에서 계산 효율, 메모리 효율, 코드의 명확성(clarity), 구조의 정규성(regularity) 등을 기준으로 디자인 의사결정을 한다. 각 의사결정을 의식적으로 검토하는 훈련이 중요하다. 이전 결정이 잘못된 것으로 판명된다면 단계를 거슬러 올라갈 것. 끝까지 올라가는 한이 있더라도.