증명
데이크스트라는 수학적 증명을 통해 예상밖의 방식으로 실패하는 프로그램의 문제를 해결하고자 했다.
goto문장이 모듈을 더 작은 단위로 재귀적으로 분해하는 과정에 방해가 되는 경우가 있다는 사실을 발견.
모듈을 분해항 때 문제가 되지 않는 경우 if, then, else와 do, while문과 같은 분기와 반복의 사용이 단순한 제어구조라는 것을 발견.
이러한 구조는 순차실행과 결합했을 때 특별했다.
모든 프로그램을 순차 분기 반복이라는 3가지 구조만으로 표현할 수 있다는 사실을 증명했다.
이것이 구조적 프로그래밍
기능적 분해
구조적 프로그래밍을 통해 모듈을 가능한 작은 단위로 재귀적으로 분해 가능해졌다. 즉 기능적으로 분해가 가능해졌음
테스트
수학은 증명 가능한 서술이 참임을 입증하는 원리이고 과학은 증명가능한 서술니 거짓임을 입증하는 원리다.
데이크스트라는 "테스트는 버그가 있음을 보여줄 뿐 버그가 없음을 보여줄 수는 없다"라고 했다. 즉 수학보다는 과학에 가까운 것.
구조적프로그래밍은 증명 가능한 세부 기능 집합으로 재귀죽으로 분해할 것을 강요한다.
그리고나서 테스트를 통해 증명 가능한 세부기능들이 거짓인지를 증명하려고 사도한다.
'클린아키텍쳐' 카테고리의 다른 글
7. Single Responsibility Principle (0) | 2021.02.16 |
---|---|
6. 함수형 프로그래밍 (0) | 2021.02.16 |
3. 패러다임 개요 (0) | 2021.02.03 |
2. 두 가지 가치에 대한 이야기 (0) | 2021.02.03 |
1. 설계와 아키텍쳐란? (0) | 2021.02.03 |